Outil pour la programmation linéaire

Je vous présente l'outil GLPK qui permet de résoudre des instances de la programmation linéaire. L'algorithme du simplexe est implémenté (avec des optimisations...). Sous Linux, il est sans doute installé ou alors vous pouvez l'installer en 2 clics sur la plupart des distributions. Sous Windows, l'installation est manuelle : http://winglpk.sourceforge.net/.

Définition d'un programme linéaire

Vous créez un fichier qui décrit votre programme. Par exemple vous créez le fichier chocolatier.pl :

\Problem name: chocolatier.lp
Maximize
     obj: x + 6 y + 13 z
Subject To
  c1: x <= 200
  c2: y <= 300
  c3: x + y + z <= 400
  c4: y + 3 z <= 600
Bounds
   0 <= x <= +Inf
   0 <= y <= +Inf
   0 <= z <= +Inf
End

Résolution

Vous lancez le programme dans une console avec glpsol --cpxlp chocolatier.lp. On obtient :

GLPSOL: GLPK LP/MIP Solver, v4.48
Parameter(s) specified in the command line:
 --cpxlp chocolatier.lp
Reading problem data from `chocolatier.lp'...
4 rows, 3 columns, 7 non-zeros
13 lines were read
GLPK Simplex Optimizer, v4.48
4 rows, 3 columns, 7 non-zeros
Preprocessing...
2 rows, 3 columns, 5 non-zeros
Scaling...
 A: min|aij| =  1.000e+00  max|aij| =  3.000e+00  ratio =  3.000e+00
Problem data seem to be well scaled
Constructing initial basis...
Size of triangular part = 2
      0: obj =   4.000000000e+02  infeas =  2.000e+02 (0)
*     1: obj =   2.000000000e+02  infeas =  0.000e+00 (0)
*     4: obj =   3.100000000e+03  infeas =  0.000e+00 (0)
OPTIMAL SOLUTION FOUND
Time used:   0.0 secs
Memory used: 0.1 Mb (53084 bytes)
Le profit maximum du chocolatier est de 3100 (4: obj = 3.100000000e+03).