Documente Academic
Documente Profesional
Documente Cultură
ALGORITMI GENETICI
Algoritmii genetici sunt procedee robuste de căutare şi
optimizare bazate pe mecanismele geneticii şi a selecţiei naturale.
Combină supravieţuirea artificială a celui mai bun individ cu
operatorii genetici în scopul formării unui mecanism robust,
aplicabil unei largi game de probleme
6.1. Introducere
Evoluţia şi reproducerea sunt fenomene naturale, specifice lumii vii. Fiecare
organism are un set de reguli, o aşa-zisă amprentă, codată în genele acestuia. Prin
legarea mai multor gene în şiruri lungi se obţin cromozomii. Fiecare genă
reprezintă o trăsătură specifică a organismului, cum ar fi culoarea ochilor sau a
părului şi are mai multe valori posibile. De exemplu, valorile posibile pentru gena
ce codifică trăsătura culoarea părului sunt ”blond”, ”brunet”, ”roşcat” sau ”şaten”.
Aceste gene şi valorile aferente lor sunt numite în literatura de specialitate genotip.
Expresia fizică a genotipului – organismul în sine – este numit fenotip.
Prin împerecherea a două organisme, acestea îşi pun în comun genele,
urmaşul rezultat în final având o parte din genele unui părinte şi o parte din genele
celuilalt (se va vedea mai târziu în ce măsură se moştenesc acestea). Acest proces
poartă numele de recombinare. Foarte rar, o genă poate suferi procesul de mutaţie.
În mod obişnuit, o astfel de genă nu afectează dezvoltarea fenotipului, dar
ocazional se va regăsi în organism sub forma unei noi trăsături. După cum se va
vedea, acest fenomen este folosit pentru o mai bună acoperire a spaţiului stărilor
pentru problema de rezolvat.
Tehnicile de calcul evoluţionist (TCE) sunt metode de căutare stocastice care
simulează evoluţia biologică naturală. Domeniul calculului evoluţionist mai este
cunoscut şi sub denumirile de Inteligenţă Computaţională (IC) sau Calcul Uşor
[6.10]. Acestea rezolvă problemele pe baza principiilor din ”teoria evoluţionistă”,
dezvoltată de Charles Darwin în secolul al XIX-lea. În acest sens, simulând
evoluţia structurilor individuale prin procesele de selecţie, mutaţie şi recombinare
au fost dezvoltate diverse tipuri de TCE. Procesele depind de performanţele
fiecărei structuri, care la rândul său este influenţată de mediul înconjurător.
Interesul pentru aceste tehnici a crescut foarte repede, deoarece oferă un mecanism
foarte robust de căutare a soluţiei optime.
În figura 6.1 sunt prezentate etapele generale ale tehnicilor de calcul
evoluţionist.
238 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
M ţu t a i e
a celui mai bun individ cu operatorii genetici care sunt abstractizări ale celor din
natură, în scopul formării unui mecanism robust, aplicabil unei largi game de
probleme.
Algoritmii genetici şi, în general, tehnicile de calcul evoluţionist, au fost
aplicate cu succes într-un număr mare de probleme. Dintre argumentele care au
condus la extinderea utilizării algoritmilor genetici se menţionează următoarele:
a) sunt uşor de folosit şi necesită un suport matematic puţin complex,
orientat spre intuiţie;
b) rezolvă probleme dificile ce nu pot fi rezolvate prin metode clasice;
c) sunt uşor de extins şi pot fi aplicaţi pentru o gamă largă de probleme;
d) portabilitatea – se pot păstra unele subrutine de la un program la altul.
La nivel general, algoritmii genetici simulează evoluţia unei specii vii,
plasată într-un mediu ambiant ostil, în virtutea principiului darwinist al luptei
pentru existenţă prin selecţie naturală şi moştenire ereditară. În aceşti algoritmi, o
populaţie de indivizi (soluţii posibile) suferă o serie de transformări de tip
încrucişare şi mutaţie. Luptând pentru supravieţuire, indivizii respectivi se
selectează după o schemă ce oferă şanse sporite celor mai performanţi dintre ei
care alcătuiesc o generaţie nouă. Repetând procesul de un număr suficient de
generaţii, apare natural ca cel mai bun individ din generaţia finală să aspire la a
reprezenta soluţia optimă a problemei [6.16].
În algoritmii genetici clasici, individul (soluţia posibilă) se reprezintă printr-
un şir de 0 şi 1, în care sunt concatenate (codificat) valorile necunoscutelor
problemelor. Apar astfel inconveniente legate de procesare şi interpretarea
rezultatelor, dar acestea pot fi evitate prin AG hibrizi, în cadrul cărora codificarea
se face în numere reale.
Algoritmii genetici modelează evoluţia în natură, deci ţin cont şi de mediul în
care se dezvoltă indivizii (soluţiile). AG operează simultan cu o populaţie de
indivizi valorificându-i pe cei mai performanţi, dar şi explorând spaţiul soluţiilor
prin ceilalţi.
Procesul de căutare genetică este caracterizat de trei componente:
(i) Starea în care se va merge, care reprezintă cunoştinţele ce conţin
informaţii acumulate în timpul procesului de căutare şi pe baza cărora
se determină starea curentă şi stările viitoare;
(ii) Funcţia de căutare care este utilizată, la un moment dat, pentru a
genera starea următoare în procesul de căutare, pe baza unui procedeu
euristic;
(iii) Funcţia de învăţare, care este utilizată pentru generarea stării
următoare pe baza rezultatelor obţinute în timpul căutărilor cele mai
recente.
Strategiile de căutare, la rândul lor, pot fi împărţite în trei categorii:
1. Modelele bazate pe cale, care au un spaţiu de căutare ce este definit
recursiv de o stare iniţială şi de o mulţime de operatori interstări. Strategia de
căutare va găsi soluţia ca fiind calea de la starea iniţială la o stare finală. Aceste
strategii de căutare includ tehnici de căutare arborescente cum ar fi căutarea în
adâncime;
240 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
6: 0110 /: 1101
Se observă ca soluţia menţionată anterior pentru numărul 23, ”6+5*4/2+1”,
se va reprezenta prin nouă gene având corespondenţa:
cromozomi diferiţi etc. În orice caz, metoda folosită trebuie să ţină seama şi de
modul de reprezentare cromozomială deoarece, de exemplu, dacă la reprezentarea
binară o populaţie iniţială de indivizi identici nu influenţează prea mult evoluţia
ulterioară (ei producând soluţii urmaşi diferite), la reprezentarea în numere reale şi
alterare prin încrucişare aritmetică, o populaţie iniţială de soluţii identice nu ar mai
suferi decât modificări lente şi acestea datorate mutaţiilor.
Cel mai frecvent se utilizează generarea aleatoare de valori pentru
necunoscute. Totuşi, dacă problema conţine restricţii prin care sunt legate între ele
domeniile admisibile ale variabilelor, este posibil ca generarea aleatoare să producă
şi soluţii nefezabile (care se ignoră), fiind necesară repetarea producerii aleatoare
de indivizi până când se obţine numărul dorit de soluţii admisibile. Desigur că este
posibilă şi acceptarea din start a unor soluţii nefezabile, dar prezenţa lor trebuie
avută în vedere la alcătuirea funcţiei de evaluare şi/sau a procedeului de selecţie
pentru baza genetică a generaţiei viitoare.
6.2.5. Operatorii
Cei trei operatori folosiţi în AG sunt: selecţia, recombinarea (sau
încrucişarea) şi mutaţia. Aceştia vor fi prezentaţi separat în paragraful 6.3.
Selecţia este cel mai important operator al algoritmilor genetici şi are rol
hotărâtor în dirijarea procesului de căutare din spaţiul soluţiilor şi presupune
244 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
alegerea celor mai buni indivizi din cadrul unei populaţii pentru a forma o nouă
generaţie. Printre cele mai răspândite metode de selecţie se regăsesc: metoda roţii
de ruletă, selecţia locală, selecţia prin trunchiere, selecţia competiţională.
Încrucişarea asigură schimbul de informaţie dintre indivizii unei populaţii
asigurând transmiterea caracteristicilor celor mai bune în cadrul următoarei
populaţii. Metodele de încrucişare diferă de la un tip de reprezentare cromozomială
la altul. Câteva metode specifice de încrucişare pentru codificarea genelor în
numere reale sunt: discretă, aritmetică, euristică. Printre metodele de încrucişare
specifice codificării genelor în sistem binar se regăsesc: încrucişarea cu un singur
punct de tăiere, încrucişarea cu două puncte de taiere, încrucişarea uniformă.
Mutaţia este utilizată pentru păstrarea diversităţii populaţiei de la o generaţie
la alta şi presupune modificarea uneia sau mai multor gene ale unui individ din
baza genetică înainte de a fi transferat în noua generaţie. Mutaţia evită convergenţa
către optime locale prin împiedicarea indivizilor din populaţie să devină prea
asemănători unii cu alţii, ceea ce ar duce la încetinirea sau chiar la stagnarea
evoluţiei.
Operatorii sunt trataţi mai detaliat în subcapitolul 6.3.
Roata de ruletă cunoscută din jocurile de noroc este un disc rotitor împărţit în
mai multe secţiuni egale (evenimentele reprezentând oprirea bilei în fiecare
secţiune sunt echiprobabile) pe care se aruncă o bilă. Când discul se opreşte din
rotaţie bila se opreşte şi ea într-una din secţiuni. Se asociază fiecărui individ câte o
secţiune, însă în acest caz evenimentele nu mai sunt echiprobabile (fig. 6.2), ci
depind de valoarea performanţei individului. Lăţimea fiecărei secţiuni este
calculată pe baza funcţiei de performanţă normalizată. Normalizarea performanţei
unui individ se face prin împărţirea acesteia la suma performanţelor tuturor
indivizilor din generaţie. Altfel spus, un individ are şanse mai mari să fie selectat
cu cât funcţia sa de performanţă are valori mai mari.
0
1
1.16 0.19 0.77
1.09 2
1.48 3
0.45
4
5
0.58
6
2.7 0.7
0.83 7
8
9
Fig. 6.2. Selecţia roată de ruletă.
Exemplu. Se consideră o populaţie de 10 indivizi, ca în tabelul 6.1, având suma
performanţelor egală cu 155 . Fiecare valoare din coloana de performanţe este împărţită la
această valoare, rezultând funcţiile de performanţă normalizate. În figura 6.2 s-au
reprezentat valorile performanţelor în urma normalizării.
Tabelul 6.1. Exemplu de populaţie
Performanţa Suma parţială
Individul Performanţa
normalizată normalizată
0 3 0,019 0,019
1 12 0,077 0,096
2 17 0,109 0,205
3 7 0,045 0,250
4 9 0,058 0,308
5 11 0,070 0,378
246 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
6 13 0,083 0,461
7 42 0,270 0,731
8 23 0,148 0,879
9 18 0,116 1,00
Fiecare individ are o probabilitate de selecţie proporţională cu valoarea
performanţei normalizate. Dacă, de exemplu, se înmulţeşte coloana 3 cu 10, atunci,
la 10 opriri ale bilei, individul 8 va fi selectat de 1,48 ori.
Pasul următor constă în generarea a 10 numere aleatorii (deoarece populaţia
este compusă din 10 indivizi) între 0 şi 1 (suma parţială normalizată maximă).
Dacă numărul astfel generat este între 0 şi 0,019, atunci este selectat individul 0.
Dacă se află între 0,019 şi 0,096, atunci este selectat individul 1 etc.
Formal, paşii de lucru pot fi sintetizaţi astfel:
a) Fie S suma performanţelor întregii populaţii:
S = ∑ Pi
În cadrul selecţiei locale, fiecare individ este situat într-un mediu înconjurător
numit vecinătate, el ca individ interacţionând numai cu indivizii din vecinătatea sa
[6.3]. Vecinătatea este definită de structura pe baza căreia este formată populaţia şi
poate fi văzută ca un grup de potenţiali părinţi. În prima fază se selectează un
posibil părinte, apoi din vecinătatea acestuia se selectează individul ce va fi părinte,
adică va participa la procesele de recombinare şi mutaţie. Selecţia părintelui se
poate face prin alegerea celui mai bun individ, alegerea individului ce are valoarea
potrivirii cea mai mare, sau alegerea aleatoare a unui individ din vecinătatea
selectată. V e ăc i n t a t e l i n ăe a r ( d i s ţ tă a n = 2
Structura vecinătăţii poate fi [6.2]:
• liniară:
– inel întreg sau jumătate
(fig. 6.3);
I n e l
• bidimensională (2D): j u ăm t a t e
– cruce întreagă sau
jumătate (fig. 6.4);
– stea întreagă sau Fig. 6.3. Vecinătate liniară: inel întreg şi
jumătate (fig. 6.5). jumătate.
V e ăc i n t a t e V2 De ă c i ( n d i st ţ at ă a t en 2 D = 1( d ) i s ţ t ă a n = 1 )
C r u c e ă î n t r e Sa g t e a ă î n t r e a g
C r u că e j u m t a St et e aă j u m t a t e
Inel întreg 2 4
Inel jumătate 1 2
Cruce întreagă 4 8
Cruce jumătate 2 4
Stea întreagă 8 24
Stea jumătate 3 8
Mărimea vecinătăţii determină viteza de propagare a informaţiei între
indivizii populaţiei, trebuind să se aleagă între rapiditatea propagării şi o diversitate
mare a populaţiei. O diversitate ridicată implică probleme precum convergenţa
prematură către un minim local. S-a demonstrat că performanţele selecţiei locale
sunt mult mai bune în cazul unei vecinătăţi mai mici [6.17]. În cazul populaţiilor
mici (mai puţin de 100 de indivizi) structura de tip stea jumătate şi de distanţă 1,
oferă cele mai bune rezultate. În cazul populaţiilor mari poate fi utilizat cu rezultate
foarte bune orice tip de structură.
a ( 1− a)
i −1
pi = , i = 1, 2,K , n
1− (1− a)
n
unde i este indexul, iar a ∈ ( 0;1) este un parametru stabilit de utilizator. Se obţin
sumele parţiale:
qi = ∑ p j , j = 1, 2,K , i
Selecţia prin turnir implică alegerea a doi sau trei candidaţi din populaţia
curentă, compararea valorilor performanţelor şi alegerea celui cu valoarea cea mai
mare. O populaţie de n indivizi va necesita în cazul extragerii a doi câte doi indivizi
2n turniruri.
Această metodă poate fi combinată cu selecţia prin metoda roţii de ruletă; cei
2 (sau 3) candidaţi vor fi selectaţi pe baza performanţelor normalizate şi apoi se
aplică regula turnirului. Metoda rezultantă poartă numele de selecţie stohastică prin
regula turnirului.
Această metodă este eficientă în diversificarea populaţiilor (de urmaşi)
datorită implicării preponderente a caracterului aleatoriu.
π n
generarea a gen = populaţii. Numărul de populaţii generate până în
2 IntSel
momentul găsirii soluţiei depinde de tipul de selecţie utilizat. În tabelul 6.3 sunt
prezentate, considerând p0 = 0,5 , valorile numărului de populaţii generate pentru
cele trei tipuri de selecţie: ierarhică, prin trunchiere şi prin competiţie.
Performanţele algoritmului genetic sunt influenţate în mare măsură de
metoda de selecţie utilizată. În continuare se prezintă dependenţa pierderii
diversităţii (fig. 6.6) şi a variaţiei selecţiei (fig. 6.7), în funcţie de intensitatea
selecţiei, pentru cele trei metode de selecţie prezentate anterior.
Tabelul 6.3. Numărul de populaţii generate până la găsirea soluţiei.
Tipul selecţiei Numărul de populaţii generate până la găsirea soluţiei
π× n
Selecţie ierarhică gen =
2(CS − 1)
π n
Selecţie prin trunchiere gen =
2 IntSel
π n
Selecţie prin competiţie gen =
2 2(log(Comp) − log( 4,14 log(Comp)))
1 , 0
0 , 9
0 , 8
0 , 7 S e ţl e c i e p r i n t r u n c h i e r e
0 , 6
0 , 5
0 , 4 S e ţl e c i e p r i n c o m pţ e t i i e
0 , 3
0 , 2
0 , 1 S e ţl e c i e i e r a r ăh i c
0 0 , 2 0 , 4 0 , 6 0 , 8 1 , 0 1 , 2 1 , 4 1 , 6
Fig. 6.6. Dependenţa pierderii diversităţii în funcţie de intensitatea selecţiei.
Algoritmi genetici 251
1 , 0
S e ţl e c i e i e r a r ăh i c
0 , 9
0 , 8
0 , 7
0 , 6 S e ţl e c i e p r i n c o m pţ e t i i e
0 , 5
0 , 4
0 , 3 S e ţl e c i e p r i n t r u n c h i e r e
0 , 2
0 , 1
0 0 , 2 0 , 4 0 , 6 0 , 8 1 , 0 1 , 2 1 , 4 1 , 6
Fig. 6.7. Dependenţa variaţiei selecţiei în funcţie de intensitatea selecţiei.
Pentru aceeaşi valoare a intensităţii selecţiei, metoda de selecţie prin
trunchiere conduce la o pierdere mult mai mare a diversităţii, în comparaţie cu
selecţia ierarhizată şi selecţia prin competiţie. Selecţia prin trunchiere înlocuieşte
indivizii cu urmaşi mult mai buni, deoarece acelor indivizi care au o valoare de
potrivire mică li se asociază o probabilitate de selecţie foarte mică. Metodele de
selecţie de tip ierarhizat şi prin competiţie au un comportament similar, domeniile
lor de aplicabilitate fiind complementare, datorită caracterului discret al metodei de
selecţie prin competiţie.
În figura 6.7 se poate observa că pentru aceeaşi valoare a intensităţii selecţiei,
valoarea variaţiei selecţiei este mult mai mică în cazul metodei de selecţie prin
trunchiere. Şi aici se poate observa caracterul asemănător al metodelor de selecţie
de tip ierarhic şi respectiv prin competiţie.
unde Po este părintele mai performant dintre cei doi selectaţi (adică cel cu valoarea
funcţiei de performantă cea mai mică în cazul problemelor de minimizare, sau cea
Algoritmi genetici 253
mai mare, în cazul problemelor de maximizare), Ps este părintele mai slab, iar r
este un parametru generat aleator între 0 şi 1.
Există cazuri în care Urmaş1 astfel generat nu este fezabil. Aceasta se
întâmplă atunci când r ia valori care conduc la aruncarea uneia sau mai multor gene
în afara limitelor admisibile de variaţie. Din acest motiv, recombinarea euristică
foloseşte un parametru introdus de utilizator (n) care specifică de câte ori se va
încerca găsirea (nimerirea) unui r ce duce la o soluţie fezabilă. Dacă după cele n
încercări nu s-a produs un cromozom corespunzător, atunci Urmaş1 ia valoarea
părintelui slab ( Ps ).
Pă r i n t e 2 U r şm a 2
Pă r i n t e 1 U r şm a 1
Pă r i n t e 2 U r şm a 2
Urmaşul 2 1 0 1 1 0 0 0 0 1 0 0
iii) Încrucişarea uniformă este un operator pentru codificarea binară care
specifică provenienţa pentru fiecare genă a urmaşului (de la ce părinte s-a moştenit
fiecare genă). Acest principiu face posibilă încrucişarea la nivel de genă, nu la
nivel de segment, ca în cazurile anterioare.Gradul de ”amestecare” a genelor este
dat de un parametru subunitar (uzual egal cu 0,5) numit rată de încrucişare.
Fie doi părinţi având cromozomii:
gena1 gena2 gena3 gena4 gena5 gena6 gena7 gena8 gena9
Părinte 1 0110 1010 0101 1100 0100 1101 0010 0010 0001
Părinte 2 0010 0111 0010 0010 1010 1110 1011 0111 0010
Pentru fiecare se generează o mască (de lungime egală cu numărul de gene
din cromozom) după care se va ghida procesul de copiere a genelor în cromozomul
urmaşilor. Această mască este formată tot din valori binare, însă având următoarea
semnificaţie: dacă valoarea de pe poziţia k din masca primului părinte este 1, atunci
gena de rang k este copiată în cromozomul urmaşului 1, pe poziţia k, iar gena de
rang k din urmaşul 2 va lua valoarea genei corespunzătoare din părintele 2. Altfel,
pentru valoarea 0, se procedează dual. Reiese natural că măştile sunt
complementare (una este negaţia celeilalte).
Pentru părinţii reprezentaţi mai sus, dacă se alege o rată de încrucişare de 0,5,
cele două măşti pot fi, de exemplu:
gena1 gena2 gena3 gena4 gena5 gena6 gena7 gena8 gena9
Părinte 1 0 0 1 0 1 1 1 0 0
Părinte 2 1 1 0 1 0 0 0 1 1
Aceasta înseamnă că gena de rang 4 pentru urmaşul 1 va fi 0010 (adică gena
de acelaşi rang a părintelui 2) iar pentru urmaşul 2, gena de rang 4 va fi 1100
(corespunzătoare părintelui 1).
intervalul 0..31.
Reprezentarea soluţiilor se poate face prin şiruri de 5 biţi.
Iniţializarea: se porneşte de la o populaţie aleatoare (fie aceasta de 4 indivizi), fiecare
de câte 5 biţi. De exemplu, aceştia pot fi 01101, 11000, 01000, 10011 (aleşi aleator).
Performanţa: funcţia de performanţă pentru acest exemplu simplu se calculează prin
evaluarea funcţiei f ( x ) = x . Rezultă valorile 169, 576,64, 361, cu valoarea medie 293 şi
2
maximul de 576.
Selecţia:
– se însumează performanţele rezultând 1170 şi se reproduc fiecare individ în
noua generaţie în funcţie de proporţia performanţei lui în cadrul sumei (de
exemplu, 14.4%, 49.2%, 6.5%, 30.9%);
– se alege un număr aleator r între 1 şi 1000;
– dacă r ≤ 144 atunci se selectează 01101
altfel
Algoritmi genetici 257
∑f(x )
(6.2)
j
j =0
258 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
Declaraţii ( )
Prototipuri
main( )
Citire date
Initializare
Pentru fiecare cromozom din populaţia curenta execută
Procedura_Selectie( )
Procedura_Incrucisare( )
Procedura_Mutatie( )
Procedura_Performante( )
Procedura_Afisare( )
SfarsitPentru
SfarsitMain
Secţiunea de declaraţii conţine seria de fişiere Header şi Namespace-uri care
sunt necesare (iostream.h, math.h, string.h etc.). Pe lângă acestea, tot aici se
definesc unele valori predefinite (rata de încrucişare, numărul maxim de generaţii
etc.). În cazul problemei expuse, sunt necesare:
#define RATA_INCRUCISARE 0.7
#define RATA_MUTATIE 0.001
#define DIM_POP 100 //trebuie sa fie
numar intreg
#define LUNGIME_CROMOZ 300
#define LUNGIME_GENA 4
#define NR_MAX_GENERATII 400
#define RANDOM_NUM ((float)rand()/(RAND_MAX+1))
Cromozomii în această situaţie sunt codificaţi în binar, având structura
definită astfel:
260 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
struct chromo_typ
{
// stringul de biti va fi stocat intr-un
// std::string
string biti;
float fitness; //functia de performanta
chromo_typ(): biti(""), fitness(0.0f){};
chromo_typ(string bts, float ftns): biti(bts),
fitness(ftns){}
};
Secţiunea de prototipuri este destinată declarării funcţiilor utilizate; aceasta
poate lipsi, dacă fiecare funcţie este definită înainte de a fi apelată. Funcţiile
necesare sunt:
void TiparSimbolGena(int val);
string PreiaBitiAleatori(int length);
int BinToDec(string biti):
float AssignFitness(string biti, float
valoare_obiectiv);
void TiparCromoz(string biti)
int ImparteBiti(string biti, int* buffer);
string Ruleta(int total_fitness, chromo_typ*
Populatie);
void Mutatie(string &biti);
void Recomb(string &urmas1, string &urmas2);
Funcţia Ruleta realizează procedura de selecţie prin metoda roţii de ruletă,
recombinarea se face într-un singur punct, iar mutaţia este la nivel de bit. Funcţiile
de afişare pe ecran sunt TiparSimbolGena şi TiparCromoz, iar celelalte sunt funcţii
auxiliare folosite pentru manipularea şirurilor de biţi. De exemplu, funcţia
BinToDec face decodificarea cromozomilor, prin conversia de la numărul în baza 2
la cel zecimal corespunzător.
În cadrul funcţiei main se realizează următoarele:
– citirea datelor: un număr real ţintă;
– iniţializarea populaţiei iniţiale, cu funcţia fitness egală cu 0.
for (int i=0; i<DIM_POP; i++)
{
Populatie[i].biti =
PreiaBitiAleatori(LUNGIME_CROMOZ);
Populatie[i].fitness = 0.0f;
}
– calculul performanţelor
Populatie[i].fitness=AssignFitness(Populatie[i].biti
,Obiectiv);
– în cazul găsirii unei soluţii, tipărirea acesteia şi încheierea procesului de
căutare.
Funcţia PreiaBitiAleatori utilizată la generarea populaţiei iniţiale întoarce un
şir aleator format din cifre de 0 şi de 1, având lungimea LUNGIME_CROMOZ.
Algoritmi genetici 261
P o pţ u l a i e
A l g o r i t m g e n e t i c
M ă r i m e S e aă p l i c
G e n e r a r e
R a p o r t şd e î n c r u c i a r e
F o ră m a t d i n
R a p o r tţ d e m u t a i i
I n d i v i d
U t i l ăi z e a z
P a r a m e t r i
d e p o t r i v i r e P a r a m e t r i
F o r m a t d i n M ă r i m e c r o m o z o m i
N uă m r d e v a r i a b i l e
C r o m o z o m G e nţ e r a i i
R a p o r t şd e î n c r u c i a r e
L u n g i m e R a p o r tţ d e m u t a i i
F o r m a t d i n
G ăe n
C a r a c t e r
Pentru a descrie diferitele stări ale unui algoritm genetic, poate fi utilizat un
model dinamic. Comportamentul AG depinde de operatorii care acţionează asupra
sa şi de evenimentele la care este supus. De exemplu, un model dinamic, reprezintă
de fapt enumerarea stărilor importante necesare realizării unui algoritm genetic şi a
operaţiilor ce sunt necesare pentru construcţia sa. Reprezentarea dinamică poată fi
realizată sub forma unei scheme logice, aşa cum se prezintă în figura 6.11 [6.10].
264 Tehnici de Inteligenţă artificială în conducerea sistemelor electroenergetice
S t a r t
C r e a r eţ p o p u l a i e
N eţ i n i i a l i z a r e
I nţ i i a l i z a r e p o p u lţ a i e
I nţ i i a l i z a r e
R u l a r e
R u l a r e
R e g e n e r a r e
E p u i z a rţ e a g e n e r a i i l o r
S t o p
D i v e r g e n t C o n v e r g e n t
A l f a b e t
c a r a c t e r
m u l t i p l i c a r e ( )
m uţ t a i e ( )
Bibliografie
[6.6] Eremia, M., Petricică, D., Bulac, A.I., Bulac, C., Triştiu I. – Tehnici de
Inteligenţă artificială. Concepte şi aplicaţii în sistemele electroenergetice,
Editura AGIR, Bucureşti, 2001.
[6.7] Fogel, D. B. – A Comparison of Evolutionary Programming and Genetic
Algorithms on Selected Constrained Optimisation Problems, Simulation
Review, 1996.
[6.8] Goldberg, D. – Genetic Algorithms in Search, Optimisation and Machine
Learning, Addison Wesley Publishing Company, 1989.
[6.9] Grefenstette, G. – Genetic Algorithms for Machine Learning, Springer Verlag
Academic Publisher, 1999.
[6.10] Lai, L. L. – Intelligent Application in Power System, City University,
London, 1998.
[6.11] Miranda, V., Sirnivasan, D., Ponea, L. M. – Evolutionary Computation in
Power System, IJEPES, Vol. 2, No. 2, 1998.
[6.12] Muhlenbein, H., Schlierkamp, Voosen, D. – Analysis of Selection,
Mutation and Recombination in Genetic Algorithms, GMD, 1993.
[6.13] Petricică, D., Eremia. M., Bulac, C., Olaru, C. – Tehnici ale inteligenţei
artificiale în controlul şi exploatarea reţelelor electrice, Partea a IV-a,
Algoritmi genetici: concepte şi aplicaţii, Revista Producerea, transportul şi
distribuţia energiei electrice şi termice, nr. 9, 1997.
[6.14] Rădăşanu, D. – Posibilităţi de utilizare a inteligenţei artificiale în studiul
reţelelor electrice, Teză de doctorat, Universitatea Tehnică ”Gh. Asachi”
Iaşi, 2000.
[6.15] Popa, R. – Modelarea calităţii apei din râuri, Editura HGA, Bucureşti,
1998.
[6.16] Popa, R, Popa, B. – Optimizarea exploatării amenajărilor hidrotehnice,
Editura Tehnică, Bucureşti, 2003.
[6.17] Voight, H. M., Sontibanez-Koref, I., Born, J. – Hierarchically Structured
Distributed Genetic Algorithm, PPSN, No. 2, 1992.