Telechargé par souarhamid

chap1

publicité
Chapitre 1 : Notions de base sur l’optimisation combinatoire
1.Introduction
L'optimisation combinatoire à une très grande importance en recherche
opérationnelle, en mathématiques discrètes et en informatique. Son très
grand intérêt
se justifie d'une part par la grande difficulté des problèmes
d'optimisation [1] et d'autre part par le nombre d’applications pratiques qui peut
être formulé grâce à l’optimisation combinatoire [2].
Il faut citer que les problèmes d'optimisation combinatoire sont faciles à
définir, mais difficiles à résoudre.
Dans ce chapitre on va définir l’optimisation combinatoire puis donner
quelques exemples pour bien éclaircir ce concept, ensuite on expliquera la
notion de complexité des algorithmes et les différentes classes des problèmes ;
ensuite on exposera les méthodes de résolutions que ce soit exactes ou
approchées ; à la fin de ce chapitre on va consacrer une partie concernant la
programmation linéaire et ces méthodes de résolutions les plus utilisées.
1
Chapitre 1 : Notions de base sur l’optimisation combinatoire
2.Optimisation combinatoire
2.1. Définition
En langue française
Le verbe optimiser veut dire : obtenir le meilleur résultat possible par une action
adaptée.
Synonymes : améliorer, maximiser, mettre au point, optimaliser.
En informatique
Un problème d’optimisation combinatoire est défini comme un ensemble fini de
solutions et une fonction objectif associant à chaque solution une valeur (la plupart du
temps une valeur réelle) [3].
Donc, un problème d’optimisation combinatoire consiste a minimiser ou à
maximiser cette fonction sous différentes contraintes permettant de délimiter
l’ensemble de solutions réalisables (solutions admissibles) puis de trouver la solution
optimale.
Un problème d’optimisation vise à trouver une instanciation d’un certains
ensemble de variables soumises à des contraintes, de manière à maximiser ou
minimiser un critère donné. Si les domaines de valeurs des variables sont discrets, on
parle alors de problèmes d’optimisation combinatoire [4].
2.2. Exemples de problèmes combinatoires
A) Le problème du sac-à-dos (Knapsack Problem)
C’est un problème de sélection qui vise à maximiser un critère de qualité sous
une contrainte linéaire appelée contrainte de capacité de ressource. Son nom est venu
par similitude avec le problème du randonneur lorsqu’il veut remplir son sac-à-dos: il
doit choisir les objets selon leurs importances, tout en respectant la capacité de son
sac-à-doc.
D’une façon formelle on peut le décrie de la manière suivante :
Soit un ensemble de n éléments et une ressource disponible en quantité limitée b. Pour
j =1 à n, on note pj le profit associé à la sélection de l’élément j et on note aj la quantité
de ressource nécessaire à l’élément j s’il est sélectionné. Les coefficients pj et aj ont
des valeurs positives pour chaque j allant de 1 à n.
2
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Le problème du sac-à-dos consiste à choisir un sous-ensemble des n éléments
qui maximise le profit total tout en respectant la quantité de ressource disponible [4].
Pour chaque élément j on associé une variable de sélection binaire xj , elle est
égale à 1 si j est sélectionné et 0 sinon. Le profit total obtenu est donc écrit comme la
n
somme
p x
j 1
j
j
et la quantité totale de ressource utilisée comme la somme
n
a x
j 1
j
j
.
Donc le problème du sac-à-dos se modélise sous la forme:
n

Max
Z

pjxj


j 1

n

ajxj  b


j 1

 x j  0 , 1 j  1..n


B) Le problème de couverture (Set Covering Problem)
Ce problème consiste en un ensemble de points U appelé l’univers et d’une
collection S de sous-ensembles de A .On dit qu’un ensemble A U couvre x  U si x
 A. Le but est de trouver une sélection des ensembles de S qui couvre chaque
élément de l’univers exactement une fois (Figue 1) [5] [6].
L'objectif de ce problème est de déterminer une couverture de coût minimum.
Un exemple d'application classique est celui de l'ouverture d'un nombre minimum de
magasins qui peut couvrir une certaine zone donnée.
Figure 1.1 Une instance d’un problème de couverture
3
Chapitre 1 : Notions de base sur l’optimisation combinatoire
C) Le Problème d’affectation
Ce problème à pour objectif d’établir des liens entre les éléments de deux
ensembles distincts, de manière à minimiser un coût et en respectant des contraintes
d’unicité de lien pour chaque élément [4].
On considère
tâches et
agents, avec
. Pour tout couple
, l’affectation de la tâche i à j implique un coût de
réalisation noté
.Chaque tâche doit être réalisée une seule fois et chaque
agent peut réaliser au maximum une tâche.
On doit affecter les tâches aux agents, de manière à minimiser le coût total de
réalisation et en respectant les contraintes de réalisation des tâches et de disponibilité
des Agents.
A chaque couple tâche/agent
, on associe une variable d’affectation binaire
Le coût total de réalisation des tâches est égal à la somme :
Le nombre d’agents réalisant la tache i est donné par :
Le nombre de tâches réalisées par l’agent j est donné par :
Donc le problème d’affectation sera modélisé sous la forme :
4
:
Chapitre 1 : Notions de base sur l’optimisation combinatoire
2.3. La théorie de la complexité
La complexité d’un problème donné est observée selon deux axes: axe temporel
(complexité temporelle) et axe spatial (complexité spatiale). L’objectif de la
complexité temporelle est d’évaluer le temps de calcul nécessaire pour résoudre un
problème donné. Tandis que la complexité spatiale à pour objectif d’estimer les
besoins en mémoire (l’espace mémoire demandé) pour la résolution d’un problème
donné. La complexité d’un problème donné est estimée en fonction du nombre
d’instructions nécessaire pour aboutir à la solution du problème posé. Elle est en
relation étroite avec la taille du problème en question. En effet, elle exprime un
rapport entre la taille du problème, le temps de calcul nécessaire et l’espace mémoire
requis.
La théorie de la complexité mesure la difficulté des problèmes par l’étude de la
complexité de solutions algorithmiques proposées. Elle associe à chaque algorithme
résolvant un problème donné une fonction de complexité et mesure les ressources
nécessaires pour la résolution d’un problème posé. En effet, elle classe l’ensemble des
problèmes le temps de calcul nécessaire et l’espace mémoire requis.
La théorie de la complexité est étendue aux problèmes d’optimisations malgré
qu’elle était concentrée sur des problèmes de décision [7].
La théorie de la complexité classe les problèmes selon leur complexité en deux
classes principales: la classe P (Polynomial time) et la classe NP (Non deterministic
Polynomial time). En outre, elle partage les problèmes de la classe NP en deux sous
classes: NP-Complet et NP-Difficile.
2.3.1. Les problèmes de la classe P
Ce sont les problèmes qui peuvent être résolus en un temps de calcul
polynomial par rapport à la taille de l’instance du problème à traiter. Ils sont souvent
faciles à résoudre par des algorithmes efficaces dont le nombre d’instructions
nécessaire pour la résolution d’un problème donné est borné par une fonction
polynomiale par rapport à la taille du problème [6].
Le calcul du plus grand diviseur commun est un exemple d’un problème
appartenant à la classe P.
5
Chapitre 1 : Notions de base sur l’optimisation combinatoire
2.3.2. Les problèmes de la classe NP
C’est l’ensemble de problèmes qui peuvent être résolus avec une machine nondéterministe et admettent un algorithme polynomial pour tester la validité d'une
solution du problème traité (i.e. il est possible de vérifier que la solution proposée est
correcte en un temps polynomial par rapport à la taille du problème).
Le problème du voyageur de commerce, Le problème du sac à dos,
les
problèmes d’ordonnancement, le problème de coloration de graphes sont des exemples
de problèmes de la classe NP.
2.3.2.1. Les problèmes NP-Complets
Ce sont les problèmes de décision pour lesquels il n’existe pas d’algorithme
permettant leur résolution en un temps polynomial. Selon Garey et Johnson, un
problème X est un problème NP-Complet s’il appartient à la classe NP, et si quelque
soit le problème qui appartient aussi à la classe NP, on peut le réduire au problème X
en un temps polynomial [7]. Selon Ferro et ces collègues, un problème X est un
problème NP-Complet s’il appartient à la classe NP, et si on peut le réduire à un
problème connu dans NP-Complet [8]. Par conséquent, la NP-Complétude est un
problème décisionnel. Le premier problème qui a été démontré comme étant NPComplet a été celui de la satisfiabilité d’une formule logique binaire (SAT). Cela a été
établi en 1971 par Stephen Cook dans son théorème publié dans [9].
2.3.2.2. Les problèmes NP-Difficiles
Cette classe englobe les problèmes de décision et les problèmes d’optimisation.
Les problèmes NP-Difficiles sont aussi difficiles que les problèmes NP-Complets. Si
un problème de décision associé à un problème d’optimisation P est NP-Complet alors
P est un NP-Difficile [10]. Par conséquent, afin de prouver qu’un problème
d’optimisation est NP-Difficile, il suffit de montrer que le problème de décision
associé à P est NP-Complet [11]. Il est à noter que jusqu’à maintenant, aucun
algorithme polynomial n’est connu pour résoudre ce type de problèmes.
2.3.2.3. Les problèmes NP-Complets versus les problèmes NP-Difficiles
Les problèmes NP-Complets et les problèmes NP-Difficiles sont deux types de
problèmes difficiles. Aucun algorithme polynomial permettant leur résolution n’a été
6
Chapitre 1 : Notions de base sur l’optimisation combinatoire
trouvé. En fait,
les algorithmes proposés dans la littérature sont de complexité
exponentielle. La différence entre les problèmes de ces deux classes est dans le type de
la solution attendue. Les problèmes NP-Complets sont des problèmes décisionnels
dont la réponse attendue pourra être « oui ou non ». Comme l’exemple du problème
du cycle hamiltonien qui consiste à répondre à la question: Est-ce qu’il existe un cycle
permettant de parcourir tous les sommets d’un graphe non orienté en passant par
chacun une seule fois ?
Par contre, les problèmes NP-Difficiles concernent beaucoup plus les problèmes
d’optimisation ou on cherche la solution optimale. Comme le cas du problème du
voyageur de commerce dont on cherche le plus court chemin permettant de parcourir
un ensemble de sommets (villes) en passant par chacun une seule fois.
2.3.2.4. La relation entre les problèmes P et NP
La question « Est-ce que la classe P est identique à la classe NP ? » est une des
questions les plus importantes qui n’a pas de réponse en informatique théorique. En
fait, la réponse à cette question a construit un champ de recherche ouvert. La réponse à
cette question par « oui », revient à montrer que tous les problèmes de la classe NP
sont dans la classe P. Autrement dit, la réponse à cette question revient à répondre à la
question: Peut-on trouver en temps polynomial ce qu’on peut prouver en temps
polynomial ? Cependant, aucune démonstration n’a été
que
, ni que
. La relation évidente c’est que
faite pour prouver
. En effet, un
problème qui peut être résolu en un temps polynomial par un algorithme déterministe,
pourra aussi être résolu par un algorithme non déterministe.
Selon la figure suivante, les problèmes NP faciles à résoudre peuvent construire
des problèmes de la classe P. Les autres problèmes, i.e. les plus difficiles à résoudre,
peuvent être partagés en deux autres groupes: le groupe des problèmes NP-Complets et
le groupe des problèmes dont le statut est indéterminé car ces problèmes n’ont pas été
prouvés comme appartenant à la classe P ni à la classe NP-Complet [12], comme le cas
du problème d’isomorphisme de deux graphes [12]. En effet, il semblait que ce
problème appartient à la classe P [6]. Néanmoins, jusqu’à ce jour aucune preuve n’a
été montrée [13].
7
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Figure 1.2 La relation entre les problèmes P, NP et NP-Complets. [12]
3.modélisation des problèmes d’optimisation combinatoire
La résolution (exacte ou approchée) des problèmes d’optimisation combinatoire
(POC) nécessite une modélisation efficace et adaptée qui comporte les types suivants :
Programme Linéaire (PL)
L’objectif de la programmation linéaire (PL) est de résoudre de nombreux problèmes
économiques et industriels. La PL désigne la façon de résoudre les problèmes dont la
fonction objectif et les contraintes du problème sont toutes linéaires [25].
Si les solutions possibles S sont un ensemble de variables à valeurs réelles et si
on a des inégalités linéaires comme contraintes à satisfaire et si la fonction objectif F
est une fonction linéaire en ces variables, alors on parle d'un problème de
programmation linéaire (PL). Plusieurs problèmes réels issus de la recherche
opérationnelle peuvent être exprimés comme PL. Plusieurs algorithmes de résolution
de différents problèmes d'optimisation sont basés sur la résolution de problèmes
linéaires.
Un programme linéaire peut être défini comme suit [26] :
𝑀𝑖𝑛 𝐶 𝑇 𝑥
𝐴𝑥 ≥ 𝑏
𝑥 ∈ 𝑅𝑛 , 𝐴 ∈ 𝑅𝑚𝑥𝑛 , 𝑏 ∈ 𝑅𝑚
Les Programme Linéaire en Nombre Entier (PLNE)
Les problèmes qui nécessitent pour leur modélisation, l’utilisation de variables entières
(Problème de découpe, sac à dos entier,…), on obtient un programme linéaire en
nombre entiers (PLNE) :
8
Chapitre 1 : Notions de base sur l’optimisation combinatoire
𝑀𝑖𝑛 𝑜𝑢 𝑀𝑎𝑥 𝑍 = ∑𝑛𝑗=1 𝑐𝑗 𝑥𝑗
𝑛
∑ 𝑎𝑖𝑗 𝑥𝑗 (≤, =, ≥)𝑏𝑗 ∀𝑖
𝑗=1
𝑙𝑗 ≤ 𝑥𝑗 ≤ 𝑢𝑗 𝑥𝑗 𝑒𝑛𝑡𝑖𝑒𝑟
Les Programme Linéaire en Nombre Entiers à variable binaires (PLNE (0,1))
L’outil le plus performant de formulation d’une multitude de problèmes (Sac à dos,
PVC,…..) est incontestablement les variables binaires 0-1.Elles permettent de
représenter le fait qu’un événement se réalise ou non au sein d’une solution qu’on
recherche (x=1 si l’évènement se réalise, 0 dans le cas contraire). La structure ainsi
obtenue permet de représenter diverses structures dans les graphes telles que des
chemins, des cycles, des arbres, etc. La formulation conduit à un programme linéaire
en nombre entier à variables binaires 0-1 (PLNE 0-1) dont voici la structure
algébrique :
𝑀𝑖𝑛 𝑜𝑢 𝑀𝑎𝑥 𝑍 = ∑𝑛𝑗=1 𝑐𝑗 𝑥𝑗
𝑛
∑ 𝑎𝑖𝑗 𝑥𝑗 (≤, =, ≥)𝑏𝑗 ∀𝑖
𝑗=1
𝑥𝑗 ∈ {0,1}
Les Programme Non Linéaire (PNL)
D’autres problèmes sont modélisés par des contraintes non linéaires et/ou une fonction
objectif non linéaire (problème d’affectation quadratique, support vector machine,…).
On obtient des programmes non linéaires (PNL). Les formes les plus fréquentes des
PNL sont 𝑥𝑖 𝑥𝑗 𝑜𝑢 𝑥𝑖2 dont voici la structure algébrique :
𝑀𝑖𝑛 𝑜𝑢 𝑀𝑎𝑥 𝑓(𝑥)
𝑓𝑖 (𝑥) ≤ 0
ℎ𝑗 (𝑥) = 0
𝑓, 𝑓𝑖 , ℎ𝑗 𝑓𝑜𝑛𝑐𝑡𝑖𝑜𝑛𝑠 𝑛𝑜𝑛 𝑙𝑖𝑛é𝑎𝑖𝑟𝑒𝑠
9
Chapitre 1 : Notions de base sur l’optimisation combinatoire
4.Méthodes de résolutions
4.1.Classification des méthodes de résolution
La diversité des problèmes rencontrés dans notre vie quotidienne a mené les
chercheurs à mettre en œuvre des méthodes de résolution et à faire de grands efforts
pour améliorer leurs performances en termes de temps de calcul nécessaire et/ou de la
qualité de la solution proposée. Après plusieurs années de recherche, de nombreuses
méthodes de résolution de problèmes de différentes complexités ont été proposées
avec une grande diversité au niveau du principe, de la stratégie et des performances.
Ceci à mener de
regrouper les différentes méthodes de résolution de différents
problèmes en deux classes principales: la classe de méthodes exactes et la classe de
méthodes approchées. L’hybridation des méthodes de ces deux classes a donné
naissance à une pseudo classe qui englobe des méthodes dites hybrides (Figure 3).
Les méthodes exactes trouvent avec incertitude la solution optimale, mais elles
sont très exigeantes en termes de temps de calcul et de l’espace mémoire nécessaire.
Pour cela, elles sont beaucoup plus utilisées pour la résolution de problèmes faciles.
Pour avoir une solution de bonne qualité (semi optimale) avec temps de calcul et un
espace mémoire raisonnable, les chercheurs ont proposé un autre type de méthodes de
résolution, communément connues par les méthodes approchées. Elles permettent de
fournir des solutions de très bonne qualité en un temps de calcul raisonnable. Elles
sont plus pratiques pour la résolution de problèmes difficiles ou de problèmes dont on
cherche des solutions en un bref délai. Ces méthodes sont divisées en deux catégories:
les méthodes heuristiques et les méthodes métaheuristiques (Figure 1.3).
Les méthodes heuristiques sont spécifiques à un problème particulier. Elles
nécessitent des connaissances du domaine du problème traité. Par contre les
métaheuristiques sont des méthodes générales, des heuristiques polyvalentes
applicables sur une grande gamme de problèmes. Elles peuvent construire une
alternative aux méthodes heuristiques lorsqu’on ne connaît pas
spécifique à un problème donné.
10
l’heuristique
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Les méthodes de résolution de problème d’optimisation
Exactes
Approchées
La programmation
dynamique
Heuristiques
Hybrides
Métaheuristiques
L’algorithme
A*
A base de
Solution uniques
A base de
population de sol.
Solution uniques
Optim par essaim
De particules
Le simplexe
La recherche
L’Algorithme
evolutionnaire
Système
immunitaire
L’Algorithme
génétique
Optim par colon.
de fourmis
La recherche
par Harmonie
Optim par colon.
d’abeilles
Backtracking
B&(B,C,P,P&C)
Locale simple
Le recuit simulé
La recherche
tabou
La VNS
L’ILS
Les algo à base
d’intelligence
par essaim
Solution uniques
La recherche
coucou
A base de
population de sol.
Solution uniques
La GLS
Figure 1.3 Taxonomie des méthodes d’optimisation combinatoire.
4.2.Les méthodes exactes
L’utilité des méthodes exactes est dans le fait quelles assurent l’obtention de la
solution optimale du problème traité. En fait, elles permettent de parcourir l’ensemble
de l’espace de recherche de manière à assurer l’obtention la solution optimale.
Les méthodes exactes nécessitent un coût de recherche souvent important en
termes de ressources
requises. Le temps de recherche et/ou l’espace mémoire
nécessaire pour l’obtention de la solution optimale par une méthode exacte sont
souvent trop grands, notamment avec des problèmes de grandes tailles.
11
Chapitre 1 : Notions de base sur l’optimisation combinatoire
La complexité de ce type d’algorithme croit d’une façon exponentielle en
fonction de
la taille du problème à traiter, elle devient très importante pour les
problèmes qui contient un nombre élevé de variables, fonctions objectifs et/ou critères.
4.2.1.La méthode séparation et évaluation (Branch and Bound)
Cet algorithme 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. [14]
Le branch-and-bound est basé sur trois axes principaux:
 L’évaluation,
 La séparation,
 La stratégie de parcours.
L’évaluation
L’évaluation sert à limiter l’espace de recherche en éliminant les sous ensembles
qui ne contiennent pas la solution optimale. L’objectif est d’essayer d’évaluer l’intérêt
de l’exploration d’un sous-ensemble de l’arborescence. Le branch and bound utilise
une élimination de branches dans l’arborescence de recherche de la manière suivante:
La recherche d’une solution de coût minimal, consiste à mémoriser la solution de
plus bas coût rencontré pendant l’exploration, et à comparer le coût de chaque nœud
parcouru à celui de la meilleure solution. Si le coût du nœud considéré est supérieur au
meilleur coût, on arrête l’exploration de la branche et toutes les solutions de cette
branche seront nécessairement de coût plus élevé que la meilleure solution déjà
trouvée.
La séparation
La séparation consiste à dissocier le problème en sous-problèmes. Ainsi, en
résolvant tous les sous-problèmes et en gardant la meilleure solution trouvée, on est
assuré d’avoir résolu le problème initial. Cela revient à construire un arbre permettant
d’énumérer toutes les solutions. L’ensemble de neouds de l’arbre qu’il reste encore à
parcourir comme étant susceptibles de contenir une solution optimale, c’est-à-dire
encore à diviser, est appelé ensemble des neouds actifs.
12
Chapitre 1 : Notions de base sur l’optimisation combinatoire
La stratégie de parcours
La largeur d’abord: Cette stratégie favorise les sommets les plus proches de la
racine en faisant moins de séparations du problème initial. Elle est moins
efficace que les deux autres stratégies présentées.
La profondeur d’abord: Cette stratégie avantage les sommets les Plus éloignés
de la racine (de profondeur la plus élevée) en appliquant plus de séparations au
problème initial. Cette voie mène rapidement à une solution optimale en
économisant la mémoire.
Le meilleur d’abord: Cette stratégie consiste à explorer des sous problèmes
possédant la meilleure borne. Elle permet aussi d’éviter l’exploration de tous les
sous-problèmes qui possèdent une mauvaise évaluation par rapport à la valeur
optimale.
4.2.2.La méthode de coupes planes (Cutting-Plane)
Cette méthode a été mise au point par A. Schrijver en 1986 [15] pour résoudre
les problèmes d’optimisation combinatoire qui sont formulés sous la forme du
programme linéaire suivant :
𝑀𝑖𝑛 𝐶 𝑇 𝑥
𝐴𝑥 ≥ 𝑏
𝑥 ∈ 𝑅𝑛
Dans le cas, où le problème d’optimisation combinatoire en question est de
grande taille pour le représenter explicitement en mémoire ou pour qu’il tient dans un
solveur de programmation linéaire, on utilise une technique qui consiste à enlever une
partie de ces contraintes et de résoudre le problème relaxé. La solution optimale est
contenue dans l’ensemble de solutions réalisables de cette relaxation.
Cette méthode sert à résoudre un problème relaxé, et à ajouter au fur à mesure les
contraintes du problème initial. On définit une contrainte pour le problème de
minimisation par le couple (s, s0) où 𝑠 ∈ 𝑅𝑛 et 𝑠0 ∈ 𝑅 , cette contrainte est dite violée
par la solution courante 𝑥 − si pour tout 𝑦 ∈ {𝑥: 𝐴𝑥 ≥ 𝑏}, on à 𝑠 𝑇 𝑥 − < 𝑠0 𝑒𝑡 𝑠 𝑇 𝑦 ≥
𝑠0 ,on appelle alors ces contraintes des coupes planes. L’algorithme sera arrêté
13
Chapitre 1 : Notions de base sur l’optimisation combinatoire
lorsqu’il n’ya plus de contraintes violées par la solution courante, celle-ci sera la
solution optimale pour le problème initial.
4.2.3.La méthode Branch and Cut
Cette méthode fait la combinaison entre l’algorithme de la méthode Branch and
Bound et celui de la méthode des coupes planes. Lors de la résolution d’un programme
linéaire en nombres entiers, la méthode Branch and Cut procède au premier lieu par la
relaxation du problème puis appliquer l’algorithme de la méthode des coupes planes
sur la solution trouvée. Si on ne trouvera pas une solution entière alors on divise le
problème en plusieurs sous-problèmes qui seront résolus de la même manière.
On veut résoudre le problème d’optimisation combinatoire suivant :
𝑀𝑖𝑛 𝐶 𝑇 𝑥
𝐴𝑥 ≥ 𝑏
𝑥 ∈ 𝑅𝑛 , 𝐴 ∈ 𝑅𝑚𝑥𝑛 , 𝑏 ∈ 𝑅𝑚
L’algorithme de branch and cut pour ce problème sera le suivant :
Liste des problèmes = ∅;
Initialiser le programme linéaire par le sous problème de contraintes
(A1, b1) avec A1 ∈ Rm1xn et b1 ∈ Rm1 avec m1 ≪ m;
Etapes d’évaluation d’un sous problème
Calculer la solution optimale 𝑥 − du programme linéaire 𝑀𝑖𝑛 𝑐 𝑡 𝑥: 𝐴1 𝑥 ≥ 𝑏1 , 𝑥 ∈ 𝑅 𝑛
Solution courante=Appliquer la méthode des coupes polyédrales();
Fin étapes d’évaluation
Si Solution courante est réalisable alors
𝑥 ∗ = 𝑥 − est la solution optimale de 𝑀𝑖𝑛 𝑐 𝑡 𝑥: 𝐴𝑥 ≥ 𝑏, 𝑥 ∈ 𝑅 𝑛
Sinon Ajouter le problème dans Liste des sous problèmes;
FinSi
Tantque Liste des sous problèmes ≠ ∅ faire
Sélectionner un sous problème;
Brancher le problème;
Appliquer les étapes d’évaluation;
FinTantque
Algorithme 1.1 Branch and Cut pour un problème de minimisation
14
Chapitre 1 : Notions de base sur l’optimisation combinatoire
4.2.4.La programmation dynamique
La programmation dynamique est utilisée pour résoudre une catégorie
particulière de problèmes d'optimisation sous contrainte.
Elle est utilisée pour la résolution des problèmes d'optimisation dont la fonction
objectif est définie comme une somme de fonctions monotones non-décroissantes des
ressources. On peut appliquer cette méthode à plusieurs problèmes complètement
différents tels que les problèmes statistiques, continus, discrets [16]. La résolution d’un
problème en programmation dynamique se base sur la décomposition de ce dernier en
sous-problèmes plus simples. A chaque sous-problème correspond un ensemble
d’options, chaque option est représenté par un coût dans la fonction objectif [17].
Les algorithmes basés sur la programmation dynamique sont dans la plus part du
temps faciles à implémenter et très efficaces pour la résolution des problèmes de
petites et moyennes tailles. Par contre son application sur des instances de grandes
tailles est généralement très coûteuse voire même impossible pour des raisons de
complexité spatiale et/ou temporelle.
4.3.Les méthodes approchées
Les métaheuristiques donnent des solutions de bonne qualité en temps
raisonnable pour des problèmes combinatoires réputés difficiles pour lesquels on ne
connaît pas de méthode classique plus efficace. Ces méthodes sont conçues pour
échapper aux minima locaux, elles sont des structures générales dont il faut préciser
les composants en fonction du problème par exemple les solutions de départ ou les
critères d’arrêt. Les métaheuristiques sont dans la plus part du temps des algorithmes
itératifs qui convergent vers un optimum global en évaluant une certaine fonction
objectif. Elles se conduisent comme des algorithmes de recherche qui conduisent à la
meilleure approximation de la solution [18]. L'intérêt croissant des métaheuristiques à
mis en évidence la nécessité de mettre en place des machines avec des capacités
calculatoires énormes, ceci a permis de concevoir des métaheuristiques de plus en
plus complexes qui ont permet la résolution de plusieurs problèmes à caractère NPdifficile.
15
Chapitre 1 : Notions de base sur l’optimisation combinatoire
4.3.1.Le recuit simulé (simulated annealing)
Le recuit simulé (SA) est une méthode de recherche locale qui utilise une
certaine stratégie pour éviter les minima locaux. Cette métaheuristique est basée sur
une ancienne technique utilisée par les métallurgistes qui, pour obtenir un alliage sans
défaut, faisant alterner les cycles de réchauffage (ou de recuit) et de refroidissement
lent des métaux.
La métaheuristique du recuit simulé s’inspire de l’algorithme de Métropolis [19],
dont le principe (pour un problème de maximisation) peut être résumé comme suit:
Démarrer la recherche avec une solution initiale s.
Affecter une valeur initiale à la température T.
Calculer la fitness f(s) de la solution initiale s.
Générer une solution s’ voisine de s.
Calculer la fitness f (s’) de s’ ;
Calculer l’écart de qualité (fitness) entre la solution s et la solution s’ comme suit:
∆(𝑓) = 𝑓(𝑠 ′ ) − 𝑓(𝑠)
𝑆𝑖 ∆(𝑓) >= 0 𝑎𝑙𝑜𝑟𝑠 𝑠 ← 𝑠′
𝑠𝑖𝑛𝑜𝑛 𝑔é𝑛é𝑟𝑒𝑟 𝑢𝑛 𝑛𝑜𝑚𝑏𝑟𝑒 𝑎𝑙é𝑎𝑡𝑜𝑖𝑟𝑒 𝑟 ∈ [0,1]
Finsi
𝑆𝑖 𝑟 < exp (
∆(𝑓)
𝑇
) 𝑎𝑙𝑜𝑟𝑠 𝑠 ← 𝑠′
Finsi
Algorithme 1.2 Recuit simulé pour un problème de maximation
Le recuit simulé permet d’accepter une solution de mauvaise qualité que la
solution courante dans le but de diversifier la recherche et éviter le piège de l’optimum
local. Le fait d’accepter de telles solutions peut mener la recherche vers la meilleure
solution (l’optimum global) car cette dernière peut faire partie du voisinage d’une
mauvaise solution et non pas d’une bonne solution. D’autre part l’acceptation de
solutions de mauvaises qualités peut conduire vers une perte de la meilleure solution
rencontrée au cours de la recherche et entraine une convergence vers une solution de
mauvaise qualité que la solution déjà trouvée. Pour palier à ce problème on va ajouter
une variable qui permet la mémorisation de la meilleure solution trouvée.
16
Chapitre 1 : Notions de base sur l’optimisation combinatoire
4.3.2.La recherche tabou (RT)
C’est une métaheuristique à base d’une solution unique qui a été proposée par
Glover en 1986 [20]. Elle est une méthode de recherche locale avancée qui utilise un
ensemble de règles et de mécanismes afin de guider la recherche de manière
intelligente [21].
La stratégie de cette méthode pour trouver la solution optimale est basée sur deux
points :
L’utilisation de la notion du voisinage.
L’utilisation d’une mémoire permettant le guidage intelligent du processus de la
recherche.
La recherche tabou ne s’arrête pas au premier optimum local rencontré mais elle
examine un échantillonnage de solutions du voisinage de s et garde la meilleure
solution voisine s’ même si celle-ci est de mauvaise qualité que la solution courante s
et ceci pour éviter d’entrer dans le piège de l’optimum local et donner au processus de
la recherche la possibilité de trouver d’autres solutions afin de rencontrer l’optimum
global. Les solutions de mauvaise qualité peuvent avoir de bons voisinages et donc
guider la recherche vers de meilleures solutions. Afin d’éviter le phénomène de
cyclage (c.à.d on peut revisiter des solutions déjà parcourues plusieurs fois), la
recherche tabou utilise une mémoire pour sauvegarder les dernières solutions
rencontrées afin ne pas les visiter dans les prochaines itérations. Cette mémoire est
appelée « la liste tabou », d’où le nom de la métaheuristique tabou. La taille de la liste
tabou est limitée, ce qui rend impossible l’enregistrement de toutes les solutions
rencontrées. Pour cela cette liste fonctionne comme une pile FIFO, où la plus ancienne
solution sera écartée pour laisser place à la dernière solution rencontrée.
L’algorithme de la recherche tabou fonctionne comme suit :
Début
Construire une solution initiale s ;
Calculer la fitness f(s) de s ;
Initialiser une liste tabou vide ;
sbest=s ;
Tant que le critère d’arrêt n’est pas vérifié faire
17
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Trouver la meilleure solution s’ dans le voisinage de s qui ne soit pas
tabou ;
Calculer f(s’) ;
Si fitness de (s’) est meilleure que fitness de (sbest) alors sbest =s’ ;
Fin Si
Mettre à jour la liste tabou ;
s=s’ ;
Fin Tant que
Retourner sbest ;
Fin
Algorithme 1.3 Recherche tabou
Il faut signaler qu’il existe plusieurs variantes de la recherche tabou. Ces variantes
dépendent principalement du choix du voisinage et de la façon de gérer la liste tabou.
4.3.3.Les algorithmes génétiques
Ces algorithmes sont basés sur les mécanismes de la génétique et de la sélection
naturelle. Ils ont été ajustés à l’optimisation combinatoire par John Holland [22], puis
ils sont enrichis par les travaux de David Goldberg.
On trouve dans ce contexte le même vocabulaire utilisé dans la théorie de
l’évolution et de la génétique :
Un gène: Ensemble de symboles qui représente la valeur d’une variable.
généralement, un gène est représenté par un bit, un entier, un réel ou un caractère.
Un chromosome: Ensemble de gènes, présentés dans un ordre donné de façon à
prendre en considération les contraintes du problème.
Un individu: Un ou plusieurs chromosomes. C’est une
solution possible au
problème posé.
Une population: Ensemble d’individus.
Une génération: Ensemble d’itérations permettant le passage d’une population à
une autre.
Le fonctionnement de cet algorithme est comme suit :
18
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Début
Initialiser les paramètres nécessaires ;
Initialiser une population de N individus ;
Evaluer les N individus ;
Tant que la condition d’arrêt n’est pas satisfaite faire
Utiliser l’opérateur de sélection pour sélectionner K individus ;
Appliquer l’opérateur de croisement sur les K individus avec la probabilité Pc ;
Appliquer l’opérateur de mutation sur les individus avec la probabilité Pm ;
Utiliser l’opérateur d’évaluation pour évaluer les enfants obtenus ;
Utiliser l’opérateur de sélection pour remplacer quelques
individus parents par des individus enfants ;
Fin Tant que
Retourner la ou les meilleures solutions ;
Fin
Algorithme 1.4 Algorithme génétiques
La mise en ouvre d’un algorithme génétique nécessite ce qui suit :
Le codage des données
Le but de cette étape est de définir et coder convenablement le problème. On va
associe à chaque point de l’espace de recherche une structure de données spécifique
caractérisant chaque individu de la population, appelée génotype ou ensemble de
chromosomes.
Ce codage est primordial dans l’élaboration d’un algorithme génétique dont
dépend notamment l’implémentation des opérateurs de transformations. Cette phase
précise la structure de données qui va être utilisée pour coder le génotype des individus
de la population. Le codage doit donc être adapté au problème traité.
Génération de la population initiale
Il faut bien préciser les dispositifs de départ qui concerne la population initiale
que nous allons faire évoluer, car ceci influence fortement sur la rapidité de
l’algorithme. Toutefois, une initialisation aléatoire est plus simple à réaliser: les
valeurs des gènes sont tirées aléatoirement selon une distribution uniforme. Il peut
être utile de guider la génération initiale vers des sous domaines intéressants de
l’espace de recherche. Par exemple dans une recherche d’optima pour un problème
19
Chapitre 1 : Notions de base sur l’optimisation combinatoire
d’optimisation sous contraintes, on produira de préférence des éléments satisfaisant les
contraintes. La population initiale doit être diversifiée et de taille importante pour
qu’on puisse parcourir l’espace d’état dans un temps limité.
La fonction d’adaptation (Fitness)
Dans cette étape on va faire l’évaluation de la Fitness pour mesurer la
performance de chaque individu. On doit fixer de façon exacte une mesure pour bien
jugé la qualité de l’individu et pouvoir le comparer aux autres. Son calcul peut ainsi
être quelconque, que ce soit une simple équation ou une fonction affine. La façon la
plus simple est de déduire la fonction d’adaptation à partir du critère d’optimisation.
La Sélection
Cette phase permet d’éliminer les mauvais individus et de ne garder que les
meilleurs lors du passage d’une génération à une autre. Ce processus est basé sur la
performance de l’individu. La sélection doit donnée la chance aux mauvais éléments,
car ces derniers peuvent par croisement ou mutation, générer une bonne descendance
par rapport au critère d’optimisation. Il ya plusieurs techniques de sélection, dont on
va citer quelques unes :
Sélection uniforme: Chaque individu aura la même chance que les autres.
Sélection par tournoi: On choisi deux individus au hasard, le mieux sera
sélectionné.
Élitisme: On sélectionne les meilleurs individus de la population.
Le Croisement
Cet opérateur enrichit la diversité de la population en manipulant la structure des
chromosomes, il se fait avec deux parents et génère deux enfants dans le but d’àvoir au
moins un qui hérite de bons gènes des deux parents.
La mutation
C’est le changement dans le code génétique d’un individu pour avoir une certaine
diversité dans la population et éviter ainsi d’être tombé dans les optimums locaux.
4.3.4.Les algorithmes de colonies de fourmis
L’idée originale provient de l’observation de l’exploitation des ressources
alimentaires chez les fourmis. En effet, celles-ci, bien qu’ayant individuellement des
20
Chapitre 1 : Notions de base sur l’optimisation combinatoire
capacités cognitives limitées, sont capables collectivement de trouver le chemin le plus
court entre une source de nourriture et leur nid.
Des biologistes ont ainsi observé, dans une série d’expériences menées à partir
de 1989, qu’une colonie de fourmis ayant le choix entre deux chemins d’inégale
longueur menant à une source de nourriture avait tendance à utiliser le chemin le plus
court.
Un modèle expliquant ce comportement est le suivant :
1. Une fourmi (appelée « éclaireuse ») parcourt plus ou moins au hasard
l’environnement autour de la colonie ;
2. Si celle-ci découvre une source de nourriture, elle rentre plus ou moins
directement au nid, en laissant sur son chemin une piste de phéromones ;
3. Ces phéromones étant attractives, les fourmis passant à proximité vont avoir
tendance à suivre, de façon plus ou moins directe, cette piste ;
4. En revenant au nid, ces mêmes fourmis vont renforcer la piste ;
5. Si deux pistes sont possibles pour atteindre la même source de nourriture, celle
étant la plus courte sera, dans le même temps, parcourue par plus de fourmis
que la longue piste ;
6. La piste courte sera donc de plus en plus renforcée, et donc de plus en plus
attractive ;
7. La longue piste, elle, finira par disparaître, les phéromones étant volatiles ;
8. A terme, l’ensemble des fourmis a donc déterminé et « choisi » la piste la plus
courte.
Les fourmis utilisent l’environnement comme support de communication : elles
échangent indirectement de l’information en déposant des phéromones, le tout
décrivant l’état de leur « travail ». L’information échangée a une portée locale, seule
une fourmi située à l’endroit où les phéromones ont été déposées y a accès. Ce système
porte le nom de « stigmergie », et se retrouve chez plusieurs animaux sociaux.
Le mécanisme permettant de résoudre un problème trop complexe pour être
abordé par des fourmis seules est un bon exemple de système auto-organisé. Ce
système repose sur des rétroactions positives (le dépôt de phéromone attire d’autres
fourmis qui vont la renforcer à leur tour) et négatives (la dissipation de la piste par
21
Chapitre 1 : Notions de base sur l’optimisation combinatoire
évaporation empêche le système de s'emballer). Théoriquement, si la quantité de
phéromone restait identique au cours du temps sur toutes les branches, aucune piste ne
serait choisie. Or, du fait des rétroactions, une faible variation sur une branche va être
amplifiée et permettre alors le choix d’une branche. L'algorithme va permettre de
passer d'un état instable où aucune branche n'est plus marquée qu'une autre, vers un
état stable où l'itinéraire est formé des « meilleures » branches.
Figure 1.4 Expérience du pont à double branche.
1) la première fourmi trouve la source de nourriture (F), via un chemin quelconque (a),
puis revient au nid (N) en laissant derrière elle une piste de phéromone (b).
2) les fourmis empruntent indifféremment les quatre chemins possibles, mais le
renforcement de la piste rend plus attractif le chemin le plus court.
3) les fourmis empruntent le chemin le plus court, les portions longues des autres
chemins perdent leur piste de phéromones.
On va présenter dans ce qui ce suit l’algorithme de fourmis qui a été proposé
pour la première fois pour résoudre le problème du voyageur de commerce [23]:
Début
Initialiser une population de m fourmis ;
Evaluer les m fourmis ;
Tant que la condition d’arrêt n’est pas satisfaite faire
Pour i=1 à m faire
Construire le trajet de la fourmi i;
22
Chapitre 1 : Notions de base sur l’optimisation combinatoire
Déposer des phéromones sur le trajet de la fourmi i;
Fin pour
Evaluer les m fourmis;
Evaporer les pistes de phéromones;
Fin Tant que
Retourner la ou les meilleures solutions ;
Fin
Algorithme 1.5 Colonies de fourmis pour le problème du voyageur de commerce
4.3.5.L’Optimisation par Essaim Particulaire
Cette métaheuristique à été proposée par Kennedy et Eberhart en 1995 [24]. Elle
est inspirée du comportement social des animaux évoluant en essaim. Initialement, ils
cherchaient à simuler la capacité des oiseaux à voler de façon synchrone et leur
aptitude à changer brusquement de direction sans perdu sa formation optimale.
Chaque individu n’utilise pas seulement sa propre mémoire mais utilise aussi les
informations concernant ses proches voisins pour orienter son déplacement. Il utilise
des règles telles que "régulier sa Vitesse par rapport aux autres", "voler dans la même
direction "ou encore "n’éloigner pas de ses proches voisins". Ce sont quelques règles
qui assure la l’harmonie de l’essaim.
23
Chapitre 1 : Notions de base sur l’optimisation combinatoire
5.Conclusion :
Dans ce chapitre nous avons définir le concept de l’optimisation
combinatoire et on donner quelques exemples rencontrés dans la vie courante tel
que le problème du sac à dos et le problème de couverture pour montrer l’utilité
de cette théorie ; Puis on à étudie d’une façon détaillée la théorie de la
complexité pour identifier les différents classe des problèmes d’optimisation.
Nous avons essayé de présenter l’essentielles des méthodes de résolutions que
ce soit des méthodes exactes ou des métaheuristiques en précisant pour chacune
son principe et sa démarche de résolution. Et en dernier lieu on a fait un survol
sur la notion de la programmation linéaire en expliquant la démarche de
résolution de la méthode du simplexe ainsi que le simplexe révisé.
24
Téléchargement