【问题标题】:How to specify at least one decision variable should take minimum value in python pulp?如何指定至少一个决策变量应在 python 纸浆中取最小值?
【发布时间】:2018-06-26 09:17:20
【问题描述】:

我用 PULP 在 python 中的 LP 的帮助下解决了基本问题。现在我想再添加一个条件约束来指定至少一个决策变量的最小值应该为 2。

prob = LpProblem("Minimizing cost", LpMinimize)
A = LpVariable("A", lowBound=0, cat='Integer')
B = LpVariable("B", lowBound=0, cat='Integer')
C = LpVariable("C", lowBound=0, cat='Integer')
prob += 44550*A +70570*B + 132835*C
prob += 1.014996087*A + 2.029992174*B + 4.060195806*C >= 5
prob += A+B+C <= 50
status = prob.solve()
print('Status:', LpStatus[status])
value(A), value(B), value(C), value(prob.objective)

返回以下答案:

Status: Optimal
(1.0, 0.0, 1.0, 177385.0)

这里 A=1 和 C=1。 如何指定 A、B、C 之一应取最小值 2。

【问题讨论】:

    标签: python linear-programming pulp


    【解决方案1】:

    使用一些额外的二元变量 α,β,γ 我们可以制定:

    A ≥ 2α 
    B ≥ 2β
    C ≥ 2γ
    α+β+γ ≥ 1
    α,β,γ ∈ {0,1} 
    

    此模型:“A、B、C 中的至少一个应≥ 2”。这些是简单的线性不等式,可以直接在 Pulp 中实现。

    【讨论】:

    • 非常感谢 Erwin Kalvelagen。
    猜你喜欢
    • 2020-09-16
    • 2022-01-10
    • 2020-08-06
    • 1970-01-01
    • 2014-11-12
    • 2020-12-19
    • 2023-03-14
    • 2020-08-28
    • 1970-01-01
    相关资源
    最近更新 更多