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

扶醉桌前 提交于 2021-02-11 08:09:42

问题


I've initialised my LpVariable like so:

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

At this point, my variable has upper and lower bounds as float('inf') and float('-inf'). Now based on some parameters of my logic, I want to bound the upper limit of this variable to, say, any x < 20.

Can I only do this by adding in an LpProblem and modifying the Variable using the problem parameters?

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

Or is there another way to manipulate the variable? Changing x.upBound doesn't seem to work. I can still set invalid integers/floats as the solution (ie. values > 20) and it accepts them.


回答1:


Turns out both ways work. So for the example:

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

We can change the lower bound on x from the default float("-inf") to 20 in one of the following ways:

Option 1: Modifying the constraints on the LpProblem. So, for instance, if you wanted to change the lowBound of x to 20, you would need to use:

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

Option 2: Modifying the lowBound attribute on the LpVariable object:

x.lowBound = 20 

Both these changes should give us the solution of y = 30



来源:https://stackoverflow.com/questions/40749833/how-do-i-change-the-bounds-of-a-lpvariable-in-pulp-dynamically

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!