如何动态更改 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
的解决方案
我已经像这样初始化了我的 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