You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CPLEX求解MIP时解池多最优解导出X矩阵重复问题求助

问题原因与解决方法

核心问题

你输出的所有X矩阵相同,是因为调用setPoolSolution()加载解池中的指定解后,没有执行变量更新操作,模型的决策变量一直保留的是首次求解得到的解的取值。

修复步骤

  1. 在main块的循环中,加载解池解之后添加updateSolution()调用,将解的取值同步到模型变量中
  2. 可选:补充解池容量参数,避免解数量超过默认存储上限被丢弃

修改后的main块代码

main{
  cplex.solnpoolintensity=4; 
  cplex.solnpoolagap=0;
  cplex.solnpoolcapacity = 20; // 可按实际需要的最大解数量调整,示例设置为最多存储20个最优解
  thisOplModel.generate(); 
  
  // 无需单独调用solve(),populate()会自动完成求解和解池填充
  if (cplex.populate()) {
          var nsolns = cplex.solnPoolNsolns; 
          writeln("解的总数量:", nsolns);
          writeln("平均目标值:", cplex.getSolnPoolMeanObjValue());
          writeln();
  
          for (var s=0; s<nsolns; s++) {
                    thisOplModel.setPoolSolution(s); 
                    thisOplModel.updateSolution(); // 新增该行,将解池中的解同步到模型变量
                    
                    var cd = new IloOplOutputFile("resAB" +s+".txt");
                    cd.writeln(thisOplModel.X);
                    cd.close();
                    thisOplModel.postProcess();
          }
  }
}  

额外说明

你代码中单独的execute块是在每次求解完成后自动执行的,只会输出首次得到的解,如果你不需要这个输出可以直接删除该段代码,避免生成多余的文件。

内容的提问来源于stack exchange,提问作者SaraH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:45:03