我在Python 2.7.8,Windows 32位中运行PuLP编程库。我使用GLPK作为混合整数线性规划问题的求解器。求解器收敛到约。快速的1%是最佳的,但计算精确最优解的时间很长。有没有办法使用PuLP指定GLPK求解器的百分比容差?我搜索了https://pythonhosted.org/PuLP/solvers.html,但它没有为GLPK求解器提供任何答案。
答案 0 :(得分:4)
如果在命令行中使用“--help”运行“glpsol”,则会看到“--mipgap tol”,其中tol是容差。
所以,在PuLP中,你试过这个:
model.solve(GLPK(options=['--mipgap', '0.01']))
(前一段时间this discussion)(并注意你如何使用同样的方法传递更多你想要的参数)。
此外,我进入了源代码(“solvers.py”)并查看了GLPK如何期望其“选项”参数,实际上它期望上面的参数(在文件中查看345行左右)转载如下):
proc = ["glpsol", "--cpxlp", tmpLp, "-o", tmpSol]
if not self.mip: proc.append('--nomip')
proc.extend(self.options)
所以你看到“proc”(后来使用Python的“子进程”运行的命令)被“扩展”了你通过“options”指定的内容(顺便存储在变量self.options中)。所以,看起来上面的方法(在列表中使用'--mipgap'等)仍然是(仍然)正确。
最后,我自己没有尝试过,但我希望这会有所帮助。