Vous êtes sur la page 1sur 12

Chapitre 4 : Les Métaheuristiques

Les métaheuristique forment un ensemble de méthodes utilisées en recherche


opérationnelle et en intelligence artificielle pour résoudre des problèmes
d’optimisation réputés difficiles. Une métaheurisique est un ensemble de concepts qui
permettent de construire des méthodes approchées pour plusieurs problèmes
différents. En d'autres termes, une métaheuristique peut être vue comme un cadre
algorithmique général qui peut être appliqué à différents problèmes avec peu de
modifications pour les adapter à un problème spécifique.

4.1 Les Algorithmes génétiques


Les algorithmes génétiques (AG) sont des méthodes approchées car ils ne s'appuient
pas, dans leur conception, sur des théorèmes qui permettent d'affirmer la qualité de la
solution obtenue. voir figure 1.

Les algorithmes génétiques font partie d'une famille d'algorithmes dits


évolutionnaires, voir figure 2.

1
4.1.1 Principe d’Algorithme Génétique :
Ils simulent l'évolution naturelle d'organismes (individus), génération après
génération, en respectant des phénomènes d'hérédité lors de reproduction par
croisement ou mutation et une loi de survie. en développant une analogie entre un
individu dans une population et une solution d'un problème dans un ensemble de
solutions.
Voici la liste d'hypothèses d'évolution dans une population :
 Les bons chromosomes doivent avoir une probabilité plus grande d'être choisis
comme parents.
 Le mariage de bons parents devraient donner de bons enfants.
 Les bons chromosomes doivent avoir une meilleure chance de survivre.
 Les croisements cherchent à conserver les meilleures caractéristiques des
parents.
 Le rôle des opérateurs de mutation est de créer de la diversité de manière à
éviter la dégénérescence.

Terminologie d'un algorithme génétique :


 Individus ou chromosomes : Les éléments d'une population sont appelés
des individus ou des chromosomes.

2
 Gène : Les différents éléments d'un chromosome.
 Fitness : On appelle force ou fitness une valeur calculée associée à chaque
chromosome et qui mesure sa qualité.
 Opérateur de croisement : C'est un opérateur binaire, à partir de deux parents
conçoit deux enfants ou plus.
 Opérateur de mutation : C'est un opérateur unaire qui modifie légèrement un
chromosome.

4.1.2 Schémas général d'un algorithme génétique (Goldberg) :


a- INITIALISATION :
Générer une population initiale Po de N individus.
b- ÉVALUATION :
Évaluer la "force" de tout individu de la population Pn-1.
c- SÉLECTION :
Sélectionner N/2 couples d'individus dans la population Pn-1.
d- CROISEMENT :
tout couple d'individus est
- avec la probabilité pc remplacé par un nouveau couple d'individus dans la
population Pn obtenu en lui appliquant un opérateur génétique de croisement,
- avec la probabilité 1-pc conservé.
e- MUTATION :
tout individu de Pn
- avec la probabilité pm subit une mutation,
- avec la probabilité 1-pm est conservé.
f- ARRÊT :
on reprend en b- jusqu'à avoir effectué un nombre donné d'itérations.
g- RESULTAT : Un des chromosomes qui a la meilleure force.

Remarques :
1) Ils existent d'autres variantes différentes du schéma donné ci-dessus. Nous citons
les différences suivantes :

3
 Donner plus de chance de sélection aux individus forts, ie. on attribue à chaque
individu de la population une probabilité d'être reproduit qui est
proportionnelle à sa force (technique de la roulette).

 Le croisement peut faire intervenir plusieurs parents ou plusieurs points de


croisement. Un individu peut être le parent de plusieus enfants.
 On peut concevoir une mutation améliorant la fitness de l'individu.
 La condition d'arrêt peut dépendre de l'amélioration de la population, on
s'arrête par exemple lorsqu'on progresse plus pendant un certain nombre
d'ittérations.

4.1.3 Fitness et codage :


Calcul de la fitness : Si l'optimum correspond à un minimum, la valeur de l'objectif
ne peut pas être utilisée comme force ou fitness du chromosome S, il faut la
remplacer, par exemple par M-g(S), avec M un majorant de la fonction objective
g(S). On peut également prendre la fitness comme étant l'ordre de l'individu dans la
population :
1) Constituer la liste S1, S2, S3, .... de chromosomes triés par valeur croissente de
g(S).
2) Attribuer à chaque chromosome une fitness égale à son rang :
f(S1) = 1; f(S2) = 2; f(S3) = 3;

Choix du codage des chromosomes :


L’étape clef dans un algorithme génétique est de définir et coder convenablement les
variables du problème.
Dans le cas d'un codage direct : le chromosome contient la description complète
d'une solution.
Dans le cas d'un codage indirect : le chromosome contient des "paramètres" qui

4
permettront de construire une solution en utilisant un générateur.
Le codage binaire est fréquement utilisé, il est efficace lorsque les solutions sont
réels ou formées de réels. On représente ainsi un réel par sa représentation binaire. Ce
type de codage facilite le croisement et la mutation.
Le codage réel n'utilise pas la représenation binaire, il est considéré plus efficace
mais nécessite la conception d'opérateurs de croisement et de mutation adaptés.
Dans les problèmes d'odonnancement ou les problèmes d'optimisation combinatoire
en général, on utilise des valeurs qui ont une signification pour le problème
considéré, par exemple des lettres ou des chiffres, on parle alors de codage
symbolique.

4.2 Métaheuristiques de voisinage


Nous allons tout d'abord définir la notion de voisin, puis nous présentons les
différents schémas d'algorithmes d'amélioration par voisinage en commençant par les
heuristiques simples et en terminant par les méta-heuristiques.
Voisin est un opérateur unaire qui à une solution x fait correspondre une solution v(x),
en appliquant une modification (généralement locale) à la solution x.
Une solution x peut avoir plusieurs voisins.
V(x) est l'ensemble des voisins de x.
v(x) est un des voisins de x (choisi, par exemple, de manière aléatoire).

4.2.1 méthode de plus forte pente


On cherche la meilleure solution x dans le voisinage de la solution courante x0 et x
devient x0 et ainsi de suite. On termine lorsqu'on peut plus améliorer la solution.
Algorithme de la méthode de plus forte pente
Initialisation
xo est une solution choisie de manière aléatoire ou obtenue en utilisant une
heuristique simple construisant une solution.
f(xo) est la valeur de la fonction objective à minimiser au point xo.
FIN = faux ;
Itérations
tantque FIN == faux faire
FIN = vrai ;
meilleur = xo ;
mini = f(meilleur) ;

5
pour tout x de V(xo) faire
nouveau = f(x);
si (f(x)<mini) alors
FIN = FAUX ;
meilleur = x ;
mini = f(meilleur);
finsi ;
fin pour tout x ;
xo = meilleur;
fin tant que
xo et meilleur contiennent la meilleure solution trouvée
Remarques :
* Selon l'opérateur de voisinage utilisé, l'algorithme termine avec un minimum
local.
 Si dans le voisinage de x0, la meilleure solution a la même fonction objective
que x0 (f(x)=mini), on peut penser qu'on pourrait progresser vers une meilleure
solution (f(x)<mini). Dans ce cas, l'algorithme peut boucler sur un ensemble de
solutions voisines ayant la même fonction objective. Nous verrons plus loins
l'algorithme taboue qui permet d'éviter cette situation.

 Amélioration de toute méthode qui se termine sur un minimum local , on


applique la même méthode avec plusieurs solutions initiales x0.
 Souvent l'exploration de tout le voisinage de la solution courante x0 prend
beaucoup de temps. On se contente alors du premier voisin meilleur que x0.

4.2.2 Méthode de descente :


On peut choisir de progresser d'une solution à une autre non nécessairement meilleure
un certains nombre de fois et après faire une progression systématique du voisinage
de la solution courante. Ceci pourrait nous permettre de sortir d'un minimum local.
Algorithme de la Méthode de descente
Initialisation
xo est une solution choisie de manière aléatoire ou obtenue en utilisant une
heuristique simple construisant une solution.
f(xo) est la valeur de la fonction objective à minimiser au point xo.

6
FIN = faux ;
J = 0;
Itérations
tantque FIN == faux faire
FIN = vrai ;
x = v(xo) ;
si(f(x)<f(xo) alors
FIN = FAUX;
J=0;
xo = x ;
sinon
J = J+1;
si J > N alors
vérification pour voir si on est dans un optimum local
meilleur = xo ;
mini = f(meilleur) ;
pour tout x de V(xo) (tant que FIN == VRAI) faire
si (f(x)<mini) alors
FIN = FAUX ;
meilleur = x ;
mini = f(meilleur);
finsi ;
fin pour tout x ;
xo = meilleur;
fin si ; fin de la vérification pour voir si on est dans un optimum local
fin si ; fin du cas initialement non améliorant
fin tant que fin de la progression d'un pas de l'aveugle
xo et meilleur contiennent la meilleure solution trouvée
Remarque :
L'exploration aléatoire nous permet, probablement, de sortir d'un minimum local mais
elle ignore les directions de recherche améliorant la solution. La méthode suivante
utilise un principe physique pour exploiter au mieux les deux approches.

7
4.2.3 Recuit simulé :
Principe thermodynamique : Pour que la structuration finale d'un corps soit
harmonieuse, il est nécessaire qu'il passe par des phases intermédiaires moins
favorables pour atteindre son état final, état qu'il ne pourrait peut-être jamais atteindre
si on cherchait une suite d'états qui tendent de manière uniforme et régulière vers
l'état souhaité. A haute température, le corps passe par de nombreux stades de
transformation qu'il atteint facilement grâce à l'énergie liée à la température, plus la
température baisse et plus les transformations sont régulières et orientées vers l'état
final.

Notations utilisées dans l'algorithme


 une température T qui décroît par paliers de longueur N de manière
exponentielle, par l'utilisation du paramètre a (0<a<1).
 un générateur aléatoire de voisins VOISIN(x) qui fournit au hasard une
solution (admissible) dans le voisinage de la solution (admissible) x.
 une fonction objective f(x) que l'on cherche par exemple à minimiser.
 la meilleure solution trouvée depuis le début xm et sa valeur fm.
 un nombre maximal d'itérations sans amélioration Q
 on répète P fois l'algorithme avec un nouveau point de départ aléatoire.

Algorithme du recuit simulé :


Schéma général du refroidissement
pour k de 1 à P faire

8
un essai
Initialisation de l'essai
xo:=solution aléatoire; Solution de départ
fm:=f(xo); Initilisation meilleure valeur
J:=0; Initialisation compteur arrêt
T:=To; Initialisation Température
Déroulement de l'essai
tantque J ≤ Q faire
Palier température
I:=0; Initialisation compteur palier
Boucle sur les essais élémentaires au sein du palier
........................
........................
(les détails sont dans le listing suivant)
Fin palier température
T:=T*a;
fintantque
retenir fm , xm;
finpour (k) Fin essai
Le résultat est lameilleure solution trouvée par l'ensemble des essais.
Boucle interne (palier de température)
tantque I ≤ N et J ≤ Q faire
x:=VOISIN(xo); une tentative de progression
I:=I+1; incrémentation du compteur pour le palier de température
J:=J+1; incrémentation du compteur pour l'arrêt final d'un essai
si f(x) < f(xo) alors
xo:=x;
si f(xo)<fm alors
xm:=xo;
fm:=fo; = f(xo)
J:=0;

9
finsi;
sinon
∆f:=f(x)-f(xo);
U:=Uniforme(0,1);
si U ≤ exp (- ∆f / T) alors
xo:=x
finsi
finsi;
fintantque

Remarque :
Si le point x est strictement meilleur que le point xo. Il remplace xo et si la solution
est meilleure que la meilleure solution trouvée dans l'essai, on corrige la meilleure
solution trouvée et on remet à 0 le compteur de fin.
Si le point x n'est pas strictement meilleur que le point xo. Il remplace xo avec la
probabilité exp(-perte/température).
La probabilité d'accepter de passer à un point plus mauvais

Figure 3: Un ensemble de villes (nœuds) reliés entre eux par des routes (arcs).

La solution la plus simple est de parcourir les villes dans l’ordre :

Total=26

Figure 4: Une première solution (parcours suivant l'ordre des villes).

Total=21

Figure 5: Le résultat donné par l’algorithme glouton (se délacer d’un sommet vers son plus proche
voisin).

10
Total=22

Figure 6: Le résultat obtenu en échangeant les sommets 2 et 3.

Dans la Figure 6 : Le résultat obtenu en échangeant les sommets 2 et 3, la distance totale a


augmenté. Pour une heuristique classique cette solution est rejetée car la distance doit
être minimisée, mais le recuit simulé poura l’accepter si la température est encore
élevée, et cette solution qui est « mauvaise » par rapport à la première va lui permettre
de trouver une solution meilleure :

Total=18

Figure 7: Le résultat obtenu en échangeant les sommets 5 et 2.

En résumé, le recuit simulé, en acceptant une mauvaise solution, à réussi à échapper au


minima local et à obtenir une solution meilleure.

4.2.4 La méthode Taboue et ses variantes :

Comme le recuit simulé, la méthode Taboue permet d'accepter des solutions


plus mauvaises de manière à éviter de se faire piéger dans un optimum local. La
méthode Taboue utilise une liste taboue de manière à éviter de repasser plusieurs fois
par les solutions visités. On accepte de remonter pour pouvoir quitter les optima
locaux, mais pour ne pas y retomber, on place des « tabous » qui empêchent de
retourner aux solutions déjà vues.
Remarques :
- Si on tous les voisins de la solution courante sont dans la liste taboue, méthode
s'arrête sur cette solution (phénomène de blocage).
 Vérifer si une solution est dans la liste taboue peut prendre prendre beaucoup
de temps si la liste conserve toutes les solutions visitées. On se contente alors
de conserver dans la liste un nombre fixé de solutions.
 Si la liste taboue est trop grande, on a le phénomène de blocage (première
remarque). Si la liste est trop petite, on peut retomber dans un minimum local.
Donc, un compromis doit être trouvé.
 Pour éviter de sauvegarder trop de solutions dans la liste taboue, on se contente
de conserver les opérations inverses qui permettent de retrouver les solutions
déjà parcourues. Par exemple, si une solution est une permutation et un voisin
est obtenue en échangent deux éléments de la liste, l'opération inverse consiste

11
à échanger de nouveau ces deux éléments.
12345
21345cons = [(1,2)]
21354 cons = [(1,2), (4,5)]
….
12354 cons = [(1,2), (4,5), (1,2)]
12345 cons = [(1,2), (4,5), (1,2), (4,5)] interdit

12

Vous aimerez peut-être aussi