Vous êtes sur la page 1sur 23

République Algérienne Démocratique et Populaire

Ministère de l’enseignement Supérieur et de la Recherche Scientifique


Université des Sciences et de la Technologie Houari boumediene

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 :

simplexe en variables bornées

• Présenté par : ELBAR Sarrah


HEDDIA Bilel

• Encadré par : Mme Aoudia

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

1 Généralités sur la programmation linéaire et l’algèbre linéaire 5


1.1 Notions de base sur l’algèbre linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Définitions et concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Notions de base de la programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Solution réalisable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.3 Notion de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4 Solution optimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.5 Dualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.6 Solution dual réalisable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.7 Solution dégénéré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Méthodes de résolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Méthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Algorithme du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Simplexe en variables bornées 10


2.1 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Définitions et concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Base réalisable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Critère d’optimalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Algorithme du simplexe en variables bornées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Organigramme de la méthode du simplexe en variables bornées . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Exemple numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Implémentation sur langage de programmation 18


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Déroulement du code source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Traitement d’un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

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.

En ce travail se résumera la méthode du simplexe en variables bornées pour la résolution de pro-


blèmes linéaires qui est toutefois une modification de l’algorithme du simplexe « méthode principale
de résolution de problèmes linéaires ».

Introduction
5

Chapitre 1

Généralités sur la programmation linéaire et


l’algèbre linéaire

1.1 Notions de base sur l’algèbre linéaire


Les méthodes et algorithmes de résolution de problèmes de la programmation linéaire sont basés sur les notions
fondamentales de l’algèbre linéaire et pour cela on précisera quelques rappels.

1.1.1 Définitions et concepts


Combinaison linéaire
Soit E un K-espace vectoriel(ev) et IPun ensemble, {xi ∀i ∈ I} une famille d’éléments de E. On appelle combinaison
linéaire de la famille xi , l’expression : i∈I λi × xi avec λi ∈ K.

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

1.2 Notions de base de la programmation linéaire


1.2.1 Programme linéaire
Un programme linéaire est la version mathématique obtenu après PN la modélisation d’un problème de recherche
opérationnel , il est sous forme d’un ensemble de m contraintes j=1 aij Xj (≤, ≥, =) bi , et d’une fonction à
optimiser :
f(x1 , . . . xn )= N j
P
j=1 xj × c à minimiser ou maximiser tel que x1 . . . xn est un ensemble de n variables réelles.

Étant donné un programme linéaire « PL » (P) :



Ax = b x≥0
(P )
cx = Z(M ax)

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é .

1.2.2 Solution réalisable


On appelle solution réalisable tout vecteur x=(x1 , ...xn ), qui satisfait les contraintes du PL i.e. tel que Ax = b et
x ≥0.

1.2.3 Notion de base


Soit A une m × n-matrice, b un m-vecteur colonne et C un n-vecteur ligne.
Considérons le programme linéaire (P ) énoncé ci-dessus .

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 :

1) AJ est à est une permutation prés de colonnes de la matrice unité .


2) Le vecteur C J = 0.

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

— Les variables xB = (xJ , J ∈ B) sont appelées variables de base.


— Les variables xH = (xJ , J ∈
/ B) sont appelées variables hors-base.

Solution de base
On dit que x = (xB , xH )T est solution de base associée à la base B si xH = 0.

Solution de base réalisable


Si x = (xB , xH )T est une solution de base réalisable alors xH = 0 et xB = A−1
B b.

1.2.4 Solution optimale


Soit J une base réalisable de (P ), problème à maximiser (resp à minimiser), si le vecteur coût relatif à J est négatif
(resp positif) ou nul alors la solution de base associée est une solution optimale.

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.

1.2.6 Solution dual réalisable


C’est une solution de base irréalisable qui satisfait les critères d’optimalité.

1.2.7 Solution dégénéré


Graphiquement, on appelle solution dégénérée le point où plusieurs contraintes concourent (un nombre supérieur
ou égale à trois contraintes). Un programme linéaire est dit dégénéré si une ou plusieurs variables dans la base optimale
sont nulles. Dans la résolution graphique ce problème est facile à résoudre, mais la méthode du simplexe peut rencontrer
des difficultés.

1.3 Méthodes de résolution


Il existe divers méthodes de résolution de problèmes d’optimisation linéaire voire principalement la méthode du
simplexe ainsi d’autres qu’on citera quelque uns :
Méthode du point intérieur :
Consiste à ce que la solution candidate courante ne suit pas les bornes du domaine réalisable comme dans l’algorithme
du simplexe, mais approche la solution optimale de manière asymptotique.

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.

1.3.1 Méthode du simplexe


Découverte par G.Dantzig en 1947 ; cet outil algorithmique fut un succès imprévisible sur divers secteurs de la vie,
pour résoudre tous les problèmes pouvant se modéliser comme des programmes linéaires.
L’algorithme du simplexe est la méthode basique de résolution de PL ; divers modifications sont appliquées à cet
algorithme au fil du temps, par exemple la méthode des deux phases ; l’astuce de cette méthode consiste à ajouter des
variables de base « artificielles » dans les équations où il n’y a aucune variable candidate (lorsque des contraintes de
signe ≥ ou = sont présentes) ;Cette opération est la première phase de l’algorithme .
La 2me phase est l’application direct de l’algorithme du simplexe ; ainsi l’algorithme dual de simplexe que nous utilisons
lorsque on a une solution dual réalisable.

1.3.2 Algorithme du simplexe


Le principe de l’algorithme du simplexe consiste à effectuer une série de pivotages(échelonnement de Gausse) sur
la matrice des coefficients de manière à écrire le PL sous forme canonique par rapport aux bases jusqu’à l’obtention
d’une base optimale.

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

Chapitre1 Méthode du simplexe


9

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.

Comment Réaliser un pivotage ? (échelonnement par méthode de gausse)


(i)- on divise la L ième ligne par aK k
L afin d’obtenir un coefficient de x égal à 1 dans cette ligne.
0 aL 0 bL
aLK = j
aK
, 1 6 j 6 n et bL = aK
.
L L
0
(ii)- aij = aji – (aK j k
i .aL ) tq i 6= L afin d’obtenir un coefficient de x égal à 0 dans la ième ligne.

0
(iii)- c j = cj –( ck .ajL ) afin de rendre le coût relatif de xk égal à 0.

Chapitre1 Algorithme du simplexe


10

Chapitre 2

Simplexe en variables bornées

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.

Méthode du simplexe en variables bornées :


Cette méthode permet de résoudre un problème de programmation linéaire à variables bornées, sans faire apparaître
explicitement les contraintes de bornes, ceci par une simple modification de la procédure de pivotage.
Appliqué sur des PL de la forme :

 Ax = b
(P ) C x = Z(max)
αi ≤ xi ≤ βi βi > αi ∀ i = 1, 2, ..., n.

Chapitre2 Généralités
11

αi et βi sont respectivement les bornes inférieure et supérieure de xi .

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.

Ainsi, le problème devient, avec : b0 = b − A × αi

 A (x0i + αi ) = b0

0
(P ) C (x0i ) = Z(max) − C.αi
0 ≤ x0i ≤ βi − αi βi > αi ∀ i = 1, 2, ..., n.

Donc tout PLVB peut être ramené à la forme suivante :



 Ax = b
(P ) C x = Z(max)
0 ≤ xi ≤ β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.

Chapitre2 Méthode du simplexe en variables bornées


12

2.2 Définitions et concepts


2.2.1 Base réalisable
Considérons le système Ax = b et α ≤ x ≤ β où A est une m × n-matrice de rang m.
Notons x∗ la solution de base de ce système ,la matrice A peut être partitionnée en [B, N1, N2],où la matrice B (carrée)
est de rang m, telle qu’avec x partitionné comme suit (xB ,xN 1 ,xN 2 ) :

 xN 1 = αN 1
x = βN 2
 N2
xB = B −1 .b -B −1 .N 1.αN 1 - B −1 .N 2.αN 2

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.

2.2.2 Critère d’optimalité


Une solution de base réalisable relative à la base J est optimale si :

∀j ∈ J¯ : (Cj ≤ 0 et Xj = 0) et (Cj ≥ 0 et Xj = βj )

2.3 Algorithme du simplexe en variables bornées


Initialisation :
L’application de cet algorithme nécessite la connaissance d’une solution réalisable de base, au départ.
Pour J une base non optimale on prend comme variable hors base Xs candidate à devenir une variable de base celle
qui vérifie : Cs =max { max(Cj ) tq Xj =0 , max(-Cj ) tq Xj = βj } ∀j ∈ J. ¯
Pour trouver une solution de base on fixe chaque variable hors base soit à sa borne inférieure (ici 0) ou à sa borne
supérieure (ici βj ).
Trouver une base réalisable en appliquant la 1ere phase de l’algorithme du simplexe,Si le PLVB n’a pas de base réali-
sable, terminer .
Sinon deux cas se présentent :

1er cas : { Cs > 0 et Xs = 0 , Xs doit croitre } :


On construit les ensembles I1 et I2 : ∀Xij ∈ Aij
I1 = {i : Asi > 0} et calculer :
n
Ui
o Ur
θ1 = min Asi =
Asr

I2 = {i : Asi < 0} et calculer :


n
βij −U i
o βij − U r
θ2 = min −Asi =
−Ars

« 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 ».

Chapitre2 Algorithme du simplexe en variables bornées


13

Si θ = βs (pas de changement de base seule la solution change) :


X atteint sa borne supérieure elle ne rentre pas dans la base.
Pour se mettre dans les conditions habituels du simplexe on fait le changement de variables suivant : Xs0 = βs − Xs ,
et on n’effectue pas de pivotage.

 Xs = βs
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ

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 .θ

2ème cas : { Cs < 0 et Xs = βs , Xs doit décroitre } :


On construit les ensembles I1 et I2 : ∀Xij ∈ Aij
I1 = {i : Asi > 0} et calculer :
n
Ui
o Ur
θ1 = max Asi =
Asr

I2 = {i : Asi < 0} et calculer :


n
βij −U i
o βij − U r
θ2 = max −Asi =
−Ars

On calcule θ = max{θ1 , θ2 , } .

Si θ = 0 (pas de changement de base seule la solution change) :



 Xs = 0
Xij = Ui − Asi .θ
−Z = −Z − Ĉs .θ

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 .θ

Chapitre2 Algorithme du simplexe en variables bornées


14

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 Algorithme du simplexe en variables bornées


15

2.4 Organigramme de la méthode du simplexe en variables bornées

Chapitre2 Organigramme
16

2.5 Exemple numérique


Enoncé :



 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 :

En rajoutant les variables d’écarts x4 , , x5 , xi ≥ 0 ∀ i = 4, 5 on obtiens le tableau suivant :


 
xi x1 x2 x3 x4 x5 b
 x4 2 1 1 1 0 10 

 x5 1 1 −1 0 1 4 
 (2.1)
Z 2 4 1 0 0 0

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 .

On obtiens le tableau suivant :

xi xI1 xI2 xI3 x4 x5 b


 
 x4 2 1 1 1 0 10 

 x5 1 1 −1 0 1 4 
 (2.2)
Z 2 4 1 0 0 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 :

Chapitre2 Exemple numérique


17

xi xI1 x2 xI3 x4 xI5


 
b
 x4 1 0 2 1 −1 6 
  (2.3)
 x2 1 1 −1 0 1 4 
Z −2 0 5 0 −4 −16

La solution de base associée : (0,4,0,6,0)


cs = max{−2, 5, −4} = 5 , s=3
A34 > 0 on calcule θ1 : θ1 =3
A32 < 0 on calcule θ2 : θ2 = 6−41 =2.
θ = min{θ1 , θ2 , S} = min{3, 2, 3} = 2 = θ2 .
changement de base (x3 rentre dans la base x2 sort) :
x3 = θ = 2 , x2 = S = 6 .
         
x4 6 3 6 2 2
= − Ai . θ = − .2 = .
x2 4 4 −1 6
−Ẑ=-Z - Cˆ3 =-16-(5.2)=-26.

Itération 3 :

xi xI1 xS2 x3 x4 xI5


 
b
 x4 3 2 0 1 1 2 

 x3 −1 −1 1 0 −1
 (2.4)
2 
Z 3 5 0 0 1 −26

La solution de base associée : (0,6,2,2,0)


cs = max{3, −5, 1} = 3 , s=1
A14 > 0 on calcule θ1 : θ1 = 32 .
A13 < 0 on calcule θ2 : θ2 = 3−2 1 =1.
θ = min{θ1 , θ2 , S} = min{ 23 , 1, 4} = 32 = θ1 .
changement de base (x1 rentre dans la base x4 sort) :
x1 = θ = 32 , x4 = I = 0 .
         
x4 2 1 2 3 2 0
= − Ai . θ = − .3 = 8 .
x3 2 2 −1 3
−Ẑ=-Z - Cˆ3 =-26-3. 32 =-28.

Itération 4 :

xi x1 xS2 x3 xI4 xI5


 
b
 x1 1 2 1 1 2
3 0 3 3 3


 x3 0 − 1 1 2 8
 (2.5)
3 1 3 − 3 3

Z 0 3 0 −1 0 −28
La solution de base associée :( 23 ,6, 83 ,0,0).
J={1, 3} est une base optimale ,les critères d’optimalités sont vérifiés :

∀j ∈ J¯ : (Cj ≤ 0 et Xj = 0) et (Cj ≥ 0 et Xj = Sj )

(Cˆ2 = 3 , x2 = S = 6) et (Cˆ4 = −1 , x4 = I = 0).

Remarque :
Il nous faudra 6 itérations par la méthode du simplexe habituelle appliquée sur cet exemple.

Chapitre2 Exemple numérique


18

Chapitre 3

Implémentation sur langage de programmation

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.

3.2 Déroulement du code source


Programme principal :
La fonction principale surnommée « simplexe-brn » ayant comme paramètres : ( A « matrice des contraintes », b «
vecteur colonne du second membre », c « vecteur coût », x « solution de base réalisable », p « valeur de la fonction
objective à la solution de base x », BI « vecteur des bornes inférieures », BS « vecteur des bornes supérieures », base
« la base réalisable de départ » ; retourne la solution et la base optimale x, ainsi la valeur de la fonction objective à
l’optimum « z ».
Cette fonction fait appel à cinq autres fonctions secondaires dont on citera leurs fonctionnalités.

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 ».

Fonction xbase : Cette fonction retourne la solution « x » dans la base donnée .

Chapitre3 Implémentation sur Matlab


19

3.3 Traitement d’un exemple


Pour faciliter la tâche à utilisateur, nous avons créé une interface graphique, dans laquelle il puisse remplir les don-
nées de son problème (A, b, c, la base initial, la solution réalisable x, la valeur initial de z associé à la base réalisable
x, les bornes inférieure et supérieures ) .
Ce programme résout les problèmes d’optimisation ayant une fonction objective à maximiser , si l’utilisateur souhaite
introduire un PL à minimiser le vecteur coût (C) doit être multiplié par -1.
La matrice A est associée au programme linéaire sous sa forme standard.
Les bornes inférieures sont toujours égale à zéro ainsi que les bornes supérieures doivent être calculées selon la méthode
suivante.
On prenant l’exemple su-cité :


 2x1 + 4x2 + x3 = Z(max)
 2x + x + x ≤ 10


 1 2 3
x1 + x2 − x3 ≤ 4

(P LV B)

 0 ≤ x1 ≤ 4
0 ≤ x2 ≤ 6




0 ≤ x3 ≤ 3

On mets le PL ci-dessus sous sa forme standard, on obtient :




 2x1 + 4x2 + x3 = Z(max)



 2x1 + x2 + x3 + x4 = 10



 x1 + x2 − x3 + x5 = 4
0 ≤ x1 ≤ 4

(P LV B)

 0 ≤ x2 ≤ 6
0 ≤ x3 ≤ 3




0 ≤ x4




0 ≤ x5

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.

Chapitre3 Traitement d’un exemple


20

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

Figure 3.1 – Exemple implémenté avec Matlab

Annexe
22

Figure 3.2 – Exemple implémenté avec Matlab

Figure 3.3 – Exemple implémenté avec Cplex

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