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

如何在CPLEX中绘制代码效率与最优解收敛图表及解析相关统计图

在CPLEX中可视化运行效率与最优解收敛情况及进度图解析

一、生成运行效率与收敛情况图表的方法

1. 用CPLEX自带工具直接可视化

  • 在CPLEX交互式优化器里,先输入命令 set graphics yes,再执行 optimize,系统会自动弹出收敛追踪窗口,实时展示目标值上下界随时间的变化曲线。
  • 用OPL Studio的话,在运行配置里勾选Show graphical progress选项,运行模型时会直接弹出收敛图,能直观看到最优解的收敛过程。

2. 导出数据自定义绘图

如果需要更个性化的图表,可以导出求解过程数据,用Excel、Python等工具手动绘制:

  • 在OPL中,通过CPLEX的API在求解循环里记录关键数据,比如时间、当前目标值、最优下界,保存到CSV文件。示例代码片段:
float currentObj;
float bestBound;
float elapsedTime;
execute{
  while (cplex.solve()) {
    currentObj = cplex.getObjValue();
    bestBound = cplex.getBestObjValue();
    elapsedTime = cplex.getCplexTime();
    writeln(elapsedTime, ",", currentObj, ",", bestBound);
  }
}
  • 导出后用Python读取数据绘图,比如用Matplotlib生成收敛曲线:
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('cplex_log.csv', header=None, names=['Time', 'ObjValue', 'BestBound'])
plt.plot(data['Time'], data['ObjValue'], label='当前可行解目标值')
plt.plot(data['Time'], data['BestBound'], label='最优下界')
plt.xlabel('耗时(秒)')
plt.ylabel('目标函数值')
plt.legend()
plt.show()

二、统计窗口黑色进度图的概念与作用

1. 基本概念

这个黑色图是CPLEX的MIP进度追踪图,专门用于混合整数规划模型的求解监控:

  • 横轴是求解时间(或迭代次数),纵轴是目标函数值。
  • 上方曲线:当前找到的最优可行解的目标值(最小化问题中是上界,会逐渐降低;最大化问题中是下界,会逐渐升高)。
  • 下方曲线:松弛问题的最优目标值(最小化问题中是下界,会逐渐升高;最大化问题中是上界,会逐渐降低)。
  • 两条曲线的差值就是最优性间隙,当间隙缩小到设定阈值(比如默认0.1%),求解自动终止。

2. 核心作用

  • 判断收敛速度:看曲线斜率就能知道近期是否频繁找到更优解,斜率越大说明收敛越快。
  • 评估求解难度:如果两条曲线长时间几乎平行,说明最优性间隙难以缩小,可能需要调整分支策略、割生成强度等参数。
  • 预判终止时机:根据间隙缩小趋势,能决定是否提前终止求解,或者调整间隙阈值来平衡求解时间和解的质量。

内容的提问来源于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.06 17:35:41