Sunteți pe pagina 1din 24

Pisica Ioana

ESTIMAREA PARAMETRILOR CINETICILOR DE CRESTERE/EPUIZARE IN


TRATAREA BIOLOGICA A APELOR CU AJUTORUL ALGORITMILOR GENETICI
HIBRIZI
1. AG- Generaliti
1.1 Adaptare i evoluie n natur
Evoluia n natur este unul dintre cele mai fascinante procese care pot fi observate i
analizate, i aceasta datorit gamei foarte variate de fenomene pe care le include. Majoritatea
organismelor evolueaz prin intermediul a dou procese primare : selecia natural i
reproducerea sexual. Noiunea de selecie natural a fost introdus de Darwin n cartea
Despre originile speciilor, prin prisma seleciei naturale, referindu-se la pstrarea
modificrilor favorabile i ndeprtarea modificrilor inadecvate.
Informaia genetic a organismelor superioare este stocat n
general ca o secven liniar de nucleotide (cromozomi) n ADN.
ADN- ul se afl n fiecare celul a unui individ i poate fi numit
prototipul acesteia. Acest model nu se afl stocat ntr-un anumit
organ, ci, dimpotriv, fiecare celul conine prototipul su propriu,
aproape identic cu cele coninute de toate celelalte celule ale
aceluiai individ. Cromozomii sunt compui din gene i din
secvene ADN redundante. Materialul genetic (ADN) din
cromozomi conine mai mult informaie dect este necesar pentru
crearea unui organism. O mare parte dintre cromozomii unui
organism sunt perimai, prnd a nu avea o funcie explicit. O parte
a acestor date pot fi privite , la figurat, ca bii de stop sau bii de
paritate- informaie folosit intern pentru corectarea erorilor i
pstrarea semnalului genetic. Alte segmente ale acestui ADN
reprezint informaie neactualizat ce a fost folosit anterior pe
scara evoluiei.
ADN- ul unei celule este format din dou secvene liniare- una motenit de la
organismul mam, iar cealalt de la organismul tat- avnd mpreun ase miliarde de caractere,
fiecare dintre acestea fiind copiate pe parcursul unei diviziuni a celulei. Dac ntindem firul unei
celule, acesta va avea lungimea de un metru, dar numai 20*10
-10
m n diametru, cu un volum total
de aproximativ 3 m
3
. Deoarece sunt folosite patru litere (nucleotide) pentru codificarea din
ADN, fiecare caracter reprezint 2 bii, iar fiecare celul ncarc 12 gigabii n 3 m
3
.
Diversitatea se manifest prin varietatea cromozomilor entitilor, care, la rndul ei, este
reflectat n variaia structurii i comportamentului entitilor.
n natur, entitile cu capacitatea de a se reproduce singure devin mai capabile de a
ndeplini anumite sarcini n mediul lor, deoarece cele mai potrivite entiti supravieuiesc cu o
rat crescut. Dup o perioad de timp, ce include mai multe generaii, populaia evolueaz spre
niveluri nalte de calitate, ceea ce nseamn c devine mai adecvat n realizarea anumitor sarcini
n mediu. Evoluia biologic nu opereaz n sensul producerii unui singur superindivid ci mai
56
curnd pentru producerea unor specii ce interacioneaz, bine adaptate. Conform teoriei lui
Darwin (i nu numai), mediul (spaiul geografic) joac un rol important n evoluie.
1.2 Algoritmi genetici (hibrizi)
Algoritmii genetici (notai n continuare AG) sunt procedee de cutare i optimizare
bazate pe mecanismele geneticii i ale seleciei naturale. Ei combin supravieuirea artificial a
celui mai bun individ cu operatorii genetici care sunt abstractizri ale celor din natur, n
scopul formrii unui mecanism robust, aplicabil unei largi game de probleme.
Algoritmii genetici (AG) i, n general, algoritmii evoluioniti, au fost aplicai cu succes
ntr-un numr mare de probleme. Cteva motive pentru care utilizarea algoritmilor genetici s-a
extins rapid sunt:
a) AG sunt uor de folosit i cu un suport matematic puin complex, orientat spre intuiie;
b) AG rezolv probleme dificile ce nu pot fi rezolvate prin metode clasice;
c) AG sunt uor de extins i pot fi aplicai pentru o gam larg de probleme;
d) Portabilitatea- se pot pstra unele subrutine de la un program la altul.
Un AG realizeaz o cutare multidimensional prin meninerea populaiei de soluii
poteniale la fiecare pas t, numit generaie, i ncurajarea formrii i schimbului de informaii
ntre aceste direcii. Aceast populaie suport o evoluie simulat: la fiecare generaie soluiile
relativ bune se reproduc, iar cele relativ rele mor.
Pentru evaluarea calitii unei soluii este folosit o funcie legat de problema de
rezolvat, jucnd rolul mediului.
La nivel general, algoritmii genetici simuleaz evoluia unei specii vii, plasat ntr-un
mediu ambiant ostil, n virtutea principiului darwinist al luptei pentru existen prin selecie
natural i motenire ereditar. n aceti algoritmi, o populaie de indivizi (soluii posibile) sufer
o serie de transformri de tip ncruciare i mutaie. Luptnd pentru supravieuire, indivizii
respectivi se selecteaz dup o schem ce ofer anse sporite celor mai performani dintre ei care
alctuiesc o generaie nou. Repetnd procesul de un numr suficient de generaii, apare natural
ca cel mai bun individ din generaia final s aspire la a reprezenta soluia optim a problemei.
n algoritmii genetici clasici, individul (soluia posibil) se reprezint printr-un ir de 0 i
1 n care sunt concatenate (codificat) valorile necunoscutelor problemelor. Apar astfel
inconveniente, dar acestea pot fi evitate prin AG hibrizi, a cror structur va fi prezentat mai
trziu.
Algoritmii genetici modeleaz evoluia n natur, deci in cont i de mediul n care se dezvolt
indivizii (soluiile). AG opereaz simultan cu o populaie de indivizi valorificndu-i pe cei mai
performani, dar i explornd spaiul soluiilor prin ceilali. n principiu, ei pornesc de la o
populaie iniial. Genele fiecrui individ se genereaz aleatoriu, din domeniile posibile de
variaie ale necunoscutelor problemei. n virtutea valorilor respective, fiecrui individ i
corespunde o anumit valoare a unei funcii de performan i aceasta este privit ca o msur a
ajustrii soluiei la obiectivul urmrit. Pe baza unui mecanism de selecie care favorizeaz
alegerea celor mai buni indivizi din populaia curent, se alctuiete o baz genetic pentru
formarea unei noi generaii (etapa de valorificare a populaiei anterioare). Indivizii selecionai n
baza genetic sunt transformai prin operatori genetici de ncruciare i mutaie, dnd natere la
indivizii copii care formeaz generaia urmtoare (etapa de explorare a spaiului soluiilor).
Este de ateptat ca performanele indivizilor din noua generaie s fie n medie mai mare dect
ale indivizilor din populaia anterioar, iar cel mai performant dintre ei s fie superior celui mai
valoros din vechea generaie.
57
Repetnd operaiile de evaluare, selecie i transformare pe un numr suficient de mare de
generaii succesive, se vor obine populaii tot mai bine adaptate la mediu ( seturi de soluii tot
mai apropiate de optim) i soluia cea mai bun din populaia final va putea fi admis ca o
soluie satisfctoare a problemei.
AG nu ofer garania gsirii optimului global, dar n mod cert va depista o soluie
suficient de apropiat de cea optim. n acelai timp, prin caracteristica de a lucra cu o populaie
de soluii, se evit riscul de a limita cutarea n zona unui optim local.
Structura unui algoritm genetic simplu este prezentat n continuare:
Start
t=0;
Initializeaza P(t); {creeaza o poplatie aleatoare P(t)}
Evalueaza P(t); {evalueaza functia obiectiv pentru fiecare membru al P(t)}
Cat timp (conditie de terminare ) executa {operatorii genetici creeaza o noua
populatie }
Start
t=t+1;
Selecteaza P(t) din P(t-1);
Recombina P(t);
Evalueaza P(t); {Evalueaza noua populatie}
Stop
Stop
Un AG pentru rezolvarea unei probleme date trebuie s aib cinci componente:
O reprezentare genetic a soluiie poteniale a problemei;
Un mod de creare a unei populaii iniiale de indivizi;
O funcie de evaluare (performan) care joac rolul mediului;
Operatori care transform componena populaiei;
Valori pentru diferii parametri ai algoritmului genetic (mrimea populaiei, probabiliti de
aplicare a operatorilor, criterii de oprire, numr de generaii parcurse n program).
Reprezentarea este un aspect cheie n practica AG deoarece schema de reprezentare poate
limita drastic eficiena i comoditatea algoritmului.
Cel mai comun mod de a crea o populaie iniial este metoda aleatoare. Este posibil
totui exploatarea cunotinelor specifice problemei prin alegerea populaiei iniiale P(t) mai
degrab euristic dect aleatoriu.
Grefenstette a prezentat cteva consideraii asupra alegerii valorilor pentru diferii
parametri ai algoritmilor genetici. Mrimea populaiei afecteaz att performana global, ct i
eficiena AG. Acetia, n general, se comport slab n condiiile unei populaii de mici
dimensiuni. Cu o populaie de dimensiuni mari, algoritmul poate realiza o cutare mult mai
informat. Astfel, o populaie mare descurajeaz convergena prematur spre soluii suboptimale.
Pe de alt parte, o populaie mare necesit mai multe evaluri la fiecare generaie.
Rata de ncruciare controleaz frecvena cu care este aplicat operatorul de ncruciare.
Cu ct este mai mare rata de ncruciare, cu att mai repede vor fi introduse n populaie noile
structuri. Dac rata este prea mare, structurile performante sunt nlturate prea repede ca selecia
s poat produce mbuntiri. Dac rata ncrucirii este prea mic, atunci cutarea poate stagna
din cauza unei rate de explorare sczute.
58
Observaie: Pentru stabilirea diferitelor probabiliti ale operatorilor nu exist sugestii standard.
Reprezentarea cromozomial
La nceputurile AG se folosea exclusiv reprezentarea cromozomial prin vectori binari, n
care se concatenau valorile exprimate n baza 2 ale variabilelor ce formeaz o soluie posibil a
problemei. Admind c exist o singur necunoscut x, despre care se tie c poate lua valori din
domeniul [-1;2] n problema dat i precizia de ase zecimale exacte, rezult c domeniul d=2-(-
1)=3 s fie mprit n d*10
6
=3*10
6
intervale egale. Se observ c 2
21
<3*10
6
<2
22
. De aici rezult
c, n cod binar, este nevoie de un cromozom cu 22 de bii pentru a putea reprezenta un numr
real din intervalul [-1;2], cu o precizie de ase zecimale. Fie <b
21
b
20
....b
0
> un astfel de vector
binar. Evaluarea funciei de performan se face folosind numrul real corespunztor, care se
obine cu schema:
unde: -1 este limita din stnga a domeniului lui x; 3 este lungimea d, iar x are forma:
i reprezint un numr ntreg din intervalul [2
21
; 2
22
].
Dac soluia problemei presupune trei necunoscute i fiecare dintre acestea ar avea
domenii posibile de aceeai extindere i s-ar dori aceeai precizie, rezult c s-ar lucra cu
cromozomi binari avnd fiecare 3*22 = 66 valori de 0 i 1 n reprezentarea unei soluii.
Decodificarea fiecruia n numere reale, pentru calculul funciei de evaluare, constituie operaii
suplimentare i posibil generatoare de erori. Un alt dezavantaj al reprezentrii binare deriv din
faptul c, la aplicarea unui operator genetic de ncruciare asupra a doi indivizi, seciunea de
ncruciare cade de regul n interiorul segmentului din cromozom care corespunde uneia dintre
variabile. Prin ncruciare, valorile acestei variabile i a celor care o urmeaz n vectorul binar
concatenat, se vor schimba pentru cele dou soluii copii, dar variabilele plasate naintea
seciunii de ncruciare rmn nemodificate. Aceast caracteristic poate duce la prelungirea
duratei de cutare pn la gsirea unei soluii satisfctoare.
Pentru a depi inconvenientele menionate, s-au cutat alte tipuri de reprezentri
cromozomiale. Codificarea Gray folosete tot cifrele 0 i 1, dar dou numere reale apropiate din
spaiul problemei apar apropiate i n reprezentarea Gray, n sensul c difer doar prin coninutul
unui bit (de exemplu, n cod binar cifrele 13 i 14 se reprezint prin 1101 i ll10, iar n cod Gray
prin 1011 i 1001, n primul caz diferind coninutul la dou poziii de bii, iar n ultimul, la o
singur poziie).
Totui, cea mai natural reprezentare s-a dovedit a fi cea n numere reale. Ea nu mai
reclam transformri dintr-o baz n alta, este conceptual adecvat spaiului soluiilor problemei
i permite implementarea eficient a operatorilor genetici. n aplicaia din lucrare s-a folosit acest
tip de reprezentare, fiecare cromozom fiind un vector de numere reale corespunztoare
variabilelor de decizie ale problemei.
Populaia iniial
Populaia iniial de soluii posibile se poate crea n diverse moduri: fie prin
nsmnarea cu un numr limitat de soluii admisibile i multiplicarea lor pn la numrul de
indivizi dorit, fie prin copierea unuia singur, fie prin generarea aleatoare de valori din domeniile
posibile ale variabilelor i gruparea lor n cromozomi diferii etc. n orice caz, metoda folosit
trebuie s in seama i de modul de reprezentare cromozomial deoarece, de exemplu, dac la
reprezentarea binar o populaie iniial de indivizi identici nu influeneaz prea mult evoluia
59
ulterioar (ei producnd soluii copii diferite), la reprezentarea n numere reale i alterare prin
ncruciare aritmetic, o populaie iniial de soluii identice nu ar mai suferi dect modificri
lente i acestea datorate mutaiilor.
Cel mai frecvent se utilizeaz generarea aleatoare de valori pentru necunoscute. Totui,
dac problema conine restricii prin care sunt legate ntre ele domeniile admisibile ale
variabilelor, este posibil ca generarea aleatoare s produc i soluii nefezabile (care se ignor),
fiind necesar repetarea producerii aleatoare de indivizi pn cnd se obine numrul dorit de
soluii admisibile. Desigur c este posibil i acceptarea din start a unor soluii nefezabile, dar
prezena lor trebuie avut n vedere la alctuirea funciei de evaluare i/sau a procedeului de
selecie pentru baza genetic a generaiei viitoare.
Funcia de ajustare
Funcia de evaluare a ajustrii cromozomului la mediu este extrem de important pentru
eficiena AG. De obicei, forma ei analitic este imprimat de problema concret care trebuie
rezolvat. Ea poate s exprime un cost (sau un beneficiu), o cantitate de resurs folosit pentru a
realiza o producie specificat, o cantitate de produs realizabil dintr-o resurs limitat, abaterea
fa de un plan prestabilit etc. i, evident, se poate umri minimizarea (sau maximizarea) mrimii
fizice respective. Dar forma concret a funciei de evaluare din AG trebuie s in seama i de
alte aspecte, cum ar fi:
Ce procedeu de selecie a indivizilor se utilizeaz n AG, pentru c, de exemplu, selecia
bazat pe principiul roii de rulet este adecvat doar problemelor de maximizare i cnd funcia
de evaluare are valori nenegative. Dac problema real urmrete minimizarea unei funcii f(x),
atunci funcia de evaluare ar putea fi:
E
v
(x
i
)= 1/f(x
i
)
i selecia respectiv devine utilizabil n cazul cnd f(x
i
)> 0. Restricia privitoare la
nenegativitate se poate nltura cu: E
v
(x
i
)= 1/[f(x
i
)+c] , unde c este o constant pozitiv
suficient de mare. Dac se tie c f(x
i
)>=0, atunci o funcie de evaluare de forma:
E
v
(x
i
)= [S-f(x
i
)]/S
unde S = max{ f(x
i
)} este valoarea cea mai mare a lui f(x) dintre toi indivizii i din toate
generaiile pn la cea curent inclusiv, va conduce la minimizarea lui f(x) cnd E
v
(x) se
maximizeaz.
Existena unor restricii ale problemei, care face dificil precizarea domeniului soluiilor
admisibile i conduce la necesitatea de a accepta n populaie i unii indivizi nefezabili. Astfel de
situaii se trateaz n diverse moduri, n funcie de problem, natura restriciilor i alte
caracteristici ale algoritmului genetic folosit. Cea mai simpl cale este aceea de a aduga la f(x) o
funcie de penalitate sub forma, de exemplu (ntr-o problem de maximizare):
E
v
(x
i
) = f(x
i
)- p(x
i
),
unde p(x
i
)=0 pentru o soluie admisibil i are o valoare arbitrar 0< =p(x
i
)<f(x
i
) dac x
i
este
neadmisibil.
Modul cum se construiete p(x) este n general legat de problem. n alte abordri soluiile
nefezabile se elimin i se nlocuiesc prin soluii apropiate din domeniul admisibil sau li se
corecteaz unele componente pentru a deveni fezabile. Dac restriciile problemei au grade de
constrngere diferite i pot fi ierarhizate, aceasta complic definirea funciei de penalizare.
Uneori se lucreaz cu funcii de evaluare diferite pentru indivizii admisibili i respectiv cei
60
neadmisibili, dar atunci apar dificulti la compararea performanelor acestora.
n sfrit, funcia de evaluare se poate defini fr s se utilizeze direct f(x
i
) pentru cei i=1,2,. . .n
indivizi ai unei populaii, ci doar poziia lor ntr-un ir ordonat descresctor dup valorile f(x
i
), de
exemplu printr-o expresie ca: unde unde a este un parametru al AG i
a(0; 1), iar i = 1 corespunde soluiei cu f(x) maxim, i = 2 celei cu valoarea urmtoare etc., i =
n fiind soluia cu f(x) cel mai redus.
Unele aplicaii apeleaz la scalarea funciei de ajustare, chiar la scalarea variabil n
decursul generaiilor succesive, astfel nct s se diferenieze artificial soluii avnd caliti foarte
apropiate n generaiile trzii.
Oricare ar fi schema de construire a funciei de evaluare, ea trebuie s aloce fiecrui
individ o probabilitate de reproducere de aa manier nct sperana ca el s fie selectat pentru
baza genetic sp creasc odat cu gradul lui de ajustare la mediu.
Parametrii de control
Parametrii de control ai AG depind i de tipul i forma operatorilor genetici utilizai
(descrii la sfaritul acestui paragraf), dar, n mare, civa se regsesc n orice AG, i anume: talia
populaiei n; numrul de generaii T; probabilitile de ncruciare p

i de mutaie p
m
; numrul de
gene (n reprezentare real) sau numrul de bii (n reprezentare binar) ai cromozomului.
Alegerea valorilor adecvate pentru parametrii respectivi nu este o sarcin uoar i cel
mai adesea se rezolv euristic, prin ncercri pe AG- ul folosit i problema analizat. O populaie
prea numeroas poate crea probleme de timp i memorie de calcul, pe cnd un numr limitat de
indivizi poate s nu fie reprezentativ pentru ntregul spaiu al soluiilor. Probabilitile de
ncruciare i mutaie pot s grbeasc convergena spre optime locale sau s ntrzie atingerea
unei soluii satisfctoare etc.
Operatorii
Cei trei operatori folosii n AG sunt selecia, ncruciarea i mutaia. Acetia vor fi
prezentai pe scurt n continuare. Datorit spaiului restrns, vom prezenta doar operatorii hibrizi,
cei clasici fiind deja bine cunoscui.
Selecia hibrid
Selecia reprezint pasul de supravieuire a celui mai bun, care selecteaz indivizi din
vechea populaie, n funcie de performana acestora, formnd un spaiu de mperechere sau o
generaie intermediar( baza genetic din care se va obine generaia urmtoare de soluii).
1. Selecia prin metoda roii de rulet:
Selecia roata de ruleta este cea mai cunoscuta metoda de selectare a cromozomilor prini,
cromozomi crora li se vor aplica operatorii genetici descrii mai jos.
Roata de ruleta cunoscut din jocurile de noroc este un cerc rotator mprit in 37-38
seciuni egale. Crupierul pune cercul n micare i arunc o bil in sensul opus micrii. Cnd
cercul se va opri din rotaie bila se oprete si ea intr-una din cele 37(38) seciuni.
Fiecare seciune a roii corespunde unui cromozom. Aadar, n cazul AG roata va fi
mprit n N seciuni(N este mrimea populaiei de cromozomi), dar care acum nu sunt egale,
ci limea fiecrei seciuni reprezint performana relativ a cromozomului respectiv(calitatea
61
cromozomului in cauza mprit la suma calitilor tuturor cromozomilor). Paii de realizare a
procedeului de selecie sunt:
a) Fie
( )

n
1 i
i T
x E E
- ajustarea intregii populatii,

( ) , E / x E p
T i i

i=1,2,.,n probabilitatile individuale de selectie si



, p q
i
1 j
j i

i=1,2,,n probabilitatile cumulate pentru fiecare cromozom.


b) Se genereaza un numar aleatoriu [ ) 1 ; 0 r si
- daca
1
q r < se alege primul cromozom;
- altfel se alege cromozomul i la care
i 1 i
q r q < <

, pentru a trece in baza genetica.


c) Se repeta operatia de la punctul b) de n ori (talia populatiei), pana la completarea bazei
genetice cu numarul necesar de indivizi.
2. Selecia prin regula turnirului (competiional)
Aceast selecie funcioneaz astfel: se genereaz aleatoriu k numere ntregi (k este de
ordinul 2 sau 3) din intervalul [1;n], se compar funciile de performan ale celor k cromozomi
i cel mai performant este trecut n baza genetic. Repetnd operaia de n ori se completeaz
spaiul de mperechere pn la dimensiunea necesar.
Aceast metod este eficient n diversificarea populaiilor-copii de soluii datorit
factorului aleatoriu implicat preponderent.
3. Selecia prin ordonare genetic normalizat
Procedeul const n ordonarea indivizilor n sensul descreterii valorii funciei de
performan. Cu indivizii astfel ordonai, se calculeaz probabilitile individuale de selecie, cu
formula:
Unde i este rangul n ir, iar a (0,1)- parametru dat de utilizator, i se obin probabilitile
cumulate:
62
Pentru selecie, se genereaz un numr aleator r [0,1) i primul individ pentru care q
i
>=
r va trece n baza genetic. Se repet procedeul de n ori.
Parametrul a imprim presiunea de selecie a algoritmului i este recomandabil s se
plaseze sub 0,1 pentru a nu fora convergena ctre soluii nesatisfctoare.
Operaiile prezentate n continuare (ncruciarea i mutaia) au rolul de a transforma
soluiile prini selectate n baza genetic pentru reproducere, ntr-o nou generaie de soluii,
copii, avnd caliti mai bune.
ncruciarea hibrid
Prin ncruciare doi cromozomi prini schimb ntre ei informaii ereditare i produc doi
cromozomi copii care intr n generaia urmtoare.
La reprezentarea cromozomial prin numere reale, ncruciarea simpl prin seciuni nu d
rezultate satisfctoare.
1. ncruciarea aritmetic
Fie p1 i p2 cei doi prini selectai din baza genetic. Atunci soluiile copii date de
acetia sunt:
u
1
=a*p
1
+ (1-a)*p
2

u
2
=(1-a)*p
1
+ a*p
2
,
unde a este fie un parametru constant (ncruciare aritmetic uniform), fie variabil cu
vrsta populaiei (ncruciare aritmetic neuniform), fie generat aleator din domeniul [0;1)
(ncruciare liniar).
2. ncruciarea euristic
Operatorul de ncruciare euristic are unele trsturi specifice, n sensul c folosete
valorile funciei de performan la determinarea direciei de cutare, produce un singur coppil
(sau poate s nu produc nici unul). El lucreaz dup urmtoarea regul:
u=r*(p
2
-p
1
) + p
2,
n care r este un numr aleatoriu ntre 0 i 1, iar p
2
este printele mai performant, adic cel care
are valoarea funciei de evaluare mai mare (n problema de maximizare) sau mai mic (cazul
problemei de minimizare) fa de p
1.
Dac vectorul rezultat iese din limitele prestabilite de variaie atunci r se regenereaz,
pn la obinerea unei soluii n intervalul respectiv, sau de un numr impus de ori (dac dup
acest numr de generri nu este gsit o soluie viabil, se abandoneaz generarea i nu se mai
formeaz o soluie diferit pentru generaia urmtoare).
Acest tip de ncruciare favorizeaz localizarea n zonele cele mai promitoare din
spaiul soluiilor posibile.
Mutaia hibrid
Operatorul de mutaie asigur diversitatea populaiei i evit convergena prematur sau
spre un optim local. Mutaia modific una sau mai multe gene ale unui individ din baza genetic
i apoi l transfer n noua generaie. Spre deosebire de ncruciare, unde probabilitatea de
63
efectuare este mare, la mutaie aceast probabilitate este foarte sczut, aa cum se ntmpl n
natur.
1. Mutaia neuniform
n acest caz se alege aleatoriu una dintre genele individului i se modific, restul
cromozomului rmnnd nemodificat.
Fie x cromozomul la care se produce mutaia genei x
k
. Atunci aceasta se modific n:

r
1
, r
2
sunt dou numere aleatoare, iar T
numrul total de generaii, t- generaia curent i b- parametru impus de utilizator.
Pe msur ce numrul generaiilor parcurse, t, crete, termenul devine mai mic, i
modificrile produse de operator se diminueaz, avnd ca efect neprsirea brutal a unei soluii
bune din spaiul soluiilor.
2. Mutaia la frontier
Se genereaz un numr aleatoriu ntre 0 i 1, iar dac r este mai mic dect 0,5 atunci gena
de modificat se mut la captul inferior al intervalului de apartenen stabilit anterior. Altfel,
gena se nlocuiete cu marginea superioar a intervalului.
n continuare se va prezenta o aplicaie practic prin care se vor pune n eviden aceste
metode prin rezolvarea cu ajutorul algoritmilor genetici.
2. Aplicaie: Estimarea parametrilor cineticilor de cretere/epuizare n tratarea
biologic a apelor uzate, cu ajutorul algoritmilor genetici.
Cele mai complexe procese de transformare sunt cele pe care le sufer (la care particip)
biomasa acvatic i acestea se numesc, de regul, cinetici de cretere.
Pentru reprezentarea matematic a creterii microbiene s-a dovedit satisfctoare o
ecuaie de reacie de tip Monod. Cu unele ajustri adecvate, acest tip de reacie a fost utilizat
ulterior i pentru descrierea a1tor procese cum ar fi: biodegradarea unui substrat (materie
organic, azot etc.), creterea fitoplanctonului .a.
n raport cu ciclul natural al producerii i descompunerii materiei organice schematizat n
figur, reaciile descrise aici se regsesc att tn faza de descompunere, ct i tn faza de
producere a biomasei acvatice.
La acest ciclu particip, alturi de energia solar, oxigenul i dioxidul de carbon din
atmosfer, dar i oxigenul generat/consumat de materia organic produs n descompunere,
dioxidul de carbon generat/consumat de materia organic n descompunere/n formare i
nutrienii anorganici existeni tn ecosistem sau provenii din descompunerea materiei organice.
Reaciile de biodegradare a materiei organice (substratul nutritiv) sunt indisolubil legate
de existena bacteriilor. Contribuia acestora la viteza de modificare a coninutului de oxigen
dizolvat n ap, se reflect prin intermediul unui parametru global de calitate numit CBO (cerere
biochimic de oxigen), a crui rat de modificare (corespunznd vitezei de consum de oxigen
64
datorat metabolismului bacteriilor respective) apare ca un termen pu de oxigen dizolvat n
relaia de bilan.
Sub forma cea mai general, cererea biochimic de oxigen ar trebui s includ activitatea
celor dou forme de microorganisme:
- microorganismele heterotrofe care i obin energia i hrana pentru structura lor celular prin
metabolizarea materiei organice;
- microorganismele autotrofe capabile s sintetizeze compui organici pornind de la compui
anorganici simpli i folosind ca surs de energie energia rezultat din degradarea materiei
organice (reprezentate mai ales prin nitrosomonas i nitrobacterii responsabile de procesele de
nitrificare), precum i consumul de oxigen al protozoarelor care distrug bacteriile respective
(neglijabil n raport cu celelalte).
2.1 Formularea problemei
Fie un bazin de stabilizare ce asigur tratarea biologic a apelor reziduale cu ncrctur
organic. El este tranzitat de un debit zilnic de 43.200 m3/zi i se tie c are un volum de 43.200
m3. Concentraia de materie organic n debitul afluent variaz pe parcursul zilei aproximativ
dup sinusoida:
( ) ( ) l / mg t 4 3
2
sin 1 150 t S
a

'

1
]
1

+
cu t exprimat n zile.
Pe parcursul a dou zile s-au prelevat sistematic (din 3 n 3 ore) probe de ap din debitul
efluent i s-au determinat concentraiile de materie organic i respectiv de biomas bacterian
heterotrof. Rezultatele sunt trecute n urmtorul tabel:
t(ore) 0 3 6 9 12 15 18 21 24 27 30 33 36
B(mg/l
)
40.7
5
38.9 36.2 35 35.0
5
36.6 39 40.5 41 38.5 36.5 34.5 35
S(mg/l) 36.4 25 25.7 39 55.3 68.5 67 55 37 24.5 26 38.2 56
Se pune problema determinrii parametrilor caracteristici ai populaiei bacteriene (viteza
maxim de cretere, rata de dispariie, viteza consumului metabolic de substrat, factorul de
conversie biomas nou- substrat consumat, coeficientul de realimentare, constanta de
semisaturaie) din incint, tiind c domeniile n care se plaseaz de obicei aceste mrimi sunt:
[ ] [ ] [ ] ; h 0012 , 0 ; 0008 , 0 q ; h 03 , 0 ; 01 , 0 m ; h 3 , 0 ; 1 , 0
1 1 1
max


[ ] [ ] [ ] l / mg 120 ; 80 K ; gS / gB 5 , 2 ; 5 , 1 n ; gS / gB 6 , 0 ; 4 , 0 f
S

65
0.00
10.00
20.00
30.00
40.00
50.00
60.00
70.00
80.00
0.00 5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00
Schematiznd incinta ca un bazin de reacie cu amestec continuu, evoluiile de
concentraie de materie organic (substrat) S i a concentraiei populaiei bacteriene B sunt
descrise de ecuaiile:

'

+
+
+
+


mBV BV
K S
S
QB
dt
dB
V
qBV BV
n
m
BV
K S
S
f
QS QS
dt
dS
V
s
max
s
max
a
(1)
unde V este volumul bazinului, Q- debitul tranzitat, max- viteza de cretere bacterian, m-
viteza de dispariie, q- viteza de consum metabolic, f- factorul de conversie, n- coeficientul de
realimentare cu substrat metabolizabil din biomasa moart i Ks- constanta de semisaturaie n
cinetica de tip Monod.
Notand k=
V
Q
-ecuaiile (1) devin:

'

+
+
+
+


mB B
K S
S
kB
dt
dB
qB B
n
m
B
K S
S
f
kS kS
dt
dS
s
max
s
max
a
(2)
unde s-a admis ca debitul afluent nu aduce aport de bacterii heterotrofe.
66
Trebuie aflate valorile parametrilor
s max
K , n , f , q , m ,
astfel incat integrand ecuatiile (2), cu
conditiile initiale pentru S si B de la t=0 din tabel sa se obtina valori cat mai apropiate de datele
gasite experimental la momentele de prelevare 3,6,,36 h.
Se alege criteriul de optimizare
( ) ( ) ( )

'

1
]
1

+


12
1 i
2
m c
12
1 i
2
m c 1 max
i i i i
B B S S
12
1
K ,..., F min
(3)
sau
( )

'


1 max
K ,..., F
1
max
, unde
c c
B , S
sunt valorile calculate, iar
m m
B , S - cele masurate.
Ecuatiile (2) se integreaza cu Runge-Kutta de ordinul 4
( )
( )

'

2 1 2
2
2 1 1
1
C , C , t f
dt
dC
C , C , t f
dt
dC
cu conditiile initiale
( )
10 1
C 0 t C
;
( )
20 2
C 0 t C
La t t t
k 1 k
+
+
:
( )
14 13 12 11 k 1 1 k 1
k k 2 k 2 k
6
1
C C + + + +
+
( )
24 23 22 21 k 2 1 k 2
k k 2 k 2 k
6
1
C C + + + +
+

unde ( )
k 2 k 1 k i 1 i
C , C , t f t k pt. i=1,2

,
_

+ +

+
2
k
C ,
2
k
C ,
2
t
t f t k
21
k 2
11
k 1 k i 2 i
pt. i=1,2

,
_

+ +

+
2
k
C ,
2
k
C ,
2
t
t f t k
22
k 2
12
k 1 k i 3 i
pt. i=1,2

( )
23 k 2 13 k 1 k i 4 i
k C , k C , t t f t k + + +
pt. i=1,2
Integrarea se face cu pasi min 20 t , dar rezultatele calculate se pastreaza din 3 in 3 ore (cu
pasul din tabel).
2.2 Modelarea problemei cu Algoritmi Genetici
67
Pentru a transpune problema determinrii parametrilor cineticilor de cretere/ epuizare n
termenii algoritmilor genetici, este necesar s se imagineze un cromozom(individ)-soluie care s
reprezinte ansamblul celor ase parametri, de-a lungul pailor de timp ai analizei.
Modelele matematice n care se adapteaz principiul de lucru al AG la
particularitile concrete ale unei probleme date dintr-un domeniu tiinific sau tehnic oarecare,
se numesc generic modele evoluioniste (Michalewicz, 1994). Ele au avantajul c nu necesit
modificarea formei iniiale a problemei de rezolvat astfel nct s devin abordabil prin AG
clasici (cu codificare binar, folosind repetat decodarea pentru evaluarea funciei de ajustare i
apelnd la operatorii genetici valabili pentru acest tip de reprezentare). Dimpotriv, n
programele evoluioniste hibride problema de rezolvat rmne neschimbat, iar AG se adapteaz
specificului acestei probleme (ca variant de reprezentare genetic, manier de identificare a
domeniului soluiilor posibile, definirea funciei de evaluare etc).
Pentru analiza problemei formulate n subparagraful precedent (2.1) cu ajutorul
AG, s-a realizat un model evoluionist hibrid, ale crui particulariti aparinnd de AG sunt
urmtoarele:
O soluie posibil (cromozom) este format din variabilele de decizie (genele) prezentate
anterior ca necunoscute.
Reprezentarea cromozomial pentru valorile necunoscutelor s-a ales n numere reale,
deoarece acestea pot lua orice numr din domeniul de apartenen (asimilat din literatura de
specialitate).
Programul produce populaia iniial genernd aleatoriu valori ale necunoscutelor,
ncadrate n domeniile mai sus menionate. Se genereaza o populatie initiala de solutii posibile,
generand aleatoriu valori pentru cele 6 variabile
i
x :
i
x
max 1
x m x
2
q x
3
f x
4
n x
5

1 6
K x

,
_

i 7
1
x
inf
i
2,4 0,24 0,0192 0,4 1,5 80

,
_

i 7
1
x
sup
i
7,2 0,72 0,0288 0,6 2,5 120

Cu schema ( )
inf
i
sup
i
inf
i i
x x random x x + , i=1..6
Experiena de calcul a demonstrat c n problema analizat, selecia prin ordonare
geometric normalizat produce o baz genetic avantajoas pentru formarea generaiei
urmtoare, dar s-au efectuat rulri i cu selecia competiional.
Funcia de evaluare: Cu fiecare set
{ }
j i
6 , 1 i , x
se integreaza sistemul (2) rezultand
performanta
{ }
j i j
j
x F
1

cu (3) , pt. j=1..120 indivizi
Ca operator genetic de ncruciare programul folosete ncruciarea aritmetic, deci
combinarea liniar a soluiilor-prini, prin intermediul unui coeficient a ntre 0 i 1 care se
genereaz aleator. n acest fel, soluiile copii obinute prin ncruciare aparin domeniului
soluiilor admisibile. Probabilitatea de ncruciare s-a ales (n mod arbitrar i din experiena
rulrilor) 85%.
68
Operatorul de mutaie considerat adecvat n cazul de fa este mutaia neuniform de
parametru b cu o probabilitate de 5%. Datorit specificului problemei, s-a exclus folosirea
mutaiei la frontier, deoarece salturile mari ar fi putut omite soluii viabile.
Criteriul de oprire al analizei s-a fixat numrul maxim de generaii parcurse. Totui,
momentul opririi depinde si de utilizator, fiind implementat o rutin care ntreab din 2000 n
2000 de generaii dac este solicitat continuarea. Populatia initiala este apoi prelucrata de AG in
generatii succesive. Fiecare solutie copil implica integrarea lui (2) si calculul lui (3)
2.3 Prezentarea programului de calcul
Programul de calcul a fost implementat n Turbo Pascal (cu suport Borland Delphi 6) datorit
uurinei n implementare i a familiarizrii prealabile cu limbajul. Acest aspect nu influeneaz
cu nimic modul de funcionare i rulare a programului. Sursa programului, listat integral mai
jos, este inspirat din secvenele de program publicate de Goldberg (1989), dar adaptate pentru
AG hibrizi.
Listingul programului:
program ag;
{$APPTYPE CONSOLE}
uses
SysUtils;
{ Algoritm genetic cu reprezentare cromozomiala in numere reale pentru
determinarea parametrilor cineticilor de crestere/descompunere la
tratarea biologica a apelor uzate
Parametrii necunoscuti: viteza maxima de crestere; viteza de deces;
rata consumului metabolic; factorul de conversie in biomasa;
coeficientul de realimentare si constanta de semisaturatie
Criteriu: max( f(x=paramm)=1.0 / Suma patratelor diferentelor medii
intre substrat si masa bacteriana calculate si respectiv masurate
Foloseste: selectia prin ordonare geometrica normalizata,
incrucisarea euristica
mutatia neuniforma }
const maxpop=100; { Dimensiunea maxima a populatiei }
maxgene=50; { Numarul maxim de gene/variabile in cromozom }
type gene=array[1..maxgene] of real;
ivect=array[1..maxpop] of integer;
vect=array[1..maxpop] of real;
individ = record
x:gene; { fenotip=valori gene cromozom (numere reale) }
ajust,acros:real; { valoarea functie ajustare si acros }
parinte1,parinte2:integer; { parintii }
end;
populatie=array[1..maxpop] of individ;
var popv,popn:populatie; { doua populatii distincte: cea veche si noua }
dimpop,gen,maxgen,ngene,dimpm1:integer; {variabile globale intregi }
pcros,pmut,sumajust:real; {variabile globale reale }
nmut,ncros,i,crmax:integer; { intregi pentru statistica }
medie,max,min,maxglob:real; { reali pentru statistica }
paropt,limi,lims:gene;
69
fmic,sump:vect; iord:ivect;
frez:text; opt:char; numep:string[20];
{ variabile specifice problemei analizate: }
ndat:integer;
kqpv,miux,mort,qmet,fact,creal,ksemi:real;
smas,bmas:array[0..50] of real;
{ dimpop = dimensiune populatie ( <= maxpop )
ngene = numar de gene/variabile ( <= maxgene )
gen, maxgen = contor generatii, numar maxim de generatii
pcros, pmut = probabilitati de incrucisare si mutatie
nmut, ncros = contori pentru mutatii si incrucisari
medie, max, min = valori med.,max.si min.a fctiei de ajustare pe gener.
maxglob= Fctia de ajust.maxima ptr.solutia cea mai buna din toate gener.
fmic = valoarea functiei de evaluare (de maximizat) ptr.un cromozom
paropt = parametrii optimi la care se obtine maxglob
limi, lims = limitele inferioare/superioare ale valorilor genelor
dlim = domenii admise pentru valorile genelor }
Procedure FUNCTII(t,b,s:real; var bt,st:real);
{ Calculeaza membrii drepti ai sistemului de ec.diferentiale
pentru valori t, B si S specificate : }
var sa:real;
begin
{ Safl. = } sa:=150*(1+sin(Pi*(3-4*t)/2));
{ dB/dt = } bt:=b*(miux*s/(s+ksemi)-mort-kqpv);
{ dS/dt = } st:=kqpv*(sa-s)+b*(mort/creal-qmet-miux*s/fact/(s+ksemi));
end;
Procedure RK4sist2(h:real; var x,u,v:real);
{ Integreaza pe un pas h=dx, in raport cu x, un sistem de
2 ec.diferentiale cu variabilele dependente u si v - metoda RK IV }
var u1,v1,u2,v2,u3,v3,u4,v4:real;
begin
{ Calculeaza coeficientii u1, v1, ... ,v4 : }
Functii(x,u,v,u1,v1);
Functii(x+h/2,u+h/2*u1,v+h/2*v1,u2,v2);
Functii(x+h/2,u+h/2*u2,v+h/2*v2,u3,v3);
Functii(x+h,u+h*u3,v+h*v3,u4,v4);
{ Actualizeaza valorile vechi la cele noi de pe pasul de calcul : }
u:=u+h*(u1+2*u2+2*u3+u4)/6;
v:=v+h*(v1+2*v2+2*v3+v4)/6;
x:=x+h;
end;
Procedure INITIALIZARE;
var fdat:text; i,j,n,k:integer; qmic,qm1,coef,pc:real;
begin
{ Introduce datele de intrare :
- dimpop = talia populatiei
- maxgen = numar generatii de parcurs
- pcros = probab.de incrucisare (nr.mediu de incr.pe generatie
=dimpop/2*pcros )
- pmut = probab.de mutatie (nr.mediu de gene mutate pe generatie
= dimpop*ngene*pmut ) }
dimpop:=80; dimpm1:=dimpop-1; maxgen:=12000;
pcros:=0.9; pmut:=0.05;
qmic:=0.08; { probabilitatea asociata celui mai bun individ }
qm1:=1-qmic; coef:=qmic/(1-exp(dimpop*ln(qm1)));
pc:=coef; sump[1]:=pc;
for i:=2 to dimpop do
begin { Calc.probab.cumulate ptr.ordonarea geometrica normalizata }
70
pc:=pc*qm1; sump[i]:=sump[i-1]+pc;
end;
randomize;
{ Citeste datele problemei fizice dintr-un fisier : }
assignfile(fdat,'an2p2.dat'); reset(fdat);
readln(fdat,ndat,ngene,kqpv);
for i:=0 to ndat do read(fdat,bmas[i]); readln(fdat);
for i:=0 to ndat do read(fdat,smas[i]); readln(fdat);
for i:=1 to ngene do readln(fdat,limi[i],lims[i]);
closefile(fdat);
{- ndat = numar perechi date masurate ( cele de la i=0 - cond.initiale)
- ngene= numar necunoscute in problema
- kqpv = raportul debit / volum
- smas(i) - S masurat la momentul i (mg/l)
- bmas(i) - B masurat (mg/l)
- limi(i) - limita inferioara pentru domeniul genei i
- lims(i) - limita superioara}
end;
Procedure OPERARE(par:gene; var fobj:real);
{ Integreaza ec.diferentiale cu conditiile initiale
Smas(0) si Bmas(0) pentru un set de valori ale genelor
(in ordinea: vit.crestere, vit.deces, vit.consum metab.,
factor conversie, coef.realim., si const.semisat. )
Calculeaza functia de performanta }
var i,j:integer;
t,dt,b,s,dsmed,dbmed:real;
bc,sc:array[1..50] of real;
Begin
fobj:=0;
miux:=par[1]; mort:=par[2]; qmet:=par[3];
fact:=par[4]; creal:=par[5]; ksemi:=par[6];
t:=0; dt:=1.0/72; { initializare timp si pas dt (in zile )}
{ conditii initiale: }
b:=bmas[0];
s:=smas[0];
i:=0; j:=0;
repeat
i:=i+1; RK4sist2(dt,t,b,s);
{ retine valorile calculate din 3 in 3 ore }
if (i mod 9) = 0 then
begin
j:=j+1; bc[j]:=b; sc[j]:=s;
end;
until t >= 1.5;
dsmed:=0; dbmed:=0;
for i:=1 to ndat do
begin
dsmed:=dsmed+sqr(smas[i]-sc[i]);
dbmed:=dbmed+sqr(bmas[i]-bc[i]);
end;
dsmed:=dsmed/ndat; dbmed:=dbmed/ndat;
fobj:=1.0/(dsmed+dbmed);
end;
Procedure SOLOPT(par:gene);
{ Reface integrarea pentru solutia optima
si o inscrie in fisierul de rezultate
}
71
var i,j:integer;
t,dt,b,s,dsmed,dbmed,fobj:real;
bc,sc,tc:array[0..50] of real;
Begin
fobj:=0;
miux:=par[1]; mort:=par[2]; qmet:=par[3];
fact:=par[4]; creal:=par[5]; ksemi:=par[6];
t:=0; dt:=1.0/72; { initializare timp si pas dt (in zile )}
{ conditii initiale: }
b:=bmas[0];
s:=smas[0];
i:=0; j:=0;
tc[0]:=0; bc[0]:=b; sc[0]:=s;
repeat
i:=i+1; RK4sist2(dt,t,b,s);
{ retine valorile calculate din 3 in 3 ore }
if (i mod 9) = 0 then
begin
j:=j+1; bc[j]:=b; sc[j]:=s; tc[j]:=t;
end;
until t >= 1.5;
dsmed:=0; dbmed:=0;
for i:=1 to ndat do
begin
dsmed:=dsmed+sqr(smas[i]-sc[i]);
dbmed:=dbmed+sqr(bmas[i]-bc[i]);
end;
dsmed:=dsmed/ndat; dbmed:=dbmed/ndat;
fobj:=1.0/(dsmed+dbmed);
writeln(frez);
writeln(frez,' Rezultate pentru solutia finala:');
writeln(frez,'Timp(zile) B mas. / calc. S mas. / calc.');
for i:=0 to ndat do
writeln(frez,tc[i]:8:2,bmas[i]:10:2,bc[i]:7:2,smas[i]:8:2,sc[i]:7:2);
writeln(frez);
writeln(frez,'Suma dif.medii patratice:',(dsmed+dbmed):10:4);
writeln(frez,'Functie performanta :',fobj:10:2);
end;
Procedure POPINIT;
{ Initializeaza aleator o populatie de solutii posibile }
var j,j1:integer;
begin
for j:=1 to dimpop do with popv[j] do
begin
for j1:=1 to ngene do
x[j1]:=limi[j1]+random*(lims[j1]-limi[j1]);
OPERARE(x,fmic[j]);
{ for j1:=1 to ngene do writeln(x[j1]:9:3);
writeln('fmic=',fmic[j]:10:3);
readln;}
end;
for j:=1 to dimpop do with popv[j] do
begin { retine valoarea fctiei de evaluare a indivizilor }
ajust:=fmic[j]; acros:=0.0; parinte1:=0; parinte2:=0;
end;
72
end;
Procedure ANALIZA(var pop:populatie);
{ Determina parametrii statistici ai populatiei: valoarea medie
a fctiei de ajustare; cea mai mare si cea mai mica pe generatie }
var i,j,k:integer;
begin
sumajust:=0; min:=100000; max:=0; { medie:=0;}
for j:=1 to dimpop do with pop[j] do
begin
sumajust:=sumajust+ajust; { medie:=medie+ajust/dimpop;}
if ajust > max then
begin
max:=ajust; crmax:=j;
end;
if ajust < min then min:=ajust;
if ajust > maxglob then
begin { Retine individul cel mai performant din toate generatiile}
maxglob:=ajust; for i:=1 to ngene do paropt[i]:=x[i];
end;
end;
medie:=sumajust/dimpop;
{ writeln('medie=',medie:12:2); readln;}
end;
Procedure SORTARE(var pop:populatie; var isir:ivect);
{ Determina in isir rangul fiecarui individ din populatia
sortata descrescator;
in vectorul sir se gasesc si valorile functiei de ajustare
reordonate - inutil pentru A.G. ! }
var i,j,ii,k:integer; sir:vect; maxim:real;
begin
for i:=1 to dimpop do with pop[i] do
begin
sir[i]:=ajust; isir[i]:=i;
end;
for i:=1 to dimpm1 do
begin
maxim:=sir[i]; ii:=isir[i]; k:=i;
for j:=i+1 to dimpop do
if sir[j] >= maxim then
begin
maxim:=sir[j]; ii:=isir[j]; k:=j;
end;
sir[k]:=sir[i]; sir[i]:=maxim; isir[k]:=isir[i]; isir[i]:=ii;
end;
end;
Function FLIP(prob:real):boolean;
{ Returneaza TRUE cu o probabilitate prob data }
var r:real;
begin
r:=random;
if r <= prob then flip:=true
else flip:=false;
end;
Function SELGEOM:integer;
{ Alege un individ prin ordonare geometrica normalizata
sump(i) contine probabilitatile cumulate ale primilor i cei mai buni
indivizi; iord(i) contine pozitia in populatie a individului de rang i }
var prob:real; j:integer;
begin
73
prob:=random; j:=0;
repeat
j:=j+1;
until sump[j] >= prob;
selgeom:=iord[j];
end;
Function MUTNEU(i:integer; valv:real):real;
{ Realizeaza mutatia NEUNIFORMA de parametru bmic
forma Houck ptr. fg=(r2*(1-t/tmax))**b este folosita aici;
forma Michalewicz pag.103 ptr. fg=1-r**(1-t/tmax)**b difera de asta !! }
const bmic=1.75;
var r1,r2,fg:real;
begin
r1:=random; r2:=random;
if (r2 > 0) and (gen < maxgen) then
fg:=exp(bmic*ln(r2*(1-gen/maxgen)))
else fg:=0;
if r1 < 0.5 then mutneu:=valv+fg*(lims[i]-valv)
else mutneu:=valv-fg*(valv-limi[i]);
end;
Procedure CROSARIT(var parinte1,parinte2,copil1,copil2:gene; var a:real);
var j:integer; cop1,cop2:real;
begin
if FLIP(pcros) then
begin
a:=random; ncros:=ncros+1;
end
else a:=1;
for j:=1 to ngene do
begin
cop1:=a*parinte1[j]+(1-a)*parinte2[j];
if FLIP(pmut) then
begin
nmut:=nmut+1; cop1:=MUTNEU(j,cop1);
end;
copil1[j]:=cop1;
cop2:=(1-a)*parinte1[j]+a*parinte2[j];
if FLIP(pmut) then
begin
nmut:=nmut+1; cop2:=MUTNEU(j,cop2);
end;
copil2[j]:=cop2;
end;
end;
Procedure CROSEUR(var parinte1,parinte2,copil1,copil2:gene; var a:real);
{ Incrucisare euristica (vezi Houk ):
extrapoleaza parintele cu functia de ajustare mai mare (parinte1)
Daca nu se depasesc limitele genelor la copilul extrapolat, al doilea
copil va fi primul parinte
Daca dupa 5 incercari de extrapolare nu se incadreaza in limite,
se pastreaza copil1=parinte1 si copil2=parinte2.
Dupa incrucisare se aplica operatorul de mutatie }
var irep,j:integer; klim:boolean; cop1,cop2:real;
begin
irep:=0;
repeat
irep:=irep+1; klim:=true; a:=random; j:=0;
repeat
j:=j+1;
copil1[j]:=parinte1[j]+a*(parinte1[j]-parinte2[j]);;
74
if (copil1[j] < limi[j]) or (copil1[j] > lims[j]) then klim:=false;
until (j = ngene) or (klim = false);
until (klim) or (irep = 5);
if klim = false then
begin
for j:=1 to ngene do
begin
copil1[j]:=parinte1[j]; copil2[j]:=parinte2[j];
end;
end
else
for j:=1 to ngene do copil2[j]:=parinte1[j];
{ Urmeaza mutatiile }
for j:=1 to ngene do
begin
if FLIP(pmut) then
begin
cop1:=copil1[j]; nmut:=nmut+1;
cop1:=MUTNEU(j,cop1); copil1[j]:=cop1;
end;
if FLIP(pmut) then
begin
cop2:=copil2[j]; nmut:=nmut+1;
cop2:=MUTNEU(j,cop2); copil2[j]:=cop2;
end;
end;
end;
Procedure GENERATIE;
{ Creeaza o noua generatie prin selectie, incrucisare si mutatii
Incrucisarea presupune dimpop = numar par }
var j,par1,par2:integer; amic,xx:real;
begin
j:=1;
repeat
{ Alege cei doi parinti : }
par1:=SELGEOM; par2:=SELGEOM;
{ Efectueaza incrucisarea si mutatia ( inclusa in aceiasi procedura)
if popv[par1].ajust > popv[par2].ajust then
CROSEUR(popv[par1].x,popv[par2].x,popn[j].x,popn[j+1].x,amic)
else CROSEUR(popv[par2].x,popv[par1].x,popn[j].x,popn[j+1].x,amic);}
CROSARIT(popv[par1].x,popv[par2].x,popn[j].x,popn[j+1].x,amic);
with popn[j] do
begin
OPERARE(x,fmic[j]);
parinte1:=par1; parinte2:=par2; acros:=amic;
end;
with popn[j+1] do
begin
OPERARE(x,fmic[j+1]);
parinte1:=par1; parinte2:=par2; acros:=amic;
end;
j:=j+2;
until j > dimpop;
for j:=1 to dimpop do with popn[j] do ajust:=fmic[j];
{ for j:=1 to dimpop do
begin
writeln(j:3,fmic[j]:15:2);
if (j mod 20)=0 then readln;
end;}
end;
BEGIN { Program principal }
75
INITIALIZARE;
gen:=0; maxglob:=0;
{ Initializeaza nr.de generatii si ajustarea ptr.cel mai bun din toate}
nmut:=0; ncros:=0;
POPINIT; ANALIZA(popv); SORTARE(popv,iord);
repeat
gen:=gen+1; { Creiaza o noua generatie :}
{ write('Generatie=',gen:3);}
GENERATIE;
{ Analizeaza noua generatie: Fctia de ajustare maxima,minima si medie:}
ANALIZA(popn); { writeln(maxglob:12:1,medie:10:2);}
SORTARE(popn,iord); popv:=popn;
opt:='Y';
if (gen mod 2000) = 0 then
begin
writeln('Continui rularea (Y/N) ?:'); read(opt);
end;
if (gen mod 100)=0 then
begin
writeln(gen:6,maxglob:12:6,medie:15:6); { readln;}
end;
until (gen >= maxgen) or (opt = 'N');
{ Afiseaza solutia cea mai buna :}
write('Da nume fisier cu rezultate:'); readln(numep);
assignfile(frez,numep); rewrite(frez);
writeln('Maxglobal=',maxglob:10:1,' Parametrii :');
for i:=1 to ngene do writeln('param.opt[',i:2,']=',paropt[i]:8:3);
writeln(frez,'Dimens.populatie:',dimpop:3,'; Generatii parcurse/impuse:',
gen:4,' / ',maxgen:5);
writeln(frez,'Probabilitati incrucisare/mutatie:',pcros:6:3,' / ',
pmut:6:3);
writeln(frez,'Valoare fctie obj. :',maxglob:10:1);
writeln(frez,'Valori optime gene:');
for i:=1 to ngene do
begin
write(frez,paropt[i]:7:3);
if (i mod 4) = 0 then writeln(frez);
end;
SOLOPT(paropt);
closefile(frez);
END.
n prima parte a listing-ului se declar unele tipuri de variabile precum i variabilele
globale. Dintre acestea doar ultimele dou linii de variabile sunt specifice problcmei analizate,
restul fcnd parte din structura AG i fiind vaiabile pentru orice alt problem. Unele dintre
variabile sunt explicate n corpul programuui, prin comentarii.
Procedura INITIALIZARE fixeaz parametrii de control ai AG pentru rulaea curent i
calculeaz probabilitile cumulate necesare metodei de selecie utilizat aici. n continuare se
introduc datele de intrare ale problemei particulare de rezolvat. Acestea se preiau dintr-un fiier
al crui nume este specificat n procedur. De asemenea, se mai precizeaz o serie de elemente
necesare n rezolvare, n acord cu problema concret. Se deduce faptul c aceast procedur
trebuie ajustat n funcie de problema analizat.
Urmtoarele dou proceduri OPERARE i SOLOPT sunt i ele specifice fiecrui caz de
studiu. n procedura OPERARE se calcuteaz valoarea funciei de evaluare pentru o soluie
oarecare a problemei. SOLOPT stocheaz ntr-un fiier (al crui nume se solicit la
rulare) rezultatele referitoare la soluia optim.
Toate celelalte proceduri, ca i programul principal, sunt specifice AG folosit n lucrare.
76
Cu excepia unor mici ajustri, ele rmn neschtmbate n orice alta problem de minimizare care
se abordeaz prin acest AG. Pe scurt, aceste proceduri i funcii realizeaz urmtoarele:
POPINIT crceaz populaia iniial, genernd aleatoriu valori pentru gene din domeniile
permise i reinnd doar acei indivizi pentru care funcia de evaluare rezult nenegativ (acetia
avnd ansa de a respecta mai fidel toate restriciile).
ANALIZA face analiza statistic a unei populaii, determinnd valorile minim, medie i
maxim ale funciei de evaluare pe generaia respectiv; de asemenea, se depisteaz i se reine
individul cel mai performant ntlnit pn la generaia curent inclusiv. Cu excepia ultimei
funcii, celelalte analize nu sunt strict necesare n AG. Ele se realizeaz doar pentru a putea
urmri, dac se dorete, evoluia rezolvrii.
SORTARE este necesar metodei de selecie considerat, ea determinnd rangul iniial al
fiecrui individ din populaia ordonat descresctor (ca valoare a funciei de evaluare).
FLIP o funcie boolean care ntoarce valoarea TRUE dac la apelarea ei se genereaz un
numr aleatoriu din domeniul (O; 1) mai mic dect o probabilitate specificat; servete la
realizarea sau nu a operaiilor genetice asupra unor soluii prini sau copii.
SELGEOM alege aleatoriu individul care trece n baza genetic din care se va realiza
generaia viitoare. mpreun cu instruciunile corespunztoare din INITIALIZARE (necesare o
singur dat) i cu procedura SORTARE, aceast funcie transpune procedeul de selecie prin
ordonare geometric normahzat.
MUTNEU realizeaz operaia de mutaie neuniform asupra genei, creia i schimb valoarea
de la valv la inutneu.
CROSEUR efectueaz operaia de ncruciare euristic a dou soluii prini pentru a crea
dou soluii copii. Avnd n vedere c acest tip de ncruciare se poate solda cu nerealizarea
unei soluii copil mai performante (i deci cu transferul prinilor n noua generaie),
instruciunile care aplic probabilitatea de incruciare s-au eliminat din corpul procedurii, iar
acest parametru al AG este practic inoperant. n schimb, dup efectuarea ncrucirii (sau
transferul soluiilor prini) se aplic operatorul de mutaie asupra genelor noilor soluii dac
funcia FLIP rspunde TRUE la probabilitatea pmut specificat.
GENERATIE dirijeaz procesul de realizare a unei noi generaii prin alegerea aleatoare a
dou soluii prini, incruciarea acestora cu cel mai valoros printe pe prima poziie de
intrare n procedura CROSEUR i evaluarea noilor soluii. Operaiile se repet pn la realizarea
taliei dorite a populaiei. i aceast procedur conserv date care nu sunt strict necesare
funcionrii AG, dar pot fi interesante pentru alte analize (de exemplu, numerele de ordine ale
prinilor care au generat o soluie copil, parametrul aleatoriu r din relaia cu care s-a
construit soluia copil extrapolat etc.).
Se afieaz la fiecare generaie valoarea medie pe generaie a funciei de evaluare i
valoarea maxim gsit pn la generaia respectiv inclusiv. Rularea poate fi oprit opional din
2000 n 2000 de generaii dac nu se mai dorete atingerea numrului maxim de generaii
specificat n INITIALIZARE.
n partea final a programului se afieaz soluia optim gsit i se pstreaz rezultatele
ntr-un fiier al crui nume se specific la rulare.
2.4 Rezultate numerice
Programul evoluionist descris mai sus a fost rulat cu datele de intrare prezentate n
subparagraful 2.1. Sunt prezentate n continuare dou soluii suboptimale posibile.
77
Primul set de date a fost obinut prin ntreruperea programului dup primele 8000 de generaii.
Dimens.populatie: 80; Generatii parcurse/impuse:8000 / 12000
Probabilitati incrucisare/mutatie: 0.900 / 0.050
Valoare fctie obj. : 5.0
Valori optime gene:
4.750 0.480 0.021 0.498
1.913 98.712
Rezultate pentru solutia finala:
Timp(zile) B mas. / calc. S mas. / calc.
0.00 40.75 40.75 36.40 36.40
0.13 38.90 38.84 25.00 24.72
0.25 36.20 36.27 25.70 25.76
0.38 35.00 34.77 39.00 38.46
0.50 35.05 35.00 55.30 55.84
0.62 36.60 36.63 68.50 68.09
0.75 39.00 38.88 67.00 67.74
0.87 40.50 40.62 55.00 54.59
1.00 41.00 40.70 37.00 36.61
1.12 38.50 38.81 24.50 24.87
1.25 36.50 36.27 26.00 25.86
1.37 34.50 34.78 38.20 38.53
1.50 35.00 35.01 56.00 55.88
Suma dif.medii patratice: 0.1991
Functie performanta : 5.02
Al doilea set a fost obinut prin rularea a 12000 de generaii.
Dimens.populatie: 80; Generatii parcurse/impuse:12000 / 12000
Probabilitati incrucisare/mutatie: 0.900 / 0.050
Valoare fctie obj. : 5.0
Valori optime gene:
4.765 0.458 0.019 0.494
2.010 101.416
Rezultate pentru solutia finala:
Timp(zile) B mas. / calc. S mas. / calc.
0.00 40.75 40.75 36.40 36.40
0.13 38.90 38.85 25.00 24.72
0.25 36.20 36.30 25.70 25.75
0.38 35.00 34.81 39.00 38.46
0.50 35.05 35.02 55.30 55.83
0.62 36.60 36.65 68.50 68.07
0.75 39.00 38.88 67.00 67.72
0.87 40.50 40.60 55.00 54.58
1.00 41.00 40.67 37.00 36.62
1.12 38.50 38.80 24.50 24.88
1.25 36.50 36.27 26.00 25.87
1.37 34.50 34.79 38.20 38.54
1.50 35.00 35.02 56.00 55.89
Suma dif.medii patratice: 0.1984
Functie performanta : 5.04
2.5 Concluzii
Acest exemplu demonstreaz calitile AG n rezolvarea problmelor dificile de mediu (i nu
numai). Chiar dac abordarea prin AG nu garanteaz obinerea soluiei optime globale, ea
ncadreaz soluiile sale ntr-o vecintate foarte restrns a acesteia. Acest lucru este garantat de
principiul de funcionare al AG.
78
BIBLIOGRAFIE
Goldberg, D. E. (1989)- Genetic algorithms in search, optimization and machine learning,
Addison-Wesley, Mass;
Michalewicz, Z (1992)- Genetic algorithms+ data structures= evolution programs, Springer-
Verlag, NY;
Popa, R, Popa, B. (2003)- Optimizarea exploatrii amenajrilor hidrotehnice, Editura Tehnic,
Bucureti
Popa, R.(1998)- Modelarea calitii apei din ruri, Editura HGA, Bucureti
79

S-ar putea să vă placă și