在PuLP Python中指定GLPK求解器的容差

时间:2014-10-30 07:26:28

标签: python-2.7 linear-programming glpk integer-programming

我在Python 2.7.8,Windows 32位中运行PuLP编程库。我使用GLPK作为混合整数线性规划问题的求解器。求解器收敛到约。快速的1%是最佳的,但计算精确最优解的时间很长。有没有办法使用PuLP指定GLPK求解器的百分比容差?我搜索了https://pythonhosted.org/PuLP/solvers.html,但它没有为GLPK求解器提供任何答案。

1 个答案:

答案 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'等)仍然是(仍然)正确。

最后,我自己没有尝试过,但我希望这会有所帮助。