exemple | ||
exo1 | ||
exo2 | ||
exo3 | ||
exo4 | ||
exobonus | ||
.gitignore | ||
README.md | ||
script.sh | ||
sujet.pdf |
Rapport de TP de Recherche Opérationnelles
Instructions:
- Ce qui à motivé votre choix de format (lp ou mod/dat) de la modélisation
- Quelques détails sur les points clés et non triviaux de votre modélisation (ce que représentent vos variables de décisions, une contrainte élaborée...)
- Une courte argumentation de l’adéquation du résultat avec l’instance résolue (la solution obtenue fait-elle sens dans le contexte défini par l’énoncé ?)
- Quelques éléments d’analyse, par exemple :
- Pour PL : Les matrices de ces exemples sont-elles creuses ? (Dans la pratique, il est fréquent qu’une contrainte ne rassemble que de 5 à 10 variables.)
- Pour PLNE : En combien d’itérations est trouvée la solution optimale continue ? Combien de fois GLPK a amélioré la meilleure solution entière ? Combien d’itérations du simplexe ont été nécessaires ? Combien de nœuds de l’arbre ont été explorés ?
Exercice 1 : Des voitures
glpsol --lp exo1/voitures.lp -o exo1/voitures.sol
- Nous avons choisi d'utiliser un
.lp
pour résoudre ce problème puisque celui-ci est simple et ses données ne changent pas. - Voici comment nous avons choisi de modéliser le problème:
nS
\in \N
modélise le nombre de voiture Standard produit par semaine.nL
\in \N
modélise le nombre de voiture de Luxe produit par semaine.- On cherche à maximiser
Benefice
. CapaciteParking
modélise la surface maximale du parking.TempsTravail
modélise le temps de travail maximal de employés.LimiteLuxe
limite le nombre de voiture de Luxe produisable.
- 3 itérations sont nécéssaires pour résoudre le problème du simplex. 4 itérations sont nécéssaires pour trouver la meilleure solution entière. 3 noeuds de l'arbre ont été explorés.
- On obtient comme solution:
nS
= 645 etnL
= 426. Ce resultat est cohérent.
Exercice 2 : Gestion de personnel
glpsol -m exo2/personnel.mod -d exo2/personnel.dat -o exo2/personnel.sol
- Nous avons choisi de modéliser ce problème en utilisant un
.mod
et un.dat
puisque l'input de matrices de se fait plus simplement dans un.dat
. De plus, il est dépendant de N donc il est suceptible d'évoluer doncs seul le fichier.dat
sera à modifier car le fichier.mod
est plus général. - Voici comment nous avons choisi de modéliser le problème:
- $(
`perm`
)_{i,j} \in M_2({0,1})$ modélise l'association d'un travail à une personne. perm
modélise les association qui doivent être uniques ; donc c'est une matrice de permutation. (ie. chaque ligne et chaque colonne ne doit contenir un seul 1)
- $(
- 10 itérations sont nécéssaires pour résoudre le problème du simplex. 10 itérations sont nécéssaires pour trouver la meilleure solution entière. 1 noeud de l'arbre à été exploré.
- Pour les données que l'on a fournis, on obtient la solution : $\left( \begin{array}{cccc} 1 & 0 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 0 & 1 \end{array} \right)$
Cette solution est bien la meilleur solution car chaque personne est associé au travail ou il est le plus efficace en vu des paramètres que nous avions posés.
Exercice 3 : En bourse
glpsol --lp exo3/bourse.lp -o exo3/bourse.sol
- Nous avons choisi d'utiliser un
.lp
pour résoudre ce problème puisque celui-ci est simple et ses données ne changent pas. - Voici comment nous avons choisi de modéliser le problème:
p1
modélise le produit financier n°1: Crédits commerciauxp2
modélise le produit financier n°2: Obligations de sociétésp3
modélise le produit financier n°3: Stocks d'Orp4
modélise le produit financier n°4: Stocks de Platinep5
modélise le produit financier n°5: Titres hypotécairesp6
modélise le produit financier n°6: Prếts de construction- On cherche à maximiser
Interets
. SommeP
contraint d'investir l'ensemble du budget.InvestissementProduit_i
limite l'investissement dans un même produit à 25%.Risque
limite le risque global de l'investisement à 2,0.MetauxPrecieuxMin
contraint d'investir au moins 30% dans les métaux précieux.CreditsMin
contraint d'investir au moins 45% dans les crédits commerciaux et obligations.
- On note
10 rows, 6 columns, 22 non-zeros
, la matrice de résolution est creuse et remplie à 36%. - On obtient comme solution:
p1
= 0.2p2
= 0.25p3
= 0.107692p4
= 0.192308p5
= 0.25p6
= 0
Exercice 4 : En optimisation pour l'e-commerce
glpsol -m exo4/ecommerce.mod -d exo4/ecommerce.dat -o exo4/ecommerce.sol
- Nous avons choisi de modéliser ce problème en utilisant un
.mod
et un.dat
puisque l'input de matrices de se fait plus simplement dans un.dat
. De plus, il est dépendant de N donc il est suceptible d'évoluer doncs seul le fichier.dat
sera à modifier car le fichier.mod
est plus général. - Voici comment nous avons choisi de modéliser le problème:
- $(
`coef`
){i,j,k} \in M_3(\R+)$ modélise l'association d'un trvail à une personne. - Chaque coefficient de
coef
doit être compris entre 0 et 1 puisque ce sont des proportions. - La somme des coefficients de
coef
selon l'axe k doit faire 1. - La répartions des commandes ne doit pas dépasser la limite des stocks.
- $(
- On note
23 rows, 12 columns, 45 non-zero
, la matrice de résolution est creuse et remplie à 16%. - On obtient la solution : (C'est la répartition de chaque fluides de chaque commande sur chaque magasin) $ \left( \begin{array}{c} \left( \begin{array}{c} 3/4 \ 1/4 \ 0 \end{array} \right) & \left( \begin{array}{c} 1 \ 0 \ 0 \end{array} \right) \ \left( \begin{array}{c} 1 \ 0 \ 0 \end{array} \right) & \left( \begin{array}{c} 1/3 \ 1/3 \ 1/3 \end{array} \right) \end{array} \right) $
Cette solution est bien la meilleur solution car chaque personne est associé au travail ou il est le plus efficace en vu des paramètres que nous avions posés.
Exercice bonus : Des composants
glpsol -m exobonus/bonus.mod -d exobonus/bonus.dat -o exobonus/bonus.sol
marche pas mais on a cherché ;(