%display latex
m=13 #nombre de contraintes
n=9 #nombre de variables
A=matrix(m,n,(
0,1,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,
0,0,0,0,0,1,0,0,0,
0,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,1,
0,1,0,-1,-1,0,0,0,0,
0,0,1,0,0,-1,-1,0,0,
0,0,0,1,0,1,0,-1,0,
0,0,0,0,1,0,0,0,1,
1,0,0,0,0,0,0,-1,-1))
bmin=[0,0,0,0,0,0,0,0,0,0,0,0,0]
bmax=[4,6,3,4,2,3,6,6,0,0,0,0,0]
c=matrix(1,n,(1,0,0,0,0,0,0,0,0))
p1 = MixedIntegerLinearProgram(maximization=True, solver = "GLPK") # Création du MILP
# on peut remplacer GLPK par PPL pour obtenir une optimisation fractionnaire.
x = p1.new_variable(integer=False, indices=[0..n-1]) # les nouvelles variables seront x[1]... x[7]}
B = A * x # m
# Construction des contraintes
for i in range(m):
p1.add_constraint(B[i], min=bmin[i], max=bmax[i])
# remove_constraint() pour en retirer une
for i in range(n):
p1.set_min(x[i],0)
p1.set_objective(x[0])# définition de l'objectif
p1.show() # Vérification
p1.solve();