Vous êtes sur la page 1sur 23

Algorithmes d’optimisation:

Heuristiques et Meta-
heuristiques
A. Outzourhit
Master Green Bee
Heuristiques et Meta-heuristiques
Heuristiques
Le terme heuristique dérive du grec heuriskêin « trouver ». Il qualifie tout ce qui sert à la découverte et à l’exploitation.
Il signifie aussi l’art d’inventer, de faire des découvertes.
• Une heuristique est un algorithme spéciale qui fournit rapidement une solution approchée et réalisable, pas
nécessairement optimale, pour un problème d’optimisation donné (ex. optimisation combinatoire, mixte, multi-
objectif..) .
• les heuristiques sont des règles empiriques simples qui se basent sur l’expérience et les relations accumulées au fil
des résultats
• La solution peut être locale (max. ou min relatif) ou globale (absolue)
• Une méthode heuristique peut être déterministe ou stochastique.

Les méta-heuristiques
• Les méta-heuristiques forment une famille d’algorithmes d’optimisation visant à résoudre des problèmes
d’optimisation difficile, pour lesquels nous ne connaissons pas de méthodes classiques plus efficaces.
• Elles sont utiliser pour optimiser une large gamme de problèmes d’où le terme méta (au delà)
• Les Meta-heuristiques sont des stratégies qui permettent de guider la recherche d’une solution et d’explorer
l’espace de recherche efficacement afin de déterminer des points (presque) optimaux.
• Les métaheuristiques sont considérées comme des algorithmes stochastiques itératifs, où une ou plusieurs solutions
(population) sont manipulées à la recherche de l’optimum.
• Les itérations successives doivent permettre de passer d’une solution de mauvaise qualité à la solution optimale.
Classification des Heuristiques….
1. Méthodes de trajectoire : Manipulent un seul point(solution) à la fois et tentent
itérativement d’améliorer ce point.
• Elles construisent une trajectoire dans l’espace de recherche(solutions faisables) en tentant
de se diriger vers des solutions optimales.
• exemples
• La recherche locale (descente, hill climbing..).
• Le recuit simulé
• La recherche tabou

2. Méthodes utilisant des populations: en tout temps on manipule plusieurs points(solutions


faisables), qui forment population que l’on fait évoluer vers l’optimale
Exemples: GA, ACO, PSO, colonie des abeilles …

3. Méthodes avec ou sans mémoire

• Une méthode heuristique est dite «robuste» si elle converge le plus souvent vers la même
solution (à partir de points de départ différents)
• Une méthode heuristique est dite «efficace» si, à temps de calcul donné, elle donne une
solution proche de l’optimum.
Les algorithmes naturels
Les phénomènes physiques ou biologiques ont été à la source de nombreux algorithmes.
• Réseaux de neurones (ANN) artificiels s'inspirent du fonctionnement du cerveau humain,
• Algorithme de recuit simulé: imite le recuit dans la métallurgie, la thermodynamique,
• Algorithmes génétiques inspirés de la théorie de l'évolution darwinienne des populations:
« Les plus adaptés survivent et se reproduisent ».

• Les algorithmes des essaims de particules (Particle Swarms)


• Les algorithmes de colonies de fourmis (ACO)
• Les algorithmes de colonies de fourmis (ACO)…
• Kangourou,..…

Ce sont des techniques d’optimisation stochastiques qui font évoluer une solution (ou
population de solutions)
Algorithmes Génétiques
Modèle : L’évolution darwinienne des populations biologiques.
 Les individus les plus adaptés survivent et se reproduisent, créant ainsi de nouveaux individus, certains
subissent des modifications de leur ADN (mutation), certains disparaissent ....
 Un algorithme génétique va reproduire ce modèle d'évolution dans le but de trouver des solutions pour
un problème donné.

Parallélisme:
• Une population est un ensemble d'individus.
• Un individu (aussi appelé chromosome) est une solution à un problème d’optimisation donné.
• Un gène sera une partie d'une solution, donc d'un individu (chromosome).
• Une génération est une itération de l’algorithme génétique.
• Un algorithme génétique va faire évoluer une population dans le but d'en améliorer les individus
(solutions).
• La fonction objectif f est appelée fonction performance, ou fonction d'adaptation (fitness en anglais)
Algorithme génétique: mise en œuvre
1. Initialisation de la population: Génération aléatoire d’une Population
population Po de N individus dans l’espace de recherche(W) , Initiale et Codage
avec une probabilité uniforme sur W
2. Evaluation des individus de P0 par le calcul des valeurs de la
fonctions objectif f pour chaque individu (solution); Sélection
“survie du mieux
La génération i (ieme itération) permet de construire la population adapté Elitisme
Pi à partir de la population Pi-1 comme suis:
3. Sélection des individus (parents) les plus performants (au sens

q
de f) de Pi-1 (sélection par roulette, tournoi..)
4. Croisement des parents (probabilité Pc ) pour générer des Croisement
enfants (croisement en un point,..) ;
Reproduction
5. Mutation de certains chromosomes (Probabilité Pm)
6. Evaluation des enfants ; Remplacement des parents au moyen
d'une sélection darwinienne parmi les enfants, avec Mutation
participation éventuelle des parents.
7. L'évolution s’arrête quand le niveau de performance souhaité Ieme population Pi
est atteint, ou qu'un nombre fixé de générations s'est écoulé
sans améliorer l'individu le plus performant.
Espace de recherche
Parmi les espaces de recherche les plus utilisés on distingues:
Les chaînes de bits (bitstring)
L'espace de recherche est ici W = {0,1}N qui est historiquement celui de
l'école des algorithmes génétiques,
• parallèle avec la biologie (une chaîne de bits étant assimilée à un chromosome; ex.
0110001011)
• permet également une présentation aisée des divers composants de l'algorithme
(croisement, mutation…).
 Il faut procéder au codage des solutions
Les vecteurs de réels:
• le cas le plus fréquent en calcul numérique : W est un sous-ensemble de IRn,
borné ou non  optimisation paramétrique.
Codage ai  xi  bi , i  1,2,, n.
On veut représenter xi à d décimales places.
La gamme ai  bi doit être divisée en (bi-ai).10d parts.
Soit mi le plus petit entier tq: (bi  ai ).10d
 2 mi
 1.
xi peut être code en binaire de mi bit.
bi  ai
Alors xi  ai  Valeur.decimal (code binaire). mi
2 1
Ex. -1<x<2
Précision de deux décimales, alors

b g
2  ( 1) 102  2 m  1  2 m  301  m  9
La création de la population initiale
Initialisation
• Pour démarrer un algorithme génétique, il faut lui fournir une population initiale (un ensemble d’individus) à
faire évoluer
• Le principe général de l'initialisation est d'échantillonner le plus uniformément possible l'espace de
recherche W.
 créer P individus de manière aléatoire, (taille de P à fixer)
• Dans le cas des chaînes de bits, chaque bit de chaque individu est tiré égal à 0 ou à 1 avec un probabilité P.
Pour 4 bits: 0010, 1001, 1101, par exemple
• Dans le cas de l'optimisation paramétrique, si W = P[ai,bi] (cas borné), on tire uniformément chaque
coordonnée dans l'intervalle correspondant X1= (x11, x22,…x1P), X2= (x21, x22,…x2P), …..
Diversité: Plus les individus de la population de départ seront différents les uns des autres, plus il y a de la
chance d'y trouver, non pas la solution parfaite, mais de quoi fabriquer les meilleures solutions possibles.
• La taille de la population initiale est également laissée à l'appréciation du programmeur.
De la génération de départ, l'algorithme génétique crée la deuxième génération, puis la troisième génération, et
ainsi de suite jusqu'à ce qu'un M spécifié = nombre de générations ait été créé
L'évaluation des individus

• Une fois que la population initiale a été créée, il faut en sortir les individus les plus prometteurs, ceux qui
vont participer à l'amélioration de la population.
• Une 'note' ou un indice de qualité sont attribués à chaque individu. La méthode d'évaluation des
individus est fonction du problème qu'il a à optimiser ou à résoudre.
Cette fonction de « fitness » doit être évaluée pour chaque chromosome (individu) de la génération
actuelle.
La fonction de finesse peut être la fonction objectif (PO sans contrariantes), ou la fonction objectif
pénalisée avec les contraintes non actives
Ex. Fitness=f si g=0 ou = f+g =f+max(0,g) si g est >0 pour chaque individu
Si f est négative il lui ajouter une constante positive..
L'algorithme génétique passe alors par un processus en quatre étapes pour créer une nouvelle génération à
partir de la génération actuelle:

1) sélection
2) croisement (crossover)
3) mutation
4) l'élitisme
La sélection
Objectif: sélectionner les parents pour le croisement (reproduction)
Principe: Toujours favoriser les meilleurs individus, mais de manière stochastique laisser une chance aux individus
moins performants.
Trois méthodes sont utilisées pour sélectionner deux parents pour le croisement
1. Le tirage de roulette est la plus célèbre des sélections stochastiques :
• Supposant un problème d’optimisation avec uniquement des performances (fitness) positives
• Le tirage consiste à donner à chaque individu une probabilité d'être sélectionné proportionnelle à sa performance.
• Exemple Maximiser le nombre de 1 dans une chaine de 6 bits

solution Fitness Probabilité Probabilité cumulative


‘Fraction’
1 01100101 4 4/15 (2+3+4)/15
2 00100100 2 2/15 2/15
3 10111001 6 6/15 1
4 00110010 3 3/15 2+3/15

Roue de la fortune classique sur laquelle chaque individu est représenté par une portion
proportionnelle à son adaptation (fitness). On effectue ensuite un tirage au sort sur cette roue
(tirage d’un nombre aléatoire r entre 0 et 1 et sélection de l’individu comme suit:
Si r <2/15 sélectionner 2, si r est entre 2/15 et 5/16 sélectionner 4…..
Sélection
2. La sélection par le rang
• Consiste à faire une sélection en utilisant une roulette dont les secteurs sont
proportionnels aux rangs des individus.
• La variante linéaire utilise directement le rang (N pour le meilleur, 1 pour le moins bon,
pour une population de taille N)

3. La sélection par tournoi:


Pas de comparaisons entre individus, et pas de tri de la population.
• Pour sélectionner un individu, on tire T individus (T, taille du tournoi ) d’une manière
aléatoire dans la population
• On sélectionne le meilleur de ces T individus (selon sa fitness).
• Le choix de T permet de faire varier la pression sélective, c'est-à-dire les chances de
sélection des plus performants par rapport aux plus faibles.
Le croisement
• Cette étape est toujours stochastique, c'est à dire que le résultat de l'application d'un opérateur dépend de
tirages aléatoires.
• L'idée générale du croisement est l'échange de matériel génétique entre les parents : si deux parents sont plus
performants que la moyenne, on peut espérer que cela est du à certaines parties de leur génotype, et que
certains des enfants, recevant les ''bonnes'' parties de leurs deux parents, n'en seront que plus performants.
Comme tous les opérateurs génétiques, Le croisement -- est appliqué
avec une certaine probabilité notée Pc (
c.a.d: pour un individu tirer un nombre entre 0 et 1 au hasard, si r <
Pc sélectionner l’individu

Chaînes de bits, les divers opérateurs de croisement échangent des


bits (à position fixée) entre les parents. Croisement à 1 point
(emplacement: Tirage d’un nombre aléatoire i entre 1 et n (nombre
de bits qui donne la position du croissement)
Croisement réel
``mélanger'' les deux parents par une combinaison linéaire. On parle alors de croisement arithmétique qui peut
être :
Globale: (X,Y)  a X + (1 - a) Y , a = [0,1]
Coordonnée par coordonné (X,Y)  ai Xi + (1 - ai) Yi , ai = U[0,1]
La mutation
L'idée directrice de la mutation est de permettre de visiter tout l'espace de recherche.
 tout point de l'espace de recherche peut être atteint en un nombre fini de mutations par bit et non
par individu (Théorème!!)

• La mutation est effectuée sur les gènes des enfants avec une certaine probabilité!!!
• Le processus de mutation est très simple. On génère au hasard nombre entre zéro et un. Si le
nombre aléatoire est inférieur à la probabilité de mutation Pm, le gène est changé. Sinon, le gène
est laissé inchangé.
• la probabilité de mutation est faible, la majorité des gènes sont laissés seuls. La mutation permet
introduire occasionnellement de la diversité dans la population.
- Chaînes de bits, on modifie aléatoirement certains bits (bit-flop ou complémentation. Pour chaque
parent (ou enfant du croisement), et pour chaque bit (1 et N), tirer un nombre au hasard r entre 0
et si r <pm muter le bit (complément),

(b1 b2 ...bl bl+1.. bN) (b1 b2 ... 1-bl bl+1 ... bN)
Probabilité pm par bit et non par individu. Typiquement :pm=1/N

Les enfants sont conservés en fonction de leur adaptation (fitness)


AG suite…..
Evaluation des enfants ; Remplacement des parents au moyen d'une
sélection darwinienne parmi les enfants, avec participation éventuelle des
parents.
L'évolution s’arrête quand le niveau de performance souhaité est atteint,
ou qu'un nombre fixé de générations s'est écoulé sans améliorer l'individu
le plus performant.
Elitisme: stocker la meilleure valeur avant la sélection et, après la sélection,
remplacer la valeur la plus faible par cette meilleure valeur stockée.

Ces méthodes sont maintenant très utilisées en optimisation numérique, lorsque les
fonctions à optimiser sont complexes, irrégulières, mal connues ou en optimisation
combinatoire.

Ces méthodes diffèrent des méthodes précédentes (Newton/Lagrange…...) par les


faites que:
1. Elles ne nécessitent pas le calcul de gradient
2. Elles étudient une population dans un ensemble alors que les méthodes
déterministes
traitent un individu qui évoluera vers l’optimum.
3. Elles font intervenir des opérations aléatoires (stochastique).
Implémentation dans Matlab: functon ga
Trouve un minimum d’une fonction (func) en utilisant l’algorithme génétique

Plusieurs Syntaxes
x = ga(fun,nvars) (func: fonction à minimiser, nvars=nombre de variables de décision)
x = ga(fun,nvars,A,b) (+contraintes linéaires inégalité Ax <=b))
x = ga(fun,nvars,A,b,Aeq,beq), (+contraintes linéaires égalité))
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) (avec bornes en plus)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) (avec contraintes non linéaires nonlcon)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) (+options)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options) (variables dans IntCon sont des entiers!!.
x = ga(problem) ( problem est une structure)
[x,fval] = ga(___)
[x,fval,exitflag,output] = ga(___)
[x,fval,exitflag,output,population,scores] = ga(___)
exemple
x = ga(fun,nvars)
trouve un minimum local, x, de la fonction objectif, fun,
Sans contraintes. Nvars le nombre de variables décision.

https://fr.mathworks.com/help/gads/ga.html
L’optimisation par essaim particulaire (OEP)
Particle Swarm Optimization (PSO)
• C’est un algorithme « évolutionnaire » qui utilise une population de solutions
candidates pour développer une solution optimale au problème
• Il s’inspire du monde du vivant, plus précisément du comportement social des
animaux évoluant en essaim, tels que les bancs de poissons et les vols groupés
d’oiseaux.
• Ces animaux effectuent des déplacements relativement complexes, alors
qu’individuellement chaque individu a une « intelligence » limitée (intelligence
collective)
• L’information locale et la mémoire de chaque individu sont utilisées pour
décider de son déplacement (évolution).
• Des règles simples, (ex. rester proche des autres individus, aller dans une
même direction, ou aller à la même vitesse ……), sont utilisées pour maintenir
la cohésion de l’essaim et son comportement collectif complexe.

https://youtu.be/WAA6sdWrV20
Principe du PSO
• L’essaim de particules correspond à une population d’agents simples,
appelés particules. Chaque particule est considérée comme une solution du
problème
• Une particule est doté d’une position (le vecteur solution) et une vitesse
(direction de déplacement).
• De plus, chaque particule possède une mémoire lui permettant de se
souvenir de sa meilleure performance (en position et en valeur) et de la
meilleure performance atteinte par les particules « voisines » f ( x1 , , x D )  sin x1  sin x D  x1 xD

• Un essaim de particules, qui sont des solutions potentielles au problème


d’optimisation, « survole » l’espace de recherche, à la recherche de
l’optimum global. Le déplacement d’une particule est influencé par les trois
composantes suivantes Global best
1. Une composante d’inertie : la particule tend à suivre sa direction courante de Inertia
déplacement ;
New Velocity
2. Une composante cognitive : la particule tend à se diriger vers le meilleur site par lequel
elle est déjà passée ;
3. Une composante sociale : la particule tend à se fier à l’expérience de ses congénères et,
ainsi, à se diriger vers le meilleur (solution) site déjà atteint par ses voisins. Position X
Personal best
Ainsi, grâce à ces règles de déplacement très simples (dans l'espace des solutions), les
particules (solutions) peuvent converger progressivement vers un minimum local.
Mise en Œuvre de l’algorithme
 Au départ de l'algorithme chaque particule est donc positionnée (aléatoirement ou non) dans l'espace de
recherche du problème.
 la valeur de coût (ou fitness, fonction objectif ) liée avec chaque particule indique la qualité de sa position
(meilleure position d’une particule à date, meilleure position globale de l’essaim à temps)….dans l’espace
Chaque itération fait déplacer chaque particule dans une direction Vi(t+1)en fonction des 3 composantes suivantes :
• Sa vitesse actuelle Vi(t) (plutôt direction), (inertie)
• De l’écart à sa meilleure position Xbesti (t) à date (en terme de la FO)
• De l’écart à la meilleure solution obtenue dans son voisinage (la meilleure position de l’essaim (Gbest(t))
     
Vi (t  1)  Vi (t)  r1 c1 ( Xbest i (t )  X i (t ))  r2 c 2 (Gbest (t )  X i (t )) i  1,2,  , N .
La nouvelle position de la particules i (solution) est:
   Xbesti(t)
X i (t  1)  X i (t)  Vi (t  1) i  1,2,  , N .
• , c1, et c2 (0 ≤  ≤ 1.2, 0 ≤ c1 ≤ 2, et 0 ≤ c2 ≤ 2) sont des coefficients Xi(t)
constants fixés par l'utilisateur
• : inertie, c1, et c2 facteur d’apprentissage ou « accélération »
• r1 et r2 sont des nombres aléatoires tirés à chaque itération
Gbest(t)
Cas d’une optimisation avec d-variables (d-dimensions)
• La particule i (solution) de l’essaim est donnée par son vecteur position Xi = (xi1, xi2, . . .
, xid) et par son vecteur vitesse Vi =(vi1, vi2, . . . , vid).
• La qualité de sa position est déterminée par la valeur de la fonction objectif en ce
point f(Xi)
• Chaque particule garde en mémoire la meilleure position par laquelle elle est déjà
passée, que l’on note Xbesti = (Xbesti1, Xbesti2, . . . , Xbestid).
• La meilleure position atteinte à temps par les particules de l’essaim est notée Gbest =
(gbest1, gbest2, . . . , gbestd).

Avantages du PSO:
• peut converger rapidement vers des bonnes solutions
• implémentations simples, avec peu de paramètres
• versatilité: peut résoudre beaucoup de différents problèmes
• Applications aux problèmes avec:
• un espace de recherche continu, discret ou mixte
• − optimisation dynamique et multicritère, avec 1+ minimums locaux
PSO dans matlab
Syntaxes
• x = particleswarm(fun,nvars)
• x = particleswarm(fun,nvars,lb,ub)
• x = particleswarm(fun,nvars,lb,ub,options)
• x = particleswarm(problem)
• [x,fval,exitflag,output] = particleswarm(___)

• Voir SPO81 (deux variables )


Colonnie de Fourmis
Idées clés
• Lorsque plusieurs sources de nourriture sont disponibles,
les fourmis choisissent toujours la plus proche !
• Les fourmis isolées se déplacent au hasard
• Les fourmis marquent en permanence le chemin parcouru
avec un phéromone
• Lorsqu’une fourmi atteint une bifurcation, elle tend à
prendre le chemin le plus marqué
• Le phéromone se dégrade avec le temps
• Comme les fourmis marquent le chemin à l’aller et au retour, et
que le phéromone est volatile avec le temps, celui déposé sur
les parcours courts est plus intense. Plus intense signifie que le
parcours sera choisi plus souvent (décision probabiliste)
Contraintes pour l’utilization l’ACO Le problème à résoudre doit être défini par un graphe
Exigence due au fait qu’on optimise un chemin
Doit être fini (a un début et une fin)
Algorithme des colonies de fourmis
1. Créer des fourmis
2. Tant que objectif non atteint, pour chaque fourmi
a. La laisser trouver une solution
Quantité de À Partie d’un nœud donné :
Probabilité de transition : a) Calculer Pij(t) pour tous les nœuds suivants
pheromone sur le possibles (permis), 0 si non permis

 1 
chemin ij b) Générer un nombre aléatoire entre 0 et 1 et
ij (t )   l’utiliser pour sélectionner la branche à suivre
Pij (t )   dij 

1 Distance

jallowed nodes
ij (t
)  
 dij 
entre I et j

α,β =constantes
b. Mettre à jour le niveau de phéromone
Pheromone produit par
Taux d’évaporation chaque fourmi k qui suit
la branche (i,j) de
Q
 ij (t  1)  (1   ) ij (t )  
kColony that Lk
longueur Lk

used edge ( i , j )

Vous aimerez peut-être aussi