CPLEX 障碍方法迭代限制

Posted

技术标签:

【中文标题】CPLEX 障碍方法迭代限制【英文标题】:CPLEX Barrier Method Iteration Limit 【发布时间】:2020-04-23 21:31:49 【问题描述】:

我正在尝试解决 CPLEX 上的非凸二次优化问题,将最优目标设置为 2。尝试使用不同的数据集时,我观察到障碍法在第 500 次迭代时停止。 我检查了设置,它设置为一个非常大的数字。这是巧合还是我应该更改任何其他设置?

我也有这个问题的凸二次版本,带有二进制变量。但是,CPLEX 无法在数小时内找到改进的解决方案,因此我终止了运行。对此的任何调整建议也值得赞赏。 注意:问题是设施布局优化问题

提前致谢。

【问题讨论】:

除了想知道为什么要将局部优化 (optimality target to 2 + non-convex) 与全局优化 (convex miqp) 进行比较之外,更清楚您的要求可能很重要:I observed that the barrier method stops at the 500th iteration 是什么那是什么意思?处于哪个状态(!!!)?你期待什么? 我的意图不是比较:我无法得到凸 miqp 的解决方案(与 %100 优化差距叠加),因此我尝试至少获得非凸 miqp 的可行解决方案。我想知道是否存在我错过的调整选项以获得解决方案。关于屏障方法,我认为还有其他停止条件(满足一阶最优性条件),但是,我在日志中看到 Cplex 在第 500 次迭代时终止了不同的数据集。所以,我问这是由于设置,还是只是巧合?感谢您的关注。 检查 cplex 的状态是您的第一要务。它会告诉你为什么它停止了。 (我想 IPM / 障碍停止条件是高阶(不是一阶)) 您可能想要显示 Cplex 日志。 【参考方案1】:

如果 CPLEX 在 500 次迭代后卡住,那么这可能是一个数值问题。绝对不会期望 CPLEX 卡住更长的时间。为了调试它,您可以增加屏障 (CPX_PARAM_BARDISPLAY) 的显示详细程度,并检查 CPU 是否仍然处于活动状态。如果 CPLEX 由于数值问题而卡住,那么您可以尝试启用数值强调 (CPX_PARAM_NUMERICALEMPHASIS)。

如果 CPLEX 没有卡住,而是在 500 次迭代后终止,那么您需要检查 CPLEX 返回的状态值。在这种情况下,引擎日志也可能包含更多信息。

最后,为了调优参数,CPLEX 自带了调优工具。

【讨论】:

以上是关于CPLEX 障碍方法迭代限制的主要内容,如果未能解决你的问题,请参考以下文章

障碍似乎只在一个时间窗口内同步

我手机里面有些软件让我打开启无障碍功我打开了,为啥还是没有用?

pygame障碍游戏将障碍直接画在背景中,实现用mask侦测背景中障碍和用颜色区分不同障碍的方法

pygame障碍游戏将障碍直接画在背景中,实现用mask侦测背景中障碍和用颜色区分不同障碍的方法

pygame障碍游戏将障碍直接画在背景中,实现用mask侦测背景中障碍和用颜色区分不同障碍的方法

安卓手机开启无障碍功能与悬浮窗的方法