Vous êtes sur la page 1sur 32

Techniques d’Optimisation

A.HADJADJ
.,

19/05/2020 Hadjadj/FHC_Boumerdes,
FHC– Boumerdes, 2020, 2020 1
Sommaire de la fiche des séquences

• Cha.1 : Introduction (Slides : 1 – 28)


• Cha.2 : Programmation Linéaire (Slides : 1-66)
• Cha.3 : Post Analyse (Slides :1-27)
• Cha.4 : Nombres Entiers (Slides :1-32)
• Cha.5 : Dualité (Slides :)
• Cha.6 : Programmation Non Linéaire (Slides :)

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 2


VI. Nombres Entiers

Maintenant, on va examiner le traitement d’un problème


d’optimisation lorsque ses variables sont et uniquement
en nombres entiers.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 3


VI. Nombres Entiers
VI. 1): Introduction

On parle de problèmes en nombres entiers lorsque pour


un problème d’optimisation avec objectif et contraintes
linéaires, les variables sont astreintes à être entières.

On parle de problèmes mixtes entiers lorsqu’une partie


des variables seulement sont astreintes à être entières.

Nous allons voir, dans ce qui suit quelques exemples


nécéssitant des variables entières dans leurs formulation
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 4
VI. Nombres Entiers
VI. 1): Introduction
Exemples:

VI.1): Mise en route de la production avec coûts fixes


Representation d’un coût de production qui est nul en
l’absence de production et qui est dans le cas contraire
vaut la somme d’une constante k.

VI.2): Problèmes avec contraintes logique


Gestion de la production comporte une condition
logique.
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 5
VI. Nombres Entiers

VI. 1): Introduction


Exemples:

VI.3): Enchainement des taches d’un projet


Déterminer l’enchainement des taches d’un projet de
manière à le réaliser dans les meilleurs délais. Il se peut que
deux taches doivent etre effectuées par la même équipe
d’ouvriers, soit mettre en oeuvre la même machine. Les deux
taches ne peuvent donc, avoir lieu simultanément, sans que
l’on puisse dire laquelle doit être effectuée en premier lieu.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 6


VI. Nombres Entiers
VI. 1): Introduction
Exemples:

VI.4): Mélange de nombre limités des ingrédients


Problème de mélange des huiles ou cinq huiles sont
disponibles mais à cause des contraintes techniques
impliquant par exemple, que seulement trois huiles
différentes seulement doivent être présentes dans le
mélange.

VI.5): Dimensionnement d’une conduite ou tubage


On doit choisir parmi les valeurs des diamètres suivantes:
φ12, φ17, φ24, …
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 7
VI. Nombres Entiers
VI. 1): Introduction

Nous avons vu dans le deuxième chapitre que l’algorithme


SIMPLEXE fournit une méthode de résolution générale pour tous
les problèmes linéaires quelque soit leurs formes.

Par contre, en problèmes avec des nombre entiers, on ne dispose


pas d’un algorithme générale qui permette de résoudre
efficacement tous les problèmes en nombres entiers.

Cependant, il existe une méthode générale connue sous le nom de


BRANCH and BOUND (Séparation et Bornes) qui consente de
résoudre un bon nombre de prblèmes en nombres entiers.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 8


VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Pour illustrer l’utilisation de la méthode, nous allons utiliser


l’exemple suivant:

z*=max z = 10 x1 + 50 x2

Avec : -x1 + 2 x2 ≤5
x1 + 2x2 ≤ 14
x1 ≤8
x1 , x2 ≥ 0 et entiers

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 9


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

On remarque dans l’exemple, que les deux variables


doivent entre entières, alors la méthode de BRANCH and
BOUND (BB) ,comme son nom l’indique est composé de
bornes et séparation.
Donc, sa philosophie consiste à construire une borne
supérieure sur z* et une borne inférieure sur z* , puis
raffiner ces bornes jusqu’à les égaliser.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 10


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Question 1: Comment construire une borne inférieure sur z*?

La réponse à cette question est à la fois simple et difficile.


En effet, pour trouver une borne inférieure, il suffit de
donner une solution réalisable pour l’exemple, cité ci-dessus.
Comme l’objectif est de maximiser, l’optimum du problème
ne pourra qu’être supérieur à la valeur de z en ce point.
Cependant, trouver en général une solution réalisable pour
un problème en nombres entiers n’est pas une mince affaire.
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 11
VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Question 2: Comment construire une borne supérieure sur z*?

Une façon de répondre à cette question est de résoudre


le problème linéaire que l’on obtient à partir de notre
exemple en laissant tomber les contraintes d’intégrabilité des
variables.
Comme on maximise sur un ensemble réalisable plus large,
l’optimum ainsi obtenu ne pourra qu’être supérieur à
l’optimum du problème en nombres entiers.
C’est aussi, le premier pas de la méthode BRANCH and
BOUND.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 12


VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Nous allons décrire les différentes de la méthode BB sur notre


exemple:

Pas 0 :

On obtient comme solution de la relaxation linéaire le


point noté P0 :
x1 = 4.5
x2 = 4.75
z0= 282.5
NB: Qu’on peut obtenir en appliquant SIMPLEXE par exemple

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 13


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 0 :

Cette solution n’est pas acceptable, car elle viole les


contraintes d’intégrabilité des variables.
Cependant, elle fournit une première borne supérieure
sur z*

z* ≤ 282.5
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 14
VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière


La seconde idée de la méthode de BB est d’opérer une séparation :

La région réalisable va etre séparée en deux sous-régions dont aucune ne peut contenir la
solution optimale P0 . Cette séparation nécessite le choix d’une variable de séparation.

Le choix de cette dernière est heuristique.

Différents choix sont possibles et de ce choix peut dépendre l’efficacité de la méthode de


résolution.

Une facon simple de choisir cette variable est de prendre la variable la plus distante d’un
entier. Une alternative, parfois utilisée est de prendre la variable la plus proche d’un entier

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 15


VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière

Dans notre exemple, il s’agit de la variable x1 . On va effectuer un branchement


sur cette variable. Comme x1 ne peut prendre que des variables entières, il n’ y
a aucune perte de généralité d’imposer que :

soit : x1 ≤ 4 ou x1 ≥ 5

Cependant imposer cette condition va éliminer la solution courante P0 de la


relaxation linéaire.

Généralement, si la variable choisie xk a la valeur fractionnaire N+, on imposera

soit : xk ≤ N ou xk ≥ N+

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 16


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière

En imposant séparément l’une et l’autre conditions, on obtient deux


sous modèles, un modèle fils et un modèle fille.
Ce qu’on représente par le diagramme .
z0= 282.5
x1 = 4.5
x2 = 4.75

x1 ≤ 4 x1 ≥ 5

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 17


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière

Chaque nœud de ce diagramme ci-dessus, (appelé Arbre de Branch and


Bound ) correspond à un problème linéaire.

Le nœud 0 correspond au modèle original.


Le nœud 1 correspond au modèle originale avec une restriction x1 ≤ 4
Le nœud 2 correspond au modèle originale avec la restriction x1 ≥ 5

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 18


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière

Maintenant, on peut résoudre les relaxations linéaires correspondant aux


problèmes fils et filles. Dans notre exemple, on obtient les deux solutions
suivantes :

Nœud 1 : x1 = 4, x2 = 4.5 , z1= 265

Nœud 2 : x1 = 5, x2 = 4.5 , z2= 275

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 19


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière


Nœud 0
z0= 282.5
x1 = 4.5
x2 = 4.75

x1 ≤ 4 x1 ≥ 5

Nœud 1 z1= 265 z2= 275 Nœud 2


x1 = 4 x1 = 5
x2= 4.5 x2= 4.5

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 20


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Brancher sur une variable non entière

On remarque que les valeurs atteintes par la fonction objective sont


moins élevées que dans la relaxation linéaire précédente. Ceci s’explique
par le fait, qu’on a ajouté des contraintes et donc restreindre l’espace
des solutions réalisables.
Comme les deux sous régions forment une représentation contenant
l’ensemble des solutions entières, on peut en conclure que la borne
supérieure sur z* est :
z* ≤ max (z1, z2)= 275
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 21
VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND

Pas 2 : Diviser à nouveau un noeud fils ou fille en deux

On observe qu’aucune des deux solutions n’est acceptable car toutes les deux
comprennent des parties fractionnaires. On va donc, continuer la séparation en
choisissant un des nœuds pour le diviser à nouveaux. Le choix du nœud à diviser est
à nouveau heuristique et peut à nouveau avoir une grande influence sur le temps
total mis pour résoudre le problème.

Par conséquent, nous allons adopter la règle de choix heuristique suivante :

Choisir le problème dont la relaxation linéaire fournit la meilleure valeur de la


fonction objective (la plus grande dans le cas de maximisation , ici, c’est le nœud 1)

On répète le Pas 1

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 22


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Choisir une variable pour brancher

On remarque que seule la variable x2 est non entière. On la choisit donc pour
opérer le branchement suivant:

soit : x2 ≤ 4 ou x2 ≥ 5

On ajoute séparément chacune de ces contraintes aux contraintes du problème


précédent et on génère les noeuds 3 et 4. on résout les relaxations linéaires et
on obtient les solutions suivantes :

Nœud 3 : x1 = 6, x2 = 4 , z3= 260


Nœud 4 : Non réalisable
19/05/2020 Hadjadj/FHC_Boumerdes, 2020 23
VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND
Pas 1 : Choisir une variable pour brancher
Nœud 0 z0= 282.5
x1 = 4.5
x2 = 4.75

x1 ≤ 4 x1 ≥ 5

Nœud 1 z1= 265 z2= 275 Nœud 2


x1 = 4 x1 = 5
x2= 4.5
x2= 4.5

x2 ≤ 5 x2 ≥ 5

Nœud 3 z3= 260 z4= -  Nœud 4


x1 = 6 Problème
x2 = 4 Non réalisable

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 24


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

Pas 1 : Choisir une variable pour brancher

On note qu’au nœud 3, on a obtenu une solution entière dont la valeur


correspondante de la fonction objective est de 260. On a donc une
première borne inférieure sur la valeur optimale de la fonction objective,
ainsi;

260 ≤ z* ≤ 275

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 25


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND


Pas 1 : Choisir une variable pour brancher

Si la fourchette n’est pas trop grande, on peut se satisfaire de cette


solution non optimale plutôt de continuer de longs calculs. Il est clair
également, qu’il n’y a aucune raison de continuer à diviser le nœud 3
pour lequel, la solution optimale du problème en nombres entiers a été
obtenue. On dit que le nœud est coupé.
On remarque pour que le nœud 4 a conduit à un problème non
réalisable. Ce n’est pas étonnant, vu qu’on rajoute de plus en plus de
Contraintes. Il ne sert à rien de continuer à diviser ce nœud.
Continuons la division des autres nœuds.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 26


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND


Pas 2 : Diviser à nouveau un noeud fils ou fille en deux

On choisit le nœud 1, qui est le seul à encore diviser. On remarque que,


c’est parce que la valeur de z1= 265 est supérieure à la borne inférieure
260 que l’on doit continuer.

On a en effet l’espoir de trouver ici une solution entière meilleure que


260.

Dans le cas contraire, on aurait coupé cette branche et la méthode est


terminée.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 27


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND


Pas 1 : Brancher sur une variable non entière

On branche ici sur x2 en créant les nœuds 4 et 6 par la séparation


suivante :
soit : x2 ≤ 4 ou x2 ≥ 5

On résout les relaxations linéaires correspondantes. On obtient :

Nœud 5 : x1 = 4, x2 = 4 , z3= 240


Nœud 6 : Non réalisable

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 28


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND


Pas 1 : Brancher sur une variable non entière

La méthode est terminée puisqu’il n’existe plus de nœud à diviser. On


détermine la solution optimale comme étant la meilleure solution
entière trouvée. Il s’agit du point suivant :
X*1 = 6
x*2 = 4
Auquel correspond une valeur optimale de l’objectif égale à z*=
260.
On a ainsi, pour notre exemple affirmé que le nœud 3 est la
solution optimale de notre problème en nombres entiers.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 29


VI. Nombres Entiers
VI. 2): Méthode de BRANCH and BOUND
Pas 1 : Brancher sur une variable non entière
z0= 282.5
x1 = 4.5
Nœud 0
x2 = 4.75
x1 ≤ 4 x1 ≥ 5

Nœud 1 z1= 265 z2= 275 Nœud 2


x1 = 4 x1 = 5
x2= 4.5 x2= 4.5

x2 ≤ 4 x2 ≥ 5 x2 ≤ 4 x2 ≥ 5
z5= 240 z6= -  z3= 260 z4= -  Nœud 4
Nœud 5
x1 = 4 Problème x1 = 6 Problème
x2 = 4 Non réalisable x2 = 4 Non réalisable

19/05/2020 Hadjadj/FHC_Boumerdes, Nœud


2020 330
Nœud 6
VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND


Conclusion:

Il y’a trois raisons de couper une branche dans l’arbre:

1. Lorsque la relaxation linéaire obtenue est non réalisable.


2. Lorsque la relaxation linéaire obtenue fournit une solution
entière.
3. Lorsque la valeur de la borne supérieure est inférieure à la
valeur de la meilleure solution entière obtenue.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 31


VI. Nombres Entiers

VI. 2): Méthode de BRANCH and BOUND

On vient de voir l’application de la méthode de BB à des


problématiques en nombres entiers.

Cependant, elle reste toujours une méthode heuristique sujette à


des interprétations subjectives qui dépendent de l’expertise des
utilisateurs.

19/05/2020 Hadjadj/FHC_Boumerdes, 2020 32