You need to enable JavaScript to run this app. 如何在DoCplex中获取相对及绝对最优性间隙(Optimality Gap)
优惠活动
大模型
产品
解决方案
定价
更多

如何在DoCplex中获取相对及绝对最优性间隙(Optimality Gap)

DoCplex 获取最优性间隙方法

DoCplex 内置了直接读取相对、绝对最优性间隙的属性,无需手动计算,所有求解相关的统计值都存储在求解详情对象中,具体用法如下:

核心属性说明

你可以从求解完成后的模型对象,或者调用solve()返回的解对象中读取SolveDetails类下的两个属性:

  • 相对最优性间隙:mip_relative_gap,返回值为小数格式,例如返回0.005对应相对间隙为0.5%
  • 绝对最优性间隙:mip_absolute_gap,返回值为当前最优解上下界的差值,即绝对间隙值

代码示例

from docplex.mp.model import Model

# 构建示例MIP模型
mdl = Model(name="mip_demo")
x = mdl.integer_var(lb=0, ub=15, name="x")
y = mdl.integer_var(lb=0, ub=10, name="y")
mdl.maximize(2*x + 7*y)
mdl.add_constraint(3*x + 5*y <= 45)

# 执行求解
sol = mdl.solve()

# 方式1:从模型对象读取间隙
relative_gap = mdl.solve_details.mip_relative_gap
absolute_gap = mdl.solve_details.mip_absolute_gap

# 方式2:从返回的解对象读取间隙,结果和方式1完全一致
relative_gap2 = sol.solve_details.mip_relative_gap
absolute_gap2 = sol.solve_details.mip_absolute_gap

print(f"相对最优性间隙:{relative_gap:.2%}")
print(f"绝对最优性间隙:{absolute_gap}")

注意事项

  • 上述两个属性仅对MIP(混合整数规划、纯整数规划)类模型有效,纯连续线性规划不存在最优性间隙的概念,调用后会返回0或无意义数值
  • 若求解器已经证明得到全局最优解,两个属性的返回值均为0
  • 若你求解前设置了mipgap停止阈值,求解完成后得到的间隙值一定小于等于你设置的阈值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:36:01