python - 找到每个可行解决方案后如何停止 DoCplex.CP 求解器?
问题描述
亲爱的,
目前,我正在使用 OPL-DoCplex 来解决使用 CP 的问题。基本模型是在 OPL 中构建的,然后我通过 DoCplex 将其调用到 python 中。我有以下问题: 1- 在 OPL 模型中,存在未导入到 python 的决策表达式 (dexpr)。我该怎么做或在哪里可以找到导入的 dexpr(如果有)。2-在找到每个可行的解决方案后如何停止求解器进行一些后处理,然后再次运行求解器。那可能吗?
在此先感谢穆罕默德
解决方案
如果您希望在 python 代码中看到这些,您可以将您的 dexpr 转换为元组集
您可以在 OPL 中使用流控制并调用 postProcess/
https://github.com/AlexFleischerParis/zooopl/blob/master/zooseveralcpo.mod的示例
using CP;
int nbKids=300;
float costBus40=500;
float costBus30=400;
dvar int+ nbBus40;
dvar int+ nbBus30;
minimize
costBus40*nbBus40 +nbBus30*costBus30;
subject to
{
40*nbBus40+nbBus30*30>=nbKids;
}
execute
{
writeln("nbBus40 = ",nbBus40," and nbBus30 = ",nbBus30," and the cost is ",costBus40*nbBus40 +nbBus30*costBus30);
}
main
{
cp.param.SearchType=24;
cp.param.workers=1;
thisOplModel.generate();
cp.startNewSearch();
while
(cp.next()) { thisOplModel.postProcess(); }
}
推荐阅读
- dataframe - 用于读取属性并定义记录器和多线程的 Spark 代码
- c# - 如何将 TD 表值从 jQuery 复制到 TextBoxFor MVC4
- r - 使用父函数的字符串输入作为另一个函数的参数
- jquery - jquery.easing.min.js 易受攻击如何更新最新版本?
- kdb - 表上的`s属性是什么意思?
- java - 父模块中的 Gradle 依赖平台
- ruby - 如何使用 Watir/ruby 在谷歌文档中插入文本/值
- c# - C# bin new Textblock 对象到 XAML 文件中的 Textblock 控件
- azure-devops - 当有人使用 @mentions 时,我没有收到来自 Azure Devops 的电子邮件通知
- excel - 在“另存为”对话框窗口中建议文件名/位置(使用不同的文件类型)