【问题标题】:Cplex for Linear Program: Are DOCplex decision variables assumed to be non-negative?线性规划的 Cplex:DOCplex 决策变量是否假定为非负数?
【发布时间】:2021-04-13 20:25:09
【问题描述】:

我想用 docplex 写一个简单的 LP。假设我有三个变量:x、y 和 z,约束是 4x + 9y - 18.7 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

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


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

【问题讨论】:

    标签: linear-programming cplex docplex docplexcloud


    【解决方案1】:

    确实,如果你不给出一个范围,它们就是非负数。

    zoo story中的小例子:

    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)
    

    给予

    nbbus40.lb = 0
    nbBus40  =  7.5
    nbBus30  =  0
    nbbus40v2.lb = -2
    nbBus40  =  9.0
    nbBus30  =  -2.0
    

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 2020-09-14
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多