Optimisation linéaire
Mon problème est le suivant :
- J’ai 190.00€ de chèque culture par le CE
- Je souhaiterais acheter la suite de la collection Elfes, Nains, Orcs, Mages en BD
- Or ils ne sont pas tous au même prix : y-en a à 19.95€, à 15.50€ et à 14.95€
- En faisant le listing des ouvrages qu’il me manque j’obtient :
- 11 BDs à 19.95€, 4 à 15.50€ et 3 à 14.95€
- Quelle est donc la meilleur combinaison de BDs à 19.95€, 15.50€ et 14.95€ pour atteindre au plus proche mes 190.00€ de chèques ?
Ceci est un problème d’optimisation linéaire (https://fr.wikipedia.org/wiki/Optimisation_lin%C3%A9aire) :
avec x, y, z
des entiers positifs
on souhaite minimiser la fonction affine 15.95x + 15.50y + 14.95z
avec les contraintes x <= 11, y <= 4, z <= 3
et de sorte que 15.95x + 15.50y + 14.95z >= 190.00
Ci-joint le programme Python utilisant la lib Pulp donnant la solution optimale :
python3 ./linear_prog.py 15.95 15.5 14.95 190.00 11 4 3 -m
(x= 9.0, y= 3.0, z= 0.0)
e= 190.04999999999998