Académique Documents
Professionnel Documents
Culture Documents
Faculté de Mathématiques
Département de Recherche Opérationnelle
Mémoire
En vue de l’obtention du diplôme de licence
En Recherche Opérationnelle
THÈME :
juin 2019
Remerciment
Nous tenons à remercier toute personne qui a contribué à la réalisation de ce mémoire .
On voudrais témoigner toute notre gratitude à la directrice de notre travail Madame AOUDIA et Monsieur
BERRACHEDI.
Enfin merci à dieu et à tous nos amis et membres de famille pour leurs soutien .
Table des matières
Introduction Générale 4
Conclusion 20
Annexe 21
Bibliographie 22
3
4
Introduction Générale
L’optimisation linéaire peut se définir comme l’ensemble des méthodes et techniques rationnelles d’ana-
lyse et de synthèse de phénomènes d’organisation utilisables pour élaborer de meilleures décisions ; elle
vise la recherche de la meilleure façon d’opérer des choix dans un système complexe en vue d’obtenir
un résultat souhaité, ou le meilleur résultat possible.
Celle-ci était conçu pour des raisons militaires durant la seconde guerre mondiale, pour résoudre
certains problèmes tels que : l’implantation optimale de radars de surveillance, la gestion des convois
d’approvisionnement ou encore la planification des vols de surveillance anti-sous-marins, etc.
Après la guerre, l’optimisation linéaire s’introduit dans le monde des affaires, l’objectif étant d’or-
ganiser, produire, stocker et vendre de façon optimale. L’arrivée de l’ordinateur allait accélérer le
développement de cette nouvelle science laquelle utilise trois branches mathématiques fondamentales :
L’algèbre linéaire , La programmation linéaire et la statistique .
Les problèmes d’optimisation sont classés en deux grandes classes, avec et sans contraintes (optimisation
linéaire, non linéaire, convexe, quadratique, multicritère, ...), qu’on ne sait pas souvent les résoudre
tous.
La méthodologie de l’optimisation linéaire comprend trois étapes essentielles qui soulèvent des pro-
blématiques propres : la première étape est la modélisation qui consiste à l’observation attentive du
problème et sa formulation, ainsi que la collecte des données associées ; il convient par la suite de
construire un modèle mathématique « programme linéaire » qui tente d’abstraire l’essence du problème
réel ; tout modèle est donc par sa nature une simplification de la réalité, mais cette représentation doit
être suffisamment précise pour capturer les caractéristiques essentielles de la situation pour tirer des
conclusions valides au problème réel ; il conviendra dès lors de tester ce modèle, et de le modifier au
besoin ; la deuxième étape est celle de la résolution (utilisation des algorithmes, de méthodes mathé-
matique . . . etc.) et ainsi de trouver les ou la solution(s) optimale au problème examiné ; la dernière
étape consiste à interpréter la solution dans le problème réel.
La programmation linéaire, en variables réelles ou entières, est intimement liée à l’histoire de l’optimi-
sation linéaire puisque c’est à la suite de la création de la première méthode de résolution efficace de
programmation linéaire, à savoir l’algorithme du simplexe en 1947. La programmation linéaire consiste
à minimiser (ou maximiser) une fonction linéaire sous des contraintes également linéaires et se modélise
en identifiant : Les variables de décision « inconnues » et les différentes contraintes auxquelles sont
soumises ces variables.
Introduction
5
Chapitre 1
Famille libre
P
On dit que la famille xi est libre si : ∃ (λ1 , ..., λn ) 6= (0, ..., 0) tel que i∈I λi × xi = 0E −→ λi = 0E .
Famille liée
Une famille est dite liée si elle n’est pas libre.
Famille génératrice
On appelle famille génératrice dePE une famille telle que tout élément de E est une combinaison linéaire de cette
famille : ∀x ∈ E ∃(λi ) tel que : x = i∈I λi × xi .
Base
On dit que la famille xi est une base de E si xi est une famille libre et génératrice à la fois.
Application linéaire
Soit E et F deux K-ev (K = R ou C) et f une application de E dans F . On dit que f est linéaire ssi ∀ (x,y) ∈
E2 et ∀ ( λ, µ) ∈ K 2 , f (λx + µy) = λf (x) +µf (y).
Les matrices
On suppose que la matrice A est de taille m×n avec rang(A) = m ≤ n .
rang(A) = nombre maximum de lignes de A linéairement indépendantes.
Aj désigne un vecteur colonne (la j me colonne de A).
Ai désigne un vecteur ligne (la ime ligne de A ).
Chapitre1 Généralités
6
Où A est la matrice des contraintes en plein rang ( ie : ses lignes sont linéairement indépendantes).
Ce PL est écrit sous forme canonique tandis que (P 0 ) est écrit sous forme standard :
0 Ax ≤ b x≥0
(P )
cx = Z(M ax)
La forme canonique avec des contraintes ≤ ou ≥ s’utilise souvent dans la représentation graphique et la forme standard
avec des contraintes égalité s’utilise dans la représentation algébrique.
Remarque :
Ces formes ne servent qu’à simplifier les représentations théoriques ; en réalité un PL peut comporter des contraintes
égalité ou inégalité .
Base
On appelle base de (P ), ou du système linéaire Ax = b, un ensemble J de m indices colonnes ( j ∈ {1...n}), tel que
AJ soit carrée régulière.
Un programme linéaire (P ) est dit écrit sous forme canonique par rapport à la base J, si les deux conditions sui-
vantes sont vérifiées :
Variable de base
Soit B ⊂ {1, . . . , n} un ensemble d’indices avec card(B) = m tel que les colonnes AJ , J ∈ B, de A sont linéairement
indépendantes. Autrement dit, la matrice carrée AB formée des colonnes AJ ,J ∈ B est inversible. On dit que l’ensemble
B des indices est une base.
Chapitre1 Généralités
7
Solution de base
On dit que x = (xB , xH )T est solution de base associée à la base B si xH = 0.
1.2.5 Dualité
On appelle dual d’un PL sous forme canonique :
Si (D) est le Dual d’un PL (P), le PL (P) est appelé programme Primal.
Chapitre1 Généralités
8
Méthode de karmarkar :
Qui est aussi une méthode du point intérieure, qui résout des problèmes en un temps polynomial.
Ainsi la résolution graphique qui est souvent utilisée quand le nombre des variables se restreint à deux qui seront
représentées par deux droites d’un repère orthonormé ; les étapes de cette méthode peuvent être résumées comme
suit :
— Tracer les axes pour les deux variables.
— Tracer les contraintes du problème.
— Déterminer la région réalisable.
— Tracer la fonction objective pour quelques valeurs.
— Conclure pour la solution optimale.
Remarque :
La méthode graphique peut être représentée en trois dimension i.e, le nombre de variables est égal à trois.
Initialisation :
Avant que l’algorithme du simplexe puisse être utilisé pour résoudre un programme linéaire, celui-ci doit être converti
en un programme équivalent où toutes les contraintes sont des équations et toutes les variables sont non négatives.
a. Contraintes de type ≤ :
Pour chaque contrainte i de ce type, on rajoute une variable d’écart ei , tel que ei est une variable positive ou
nulle .
b. Contraintes de type ≥ :
Pour chaque contrainte i de ce type, on retranche une variable d’excédent ei , tel que ei est une variable positive
ou nulle.
Supposons que notre PL est écrit sous forme canonique par rapports à une base réalisable J .
Etape 1 :
Choisir un K tel que C K ≥0 ; s’il existe alors xk devient la variable d’entrée et on procède à l’étape 2.(on suppose que
c’est un problème de maximisation ).
Sinon la solution de base réalisable actuelle est une solution optimale du problème, et l’algorithme se termine.(J base
optimale ,X ∗ est une solution de base optimale et Z(X ∗ )=α).
Etape 2 :
Si aK
I < 0 ∀ i ⊂ {1, . . . , n} alors le problème n’est pas borné inférieurement et l’algorithme se termine.
Sinon on calcule M in16i6m { abki }) et on le note par ( abK
L
).
i L
la variable de base aK
L dans la L ième ligne et la k ième colonne , devient la variable de sortie. On procède à l’étape 3.
Etape 3 :
On effectue un pivot sur l’élément aK
L afin de déterminer une nouvelle forme canonique avec laquelle on retourne à
l’étape 1.
0
(iii)- c j = cj –( ck .ajL ) afin de rendre le coût relatif de xk égal à 0.
Chapitre 2
2.1 introduction
L’algorithme du simplexe a été développé au fil du temps par les mathématiciens pour s’adapter aux cas particuliers
de la programmation linéaire et les modèles mathématiques correspondant à ces cas, comme les programmes linéaires
à variables entières, bornées . . . etc. Quelques algorithmes sont souvent utilisés pour éviter le calcule long qu’impose
l’algorithme du simplexe, on en citera dans ce rapport quelque uns, « voire principalement la méthode du simplexe en
variable bornées PLVB » :
Algorithme révisé du simplexe : Cet algorithme n’apporte aucun changement à l’algorithme du simplexe, c’est
sa mise en œuvre qui a été révisé en un nombre finis d’étapes. L’intérêt de cet algorithme est de permettre de travailler
à chaque itération avec les données originales du problème, ceci permet d’éviter la propagation des erreurs d’arrondi.
Algorithme du big M : Cet algorithme nécessite l’utilisation de variables artificielles et consiste à la fusion des
deux phases de l’algorithme du simplexe en un seul algorithme.
Algorithme primal en nombres entiers : Utilisé quand les variables sont de nature entière, cet algorithme
utilise la méthode des coupes " inéquation de type ax ≤ d" vérifiée par l’ensemble des solutions réalisables du PL ».
Algorithme primal dual du simplexe : Cet algorithme s’applique dans le cas où le PL n’est ni primal ni dual
réalisable.
Méthode de la contrainte artificielle : C’est l’algorithme dual appliqué sur un PL dual réalisable.
Chapitre2 Généralités
11
Remarque 1 : On peut facilement se ramener à un PL (P 0 ) où les variables sont positives et bornées supérieurement
en effectuant un changement de variables comme suit : x0i =xi -αi
D’où le PL suivant :
A (x0i + αi ) = b
0
(P ) C (x0i ) = Z(max) − C.αi
0 ≤ x0i ≤ βi − αi βi > αi ∀ i = 1, 2, ..., n.
A (x0i + αi ) = b0
0
(P ) C (x0i ) = Z(max) − C.αi
0 ≤ x0i ≤ βi − αi βi > αi ∀ i = 1, 2, ..., n.
Remarque 2 : Une façon de résoudre ce problème est de le ramener sous une forme standard en introduisant des
variables d’écart yi , comme suit :
Ax = b
xi + yi = βi
(P )
C x = Z(max)
xi , yi ≥ 0 ∀ i = 1, 2, ..., n.
Ce problème est un PL sous forme standard, ayant m+n contraintes et 2n variables il peut être résolu par la méthode
usuelle du simplexe mais vu la taille du problème « très grande », sa résolution s’effectue en un grand nombre
d’itérations et pour cela il existe une adaptation de la méthode du simplexe à ce type de problèmes qui traite les
contraintes des bornes implicitement et avec un minimum d’itérations. Comme dans l’algorithme usuelle du simplexe,
nous choisirons une variable xj hors base (c’est-à-dire valant 0 ou βj ) et nous la ferons varier (si xj =βj ,xj va diminuer
et si xj =0, xj va augmenter) jusqu’à ce que l’un des trois événements suivants se produise :
— 1) xj varie jusqu’à sa borne opposée.
— 2) l’une des variables de base décroit jusqu’à 0.
— 3) l’une des variables de base augmente jusqu’à sa borne sup β.
Notons que dans l’algorithme du simplexe, seul le cas (2) se produisait.
La matrice B est appelée matrice de la solution de base, les matrices N1 et N2 sont respectivement celles des bornes
inférieure et supérieure, xB sont les variables de base, et xN 1 et xN 2 sont les variables hors base à leurs borne inférieure
et supérieure respectivement ; si de plus αB <xB <βB alors x est appelée solution réalisable de base non dégénérée.
Pour trouver une solution de base, on fixe chaque variable hors base soit à sa borne inférieure (ici 0) ou à sa borne
supérieure (βj ). Ainsi, pour chaque base J, il existe 2n+m solutions de base.
Proposition
Une base J est dite réalisable si elle admet au mois une solution de base réalisable, en d’autres termes :
S’il existe une solution X associé à J telle que : αj ≤ xj ≤ βj ∀ i = 1, 2, ..., n.
∀j ∈ J¯ : (Cj ≤ 0 et Xj = 0) et (Cj ≥ 0 et Xj = βj )
« On effectue le minimum des rapport pour rester dans le domaine réalisable des bornes des variables ».
Et on calcule θ = min{θ1 , θ2 , βs } « pour augmenter le plus possible la fonction objective ».
Si θ = θ1 changement de base :
La variable rentrante prend la valeur de θ.
La variable sortante prend sa borne inférieure (ici 0 ).
Xs = 0
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ
Si θ = θ2 changement de base :
La variable rentrante prend la valeur de θ.
La variable sortante prend sa borne supérieure (iciβs ).
Xs = βs
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ
On calcule θ = max{θ1 , θ2 , } .
Si θ = θ1 changement de base :
La variable rentrante prend la valeur de θ.
La variable sortante prend sa borne inférieure (ici 0 ).
Xs = 0
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ
Si θ = θ2 changement de base :
La variable rentrante prend la valeur de θ.
La variable sortante prend sa borne supérieure (iciβs ).
Xs = βs
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ
Réitérer jusqu’à l’obtention d’une base optimale vérifiant les critères d’optimalités su-cité .
Chapitre2 Organigramme
16
2x1 + 4x2 + x3 = Z(max)
2x1 + x2 + x3 ≤ 10
x1 + x2 − x3 ≤ 4
(P LV B)
0 ≤ x1 ≤ 4
0 ≤ x2 ≤ 6
0 ≤ x3 ≤ 3
Résolution :
Itération 1 :
Pour se ramener à la forme initial du PL de l’algorithme ,on fixe les variables hors base à leurs bornes inférieure :
x1 = x2 = x3 = 0 .
NB :
I=borne inférieure.
S=borne supérieure.
x4 et x5 sont les variables de base et ainsi la solution de base associée est : (0,0,0,10,4)
cs = max{2, 4, 1} = 4 , s=2
A2i > 0 on calcule θ1 :
b2
θ1 = min{ Ai2 } = min{10, 4}=4.
i
θ = min{θ1 , S} = min{4, 6} = 4 = θ1 .
changement de base (x2 rentre dans la base x5 sort) :
x
2 = θ1 = 4 , x5 =
I=0.
x4 10 10 1 6
= − A2i . θ = − .4 = .
x5 4 4 1 0
−Ẑ=-Z - Cˆ2 =-0-(4.4)=-16.
Itération 2 :
Itération 3 :
Itération 4 :
∀j ∈ J¯ : (Cj ≤ 0 et Xj = 0) et (Cj ≥ 0 et Xj = Sj )
Remarque :
Il nous faudra 6 itérations par la méthode du simplexe habituelle appliquée sur cet exemple.
Chapitre 3
3.1 Introduction
On traite dans ce chapitre la version programmée (application) de la méthode su-citée à titre explicative et on
trouve aussi le code source de notre application élaborée sous Matlab.
Matlab pour « MATrix LABoratory » , est un logiciel conçu pour fournir un environnement de calcul numérique de
haut niveau il est particulièrement performant pour le calcul matriciel car sa structure de données interne est basée
sur les matrices.
Fonctions secondaires :
Fonctions colonne-pivot : Cette fonction retourne la maximum « S » des Ci on appliquant le critère de recherche
de la colonne pivot ,ainsi l’indice colonne « s ».
Fonctions cas-1 et cas-2 : Ces deux fonctions on pour but le calcul de θ dans le premier et le deuxième cas
énoncés dans l’algorithme et retournent « R1 » le maximum des θ1 , « R2 » le maximum des θ2 , « R » le maximum
des { θi ∀ i = 1, 2 } ainsi l’indice colonne « r ».
Fonction pivotage : Celle ci retourne la matrice « T » après avoir effectué un pivotage sur la matrice « M »
autour du pivot d’indice « r », « s ».
Où x4 , x5 sont des variables d’écart, leurs bornes supérieure doivent être calculées comme suit :
x4 ≤ 10 − 2(α1 ) − 4(α2 ) − 1(α3 ) = 10 − 2(0) − 4(0) − 1(0) = 10 =⇒ x4 ≤ 10.
x5 ≤ 4 − 1(α1 ) − 1(α2 ) + 1(β3 ) = 3 − 1(0) − 1(0) + 1(4) = 7 =⇒ x5 ≤ 7.
Conclusion
En conclusion pour ce travail, la méthode du simplexe à valeurs bornées se résume en étant un issu de la méthode
clé de la programmation linéaire « méthode du simplexe », initiée en premier lieu, qui consiste à la recherche d’une
solution en parcourant un nombre optimal de bases d’une façon à améliorer la fonction objective jusqu’à épuisement,
c’est à dire lorsqu’il n’est plus possible d’améliorer la valeur de la fonction objective .
L’algorithme du simplexe à variables bornées permet de résoudre les programmes linéaires en un temps minimal
et moins de calcules qu’avec le simplexe habituel, lorsqu’il s’agit de variables bornées .
Le code source de l’algorithme du simplexe en variables bornées a été mis au point avec le langage MATLAB version
2014.
L’implémentation de l’exemple traité antérieurement dans le deuxième chapitre a donné lieu aux résultats. Ce fait a
été reconfirmé en faisant appel au langage CPLEX.
Ce travail consiste à examiner et tester notre modeste connaissance mais aussi il nous a permis de les approfon-
dir.
Pour atteindre cet objectif nous avons été amenés à exploiter des techniques de la recherche opérationnelle et aussi les
outils que nous avons appris durant notre cursus.
En dernier, nous souhaitons que ce présent travail soit bénéfique pour l’ensemble des lecteurs de ce projet.
Conclusion
21
Annexe
Annexe
22
Annexe
23
Bibliographie
[1] G.B. Dantzig ,Upper bounds, secondary constraints, and block triangularity in linear programming, Econometrica
23, (1955) 174 – 183.
[2] M.S. Bazaraa, J.J. Jarvisand H.D. Sherali, Linear Programming and Network Flows, 3rd edition, Wiley-
Interscience, 2005.(p217)
[3] D. G. LuenbergerLinear and Nonlinear Programming, 2nd edition, Addison-Wesley, 1984.
[4] F.S. Hillierand G.J. Lieberman, “Introduction to Operations Research”, Mc Graw Hill (2005), Section 7.3
[5] G.B. Dantzig, A. Orden and P. Wolfe The generalized simplex method for minimizing a linear form under
linear inequality constraints, Pacific Journal of Mathematics 5, (1955) 183 – 195.
[6] R.G. Bland."New Finite Pivoting Rules for the Simplex Method". Mathematics of Operations Research, vol. 2
(1977) 103 - 107
Bibliographie