300 ตัวอย่าง

ปัญหาเป้

Knapsack Problem

ด้านล่างเราจะดูโปรแกรมใน Excel VBA นั่น แก้ปัญหา ตัวอย่างเล็ก ๆ ของ a ปัญหาเป้ .





คำจำกัดความ: กำหนดชุดของรายการ โดยแต่ละรายการมีน้ำหนักและมูลค่า กำหนดรายการที่จะรวมไว้ในคอลเลกชัน เพื่อให้มูลค่ารวมมีขนาดใหญ่ที่สุดและน้ำหนักรวมน้อยกว่าขีดจำกัดที่กำหนด มันได้ชื่อมาจากปัญหาที่ต้องเผชิญกับใครบางคนที่ถูกจำกัดด้วยเป้ขนาดคงที่และต้องเติมรายการที่มีประโยชน์ที่สุด

ตัวอย่าง: 5 รายการที่มีน้ำหนัก ค่า และขีดจำกัดตามที่กำหนด





ภาพปัญหาเป้

ใน Excel ปัญหานี้มีลักษณะดังนี้:



ตัวอย่างปัญหาเป้

ติดตั้ง add-in ตัวแก้

1. ขั้นแรก เราประกาศตัวแปรห้าตัวประเภท Double โดยมีชื่อจำกัด น้ำหนัก ค่า น้ำหนักรวม และค่าสูงสุด

ไม่มีขีดจำกัดเนื่องจาก สองเท่า, น้ำหนักเนื่องจาก สองเท่า, ค่าเนื่องจาก สองเท่า, น้ำหนักรวมเนื่องจาก สองเท่า, ค่าสูงสุดเนื่องจาก สองเท่า

2. ต่อไป เราประกาศตัวแปรประเภทจำนวนเต็มจำนวน 5 ตัวโดยใช้ชื่อ i, j, k, l, m

ฟังก์ชัน if ใน excel คืออะไร
ไม่มีผม, เจ, k, ล, มเนื่องจาก จำนวนเต็ม

3. เราเริ่มต้นสองตัวแปร เราเริ่มต้นขีด จำกัด ของตัวแปรด้วยค่าของเซลล์ D6 เราเริ่มต้นตัวแปร maximumValue ด้วยค่า 0

จำกัด = ช่วง ('D6').value
ค่าสูงสุด = 0

4. ต่อไป เราจะตรวจสอบแต่ละวิธีแก้ไขที่เป็นไปได้ เราสามารถใส่รายการ (1) หรือปล่อยไว้ (0) เราเริ่ม 5 For Next ลูป หนึ่งรายการสำหรับแต่ละรายการ

สำหรับผม = 0ถึง1
สำหรับเจ = 0ถึง1
สำหรับk = 0ถึง1
สำหรับล. = 0ถึง1
สำหรับม. = 0ถึง1

5. เราคำนวณน้ำหนักและมูลค่าของวิธีแก้ปัญหาที่เป็นไปได้

น้ำหนัก = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
ค่า = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. เฉพาะในกรณีที่ค่าสูงกว่าค่าสูงสุดและน้ำหนักต่ำกว่าขีดจำกัด เราพบวิธีแก้ปัญหาใหม่ที่ดีกว่าแล้ว

ถ้าค่า > ค่าสูงสุดและน้ำหนัก<= limit แล้ว

7. ถ้าเป็นจริง เราจะเขียนคำตอบใหม่ในแถวที่ 4 น้ำหนักเป็น TotalWeight และค่าเป็นค่าสูงสุด

ช่วง('B4').value = i
ช่วง ('C4').value = j
ช่วง('D4').value = k
ช่วง('E4').value = l
ช่วง('F4').value = m
รวมน้ำหนัก = น้ำหนัก
ค่าสูงสุด = ค่า

8. อย่าลืมปิดคำสั่ง if

จบ ถ้า

9. อย่าลืมปิดลูป 5 For Next

คุณจะเพิ่มวันที่ใน excel ได้อย่างไร
ต่อไปNS
ต่อไปNS
ต่อไปถึง
ต่อไปNS
ต่อไปผม

Excel VBA ตรวจสอบแต่ละวิธีแก้ปัญหาที่เป็นไปได้ด้วยวิธีนี้ และด้วยเหตุนี้ โซลูชันที่เหมาะสมที่สุดจะปรากฏในแถวที่ 4 โปรดจำไว้ว่า 1 หมายถึงเรารวมรายการ 0 หมายถึงเราปล่อยทิ้งไว้

10. สุดท้าย เขียน TotalWeight และ maximumValue ของโซลูชันที่เหมาะสมที่สุดลงในเซลล์ B6 และ B8 ตามลำดับ

ช่วง('B6').value = TotalWeight
ช่วง('B8').value = maximumValue

11. ทดสอบโปรแกรม

ผลลัพธ์:

ผลลัพธ์ปัญหาเป้

สรุป: เป็นการดีที่สุดที่จะรวมสี่รายการสุดท้ายด้วยค่าสูงสุด 15 วิธีแก้ปัญหานี้ที่มีน้ำหนักรวม 2 + 1 + 1 + 4 = 8 ไม่เกินขีดจำกัด 15

หมายเหตุ: โดยการสร้างตัวแปรน้ำหนักและค่า คุณสามารถแก้ปัญหาเป้ขนาดนี้ได้ (ดูไฟล์ Excel ที่ดาวน์โหลดได้)

11/11 เสร็จแล้ว! เรียนรู้เพิ่มเติมเกี่ยวกับลูป >
ไปที่บทถัดไป: ข้อผิดพลาดมาโคร



^