如何动态更改PuLP中LpVariable的边界?

时间:2016-11-22 19:11:20

标签: python pulp

我已经初始化了我的LpVariable:

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

此时,我的变量的上限和下限为float('inf')float('-inf')。现在基于我逻辑的一些参数,我想将这个变量的上限限制为任何x < 20

我是否可以通过添加LpProblem并使用问题参数修改变量来实现此目的?

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

还是有另一种方法来操纵变量吗?更改x.upBound似乎不起作用。我仍然可以设置无效的整数/浮点数作为解决方案(即。values > 20)并接受它们。

1 个答案:

答案 0 :(得分:1)

原来两种方式都有效。所以例如:

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

的解决方案