跳至内容

GLPK/已知问题

来自维基教科书,开放的书籍,开放的世界

此页面列出了 GLPK 的已知问题。大多数问题与底层库有关,因此会影响 GLPSOL 用户和 API 程序员。尽管陈词滥调,但问题需要“变通方法”,而 bug 需要“修复”。如果您发现 bug,请将其报告给[bug-glpk]邮件列表。


无界整数变量

[编辑 | 编辑源代码]

当 MIP 问题实例的 LP 松弛没有有限的最大值并且整数可行域为空时,可能会出现此问题。在这种情况下,MIP 预处理器可能会陷入无限循环。此问题存在于 4.45 版本中,本质上是固有的。

一种解决方法是指定一些额外的边界,以便预处理器能够成功地检测到实例没有整数可行解。另一种方法是禁用 MIP 预处理器。此问题在 此帖此帖 中进行了更详细的讨论。

MIP 间隙报告

[编辑 | 编辑源代码]

从 4.47 版本开始,函数ios_relative_gap计算相对间隙如下

 gap = |best_mip - best_bnd| / (|best_mip| + DBL_EPSILON)

这意味着当您的解改进时,间隙可能会增加!但是,它与 CPLEX 函数使用的公式相同CPXgetmiprelgap. 请参阅 此处,了解 2012 年中关于替代公式的讨论。

求解时间限制

[编辑 | 编辑源代码]

GLPSOL 选项 --tmlim nnn 将求解时间限制为nnn秒。但是,计时器并不总是在解的各个阶段都处于活动状态。请参阅 此处,了解 2012 年中关于该主题的讨论。

在 Linux 上,可以使用来自 GNU coreutilstimeout 实用程序来限制经过时间。在此示例中,如果 GLPSOL 调用仍在运行,它将在两小时后终止

timeout 2.0h glpsol --model problem.mod
华夏公益教科书