# Import PuLP modeler functions
from pulp import *
x = LpVariable('x', -10, 10)
y = LpVariable('y', -10, 10)
prob = LpProblem("Toy Problem", LpMinimize)
prob += 3*x - y
prob.solve()
prob
Toy Problem: MINIMIZE 3*x + -1*y + 0 VARIABLES -10 <= x <= 10 Continuous -10 <= y <= 10 Continuous
(x.value(), y.value())
from pylab import *
def obj(x,y):
return 3*x - y
def add_constraint(cx, cy, c):
# cx.x + cy.y = c
# x = c - cy/cx . y
# y = c - cx/cy . x
if cy != 0:
plot([LO, HI], [c - LO*cx/cy, c - HI*cx/cy])
else:
plot([c - LO*cy/cx, c - HI*cy/cx], [LO, HI] )
LO = -11
HI = 11
xx = yy = np.linspace(LO, HI)
XX,YY = np.meshgrid(xx,yy)
contourf(XX,YY,obj(XX,YY), 100)
xlim(LO, HI)
ylim(LO, HI)
xlabel('x')
ylabel('y')
add_constraint(1,0, 10)
add_constraint(1,0, -10)
add_constraint(0,1, -10)
add_constraint(0,1, 10)
plot(x.value(), y.value(), markersize=30, marker='*')
colorbar()
<matplotlib.colorbar.Colorbar instance at 0x537a488>
prob += (x+0.8*y >= 3), "extra constraint"
prob += (x-0.8*y <= -3), "c2"
#prob += (x-0.8*y == 3), "c3"
prob.solve()
XX,YY = np.meshgrid(xx,yy)
contourf(XX,YY,obj(XX,YY), 100)
xlim(LO, HI)
ylim(LO, HI)
xlabel('x')
ylabel('y')
add_constraint(1,0.8,3)
add_constraint(1,-0.8,-3)
add_constraint(1,0,10)
add_constraint(1,0,-10)
add_constraint(0,1,-10)
add_constraint(0,1,10)
plot(x.value(), y.value(), markersize=30, marker='*')
colorbar()
<matplotlib.colorbar.Colorbar instance at 0x58bdcf8>
prob
Toy Problem: MINIMIZE 3*x + -1*y + 0 SUBJECT TO extra_constraint: x + 0.8 y >= 3 c2: x - 0.8 y <= -3 VARIABLES -10 <= x <= 10 Continuous -10 <= y <= 10 Continuous
x.value(), y.value()