/ / ปัญหาเป้ใน Excel VBA

ปัญหาเป้ใน Excel VBA

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

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

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

ภาพปัญหาของเป้

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

ตัวอย่างปัญหากระเป๋าเป้สะพายหลัง

1. ขั้นแรกเราจะประกาศตัวแปร 5 ประเภทคือ Double with names limits, weight, value, totalWeight และ maximumValue

Dim limit As Double, weight As Double, value As Double, totalWeight As Double, maximumValue As Double

2. จากนั้นเราจะประกาศตัวแปรห้าประเภท Integer ด้วยชื่อ i, j, k, l, m

Dim i, j, k, l, m As Integer

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

limit = Range("D6").value
maximumValue = 0

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

For i = 0 To 1
    For j = 0 To 1
        For k = 0 To 1
            For l = 0 To 1
                For m = 0 To 1

5. เราคำนวณน้ำหนักและค่าของสารละลายที่เป็นไปได้

weight = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
value = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

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

If value > maximumValue And weight <= limit Then

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

Range("B4").value = i
Range("C4").value = j
Range("D4").value = k
Range("E4").value = l
Range("F4").value = m
totalWeight = weight
maximumValue = value

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

End If

อย่าลืมปิด 5 สำหรับลูปถัดไป

                Next m
            Next l
        Next k
    Next j
Next i

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

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

Range("B6").value = totalWeight
Range("B8").value = maximumValue

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

ผล:

ผลลัพท์ของกระเป๋าเป้สะพายหลัง

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

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

อ่านเพิ่มเติมได้ที่: