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

CPLEX优化模型输出全为零,请求问题排查帮助

湖泊水资源优化模型问题修正

问题背景

某湖泊初始有150单位水资源,每卖出1单位水可获得3美元收益,但月底需保证湖泊剩余水量不低于100单位,每低于1单位需支付5美元罚款;本月降雨将补充125单位水量(后续计划加入随机降雨设置)。

用户构建的模型运行后,售水量x、缺口量y及收益输出均为0,无法得到合理结果,以下是问题分析与修正方案:

用户原代码

!pip install cplex
!pip install docplex
from docplex.mp.model import Model
from docplex.mp.environment import Environment
env = Environment()
env.print_information()

mdl = Model()

x = mdl.continuous_var(lb=None, ub=None, name=None )
y = mdl.continuous_var(lb=None, ub=None, name=None )

r1=mdl.add_constraint( 150-x+y+125 >= 100  )    
s = mdl.solve()

mdl.maximize(  3*x-5*y )
obj = mdl.objective_value

print(x.solution_value)
print(y.solution_value)

print("* best objective is: {:g}".format(obj))

mdl.export("modelo_determinista_bajo.lp")

问题分析

  1. 求解顺序错误:先调用solve()再定义目标函数,导致求解时模型无优化目标,默认返回零值解。
  2. 变量约束缺失:
    • 售水量x不能为负,需设置下界lb=0;
    • 缺口量y是水量不足的部分,只能为非负数,需设置lb=0。
  3. 约束逻辑模糊:原约束150-x+y+125 >=100没有明确“缺口量是剩余水量低于100的部分”的逻辑,未将缺口量与实际剩余水量的关联清晰化。

修正后的代码

!pip install cplex
!pip install docplex
from docplex.mp.model import Model
from docplex.mp.environment import Environment

env = Environment()
env.print_information()

mdl = Model(name="water_optimization")

# 定义变量:x为售水量(非负),y为缺口量(非负)
x = mdl.continuous_var(lb=0, name="water_sold")
y = mdl.continuous_var(lb=0, name="water_deficit")

# 约束:月底剩余水量 + 缺口量 >= 100
# 剩余水量 = 初始水量 - 售水量 + 降雨量
mdl.add_constraint(150 - x + 125 + y >= 100, "minimum_water_requirement")

# 设置目标函数:最大化总收益(售水收益 - 罚款)
mdl.maximize(3 * x - 5 * y)

# 求解模型
s = mdl.solve()

# 输出结果
if s:
    print(f"售水量x: {x.solution_value:.2f}")
    print(f"缺口量y: {y.solution_value:.2f}")
    print(f"最优收益: {mdl.objective_value:.2f}美元")
else:
    print("模型无解")

mdl.export("modelo_determinista_bajo.lp")

结果说明

修正后,模型会计算出最优解:初始水量加降雨共275单位,最多可卖出175单位(剩余100单位),此时收益为175×3=525美元,缺口量y=0,完全符合业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:48