我的实验(直接使用C库)建议,使用tm_lim参数限制GLPK处理混合整数编程问题所花费的时间会导致问题指针包含迄今为止找到的最佳解决方案。但是,我在文档中找不到对此的任何确认。超时计算是否总是将发现的最佳解决方案留在问题缓冲区中?
谢谢!
答案 0 :(得分:1)
根据我的轶事经验,tm_lim
参数确实返回了最佳解决方案。我也无法在文档中找到对此的验证,因此我查看了源代码。
glpk遍历一个循环,就地更新解决方案,直到满足四个终止标准之一(最佳解决方案,无界解决方案,时间限制,迭代限制)。一旦发生这种情况,glpk将停止更新解决方案,并返回一个表示满足条件的值。
您可以在https://ftp.gnu.org/gnu/glpk/glpk-4.35.tar.gz的ssx_phase_II
中的函数src/glpssx02.c
中进行验证。查看对tm_lim
的引用。
最后一个理由是--tmlim
命令行选项的文档:
--tmlim nnn limit solution time to nnn seconds (--tmlim 0 allows
obtaining solution at initial point)
通过--tmlim 0
将返回初始解决方案。