Cours Contrôle Avancé Partie Algorithmes Génétiques

publicité
Cours Contrôle Avancé
Partie Algorithmes Génétiques
Ecole Centrale Paris
Eléments de correction
Pure random search et (1+1)-EA sur Ω = {0, 1}n
Anne Auger, [email protected]
http://www.lri.fr/˜auger/
Recherche aléatoire simple (PRS, en anglais Pure Random Search)
Le premier algorithme évolutionnaire, introduit avant que les algorithmes génétiques, stratégies d’évolution
(et AEs) soient introduits est une recherche aléatoire simple qui consiste à tirer des points au hasard,
uniformément dans l’espace de recherche et sauvegarder la meilleure solution obtenue.
Les papiers historiques proposant l’utilsation de Pure RS comme méthode d’optimisation:
? S.H. Brooks , Discussion of random methods for locating surface maxima. Operations Research 6 (1958), pp. 244–251.
? Rastrigin, L.A. The convergence of the random search method in the extremal
control of a many-parameter system, Automation and Remote Control 24 (1963),
pp. 1337-1342.
Nous allons implanter un algorithme PRS dans le cadre de la maximisation de la fonction Onemax, fonction
définie sur un espace de chaı̂nes de bits, Ω = {0, 1}n .
Exemple 1 Pour x ∈ {0, 1}n , la fonction Onemax est définie par
fOnemax (x) =
n
X
xi
i=1
1. Quelle est l’optimum de la fonction (on maximise)? Que vaut la valeur de fOnemax à l’optimum?
optimum = (1, 1, . . . , 1); f (optimum) = n
2. Ecrire une fonction Matlab onemax.m qui prend en argument une chaı̂ne de bit x et retourne la
valeur fOnemax (x). (Fonction matlab utile sum).
function f=onemax(x)
f=sum(x);
3. Ecrire une fonction Matlab pureRS.m qui prend en argument la taille de l’espace de recherche n et
retourne le nombre d’évaluations nécessaires pour atteindre l’optimum, ainsi qu’un vecteur fitness
de taille nombre total d’évaluations et dont la coordonnée “i” représente la meilleur valeur trouvée
jusqu’à l’itération i (pour échantillonner uniformément on pourra utiliser les instructions rand et
round).
Attention: pour un même point x, n’appeler qu’une seule fois fOnemax (x). Le but du jeu est de
maximiser la fonction en un minimum d’appels à la fonction objectif qui represente ce qui est
“cher” à calculer (cf Note plus bas).
function [neval fitness]=pureRS(n)
X1=round(rand(n,1));
fbest=fonemax(X1);
t=1;
fitness=[fbest];
while fbest<n
Xt=round(rand(n,1));
fXt=fonemax(Xt);
t=t+1;
if fXt >=fbest
fbest=fXt;
end
fitness=[fitness fbest];
end
neval=t;
4 Tracer l’évolution de la fitness en fonction du nombre d’évaluations pour deux runs indépendants
de l’algorithme. Que constatez vous? (instructions matlab utiles: plot, hold on)
5 Ecrire un script RunningTime.m pour tracer pour n = 1 : 2 : 14 l’esperance et l’esperance ± l’écarttype (empiriques) du temps moyen d’atteinte de l’optimum ainsi que l’écart type (on moyennera
sur 11 runs indépendants de l’algorithme).
Note: le temps d’atteinte de l’optimum est mesuré en comptant le nombre d’évaluations de la fonction
objectif pour atteindre l’optimum. En effet, les opérations internes de l’algorithme sont en général
négligeables par rapport au coût de la fonction objectif: de l’ordre de la seconde, minute voire heure pour
des grosses applications industrielles.
6 Calculer théoriquement ce temps moyen en fonction de n et comparer avec le résultat empirique.
(Indication: montrer que le temps d’atteinte de l’optimum suit une loi géométrique de paramètre à
déterminer).
Le temps d’atteinte de l’optimum est défini mathématiquement par T = inf{t ∈ N, Xt = (1, . . . , 1)}
où Xt est le nouveau point échantillonné uniformément à chaque itération (cf pureRS.m). Pour
chaque t, P (Xt = (1, . . . , 1)) = 21n et les vecteurs aléatoires Xt sont independants. Ainsi T suit une
loi géométrique de paramètre p = 21n et donc E(T ) = p1 = 2n .
(1+1)-EA
On va maintenant implanter un algorithme (1 + 1)-EA: la population est réduite à un seul individu.
L’unique parent mute pour donner un enfant. Le meilleur parmi l’enfant et le parent est gardé pour la
génération suivante. La mutation utilisée est une mutation bit-flip ou chaque bit du parent est changé
avec probabilité 1/n (et reste donc inchangé avec probabilité 1 − 1/n).
7 Reprendre les étapes 3, 4, 5 pour le (1 + 1)-EA.
2
function [neval fitness]=OnePlusOne(n)
Xparent=round(rand(n,1));
fparent=fonemax(Xparent);
neval=1;
fitness=[fparent];
while fparent<n
for i=1:n
change = rand<1/n;
Xoffspring(i)=(1-change)*Xparent(i)+(1-Xparent(i))*change;
end
foffspring=fonemax(Xoffspring);
neval=neval+1;
if foffspring >=fparent
fparent=foffspring;
Xparent=Xoffspring;
end
fitness=[fitness fparent];
end
8 La complexité théorique de l’espérance du temps d’atteinte de l’optimum est Θ(n log n)1 . Comparer
avec le résultat obtenu empiriquement. Donner une idée pour la preuve théorique pour la borne
supérieure en n log n. Cf transparents de cours.
9 Expliquer les différences obtenues entre le Pure RS et le (1 + 1)-EA.
Etant donné une probabilité p de muter chaque bit, le nombre de bits mutés suit une loi binomiale
de paramètres n et p. En moyenne le nombre de bits mutés est donc de np (esperance d’un loi
binomiale (n, p)). Ainsi pour le (1+1)-EA, seulement 1 bit est muté en moyenne: les enfants créés
avec le (1+1)-EA et probabilité de mutation de 1/n sont dans un voisinage2 proche du parent. Ainsi,
contrairement au Pure RS qui échantillonne de la même manière (uniformément) à chaque itération,
i.e., indépendamment du parent (l’algorithme est aveugle), le (1+1)-EA exploite la structure locale
de la fonction en echantillonnant au voisinage du parent pour trouver des meilleures solutions. Ceci
permet au (1+1)-EA de trouver l’optimum en Θ(n log n) iterations alors que le Pure RS a besoin
d’un nombre exponentiel d’itérations.
On considère maintenant la fonction Needle in the Haystack définie par:
Exemple 2 Pour x ∈ {0, 1}n , la fonction Needle in the haystack est définie par
fNH (x) = 1 si x = (1, . . . , 1)
= 0 sinon
10 Quelles vont être les performances du pure RS et du (1 + 1)-EA sur la fonction fNH commenter les
différences par rapport à la fonction fOnemax .
Cette fois-ci, la fonction n’a pas une structure particulière qui peut être exploitée par l’algorithme (1+1)EA et on s’attend donc à ce que les performances du (1+1)-EA ne soient pas meilleures que celles du
Pure RS.
1 Rappel:
2 Le
f (n) ∈ Θ(g(n)) si ∃k1 , k2 , |g(n)| · k1 ≤ |f (n)| ≤ |g(n)| · k2
voisinage d’un point peut être formellement défini avec la distance de Hamming.
3
Téléchargement