【问题标题】:How to add Logical constraints in PuLP如何在 PuLP 中添加逻辑约束
【发布时间】:2016-01-26 10:43:08
【问题描述】:

我正在尝试使用 PuLP 解决 FLP。我想为变量值添加逻辑约束。

我有 LpVariable f 和 C 是 LpVariables 的列表。我想将 f 添加到问题的约束中,这取决于 c[i] 的值。

下面是代码sn-p >

prob = LpProblem("The MILP problem", LpMinimize)

添加了第一个约束:

prob += lpSum(c[i] for i in range (len(c))) == 2

现在我想添加以下约束:

  if`lpSum(c[i] for i in range (len(c))) > 1:
`     prob += f == 1  
  else:
      prob += f == 0


prob += lpSum(c[i] for i in range (len(c)) + f )

现在的问题是 LpVariables c[i] 用 None 初始化,因此在计算 lpSum() 时会引发错误。

我希望我很清楚。如果需要任何帮助来理解这个查询,请告诉我,但我认为给定代码 sn-p 就足够了。

【问题讨论】:

    标签: python-3.x pulp coin-or-cbc


    【解决方案1】:

    三点:

    (1) 您的第一个约束强制 lpsum 等于 2,因此在您的示例中 f 将始终为 1 - 您确定您的公式正确吗?

    (2) 如果语句不能与 lpSum 结合使用 - 您应该将其表述为实际约束。

    例如,您可以将 f 定义为二进制变量并添加此约束:

    prob += lpSum(c[i] for i in range (len(c))) - 1 <= M*f 
    

    其中 M 是一个足够大的数字。 然后,如果 f==0 我们有“lpsum()

    (3) 约束“prob += lpSum(c[i] for i in range (len(c)) + f)”什么都不做,除非它应该是你的 MILP 的目标?如果是这样,您应该在 prob = LpProblem("The MILP problem", LpMinimize) 之后立即添加它

    祝你好运

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多