首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线性规划的复杂性:是否假定DOCplex决策变量是非负的?

线性规划的复杂性:是否假定DOCplex决策变量是非负的?
EN

Stack Overflow用户
提问于 2021-04-13 20:25:09
回答 1查看 239关注 0票数 0

我想用docplex写一个简单的LP。假设我有三个变量: x、y和z,约束是4x +9Y-18.7 <= z,我用代码model.add_constraint(4 * x + 9 * y - 18.7 <= z)编写了约束。然后,我通过model.minimize(z)将最小化z设为我的目标。

对模型求解后,得到z= 0.000的结果。有人能给我解释一下结果吗?我不明白为什么0是这个LP的最优值。我还试着打印这个模型的细节:

状态=最佳时间=0。问题= LP z: 0.000;无目标:Z约束: 4z+9y-18.700 <= z

当我尝试model.print_solution()时,程序打印z: 0.000; None,其中我不明白“无”是什么意思,这是否意味着x和y是空的?

更新:忘了提到,我使用model.continuous_var()创建了变量

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 07:15:51

事实上,如果你不给出一个范围,它们是非负的。

动物园故事中的一个小例子

代码语言:javascript
复制
from docplex.mp.model import Model

mdl = Model(name='buses')
nbbus40 = mdl.continuous_var(name='nbBus40')
nbbus30 = mdl.continuous_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve(log_output=False,)
print("nbbus40.lb =",nbbus40.lb)

for v in mdl.iter_continuous_vars():
    print(v," = ",v.solution_value)

mdlv2 = Model(name='buses2')
nbbus40v2 = mdlv2.continuous_var(-2,200,name='nbBus40')
nbbus30v2 = mdlv2.continuous_var(-2,200,name='nbBus30')
mdlv2.add_constraint(nbbus40v2*40 + nbbus30v2*30 >= 300, 'kids')
mdlv2.minimize(nbbus40v2*500 + nbbus30v2*400)
mdlv2.solve(log_output=False,)

print("nbbus40v2.lb =",nbbus40v2.lb)

for v in mdlv2.iter_continuous_vars():
    print(v," = ",v.solution_value)

给出

代码语言:javascript
复制
nbbus40.lb = 0
nbBus40  =  7.5
nbBus30  =  0
nbbus40v2.lb = -2
nbBus40  =  9.0
nbBus30  =  -2.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67081915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档