Vous êtes sur la page 1sur 10

Résolution de modèles entiers

 Programmation en nombres entiers = Programmation


linéaire avec certaines variables à valeurs entières
IFT1575 Modèles de recherche opérationnelle (RO)  Pourquoi ne pas oublier les contraintes d’intégralité…
 Résoudre le modèle de PL ainsi obtenu (appelé
relaxation PL)…
4. Programmation en nombres entiers  Puis arrondir aux valeurs entières les plus près?
b. Séparation et évaluation progressive  Dans certains cas, ça peut fonctionner…
c. Plans de coupes  Mais dans d’autres cas, cette méthode par
arrondissement est désastreuse!

4. Programmation entiers 2

Arrondissement : exemple 1 Arrondissement : exemple 2

max Z = x 2

1 max Z = x + 5 x 1 2

−x +x ≤
x + 10 x ≤ 20
1 2

2 1 2

x +x ≤3
1
1
2
x ≤2
1

2 x , x ≥ 0 et entiers
1 2

x , x ≥ 0 et entiers
1 2

4. Programmation entiers 3 4. Programmation entiers 4

1
Approche par énumération Construction de l’arbre des solutions
 Un modèle en nombres entiers borné (par exemple,  Un algorithme simple pour énumérer toutes les
un modèle avec uniquement des variables 0-1) solutions d’un modèle 0-1 consiste à :
possède un nombre fini de solutions  Choisir une variable x
 Pourquoi ne pas les énumérer toutes?  Générer les deux alternatives x=0 et x=1 (on dit que x est
fixée) : chaque alternative correspond à un sommet de
 Déjà, pour n=20 variables 0-1, il y a plus d’un million l’arbre des solutions
de solutions possibles!  Recommencer à partir d’un sommet pour lequel certaines
 Pour n=30, c’est plus d’un milliard!... variables ne sont pas encore fixées
 Peut-être peut-on combiner cette idée d’énumérer les  Racine de l’arbre : aucune variable n’est encore fixée
solutions avec l’idée de résoudre la relaxation PL pour  Feuilles de l’arbre : toutes les variables ont été fixées
éliminer certaines de ces solutions?  Nombre de feuilles = 2n (pour n variables 0-1)
4. Programmation entiers 5 4. Programmation entiers 6

Algorithme de branch-and-bound Algorithme de B&B : cas 0-1


 Approche diviser-pour-régner :  Branchement (ou séparation) :
 Décomposition du problème en sous-problèmes plus simples  Choisir un sommet dans l’arbre des solutions
 Puis combinaison de la résolution de ces sous-problèmes  Puis choisir une variable non encore fixée relativement à ce
pour obtenir la solution du problème original sommet
 Dans l’algorithme de branch-and-bound (B&B),  Générer les deux alternatives
chaque sous-problème correspond à un sommet dans  Calcul de borne (ou évaluation) : résoudre la
l’arbre des solutions relaxation PL en chaque sommet
 On résout la relaxation PL de chaque sous-problème  Élagage (ou élimination) : utiliser l’information tirée
 L’information tirée de la relaxation PL nous permettra de la résolution de la relaxation PL pour éliminer
(peut-être) d’éliminer toutes les solutions pouvant toutes les solutions émanant du sommet courant
être obtenues à partir de ce sommet  B&B = séparation et évaluation progressive
4. Programmation entiers 7 4. Programmation entiers 8

2
Algorithme de B&B : exemple Exemple : calcul de borne
 Reprenons le problème California Mfg  Sous-problème 1 : x1 = 0
max Z = 9 x 1 + 5x 2 + 6x 3 + 4x 4
max Z = 1 5x 2 + 6x 3 + 4x 4

6x 1 + 3x 2 + 5x 3 + 2x 4 ≤ 10 3x 2 + 5x 3 + 2x 4 ≤ 10
x
3 +x 4 ≤ 1 x 3 +x 4 ≤ 1
−x 1 +x 3 ≤ 0 +x 3 ≤ 0
−x 2 +x 4 ≤ 0 −x 2 +x 4 ≤ 0
x,
1 x, 2 x,
3 x 4 binaire x, 2 x,
3 x4 binaire
 Relaxation PL : les variables peuvent prendre des
valeurs fractionnaires entre 0 et 1  Solution de la relaxation PL :
 Solution : ( x , x , x , x ) = (5 / 6,1,0,1) et Z = 33 / 2
1 2 3 4 ( x , x , x , x ) = (0,1,0,1) et Z = 9
1 2 3 4

 Branchons sur la variable x1


4. Programmation entiers 9 4. Programmation entiers 10

Exemple : calcul de borne Exemple : calcul de borne


 Sous-problème 2 : x1 = 1  Sous-problème 1 : Z1 ≤ 9
max Z = 2 5x 2 + 6x 3 + 4x 4 +9  Sous-problème 2 : Z2 ≤ 16 + 1/5
3x 2 + 5x 3 + 2x 4 ≤ 4  Notons que toutes les variables sont binaires et tous
x 3 +x 4 ≤ 1 les paramètres dans l’objectif sont des valeurs
+x 3 ≤ 1 entières
−x 2 +x 4 ≤ 0  Borne supérieure pour le sous-problème 2 : 16
x, 2 x, 3 x 4 binaire  Pour le sous-problème 1, la solution obtenue est
entière : c’est la meilleure solution courante
 Solution de la relaxation PL :
 On sait que la valeur optimale cherchée, Z, sera au
1
( x , x , x , x ) = (1,4 / 5,0,4 / 5) et Z = 16
1 2 3 4 moins Z* = 9 : Z ≥ Z*
5
4. Programmation entiers 11 4. Programmation entiers 12

3
Exemple : élagage Critères d’élagage
 Sous-problème 1 :  Un sous-problème est élagué si une des trois
 La solution optimale de la relaxation PL est entière conditions suivantes est satisfaite :
 Il ne sert donc à rien de brancher sur les autres variables,  Test 1 : Sa borne supérieure (valeur optimale de la
puisque toutes les autres solutions entières (avec x1 = 0) relaxation PL) est ≤ Z* (valeur de la meilleure solution
sont nécessairement de valeur ≤ 9! courante)
 On peut donc élaguer ce sommet (couper la branche!)  Test 2 : Sa relaxation PL n’a pas de solution réalisable
 Sous-problème 2 :  Test 3 : La solution optimale de sa relaxation PL est entière
 La solution optimale de la relaxation PL n’est pas entière  Lorsque le test 3 est vérifié :
 Z* = 9 ≤ Z ≤ 16 : la branche (x1 = 1) peut encore contenir  On teste si la valeur optimale de la relaxation PL du sous-
une solution optimale problème, Zi, est supérieure à Z*
 Mais si on avait eu Z2 ≤ Z*, on aurait pu conclure que la  Si Zi > Z*, alors Z* = Zi, et on conserve la solution, qui
branche ne pouvait améliorer la meilleure solution courante devient la meilleure solution courante

4. Programmation entiers 13 4. Programmation entiers 14

Algorithme de B&B : résumé Algorithme de B&B : résumé (suite)


1. Initialisation : 4. Calcul de borne :
a. Poser Z* = -∞ a. Résoudre la relaxation PL de chaque sous-problème
b. Appliquer le calcul de borne et les critères d’élagage à la b. Arrondir la valeur optimale si tous les paramètres de
racine (aucune variable fixée) l’objectif sont entiers
2. Critère d’arrêt : s’il n’y a plus de sous-problèmes
5. Élagage : élaguer un sous-problème si
non élagués, arrêter
a. La borne supérieure est ≤ Z*
3. Branchement :
b. La relaxation PL n’a pas de solution réalisable
a. Parmi les sous-problèmes non encore élagués, choisir celui
qui a été créé le plus récemment (s’il y a égalité, choisir c. La solution optimale de la relaxation PL est entière : si la
celui de plus grande borne supérieure) borne supérieure est > Z*, Z* est mise à jour et la solution
b. Appliquer le Test 1 : si le sous-problème est élagué, de la relaxation PL devient la meilleure solution courante
retourner en 2. 6. Retourner en 2.
c. Brancher sur la prochaine variable non fixée
4. Programmation entiers 15 4. Programmation entiers 16

4
Règle de sélection Règle de branchement
 Dans cette version, on propose comme règle de  Dans cette version, la règle de branchement
sélection de choisir le sous-problème le plus consiste à choisir la prochaine variable non fixée
récemment créé
 Il est souvent plus intéressant de choisir une
 Avantage : facilite la réoptimisation lors du calcul de variable à valeur fractionnaire
borne, car peu de changements apportés par
rapport au dernier sous-problème traité  En branchant sur une telle variable, il est certain
 Désavantage : peut créer un grand nombre de que les deux sous-problèmes créés mènent à des
sous-problèmes solutions différentes de la solution courante
 Autre option : règle de la meilleure borne (choisir le  De nombreux critères existent pour choisir une telle
sous-problème ayant la plus grande borne variable de façon à orienter la recherche vers un
supérieure) élagage rapide

4. Programmation entiers 17 4. Programmation entiers 18

Exemple (suite) Exemple (suite)


 Jusqu’à maintenant, voici l’arbre obtenu :  Sélection : on choisit le sous-problème 2, le seul qui
n’a pas encore été élagué
 On branche sur la prochaine variable, soit x2
 Deux nouveaux sous-problèmes sont créés :
 Sous-problème 3 : x1 = 1, x2 = 0
 Sous-problème 4 : x1 = 1, x2 = 1

 F(3) indique que le sous-problème a été élagué


(fathomed) en raison du Test 3

4. Programmation entiers 19 4. Programmation entiers 20

5
Exemple (suite) Exemple (suite)
 Sous-problème 3 : x1 = 1, x2 = 0  Sous-problème 4 : x1 = 1, x2 = 1
max Z = 6 x 3 3 + 4x 4 +9 max Z 4 = 6 x 3 + 4 x 4 + 14
5x 3 + 2x 4 ≤ 4 5 x3 + 2 x 4 ≤ 1
x 3 +x 4 ≤ 1 x3 + x 4 ≤ 1
x 3 ≤ 1 x3 ≤ 1
x 4 ≤ 0 x4 ≤ 1
x,3 x 4 binaire x3, x4 binaire
 Solution de la relaxation PL :  Solution de la relaxation PL :
4
( x , x , x , x ) = (1,0,4 / 5,0) et Z = 13 : Z ≤ 13
1 2 3 4 3 ( x , x , x , x ) = (1,1,0,1 / 2) et Z = 16 : Z ≤ 16
1 2 3 4 4

5
4. Programmation entiers 21 4. Programmation entiers 22

Exemple (suite) Exemple (suite)


 Aucun des tests d’élagage ne s’applique sur ces sous-  Sous-problème 5 : x1 = 1, x2 = 1, x3 = 0
problèmes
 On doit donc choisir un des deux sous-problèmes max Z = 4 x 5 4 + 14
pour effectuer un branchement, puisque ce sont ceux 2x 4 ≤ 1
créés le plus récemment x 4 ≤ 1
 On choisit celui de plus grande borne supérieure, soit x 4 ≤ 1
le sous-problème 4 x 4 binaire
 On branche sur x3 et on génère deux nouveaux sous-
problèmes  Solution de la relaxation PL :
( x1, x 2, x 3, x 4) = (1,1,0,1 / 2) et Z = 16 : Z 5 ≤ 16
4. Programmation entiers 23 4. Programmation entiers 24

6
Exemple (suite) Exemple (suite)
 Sous-problème 6 : x1 = 1, x2 = 1, x3 = 1  Le sous-problème 5 ne peut pas être élagué
 Il est créé le plus récemment parmi les sous-
max Z = 4 x5 4 + 20 problèmes non élagués (3 et 5), on le choisit pour
2x 4 ≤ −4 effectuer un branchement
x 4 ≤ 0  On branche sur x4 et on génère :
x 4 ≤ 1  Sous-problème 7 : x1 = 1, x2 = 1, x3 = 0, x4 = 0
x 4 binaire  Sous-problème 8 : x1 = 1, x2 = 1, x3 = 0, x4 = 1
 Toutes les variables sont fixées : on peut résoudre
 La relaxation PL n’a pas de solution réalisable : ce directement ces sous-problèmes
sous-problème est élagué

4. Programmation entiers 25 4. Programmation entiers 26

Exemple (suite) Exemple (suite)


 Sous-problème 7 : x1 = 1, x2 = 1, x3 = 0, x4 = 0  Le sous-problème 3 est le seul non encore élagué
 Solution : ( x1, x 2, x3, x 4) = (1,1,0,0) et Z 7 = 14  On applique le Test 1 : Z3 = 13 ≤ 14 = Z*
La solution est entière : le sous-problème est élagué par le

 Le sous-problème est donc élagué
Test 3
 Puisque Z7 > Z*, Z* = 14 et la solution du sous-problème  Il n’y a plus de sous-problèmes non élagués : on
devient la meilleure solution courante arrête
 Sous-problème 8 : x1 = 1, x2 = 1, x3 = 0, x4 = 1  La solution optimale est :
 Cette solution n’est pas réalisable, car la première contrainte ( x1, x 2, x 3, x 4 ) = (1,1,0,0) et Z = Z * = 14
(2x4 ≤ 1) est violée
 Le sous-problème est élagué par le Test 2

4. Programmation entiers 27 4. Programmation entiers 28

7
Exemple (suite et fin) Algorithme de B&B : cas général
 Voici l’arbre obtenu suite à l’exécution de l’algorithme  Cas général d’un modèle de programmation (mixte)
en nombres entiers : variables entières générales et
variables continues
 On modifie le branchement ainsi :
 On choisit la première variable entière à valeur non entière
 Soit xj cette variable de valeur xj*
 Soit  xj * = plus grand entier ≤ xj *
 On génère deux nouveaux sous-problèmes :
x ≤ x * et x ≥ x * + 1
j j j j

 F(j) : le sous-problème est élagué par le Test j


 Voir autre exemple dans IOR Tutor
4. Programmation entiers 29 4. Programmation entiers 30

Algorithme de B&B : cas général Algorithme de B&B (suite)


1. Initialisation :
a. Poser Z* = -∞
4. Calcul de borne : résoudre la relaxation PL de
b. Appliquer le calcul de borne et les critères d’élagage à la chaque sous-problème
racine (aucune variable fixée) 5. Élagage : élaguer un sous-problème si
2. Critère d’arrêt : s’il n’y a plus de sous-problèmes a. La borne supérieure est ≤ Z*
non élagués, arrêter b. La relaxation PL n’a pas de solution réalisable
3. Branchement : c. Dans la solution optimale de la relaxation PL, toutes les
a. Parmi les sous-problèmes non encore élagués, choisir celui variables entières sont à valeurs entières : si la borne
qui a été créé le plus récemment (s’il y a égalité, choisir supérieure est > Z*, Z* est mise à jour et la solution de la
celui de plus grande borne supérieure) relaxation PL devient la meilleure solution courante
b. Appliquer le Test 1 : si le sous-problème est élagué,
retourner en 2. 6. Retourner en 2.
c. Brancher sur la prochaine variable entière à valeur non
entière dans la relaxation PL
4. Programmation entiers 31 4. Programmation entiers 32

8
Algorithme de B&B : exemple Méthode de coupes
 Idée : ajouter des contraintes redondantes pour le
max Z = 4x 1 − 2x 2 + 7x 3 −x 4
modèle en nombres entiers, mais non pour la
x1 + 5x 3 ≤ 10
x1 +x 2 −x 3 ≤ 1 relaxation PL
6x 1 − 5x 2 ≤ 0  Exemple : max Z = 3 x + 2 x 1 2

−x 1 + 2x 3 − 2x 4 ≤ 3 2 x + 3x ≤ 4
1 2
x,1 x,2 x,
3 x
4 ≥ 0
x,1 x,2 x
3 entier x , x binaire
1 2

 Faire cet exemple avec IOR Tutorial  Les solutions réalisables sont (0,0), (1,0) et (0,1)
 Une contrainte redondante est : x 1 + x 2 ≤ 1

4. Programmation entiers 33 4. Programmation entiers 34

Méthode de coupes : exemple Méthode de coupes : exemple


 Domaine réalisable de la relaxation PL :  Suite à l’ajout de la contrainte redondante, le
problème est résolu à la racine!

4. Programmation entiers 35 4. Programmation entiers 36

9
Méthode de coupes Pour expérimenter avec B&B
 Il y a plusieurs algorithmes permettant de générer de  Pour des petits modèles (moins de 5 variables de
telles inégalités redondantes, appelées coupes tous types et moins de 5 contraintes fonctionnelles) :
 Mais il est rare que leur ajout permet de résoudre le essayer le IOR Tutorial
problème à la racine  Pour des modèles plus gros, modéliser et résoudre
 L’ajout de coupes permet toutefois de réduire le avec Excel Solver
nombre de sous-problèmes traités par l’algorithme de  Revoir le cas California Mfg
B&B  Pour des modèles encore plus gros, essayer
 On peut même ajouter des coupes pour chaque sous- Lindo/Lingo et CPLEX/MPL (CD)
problème (pas seulement à la racine) : on obtient
alors un algorithme de branch-and-cut

4. Programmation entiers 37 4. Programmation entiers 38

10

Vous aimerez peut-être aussi