Vous êtes sur la page 1sur 12

TP Recherche Opérationnelle ENIG / GM2 & GCV2

Manipulation 1 :
Résolution de problèmes linéaires
avec la méthode graphique et le Solveur de MS Excel

1. But du TP

Le but de cette manipulation est d’apprendre à formuler des problèmes d’optimisation linéaires
et de les résoudre par :
- l’implémentation de la méthode graphique sur Matlab (1ère séance)
- l’utilisation du Solveur de Microsoft Excel (2éme séance).

2. Travail demandé

Pour chacun des exemples décrits ci-dessous, on demande de :


1. Identifier les variables de décisions et formuler le programme linéaire du problème
2. Tracer, sur Matlab, le domaine des solutions réalisables et déduire la solution optimale
(utiliser le menu help de Matlab pour identifier la commande nécessaire pour présenter
les contraintes du modèle).
3. Introduire le modèle développé dans une feuille de calcul Excel. Réserver des cases
pour les variables de décisions, des cases pour les contraintes et une case pour la
fonction objectif.
Utiliser par la suite le Solveur de MS Excel pour la résolution du problème.
Pour les modèles résolus par la méthode graphique, comparer la solution avec celle
obtenue par le Solveur de MS Excel.

3. Démarche à suivre pour l’activation et l’utilisation du Solveur de MS Excel

Pour activer le Solveur, il suffit d’ouvrir MS Excel et de suivre le chemin suivant :


Bouton Office > Options Excel > Compléments. Dans la case Gérer, cliquer sur Atteindre puis
cocher Complément Solveur.
Le Solveur sera par la suite accessible à partir de la rubrique Données de la page Excel.

Utilisation du Solveur :
- On commence tout d’abord par l’intégration du modèle développé sur une feuille de
calcul Excel.
- Une fois le modèle est complètement défini et saisi, ouvrir le Solveur. La fenêtre de
paramétrage illustrée à la Figure 1 s’affiche.

Wafa BEN YAHIA 1/5


TP Recherche Opérationnelle ENIG / GM2 & GCV2

- Dans l’emplacement de la « cellule cible à définir », veuillez entrer la case


correspondante à la fonction objectif. Indiquez s’il s’agit d’un problème de
maximisation, de minimisation ou de valeur cible à atteindre.
- Dans l’emplacement des « cellules variables », introduisez les cases réservées aux
variables de décision.
- Les contraintes peuvent être introduites, modifiées ou supprimées à partir des
commandes correspondantes à la zone « Contraintes ».
- Le choix de la méthode de résolution peut être effectué à partir de l’icône « Sélect. une
résolution ».

Figure 1. Fenêtre de paramétrage du Solveur

Wafa BEN YAHIA 2/5


TP Recherche Opérationnelle ENIG / GM2 & GCV2

Exemple 1.

Pour fabriquer deux produits P1 et P2 on doit effectuer des opérations sur trois machines M1,
M2 et M3, successivement mais dans un ordre quelconque. Les temps unitaires d’exécution
sont donnés par le tableau suivant :

M1 M2 M3
P1 11min 7 min 6 min
P2 9 min 12 min 16 min
La disponibilité pour chaque machine est :

• 165 heures (9900 minutes) pour la machine M1 ;

• 140 heures (8400 minutes) pour la machine M2 ;

• 160 heures (9600 minutes) pour la machine M3.

Le produit P1 donne un profit unitaire de 900 dinars et le produit P2 un profit unitaire de 1000
dinars.

Dans ces conditions, combien doit-on fabriquer mensuellement de produits P1 etP2 pour avoir
un profit total maximum ?

Exemple 2.

Pour nourrir les animaux d’une ferme, on a besoin de quatre composantes A, B, C et D.


Le besoin minimal journalier et : 4kg de A, 6kg de B, 20kg de C et 19kg de D.
Pour obtenir la nourriture, on mélange deux farines M et N :

- De 1kg de M on obtient : 0.1kg de A, 0kg de B, 0.1kg de C et 0.2kg de D.


- De 1kg de N on obtient : 0kg de A, 0.1kg de B, 0.2kg de C et 0.1kg de D.
- 1kg de M coûte 1 dinar et1kg de N coûte 0.8 dinar
1) Ecrire le programme linéaire correspondant à la recherche des quantités de farine M et N à
donner aux animaux pour les nourrir à coût minimum.

Exemple 3.

Une usine dispose de trois machines A, B et C :


- La machine A permet de faire de la gelée d’abricots,
- la machine B permet de faire de la confiture de fraises et de la gelée de fraise
- et la machine C traite les déchets produits par A et B.

Wafa BEN YAHIA 3/5


TP Recherche Opérationnelle ENIG / GM2 & GCV2

La machine A est alimentée par un mélange composé de 60% d’abricots et 40% de sucre et peut
traiter au plus 15 tonnes de mélange par jour. Pour une tonne de mélange, elle produit 800kg
de gelée et 200kg de déchets.
La machine B est alimentée par un mélange composé de 80% de fraises et 20% de sucre et peut
traiter au maximum 10 tonnes de mélange par jour. Pour une tonne de mélange, elle produit
600kg de confiture, 300kg de gelée et 100kg de déchets.
Tous ces déchets doivent être éliminés à l’aide de la machine C qui peut en traiter au maximum
2tonnes par jour.
L’usine achète des abricots, des fraises et du sucre aux prix respectifs de 3000, 3500 et 1200
TND la tonne. Elle vend la tonne de gelée d’abricots à 4500 TND, celle de gelée de fraises à
5000 TND et celle de confiture de fraises à 4000 TND.
On cherche à définir un plan de production journalier maximisant le bénéfice de l’usine.
NB. Utiliser seulement 2 variables de décisions

Exemple 4.

Une entreprise sidérurgique a reçu une commande de 5 tonnes d’acier destiné à la fabrication
de carrosseries automobiles. Les teneurs de cet acier en différents éléments chimiques doivent
appartenir aux fourchettes indiquées dans le Tableau 2.
Pour fabriquer cet acier, l’entreprise dispose de sept matières premières dont les teneurs, les
quantités disponibles et les coûts d’achat sont donnés dans le Tableau 3.
On cherche à identifier les quantités optimales à mélanger des différentes ferrailles afin de
satisfaire la commande au meilleur coût.
Le problème est à résoudre avec MS Office Excel.

Tableau 2. Caractéristiques de l’acier

Elément chimique Teneur minimale Teneur maximale


Carbone (C) 2% 3%
Cuivre (Cu) 0.4% 0.6%
Manganèse (Mn) 1.2% 1.65%

Wafa BEN YAHIA 4/5


TP Recherche Opérationnelle ENIG / GM2 & GCV2

Tableau 3. Caractéristiques des matières premières

Matière Teneur en C Teneur en Cu Teneur en Stock Coût


première (%) (%) Mn (%) disponible (Kg) (TND/Kg)
Ferraille 1 2.5 0 1.3 4000 0.2
Ferraille 2 3 0 0.8 3000 0.25
Ferraille 3 0 0.3 0 6000 0.15
Ferraille 4 0 90 0 5000 0.22
Ferraille 5 0 96 4 2000 0.26
Ferraille 6 0 0.4 1.2 3000 0.2
Ferraille 7 0 0.6 0 2500 0.17

Exemple 5.

Un industriel a intérêt d’acheter au début de chaque mois les quantités suivantes de quatre
liquides : 8000 litres du liquide A au coût de 5.50 $ l’unité, 4250 litres de B au coût de 4.50 $
l’unité, 16000 litres de C à 7.50 $ l’unité et 2000 litres de D à 11.25 $ l’unité.
L’industriel peut revendre ces liquides directement, sans leur faire subir de transformations, et
en retirer un bénéfice de 0.50 $ par litre.
Il peut aussi s’en servir pour élaborer les mélanges E, F et G. Ces mélanges doivent présenter
les caractéristiques données au tableau suivant :
Mélange Liquide A Liquide B Liquide C Liquide D
E 30% 25% 40% 5%
F 30% 20% 20% 30%
G 20% 20% 40% 20%

Ces mélanges se vendent respectivement 11 $, 15 $ et 14 $ le litre, et le marché peut en absorber


autant que peut en fabriquer l’industriel.
Le carnet de commandes exige cependant la livraison d’au moins 400 litres de E, d’au moins
800 litres de F et d’au moins 200 litres de G.
Modéliser ce problème sous la forme d’un problème linéaire sachant que l’industriel souhaite
tirer le meilleur profit possible des liquides A, B, C et D qu’il peut se procurer en début de
mois ?
Le problème est à résoudre avec MS Office Excel.

Wafa BEN YAHIA 5/5


TP Recherche Opérationnelle ENIG GM2 & GCV2

Manipulation 2

Résolution de problèmes linéaires avec le logiciel LINDO

I. Introduction

L’objectif de ce TP est de s’adapter à l’environnement LINDO, de maîtriser la méthode de


Simplexe et d’être capable à analyser un problème.

LINDO est un outil extrêmement souple et conviviale, permettant la résolution les modèles
d’optimisation linéaires, non-linéaire (convexe ou non convexe), en variables entières, et
quadratiques. Il permet également d’analyser les modèles en utilisant la méthode de Simplexe.

La version qu’on va utiliser, c’est la version LINDO 6.1, pouvant traiter des problèmes avec un
nombre de variables allant jusqu’à 300, un nombre de contraintes allant jusqu’à 150 et un
nombre de coefficients non nuls allant jusqu’à 2000000.

II. Exploitation du logiciel LINDO

Le lancement du logiciel LINDO ouvre la fenêtre représentée ci-dessous dans la Figure.1.

Le menu principal comporte six catégories de sous menus :

Menu File : dans ce menu on trouve les commandes de création, d’ouverture, de


sauvegarde, d’impression et de fermeture des fichiers, etc.
Menu Edit : ce menu contient les commandes qui, en général, soutiennent le plein écran
éditant des options dans LINDO.
Menu Solve : ce menu comporte toutes les commandes de compilation et de résolution du
modèle du programme linéaire.
Menu Reports : ce menu il comporte toutes les commandes qui génèrent des rapports liés
au modèle.
Menu Window : ce menu comporte toutes les commandes qui aident à la manipulation des
différentes fenêtres créés par LINDO.
Menu Help : ce menu contient plusieurs commandes pour accéder au service d'aide de
LINDO.

Wafa BEN YAHIA Page 1


TP Recherche Opérationnelle ENIG GM2 & GCV2

Figure 1. Menu principal LINDO

1. Syntaxe du modèle

Un modèle LINDO nécessite au moins trois choses : une fonction objectif, des variables de
décision et des contraintes. Un modèle peut aussi avoir un titre. Il suffit d’écrire « TITLE » et
donner un titre au modèle avant de commencer la modélisation.

Note : LINDO ne fait pas la différence entre Majuscule et minuscule.

Tout modèle doit commencer soit par « Max » pour un problème de maximisation, ou par
« Min » » pour un problème de minimisation.
La fin de la déclaration de la fonction objectif correspond au début de la déclaration des
contraintes, mentionnée par l’une des fonctions suivantes : « SUBJECT TO » ou « SUCH
THAT » ou « S.T. » ou « ST ».
La fin de la déclaration des contraintes est mentionnée par le mot « END ».
Une contrainte peut avoir un nom, qui doit se terminer par une parenthèse. Exemple :
disponibilité) x >100.
Une contrainte doit toujours s’écrire sous la forme d’une somme de variables qui est
inférieur ou supérieur à une constante.
Les contraintes de non-négativité sont automatiquement introduites.
Les contraintes et la fonction objectif peuvent être dédoublées en plusieurs lignes ou
combinées en une seule ligne.
Le nom d’une variable ne peut pas contenir plus que 8 caractères. Il doit commencer par
une lettre de A Z, et ne doit pas contenir ! ) + - = < >
LINDO ne reconnaît que les opérateurs suivants : ‘’+’’, ‘’ –‘’, ‘’<’’, ‘’>’’, ‘’=’’. Lorsque
vous introduisez les opérateurs ‘’<’’et ‘’>’’, LINDO les interprètent respectivement
comme étant ‘’≤ ’’et ‘’ ≥ ’’.
les commentaires peuvent être écrits n’importe où dans le modèle, mais ils doivent être
précédés par un point d’exclamation « ! ».

Wafa BEN YAHIA Page 2


TP Recherche Opérationnelle ENIG GM2 & GCV2

après avoir terminé la déclaration des contraintes du modèle, par « END », la déclaration
de type de variables commence :
FREE <variable> Pas de limite, variable réelle qui peut être positive ou négative.
GIN <Variable> Variable entière positive.
INT <Variable> Variable binaire (0 ou 1).
SLB <Variable> <Valeur> Variable possédant une borne inférieure, égale à <valeur>
SUB <Variable> <Valeur> Variable possédant une borne supérieure, égale à <valeur>

2. Résolution du modèle

Avant la résolution compiler le modèle pour vérifier que la syntaxe du modèle et correct. Pour
ceci, choisir la commande « Compile Model » du menu « Solve».

Pour la résolution du modèle, on a trois possibilités :

Choisir la commande « Solve » du menu « Solve»

Cliquer sur le bouton dans la barre d’outils en haut de la fenêtre


Choisir la commande « Open Command Window » du menu «Window», taper la
commande « Go » puis cliquez sur ‘’entrer’’.

LINDO permet de visualiser les différentes étapes de l’algorithme simplexe. Il faut d’abord
compiler de nouveau le modèle. Ensuite, ouvrir la fenêtre de commande « Command Window».
Puis, tapez la commande « look all », puis cliquez sur ‘’entrer’’ pour rappeler la formulation du
modèle et savoir la numérotation des lignes dans LINDO. Pour chaque itération, taper la
commande « TAB » or « TABL » puis ‘’entrer’’ pour afficher le tableau. Ensuite, taper la
commande « pivot » puis ‘’entrer’’, pour que LINDO indique l’emplacement du pivot dans le
tableau. Répéter la même procédure jusqu’à atteindre la solution optimale.

3. Analyse de sensibilité

Après la résolution du modèle, LINDO pose toujours la question suivante « DO RANGE


(SENSITIVITY) ANALYSIS? ». Donc, pour mener une étude de sensibilité, il faut répondre
par ‘oui’ à cette question en tapant « y » ou « yes ». Si non, il suffit de taper « n » ou « no ».

La commande « RANGE » montre l'analyse de sensibilité de la solution du modèle,


actuellement installée dans la mémoire. Ceci inclut :

Un avertissement si la solution courante n'est pas garantie, pour être optimale ou faisable.

Wafa BEN YAHIA Page 3


TP Recherche Opérationnelle ENIG GM2 & GCV2

Noms des variables avec leurs coefficients courants de fonction objective et les
augmentations et les diminutions permises, sans provoquer une modification de la base
Les numéros des rangées du programme avec leurs valeurs courantes du côté droit et les
augmentations et les diminutions permises, sans provoquer une modification de la base.

Afin d’effectuer les changements désirés, il suffit d’utiliser la commande « Alter » ou « Alt ».
La syntaxe de la commande est la suivante :

ALTER <Row> <VarName | DIR | NAME | RHS>

Où <Row> désigne le nom ou l’index de la ligne, là où on désire faire une modification et


<VarName> désigne le nom de la variable qui va être changée.

La commande « Alter » permet de changer :

Les coefficients des variables et leurs signes : on utilise VarName.


Le sens de la fonction objectif (‘max’ ou ‘min’) : on utilise DIR (au lieu de VarName)
pour Row 1.
Le type de contrainte (≤, =, ou ≥) : on utilise DIR (au lieu de VarName) pour n’importe
quelle ligne sauf Row 1.
Le côté droit de la contrainte : on utilise RHS (au lieu de VarName). Pour changer toutes
les lignes il vaut mieux utiliser la commande APPCOL.
Le nom d’une ligne : on utilise NAME (au lieu de VarName), sauf Row 1.

LINDO permet aussi de supprimer une contrainte tout entière, en utilisant la commande
DELETE (« Del »). Ou bien, rajouter une contrainte au modèle, en utilisant la commande
EXTEND (« Ext »), suivi du mot End.

4. Manipulations

Exercice 1 :

1) Résoudre le modèle suivant :


Max Z= 3x1 + 5x2
S/C
x1<4
2x2 <13
3x1 + 2x2 <18
x1, x2>0
2) Forcer x1 et x2 à être des variables entières et résoudre le modèle de nouveau.

Wafa BEN YAHIA Page 4


TP Recherche Opérationnelle ENIG GM2 & GCV2

Exercice 2 :

Reformuler ce modèle, en simplifiant le nombre de contrainte :

Min 8X1 +10X2+7X3+6X4+11 X5+9X6+2Y1 +2Y2


ST
12X1 +9X2+25X3+20X4+17X5+13X6 >= 60
35X1 +42X2+18X3+31 X4+56X5+49X6 >= 150
37X1 +53X2+28X3+24X4+29X5+20X6 >= 125
X1 -1000Y1 <=0
X2-1000Y2<=0
X1 <= 1
X2 <= 1
X3 <= 1
X4 <= 1
X5 <= 1
X6 <= 1
END
INT Y1
INT Y2

Exercice 3 :

Une société de jouets produit des trains, des camions et des voitures, en utilisant trois machines.
Les disponibilités quotidiennes des machines sont respectivement 430, 460 et 420 minutes/jour.
Les profits des produits sont : 3DT par train, 2DT par camion, et 5DT par voiture.

Les temps nécessaires en minutes/jour sur chaque machine sont :


Machine Train Camion Voiture
1 1 2 1
2 3 0 2
3 1 4 0
1) Modéliser le problème

2) Résoudre le problème par la méthode simplexe

3) Donner la solution du problème dual

4) Dans quel intervalle peut varier le profit de chaque produit sans changer la base (sans
affecter l’optimalité de la solution)?

5) Dans quel intervalle peut varier la disponibilité des machines sans changer la base (sans
affecter l’optimalité de la solution) ?

Wafa BEN YAHIA Page 5


TP Recherche Opérationnelle ENIG GM2 & GCV2

Exercice 4 :

Une société S fabrique deux types de pièces P1 et P2. Le processus de fabrication pour chaque
produit nécessite le passage par trois types de machines M1, M2 et M3. L’entreprise dispose de
deux machines pour les opérations de découpe du métal (M1), une machine pour les opérations
de roulage (M2), et deux machines pour les opérations de soudage (M3). Chaque machine
fonctionne 120 heures/mois.

Les temps unitaires de fabrication par produit et par machine sont exprimés en heures, et le prix
de vente de chaque produit sont rassemblées dans le tableau suivant :

P1 P2
M1 1 1.5
M2 0.5 1
M3 2 1
Prix de vente 200 240

1) Le programme de production actuel fournit 80 pièces de P1 et 75 pièces de P2. Quelle est


la valeur des bénéfices offerte par ce programme de production ?
2) Un expert, qui a visité société S, a remarqué un excès de résidus, il propose au responsable
un nouveau programme de production qui maximise les bénéfices.
Modéliser le problème sous forme d’un programme linéaire. Ecrire la forme canonique et
la forme standard.
3) Trouver la quantité optimale à fabriquer afin de maximiser les bénéfices, par la méthode
du simplexe.
4) Résoudre le problème de nouveau en utilisant l’outil LINDO.
5) Un accompagnant d’expert propose au patron de la société de lui louer la disponibilité des
machines au prix (0, 150, 50). Est-ce que cette proposition intéresse le patron ou il
continuera à produire ? expliquer.
6) Quel sont les prix minimales qui satisfassent le patron pour la location de la disponibilité
des machines?
7) Ecrire le Dual du programme de production. Le résoudre en utilisant l’algorithme Dual
simplexe, en utilisant l’outil LINDO.
8) Interpréter les résultats.
9) Faire une analyse de sensibilité et interpréter les résultats.

Wafa BEN YAHIA Page 6


TP Recherche Opérationnelle ENIG GM2 & GCV2

10) Introduire les changements suivants au problème de production et interpréter les résultats.
La société S a la possibilité d’utiliser une deuxième machine pour les opérations de
roulage (M2) de 120 heures de disponibilité supplémentaire.
L’expert a remarqué que le temps de soudage pour le produit P1 peut être minimisé de
un dixième, moyennant un bon ordonnancement des tâches dans l’atelier.
Le prix de vente du produit P2 augmente de 30D.
Le patron décide d’ajouter une machine de finition (M4) de disponibilité 120
heures/mois. Chaque produit nécessite un temps de finition égale à 0,5 heures.

Wafa BEN YAHIA Page 7

Vous aimerez peut-être aussi