0% ont trouvé ce document utile (0 vote)
539 vues26 pages

Optimisation par Programmation Entière

Transféré par

the
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
539 vues26 pages

Optimisation par Programmation Entière

Transféré par

the
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Outils de Recherche

Opérationnelle en Génie - MTH 8414


Programmation en nombres entiers
• Introduction
• Résolution

Louis-Martin Rousseau
Office: A520.21 Tel.: #4569
[Link]@[Link]
Types de problème d’optimisation

Programme Linéaire en Nombre Entier (PLNE ou IP) :


Programme Linéaire en Nombre Entier Mix (MIP) :

Ces problèmes sont théoriquement très difficiles, mais en pratique


ils peuvent (souvent) être résolus très rapidement.
3

Formulation PLNE

X
on obtient un PL nommé
“Relaxation Linéaire”
• Résolu par séparation et évaluation progressive
– on branche sur les variables de décision
– la relaxation linéaire nous donne des bornes inférieures.
Méthodes de résolution pour PL
Algorithme du simplex
• Une solution optimale se trouve nécessairement sur un point extrême.
• Donc on peut la trouver en parcourant les arêtes du polyèdre.

x2

cT

x1
Méthodes de résolution pour PL
Méthode par points Intérieurs
• Méthode dites “Barrières”
• Formulation “Primal-Dual”
• Pas de Newton

Avantages x2
• Permet de résoudre de très gros problèmes
• Preuve d’optimalité (comme le simplex)
-cT
• Preuve de convergence en un temps polynomial

x1
Comment résoudre un PLNE ?

Résoudre un PL puis arrondir ?

Solution entière

x2

Solution du PL

x1 -cT
Comment résoudre un PLNE ?

Le PL fournit une borne inf (ou sup si on maximise) sur la valeur du PLNE.
Mais en arrondissant, on peut être très loin d’une solution entière…

x2

-cT

x1
Comment résoudre un PLNE ?
Peut-on énumérer les solutions ?

• Énumération (Recherche Arborescente, Programmation Dynamique)

x1=0 x1=1 x1=2

x2=0 x2=1 x2=2 x2=0 x2=1 x2=2 x2=0 x2=1 x2=2

• Garantie de trouver une solution réalisable entière.

• Mais le temps de calcul croît exponentiellement avec la taille.


Approche combinée pour PLNE
On peut combiner les deux approches
• Résoudre le PL pour obtenir une solution.
• Créer deux sous-problèmes en ajoutant des contraintes.

x2 x2
x1≥2

-cT -cT
x1 x1≤1 x1
10

SÉP: le branchement
Imaginez un problème avec 3 variables: a, b, c є {0, 1}

Branchement

a=0 a=1

b=0 b=1 b=0 b=1

c=0 c=1 c=0 c=1 c=0 c=1 c=0 c=1

100 90 110 115 80 90 100 110


11

SEP: utilisation des bornes inférieures


Si nous pouvions calculer une borne sur le coût minimal d’un noeud.

a=0 a=1
50

b=0 b=1 b=0


70 80

c=0 c=1 c=0


85 95 80

100 90 80
Outils de Recherche
Opérationnelle en Génie - MTH 8414
Programmation en nombres entiers
• Introduction
• Résolution

Louis-Martin Rousseau
Office: A520.21 Tel.: #4569
[Link]@[Link]
13

Séparation et évaluation progressive


Mieux connu sous le nom anglais “branch and bound”

• Séparation (branch): assigne heuristiquement une valeur à une variable


• Crée deux sous problèmes

• Évaluation (borne): comparer la borne inférieure à la meilleure solution connue


• Ça ne vaut pas la peine d’explorer le sous-arbre si
• Minimisation: si BorneInf ≥ MeilleureSolution,
• Maximisation: si BorneSup ≤ MeilleureSolution,
14

SÉP pour résoudre des PLNE

Généralement la borne inférieure = la relaxation linéaire.


• On l’obtient en « relaxant » les contraintes d’intégrité.

On choisit une variable non entière et on la force soit à :


• être plus grande ou égale à l’entier supérieur ou
• être plus petite ou égale à l’entier inférieur.
15

Branch and Bound:


un exemple

max 𝑧 = 10𝑥! + 50𝑥"


s.c.
−𝑥! + 2𝑥" ≤ 5
𝑥! + 2𝑥" ≤ 14 Relaxation linéaire (ou continue)
𝑥! ≤8
𝑥! , x2 ≥0
𝑥! , 𝑥" . entiers
16

Branch and Bound


un exemple

Premier noeud
(solution optimale de la relaxation linéaire)

P0 : z0 = 282,5 Valeur optimale

x1 = 4,5 Variables non nulles


x2 = 4,75
17

Branch and Bound


un exemple

P0 noeud-père

x1 ≤ 4 x1 ≥ 5

P1 : z1 = 265 P2 : z2 = 275

x1 = 4 x1 = 5
x2 = 4,5 x2 = 4,5

noeuds-fils
18

Branch and Bound


un exemple

P0

x1 ≤ 4 x1 ≥ 5

P1 : z1 = 265 P2

x1 = 4
x2 ≤ 4 x2 ≥ 5
x2 = 4,5

P3 : z3 = 260 P4

x1 = 6 Aucune solution
x2 = 4 admissible
19

Branch and Bound


Finalement

P0
x1 ≤ 4 x1 ≥ 5

P1 P2

x2 ≤ 4 x2 ≥ 5 x2 ≤ 4 x2 ≥ 5

P5 : z5 = 240 P6 P3 : z3 = 260 P4
x1 = 4 Aucune solution x1 = 6 Aucune solution
x2 = 4 admissible x2 = 4 admissible
20

Calculs incrémentaux

En règle générale, pour calculer une solution optimale d’un nœud-fils, il sera plus rapide de modifier le tableau
optimal du nœud père plutôt que de reprendre les calculs de l’algorithme du simplexe à partir de leur début.

Reprendre à partir de la solution P0


P0

Reprendre à
partir de la
P1 P2
solution P2

P3 P4 P5 P6
21

Algorithme (problème de minimisation)


Les notations suivantes sont utilisées :

L : ensemble des sous-problèmes actifs;

zU : la borne supérieure sur la valeur optimale de MIP ;

ziLP : la valeur optimale du problème linéaire i ;

zjLP : la borne inférieure sur la valeur optimale du sous-problème j ;

X* : La meilleure solution réalisable.


22

L'algorithme comprend 6 étapes :


• Étape 1 : Initialisation
L = {relaxation initiale}, zU = ¥.
• Étape 2 : Test d'optimalité
Si L = Æ , x* est la solution optimale.
• Étape 3
Choisir un sous-problème i et l'éliminer de la liste L.
• Étape 4
Résoudre la relaxation linéaire de i. Si elle n'est pas réalisable, allez à l'étape 3
Sinon, poser ziLP et xi la valeur et la solution optimales obtenues.
• Étape 5
Si ziLP ³ zU , aller à l'étape 2. Si xi n'est pas entière, aller à l'étape 6.
Sinon zU = ziLP, x* = xi.
Éliminer de L tous les sous-problèmes j tels que zjLP ³ zU et aller à l'étape 2.
• Étape 6
Choisir une variable binaire ayant une valeur fractionnaire dans la solution xi et subdiviser le problème i à
partir de cette variable. Ajouter les nouveaux problèmes à L.
23

Algorithme (remarque)
Pour que l'algorithme soit complètement défini, on doit fixer:
• à l'étape 3, la sélection du sous-problème à résoudre et
• à l'étape 6, la règle de séparation du nœud courant.
Ces deux règles (choix de nœuds et choix de variables) sont cruciales quant à l'efficacité de l'approche de
séparation et d'évaluation progressive.

x2

Branche x2
-cT

x1

Branche x1 Branche x1
24

Un autre exemple
Soit le problème de PLNE suivant: (𝑃): min 𝑧 = −3𝑥" − 3𝑥# − 13𝑥$
sujet à :
−3𝑥" + 6𝑥# + 7𝑥$ ≤ 8
6𝑥" − 3𝑥# + 7𝑥$ ≤ 8
𝑥" ≤ 5
𝑥# ≤ 5
𝑥$ ≤ 5
𝑥" , 𝑥# , 𝑥$ ≥ 0 et entières.

Et la notation 𝑋 = 𝑥 ∈ 𝐼 $ : −3𝑥" + 6𝑥# + 7𝑥$ ≤ 8, 6𝑥" − 3𝑥# + 7𝑥$ ≤ 8

𝑧 = 𝑐 % 𝑥 = −3𝑥" − 3𝑥# − 13𝑥$


Ajout de plans coupants (branch and cut)
L’idée est d’ajouter des coupes au PL pour améliorer la qualité de la borne.

x2
l Toutes les solutions
entières sont préservées

l La solution actuelle du PL
devient non réalisable.
x1

Coupe ajoutée

Vous aimerez peut-être aussi