คำนวณช่องว่างการเพิ่มประสิทธิภาพสัมพัทธ์ใน MIP Problem GAMS

Aug 16 2020

ฉันต้องการคำนวณช่องว่างการเพิ่มประสิทธิภาพสัมพัทธ์ของปัญหา MIP และฉันต้องการยกเลิกการทำงานในช่วงเวลาหนึ่ง วิธีนี้:

F(1)    
abs(mymodel.objest - mymodel.objval)/max(abs(mymodel.objest),abs(mymodel.objval)) 

ไม่สอดคล้องกับช่องว่างที่ GAMS คำนวณในบันทึก GAMS ใช้ "จำนวนเต็มที่ดีที่สุด" เพื่อค้นหาช่องว่างที่ไม่ใช่ค่าวัตถุประสงค์ปัจจุบัน อันไหนที่ถูก? และฉันจะบันทึก "จำนวนเต็มที่ดีที่สุด" ปัจจุบันลงในพารามิเตอร์ได้อย่างไร (เช่น. objval)

และในที่สุดการคำนวณช่องว่างการเพิ่มประสิทธิภาพสัมพัทธ์ในอัลกอริธึมตัวโค้งงอถูกต้องหรือไม่

rgap = (upperBound - lowerBound)/(1 + abs(upperBound));

GAMS คำนวณอะไรโดยใช้ "MIP Solution"

MIP Solution:   3334501534.000555    (1625 iterations, 0 nodes)
Final Solve:      56330158.829040    (2561 iterations)

Best possible:    48915652.476336
Absolute gap:   3285585881.524219
Relative gap:            0.985330

ช่องว่างที่คำนวณได้ F (1) โดยใช้ mymodel.objval (mymodel.objval ส่งคืน "Final Solve") ดังนั้นช่องว่างที่คำนวณได้คือ% 13 และค่า mymodel.objval คือ 5.633016E + 7 (GAMS ช่องว่างที่คำนวณได้คือ% 98) ดังนั้นฉันต้องบันทึก "MIP Solution" เป็นพารามิเตอร์เพื่อส่งออกไปยังไฟล์ excel

คำตอบ

1 Lutz Aug 17 2020 at 14:16

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

แก้ไขหลังจากอัปเดตคำถาม:

ตามที่คุณเขียนmymodel.objvalส่งคืนFinal Solveค่า หากคุณต้องการดูMIP Solutionค่าแทน (เนื่องจากลิงก์ Cplex ทำภายใน) คุณสามารถปิดใช้งานการแก้ปัญหาขั้นสุดท้ายได้ อย่างไรก็ตามหากFinal SolveและMIP Solutionแตกต่างกันมากดังในตัวอย่างของคุณสิ่งนี้มักเป็นข้อบ่งชี้สำหรับปัญหาบางอย่าง (โดยปกติแล้วปัญหาเหล่านี้ (เกือบ) เหมือนกัน) บ่อยครั้งสิ่งนี้บ่งชี้ถึงโมเดลที่มีการปรับขนาดไม่ดี บางทีคุณอาจจะปรับปรุงสถานการณ์โดยกระชับความคลาดเคลื่อน Cplex (ดูตัวเลือก Cplex epopt, eprhs, epint) และเปิดใช้งานการปรับก้าวร้าว (Cplex ตัวเลือกscaind 2) กำลังเปิดใช้งานmipkappastats(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXmipkappastats) และquality(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXquality) สามารถให้ข้อมูลเพิ่มเติมแก่คุณ DataCheck=2(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXdatacheck) อาจแสดงปัญหาบางอย่าง