4

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

4

1 回答 1

7

如果您在命令行上使用“--help”运行“glpsol”,您会看到“--mipgap tol”,其中 tol 是容差。

所以,在纸浆中,你有没有试过这个:

 model.solve(GLPK(options=['--mipgap', '0.01']))

(来自不久前的讨论)(并注意如何使用相同的方法传递更多您喜欢的参数)。

此外,我查看了源代码(“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'等)是(仍然)正确的。

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

于 2014-12-16T04:45:44.187 回答