introducere în calculul evolutiv. algoritmi...
TRANSCRIPT
Calcul neuronal si evolutiv - Curs 7 1
Introducere în calculul evolutiv. Algoritmi genetici
• Specific
• Noțiuni de bază
• Structura unui algoritm evolutiv
• Direcții ale calculului evolutiv
• Algoritmi genetici: – Codificare – Selecție – Reproducere: încrucișare și mutație
Calcul neuronal si evolutiv - Curs 7 2
Specificul calculului evolutiv Calcul evolutiv = dezvoltarea și utilizarea de tehnici de rezolvare a
problemelor inspirate de evoluția speciilor în natură Sursa de inspirație: teoria evoluției speciilor biologice = • Populațiile evoluează prin apariția de noi caracteristici ale
indivizilor în timpul încrucișării și ca efect al mutațiilor aleatoare • în procesul de evoluție supraviețuiesc indivizii care se
adaptează cel mai bine mediului
Rezolvarea unei probleme = • căutarea soluției în spațiul tuturor soluțiilor potențiale folosind o
populație de agenți (căutători); • căutarea este ghidată prin intermediul unei funcții care măsoară
gradul de apropiere față de soluție
Calcul neuronal si evolutiv - Curs 7 3
Specificul calculului evolutiv Procesul de căutare se bazează
pe două mecanisme principale:
• explorare = parcurgerea
diferitelor regiuni din spațiul soluțiilor și colectarea de informații
• exploatare = rafinarea soluției (exploatarea informațiilor colectate în procesul de explorare)
Calcul neuronal si evolutiv - Curs 7 4
Specificul calculului evolutiv
Un căutător Populație de căutători
Determ
inista
Metode clasice de optimizare (ex. metoda gradientului)
Metode de optimizare cu multistartare (algoritmul de căutare este lansat de mai multe ori pornind de la diferite configurații inițiale
Aleatoare
Metode aleatoare de căutare (ex. simulated annealing)
Algoritmi evolutivi
Metode de căutare în spațiul soluțiilor
Calcul neuronal si evolutiv - Curs 7 5
Specificul calculului evolutiv Proces de evoluție Mediu natural Individ (cromozom) Populație de indivizi Grad de adaptare la mediu (fitness) Selecție Reproducere (încrucișare și
mutație)
Rezolvarea unei probleme Informații despre problemă Soluție candidat (configurație/
individ/ cromozom) Populație de soluții candidat
(configurații / indivizi/ cromozomi)
Măsură a calității soluției Mecanism de exploatare Mecanisme de explorare
Calcul neuronal si evolutiv - Curs 7 6
Noțiuni de bază Cromozom = mulțime de gene
asociate unui individ (soluție potențială a problemei)
Populație = mulțime de indivizi
(soluții candidat) Genotip = ansamblul tuturor
genelor unui individ sau populații
Fenotip = ansamblul tuturor
trăsăturilor determinate de către un genotip
(1,0,0,1) {(0,0,0,0), (0,0,1,1),
(1,0,0,1),(1,0,1,0)} {0,3,9,10}
Calcul neuronal si evolutiv - Curs 7 7
Noțiuni de bază Fitness = măsură a calității unui
individ (în raport cu problema de rezolvat)
Generatie = etapă în evoluția unei
populații Reproducere = generarea de
urmași pornind de la populația curentă
- încrucișare - mutație
= caută șirul de biți care maximizează numărul de biți egali cu 1
(1,0,0,1) 2 Incrucișare: (1,0,0,1) (1,0,1,1) (0,0,1,1) (0,0,0,1) Mutație: (1,0,1,1) (1,1,1,1)
Ex: problema ONEMAX
Calcul neuronal si evolutiv - Curs 7 8
Proiectarea unui algoritm evolutiv Elemente componente:
Problema
Codificare
Evaluare
Incrucișare
Mutație
Selecție
Calcul neuronal si evolutiv - Curs 7 9
Structura unui algoritm evolutiv Inițializare populație (aleatoare) Evaluare populație (calcul fitness pt fiecare element) REPEAT Selecție părinți Generarea urmașilor prin încrucișare Modificarea urmașilor prin mutație Evaluare urmași Selecție supraviețuitori (vor forma populația din noua generație) UNTIL <condiție de oprire>
Calcul neuronal si evolutiv - Curs 7 10
Direcții ale calculului evolutiv Algoritmi genetici (Holland, 1962-
1967): Codificare: binară Incrucișare: operator principal Mutație: operator secundar Aplicații: optimizare
combinatorială
Programare genetică (Koza, 1990):
Codificare: structuri arborescente
Incrucișare: operator principal Mutatie: operator secundar Aplicații: proiectare modele de
calcul
Strategii evolutive (Rechenberg,Schwefel 1965):
Codificare: reală Mutație: operator principal Incrucișare: operator secundar Aplicații: optimizare în domenii
continue
Programare evolutivă (L. Fogel, D. Fogel, 1960-1970):
Codificare: reală / diagrame de stări
Mutație: operator principal Incrucișare: nu se aplică Aplicații: optimizare continuă
Calcul neuronal si evolutiv - Curs 7 11
Domenii de aplicabilitate Planificare: alegerea traseelor optime ale unor vehicule, rutarea
mesajelor într-o rețea de telecomunicații, planificarea unor activități etc.
Proiectare: circuite digitale, filtre, rețele neuronale; determinarea
parametrilor optimi în proiectarea avioanelor, reactoarelor chimice, a structurilor în construcții etc.
Modelare: dezvoltarea de modele utile în efectuarea de predicții în
economie, finanțe, medicină etc. Analiza datelor: proiectarea de sisteme de clasificare aplicabile în
inginerie, biologie, medicină
Calcul neuronal si evolutiv - Curs 7 12
Algoritmi genetici • Codificarea elementelor populației
• Construirea funcției fitness (funcție scor, funcție de adecvare)
• Selecție
• Incrucișare
• Mutație
Calcul neuronal si evolutiv - Curs 7 13
Codificarea elementelor populatiei Reprezintă un element cheie în proiectarea unui algoritm genetic. La alegerea tipului de codificare se ține cont de specificul problemei
Variante de codificare: • Codificare binară (varianta clasică pentru algoritmi genetici)
• Codificare reală (adecvată optimizării în domenii continue)
• Codificare specifică (pentru cazul când se caută configurații cu o
structură specială – de exemplu, permutări)
Calcul neuronal si evolutiv - Curs 7 14
Codificare binară Cromozom = șir de biți Spațiul de căutare: {0,1}n, n este corelat cu dimensiunea problemei Exemple: 1. Pb. ONEMAX: determinarea șirului de biți (x1,…,xn) care
maximizează funcția f(x1,…,xn)=x1+…+xn
2. Pb. Rucsacului: se consideră un set de obiecte caracterizate de greutățile (w1,…,wn) și valorile (v1,…,vn) și un rucsac de capacitate C; să se determine un subset de obiecte ce pot fi incluse în rucsac astfel încât să nu fie depășită capacitatea acestuia și valoarea totală a obiectelor selectate să fie maximă
Reprezentarea soluției: (s1,…,sn) si=0 obiectul i nu este selectat si=1 obiectul i este selectat
Calcul neuronal si evolutiv - Curs 7 15
Codificare binară 3. Optimizarea unei funcții definite pe un domeniu continuu. f:[a1,b1]x...x[an,bn] R X=(x1,…,xn) V=(v1,…,vn) U=(u1,…un) Y=(y1,…,yn, yn+1,…ynr) vi=(xi-ai)/(bi-ai) (vi aparține lui [0,1]) ui=[vi*(2r-1)] (ui este număr natural din {0,… 2r-1} => poate fi reprezentat în binar pe r poziții)
(yr(i-1)+1,…yri) = reprezentarea binară a valorii ui
Calcul neuronal si evolutiv - Curs 7 16
Codificare binară Obs. Reprezentarea binară are dezavantajul că valori numerice
apropiate au asociate reprezentări binare aflate la distanță Hamming mare (ex. 7=(0111)2, 8=(1000)2)
Soluție: utilizarea codului Gray (valori succesive au asociate
reprezentări binare ce diferă într-o singură poziție) (b1,…,br) (g1,…,gr) g1=b1
gi=(bi-1 + bi ) mod 2
Calcul neuronal si evolutiv - Curs 7 17
Codificare binară Codificarea Gray: (b1,…,br) (g1,…,gr) g1=b1
gi=(bi-1 + bi )mod 2 Decodificare: bj=(g1+…+gj ) mod 2
Nr. Binar Gray
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100
Calcul neuronal si evolutiv - Curs 7 18
Codificare specifică Codificare adaptată problemei de rezolvat Exemplu: codificare de tip permutare (s1,s2,…,sn), si în {1,…,n}, si<>sj pt. orice i<>j Problema: pb. comis voiajorului si = indicele orașului parcurs la etapa i Obs. Prezintă avantajul că asigură implicit satisfacerea restricțiilor
Calcul neuronal si evolutiv - Curs 7 19
Construirea funcției de adecvare Funcția de adecvare (scor, fitness) - este o măsură a calității unui element al populației - cu cât valoarea sa este mai mare cu atât va fi mai mare
probabilitatea ca elementul respectiv să supraviețuiască (direct sau prin intermediul urmașilor săi)
Problema: optimizare fără restricții Functia de adecvare este direct proporțională cu funcția obiectiv (pt. o
problemă de maximizare) și invers proporțională cu funcția obiectiv (pt. o problemă de minimizare)
Problema: optimizare cu restricții Funcția de adecvare este determinată de funcția obiectiv și de
restricțiile problemei
Calcul neuronal si evolutiv - Curs 7 20
Construirea funcției de adecvare
Tratarea restricțiilor: includerea restrictiilor în funcția obiectiv utilizând metoda penalizării
2
1
,1 ,0)(
,1 ,0)(
)(max
kixh
kixg
xf
i
i
Dx
=≥
==∈
<−≥
=
>>−−= ∑∑==
0 ,0 ,0
)(
0,0 ,))(()()()(21
11
2
uuu
u
baxhbxgaxfxFk
ii
k
ii
ϕ
ϕ
(fără penalizare dacă restricția e satisfăcută) (penalizarea e cu atât mai mare cu cât gradul de încălcare a restricției este mai mare)
Calcul neuronal si evolutiv - Curs 7 21
Construirea funcției de adecvare
Exemplu: problema rucsacului
0
max
1
1
≥−∑
∑
=
=
n
iii
i
n
iis
swC
sv
1 ,0,
daca ,
daca ,)(
1 11
1 1
=+>
>
−−
≤=
∑ ∑∑
∑ ∑
= ==
= =
baba
CswCswbsva
CswsvsF n
i
n
iii
n
iiiii
n
i
n
iiiii
Funcția de adecvare
Obs: ponderile a și b controlează importanța celor două componente: optimizarea funcției obiectiv, respectiv satisfacerea restricțiilor
Calcul neuronal si evolutiv - Curs 7 22
Selecție Scop: - stabilirea elementelor din populația curentă care vor participa la
constituirea urmașilor (selecția părinților) - stabilirea elementelor din populația de urmași care vor face parte
din generația viitoare (selecția urmașilor sau a supraviețuitorilor) Principiu: - elementele care au valoare de adecvare mare au mai multe
șanse să fie selectate Mecanisme de selecție: - selecție proporțională, - selecție pe baza rangurilor - selecție de tip turneu - selecție prin trunchiere
Calcul neuronal si evolutiv - Curs 7 23
Selecția proporțională Populația curentă: P=(x1,…,xm) Valori funcție de adecvare: (F1,…,Fm) Probabilități de selecție: pi=Fi/(F1+…+Fm) Obs. Dacă Fi nu sunt strict
pozitive se modifică: F’i=Fi-min(Fi)+eps
Etape: a) Calculul probabilităților de
selecție b) Generarea de valori
aleatoare în conformitate cu distribuția
1 2 … m p1 p2 … pm
Variante de implementare: (i) “Roulette Wheel” (ii) “Stochastic Universal
Sampling” (SUS)
Calcul neuronal si evolutiv - Curs 7 24
Selecția proporțională
Roulette Wheel (metoda ruletei) - Se consideră o ruletă
divizată în m sectoare de arii proporționale cu probabilitățile de selecție
- Se rotește ruleta și numărul de ordine al sectorului în dreptul căruia se află indicatorul la oprirea ruletei reprezintă elementul din populație care se va selecta
Exemplu: 1 2 3 4 0.2 0.4 0.3 0.1
1 2
3 4
Calcul neuronal si evolutiv - Curs 7 25
Selecția proporțională
Implementare: Ruleta (p[1..m]) i:=1 s:=p[1] u:=random(0,1) while s<u do i:=i+1 s:=s+p[i] endwhile Return i
Obs. 1. Algoritmul alăturat implementează
metoda inversării funcției de repartiție 2. La o rulare generează indicele unui
element 3. Pentru selectarea mai multor elemente
ar trebui aplicat algoritmul de mai multe ori.
Pentru a eficientiza procesul se poate utiliza varianta SUS
(Stochastic Universal Sampling) – permite generarea mai multor valori într-o singură rulare
Calcul neuronal si evolutiv - Curs 7 26
Selecția proporțională
Stochastic Universal Sampling Idee:
Algoritm: SUS(p[1..m],k) u:=random(0,1/k) s:=0 for i:=1,m do c[i]:=0 s:=s+p[i] while u<s do c[i]:=c[i]+1 u:=u+1/k endwhile endfor Return c[1..m]
Obs: k reprezintă numărul de elemente ce trebuie selectate
c[1..m] va conține nr. de copii ale fiecărui element
1 2
3 4
Calcul neuronal si evolutiv - Curs 7 27
Selecția proporțională
Dezavantaje: 1. In cazul în care funcția de optimizat nu este strict pozitivă, valorile
trebuie transformate
2. Daca diferența între scorul celui mai bun element este semnificativ mai mare decât cel al celorlalte elemente atunci e posibil sa fie selectate doar copii ale acestuia stopându-se procesul de evoluție (când populația nu are suficientă diversitate devine dificil să fie generate configurații noi)
Calcul neuronal si evolutiv - Curs 7 28
Selecția bazată pe ranguri
Specific: probabilitățile de selecție nu se calculează pe baza valorilor
funcției de adecvare ci pe baza poziției acestor valori în lista ordonată crescător a tuturor valorilor
Etape: 1. ordonează crescător valorile funcției de adecvare 2. fiecărei valori distincte din lista de valori i se asociază un rang (1 pentru cea mai mică valoare) 3. se partiționează populația în clase de elemente având asociat
același rang (de exemplu, k clase) 4. se calculează probabilitățile de selecție: Pi= i/(1+2+…+k) 5. se selectează clase de elemente utilizând tehnica ruletei sau SUS;
din fiecare clasă selectată se extrage aleator câte un element
Calcul neuronal si evolutiv - Curs 7 29
Selecția de tip turneu
Specific: selecția unui element se bazează pe compararea lui cu alte
elemente Pentru selecția fiecărui element se parcurg etapele: 1. Se selectează aleator k elemente din populație 2. Dintre cele k elemente selectate se alege cel mai bun; acesta va fi
rezultatul selecției Obs. 1. Selecția elementelor ce participă la turneu se poate face cu sau
fără revenire 2. Caz clasic: k=2
Calcul neuronal si evolutiv - Curs 7 30
Selecția prin trunchiere
Specific: din populația reunită a părinților și fiilor generați prin încrucișare și
mutație se selectează cei mai buni k indivizi Obs. 1. Este singura selecție care nu implică elemente aleatoare 2. Se utilizează mai mult la strategiile evolutive 3. In general populațiile de părinți și urmași au fiecare câte m
elemente dintre care trebuie selectați m supraviețuitori
Calcul neuronal si evolutiv - Curs 7 31
Incrucișare
Scop: combinarea a două sau mai multe elemente ale populației cu scopul obținerii unui nou element
Obs: la algoritmii genetici clasici se pornește de la doi părinți și se
generează doi urmași Tipuri de încrucișare: - cu puncte de tăietură - uniformă - convexă - specifică problemei de rezolvat
Calcul neuronal si evolutiv - Curs 7 32
Incrucișare cu puncte de tăietură Un punct de tăietură Două puncte de tăietură
Urmași
Părinți Părinți
Urmași
Calcul neuronal si evolutiv - Curs 7 33
Incrucișare cu puncte de tăietură Observatii: 1. Din populația de parinti se selecteaza aleator (sau prin selecție ce
ține cont de calitatea elementelor) perechi de elemente asupra cărora se aplică încrucișarea cu o probabilitate prestabilită (0.2<=Pc<=0.9)
2. Punctele de tăietură se selectează uniform aleator
3. Nu există argumente teoretice referitoare la superioritatea incrucișării cu mai multe puncte de tăietură; experimental s-a observat că varianta cu două puncte de tăietură se comportă mai bine decât cea cu un singur punct
Calcul neuronal si evolutiv - Curs 7 34
Incrucișare uniformă Specific: genele urmașilor se determină prin selecția aleatoare a
genelor părinților Notatii: x =(x1,…xn), y =(y1,…,yn) – părinți x’=(x’1,…x’n), y’=(y’1,…,y’n) – fii
==
=
=
daca , daca ,
p-1 ateaprobabilitcu ,p ateaprobabilitcu ,
'
''
'
iii
iiii
i
ii
yxxxxyy
yx
x
Calcul neuronal si evolutiv - Curs 7 35
Incrucișare convexă Specific: se utilizează pentru elementele ale căror componente
sunt valori reale Notatii: x =(x1,…xn), y =(y1,…,yn) – părinți x’=(x’1,…x’n), y’=(y’1,…,y’n) – fii
iii
iii
xaayyyaaxx
)1(
)1('
'
−+=
−+=
Obs. 1. Se poate extinde pentru mai multi părinți (variantă utilizată în
cazul strategiilor evolutive) 2. Coeficientul a din (0,1) se poate alege aleator
Calcul neuronal si evolutiv - Curs 7 36
Incrucișare specifică Scop: surprinde mai bine specificul problemei de rezolvat; poate
include scheme euristice adecvate problemei Exemplu: problema comis voiajorului (un traseu este specificat
prin ordinea de parcurgere a orașelor) Părinți: A B C D E F G Punct de tăietura: 3 A B E G D C F Fii: A B C E G D F A B E C D F G Pt a rămâne permutarea corectă nu se interschimbă efectiv
elementele ci doar se folosește ordinea elementelor din unul dintre părinți pentru a aranja o parte dintre elementele celuilalt părinte
Calcul neuronal si evolutiv - Curs 7 37
Mutație Scop: permite introducerea unor gene noi (care nu fac parte din
genotipul curent) Obs: tipul de mutație depinde de modul de codificare a
elementelor populației Codificare binară: mutația constă în complementarea unor gene
selectate aleator Variante de mutație: 1. La nivel de cromozom 2. La nivel ansamblului de gene (“gene pool”)
Calcul neuronal si evolutiv - Curs 7 38
Mutație La nivel de cromozom Etape: 1. Se parcurg elementele populației și pentru fiecare se decide
dacă să se aplice mutație sau nu (probabilitatea de mutație Pm este de regulă o valoare foarte mică)
2. Pentru fiecare cromozom selectat pentru mutație se selectează aleator poziția pe care se aplică mutația (în cazul codificării binare presupune complementarea valorii)
Obs: Pentru a avea, în medie, o genă modificată pe cromozom se
poate alege probabilitatea de mutație Pm=1/m
Calcul neuronal si evolutiv - Curs 7 39
Mutație La nivelul ansamblului de gene Ipoteza: se presupune că toate elementele populației formează un
șir binar lung Aplicare mutație: Se parcurg toate genele și pentru fiecare se
decide (cu probabilitatea Pm) dacă se complementează sau nu
Obs.: 1. In aceasta variantă pot fi modificate mai multe gene ale unui
cromozom
Calcul neuronal si evolutiv - Curs 7 40
Mutație Codificare specifică: Ex. Problema comis-voiajorului Mutația poate consta într-o perturbare de tip 2-opt sau 3-opt
A
B
C D
E
F
G
ABCFEDG
A
B
C D
E
F
G
ABCFEDG ABCDEFG