如何动态更改 PuLP 中 LpVariable 的范围?

How do I change the bounds of a LpVariable in PuLP dynamically?

我已经像这样初始化了我的 LpVariable:

x = LpVariable('x', None, None) 

此时,我的变量有上下界为float('inf')float('-inf')。现在,根据我的逻辑的一些参数,我想将该变量的上限限制为任何 x < 20

我只能通过添加 LpProblem 并使用问题参数修改变量来实现吗?

y = LpProblem('Minimizing Problem', LpMinimize) 
y += x < 20 

或者有其他方法来操作变量吗?更改 x.upBound 似乎不起作用。我仍然可以将无效 integers/floats 设置为解决方案(即 values > 20)并接受它们。

事实证明这两种方式都有效。例如:

y = LpProblem("min", LpMinimize)
y += x + 10  # Objective Function
x = LpVariable('x', None, None)  # set to bounds=[float("-inf"),float("inf")]

我们可以通过以下方式之一将 x 的下限从默认值 float("-inf") 更改为 20

选项 1: 修改 LpProblem 的约束。因此,例如,如果您想更改 lowBound of x to 20,则需要使用:

y += x > 20, "changing lower bound of x" 

选项 2: 修改 LpVariable 对象的 lowBound 属性:

x.lowBound = 20 

这两个变化应该给我们 y = 30

的解决方案