MIP समस्या GAMS में सापेक्ष समानता गैप की गणना करें
मैं एक एमआईपी समस्या के सापेक्ष इष्टतमता गैप की गणना करना चाहता हूं, मैं एक निश्चित समय पर रन को रोकना चाहता हूं। यह विधि:
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: 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 वापसी "अंतिम हल") का उपयोग करके गणना की गई अंतराल इसलिए गणना की गई गणना% 13 है और mymodel.objval मूल्य 5.633016E + 7 है (जीएएमडी अंतर खाई% 98 है)। इसलिए मुझे एक्सेल फाइल में एक्सपोर्ट करने के लिए "MIP Solution" को एक पैरामीटर में सहेजना होगा।
जवाब
सापेक्ष इष्टतम अंतर की गणना करने के लिए विभिन्न सूत्र हैं। यह आपके द्वारा उपयोग किए जाने वाले सॉल्वर पर निर्भर करता है, जिसे एक लागू किया गया है। इस बारे में कुछ जानकारी GAMS विकल्प ऑप्टसीआर के विवरण में पाई जा सकती है । आपके द्वारा उपयोग किए जाने वाले सॉल्वर के सॉल्वर मैनुअल में वास्तव में लागू किए गए फॉर्मूले के बारे में अधिक जानकारी हो सकती है।
अद्यतन किए जाने के बाद EDIT:
जैसा कि आपने लिखा mymodel.objval
है कि Final Solve
मूल्य लौटाता है । यदि आप MIP Solution
इसके बजाय मान देखना चाहते हैं (जैसा कि Cplex लिंक आंतरिक रूप से करता है), तो आप अंतिम समाधान को निष्क्रिय कर सकते हैं। हालांकि, अगर Final Solve
और MIP Solution
आपके उदाहरण में बहुत अलग हैं , तो यह अक्सर कुछ समस्या के लिए एक संकेत है (आमतौर पर, वे (लगभग) समान हैं)। अक्सर, यह एक खराब स्केल मॉडल को इंगित करता है। शायद तुम Cplex tolerances कस द्वारा स्थिति को बेहतर बना सकते हैं (देखें 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) कुछ समस्याएं दिखा सकता है।