from cvxopt import glpk
from cvxopt.base import matrix as m
c = m([-3., -2., 5., 2., -3.])
A = m([[1., 1., 1., 2., 1.], [7., 0., 3., -4., 3.], [11., -6., 0., 3., -3.]])
b = m([4., 8., 3.])
binVars = range(len(b))
print(binVars)
sol = glpk.ilp(c, A, b, I=set(binVars), B=set(binVars))
print(sol[0])
print(sol[1])
print(sol)
c = m([-3., -2., 5., 2., -3.])
A = m([[1., 7., -11.], [1., 0., 6.], [1., 3., 0.], [2., -4., -3.], [1., 3., 3.]])
b = m([4., 8., -3.])
binVars = range(len(b) + 2)
sol = glpk.ilp(c, A, b, I=set(binVars), B=set(binVars))
print(sol[0])
print(sol[1])
print(sol)
print "The optimal value is {0}".format((-c.T*sol[1])[0])
else:
print "The problem did not return an optimal solution. The solve status was {0}".format(sol[0])