Chapitre 3 - Methodes Exacte
Chapitre 3 - Methodes Exacte
Chapitre 3 - Methodes Exacte
Plan
Introduction
Recherche exhaustives
Programmation dynamique
Recherche exhaustives
Programmation linéaire en nombres entiers
Programmation dynamique
Inconvénients:
Temps d’exécution prohibitif: 64 entités sur 2
processeurs (à 1 GHz): 292 ans!!!
Recherche exhaustive
Exemple: Le plus court chemin entre A et E
3 B 8
A 2 2 E
4
5
C 4
Solution: 1
D
• Énumération et évaluation de tous les chemins possibles
ABE : 11
ABCDE: 10
ABDE: 8
ACE: 9 6 Chemins possible
ACDE: 10
ABCE: 9
Recherche exhaustives
Programmation dynamique
PL PLNE
Méthodes de résolution
Branch-and-Bound
Branch-and cut
La méthode de coupes (Cutting planes method)
Plan
Introduction
Recherche exhaustives
Programmation dynamique
Algorithme de séparation et évaluation (branch
and bound)
Programmation dynamique
Exemple illustratif
La suite de fibonacci
u0 =1 , u1 =1, un = un-1 + un-2 si n>1.
Résolution par récusions (Déviser pour rigner / de Haut au bas)
Fonction U (n: entier):entier
Si n<2 alors retourner 1
Sinon retourner U (n-1) + U(n-2)
Fin
Problème:
Nombre d’appels récursifs effectué
La redondance
Programmation dynamique
F
Programmation dynamique
Méthode descendant:
On écrit un algorithme récursif mais on utilise la mémorisation pour
ne pas résoudre plusieurs fois le même problème.
On stocke dans un tableau les résultats des appels récursifs :
fonction fibonacci(n: entier)
Si F[n]=-1 alors // F[n] n'est pas défini
Si n = 0 ou n = 1 alors
F[n] := n
Sinon
F[n] := fibonacci(n-1) + fibonacci(n-2)
Finsi
Fin si
retourner F[n];
Fin
Plan
Introduction
Recherche exhaustives
Programmation dynamique
Algorithme de séparation et évaluation
(branch and bound)
Algorithme branch and bound
L’algorithme de Séparation et Évaluation est plus connu sous son
appellation anglaise Branch and Bound (B&B).
Plutôt qu’énumérer, on peut tenter d’utiliser le paradigme informatique
classique du diviser pour régner (divide&conqueer) consistant à diviser
le problème en sous problème plus simple à résoudre.
Repose sur une méthode arborescente de recherche d’une solution
optimale par séparations et évaluations, en représentant les états
solutions par un arbre d’états, avec des nœuds, et des feuilles.
La procédure de séparation et d'évaluation (branch and bound) se base
sur les axes suivants :
La construction d'une solution initiale (heuristique),
L'évaluation,
La séparation
L'exploration.
1) La construction d'une solution heuristique
Le meilleur d’abord
4) Exploration
1) Parcours en largeur:
Parcours par niveau en favorisant les sommets les plus proches de la
racine
Moins efficace que les deux autres stratégies présentées.
2) Parcours en profondeur :
Favorise les sommets les plus éloignés de la racine (de profondeur la
plus élevée).
Mène rapidement à une solution optimale en économisant la mémoire.
Cas 1:
⁻ La branche courante Si est évaluée par B(Si)≥b₀, avec b₀ la
borne supérieure initiale.
⁻ Dans ce cas, il est inutile d'explorer la branche car dans le
meilleur des cas, on va trouver une solution équivalente à la
solution heuristique.
Cas 2:
⁻ La branche courante Si est évaluée par B(Si)<b₀,
⁻ Dans ce cas, la branche sera séparée et ensuite explorée.
Algorithme branch and bound
Cas 3:
⁻ La branche est terminale : c'est à dire, elle correspond à une
solution réalisable et par la suite, elle ne peut être séparée.
⁻ Dans ce cas, si cette solution représente une valeur du critère
b₁≥b₀, alors elle sera rejetée. Si b₁<b₀, la solution sera
temporairement mémorisée comme étant la meilleure
solution et elle remplacera la solution heuristique initiale.
⁻ Dans ce cas, la valeur de b₀ sera remplacée par b₁. La
procédure est résumée dans la figure suivante.
Algorithme branch and bound
Principe de la méthode (Branch and Bond)
Relaxation
Une relaxation d’un problème (P) est un nouveau problème
(R) construit à partir de (P) et auquel on a retiré au moins
une contrainte.
Toutes les solutions de P sont des solutions de (R).
Attention ! La réciproque est fausse.
Relaxation
Une borne supérieure d’un problème de maximisation
(Borne inferieur dans le cas minimisation) P peut être
calculée en résolvant une relaxation de (P).
On a :
Cas maximisation: v(P) ≤ v(R).
Cas minimisation: v(P) ≥ v(R).
v(P) valeur optimale de (P)
v(R) valeur optimale de (R)
Relaxation
Exemple:
P R