1

我正在使用 glpsol 来解决一个相当大的整数优化问题。Simplex 算法在其上运行大约 30 分钟,然后glpsol尝试使用 MIP 求解器找到整数解。

问题:我可以仅使用 glpsol 命令工具将其分为两个步骤,还是应该使用 glpk API?

我已经尝试过根据文档的“读取”和“nomip”选项

-r filename, --read filename

从提供的文件名中读取解决方案,而不是使用求解器找到它

这种格式:

 glpsol --cpxlp WhiskasModel.lp --write WhiskasSolution.mip --nomip

在那之后

 glpsol --cpxlp WhiskasModel.lp --read WhiskasSolution.mip

但我收到一个错误:

 Reading MIP solution from `WhiskasModel.mip'...
 WhiskasModel.mip:33702: non-integer column valueUnable to read problem solution

这当然是正确的,因为 WhiskasModel.mip 是具有非整数值的 LP 解决方案。

我发现它glpsol toolkit相当强大,我想玩一些 MIP 选项,但每一步等待 30 分钟是相当无聊的。我可以告诉它,“使用这个 LP 解决方案并启动 MIP”吗?

4

1 回答 1

1

要尝试的一件事:将 LP 基础写入纯文本文件,然后在重新启动时,以该 LP 解决方案作为基础开始。

尝试

  -w WhiskasBasis.txt

并在重新启动以继续作为 IP 时,通过添加ini选项要求它使用该基础。

--ini WhiskasBasis.txt 

其他建议:

  1. 如果您要经常这样做,我不会使用命令行选项。GLPK API(供您选择的语言)和 IDE 将为您提供更多的灵活性和控制力。这个链接提到了几个。

  2. 如果您发布带有目标和约束的 MIP 模型公式(可能是一个不同的问题),您可能会收到加快速度的建议。有时会有一些放松和子问题可以极大地帮助。

希望有帮助。

于 2013-07-20T18:05:49.047 回答