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

运行main程序时如何在问题浏览器与解决方案窗口获取模型求解结果

CPLEX Optimization Studio main流程运行模型无法在Problem Browser/Solutions Window展示完整数据的配置方法

自定义main控制流接管模型执行逻辑后,IDE默认不会自动采集模型结构、求解中间数据,仅捕获脚本标准输出,按以下步骤配置即可恢复完整展示能力:

  • 单模型通过main运行时,显式将模型实例绑定到当前执行上下文
    不要在main中创建独立的匿名模型实例运行,要将实例赋值给当前作用域的thisOplModel,IDE会自动识别该实例的结构、求解结果,参考代码:
    main {
      // 初始化模型定义、求解器
      const modelDef = thisOplModel.modelDefinition;
      const runModel = new IloOplModel(modelDef, cplex);
      // 此处编写自定义数据加载、参数调整逻辑
      runModel.generate();
      // 绑定实例到上下文,供IDE采集数据
      thisOplModel = runModel;
      
      if (cplex.solve()) {
        // 自定义求解后业务逻辑
      }
      // 等待IDE完成数据采集后再释放资源
      runModel.end();
    }
    
  • 多模型通过main调度运行时,主动调用发布接口推送每个模型的结果
    多模型场景下无法通过绑定单个thisOplModel实现全展示,需要在每个模型求解完成后,调用内置的IloOpl.publishSolution()方法将模型数据推送到UI面板,注意要等推送完成后再销毁模型实例,参考代码:
    main {
      // 初始化并求解第一个模型
      const m1 = new IloOplModel(m1Def, new IloCplex());
      m1.generate();
      m1.cplex.solve();
      // 推送第一个模型数据到面板,自定义标签用于区分不同模型结果
      IloOpl.publishSolution(m1, "模型1-排产结果");
    
      // 初始化并求解第二个模型
      const m2 = new IloOplModel(m2Def, new IloCplex());
      m2.generate();
      m2.cplex.solve();
      IloOpl.publishSolution(m2, "模型2-路径优化结果");
    
      // 所有模型结果推送完成后统一释放资源
      m1.end();
      m2.end();
    }
    
  • 检查IDE运行配置项
    • 打开对应运行配置的Execution标签页,取消勾选Run in headless mode,无头运行模式会禁用所有UI数据采集能力,仅输出脚本日志
    • 打开Problem Browser面板的右上角设置菜单,勾选Show elements from main flow published models,允许面板加载main流程中主动发布的模型数据
  • 结构定义规范注意
    所有决策变量、约束、目标函数的定义必须放在.mod格式的模型文件中,main脚本中仅编写流程控制、数据赋值、求解调度逻辑,不要在main的闭包作用域内动态定义模型结构,否则IDE无法完成静态解析,会导致面板展示内容缺失。

低版本OPL存在IDE数据采集延迟问题,如果配置完成后仍有部分数据缺失,可以在调用publishSolution或完成求解后,加java.lang.Thread.sleep(100)的短延迟再销毁模型实例,避免实例提前释放导致数据读取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:01:52