首页 > 解决方案 > 找到每个可行解决方案后如何停止 DoCplex.CP 求解器?

问题描述

亲爱的,

目前,我正在使用 OPL-DoCplex 来解决使用 CP 的问题。基本模型是在 OPL 中构建的,然后我通过 DoCplex 将其调用到 python 中。我有以下问题: 1- 在 OPL 模型中,存在未导入到 python 的决策表达式 (dexpr)。我该怎么做或在哪里可以找到导入的 dexpr(如果有)。2-在找到每个可行的解决方案后如何停止求解器进行一些后处理,然后再次运行求解器。那可能吗?

在此先感谢穆罕默德

标签: pythoncpopldocplex

解决方案


  1. 如果您希望在 python 代码中看到这些,您可以将您的 dexpr 转换为元组集

  2. 您可以在 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(); }
} 

推荐阅读