Zidane, Thanina
Zidane, Thanina
Zidane, Thanina
Thème
Optimisation d’un problème de programmation
linéaire en nombres entiers par la méthode
Branch and Bound
Promotion
2016-2017
Résumé :
Quelques problèmes de la vie courante peuvent être modélisés comme des
problèmes combinatoires. Dans notre travail, nous nous intéressons à la
résolution des problèmes de programmation linéaire en nombres entiers par la
méthode : " Séparation et Évaluation", "Branch and Bound".
Mots clés :
Programmation linéaire, programmation mathématique, simplexe, dual du
simplexe, la méthode Branch and Bound, programmation en nombres entiers .
Table des matières
Remerciements 2
Dédicaces 3
Introduction générale 4
1 Définitions et Généralités 2
1.1 Quelques définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 La programmation mathématique . . . . . . . . . . . . . . . . . . . . 2
1.1.2 La programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.3 Forme générale d’un programme linéaire . . . . . . . . . . . . . . . . 3
1.1.4 Polyèdre et polytope . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.5 Optimum global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.6 Relaxation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Classification des problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Les contraints et l’objectif . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 La complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Méthodes d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Les méthodes exactes . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Les méthodes approchées(heuristiques) . . . . . . . . . . . . . . . . . 8
1.3.3 Comparaison entre les méthodes exactes et les méthodes approchées 9
2 Méthodes de résolution 10
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Résolution graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Méthode du Simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 L’algorithme du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Méthode dual du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Principe de la dualité . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 L’algorithme dual du simplexe . . . . . . . . . . . . . . . . . . . . . 17
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Conclusion générale 39
Bibliographie 40
2
Remerciements
Nous remercions tout d’abord DIEU tout puissant de nous avoir donné suffisamment
de force et surtout de courage et de persévérance pour mener notre travail à terme.
Nous tenons a adresser toutes les reconnaissances et notre gratitudes a notre promotrice :
"Abderehmani Amel" , ses précieux conseils et son suivi.
Que les membres du jury trouvent ici nos remerciements les plus vifs pour avoir
aimablement accepté de juger notre travail.
Sans oublier d’exprimer notre reconnaissance et gratitude à tous nos enseignants durant
notre cursus au département Mathématiques.
Enfin, nous tenons a remercier tous ceux qui ont contribué de près ou de loin a la
réalisation de ce travail.
Kahina et Thanina
3
Dédicaces
Kahina
Je dédie ce travail à :
La mémoire de mon très cher KHALI BEZZAOU SADDEK, que dieu l’accueille dans son
éternel paradis.
Ma très chère mère, que dieu lui accord une longue vie.
Mon petit cher frère YOUVA à qui je souhaite la réussite au baccalauréat.Que dieu le
protège .
Ma petite sœur THINHINANE, que j’adore énormément.
Tous mes amis et camarades, que j’ai connu tout au long de mes études (lycée
BENI-DOUALA ; la fac et la résidence universitaire M.M.T.O).
Ma chère binôme et toute sa famille .
Thanina
4
Introduction générale
Dans notre travail, nous nous intéressons à la résolution des problèmes de programmation
linéaire en nombres entiers par la méthode :
" Séparation et Évaluation " , "Branch and Bound" .
Nous présentons les méthodes de résolutions de problèmes d’optimisation proposées dans la
littérature. Notre travail est devisé en trois chapitres :
1
Chapitre 1
Définitions et Généralités
– La programmation linéaire :
Un problème linéaire (PL) est un problème d’optimisation maximisant ou minimisant
une fonction objectif linéaire à n variables de décision supposées non négatives soumises
à un ensemble de contraintes exprimées sous forme d’équations ou inéquations linéaires.
– La programmation dynamique :
Adaptée aux problèmes décisionnels possédant une propriété de sous-optimalité, c’est-
à-dire que des décisions bonnes pour le problème global sont aussi bonnes pour des
sous-problèmes.
2
1.1.2 La programmation linéaire
Le problème le plus simple de la programmation mathématique est celui de programma-
tion linéaire.
La programmation linéaire peut être définie comme un outil mathématique qui permet d’ana-
lyser divers types de situations dans lesquelles nous retrouvons une fonction linéaire d’un
certain nombre de variables, appelée Fonction Objectif que l’on désire optimiser ( maximiser
ou minimiser).
Ces variables appelées variables de décision (dont on veut déterminer les valeurs optimales)
sont soumises à des contraintes qui sont linéaires.[3]
3. La fonction objectif :
On associe à chaque variable de décision du modèle correspond ,un coefficient éco-
nomique indiquant la contribution unitaire de la variable correspondante à l’objectif
poursuivi. Par la suite, on pourra en déduire la fonction objectif que l’on veut optimiser
(soit à maximiser soit à minimiser).
3
(1,3)contrainte de non-négativité.
Remarque :
• Un programme linéaire est dit sous forme canonique si toutes les inégalités sont dans le
même sens, les variables de décision sont positives ou nulles et les contraintes d’égalité en
sont absentes.
n
P
opt z= max(minZ) = cj x j
j=1
n
(P L) P
aij xj ≥ bi i= 1,...,m
j=1
xj ≥ 0 j= 1,...,n
ou sous la forme :
n
P
opt z= cj x j
j=1
n
(P L) P
aij xj ≤ bi i= 1,...,m
j=1
xj ≥ 0 j= 1,...,n
• Un programme linéaire est dit sous forme standard s’il est sous forme :
n
P
optz= cj x j
j=1
n
(P L) P
aij xj = bi i= 1,...,m
j=1
xj ≥ 0 j= 1,...,n
• Toute inégalité ≥ (resp ≤) peut être transformée en égalité ,on rajoutant des variables
d’écart.
• Toute inégalité ≥ est équivalente à une inégalité ≤ en multipliant ses termes par (-1).
4
W est non convexe,car les points P et P’ sont les extrémités d’un segment dont au
moins un point n’appartient pas à W.
2. Polyèdre :
Un polyèdre P ⊂ Rn est l’ensemble des solutions d’un système fini d’inégalités
linéaires .
P={x ∈ Rn /Ax ≤ b}.
C’est l’intersection d’un nombre fini de demi-espaces
H− ={x ∈ Rn /ax ≤ b}= {x ∈ Rn / ai1 x1 + ... + aij xj + ... + ain xn ≤ bi }.a ∈ Rn , b ∈ Rn
3. polytope :
Un polytope convexe est un polyèdre convexe et borné .
5
La figure suivante représente une courbe représentant les optimums locaux et les optimums
globaux d’une fonction d’évaluation. [2]
1.1.6 Relaxation
La relaxation d’un problème P (i) consiste à l’élargir en un autre problème tel que :
( (
(i) Fi = minF (x) FiR = minF (x)
P ⇒ (P R(i) )
x ∈ Z+n n
x ∈ R+
De sorte que FiR ≤ Fi pour un problème de minimisation et respectivement FiR ≥ Fi pour
un problème de maximisation.
En général dans notre problème ,la relaxation linéaire (PR)de (P) est obtenue par relâche-
ment des contraintes d’intégrité .[4]
6
n
P
opt Z= max(minZ) = cj x j
j=1
n
aij xj S bi , i ∈ {1, ..., m}
P
(P L) j=1
∀j ∈ J1 , xj ∈ R+ , j ∈ {1, ..., n}
∀j ∈ J2 , xj ∈ N, j ∈ {1, ..., n}
J = J1 ∪ J2 , card(J) = n.
1.2.2 La complexité
Afin de mesurer la difficulté d’un problème donné et la comparer avec celles des autres
problèmes , nous pouvons calculer la complexité algorithmique de chacun d’entre eux.
La complexité d’un problème donné est discutée sur deux cotés :
Le coté temporel "complexité temporelle".
Le coté spatial "complexité spatiale".
Bien que la théorie de la complexité se concentre sur des problèmes de décision, elle peut
être étendue aux problèmes d’optimisation ,elle classe les problèmes selon leurs complexités
en deux classes principales :
– La classe P (Polynomial time) :
Un problème est dit polynomial s’il existe un algorithme polynomial pour le résoudre,la
classe P est une classe d’algorithme efficace et facile à résoudre .
Exemple :le problème du plus court chemin .
– La classe NP (Non déterministe Polynomial time) :
Un problème P est dit NP s’il peut être résolu par une machine de Turing non déter-
ministe .
Exemple :la recherche d’un cycle hamiltonien .
7
En outre, la classe NP partage les problèmes de la classe NP en deux sous classes :
– La classe NP-complet :
Un problème est dit NP-complet lorsqu’il est dans la classe NP et si on peut le ramener
par une transformation polynomial à un problème de la classe NP.
Exemple :problème de voyageur de commerce .
– La classe NP-difficile :
Un problème P est dit NP-difficile s’il existe une réduction polynomial de problème de
satis fiabilité à P .
Exemple :les PLNE (problèmes linéaire en nombres entiers ).[2]
8
1.3.3 Comparaison entre les méthodes exactes et les méthodes ap-
prochées
1. Les méthodes exactes :
– Elles trouvent la solution optimale.
– Elles peuvent prendre un nombre exponentiel d’itérations.
2. Les heuristiques :
– Elles produisent une solution sous-optimale.
– Elles ne produisent pas de mesure de qualité de la solution.
– En général, elles ne prennent pas un nombre exponentiel d’itérations.
9
Chapitre 2
Méthodes de résolution
2.1 Introduction
La résolution de différentes sortes de problèmes rencontrés dans notre vie quotidienne a
poussé les chercheurs à proposer des méthodes de résolution et à réaliser de grands efforts
pour améliorer leurs performances en termes de temps de calcul nécessaire et de la qualité de
la solution proposée. Au fil des années, de nombreuses méthodes de résolution de problèmes
de différentes complexités ont été proposées.
Les méthodes de résolution exactes sont nombreuses et se caractérisent par le fait qu’elles
permettent d’obtenir une ou plusieurs solutions dont l’optimalité est garantie.
Parmi ces méthodes, on peut citer la méthode graphique ,l’algorithme du simplexe et l’algo-
rithme dual du simplexe.
– Établir une échelle de mesure pour chacun des axes appropriés à sa variable associée.
10
des variables de décision .
– Remarquer qu’une inéquation précise une région qui sera le demi-plan limité par la ligne
droite, qui représente la contrainte qu’on considère comme une contrainte d’égalité alors
que si une équation linéaire détermine une région c’est la ligne droite, elle-même .
– L’intersection de toutes les régions détermine la région ou l’espace faisable (qui est un
ensemble convexe).
Si non , si il n’y a pas de point qui satisfait toutes les contraintes simultanément de
sorte que le problème ne sera pas résolu,on dit que le problème est infaisable .
– Déterminer les points extrêmes ou les sommets du polyèdre qui forme la région faisable.
– Évaluer la fonction objectif à chaque sommet et celui qui maximise la fonction objectif
définie la solution optimale (pour un problème de maximisation) .[8]
• Exemple 01 :
Soit le problème suivant :
max Z= 6x1 + 4x2
3x1 + 9x2 ≤ 81
(P ) 4x1 + 5x2 ≤ 55
≤ 20
2x1 + x2
x1 , x2 ≥ 0
11
•Notations :
JB :Ensemble des indices de variables de base.
JH :Ensemble des indices hors base.
AB :Sous matrice de A d’ordre m*m.
AH :Sous matrice de A d’ordre m*(n-m).
min f (x)=− max(−f (x)).
x∈X x∈X
12
4. Calculer les Ej = zj − cj , tq : Zj = CBT ∗ A−1
B .
(critère d’optimalité).
1
9. Multiplier la ligne du pivot par le rapport : .
alk
• Exemple 02 :
On prend un exemple et on applique le simplexe .
13
max Z= 30x1 + 50x2
3x1 + 2x2 + x3 = 1800
(P ) x1 + x 4 = 400
x1 + x 5 = 600
xj ≥ 0, j = 1, .., 5.
ci 30 50 0 0 0
cb base b x1 x2 x3 x4 x5
0 x3 1800 3 2 1 0 0
0 x4 400 1 0 0 1 0
0 x5 600 0 1 0 0 1
4. Calculer les Ej = zj − cj .
ci 30 50 0 0 0
cb base b x1 x2 x3 x4 x5
0 x3 1800 3 2 1 0 0
0 x4 400 1 0 0 1 0
0 x5 600 0 1 0 0 1
Ej -30 -50 0 0 0
5. test d’optimalité .
∃Ej ≤ 0 d’où aller à 6).
14
8. Encadrer le pivot :a32
1
9. Multiplier la ligne du pivot par le rapport : :
alk
ci 30 50 0 0 0
cb base b x1 x2 x3 x4 x5
0 x3
0 x4
50 x2 600 0 1 0 0 1
•Nouveau passage :
On refait les même étapes et on aura les résultats suivants :
ci 30 50 0 0 0
cb base b x1 x2 x3 x4 x5 θ
0 x3 600 3 0 1 0 -2 200
0 x4 400 1 0 0 1 0 400
50 x2 600 0 1 0 0 1 /
Ej -30 0 0 0 50
x1 entre dans la base.
x3 sort de la base.
15
ci 30 50 0 0 0
cb base b x1 x2 x3 x4 x5
30 x1 200 1 0 1/3 0 -2/3
0 x4 200 0 0 -1/3 1 2/3
50 x2 600 0 1 0 0 1
Ej 0 0 10 0 30
• Test d’optimalité :
Tous les Ej sont positifs . La solution de ce problème est :
max Z=36000
x1 =200
x2 =600
• Remarque :
L’optimisation d’un programme linéaire à l’aide de l’algorithme du simplexe nous oblige
parfois à introduire des variables artificielles pour obtenir une solution de départ lorsque
les contraintes sont de type :
n
aij xj ≥ bi , i ∈ {1, ..., m}.
P
j=1
On applique la M-méthode ou la méthode de deux phases.
max Z= cT x
(P L) Ax ≤ b
x≥0
minZ’= bT y
(P LD) AT y ≥ c
y≥0
16
Primal Dual
maxZ minZ’
coefficient c de Z second membre c
second membre b coefficient b de Z’
i-éme contrainte = yi ∈ R
i-éme contraintes ≥ yi ≥ 0
i-éme contraintes ≤ yi ≤ 0
xj ∈ R j-éme contraintes =
xj ≥ 0 j-éme contraintes ≤
xj ≤ 0 j-éme contraintes≥
• Exemple 03 :
max Z= 6x1 + 4x2
3x1 + 9x2 ≤ 81
(P L) 4x1 + 5x2 ≤ 55
≤ 20
2x1 + x2
x1 , x2 ≥ 0
3. Calculer les Ej = Zj − cj .
17
4. Choisir la variable xr qui sort de la base :
br = min bi tq : bi < 0, i ∈ JB .
Si br n’existe pas alors fin,l’optimum est atteint.
Sinon aller à 5).
6. Encadrer le pivot .
1
7. Multiplier la ligne du pivot par le rapport : .
ark
• Exemple 04 :
On prend un exemple et on applique le dual du simplexe .
1. Écrire le système :
• Sous la forme canonique :
max Z= −2x1 − x3
x1 + x2 − x3 ≥5
(P )
x1 − 2x2 + 4x3 ≥8
xj ≥ 0, ∀j=1..3
max Z= −2x1 − x3
x1 + x2 − x3 − x4 =5
(P )
x1 − 2x2 + 4x3 − x5 =8
xj ≥ 0, ∀j=1..5
max Z= −2x1 − x3
−x1 − x2 + x3 + x4 = −5
(P )
−x1 + 2x2 − 4x3 + x5 = −8
xj ≥ 0, ∀j=1..5
18
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x4 -5 -1 -1 1 1 0
0 x5 -8 -1 2 -4 0 1
3. Calculer les Ej = zj − cj .
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x4 -5 -1 -1 1 1 0
0 x5 -8 -1 2 -4 0 1
Ej 2 0 1 0 0
6. Encadrer le pivot :
1
7. Multiplier la ligne du pivot par le rapport : :
ark
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x4
-1 x3 2 1/4 -1/2 1 0 -1/4
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x4 -7 -5/4 -1/2 0 1 1/4
-1 x3 2 1/4 -1/2 1 0 -1/4
19
Aller à l’étape 3).
•Nouveau passage :
On refait les même étapes et on aura les résultats suivants :
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x4 -7 -5/4 -1/2 0 1 1/4
-1 x3 2 1/4 -1/2 1 0 -1/4
Ej 7/4 1/2 0 0 1/4
x4 sort de la base.
x2 entre dans la base.
ci -2 0 -1 0 0
cb base b x1 x2 x3 x4 x5
0 x2 14 5/2 1 0 -2 -1/2
-1 x3 9 3/2 0 1 -1 -1/2
Ej 1/4 0 0 1 0
• Test d’optimalité :
Tous les bi > 0.
La solution de ce problème est :
max Z=-9
x1 =0
x2 =14
x3 =9
2.5 Conclusion
Dans ce chapitre, nous avons constaté l’efficacité des deux algorithmes :le simplexe et le
dual du simplexe à déterminer la solution optimale exacte .
20
Chapitre 3
La méthode de Séparation et
Évaluation(BRANCH AND BOUND)
3.1 Introduction
Pour plusieurs problèmes , en particulier les problèmes combinatoires,l’espace de solutions
est fini (dénombrable). Il est donc possible en principe d’énumérer toutes les solutions et
ensuite de prendre la meilleure .L’inconvénient majeur de cette approche est le temps de calcul
qui est en général énorme . La méthode de branch and bound "procédure par évaluation et
séparation" est basée sur une méthode arborescente qui consiste à réduire par des découpages
l’ensemble des solutions qui ne génèrent pas de meilleures solutions. Toutes les séparations
sont permises à condition de ne perdre aucune information. La complexité algorithmique
diminue alors dans la mesure où on ne calcule pas toutes les solutions du problème.[5]
i=1
– La procédure de séparation :
a)La règle de finitude :le nombre totale de nœuds engendrés doit être fini.
b)La règle de conservation : aucune solution d’un sous-problème ne peut être éliminée
21
par la séparation c’est-à-dire
p
S (ik) = S (i)
[
k=1
et qu’il vérifie également S (ik) ∩ S (il) = ∅ k 6= l,où S (ik) k = 1, ..., p représentent les
sous-ensembles (enfants)du sous-ensemble (parent)S (i) .
c)La Règle d’arrêt :Un nœud ou sous-ensemble terminal de l’arborescence noté S (t) est
défini comme un nœud qu’il n’est plus possible de séparer ,pour un tel sous-ensemble :
-Soit S (t) = ∅
-Soit qu’il est possible de déterminer une solution optimale du problème p(i) qui est le
sous-problème réduit de (P) et qui est défini comme suit :
(
min F (x)
P (i)
x ∈ S (i)
– La procédure d’évaluation :
22
Lorsqu’un nœud de l’arborescence est sondé,il conviendra de remonter dans l’arbores-
cence vers un autre nœud situé à un niveau inférieure ou égale .
23
4)Résolution des sous-problèmes :
Résoudre chaque sous-problème en utilisant le simplexe ou le dual simplexe.
5)Évaluation :
Examiner chaque sous-ensemble :
On peux tailler un sommet si :
* La solution est non réalisable.
* Z1 ≤Z pour un problème de maximisation (Z1 ≥Z pour un problème de minimisation),
avec Z la solution du sous-problème.
* La solution est non entière et son Z inférieur ou égale à une solution entière pour un
problème de maximisation (supérieure ou égale pour un problème de minimisation) .
Il est inutile de sépare si :
* La solution est entière.
6)test :
S’il y a plus de sous-ensembles à séparer ,alors :
On compare tous les Z des solutions entières et on prend la plus grande d’entre elles soit Z ∗
pour un problème de maximisation (la plus petite pour un problème de minimisation). Elle
sera la valeur de la fonction économique de la solution optimale X ∗ de notre problème (P).
Sinon retour à 3).
Remarque :
24
• Résoudre le(PR)par la méthode du simplexe :
ci 1 2 0 0 0
cb base b x1 x2 x3 x4 x5 θ
0 x3 2 4 -3 1 0 0 /
0 x4 1 -2 1 0 1 0 1
0 x5 35 -6 14 0 0 1 35/14
Ej -1 -2 0 0 0
25
2)Initialisation :
• Z opt est la borne supérieure de (P).
• Soit (P1 ) le problème initial (le sommet initial de l’arborescence) tel que :
Z1 =Z opt =11.5.
X1 =3.5.
X2 =4.
(P1 ) a des variables qui ne vérifient pas les contraintes d’intégrités d’où on passe à
l’étape 3).
3)Séparation :
x1 n’est pas entier on aura le modèle linéaire courant, ici (P1 ) est divisé en deux sous-
problèmes sous la forme :
(
(P2 ) = (P1 ) + contrainte x1 ≤ [x1 ].
(P3 ) = (P1 ) + contrainte x1 ≥ [x1 ] + 1.
26
ci 1 2 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6
0 x4 4 0 0 11/19 1 1/19 0
2 x2 4 0 1 3/19 0 2/19 0
1 x1 7/2 1 0 7/19 0 3/38 0
0 x6 3 1 0 0 0 0 1
•x1 est une variable de base,on multiplie la 3éme ligne par(-1) , on l’additionne à la
4éme ligne . On obtient le tableau suivant :
ci 1 2 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6
0 x4 4 0 0 11/19 1 1/19 0
2 x2 4 0 1 3/19 0 2/19 0
1 x1 7/2 1 0 7/19 0 3/38 0
0 x6 -1/2 0 0 -7/19 0 -3/38 1
Ej 0 0 13/19 0 11/38 0
ci 1 2 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6
0 x4 4 0 0 11/19 1 1/19 0
2 x2 4 0 1 3/19 0 2/19 0
1 x1 7/2 1 0 7/19 0 3/38 0
0 x6 -4 -1 0 0 0 0 1
•x1 est une variable de base,on additionne la 3éme ligne à la 4éme ligne.On obtient le
tableau suivant :
27
ci 1 2 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6
0 x4 4 0 0 11/19 1 1/19 0
2 x2 4 0 1 3/19 0 2/19 0
1 x1 7/2 1 0 7/19 0 3/38 0
0 x6 -1/2 0 0 7/19 0 3/38 1
Ej 0 0 13/19 0 11/38 0
28
3)Séparation :
x2 n’est pas entier d’où le modèle linéaire courant ici (P2 )est divisé en deux sous-problèmes
sous la forme :
(
(P4 ) = (P2 ) + contrainte x2 ≤ [x2 ].
(P5 ) = (P2 ) + contrainte x2 ≥ [x2 ] + 1.
avec [x2 ] la partie entière de x2 .
ci 1 2 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7
0 x4 45/14 0 0 0 1 -1/14 11/7 0
2 x2 53/14 0 1 0 0 1/14 3/7 0
1 x1 3 1 0 0 0 0 1 0
0 x3 19/14 0 0 1 0 3/14 -19/7 0
0 x7 3 0 1 0 0 0 0 1
•x2 est une variable de base on multiplie la 2éme ligne par (-1),on l’additionne à la 5éme
ligne.On obtient le tableau suivant :
29
ci 1 2 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7
0 x4 45/14 0 0 0 1 -1/14 11/7 0
2 x2 53/14 0 1 0 0 1/14 3/7 0
1 x1 3 1 0 0 0 0 1 0
0 x3 19/14 0 0 1 0 3/14 -19/7 0
0 x7 -11/14 0 0 0 0 -1/14 -3/7 1
Ej 0 0 0 0 1/7 13/7 0
X2 =3.
b)On résout (P5 ) tq : (P5 ) = (P2 )+la contrainte x2 ≥ [x2 ] +1 c-à-d :
(P2 ) +la contrainte x2 ≥ 4 =⇒ x2 − x7 = 4 =⇒ −x2 + x7 = −4......F.
on rajoute au dernier tableau de(P2 ) la contrainteF et on applique le dual simplexe :
ci 1 2 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7
0 x4 45/14 0 0 0 1 -1/14 11/7 0
2 x2 53/14 0 1 0 0 1/14 3/7 0
1 x1 3 1 0 0 0 0 1 0
0 x3 19/14 0 0 1 0 3/14 -19/7 0
0 x7 -4 0 -1 0 0 0 0 1
30
•x2 est une variable de base on additionne la 2éme ligne à la 5éme ligne.On obtient le tableau
suivant :
ci 1 2 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7
0 x4 45/14 0 0 0 1 -1/14 11/7 0
2 x2 53/14 0 1 0 0 1/14 3/7 0
1 x1 3 1 0 0 0 0 1 0
0 x3 19/14 0 0 1 0 3/14 -19/7 0
0 x7 -3/14 0 0 0 0 1/14 3/7 1
Ej 0 0 0 0 1/7 13/7 0
5)Évaluation :
•(P4 ) a une solution non entière et la valeur de Z4 ≤ Z1 donc on peut le séparer .
•(P5 ) non réalisable donc on peut le tailler .
6)Test :
Il existe un sous-ensemble qui peut être séparé donc retour à 3).
31
3)Séparation :
x1 n’est pas entier d’où le modèle linéaire courant ici (P4 ) est divisé en deux sous-problèmes
sous la forme :
(
(P6 ) = (P4 ) + contrainte x1 ≤ [x1 ].
(P7 ) = (P4 ) + contrainte x1 ≥ [x1 ] + 1.
avec [x1 ] la partie entière de x1 .
ci 1 2 0 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7 x8
0 x4 7/2 0 0 1/2 1 0 0 1/2 0
2 x2 3 0 1 0 0 0 0 1 0
1 x1 11/4 1 0 1/4 0 0 0 3/4 0
0 x6 1/4 0 0 -1/4 0 0 1 -3/4 0
0 x5 19/2 0 0 3/2 0 1 0 -19/2 0
0 x8 2 1 0 0 0 0 0 0 1
•x1 est une variable de base on multiplie la 3éme ligne par (-1) et on l’additionne à la 6éme
ligne.On obtient le tableau suivant :
32
ci 1 2 0 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7 x8
0 x4 7/2 0 0 1/2 1 0 0 1/2 0
2 x2 3 0 1 0 0 0 0 1 0
1 x1 11/4 1 0 1/4 0 0 0 3/4 0
0 x6 1/4 0 0 -1/4 0 0 1 -3/4 0
0 x5 19/2 0 0 3/2 0 1 0 -19/2 0
0 x8 -3/4 0 0 -1/4 0 0 0 -3/4 1
Ej 0 0 1/4 0 0 0 11/4 0
ci 1 2 0 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7 x8
0 x4 2 0 0 0 1 0 0 -1 2
2 x2 3 0 1 0 0 0 0 1 0
1 x1 2 1 0 0 0 0 0 0 1
0 x6 1 0 0 0 0 0 1 0 -1
0 x5 5 0 0 0 0 1 0 14 6
0 x3 3 0 0 1 0 0 0 3 -4
Ej 0 0 0 0 0 0 2 1
X2 =3.
ci 1 2 0 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7 x8
0 x4 7/2 0 0 1/2 1 0 0 1/2 0
2 x2 3 0 1 0 0 0 0 1 0
1 x1 11/4 1 0 1/4 0 0 0 3/4 0
0 x6 1/4 0 0 -1/4 0 0 1 -3/4 0
0 x5 19/2 0 0 3/2 0 1 0 -19/2 0
0 x8 -3 -1 0 0 0 0 0 0 1
•x1 est une variable de base d’où on additionne la 3éme ligne à la 6éme ligne.On obtient le
tableau suivant :
33
ci 1 2 0 0 0 0 0 0
cb base b x1 x2 x3 x4 x5 x6 x7 x8
0 x4 7/2 0 0 1/2 1 0 0 1/2 0
2 x2 3 0 1 0 0 0 0 1 0
1 x1 11/4 1 0 1/4 0 0 0 3/4 0
0 x6 1/4 0 0 -1/4 0 0 1 -3/4 0
0 x5 19/2 0 0 3/2 0 1 0 -19/2 0
0 x8 -1/4 0 0 1/4 0 0 0 3/4 1
Ej 0 0 1/4 0 0 0 11/4 0
5)évaluation :
• On a (P6 ) a une solution entière et son Z6 ≤ Z1 donc inutile de le séparer.
• On a (P7 ) non réalisable donc on peut le tailler.
6)Test :
Il n’y a plus de sous-ensembles à séparer alors on compare tous les Z des solutions entières et
on prend la plus grande car on a un problème de maximisation .Ici on a Z6 = 8 est la seule
qui a une solution entière .
D’où la solution de notre problème est :
X ∗ =(2,3)et son Z ∗ = 8.
34
• Interprétation graphique de la séparation à partir de (P4 ) :
35
Remarque :
On a utilisé la stratégie :
Le meilleur d’abord.
36
• En utilisant( LP Solve IDE) :
Le problème correspondant est le suivant :
/* objective function */
max :x1 +2x2 ;
/* Variable bounds */
4x1 − 32 + x3 = 2 ;
-2x1 + x2 + x4 =1 ;
-6x1 + 14x2 + x5 = 35;
x3 >= 0 ;
x4 >= 0 ;
x5 >= 0 ;
int x1 ,x2 ;
37
3.5 Conclusion
Dans ce chapitre nous nous sommes intéressés à la résolution des programmes linéaires
en nombres entiers avec la méthode de Séparation et d’Évaluation "Branch and Bound "qui
se repose sur le principe d’énumération.
Son efficacité est liée directement au principe d’élagage qui permet de diminuer l’espace de
38
recherche des solutions.
P6 : Z6 =8
X1 =2
X2 =3
39
Conclusion générale
Quelques problèmes de la vie courante peuvent être modélisés comme des problèmes
combinatoires .
Dans notre travail,on a présenté un état de l’art des méthodes de résolutions des problèmes
de programmation linéaire en nombres entiers .
On a défini les concepts de base de la programmation linéaire ensuite on a présenté la méthode
Branch and Bound en appliquant un exemple numérique.
Nous espérons que ce travail sera utile pour tous ceux qui sont concernés par le développement
des systèmes de programmation linéaire, de modélisation et d’optimisation.
40
Bibliographie
[1] Aidene M. Oukacha B., « les manuels de l’étudiant Recherche Opérationnelle, Program-
mation Linéaire ». Copyright Eurl Pages Bleues internationales, Maison d’Edition pour
l’enseignement et la formation, 2005.
[2] Amira Gherboudj ,thèse pour l’obtention du diplôme de Doctorat 3éme cycle LMD Spé-
cialité informatique,2013.
[3] Dantzig ,Linear programming and extensions, Princeton University Press, Princeton,
1963.
[4] Jaques Teghem,RECHERCHE OPÉRATIONNELLE TOME 1,Septembre 2012.
[5] Land A.H., Doig A.G., An automatic method of solving discrete programming problems
, Econometrica 28 (3), 497-520, 1960.
[6] Lemke C.E., « The dual method for solving the linear programming problem », Naval
Research Logistic Quarterly 1, 36-47, 1954.
[7] P.Fouilhoux,Programmation mathématique discrète et modèle linéaire ,Université Pierre
et Marie Cunie ,2012.
[8] Yves Nobert , Roch Ouellet,Régis parent,La recherche opérationnelle3e édition,2001.
41