Sunteți pe pagina 1din 211

Bazele teoretice ale calculului

evolutiv. Schema unui algoritm


evoluionist (EA)
I. CALCUL EVOLUTIV. SUPORTUL DE NATUR
BIOLOGIC AL EC
Calculul evolutiv (EC) - domeniu al informaticii inspirat din procesul evoluiei
naturale: conexiunea evoluie natural tehnica de rezolvare a problemelor
de tip experiment-eroare (sau generare-testare).

Considernd un mediu care poate susine un numr limitat de indivizi i


instinctul primar al fiecrui individ de a se reproduce, procesul de selecie
natural favorizeaz indivizii cei mai competitivi n nsuirea resurselor -
supravieuirea celor mai bine adaptai (survival of the fittest).

Pe parcursul reproducerii celor mai buni indivizi apar mutaii ocazionale,


care genereaz noi indivizi, ce vor fi ulterior evaluai.

ntregul proces poate fi asimilat din punct de vedere intuitiv cu modelul unui
peisaj adaptiv (dinamic) n spaiul 3D (0-x-y-z): un individ p(x,y,z)
planul x-y corespunde caracteristicilor individului
altitudinea lui p (valoarea lui pe axa 0z) corespunde nivelului de
adaptabilitate (fitness). a individului reprezentat de p.
Evoluia - procesul de avans al populaiei spre zone aflate la o altitudine
mai mare, acest avans fiind realizat pe baza mutaiilor i seleciei naturale
legtura problemele multimodale (puncte de optim local).
II. TIPURI DE PROBLEME REZOLVATE DE EC
Probleme de optimizare: sunt cunoscute modelul i datele de ieire dorite,
iar problema este de a determina datele de intrare care corespund
rezultatelor dorite. Exemple:
problema comis voiajorului;
problema planificrii activitilor;
probleme care pot fi formulate n termeni specifici claselor de probleme
de optimizare: problema celor N regine

Probleme de modelare sau de identificare a sistemului: sunt cunoscute


datele de intrare i rezultatele corespunztoare lor, iar modelul este
necunoscut. Modelul trebuie determinat astfel nct, pentru fiecare intrare
dat, s calculeze rezultatul corect. Exemplu : clasificarea supervizat n cazul
modelului cu dou clase.

III. SCHEMA GENERAL A UNUI EA
ALGORTIMUL GENERIC
IV. EXEMPLU: Rezolvarea unei probleme de
optimizare a unei funcii de o variabil
Operaia de ncruciare este aplicat pentru o mperechere aleatoare a cte
2 indivizi prini, cu probabilitatea pc. Progeniturile sunt supuse mutaiei cu o
probabilitate pm.

Mecanismul de selectare a noii generaii este superelitist - presupune


ordonarea descresctoare a multisetului format din indivizii populaiei curente
i progeniturile obinute prin operatorii de variaie i selecie a prinilor i
alegerea primilor dim indivizi pentru a forma populaia urmtoare.

Condiia terminal este formulat astfel: a fost depit un prag al numrului


de generaii sau calitatea populaiei, msurat ca medie a funciei de
evaluare n membrii populaiei nu mai poate fi mbuntit semnificativ.
Exemplu
1. Bazele teoretice ale calculului evolutiv. Evoluia cutare direct-cutare
stochastic. Componentele si clasificarea algoritmilor evoluioniti

Introducere
Ideea de a aplica principiile darwiniste ale evoluiei n rezolvarea automat a problemelor
(Problem Solving - PS) dateaz din anii 1940, naintea apariiei calculatoarelor electronice. n
1948 Turing propunea o tehnic de rezolvare a problemelor numit cutare genetic sau
evolutiv. n anii 1960 Fogel, Qwens i Walsh introduceau conceptul de programare evolutiv
(sau evoluionist), n timp ce Holland dezvolta algoritmii genetici. n aceeai perioad,
Rechenberg i Schwefel introduceau strategiile evolutive (evoluioniste) ca modaliti alternative
de rezolvare automat a problemelor. n anii 1990, Koza dezvolt o nou tehnic de cutare n
spaiul soluiilor, programarea genetic. n terminologia actual, ntregul spectru de metode de
rezolvare automat de inspiraie darwinist este desemnat prin termenul de calcul evolutiv
(evoluionist) i include subdomeniile: programare evolutiv, strategii evolutive, algoritmi
genetici i programare genetic.
Calculul evolutiv este un domeniu al informaticii inspirat din procesul evoluiei naturale;
ideea care st la baza calculului evolutiv este conexiunea evoluie natural tehnica de rezolvare
a problemelor de tip experiment-eroare (sau generare-testare). Cu alte cuvinte, ntr-un mediu dat,
indivizii constituii ntr-o populaie intr n competiie pentru a supravieui i a se reproduce.
Abilitatea indivizilor de a-i atinge aceste scopuri n mediul n care triesc este strict corelat cu
ansele lor de supravieuire i multiplicare i determin evoluia n timp a populaiei. n contextul
modalitii de rezolvare a problemelor de tip generare-testare stochastice, populaia este modelat
ca o colecie de elemente candidat la soluie. Calitatea candidailor la soluie, definit n termenii
gradului n care fiecare element rezolv problema, determin ansa lor de a fi meninui i utilizai
pentru construirea unor noi candidai.

Suportul de natur biologic al calculului evolutiv


Teoria evoluionist a lui Darwin ofer o explicaie a diversitii biologice i a
mecanismului care st la baza acesteia. n centrul interpretrii macroscopice a evoluiei este
plasat selecia natural. Considernd un mediu care poate susine un numr limitat de indivizi i
instinctul primar al fiecrui individ de a se reproduce, procesul de selecie este esenial i
inevitabil n controlul dimensiunii populaiei. Selecia natural favorizeaz indivizii cei mai
competitivi n nsuirea resurselor, adic acei indivizi care sunt cel mai bine adaptai condiiilor
de mediu. Fenomenul este cunoscut drept supravieuirea celor mai bine adaptai/ potrivii
(survival of the fittest).
Teoria evoluiei are ca principii fundamentale selecia bazat pe competiie i variaiile de
fenotip n rndul membrilor populaiei. Fenotipul este ansamblul de nsuiri i caractere care se
manifest n mod vizibil la un individ i care este determinat pe baz ereditar i de condiiile de
mediu (DEX). Caracteristicile fenotipului unui individ determin gradul lui de adaptabilitate la
condiiile de mediu (fitness). Fiecare individ reprezint o combinaie unic de caracteristici ale
fenotipului i este evaluat de condiiile de mediu. Dac evaluarea este favorabil, atunci fenotipul
individului este propagat spre urmai (progenituri), altfel caracteristicile fenotipului dispar i
individul moare fr a se putea reproduce. Viziunea lui Darwin despre evoluie este aceea c, n
procesul trecerii de la o generaie la alta prin reproducere, apar mutaii (variaii) mici, aleatoare,
n caracteristicile fenotipului. Ca rezultat al acestor variaii, apar i sunt evaluate noi combinaii
de caracteristici ale fenotipului. Cele mai bune dintre ele supravieuiesc i se reproduc i n acest
mod evoluia conduce la progres.
Modelul primar poate fi deci rezumat dup cum urmeaz. O populaie este format dintr-
un numr de indivizi, privii ca uniti de selecie; succesul fiecrui individ n ncercarea de a se
reproduce depinde de ct de bine este adaptat condiiilor de mediu comparativ cu restul
indivizilor. Pe parcursul reproducerii celor mai buni (bine adaptai la mediu) indivizi, apar mutaii
ocazionale, care genereaz noi indivizi, ce vor fi ulterior evaluai. n consecin, pe msur ce
timpul trece, se produc schimbri n structura populaiei, cu alte cuvinte populaia reprezint o
unitate a evoluiei. ntregul proces poate fi asimilat din punct de vedere intuitiv cu modelul unui
peisaj adaptiv (dinamic) (respectiv o suprafa adaptive) n spaiul 3D (0-x-y-z). Fiecare punct
p(x,y,z) al suprafeei este asimilat unui individ, unde n planul x-y este figurat combinaia de
caracteristici ale fenotipului individului, iar altitudinea lui p (valoarea lui pe axa 0z) corespunde
nivelului de adaptabilitate (fitness) a individului reprezentat de p. n acest context, evoluia este
procesul de avans al populaiei spre zone aflate la o altitudine mai mare, acest avans fiind
realizat pe baza mutaiilor i seleciei naturale. Este obinut astfel legtura cu conceptul de
probleme multimodale, adic probleme n care exist o mulime de puncte de optim local
(superioare tuturor soluiilor din vecintatea lor), cel mai bun element al mulimii fiind optimul
global. O problem n care exist un singur optim local este numit unimodal.
Legtura dintre procesul evoluiei i un proces de optimizare este pe ct de direct, pe att
de neltoare, pentru c evoluia nu presupune ntotdeauna creterea global a calitii populaiei
(n termenii funciei de fitness). Deoarece, la fiecare epoc, populaia este finit i operatorii de
selecie i mutaie includ componente aleatoare, poate fi constatat o inactivitate genetic,
manifestat fie prin dispariia din populaie a unor indivizi foarte adaptai condiiilor de mediu, fie
prin variaia foarte mic sau chiar lipsa de variaie a unor caracteristici ale fenotipului indivizilor
din populaie. Unul din efectele posibile este acela al concentrrii indivizilor ntr-o zon de
adaptabilitate sczut. Efectul rezultat prin combinarea procesului de selecie cu inactivitatea
genetic poate conduce n egal msur la creterea nivelului de adaptabilitate global a
populaiei, respectiv la descreterea acestuia. n plus, nu exist nici o garanie c, dac evoluia
duce la creterea calitii populaiei, nivelul de optim local nu a fost deja atins naintea unui
fenomen de inactivitate genetic. n scopul evitrii ciclrii evoluiei populaiei ntr-o regiune de
optim local, au fost dezvoltate o serie de teorii, una dintre cele mai cunoscute fiind teoria lui
Wright conform creia poate fi determinat optimul global n cazul unei suprafee fixe (teorie
referit drept shifting balance).

Tipuri de probleme ce pot fi rezolvate pe baza calculului evolutiv


n literatura de specialitate sunt evideniate dou clase de metode PS de inspiraie
biologic: calculul neuronal (neurocomputing), prin intermediul cruia problemele sunt rezolvate
imitnd modul de funcionare (raionament) a (al) creierului uman i procesele de tip evolutiv,
problemele fiind rezolvate prin imitarea crerii creierului uman.
n general, un sistem funcional de rezolvare automat a problemelor conine trei
componente: datele de intrare, datele de ieire i modulul intern care conecteaz primele dou
componente. Modalitatea de funcionare a modelului permite explicarea modului de funcionare a
sistemului, n sensul c, rspunsul sistemului poate fi calculat pentru orice date de intrare
specificate. n funcie de componentele din sistem cunoscute, pot fi difereniate urmtoarele tipuri
de probleme:
Probleme de optimizare: sunt cunoscute modelul i datele de ieire dorite (respectiv
o descriere a acestora), iar problema este de a determina datele de intrare care corespund
rezultatelor dorite. Un exemplu de astfel de problem este cea a comis voiajorului (n care trebuie
determinat cea mai scurt sau ieftin rut care s lege un numr dat de orae): modelul este
cunoscut i corespunde formulei de calcul a lungimii unei rute date, n care lungimea (sau costul)
calculat (calculat) este data de ieire. Proprietatea pe care rezultatul trebuie s o ndeplineasc
este un criteriu de optim (lungime minim), iar problema este de a determina acea dat de intrare,
corespunztoare unei rute, care s conduc la rezultatul dorit. O problem de optimizare rezolvat
cu succes prin calcul evolutiv este generarea orarului n cadrul unei universiti. n cursul unei
zile sunt programate n general mii de activiti, restriciile pe care trebuie s la ndeplineasc o
programare corect a acestora fiind multiple iar soluiile fezabile ale problemei n numr foarte
mic relativ la mulimea tuturor programrilor posibile.
Probleme de modelare sau de identificare a sistemului: sunt cunoscute datele de
intrare i rezultatele corespunztoare lor, iar modelul este necunoscut. Modelul trebuie determinat
astfel nct, pentru fiecare intrare dat, s calculeze rezultatul corect. Un exemplu de astfel de
problem: clasificarea supervizat n cazul modelului cu dou clase. Problema este de a determina
un clasificator care s separe corect elementele celor dou clase. Datele de intrare corespund
elementelor celor dou clase, pentru fiecare dat de intrare rezultatul fiind eticheta clasei de
provenien. Identificarea modelului revine la determinarea unei funcii de decizie, care, de
exemplu, s calculeze valori pozitive pentru exemplele care provin din prima clas, respectiv
valori negative pentru celelalte. Cu alte cuvinte, n acest caz scopul este de a determina o formul
(n acest caz expresia analitic a unei funcii de decizie) care s lege datele de intrare
(cunoscute) de rezultate (cunoscute). Problemele de acest tip apar n medii n care sunt
disponibile foarte multe date (observaii, nregistrri etc.), de exemplu n situaii n care exist un
set de dimensiuni considerabile de observaii/nregistrri asupra/ relative la un fenomen/
eveniment. Identificarea modelului care s explice conexiunile dintre datele de intrare i rezultate
trebuie realizat i astfel nct acesta s asigure o capacitate de generalizare rezonabil (pentru noi
date de intrare, sistemul trebuie s furnizeze n general rspunsuri corecte). Astfel de probleme
sunt cele din domeniile instruirii automate (machine learning) i data mining.
Probleme de simulare: sunt cunoscui modelul i o serie de date de intrare i cerina
este de a determina datele de ieire corecte, corespunztoare intrrilor date. Un exemplu de
probleme de simulare care pot fi rezolvate utiliznd calculul evolutiv sunt cele n care este cutat
rspunsul la ntrebri de tipul ce se ntmpl dac (what-if questions), n condiiile n care
problema subiectului investigat evolueaz (n termenii operaiilor de variaie i selecie).
Economia evolutiv este un domeniu de cercetare relativ nou, care, n principiu, are la baz ideea
c jocul i juctorii din arena socio-economic sunt asemenea evoluiei vieii (a jocului i
juctorilor ei).
2. Algoritmi evolutivi
n literatura de specialitate sunt prezentate diverse clase de algoritmi evolutivi (EA
Evolutionary Algorithms), toate avnd la baz acelai principiu: dat fiind o populaie de indivizi,
influena mediului determin un proces de selecie natural (indus de adaptabilitatea fiecrui
individ la mediu), care are ca efect creterea global a calitii populaiei, exprimat prin
intermediul funciei de fitness.

2.1. Schema general a algoritmilor evolutivi

Dac este cunoscut o funcie de tip calitate care trebuie maximizat, setul
iniial de candidai la soluie (elemente din mulimea ) poate fi generat aleator, fiind obinut
astfel populaia iniial, ( ). Pentru fiecare , reprezint calitatea
candidatului x (ca msur abstract de evaluare funcie de tip fitness). Populaia urmtoare este
determinat pe baza funciei de evaluare prin aplicarea urmtorului mecanism. Este selectat
, o submulime a lui format din cei mai buni membri ai populaiei curente, adic
din acele elemente cu cele mai bune scoruri obinute n urma evalurii prin . Membrii
mulimii genereaz populaia urmtoare prin aplicarea operatorilor de recombinare i/sau
mutaie. Operaia de recombinare (recombination) este definit pentru doi sau mai muli indivizi
din mulimea (numii prini) i are ca rezultat unul sau mai muli noi candidai la soluie
(numii copii). Operatorul mutaie este definit pe un element al mulimii i are drept rezultat
un nou candidat la soluie. Prin aplicarea operatorilor de recombinare i mutaie sunt generai noi
indivizi (numii progenituri ai mulimii ) care intr n competiie, pe baza msurii de fitness
(posibil i a vrstei), cu elementele populaiei pentru obinerea unui loc n populaia
urmtoare, . Procesul poate fi iterat fie pn la obinerea unui candidat suficient de bun (soluia
problemei, corespunznd unui punct de maxim al funciei ), fie pn la atingerea unei limite de
calcul date.
n cadrul acestui proces intervin dou elemente fundamentale care constituie baza
sistemelor evoluioniste:
operatorii de variaie (recombinare i mutaie), care asigur diversitatea necesar
crerii de indivizi cu caracteristici noi i
selecia, care foreaz creterea calitii indivizilor unei populaii.

Combinarea aplicrii operatorilor de variaie i selecie determin n general creterea


calitii globale de la o populaie la populaia urmtoare. Un astfel de algoritm poate fi privit ca o
evoluie a procesului de optimizare prin apropierea succesiv de valoarea optim. Alternativ,
procesul evolutiv poate fi considerat un proces de adaptare. Din aceast perspectiv, msura de
adaptabilitate (de fitness) este o expresie a cerinelor mediului n care evolueaz populaia i nu o
funcie obiectiv care trebuie optimizat. Msura n care sunt atinse cerinele mediului este direct
proporional cu msura de viabilitate i este reflectat n numrul de progenituri. Procesul
evolutiv determin obinerea de populaii succesive din ce n ce mai bine adaptate mediului n
care triesc.
O serie de componente ale unui proces evolutiv sunt stochastice. De exemplu, dei
indivizii mai bine adaptai mediului au o ans mai mare s fie selectai pentru generarea de noi
candidai soluie, n cele mai multe tipuri de implementri evolutive i indivizii mai slabi au o
ans de a deveni printe sau de a supravieui (n sensul selectrii lor n populaia sau generaia
urmtoare). De asemenea, n cadrul operaiei de recombinare, alegerea perechilor sau n-tuplurilor
(secvene de n elemente) de indivizi care interschimb material genetic, dar i prile (fraciunile)
de material genetic interschimbat sunt aleatoare. n mod similar, la efectuarea unei mutaii, att
poriunile din individ care vor suferi mutaia ct i noile prii care le nlocuiesc sunt alese
aleator.
n continuare este prezentat schema general a unui algoritm evolutiv.

Pas1. Iniilizarea populaiei: este obinut prin generarea aleatoare a candidailor la


soluie
Pas2. Evaluarea candidailor: pentru fiecare , determin
Pas3. Repet
3.1. Selecteaz mulimea de prini
3.2. Recombin perechi (sau n-tupluri) de prini
3.3. Efectueaz mutaii asupra progeniturilor rezultate
3.4. Evalueaz noii candidai la soluie
3.5. Selecteaz indivizii pentru constituirea generaiei urmtoare, ;
3.6.
pn cnd (Condiie_terminare este satisfcut)

Observaii
1. Schema prezentat mai sus corespunde familiei metodelor PS de tip generare-testare,
pe baza urmtoarelor consideraii. n cadrul algoritmilor evolutivi sunt procesai
simultan membrii unei ntregi populaii, combinarea informaiilor oferite de doi sau
mai muli candidai fiind realizat n principal prin operaia de recombinare. De
asemenea, algoritmii evolutivi sunt de tip stochastic.
2. Funcia de evaluare (de fitness) este o estimare de tip euristic a calitii fiecrui
membru al populaiei curente, iar procesul de cutare este dirijat de operatorii de
variaie i selecie.

Diferitele tipuri de algoritmi evolutivi menionai n partea 1 respect schema general


prezentat mai sus i difer ntre ele printr-o serie de detalii tehnice, cum este de exemplu
modalitatea de reprezentare a unui candidat la soluie (tipul sau structura de date utilizat/utilizat
pentru reprezentarea membrilor populaiei). n cazul clasei algoritmilor genetici (GA Genetic
Algorithms), un candidat la soluie este reprezentat prin intermediul unui ir definit pe un alfabet
finit. Strategiile evolutive (ES- Evolution Strategy) utilizeaz vectori cu numere reale pentru a
reprezenta membrii populaiei, n timp ce n programarea evolutiv (EP Evolutionary
Programming) sunt utilizate reprezentrile prin maini cu stri finite. Clasa algoritmilor GP
(programare genetic) este dezvoltat pe baza reprezentrilor candidailor la soluie prin
intermediul structurii de arbore. Selectarea unei reprezentri a membrilor populaiei n
detrimentul altor variante posibile este realizat astfel nct s fie cel mai bine potrivit
problemei particulare de rezolvat, n sensul c uureaz implementarea algoritmului evolutiv sau
este cea mai natural relativ la problema dat. Evident, selectarea operatorilor de recombinare i
mutaie ine cont de varianta aleas pentru reprezentarea candidailor la soluie.

2.2. Componentele algoritmilor evolutivi

Componentele de baz ale algoritmilor evolutivi sunt: reprezentarea (definirea membrilor


populaiei), funcia de evaluare (de tip fitness), populaia, mecanismul de selectare a prinilor
(indivizii care interschimb material genetic), operatorii de variaie (recombinarea i mutaia),
mecanismul de selectare a membrilor generaiei urmtoare (actualizarea populaiei), definirea
modulului de iniializare (modalitatea de determinare a populaiei iniiale) i definirea condiiei
terminale.
Reprezentarea
Prima etap n dezvoltarea unui algoritm evolutiv este stabilirea unei conexiuni ntre
contextul problemei particulare de rezolvat i spaiul n care evolueaz tehnica PS considerat.
Obiectele care formeaz soluiile posibile n contextul problemei de rezolvat sunt numite
fenotipuri, reprezentarea lor n contextul spaiului EA fiind referit prin genotip. Scopul este de a
stabili o coresponden ntre mulimea fenotipurilor i cea a genotipurilor, numit reprezentare.
De exemplu, dac problema particular este de optimizare n mulimea numerelor ntregi, un set
prestabilit de numere ntregi poate constitui mulimea fenotipurilor, n timp ce setul genotipurilor
este constituit din reprezentarea binar a fiecrui fenotip.

Observaie. Spaiul fenotipurilor poate fi foarte diferit de cel al genotipurilor, cel n care
evolueaz un EA. O soluie este corespunztoare unui fenotip bun i este obinut prin
decodificarea celui mai bun (din punctul de vedere al funciei de evaluare) genotip rezultat n
urma aplicrii EA.

Ca terminologie, obiectele aparinnd spaiului problemei particulare de rezolvat sunt


referite prin candidai la soluie, fenotipuri sau indivizi. Spaiul pe care este definit problema este
numit spaiul fenotipurilor. Obiectele ce aparin spaiului n care este dezvoltat un EA sunt
referite prin termenii de genotipuri, cromozomi sau indivizi. Spaiul n care evolueaz EA este
numit spaiul genotipurilor. n general, un genotip este constituit din mai multe elemente, numite
valori sau alele, fiecare fiind plasat ntr-o anumit poziie, referit prin termenul de variabil sau
gen.

Observaie. Termenul reprezentare este utilizat n dou moduri diferite. n unele situaii
desemneaz transformarea aplicat spaiului fenotipurilor astfel nct s fie obinut spaiul
genotipurilor, caz n care termenul utilizat este i cel de codificare (n exemplul considerat mai
sus, fiecare genotip este codificarea binar a unui fenotip). Transformarea invers, aplicat
spaiului genotipurilor pentru a obine spaiul fenotipurilor este numit decodificare. Evident, n
acest caz reprezentarea trebuie s fie inversabil: fiecrui genotip trebuie s i corespund cel
puin un fenotip. n alte situaii, n definirea unei reprezentri accentul este pus cu precdere pe
structura de date utilizat pentru definirea spaiul genotipurilor i nu pe transformarea propriu-
zis. Aceast interpretare este legat spre exemplu de definirea operatorului mutaie pe spaiul
genotipurilor constituite din reprezentrile binare ale fenotipurilor.

Funcia de evaluare
Rolul funciei de evaluare (de fitness) este de a msura gradul de adaptabilitate a fiecrui
individ la mediul n care triete, mai exact este de definire a noiunii de calitate. Funcia de
evaluare st la baza procesului de selecie i, din perspectiva tehnicilor PS, reprezint modulul de
rezolvare a problemei date n contextul evolutiv. Din punct de vedere tehnic, este o funcie care
asociaz fiecrui genotip o msur a calitii i, n general, este derivat pe baza unei funcii de
tip calitate definit pe spaiul fenotipurilor. De exemplu, dac este funcia de calitate definit
pe spaiul fenotipurilor, format din numere din mulimea i fiecare genotip este reprezentarea
binar a unui fenotip, atunci funcia de evaluare n spaiul genotipurilor este definit prin,

De exemplu, pentru , atunci .


n cele mai multe situaii, problema de rezolvat utiliznd EA revine la o problem de
optimizare. Dac funcia obiectiv trebuie minimizat, atunci este realizat o transformare a ei
astfel nct problema de optim s fie una de maxim (din punct de vedere matematic, de exemplu,
a minimiza o funcie f este echivalent cu a maximiza funcia f sau, n situaia n care f nu se
anuleaz pe spaiul fenotipurilor, cu a maximiza funcia ). n acest caz, funcia de evaluare este
definit pe baza funciei obiectiv i innd cont de reprezentarea fenotipurilor n spaiul EA.
Observaie. n continuare, prin cel mai bun individ al unei populaii vom nelege acel
individ care realizeaz maximul funciei de evaluare pe acea populaie.

Populaia
Rolul populaiei n dezvoltarea EA este de a menine o mulime de genotipuri
corespunztoare unor soluii posibile. O populaie este un multiset (o mulime de elemente nu
neaprat distincte) de genotipuri. Indivizii unei populaii sunt obiecte statice, n sensul c nu pot fi
modificai i nu se pot adapta mediului n care triesc. Aceste proprieti le are, n schimb
populaia. Dac este stabilit modul de reprezentare (spaiul genotipurilor), populaia poate fi
definit prin specificarea numrului de indivizi care o compun. n situaia unor EA compleci,
populaiei i este asociat i o structur spaial adiional, definit prin intermediul unei funcii
de tip distan sau prin relaii de tip vecintate. n astfel de cazuri, definirea populaiei trebuie
nsoit de specificarea structurii spaiale asociate. Operatorii genetici de selecie (selecia
indivizilor care interschimb material genetic prini- i selecia populaiei la momentul de timp
urmtor) sunt definii la nivelul unei populaii i, n general, construcia lor presupune consultarea
ntregii populaii curente. De exemplu, cel mai bun individ al unei populaii date poate fi selectat
pentru a genera populaia urmtoare sau cel mai slab individ al unei populaii date este nlocuit cu
unul nou. n cele mai multe situaii, EA folosesc populaii de dimensiune constant pe tot
parcursul evoluiei.
Diversitatea unei populaii este msurat n termenii numrului de indivizi distinci ai
populaiei. Exist mai multe variante de definire a msurii de diversitate: numrul valorilor
distincte ale funciei de evaluare (dei, dac , nu rezult ), numrul
fenotipurilor diferite reprezentate n cadrul populaiei (dei prezena unui fenotip n spaiul iniial
nu garanteaz prezena unui singur genotip n spaiul EA: n cadrul populaiei, repetarea unui
genotip este echivalent fie cu selectarea pentru includere a unui fenotip de mai multe ori, la
generarea populaiei iniiale, respectiv cu selectarea repetat a unui genotip n construirea unei noi
populaii, de exemplu datorit valorii mari a funciei de evaluare corespunztoare lui), numrul
genotipurilor diferite din populaie (un genotip corespunde unui singur fenotip i valoarea funciei
de evaluare corespunztoare lui este unic), msuri bazate pe entropia populaiei .a.m.d.

Mecanismul de selectare a prinilor


Rolul operatorului de selectare a prinilor este de a distinge ntre indivizii populaiei pe
baza calitii acestora, n particular de a permite celor mai buni indivizi s se reproduc, deci s
participe la generarea populaiei urmtoare. Alturi de operatorul de selecie a supravieuitorilor
(indivizii care vor compune generaia urmtoare), mecanismul de selecie a prinilor foreaz
mbuntirea calitii globale a populaiei de la o generaie la alta. n calculul evolutiv, selectarea
prinilor este de tip probabilist: alegerea unui individ pentru a se reproduce depinde direct
proporional de calitatea lui, deci un individ are anse mai mari de a se reproduce comparativ cu
cei inferior lui din punct de vedere calitativ.
Observaie. Indivizii slabi (cu valori mici ale funciei de evaluare) nu sunt eliminai din
procesul de selectare pentru reproducere, ci doar au asociate probabiliti mici, dar nenule, de
selecie. n acest fel algoritmul de cutare nu este de tip greedy i riscul de identifica o valoare de
optim local fiind diminuat n acest fel.

Operatorii de variaie: mutaia i recombinarea


Scopul aplicrii operatorilor de variaie este de a crea noi indivizi, derivai din cei ai
populaiei curente. Din punctul de vedere al rezolvrii problemelor prin metode de cutare de tip
generare-testare, prin aplicarea operatorilor de variaie este realizat faza de generare. Definirea
operatorilor de variaie depinde esenial de modalitatea de reprezentare a spaiului iniial
(definirea spaiului genotipurilor).

Operatorul mutaie
Mutaia este operator unar (cu aritate 1), n urma aplicrii acestuia asupra unui genotip
rezult o variant mutant, numit progenitur sau copil. Operatorul mutaie este ntotdeauna
stochastic, rezultatul depinznd de o serie de alegeri aleatoare. n general aceste alegeri constau n
utilizarea unui generator de numere aleatoare din diferite distribuii de probabilitate i sunt numite
extrageri aleatoare. Rolul mutaiei n calculul evolutiv depinde de tipul de algoritm implementat.
De exemplu, n cazul algoritmilor genetici, mutaia are rolul de a mprospta structura genetic
a unei populaii, n cazul programrii evolutive este unicul operator de variaie care dirijeaz
procedura de cutare, n timp ce n cazul programrii genetice n general nu este folosit.
Din studiul teoretic al convergenei algoritmilor evolutivi rezult c optimul global al
funciei obiectiv poate fi obinut n situaia n care operatorii de variaie utilizai asigur obinerea
oricrui genotip soluie potenial a problemei de optim (Eiben, Smith, 2003). Cea mai simpl
cale de a asigura ndeplinirea acestei codiii este de a utiliza un operator mutaie care s permit
modificarea oricrei alele dintr-un cromozom cu orice variant posibil, cu o probabilitate nenul.
n literatura de specialitate exist ns i opinii conform crora rezultatele teoretice relative la
comportamentul EA au o importan practic redus i multe implementri EA nu posed
proprietile cerute de acestea.

Operatorul de recombinare
Un operator de variaie binar (cu aritate 2) este numit operator de recombinare sau
ncruciare i are ca efect obinerea unuia sau a dou genotipuri urma direct prin combinarea
informaiei purtate de dou genotipuri printe. Recombinarea este un operator stochastic: alegerea
acelor pri ale genotipurilor prini care vor fi combinate i modalitatea de recombinare rezult
n urma unor extrageri aleatoare. Rolul recombinrii difer de la o clas de algoritmi evolutivi la
alta: n cadrul algoritmilor genetici este cel mai utilizat operator de variaie (probabilitatea de
efectuarea a unei ncruciri este n general mult mai mare dect probabilitatea apariiei unei
mutaii), n programarea genetic este n general unicul operator de variaie folosit, n timp ce n
programarea evolutiv nu este implementat.
n dezvoltri de tip EA pot fi folosii i operatori de recombinare de aritate mai mare dect
2 (n generarea urmailor sunt folosii mai mult de dou genotipuri printe). Astfel de operatori
sunt uor de implementat dar nu au corespondent biologic. Dei o serie de studii indic utilitatea
acestora n tratarea unor probleme particulare, aceti operatori sunt rar folosii.
Prin mperecherea a dou genotipuri printe cu caracteristici diferite i superioare calitativ
pot fi obinute progenituri care s mbine caracteristicile celor doi prini. Acest principiu are un
fundament biologic extrem de solid: a fost utilizat de cultivatorii de plante i cresctorii de
animale pentru a produce specii cu randament superior sau care s prezinte caracteristici
mbuntite. Aplicarea EA determin crearea de urmai direci prin ncruciri aleatoare, fiind
acceptat ideea c unii dintre acetia pot avea nsuiri nedorite, majoritatea pot fi calitativ similari
sau chiar inferiori prinilor i doar o mic parte dintre ei pot avea caracteristici superioare
prinilor.

Mecanismul de selectare a supravieuitorilor (nlocuirea populaiei curente)


Rolul acestui operator, numit i selecia mediului sau strategia de nlocuire a populaiei
curente, este de a diferenia indivizii n funcie de calitatea lor. Din acest punct de vedere este
similar procesului de selecie a prinilor dar este utilizat ntr-o etap diferit a evoluiei unui EA.
Mecanismul de selecie a membrilor urmtoarei generaii este aplicat dup generarea
progeniturilor indivizilor populaiei curente i, deoarece dimensiunea populaiei este n general
constant n timp, revine la aplicarea unei funcii de decizie fiecrui individ aparinnd populaiei
curente sau mulimii progeniturilor. Funcia de decizie aplicat unui individ exprim proprietatea
acestuia de a fi selectat pentru includerea n populaia urmtoare (proprietatea de a fi
supravieuitor) i este de obicei construit pe baza funciei de evaluare, lund n calcul calitatea
fiecrui individ i, n unele situaii, factorul vrst (de cte generaii este meninut u individ).
n general selecia mediului este un proces determinist. Obinerea generaiei urmtoare
poate fi realizat, de exemplu, fie prin ordonarea indivizilor multisetului obinut prin reuniunea
populaiei curente cu multisetul progeniturilor i selectarea celor mai buni indivizi (funcie de
decizie bazat pe funcia de evaluare), fie prin selectarea indivizilor exclusiv din multisetul
urmailor direci (funcie de decizie bazat pe factorul vrst).

Iniializarea
n majoritatea EA, crearea populaiei iniiale este realizat prin generare aleatoare de
fenotipuri i apoi obinerea multisetului de genotipuri asociat. De asemenea, n funcie de
problema particular de rezolvat, generarea populaiei iniiale poate fi realizat i pe baza unor
euristici care s asigure obinerea unor indivizi cu adaptabilitate ridicat.

Condiia terminal
Condiia terminal n EA este stabilit n funcie de tipul de problem de rezolvat, n felul
urmtor. Dac problema are o valoare de optim cunoscut, atunci un posibil criteriu de oprire este
atingerea acelei valori sau atingerea acelei valori cu o eroare dat . Dar, deoarece algoritmii
evolutivi sunt stochastici i nu garanteaz atingerea valorii optime, criteriul poate s nu fie
satisfcut la nici o iteraie, deci el trebuie reformulat. Cele mai utilizate opiuni sunt:
atingerea unui numr maxim de iteraii (generaii);
atingerea unui numr maxim de evaluri ale calitii indivizilor;
pentru o anumit perioad de timp (un numr de iteraii specificat sau un numr de
evaluri specificat) calitatea populaiei curente nu este semnificativ mbuntit
(este sub un prag dat);
diversitatea populaiei scade sub un prag dat.
n situaia n care problema de rezolvat nu are un optim cunoscut, poate fi utilizat oricare
din variantele menionate mai sus.

2.3. Evoluia cutare direct-cutare stochastic. Metodele hill climbing i simulated


annealing

Evoluia cutare direct-cutare stochastic cuprinde dou tehnici care reduc din
dezavantajele cutrilor directe, i anume metode de tip hill climbing i simulated annealing.
Metodele de tip hill climbing utilizeaz o tehnic de iterativitate mbuntit. Aceasta
se aplic unui singur punct din spaiul de cutare. La o iteraie este selectat un nou punct aflat
ntr-o vecintate a punctului curent procesat. Dac acest punct determin o valoare mai bun (din
punct de vedere al criteriului de optim considerat) pentru funcia obiectiv, el devine punct curent.
n caz contrar, este selectat o alt vecintate a punctului curent, procesul desfurndu-se ulterior
similar. Algoritmul se ncheie cnd nici un punct vecin celui curent nu aduce mbuntiri
valorilor funciei obiectiv. Metodele de acest tip conduc de obicei la valori de optim local,
depinznd de punctul de start. n plus, nu se pot furniza informaii referitoare la eroarea relativ a
soluiei calculate. Pentru a crete performanele unor astfel de modele, acestea se utilizeaz pentru
un numr mare de punct de start.
Metodele de tipsimulated annealing elimin o mare parte din dezavantajele algoritmilor
hillclimbing, n sensul c soluiile nu depind de punctul de start i sunt de obicei apropiate de
punctul de optim global. Pentru aceasta, este considerat o probabilitate de acceptare a punctului
selectat drept urmtor punct curent, egal cu 1 dac noul punct furnizeaz o valoare mai bun
pentru funcia obiectiv considerat. n unele situaii, probabilitatea de a accepta un nou punct este
o funcie cu valori corespunztoare funciei obiectiv pentru punctul curent i noul punct selectat.
De asemenea, fa de tehnica hill climbing, este considerat un parametru de tip temperatura
sistemului, care influeneaz probabilitatea de acceptare a unui nou punct ca punct curent: cu ct
acest parametru este mai sczut, cu att ansele de acceptare sunt mai mici. Pe parcursul execuiei
algoritmului, temperatura sistemului scade; algoritmul se ncheie pentru o temperatur mic,
pentru care nu se mai accept nici o modificare a soluiei (probabilitatea de acceptare a unui nou
punct este 0).

Structurile algoritmilor de tip hill climbing i simulated annealing


Fie f funcia obiectiv care se dorete maximizat (dac principiul de optimalitate este
minimul, atunci problema minimizrii funciei obiectiv f n anumite condiii de constrngere
revine la maximizarea funciei f) . Considernd reprezentarea cromozomial a unei soluii
poteniale de tip binar, ca un ir de nr bii, punctele curent respectiv nou fiind desemnate prin vc
respectiv vn, algoritmii hill climbing i simulated annealing sunt descrii dup cum urmeaz.
Fie MAX numrul punctelor de start. Procedura urmtoare calculeaz v, un cel mai bun
punct din cele MAX puncte obinute n urma aplicrii tehnicii de tip hillclimbing (memorate n
vectorul V).

procedure hillclimbing
begin
t=0
repeat
local=false
selecteaz aleator un punct curent vc
evalueaz vc
repeat
selecteaz nr puncte din vecintatea lui vc prin modificarea fiecrui bit al lui vc
selecteaz un punct vn dintre cei nr generai anterior, cu funcia obiectiv maxim
if f(vc)<f(vn) vc=vn
else local=true
until local
V(t)= vc
t=t+1
until t=MAX

end.

Variabila local are rolul de a semnala eventuala apropiere de un punct de maxim local,
determinat atunci cnd nu se mai fac modificri ale punctului curent (cnd nici un vecin al
punctului curent nu furnizeaz o valoare mbuntit a funciei obiectiv).

procedure simulated_annealing
begin
t=0
iniializeaz temperatura sistemului T
selecteaz aleator un punct curent vc
evalueaz vc
repeat
repeat
selecteaz vn n vecintatea lui vc (prin modificarea unui bit din vc)
if f(vc)<f(vn) vc=vn
else
if random[0,1) <exp{(f(vn)-f(vc)/T} vc=vn
until (condiie de terminare dat de T)
t=t+1
T=g(T,t)
until (criteriu de stop)
end.

Funcia random[0,1) returneaz un numr aleator generat uniform n intervalul [0,1).


Condiia de terminare verific dac sistemul a atins echilibrul termic, adic dac distribuia de
probabilitate corespunztoare noilor iruri selectate ating distribuia Boltzman. La fiecare repetare
a seleciei temperatura sistemului descrete (g(T, t)<T, pentru orice t). Algoritmul se ncheie
pentru o valoare mic a lui T, corespunztoare strii de nghe, adic dac nu se mai accept
virtuale modificri asupra punctului curent.

Observaie. Reprezentarea cromozomial a unui numr din domeniul


poate fi realizat prin intermediul unui ir binar pe baza urmtorului procedeu. Fie nz numrul de
zecimale al reprezentrii (precizia dorit); domeniul D este divizat n (b-a)10nz intervale egale.
Fie m cel mai mic numr natural cu proprietatea c . Reprezentarea
oricrei variabile reale este un ir binar de m bii, notat cu s, n care
i reprezint valoarea zecimal a irului binar, unde

i [t] este partea ntreag a umrului t.

Dac funcia de optimizat depinde de mai multe variabile, fiecare dintre ele este
reprezentat conform observaiei de mai sus, un cromozom fiind constituit din concatenarea
fiecrei reprezentri binare corespunztoare unei variabile.

Exemple. Fie . Lungimea intervalului este 15,1. Dac precizia dorit este
de 4 zecimale, atunci domeniul considerat trebuie divizat n 15,1 104=151000 intervale, deci
m=18.
a) Fie . Atunci

Rezult

i
ntr-adevr,

b) Fie . Atunci
Obinem

i
ntr-adevr,

Exemple de aplicare a algoritmului hillclimbing. Rezolvarea unei probleme de


optimizare a unei funcii de o variabil

1. Fie , definit prin

Problema este de a calcula valoarea maxim a funciei pe intervalul .


Graficul funciei este prezentat n figura urmtoare.

Implementarea algoritmului hill climbing poate fi realizat astfel.

% functia obiectiv
function [val]=f_obiectiv(x);
val=x.^1/3-3*sin(7*x+0.2)+2*cos(x/5-0.4)+1;
end

% reprezentarea cromozomiala y, pe m biti, a unui numar x din [a,b] cu


% nz zecimale exacte
function [y,m]=repr_sir_bin(x,a,b,nz);
nr=(b-a)*(10^nz);
m=fix(log2(nr))+1;
z=fix((x-a)*(2^m-1)/(b-a));
y=bitget(z,m:-1:1);
end

% obtinerea fenotipului corespunzator


function [t]=repr_reale(y,m,a,b);
x=0;
for i=1:m
x=bitset(x,m-i+1,y(i));
end;
t=a+x*(b-a)/(2^m-1);
end

% implementarea algoritmului
function [val,v]=hillclimbing(a,b,nz,MAX);
% aici a=-1 si b=1, pentru a rezolva problema data
[y,m]=repr_sir_bin(0,a,b,nz);
V=[];
%m este numarul de biti pe care este reprezetat un numar din [a,b] cu
%precizia de nz zecimale
for t=1:MAX
local=0;
vc=unifrnd(a,b);
valm=f_obiectiv(vc);
if (t==1)
val=valm;
v=vc;
end;
while(local==0)
%calculul vecinilor, insotit de valorile functiei obiectiv
[y,m]=repr_sir_bin(vc,a,b,nz);
valc=f_obiectiv(vc);
ny=zeros(m,m+1);
for i=1:m
ny(i,1:m)=y(1:m);
ny(i,i)=not(y(i));
vn=repr_reale(ny(i,1:m),m,a,b);
ny(i,m+1)=f_obiectiv(vn);
end;
nys=sortrows(ny,m+1);
if(nys(m,m+1)>valc)
vc=repr_reale(nys(m,1:m),m,a,b);
valm=nys(m,m+1);
else
local=1;
end;
end;
if(valm>val)
val=valm;
v=vc;
timp=t;
end;
V=[V vc];
end;
disp(v);
disp(val);
plot_obiectiv(V,timp,a,b);
end

function []=plot_obiectiv(V,timp,a,b);
figure
x=a:0.001:b;
plot(x,x.^1/3-3*sin(7*x+0.2)+2*cos(x/5-0.4)+1,'k-');
hold on
[xx dim]=size(V);
disp(dim);
for i=1:dim
x=V(i);
y=f_obiectiv(V(i));
plot(x,y,'rs');
hold on
end;
x=V(timp);
y=f_obiectiv(V(timp));
plot(x,y,'bs');
end

La un apel
hillclimbing(-1,1,4,5);

pot fi obinute rezultatul:


punctul n care este atins maximul 0.6476
maximul calculat 6.1425

i evoluia

La un apel
hillclimbing(-1,1,4,2);
pot fi obinute rezultatul:
punctul n care este atins maximul -0.2495
maximul calculat 5.7169
i evoluia
La un alt apel
hillclimbing(-1,1,4,2);

pot fi obinute rezultatul:


punctul n care este atins maximul 0.6476
maximul calculat 6.1425

i evoluia

2. Optimizarea unei funcii de mai multe variabile.


Fie , definit prin
Problema este de a calcula valoarea maxim a funciei pe .
Implementarea algoritmului hill climbing n acest caz poate fi realizat astfel.

function [val,v]=hillclimbing(a,b,nz,MAX);
[y,m]=repr_sir_bin(0,a,b,nz);
V=[];
%m este numarul de biti pe care este reprezetat un numar din [a,b]x[a,b]
%cu precizia de nz zecimale
for t=1:MAX
local=0;
vc=unifrnd(a,b,1,2);
valm=f_obiectiv(vc(1),vc(2));
if (t==1)
val=valm;
v=vc;
end;
while(local==0)
%calculul vecinilor, insotit de valorile functiei obiectiv
for i=1:2
[y((i-1)*m+1:i*m),m]=repr_sir_bin(vc(i),a,b,nz);
end;
valc=f_obiectiv(vc(1),vc(2));
ny=zeros(2*m,2*m+1);
for i=1:2*m
ny(i,1:2*m)=y(1:2*m);
ny(i,i)=not(y(i));
vn(1)=repr_reale(ny(i,1:m),m,a,b);
vn(2)=repr_reale(ny(i,m+1:2*m),m,a,b);
ny(i,2*m+1)=f_obiectiv(vn(1),vn(2));
end;
nys=sortrows(ny,2*m+1);
if(nys(2*m,2*m+1)>valc)
vc(1)=repr_reale(nys(2*m,1:m),m,a,b);
vc(2)=repr_reale(nys(2*m,m+1:2*m),m,a,b);
valm=nys(2*m,2*m+1);
else
local=1;
end;
end;
if(valm>val)
val=valm;
v=vc;
timp=t;
end;
V=[V;vc];
end;
disp(v);
disp(val);
disp(timp);
plot_obiectiv(V,timp,a,b);
end

function [val]=f_obiectiv(x,y);
val=exp(-x^2-y^2)+y*cos(5*x)-x*sin(3*y);
end

function []=plot_obiectiv(V,timp,a,b);
figure
[X,Y] = meshgrid([a:0.01:b]);
Z = exp(-X.^2-Y.^2)+Y.*cos(5*X)-X.*sin(3*Y);
plot3(X,Y,Z,'y');
grid on
hold on
[dim xx]=size(V);
disp(dim);
for i=1:dim
x=V(i,1);
y=V(i,2);
z=f_obiectiv(x,y);
if(i==timp)
plot3(x,y,z,'ks');
hold on
else
plot3(x,y,z,'g.');
hold on
end;
end;
end

Funciile de reprezentare repr_reale i repr_sir_bin sunt similare primului exemplu


(asigur transformarea numr real din ir binar).

La un apel hillclimbing(-2,2,5,75);
pot fi obinute rezultatele:
x=-1.9102, y=-1.6250
valoarea maxim: 3.4989.
n urmtoare figur este prezentat un exemplu de evoluie posibil a algoritmului
hillclimbing aplicat pentru 75 de puncte de start.
2.4. Exemple de aplicare a EA

Rezolvarea unei probleme de optimizare a unei funcii de o variabil


Fie , definit prin

Problema este de a calcula valoarea maxim a funciei pe intervalul .


Spaiul genotipurilor poate fi considerat mulimea numerelor reale din intervalul .
La fiecare moment de timp populaia este constituit din dim numere reale din ; la
momentul iniial, populaia conine dim numere reale generate aleator pe intervalul .
Operatorul de mutaie aplicat unui cromozom x determin obinerea valorii x. (n acest
caz este posibil, deoarece, dac ). Operatorul de recombinare aplicat
pentru prinii determin obinerea cromozomului . Selecia
prinilor este realizat astfel: sunt selectai jumtate din membrii populaiei curente pe baza
procedurii de tip turnir. Operaia de ncruciare este aplicat pentru o mperechere aleatoare a cte
2 indivizi prini, cu probabilitatea pc (pentru fiecare pereche de prini selectat este generat un
numr aleator n ; dac acesta este inferior valorii pc, este efectuat ncruciarea).
Progeniturile sunt supuse mutaiei cu o probabilitate pm. Mecanismul de selectare a noii generaii
presupune ordonarea descresctoare a multisetului format din indivizii populaiei curente i
progeniturile obinute prin operatorii de variaie i selecie a prinilor i alegerea primilor dim
indivizi pentru a forma populaia urmtoare. Condiia terminal este formulat astfel: a fost
depit un prag al numrului de generaii sau calitatea populaiei, msurat ca medie a funciei de
evaluare n membrii populaiei nu mai poate fi mbuntit semnificativ.
n continuare sunt prezentate funciile MATLAB utilizate i cteva exemple de aplicare a
cutrii evolutive descrise mai sus.

% generarea populaiei iniiale


function [pop]=genereza_ini(dim);
pop=zeros(dim,2);
% fiecare membru al populatiei este un numar in [-1,1]
% la care este adaugata valoarea functiei obiectiv
for i=1:dim
pop(i,1)=unifrnd(-1,1);
pop(i,2)=f_obiectiv(pop(i,1));
end;
end

%definirea functiei obiectiv


function [val]=f_obiectiv(x);
val=x.^1/3-3*sin(7*x+0.2)+2*cos(x/5-0.4)+1;
end

% operatorul mutatie
function [y]=mutatie(x);
y=x;
y(1)=-x(1);
y(2)=f_obiectiv(y(1));
end

% operatorul de incrucisare
function [y]=crossover(x1,x2);
y=x1;
y(1)=(x1(1)+x2(1))/2;
y(2)=f_obiectiv(y(1));
end
% mecanismul de selectie a parintilor
function [parinti]=selectie(pop);
[dim,xx]=size(pop);
d=round(dim/2);
% dim trebuie sa fie multiplu de 4, pentru ca d sa fie par
% va rezulta un singur copil din incrucisare
parinti=zeros(d,2);
for i=1:d
p1=unidrnd(dim);
p2=unidrnd(dim);
while(p2==p1)
p2=unidrnd(dim);
end;
if(pop(p1,2)>pop(p2,2))
parinti(i,:)=pop(p1,:);
else parinti(i,:)=pop(p2,:);
end;
end;
end

%obtinerea unei noi populatii popNou pe baza populatiei curente pop


%probabilitatea de incrucisare pc si probabilitatea de mutatie pm
% evalmed este valoarea medie a functiei obiectiv pentru noua generatie
function [popNou,evalmed]=trecere(pop,pc,pm);
[parinti]=selectie(pop);
[dim,xx]=size(pop);
[dd,yy]=size(parinti);
d=round(dd/2);
popN=zeros(d,2);
%aplica operatia de crossover
nr=0;
for i=1:d
j=2*i;
prc=unifrnd(0,1);
if(prc<=pc)
nr=nr+1;
popN(nr,:)=crossover(parinti(j-1),parinti(j));
end;
end;
%aplica mutatia
for i=1:nr
prm=unifrnd(0,1);
if(prm<=pm)
popN(i,:)=mutatie(popN(i,:));
end;
end;
popNN=[pop;popN(1:nr,:)];
tt=sortrows(popNN,2);
popNou=zeros(dim,2);
popNou=tt(nr+1:dim+nr,:);
evalmed=mean(popNou(:,2));
end

function []=EA_maxim(dim,pc,pm,Max,eps);
% dim este dimensiunea populatiei,multiplu de 4
% pc este probabilitatea de efectuare a
% unei incrucisari, pm este probabilitatea de efectuare a unei mutatii,
% Max este numarul maxim de iteratii(generatii)
%daca diferenta dintre valorile maxime ale
%functiei obiectiv de la o generatie la alta este in modul<eps --->stop
[pop]=genereaza_ini(dim);
evalmed= mean(pop(:,2));
t=0;
V=[];
er=1;
plot_obiectiv(pop);
while((t<Max)&&(er>eps))
[popN,evalmed1]=trecere(pop,pc,pm);
pop=popN;
er=abs(evalmed1-evalmed);
%disp(evalmed1);
%disp(er);
evalmed=evalmed1;
V=[V evalmed];
t=t+1;
if (t==20)
plot_obiectiv(pop);
end;
end;
plot_obiectiv(pop);
figure
i=1:t;
plot(i,V(i),'r-');
disp(t);
disp(popN(dim,:));
end
function []=plot_obiectiv(pop);
figure
x=-1:0.001:1;
plot(x,x.^1/3-3*sin(7*x+0.2)+2*cos(x/5-0.4)+1,'k-');
hold on
[dim,xx]=size(pop);
for i=1:dim
x=pop(i,1);
y=pop(i,2);
plot(x,y,'rs');
hold on
end;
end

Pentru pot fi obinute urmtoarele


rezultate.
Pentru sunt obinute urmtoarele
rezultate.

Valoarea maxim a funciei obiectiv este atins pentru i este .


Valorile obinute sunt conforme cu graficul funciei prezentat n prima figur a acestei seciuni.
n urmtoarele trei figuri este reprezentat o posibil distribuie a membrilor populaiei la
momentul curent, dup 20 de iteraii i la momentul final. Apelul este
EA_maxim(104,0.5,0.1,1000,0.0001);
Iniial, indivizii sunt distribuii aleator, pe ntre domeniul de definiie al funciei obiectiv.
Dup 20 de iteraii, indivizii din populaie sunt distribuii n vecintatea unui punct de maxim
local i respectiv n vecintatea punctului de maxim global. La terminarea cutrii, EA reuete s
identifice maximul global al funciei obiectiv i membrii populaiei la momentul final sunt grupai
ntr-o vecintate a punctului de maxim global.
Problema celor opt regine
Problema este de a determina o configuraie n care 8 regine pot fi plasate pe o tabl de
ah astfel nct s nu se atace reciproc (nici o pereche de regine nu trebuie plasat pe aceeai linie,
coloan sau diagonal). Aceasta poate fi generalizat imediat la cazul a N regine pentru o tabl de
ah N x N -dimensional.
Deoarece pe fiecare linie i coloan a tablei de ah trebuie plasat o singur regin,
configuraiile sunt reprezentate succesiv printr-un vector cu N componente. Valoarea
componentei i dintr-un vector configuraie reprezint indicele coloanei n care este plasat regina
aflat pe linia i. Din aceast reprezentare rezult c dou regine nu pot fi plasate pe aceeai linie a
tablei de ah. De asemena, dac vom presupune c elementele vectorului configuraie sunt
distincte (deci voctorul configuraie corespunde unei permutri pe mulimea ), rezult
c dou regine nu pot fi plasate pe aceeai coloan a tablei de ah.
Rezolvarea clasic a unei astfel de probleme este prin cutare direct, utiliznd metoda
backtracking: iniial este plasat o regin; dup plasarea a n regine, este cutat o poziie posibil
pentru plasarea celei de-a n+1-a regine (o poziie din care noua regin s nu se afle n situaie de
atac cu nici una din celelalte n regine deja plasate pe tabla de ah). Dac nu exist nici o astfel de
poziie, cea de-a n-a regin este repoziionat pe tabla de ah, dac acest lucru este posibil.
O abordare evolutiv a acestei probleme este total diferit de cutarea direct i este de tip
non-incremental. Soluiile candidat sunt complete, n sensul c fiecare vector configuraie este
instaniat cu o permutare. Din punct de vedere al reprezentrii, un fenotip, care reprezint o
configuraie a tablei de ah astfel nct dou regine s nu fie plasate pe aceeai linie sau aceeai
coloan (este soluie potenial), este codificat prin intermediul vectorului configuraie, permutare
a mulimii . Spaiul genotipurilor este deci format din mulimea permutrilor setului
. Evident, nu toate elementele acestui spaiu sunt soluii admisibile (dou regine pot fi
plasate astfel nct s fie pe o aceeai diagonal a tablei de ah, deci s se afle n poziie de atac
reciproc).
Calitatea fiecrui genotip x, , poate fi evaluat n termenii numrului de perechi de
regine care se afl n poziie de atac (numrul de perechi cu proprietatea c
): dac acesta este 0 atunci genotipul este soluie, n caz contrar valoarea
calculat este strict pozitiv. Problema de optim care trebuie rezolvat este deci de minimizare
funcie f sau, echivalent, maximizarea funciei , unde este
numrul maxim de perechi de regine care se pot afla n poziie de atac (de exemplu n cazul
). n implementarea algoritmului, fiecrui genotip i este asociat valoarea
funciei de evaluare, deci datele cu care se lucreaz sunt vectori N+1-dimensionali: primele N
componente reprezint configuraia i ultima component valoarea funciei de evaluare
corespunztoare acesteia.
La fiecare moment de timp, populaia este constituit dintr-un multiset cu dim elemente
(de exemplu, pentru , pentru ). Pentru aceast problem, la
fiecare generaie sunt nlocuii cte 2 indivizi (cei mai slabi din punctul de vedere al funciei de
evaluare) cu copii a doi prini. Cei doi prini sunt selectai aleator din populaia curent, .
Operatorul de ncruciare este proiectat astfel nct progeniturile s pstreze proprietatea de a fi
permutri: pentru doi indivizi i pentru o poziie sunt obinute
progeniturile astfel:
copiaz primele poz elemente din , respectiv n , respectiv
copiaz n ultimele dim-poz+1 poziii din , respectiv , elementele din ,
respectiv , ncepnd cu primul i pn cnd au fost completate poziiile din ,
respectiv , astfel nct , respectiv s nu conin dubluri
Operatorul mutaie este aplicat cu probabilitatea de 0.8 uneia din cele dou progenituri
rezultate dup aplicarea operatorului de recombinare i revine la selectarea aleatoare a dou
poziii diferite din genotipul modificat i interschimbarea valorilor din acele poziii.
Condiia terminal este formulat astfel: a fost atins o configuraie soluie sau a fost
depit pragul dat pentru numrul maxim de generaii.
n continuare sunt prezentate funciile MATLAB utilizate i cteva exemple de aplicare a
cutrii evolutive descrise mai sus.

function [pop]=genereaza_ini(N,dim);
pop=zeros(dim,N+1);
% fiecare membru al populatiei este o permutare pe 1,2,..,N
% la care este adaugata valoarea functiei obiectiv N-numarul de perechi
% de regine care se ataca reciproc
for i=1:dim
x=gen_perm(N);
pop(i,1:N)=x;
pop(i,N+1)=valoare(x);
end;
end

% generarea aleatoare a unei permutari pe {1,2,,N}


function [y]=gen_perm(N);
y=zeros(1,N);
for i=1:N
gata=0;
while(~gata)
v=unidrnd(N);
if(~ismember(v,y))
y(i)=v;
gata=1;
end;
end;
end;
disp(y);
end

% functia de evaluare calculata pentru un genotip


function [val]=valoare(x);
[m,N]=size(x);
v=0;
for i=1:N-1
for j=i+1:N
if(abs(i-j)==abs(x(i)-x(j)))
v=v+1;
end;
end;
end;
val=N*(N-1)/2-v;
end

% recombinarea
function [y1,y2]=crossover(x1,x2,poz);
[m,p]=size(x1);
N=p-1;
y1=x1;y2=x2;
y1=copiaza_rest(y1,x2,poz,N);
y2=copiaza_rest(y2,x1,poz,N);
y1(N+1)=valoare(y1(1:N));
y2(N+1)=valoare(y2(1:N));
%disp(y1);
%disp(y2);
end

function [y]=copiaza_rest(y,x,poz,N)
i=poz+1;
while(i<=N)
for j=1:N
if(~ismember(x(j),y(1:i-1)))
y(i)=x(j);
i=i+1;
break;
end;
end;
end;
end

% mutatia
function [y]=mutatie(x,poz1,poz2);
[m,p]=size(x);
N=p-1;
y=x;
y(poz1)=x(poz2);
y(poz2)=x(poz1);
y(N+1)=valoare(y(1:N));
end

% selectarea parintilor cate doi/popuatie


function [parinti]=selectie(pop);
[dim,p]=size(pop);
N=p-1;
parinti=zeros(2,N+1);
p1=unidrnd(dim);
p2=unidrnd(dim);
while(p2==p1)
p2=unidrnd(dim);
end;
parinti(1,:)=pop(p1,:);
parinti(2,:)=pop(p2,:);
end
% trecerea de generatia curenta la generatia urmatoare
function [popNou,evalmax]=trecere(pop,pm);
[parinti]=selectie(pop);
[dim,m]=size(pop);
N=m-1;
poz=unidrnd(N-1);
%aplica operatia de crossover
y=zeros(2,N+1);
[y(1,:),y2(2,:)]=crossover(parinti(1,:),parinti(2,:),poz);
%aplica mutatia
prm=unifrnd(0,1);
if(prm<=pm)
i=unidrnd(2);
poz1=unidrnd(N);
poz2=unidrnd(N);
while(poz2==poz1)
poz2=unidrnd(N);
end;
y(i,:)=mutatie(y(i,:),poz1,poz2);
end;
popN=[pop;y(1,:);y2(2,:)];
tt=sortrows(popN,N+1);
%disp(tt);
popNou=zeros(dim,N+1);
popNou=tt(3:dim+2,:);
evalmax=popNou(dim,N+1);
%disp(popNou);
end

% algoritmul evolutiv
function []=EA_Queens(N,dim,pm,Max);
% N este umarul de regine, dim este dimensiunea populatiei, pm este
% probabilitatea de efectuare a unei mutatii si Max este numarul maxim
%de iteratii(generatii)
[pop]=genereaza_ini(N,dim);
evalmax=0;
t=0;
V=[];
while(evalmax<N*(N-1)/2 && t<Max)
[popN,evalmax]=trecere(pop,pm);
pop=popN;
disp(popN(dim,:));
V=[V popN(dim,N+1)];
t=t+1;
end;
figure
i=1:t;
plot(i,V(i),'ro:');
axis([0 t V(1)-1 (N*(N-1)/2)+5]);

figure
for i=0:N
plot( [0 N],[i i],'k-');
plot( [i i],[0 N],'k-');
hold on
end;
hold on
for i=1:N
x=i;
y=pop(dim,i);
k=x-1:0.1:x;
l=y-1:0.1:y;
plot(k,l,'bv');
hold on
k=x:-0.1:x-1;
l=y-1:0.1:y;
plot(k,l,'bv');
hold on
end;
axis([0 N 0 N]);
end

O configuraie corect obinut prin aplicarea algoritmului de mai sus


O configuraie corect obinut prin aplicarea algoritmului de mai sus

Problema rucsacului de tip 0-1


Problema rucsacului de tip 0-1 este enunat n cele ce urmeaz. Fiind date m obiecte,
fiecare avnd asociate o valoare i respectiv un cost de selecie, trebuie determinat un set de
obiecte cu proprietatea c este de valoare maxim (unde valoarea unei mulimi de obiecte este
definit ca suma valorilor obiectelor ce o compun) i costul (definit ca suma costurilor obiectelor
setului) este sub un prag dat, Cmax. Problema este de tip 0-1 pentru c nu pot fi selectate fraciuni
dintr-un obiect, ci ntregul obiect (dac prin aceast operaie nu este depit Cmax).
O soluie posibil este dat de un set de obiecte selectate astfel nct costul lui este inferior
valorii Cmax. Dac val este vectorul valorilor asociate celor m obiecte i cost este vectorul
costurilor, reprezentarea unui candidat la soluie poate fi realizat printr-un vector de m elemente,
v, unde

i

Funcia de evaluare asociat lui v calculeaz valoarea asociat seleciei reprezentate de v,

Este evident c fiecare genotip v corespunde unui numr i v este


reprezentarea binar a lui R-1 i cu proprietatea c nu este depit pragul Cmax.
La fiecare moment de timp, populaia este format din N indivizi reprezentai aa cum a
fost explicat mai sus. La momentul iniial, este generat aleator un numr ,
genotipul corespunztor lui fiind reprezentarea binar a lui R-1; R este selectat pentru
reprezentare numai dac nu este depit pragul Cmax. Procedeul continu pn la generarea a N
cromozomi.
Selecia prinilor este realizat prin urmtorul procedeu. De N ori sunt alese perechi de
cromozomi din populaia curent i este selectat cel mai bun dintre ei, din punctul de vedere al
funciei de evaluare. Recombinarea este realizat cu o probabilitate pc (
) i este proiectat astfel nct progeniturile s rmn admisibile (costul asociat s
fie inferior lui Cmax): pentru doi indivizi i pentru o poziie
generat aleator sunt obinute progeniturile astfel:
copiaz primele poz elemente din , respectiv n , respectiv
copiaz n ultimele m-poz+1 poziii din , respectiv , ultimele m-poz+1
elementele din , respectiv
Dac astfel obinui nu ndeplinesc proprietatea de admisibilitate, este selectat o alt
pereche de indivizi i este aplicat acelai mecanism, pn cnd este obinut o pereche de
genotipuri (soluii admisibile ale problemei de rezolvat). Dac o pereche de prini nu este
selectat pentru ncruciare, aceasta este meninut n populaia urmtoare.
Operatorul mutaie este aplicat cu o probabilitate pm (n general ) unui individ v
i revine la selectarea aleatoare a unei poziiei i modificarea valorii i
efectuarea operaiei (valoarea genei poz este schimbat din 0 n 1 sau
invers). Dac rezultatul nu este admisibil, este selectat un alt individ pentru mutaie.
Mecanismul de nlocuire a populaiei revine la selectarea acelor indivizi alei ca prini
dar pentru care nu s-a realizat operaia de ncruciare (valoarea generat aleator este inferioar
valorii pc) i pentru progeniturile (eventual mutante) rezultate. Fiecare generaie are deci
dimensiunea constant, N.
Condiia terminal controleaz numrul de iteraii efectuat. Alternativ, poate fi
implementat i o variant n care s fie controlat i calitatea populaiei, evaluat ca medie a
funciei de evaluare sau ca valoarea maxim a funciei de evaluare calculat pentru fiecare din
indivizii populaiei curente.
n continuare sunt prezentate funciile MATLAB pentru implementarea cutrii evolutive.
Datele sunt preluate din fiierul nume i sunt reprezentate de costurile i valorile asociate celor m
obiecte. Testele au fost efectuate pentru m=16 i m=32.

% citirea datelor din fisier


function [val,cost,costM]=citeste_date(nume);
f=fopen(nume);
m=fscanf(f,'%d',1);
val=fscanf(f,'%lg',[m,1]);
cost=fscanf(f,'%lg',[m,1]);
costM=fscanf(f,'%lg',1);
fclose(f);
end

% generarea populaiei iniiale


function [pop,val,cost,costM]=genereza_ini(nume,N);
[val,cost,costM]=citeste_date(nume);
[m,p]=size(val);
pop=zeros(N,m);
i=0;
while(i<N)
%se lucreaza pe m biti, generez R, un numar intre 1 si 2^m
%si consideram reprezentarea binara
R=unidrnd(2^m);
x=repr_bin(R-1,m);
[ok,sum]=verifica(x,cost,costM);
if(ok)
i=i+1;
pop(i,:)=x;
end;
end;
end

% obtinerea reprezentarii binare a unui numar


function [y]=repr_bin(x,m);
y=bitget(x,m:-1:1);
end

% verificarea admisibilitatii unei solutii potentiale


function [OK,sum]=verifica(x,cost,costM);
sum=x*cost;
OK = sum<=costM;
End

% operatorul de mutatie
function [y]=mutatie(x,poz);
y=x;
y(poz)=not(x(poz));
end

% operatorul de incrucisare
function [y1,y2]=crossover(x1,x2,poz);
[m,p]=size(x1);
y1=x1;y2=x2;
y1(1:poz)=x1(1:poz);
y1(poz+1:m)=x2(poz+1:m);
y2(1:poz)=x2(1:poz);
y2(poz+1:m)=x1(poz+1:m);
end

% selectia parintilor
function [parinti]=selectie(pop,val,cost,costM);
[N,m]=size(pop);
parinti=zeros(N,m);
i=0;
for i=1:N
p1=unidrnd(N);
p2=unidrnd(N);
%functia de fitness - suma vi*gi, gi=1,
%daca a fost ales obiectul i, 0 altfel
if(pop(p1,:)*val>=pop(p2,:)*val)
parinti(i,:)=pop(p1,:);
else
parinti(i,:)=pop(p2,:);
end;
end;
end

% inlocuirea populatiei curente cu generatia urmatoare


function [popN]=trecere(pop,val,cost,costM,pc,pm);
[parinti]=selectie(pop,val,cost,costM);
[N,m]=size(pop);
popN=zeros(N,m);
i=0;
%aplica operatia de crossover
for i=1:2:N
p1=unidrnd(N);x1=parinti(p1,:);
p2=unidrnd(N);x2=parinti(p2,:);
prc=unifrnd(0,1);
if(prc<=pc)
cont=1;
%trebuie ca progentiturile sa fie solutii admisibile
while(cont)
poz=unidrnd(m);
%disp(poz);
[y1,y2]=crossover(x1,x2,poz);
[OK1,sum1]=verifica(y1,cost,costM);
[OK2,sum2]=verifica(y2,cost,costM);
if((OK1==1)&&(OK2==1))
popN(i,:)=y1;
popN(i+1,:)=y2;
cont=0;
end;
end;

else
popN(i,:)=x1;
popN(i+1,:)=x2;
end;
end;
%aplica mutatia
for i=1:N
prm=unifrnd(0,1);
if(prm<=pm)
cont=1;
%trebuie ca progentitura sa fie solutie admisibila
while(cont)
poz=unidrnd(m);
x=popN(i,:);
[y]=mutatie(x,poz);
[OK,sum]=verifica(y,cost,costM);
if(OK==1)
popN(i,:)=y;
cont=0;
end;
end;
end;
end;
end

% calculul valorii maxime a functiei de evaluare


function [Q,x,V]=maximQ(pop,val);
[N,m]=size(pop);
Q=0;
V=zeros(N);
for i=1:N
qm=pop(i,:)*val;
V(i)=qm;
if(qm>=Q)
Q=qm;
x=pop(i,:);
end;
end;
end

% implementarea cautarii evolutive


function []=GA_Knapsack(nume,N,pc,pm);
%GA_Knapsack('date4.txt',2000,0.9,1.0/8); - obtinerea solutiei exacte
%pentru 32 de componente

%pentru 16 componente GA_Knapsack('date.txt',500,0.8,1.0/8); -solutia


%exacta
[pop,val,cost,costM]=genereaza_ini(nume,N);
[Q,x,V]=maximQ(pop,val);
%disp(x);
%disp(Q);
figure;
i=1:N;
plot(i,V(i),'r-');
hold on;
for j=1:15
[popN]=trecere(pop,val,cost,costM,pc,pm);
pop=popN;
[Q,x,V]=maximQ(pop,val);
%disp(Q);
%disp(x);
end;
[Q,x,V]=maximQ(pop,val);
%disp(x);
i=1:N;
plot(i,V(i),'k-');
hold on
for j=1:50
[popN]=trecere(pop,val,cost,costM,pc,pm);
pop=popN;
[Q,x,V]=maximQ(pop,val);
%disp(Q);
%disp(x);
end;
[Q,x,V]=maximQ(pop,val);
disp('Solutia optima calculata');
disp(x);
disp('Valoarea optima calculata');
disp(Q);
i=1:N;
plot(i,V(i),'b-');
end

La apelul
GA_Knapsack('date.txt',500,0.8,1.0/8);
fiierul date.txt conine urmtoarele informaii:
Numrul de componente:
16
Valoarea obinut la alegerea fiecrei componente
4.5 6 8 5.4 10.2 3.2 4.2 8.3 3.2 4.5 9 10.9 5 6.2 7 8.2

Costul alegerii fiecrei componente


3 2 2.4 6.8 5 6.2 5 4.8 5 0.2 3 4.8 7 7.1 9.7 4
Costul maxim permis
26.3

n continuare este prezentat un exemple de evoluie a EA.

Solutia optima calculata


0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1

Valoarea optima calculata


65.1000

La apelul
GA_Knapsack('date4.txt',2000,0.9,1.0/8);
fiierul date4.txt conine urmtoarele informaii:

Numrul de componente:
32
Valoarea obinut la alegerea fiecrei componente
2.5 6 8 3.4 10.2 3.2 4.2 8.3 3.2 4.5 9 10.9 5 6.2 7 8.2 9.2 1.3 4 5 8.9 0.4 7.3 4.1 8
3 11 2.5 3 1.2 5 2.3

Costul alegerii fiecrei componente


7 3.1 2.4 8.8 5 5.2 5 4.8 5 5.2 6 4.8 7 1.1 2.7 4.9 5 5.6 8 2.5 4 4 2.2 5.2 3.1 6.4
3.3 7 6.5 8 1.4 9.8
Costul maxim permis
56.6

n continuare este prezentat un exemple de evoluie a EA.

Solutia optima calculata

0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1

1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0

Valoarea optima calculata


128.2000
Evoluia cutare direct-cutare
stochastic
Componentele EA
I. Evoluia cutare direct-cutare stochastic
Evoluia cutare direct-cutare stochastic: metodele de tip hill
climbing i simulated annealing.

Metodele de tip hill climbing


tehnic de iterativitate mbuntit, aplicat unui singur punct din spaiul de
cutare.
la o iteraie este selectat un nou punct aflat ntr-o vecintate a punctului curent
procesat (de exemplu, dac punctul curent este num real consider un tip de
reprezentare binar i modific un bit al reprezentrii)
dac acest punct determin o valoare mai bun (din punct de vedere al criteriului
de optim considerat) pentru funcia obiectiv, el devine punct curent.
altfel, este selectat o alt vecintate a punctului curent, procesul desfurndu-
se ulterior similar.
algoritmul se ncheie cnd nici un punct vecin celui curent nu aduce mbuntiri
valorilor funciei obiectiv.
sunt obinute de obicei la valori de optim local, depinznd de punctul de start.
Pentru a crete performanele unor astfel de modele, acestea se utilizeaz
pentru un numr mare de punct de start.
II. Algoritmul hill climbing
III. Reprezentarea binar a unui numar real
Implementarea MatLab
function [y,m]=repr_sir_bin(x,a,b,nz);
nr=(b-a)*(10^nz);
m=fix(log2(nr))+1;
z=fix((x-a)*(2^m-1)/(b-a));
y=bitget(z,m:-1:1);
end

% obtinerea numrului real t corespunzator reprezentrii binare y


function [t]=repr_reale(y,m,a,b);
x=0;
for i=1:m
x=bitset(x,m-i+1,y(i));
end;
t=a+x*(b-a)/(2^m-1);
end
IV. Maximizarea unei funcii de 2 variabile
utiliznd metoda hill climbing

while(local==0)
%calculul vecinilor, insotit de valorile functiei obiectiv
for i=1:2
[y((i-1)*m+1:i*m),m]=repr_sir_bin(vc(i),a,b,nz);
end;
valc=f_obiectiv(vc(1),vc(2));
ny=zeros(2*m,2*m+1);
for i=1:2*m
ny(i,1:2*m)=y(1:2*m); ny(i,i)=not(y(i));
vn(1)=repr_reale(ny(i,1:m),m,a,b); vn(2)=repr_reale(ny(i,m+1:2*m),m,a,b);
ny(i,2*m+1)=f_obiectiv(vn(1),vn(2));
end;
nys=sortrows(ny,2*m+1);
if(nys(2*m,2*m+1)>valc)
vc(1)=repr_reale(nys(2*m,1:m),m,a,b);
vc(2)=repr_reale(nys(2*m,m+1:2*m),m,a,b);
valm=nys(2*m,2*m+1);
else
local=1;
end;
end; %while (local==0)
if(valm>val)
val=valm; v=vc; timp=t;
end;
V=[V;vc];
end; %for i=1:MAX
disp(v); disp(val); disp(timp); plot_obiectiv(V,timp,a,b);
end

function []=plot_obiectiv(V,timp,a,b);
figure, [X,Y] = meshgrid([a:0.01:b]);
Z = exp(-X.^2-Y.^2)+Y.*cos(5*X)-X.*sin(3*Y); plot3(X,Y,Z,'y');
grid on hold on
[dim xx]=size(V);
for i=1:dim
x=V(i,1); y=V(i,2); z=f_obiectiv(x,y);
if(i==timp)
plot3(x,y,z,'ks'); hold on
else
plot3(x,y,z,'g.'); hold on
end;
end;end
La un apel hillclimbing(-2,2,5,75); pot fi obinute rezultatele:
x=-1.9102, y=-1.6250, valoarea maxim: 3.4989.
Componentele unui EA
Algoritmi genetici. Reprezentri
cromozomiale.
Componentele EA
1. Reprezentarea (definirea membrilor populaiei) - stabilirea unei conexiuni
ntre contextul problemei particulare de rezolvat i spaiul n care evolueaz
tehnica PS considerat.
Fenotipuri : soluiile posibile n contextul problemei de rezolvat
Genotipuri (cromozomi): reprezentarea fenotipurilor n context EA;
conin valori (alele), plasate n poziii numite variabile sau gene.
2. Funcia de evaluare (fitness) - msoar gradul de adaptabilitate a fiecrui
individ la mediul n care triete. St la baza proceselor de selecie i este
derivat pe baza unei funcii de tip calitate definit pe spaiul fenotipurilor.
3. Populaia multiset de genotipuri; menine o mulime de genotipuri, n
general de dimensiune constant, corespunztoare unor soluii posibile
Operatorii de selecie: definii la nivel de populaie.
Variaia n cadrul unei populaii individ, calitate, entropie etc.
4. Mecanismul de selectare a prinilor - permite celor mai buni indivizi s se
reproduc, fr a-i exclude pe cei mai slabi. Selecia este probabilist i
depinde de calitatea indivizilor
Rolul: foreaz mbuntirea calitii globale a populaiei de la o
generaie la alta.
5. Operatorii de variaie stochastici: rezultatul este funcie de alegeri aleatoare.
Recombinarea: produce unul sau dou genotipuri copil prin combinarea
informaiei din dou genotipuri printe i este stochastic
Mutaia: produce o variant mutant a unui genotip, numit progenitur
sau copil
6. Mecanismul de selectare a membrilor generaiei urmtoare - este aplicat
fiecrui individ aparinnd populaiei curente sau mulimii progeniturilor pe baza
unei fucii de decizie.
Supravieuire generaional
Supravieuire bazat pe calitate
7. Definirea modulului de iniializare (determinarea populaiei iniiale) sunt
generate aleator fenotipurile i apoi este obinut reprezentarea prin genotipuri
8. Definirea condiiei terminale
atingerea unui numr maxim de iteraii (generaii);
atingerea unui numr maxim de evaluri ale calitii indivizilor;
pentru o anumit perioad de timp calitatea populaiei curente nu este
semnificativ mbuntit (este sub un prag dat);
diversitatea populaiei scade sub un prag dat.
ALGORITMI GENETICI (GA)
Respect structura unui EA
Reprezentarea soluiilor. Reprezentarea binar
Alegerea unei anumite reprezentri depinde de problema particular de
rezolvat i este foarte important pentru ca GA s furnizeze soluii apropiate
de cele optime.

Cele mai utilizate tipuri de reprezentri n GA:


secvene binare;
secvene de numere ntregi;
secvene de numere reale;
permutri.

Reprezentarea binar: prima ca istoric

n cazul unor clase de probleme care conin variabile de tip decizie


boolean, reprezentarea binar este cea mai natural. Altfel, pot fi obinui
GA superiori ca performane prin utilizarea reprezentrilor directe
Reprezentarea binar. Exemplu

Reprezentarea binar. Codificarea Gray


Numr 0 1 2 3 4 5 6 7
Cod binar 0000 0001 0010 0011 0100 0101 0110 0111
std.
Cod Gray 0000 0001 0011 0010 0110 0111 0101 0100
Numr 8 9 10 11 12 13 14 15
Cod binar 1000 1001 1010 1011 1100 1101 1110 1111
std.
Cod Gray 1100 1101 1111 1110 1010 1011 1001 1000
Reprezentarea prin numere ntregi

Reprezentarea prin numere reale

Reprezentarea prin permutri


Permutrile sunt utilizate pentru reprezentri cromozomiale n
probleme n care trebuie stabilit ordinea apariiei unor
secvene de evenimente. n acest caz operatorii de variaie
trebuie definii astfel nct rezultatul aplicrii acestora s
corespund unor soluii admisibile.

Clase de probleme:
probleme n care ordinea apariiei evenimentelor este important.
Aceast situaie apare, de exemplu, cnd evenimentele utilizeaz
resurse limitate sau se desfoar ntr-o anumit perioad de timp.
Exemplu: problema planificrii activitilor;
probleme n care apare dependena de adiacen. Exemplu:
problema comis-voiajorului, n care, pentru n orae interconectate
date, trebuie determinat un drum de lungime (distan) minim care
s treac prin toate cele n orae, cu revenire n oraul de start.
Diferena dintre cele dou clase de probleme este dat de faptul
c, evident, n cazul celei de-a doua clase, punctul de start (n
cazul problemei comis-voiajorului oraul de plecare) nu este
important.
Algoritmi genetici. Operatori de
variaie
Operatorul mutaie. Reprezentarea binar

Mutaia n reprezentarea prin numere ntregi

Mutaia n reprezentarea prin numere reale


Mutaia n reprezentarea prin permutri

Mutaia n reprezentarea prin permutri

Recombinarea n reprezentarea binar


Recombinarea uniform n reprezentarea binar i
pe iruri de numere ntregi

Recombinarea n reprezentarea n numere reale


Algoritmi genetici.
Operatorul de recombinare n
reprezentarea prin permutri
Operatorul PMX

Operatorul OCX

Operatorul ECX

Operatorul CX

x1 1 2 4 6 5 7 3 9 10 8

y1 10 5 2 7 9 1 3 8 6 4

x1 1 2 4 6 5 7 3 9 10 8

y1 10 5 2 7 9 1 3 8 6 4

x1 1 2 4 6 5 7 3 9 10 8

y1 10 5 2 7 9 1 3 8 6 4
Recombinarea multipl

Mecanisme de selecie.
Selecia prinilor. Selecia
supravieuitorilor
Determinarea distribuiei de probabilitate de selecie

Determinarea distribuiei de probabilitate de selecie

Determinarea distribuiei de probabilitate de selecie

Determinarea distribuiei de probabilitate de selecie

Determinarea distribuiei de probabilitate de selecie

Nr. irul binar Calitatea FPS Rang liniar Rang


crt. s=1.5 exp.
1 0 1 1 0 0 144 0.0598 0.1200 0.1430
2 1 0 0 1 0 324 0.1344 0.1600 0.1955
3 1 0 1 1 0 484 0.2008 0.2000 0.2149
4 1 1 0 1 1 729 0.3025 0.2400 0.2220
5 1 1 0 1 1 729 0.3025 0.2800 0.2246
Determinarea distribuiei de probabilitate de selecie

Nr. irul binar Calitatea FPS Rang liniar Rang


crt. s=1.5 exp.
1 0 0 1 1 0 1036 0.1608 0.1200 0.1430
2 0 1 1 0 0 1144 0.1776 0.1600 0.1955
3 0 1 1 1 0 1196 0.1857 0.2000 0.2149
4 1 0 1 0 1 1441 0.2237 0.2400 0.2220
5 1 1 0 0 1 1625 0.2523 0.2800 0.2246
Implementarea distribuiei de probabilitate de selecie

Exemplu de implementare

Nr. Fenotipul Cromozomul Calitatea FPS


crt. populaiei iniiale lui asociat
1 6 0 0 1 1 0 36 0.0226
2 28 1 1 1 0 0 784 0.4922
3 18 1 0 0 1 0 324 0.2034
4 20 1 0 1 0 0 400 0.2511
5 7 0 0 1 1 1 49 0.0308

Nr. Fenotipul Cromozomii printe Calitatea


crt. selectai

1 18 1 0 0 1 0 324
2 20 1 0 1 0 0 400
3 28 1 1 1 0 0 784
4 18 1 0 0 1 0 324
5 28 1 1 1 0 0 784
Mecanismului SUS

Implementarea mecanismului SUS

Implementarea mecanismului SUS


Nr. Cromozomul populaiei iniiale Calitatea lui Rang liniar,
crt. s=1.8
1 0 0 0 1 0 4 0.0933
2 1 0 1 0 0 400 0.1467
3 1 1 0 0 1 625 0.2000
4 1 1 1 0 1 841 0.2533
5 1 1 1 1 0 900 0.3067

Nr. Cromozomii printe selectai Calitatea


crt.
1 1 0 1 0 0 400
2 1 1 0 0 1 625
3 1 1 1 0 1 841
4 1 1 1 1 0 900
5 1 1 1 1 0 900
Selecia de tip turneu

Schimbul de generaii bazat pe vrst

Schimbul de generaii bazat pe calitatea indivizilor

Aplicaie. Problema planificrii


activitilor
Problema planificrii activitilor de tip sisteme de
producie bazate pe comand (JSS)

Problema JSS
Ipoteze de lucru:
n cadrul fiecrei sarcini, activitile respect o relaie de preceden din
punctul de vedere al execuiei, astfel nct dou sau mai multe activiti nu
pot fi executate simultan; cu alte cuvinte, fiecare sarcin este definit de un
set ordonat de operaii, ordinea fiind predefinit;
activitile nu i pot ntrerupe execuia;
la fiecare moment de timp, pe oricare main, poate fi executat o singur
operaie.

Planificarea unei operaii o revine la a i aloca un timp de execuie (pe maina


corespunztoare lui o), un plan fiind o colecie de astfel de alocri cu
proprietatea c fiecare operaie este inclus cel mult o dat. Problema este de
a gsi un plan cu proprietile:
completitudine: planul conine toate operaiile mulimii O;
corectitudine: sunt satisfcute toate restriciile impuse prin ordinea de
execuie;
optimalitate: durata total a planului este minim.
Problema JSS

Problema JSS

JSS. Stabilirea asocierii permutare plan fezabil

JSS. Stabilirea asocierii permutare plan fezabil

Problema JSS

Problema JSS
Mecanismul de selecie

n cazul acestei probleme operatorii de selecie sunt independeni de


reprezentarea cromozomial, deci pot fi utilizai oricare dintre cei prezentai.
Operatorul de selecie a prinilor este de tip SUS cu distribuia de
probabilitate de selecie FPS standard.
Mecanismul de supravieuire: generaia urmtoare este construit pe baza
urmailor cu propagarea celui mai bun cromozom din generaia curent n
locul celui mai slab urma, dac progeniturile sunt sub acel cromozom din
punct de vedere al funciei de evaluare.

Populaia iniial i condiia terminal

Stabilirea populaiei iniiale este realizat aleatoriu


Condiia terminal este de tip prag: de exemplu, dac a fost atins un numr
de iteraii sau au fost evaluai un numr maxim de cromozomi.
Problema JSS. Exemplu de test

[2 1 4 3 2 1 3 4 1 2 3 4 4 1 2 3 2 1 3 4]
Problema JSS. Exemplu de test

Exemplu de asociere (permutare, programare fezabil)

permutare=(3 1 20 18 13 6 9 17 8 10 15 2 4 12 14 5 19 7 11 16)

Programarea asociat a operaiilor pe maini

Maina 1 Maina 2 Maina 3 Maina 4


Timp start op Timp stop Timp start op Timp stop Timp start op Timp stop Timp start op Timp stop

3 2 5 0 1 3 10 4 11 0 13 4
5 14 9 3 17 7 24 11 27 5 3 10
14 9 17 7 5 10 27 16 33 35 12 40
17 18 26 10 15 17 33 19 35 40 20 47
26 6 31 17 10 24 35 7 44 47 8 51
Problema JSS. Exemplu de test

La un apel >> GA_plan(300,0.8,0.02,80) pot fi obinute rezultatele:

Durata minim calculat: 33

Programarea operaiilor pe maini (cte 5 operaii pe fiecare main)


Maina 1 Maina 2 Maina 3 Maina 4
Timp start op Timp stop Timp start op Timp stop Timp start op Timp stop Timp start op Timp stop

0 9 3
0 5 3 8 7 17 0 13 4
3 6 8
3 1 6 17 11 20 11 3 16
9 2 11
6 17 10 20 4 21 17 8 21
11 14 15
10 10 17 24 19 26 21 12 26
15 18 24
17 15 24 26 16 32 26 20 33
Problema JSS. Exemplu de test
Problema optimizrii portofoliilor.
Rezolvare prin tehnica de tip
gradient.
Randamentul / riscul unui portofoliu

Randamentul / riscul unui portofoliu

Randamentul / riscul unui portofoliu

Definirea problemelor de tip risc minim

Definirea problemelor de tip risc minim

Definirea problemelor de tip randament maxim

Definirea problemelor de tip randament maxim

Transformarea n probleme de optimizare fr


constrngeri

Transformarea n probleme de optimizare fr


constrngeri

Rezolvarea RISCMIN1M prin tehnica celei mai


rapide descreteri

Rezolvarea RISCMIN1M prin tehnica celei mai


rapide descreteri

Rezolvarea RISCMIN1M prin tehnica celei mai


rapide descreteri

Rezolvarea RISCMIN1M prin tehnica celei mai


rapide descreteri. Exemplu

S1 S2 S3 S4 S5 S6 S7 S8 S9 S10

A1 1.2 1.3 1.4 1.5 1.1 1.2 1.1 1.0 1.0 1.1

A2 1.3 1.0 0.8 0.9 1.4 1.3 1.2 1.1 1.2 1.1

A3 0.9 1.1 1.0 1.1 1.1 1.3 1.2 1.1 1.0 1.1

A4 1.1 1.1 1.2 1.3 1.2 1.2 1.1 1.0 1.1 1.2

A5 0.8 0.75 0.65 0.75 0.8 0.9 1.0 1.1 1.1 1.2
Rezolvarea RISCMIN1M prin tehnica celei mai
rapide descreteri. Exemplu

Problema optimizrii portofoliilor.


Abordare GA.
Randamentul / riscul unui portofoliu

Randamentul / riscul unui portofoliu

Definirea problemei RISCMIN1M

Definirea problemei RISCMIN1M

Abordarea genetic a problemei RISCMIN1M

Abordarea genetic a problemei RISCMIN1M

Abordarea genetic a problemei RISCMIN1M


Generarea populaiei iniiale: aleator, cu respectarea restriciilor

SHORT SELLING admis


function [pop]=gen_ini_short_selling(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1); gata=0;
while(~gata)
for j=1:n-1 x(j)=unifrnd(-1,1); end;
if((sum(x)>=0)&&(sum(x)<=2))
pop(1:n-1,i)=x(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val; gata=1;
end;end;
end;
end
Abordarea genetic a problemei RISCMIN1M
SHORT SELLING exclus
function [pop]=gen_ini(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1);
for j=1:n-1
gata=0;
while(~gata)
r=unifrnd(0,1); if(sum(x)+r<=1) x(j)=r;gata=1;end;
end;
if(sum(x)==1) break; end;
end;
pop(1:n-1,i)=x(1:n-1); [val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val;
end;
end
Abordarea genetic a problemei RISCMIN1M

Abordarea genetic a problemei RISCMIN1M


function [popN]=crossover1(pop,pc,p,Q,rmed,alpha,B,ro,Rp);
[n,dim]=size(pop);
poz=[]; popN=zeros(n,dim);
for i=1:2:dim
ok=0;
while(~ok)
p1=unidrnd(dim-1); p2=p1;
while(p1>=p2)
p2=unidrnd(dim);
end;
if(~ismember([p1 p2],poz,'rows'))
poz=[poz;[p1 p2]]; ok=1;
end;
end;
% nu pot fi generate aceleasi perechi de parinti la treceri diferite
Abordarea genetic a problemei RISCMIN1M
x=pop(1:n-1,p1); y=pop(1:n-1,p2);
r=unifrnd(0,1);
if(r<=pc)
x1=p*x+(1-p)*y;
popN(1:n-1,i)=x1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x1(1:n-1));
popN(n,i)=-val;
y1=p*y+(1-p)*x;
popN(1:n-1,i+1)=y1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,y1(1:n-1));
popN(n,i+1)=-val;
else %recombinare asexuata
popN(1:n,i)=pop(1:n,p1); popN(1:n,i+1)=pop(1:n,p2);
end;
end;
end
Abordarea genetic a problemei RISCMIN1M

Abordarea genetic a problemei RISCMIN1M


function [popN]=mutatie(pop,pm,t,Q,rmed,alpha,B,ro,Rp,caz);
[n,dim]=size(pop); popN=pop;
for i=1:dim
efectuat=0;
if(caz==0)
% fara short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
fluaj=normrnd(0,t/3); a=pop(j,i)+fluaj;
efectuat=1;
if(a<0) a=0; end;
s=sum(popN(1:n-1,i));
if(s+fluaj>1) xx=s+fluaj-1; a=a-xx; end;
popN(j,i)=a;
end;
end;
Abordarea genetic a problemei RISCMIN1M
else
%cu short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
gata=0;
while(~gata)
fluaj=normrnd(0,t/3);
if(fluaj>0) a=min([pop(j,i)+fluaj 1]);
else a=max([pop(j,i)+fluaj -1]); end;
s=sum(popN(1:n-1,i));
if((s+fluaj>=0)&&(s+fluaj<=2)) popN(j,i)=a; efectuat=1; gata=1; end;
end; end; end;end;
if(efectuat)
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,popN(1:n-1,i)); popN(n,i)=-val;
end; end;
end
Abordarea genetic a problemei RISCMIN1M
Selecia prinilor este realizat pe baza algoritmului SUS, prin utilizarea
distribuiei de probabilitate de selecie de tip rang liniar, cu presiunea de
selecie s. La fiecare generaie sunt selectai dim prini.

Mecanismul de supravieuire este elistist standard


function [rezultat]=selectie_generatie_urmatoare(pop,popN);
[n,dim]=size(pop); fob=pop(n,1:dim);
fobN=popN(n,1:dim); rezultat=popN;
[max1,i]=max(fob); [max2,j]=max(fobN);
if(max1>max2)
[min1,k]=min(fobN);
rezultat(1:n,k)=pop(1:n,i);
end;
end

Condiia terminal: simulare pe un numr date de epoci


Exemplu - excluderea situaiei de tip short selling

S1 S2 S3 S4 S5 S6 S7 S8 S9 S10

A1 1.2 1.3 1.4 1.5 1.1 1.2 1.1 1.0 1.0 1.1

A2 1.3 1.0 0.8 0.9 1.4 1.3 1.2 1.1 1.2 1.1

A3 0.9 1.1 1.0 1.1 1.1 1.3 1.2 1.1 1.0 1.1

A4 1.1 1.1 1.2 1.3 1.2 1.2 1.1 1.0 1.1 1.2

A5 0.8 0.75 0.65 0.75 0.8 0.9 1.0 1.1 1.1 1.2
Exemplu - excluderea situaiei de tip short selling
Exemplu considerarea situaiei de tip short
selling

Exemplu considerarea situaiei de tip short


selling
ALGORITMI GENETICI

ALGORITMI GENETICI

Reprezinta tehnici de cautare si


optimizare avand ca punct de pornire o
metafora bilogica. Aceasta metafora
biologica este cea a mostenirii
genetice si evolutiei naturale

Tehnici de inteligen computaional n electronic, G. Oltean 1 /24


ALGORITMI GENETICI

Introducere
AG sunt metode de cautare stocastice care mimeaza
evolutia naturala biologica
Opereaza pe o populatie de solutii potentiale
aplicand principiul supravietuirii celui mai bun
(teoria evolutionista Darwin) pentru a produce
aproximari din ce in ce mai bune ale solutiei.
Fiecare individ al populatiilor se descrie printr-un
singur cromozom
Genotipul fiecarui individ contine un singur
cromozom
Tehnici de inteligen computaional n electronic, G. Oltean 2 /24
ALGORITMI GENETICI
Introducere cont.
In fiecare generatie este creat un nou set de indivizi
(aproximatori, cautatori) in urma selectiei celor mai
adecvati indivizi si combinarea acestora pentru a da
nastere la noi indivizi utilizand operatori
imprumutati din genetica
Are loc evolutia populatiei de indivizi care astfel
devin mai adecvati (potriviti) mediului decat
indivizii din care au fost creati, similar cu adaptarea
naturala.
Sunt modelate procese naturale:
selectie,
recombinare,
mutatie.
Tehnici de inteligen computaional n electronic, G. Oltean 3 /24
ALGORITMI GENETICI

Structura unui AG

Tehnici de inteligen computaional n electronic, G. Oltean 4 /24


ALGORITMI GENETICI

Reprezentarea variabilelor
Specifica AG este notiunea de cromozom, ce contine toate informatiile
necesare reprezentarii unui individ.
Un cromozom este compus din gene variabila a problemei de optimizat
Cromozom generic in care fiecare gena reprezinta o variabila:

Alfabetul utilizat in reprezentarea genelor poate fi teoretic orice alfabet,


cele mai utilizate fiind:
reprezentarea binara
reprezentarea reala specifica problemelor ingineresti

Tehnici de inteligen computaional n electronic, G. Oltean 5 /24


ALGORITMI GENETICI

Reprezentarea variabilelor - binar


0: 00000000
De exemplu in cazul unei
variabile cu valori in 127 : 01111111
domeniul (0, 255) se 128 : 10000000
utilizeaza un sir de 8 biti: 255 : 11111111
cea mai mica schimbare in valoarea functiei obiectiv (intre 127 si 128)
poate solicita schimbarea tuturor bitilor nu este de dorit !
solutie: codul Gray distanta Hamming intre valori adiacente este 1

o Provocari la reprezentarea in binar:


rezolutia
numere zecimale
numere negative
mai multe variabile
ramanerea in domeniul dinamic al fiecarei variabile

Tehnici de inteligen computaional n electronic, G. Oltean 6 /24


ALGORITMI GENETICI

Reprezentarea variabilelor valori reale


De exemplu in cazul a trei 124; 10,56; 235
variabile putem avea:
43; 0,45; + 47

avantaj major, in special pentru implementare: vector cu valori reale


pe parcursul evolutiei nu exista interactiune intre variabile diferite

o Provocari la reprezentarea cu valori reale:


mentinerea domenului dinamic al fiecarei variabile

Tehnici de inteligen computaional n electronic, G. Oltean 7 /24


ALGORITMI GENETICI

Generarea populatiei initiale


Uzual initializarea se realizeaza stocastic (aleator)
Uneori se introduc in populatia initila catva indivizi selectati euristic
(indivizi promitatori) si se completeaza cu indivizi alesi aleator
Populatia initiala ar trebui sa conste dintr-o varietate mare a indivizilor
Marimea populatiei: moderata 50 500 indivizi
Marimea populatiei tinde sa creasca liniar cu dimensiunea unui individ

Generare aleatoare cu distributie de probabilitate uniforma


POP_INIT=zeros(NumInd, NumVar);
for i=1:NumVar
RandVar=(HB(i)-LB(i)).*rand(NumInd,1)+LB(i);
POP_INIT(:,i)=RandVar;
end

Tehnici de inteligen computaional n electronic, G. Oltean 8 /24


ALGORITMI GENETICI

Functia de adecvare
Functia de adecvare (fitness) se determina in concordanta cu valoarea functiei
obiectiv definita pentru problema de optimizare de rezolvat.
Formularea problemei de optimizare este de tipul minimizeaza sau maximizeaza
(se poate trece de la una la cealalta utilizand semnul minus in fata functiei)
Exemplu de problema de minimizare
Gaseste x care minimizeaza F ( x ) pentru x D

Functia De Jong 2 variabile


x = [ x1 , x2 ];
F ( x1 , x2 ) = x12 + x22 ;
D = [10,10] x [10,10]

Tehnici de inteligen computaional n electronic, G. Oltean 9 /24


ALGORITMI GENETICI

Functia de adecvare - cont


Pentru probleme de optimizare multiobiectiv exista doua variante:
Optimizare multiobiectiv reala multimea solutiilor optime Pareto
Transformarea intr-o problema cu un singur obiectiv prin combinarea
functiilor obiectiv individuale intr-o singura functie cost rezulta o singura
solutie
N
Gaseste x care minimizeaza F ( x ) = wk f k ( x ) pentru x D
k =1

unde wk sunt ponderi ce arata preferinta relativa


pentru fiecare dintre functiile obiectiv f k ( x)
Ca functie de adecvare se poate utiliza direct functia obiectiv dar apare
un neajuns:
Dupa un anumit numar de generatii multe dintre valorile functiei de
adecvare vor fi foarte apropiate de valoarea optima, ceea ce conduce la
dificultati in diferentierea indivizilor in procesul de selectie (convergenta
prematura, pirderea diversitati populatiei)
Solutie: ordonarea indivizilor in functie de valoarile functiei obiectiv
Tehnici de inteligen computaional n electronic, G. Oltean 10 /24
ALGORITMI GENETICI

Atribuirea adecvarii - ordonare

Functie de adecvare proportionala


Functie de adecvare bazata pe rang (in urma ordonarii)
liniara
neliniara
Functie de adecvare multiobiectiv
ordonare Pareto (multi-ranking)
atingerea scopului
insumare ponderata

Tehnici de inteligen computaional n electronic, G. Oltean 11 /24


ALGORITMI GENETICI

Atribuirea adecvari bazata pe ordonare


Populatia este ordonata in concordanta cu valoarea functiei obiectiv
Valoarea adecvarii atribuita fiecarui individ depinde numai de pozitia sa in urma
ordonarii si nu de valoarea functiei obiectiv
Fiecare individ primeste o probabilitate de reproducere depinzand de propria
valoare a functiei obiectiv si de valorile functiilor obiectiv a celorlalti indivizi
Pos 1
Adecvare(Pos ) = 2 PS + 2(PS 1)
Nind 1
Pos - pozitia; Nind dimensiunea populatiei
PS - presiunea de selectie

Cel mai adecvat individ are Pos=Nind


si cea mai mare valoare a functiei de adecvare
Cel mai putin potrivit individ are Pos=1
si cea mai mica valoare a functiei de adecvare
Tehnici de inteligen computaional n electronic, G. Oltean 12 /24
ALGORITMI GENETICI

Atribuirea adecvari bazata pe ordonare cont.


Pos 1
Adecvare(Pos ) = 2 PS + 2(PS 1)
Nind 1
De regula
Pos - pozitia; Nind dimensiunea populatiei
PS [1, 2]
PS - presiunea de selectie

Cresterea presiunii de selectie focalizeaza cautarea asupra celor mai


performanti indivizi, exploatand cele mai bune solutii
Convergenta prematura a cautarii, pierdere a diversitatii genetice,
reducerea capacitatii de explorare a spatiului starilor
Reducerea presiunii de selectie poate duce la uniformizarea selectiei,
cautarea devenind putin eficienta
creste capacitatile de explorare, in procesul de selectie fiind inclusi
mai multi cromozomi
Trebuie mentinut un echilibru explorare - exploatare

Tehnici de inteligen computaional n electronic, G. Oltean 13 /24


ALGORITMI GENETICI

Atribuirea adecvari bazata pe ordonare


Adecvare = fitness value

Problema de minimizare

Tehnici de inteligen computaional n electronic, G. Oltean 14 /24


ALGORITMI GENETICI
Selectia
Determinarea populatiei intermediare ce contine parintii care vor fi
supusi operatorilor genetici de recombinare si mutatie - selectarea
indivizilor care vor produce urmasi.
Metode:
aleatoare in procesul de selectie sunt introduse elemente aleatoare, in
general prin utilizarea unor probabilitati de selectie care depind de
gradul de adecvare.
Elementele cu grad mare de adecvare au sanse mai mari de a fi
selectate, astfel ca numarul de urmasi ai acestora poate fi mai mare
decat al celor cu grad mai mic de adecvare
Selectia tip ruleta (esantionare stocastica cu inlocuire); selectie de
tip turneu, selectie proportionala.
deterministe indivizii cu grad mare de adecvare sunt intotdeauna
selectati in defavoarea celor cu grad mai mic de adecvare: selectia prin
trunchiere
Elitism: supravietuirea celui mai bun dintre indivizii generatiei pana la un
moment dat de exemplu prin amplasarea explicita a celui mai bun individ al
populatiei curente in populatia corespunzatoare generatiei urmatoare
Tehnici de inteligen computaional n electronic, G. Oltean 15 /24
ALGORITMI GENETICI

Selectia tip ruleta


Algoritm stocastic
Indivizii sunt atribuiti la segmente contigue a unei linii astfel ca
lungimea fiecarui segmant sa fie proportionala cu gradul sau de
adecvare.
Se genereaza un numar aleator si este selectat individul al carui
segment corespunde valorii aleatoare
Procesul se repeta pana cand este selectat numarul dorit de indivizi
Procesul este asemanator rotii de ruleta in care marimea fiecarei felii
este proportionala cu gradul de adecvare
Pentru fiecare individ se calculeaza o probabilitate de selectie:

Selection _ probability (i ) =
Fitness(i )
N
Fitness(i)
i =1
Tehnici de inteligen computaional n electronic, G. Oltean 16 /24
ALGORITMI GENETICI

Selectia tip ruleta


Algoritm stocastic
Indivizii sunt atribuiti la segmente contigue a unei linii astfel ca
lungimea fiecarui segmant sa fie proportionala cu gradul sau de
adecvare.
Se genereaza un numar aleator si este selectat individul al carui
segment corespunde valorii aleatoare
Procesul se repeta pana cand este selectat numarul dorit de indivizi
Procesul este asemanator rotii de ruleta in care marimea fiecarei felii
este proportionala cu gradul de adecvare
Pentru fiecare individ se calculeaza o probabilitate de selectie:

Selection _ probability (i ) =
Fitness(i )
N
Fitness(i)
i =1
Tehnici de inteligen computaional n electronic, G. Oltean 17 /24
ALGORITMI GENETICI

Selectia tip ruleta - cont

Au fost selectati indivizii:


6, 2, 9, 1, 5 si 3
Adica 1, 2, 3, 5, 6 si 9

Tehnici de inteligen computaional n electronic, G. Oltean 18 /24


ALGORITMI GENETICI

Recombinare
Produce noi indivizi (urmasi) prin combinarea informatiilor
continute de doi sau mai multi parinti
Combinarea valorilor variabilelor parintilor
Tipuri de recombinari:
discreta
pentru valori reale:
recombinare intermediara
recombinare liniara
recombinare liniara extinsa
pentru valori binare (incrucisare - crossover):
incrucisare cu un singur puncte / cu doua puncte / cu puncte multiple
incrucisare uniforma
etc.

Tehnici de inteligen computaional n electronic, G. Oltean 19 /24


ALGORITMI GENETICI

Recombinare intermediara
Var U
j = a Var + (1 a )Var , j = 1, 2, ..., Nvar
j j
P1
j j
P2

VarjU - reprezinta variabila j a urmasului


VarjP1 , VarjP 2 - reprezinta variabila j a primului, respectiv celui de-al doilea parinte
a - reprezinta factorul de scalare, generat aleator in intervalul
[-d, 1+d] uzual d=0,25

Aria posibila a
urmasilor

Tehnici de inteligen computaional n electronic, G. Oltean 20 /24


ALGORITMI GENETICI

Recombinare intermediara cont.


Var = a Var + (1 a )Var , j = 1, 2, ..., Nvar
U
j j j
P1
j j
P2

Din subpopulatia selectata pentru recombinare, cum sunt alesi


cei doi parinti care genereaza urmasi?
Tehnici de inteligen computaional n electronic, G. Oltean 21 /24
ALGORITMI GENETICI

Mutatia
Indivizii (urmasii) sunt modificati aleator
Mutatie
Pentru variabile reale
Pentru variabile binare

Mutatia pentru variabile reale

Valori create aleator sunt adaugate variabilelor reale


Trebuiesc definite:
Probabilitatea ca o variabila sa sufere o mutatie (rata de mutatie)
Este invers proportionala cu numarul variabilelor
O valoare optima se pare a fi 1/Nvar - o singura variabila a unui
individ surefa procesul de mutatie
Valoarea schimbarii variabilei prin procesul de mutatie
Tehnici de inteligen computaional n electronic, G. Oltean 22 /24
ALGORITMI GENETICI

Mutatia

Tehnici de inteligen computaional n electronic, G. Oltean 23 /24


ALGORITMI GENETICI

Reinsertia
Generarea noii populatii
Reinsertie globala
Numar urmasi > numar parinti: toti parintii sunt inlocuiti de urmasi
Numar urmasi < numar parinti: se inlocuiesc parinti in mod aleator
Numar urmasi < numar parinti: se inlocuiesc parintii cu cel mai scazut
grad de adecvare
Numar urmasi > numar parinti: se inlocuiesc toti parintii cu cei mai buni
urmasi
Reinsertie locala

Tehnici de inteligen computaional n electronic, G. Oltean 24 /24


Laboratorul 5 nvare Automata Algoritmi genetici

Algoritmi genetici

1.1 Generaliti

Algoritmii genetici fac parte din categoria algoritmilor de calcul evoluionist i sunt inspirai de teoria
lui Darwin asupra evoluiei. Idea calculului evoluionist a fost introdus n 1960 de I. Rechenberg n
lucrarea intitulat Evolution strategies.

Algoritmii genetici au fost aplicai cu succes ntr-o varietate de aplicaii care necesit optimizarea
global a soluiei. Algoritmii genetici se refer la un model introdus i analizat de J. Holland n 1975
i sunt proceduri adaptive care gsesc soluia problemei pe baza unui mecanism de selecie natural i
evoluie genetic. Algoritmul este des folosit pentru probleme n care gsirea soluiei optime nu este
uoar sau cel puin ineficient datorit caracteristicilor cutrii probabilistice. Algoritmii genetici
codific o soluie posibil la o problem specific ntr-o singur structur de date numit
cromozom i aplic operatori genetici la aceste structuri astfel nct s menin informaiile critice.

Algoritmii genetici pornesc de la o mulime iniial de soluii (de obicei aleas aleator) numit n
literatur populaie. n aceast populaie fiecare individ este numit cromozom i reprezint o
soluie posibil a problemei. n aproape toate cazurile cromozomul este un ir de simboluri (de obicei
reprezentat ca un ir de bii). Aceti cromozomi evolueaz pe durata iteraiilor succesive numite
generaii. n fiecare generaie, cromozomii sunt evaluai utiliznd unele msuri de potrivire (fitness).
Pentru crearea urmtoarei populaii cei mai buni cromozomi din generaia (populaia) curent sunt
selectai i noii cromozomi sunt formaii folosind unul dintre cei trei operatori genetici eseniali:
selecia, crossover i mutaia.

Selecia asigur c anumii cromozomi din generaia curent sunt copiai n acord cu valoarea funciei
lor de potrivire n noua generaie ceea ce nseamn c cromozomii cu o importan mare au o
probabilitate mare s contribuie la formarea noii generaii. Crossover este un alt operator genetic care
reprezint procesul prin care pe baza a doi cromozomi din populaia curent sunt formai doi
cromozomi pentru populaia urmtoare. Mutaia este procesul prin care un cromozom din populaia
curent este modificat i salvat n noua populaie.

1 of 6
Laboratorul 5 nvare Automata Algoritmi genetici

1.2 Codificarea cromozomilor i problema de optimizare

Algoritmii genetici au dou componente principale care depind de problema abordat: codificarea
problemei i funcia de evaluare (de fitness). Cromozomii care reprezint codificarea problemei
trebuie ntr-o oarecare msur s conin informaiile despre soluia problemei i depind foarte mult
de problem. Exist mai multe codificri, care au fost utilizate cu succes cum ar fi codificarea binar
(cromozomul este format din iruri de 0 sau 1 care reprezint binar soluia problemei) sau codificarea
prin valoare (cromozomul este format dintr-un ir de valori vector ntregi sau reale care pe ansamblu
reprezint soluia problemei). De exemplu un cromozom poate avea urmtoare form (reprezentat
prin valoare):

Cromozom 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 0.03


Cromozom 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 0.01

Funcia de evaluare numit i funcia de fitness (potrivire) este funcia care ne permite s dm o
ncredere la fiecare cromozom din populaie. Aceast funcie este de obicei funcia care reprezint
descrierea problemei.

Cnd trebuie s rezolvm o problem, de obicei ne uitm dup anumite soluii care sunt mai bune
dect alte soluii obinute anterior. Spaiul tuturor soluiilor fezabile este numit spaiul de cutare sau
spaiul strilor. Problemele abordate folosind algoritmi genetici sunt de obicei probleme pentru care
cutarea n spaiul soluiilor este o problem complicat sau chiar (NP-complet). De obicei nu tim
unde s ne uitm dup soluie i de unde s ncepem. Soluiile obinute folosind algoritmi genetici
sunt de obicei considerate ca soluii bune deoarece nu este ntotdeauna posibil s cunoatem care este
optimul real.

1.3 Metode de selecie a cromozomilor


Un alt pas important n algoritmul genetic este cum selectm prinii din populaia curent care vor
alctuii noua populaie. Aceasta poate fi fcut n mai multe feluri, dar idea de baz este de a selecta
cei mai buni prini (n sperana c acetia vor produce cei mai buni copii). n acest pas poate aprea
o problem: fcnd noua populaie doar pe baza noilor copii obinuii poate duce la pierderea celui
mai bun cromozom obinut pn la acel pas. De obicei aceast problem este rezolvat prin utilizarea
aa numitei metode de elitism. Adic cel puin un cromozom care produce cea mai bun soluie
conform cu funcia de fitness este copiat fr nici o modificare n noua populaie, astfel cea mai bun

2 of 6
Laboratorul 5 nvare Automata Algoritmi genetici

soluie obinut pn la acel moment s nu se pierde.


Ca si metode de selecie a cromozomilor propunem dou metode, fiecare dintre ele cu avantajele i
dezavantajele ei:

1.3.1 Metoda Roulette Wheel (ruleta)

n aceast metod fiecare individ din populaia curent este reprezentat printr-un spaiu proporional
cu valoarea funciei lui de evaluare. Prin eantionri aleatoare succesive din acest spaiu de
reprezentare a cromozomilor asigur c cei mai buni cromozomi au anse mai mari s fie selectai la
un anumit pas dect cei cu mai slabi. Aceast metod de selecie va avea probleme n momentul n
care valoarea funciei de evaluare difer foarte mult de la un cromozom la altul. De exemplu dac cel
mai bun cromozom are valoare funciei de evaluare mare (care va ocupa 90% din spaiul de
reprezentare) iar restul cromozomilor au valori ale funciilor de evaluare foarte mici aceast metod
va selecta de foarte multe ori cromozomul cel mai bun ducnd n final la degenerarea populaiei.

1.3.2 Selecia utiliznd metoda lui Gauss

Paii propui pentru aceast metod sunt:

1. Se alege un cromozom din populaie curent.


2. Utiliznd formula lui Gauss calculm probabilitatea ca acel cromozom s fie un cromozom
bun (Acela care obine valoarea funcie de evaluare maxim).

( M fitness ( ci )) 2

P(ci ) = e 2 2

unde P(.) reprezint probabilitatea calculat pentru cromozomul ci, M reprezint media, care aici
este valoarea maxim care poate fi obinut de ctre funcia de evaluare i care reprezint
dispersia sau panta cu care scade probabilitatea, iar fitness(ci) reprezint valoarea funciei de
evaluare pentru acel cromozom. De exemplu dac valoare maxim a funciei de evaluare este 1,
M va fi 1 iar pentru dispersie propunem o valoare ntre 0.3-0.5.

3. n al treilea pas aceast probabilitate calculat este comparat cu o probabilitate aleas aleator
n domeniul [0,1] (Probabilitatea lui Gauss ntoarce valori n acest domeniu).
4. Se verific dac probabilitatea lui Gauss calculat pentru cromozomul ales este mai mare
dect probabilitatea aleas aleator:

3 of 6
Laboratorul 5 nvare Automata Algoritmi genetici

a. Dac da cromozomul ales aleator se ia n considerare pentru a forma noua populaie


b. Dac nu se trece din nou la pasul 1

Aceast metod asigur posibilitatea lurii n considerare i a cromozomilor care nu au obinut valori
mari pentru funcia de evaluare (ofer anse mai mari de evoluie i cromozomilor mai slabi).

1.4 Operatorii genetici

1.4.1 Selecia

Pentru acest operator genetic de obicei se selecteaz doar un singur cromozom din populaia. Acest
cromozom este copiat n noua populaie fr nici o modificare. Aceast metod se mai folosete i
pentru a nu pierde cromozomul care a obinut cea mai bun valoare la funcia de evaluare (elitism) n
populaia curent. De asemenea, acest operator se aplic i pentru ali cromozomi selectai pe baza
metodelor de selecie propuse dar de obicei acest operator apare de un numr mic de ori la generarea
noii populaii.

1.4.2 Mutaia

Mutaia este un alt operator genetic important i reprezint un proces prin care cromozomul curent i
modific ocazional una sau mai multe valori ntr-un singur pas. Mutaia depinde de asemenea de
codificarea cromozomului. Mutaia alege doar un singur candidat i aleator modific unele valori ale
acestuia (modificnd doar semnul acelei valori sau uneori se modific i valoarea in cazul
reprezentrii prin valoare sau se schimb doar valoarea n cazul reprezentrii binare). Mutaia
funcioneaz prin alegerea aleatoare a numrului de valori care vor fi schimbate i a modului de
modificare a acestora. Prezentm un exemplu de modificare a 2 cromozomi primul avnd trei puncte
de modificare iar al doilea doar dou puncte de modificare. n funcie de dimensiunea cromozomului
se alege numrul de puncte pentru care se aplic mutaia.

Original 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 0.03


Original 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 0.01
Urma modificat 1 0.23 0 0 0.89 0 0.52 0 0 -1.0 0 -0.04 -0.03
Urma modificat 2 1.0 0 0.08 -0.67 -0.01 0 0 0 0 0.1 0 0.01

4 of 6
Laboratorul 5 nvare Automata Algoritmi genetici

1.4.3 Crossover

Crossover poate fi vzut ca crearea urmtoarei populaii folosind populaia curenta. Acest operator
depinde foarte mult de tipul de codificare al cromozomilor. Metoda de crossover este aplicat la o
pereche de prini alei folosind una din metodele prezentate. Cu o probabilitate pc prinii sunt
recombinai pentru a forma doi noi copii care vor fi introdui n noua populaie. De exemplu lum 2
prini din populaia curent, i mprim i ncrucim componentele astfel nct s producem 2 noi
candidai. Aceti candidai n urma ncrucirii trebuie s reprezenta o soluie posibil pentru
parametrii problemei noastre de optimizare de aceea de obicei se interschimb valori de pe aceleai
poziii. Utiliznd un punct de recombinare putem crea noii candidai prin combinarea primei pri din
primul printe cu a doua parte din al doilea printe. Dup recombinare se poate face aleator o mutaie
pe noii candidai obinuii. Dac dimensiunea cromozomului este mare se pot alege mai multe puncte
de recombinare. Prezentm un exemplu cu dou puncte de recombinare:

Cromozom 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 0.03


Cromozom 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 0.01
Urma1 -0.23 0 0 0.89 -0.01 0 0 0 0 0.01 0 0.03
Urma 2 0 0 0.08 -0.67 0 0.52 0 0 0 0 -0.04 0.01

1.5 Paii algoritmului genetic:

1. Se codific datele problemei ntr-un cromozom.


2. Se genereaz aleator o populaie. Se recomand ca populaia s aib un numr suficient de
mare de cromozomi (50 -100 cromozomi soluii aleatoare la problem). Fiecare valoare din
cromozom este iniializat cu o valoare aleatoare mic.
3. Pentru fiecare cromozom din populaie se calculeaz ncrederea acestuia folosind funcia de
evaluare (fitness).
4. Dac s-a gsit un cromozom pentru care se obine valoarea dorit se termin algoritmul iar
acel cromozom reprezint soluia problemei (n cazul n care se tie unde dorim s ajungem).
O alt condiie de terminare a algoritmului ar putea fi cazul n care dup un numr specificat
de pai nu s-au mai obinut mbuntiri (n cazul n care nu tim exact valoarea unde vom
ajunge).
5. Folosind rezultatele funciei de evaluare se genereaz urmtoare populaie astfel:
a. Se vor selecta primii cei mai buni 50% din cromozomi din prima populaie i se vor

5 of 6
Laboratorul 5 nvare Automata Algoritmi genetici

copia n noua populaie;


b. Pentru restul de 50% din noua populaie se vor folosii operatorii de mutaie i
crossover astfel:
i. Se selecteaz aleator folosind una din metodele prezentate unul sau doi
cromozomi din prima jumtate a noii populaii.
ii. Dac s-a selectat doar un cromozom se aplic acestuia operatorul de mutaie.
iii. Dac s-au selectat 2 cromozomi se aplic operatorul de crossover.
6. Se sare la pasul 3.

Problema. S se implementeze un algoritm genetic pentru calcul minimului urmtoarei funcii:

f ( x) = sinh (cos( x) * cos( x) + 1), pentru x [0,5] , x numr real

Obs.

Pentru aceast problem un cromozom va fi format din reprezentarea binar a numrului x.


Se va folosi o populaie de 100 de cromozomi.
Funcia de fitness pentru aceast problem va fi de fapt funcia f(x) prezentat mai sus.
Pentru a respecta teoria evoluiei se recomand ca operatorii de mutaie i selecie s se
foloseasc de un numr considerabil redus de ori n comparaie cu operatorul crossover pentru
generarea unei noi populaii.

Exemplu de algoritm genetic: http://www.obitko.com/tutorials/genetic-algorithms/example-function-


minimum.php

6 of 6
1. Fie funcia ( ) ( ) { } , care trebuie maximizat (un genotip este un vector
binar cu 7 componente).
a. Scriei o funcie MATLAB pentru generarea aleatoare a unei populaii (pop) cu dimensiunea dim; calitatea
fiecrui individ este memorat la sfritul fiecrei reprezentri cromozomiale; (1 punct)
b. Pentru o probabilitate de recombinare dat (pc), scriei o funcie de recombinare utiliznd operatorul de
ncruciare multi-punct pentru 2 puncte de ncruciare care genereaz o nou populaie (popc), pe baza
populaiei pop. Populaia rezultat are tot dim indivizi (este utilizat i recombinarea asexuat i calitatea fiecrui
individ este memorat la sfritul fiecrei reprezentri cromozomiale) (2 puncte)

2. Fie { } { } ( ) ( ) funcia obiectiv a unei


probleme de maxim. Cromozomii sunt reprezentai prin iruri ( ) din mulimea { }
{ }
a. Scriei o funcie MATLAB pentru generarea aleatoare a unei populaii (pop) cu dimensiunea dim; calitatea
fiecrui individ este memorat la sfritul fiecrei reprezentri cromozomiale (1 punct);
b. Pentru o probabilitate de mutaie dat (pm) scriei o funcie mutaie pe baza operatorului resetare
aleatoare care genereaz o nou populaie (popm) pornind de la populaia pop (calitatea fiecrui individ este
memorat la sfritul fiecrei reprezentri cromozomiale). (2 puncte)

3. Fie problema rucsacului de tip 0-1, enunat n cele ce urmeaz. Fiind date m obiecte, fiecare avnd
asociate o valoare i respectiv un cost de selecie, trebuie determinat un set de obiecte cu proprietatea c este de
valoare maxim (unde valoarea unei mulimi de obiecte este definit ca suma valorilor obiectelor ce o compun) i
costul (definit ca suma costurilor obiectelor setului) este sub un prag dat, Cmax. O soluie posibil este dat de un
set de obiecte selectate astfel nct costul lui este inferior valorii Cmax. Dac val este vectorul valorilor asociate
celor m obiecte i cost este vectorul costurilor, reprezentarea unui candidat la soluie poate fi realizat printr-un
vector (v) de m elemente, unde
() {

() ()

Funcia de evaluare asociat lui v calculeaz valoarea asociat seleciei reprezentate de v:

() ()

Fiecare genotip v corespunde unui numr { } i v este reprezentarea binar a lui R-1 i cu
proprietatea c nu este depit pragul Cmax.
a. Scriei o funcie MATLAB pentru generarea aleatoare a unei populaii (pop) cu dimensiunea dim; calitatea
fiecrui individ este memorat la sfritul fiecrei reprezentri cromozomiale; costurile i valorile de selecie ale
fiecrui obiect sunt memorate ntr-un fiier text, creat naintea generrii populaiei (1 punct)
b. Scriei o funcie MATLAB care selecteaz o populaie de prini din populaia generat (pop) prin
aplicarea seleciei de tip rulet cu distribuia de probabilitate exponenial, dat prin ( )
( )
unde este un parametru care asigur faptul c ( ) (pop trebuie sortat cresctor n
funcie de meritul indivizilor naintea aplicrii procedurii de selecie). (2 puncte)
Implementarea utiliznd un vector care mentine indicia ciclurilor la nivel de
gen (poziie)
function [x2,y2]=cx_copil(x1,y1)
%vectorul c pastreaza indexul ciclului in care se afla fiecare gena
[~,m]=size(x1);
[c,nrcicluri]=cicluri(x1,y1,m);
disp('Indecsii ciclurilor:');
disp(c);
x2=x1;y2=y1;
for t=2:2:nrcicluri
for i=1:m
if(c(i)==t)
x2(i)=y1(i);
y2(i)=x1(i);
end;
end;
end;
disp('Progeniturile:');
disp(x2);
disp(y2);
end

function [c1,index]=cicluri(x1,y1,m)
c1=zeros(1,m);
continua=1;i=1;index=1;
while(continua)
a=y1(i);
c1(i)=index;
while(x1(i)~=a)
[~,j]=ismember(a,x1);
c1(j)=index;
a=y1(j);
end;
continua=0;
for k=1:m
if(c1(k)==0)
i=k;index=index+1;
continua=1;
break;
end;
end;
end;
end

Exemplu:

x1=[ 4 8 13 16 2 19 10 9 7 11 17 18 12 5 20 3 6 15 1 14]

y1=[ 2 5 19 4 17 11 20 9 3 1 16 18 8 6 12 13 10 7 15 14]
>> cx_copil(x1,y1);

Indecsii ciclurilor:

1 2 3 1 1 3 2 4 3 3 1 5 2 2 2 3 2 3 3 6

Progeniturile:

4 5 13 16 2 19 20 9 7 11 17 18 8 6 12 3 10 15 1 14

2 8 19 4 17 11 10 9 3 1 16 18 12 5 20 13 6 7 15 14
Implementarea utiliznd un vector care mentine indicia ciclurilor la nivel de
alel (valoare)
function [x2,y2]=cx_copil_alela(x1,y1)
%vectorul c pastreaza indexul ciclului in care se afla fiecare alela
[~,m]=size(x1);
[c,nrcicluri]=cicluri(x1,y1,m);
disp('Indecsii ciclurilor:');
disp(c);
x2=x1;y2=y1;
for t=2:2:nrcicluri
for i=1:m
if(c(i)==t)
[~,j]=ismember(i,x1);
x2(j)=y1(j);
y2(j)=x1(j);
end;
end;
end;
disp('Progeniturile:');
disp(x2);
disp(y2);
end

function [c1,index]=cicluri(x1,y1,m)
c1=zeros(1,m);
gata=0;i=1;index=1;
while(~gata)
a1=x1(i);
c1(a1)=index;
a=y1(i);
while(y1(i)~=a1)
a=y1(i);
[~,j]=ismember(a,x1);
c1(a)=index;
i=j;
end;
gata=1;
for k=1:m
if(c1(x1(k))==0)
i=k;index=index+1;
gata=0;
break;
end;
end;
end;
end

Exemplu (acelai ca cel din primul caz):

x1=[ 4 8 13 16 2 19 10 9 7 11 17 18 12 5 20 3 6 15 1 14]

y1=[ 2 5 19 4 17 11 20 9 3 1 16 18 8 6 12 13 10 7 15 14]
>> cx_copil_alela(x1,y1);

Indecsii ciclurilor:

3 1 3 1 2 2 3 2 4 2 3 2 3 6 3 1 1 5 3 2

Progeniturile:

4 5 13 16 2 19 20 9 7 11 17 18 8 6 12 3 10 15 1 14

2 8 19 4 17 11 10 9 3 1 16 18 12 5 20 13 6 7 15 14

Sunt obinute aceleai progenituri, difer doar modul de interpretare ai indicilor din cicluri
4. Optimizarea portofoliilor de aciuni. Abordri clasice i de natur
genetic

4.1. Randamentul / riscul unui portofoliu. Definirea problemelor de optimizare

n cele ce urmeaz este prezentat calculul randamentului ateptat, respectiv al


riscului asociat unui portofoliu de aciuni. (Bartholomeu-Biggs, 2005)
Considerm disponibil istoricul randamentelor procentuale pe m perioade de timp
pentru fiecare aciune dintr-un grup de n aciuni i notm cu
, randamentul aciunii i n perioada j;
, fraciunea investit n aciunea i, astfel nct
, variana aciunii i;
, covariana dintre aciunile i i k.
Portofoliul este definit de fraciunile de investiii .

Randamentul mediu al fiecrei aciuni , notat cu , este calculat prin

Randamentul ateptat al portofoliului este dat prin

Variana fiecrei aciuni , respectiv covariana dintre oricare dou


aciuni , sunt calculate prin

Variana portofoliului este definit prin

i este utilizat ca msur a riscului portofoliului.

Funciile randament, respectiv risc, definite prin relaiile (4.2), respectiv (4.5) sunt
reprezentate matriceal prin
unde

De asemenea, n reprezentare matriceal relaia

devine

unde este vectorul unitar n-dimensional.

Problema primar de minimizare a riscului, RISCMIN0, este formulat prin


(Bartholomeu-Biggs, 2005)
RISCMIN0:
Minimizeaz
cu restricia
.

Observaie. RISCMIN0 poate fi modificat prin eliminarea restriciei i a variabilei


.

n multe situaii practice, investitorul este interesat att n minimizarea riscului, ct


i n optimizarea randamentului portofoliului ales. n general, un portofoliu este considerat
optim dac el furnizeaz cel mai mare randament cu cel mai mic risc.

O modalitate de a determina un astfel de portofoliu este prin considerarea funciei


de tip compozit

unde constanta pozitiv controleaz raportul dintre randament i risc. Cu aceste


modificari se obine problema de optimizare RISC-RANDAMENT1, (Bartholomeu-Biggs,
2005)
RISC-RANDAMENT1:
Minimizeaz
cu restricia
.
.

Observaie. RISC-RANDAMENT1 poate fi modificat prin eliminarea restriciei i


a variabilei .

O variant alternativ pentru a determina portofoliul optim este de a fixa o valoare


int pentru randament, de exemplu de Rp procente, i de a considera problema de
optimizare RISCMIN1, (Bartholomeu-Biggs, 2005)
RISCMIN1:
Minimizeaz
cu restriciile
.

sau, alternativ, problema modificat RISCMIN1M,


RISCMIN1M:
Minimizeaz

cu restricia
.
Constanta pozitiv semnific raportul dintre randament i risc.

O problem des ntlnit n practic este aceea n care este selectat un nivel
acceptabil de risc, , i este maximizat randamentul ateptat. Modelul matematic revine la
problema de minimizare cu constrngeri RANDAMENTMAX1:
RANDAMENTMAX1:
Minimizeaz
cu restriciile

sau, alternativ, problema modificat RANDAMENTMAX1M, (Bartholomeu-Biggs, 2005):


RANDAMENTMAX1M:
Minimizeaz

cu restricia
.

Constanta pozitiv semnific relaia existent ntre randamentul i riscul


portofoliului.

Observaie. RISCMIN1M i respectiv RANDAMENTMAX1M pot fi modificate


prin eliminarea restriciei i a variabilei .

4.2. Optimizarea portofoliilor cu n aciuni

Definirea problemelor de optimizarea portofoliilor cu n aciuni n termenii


problemelor de optimizare fr constrngeri

Prin utilizarea relaiei (4.8), variabila este poate fi eliminat,

i funciile randament i risc sunt exprimate exclusiv n termenii . n plus,


restricia (4.8) poate fi eliminat din problemele de optim n care apare.
Fie , vector de dimensiune n-1, vector n-
dimensional, cu unicul element nenul i B matrice de dimensiune , cu
primele linii liniile corespunztoare matricei unitate i ultima linie format cu
elementul -1,

Cu aceste notaii, obinem

Similar celor prezentate n n 4.1, procedura MINRISC0 definete problema


primar de minimizare a riscului n cazul unui portofoliu definit de fraciunile de investiii
. Prin utilizarea relaiei (4.13), rezult (Bartholomeu-Biggs, 2005):
MINRISC0: (4.14)
Minimizeaz

Relaia (4.14) definete o problem de optimizare fr constrngeri, n n-1 variabile.


Dac este o soluie a problemei (4.14), atunci portofoliul de risc
minim, notat , este definit prin

O serie de metode care rezolv problema minimizrii unei funcii de mai multe
variabile utilizeaz vectorul derivatelor pariale de ordinul I, numit gradient. Dac V este
funcie de m variabile, atunci gradientul lui V, notat sau , este definit prin

.
Gradientul funciei obiectiv din relaia (4.14) este
(4.16) V 2BT Q 2BT QBx 2BT Q Bx

Pentru rezolvarea problemelor de optim, unele metode necesit i calculul


derivatelor pariale de ordinul II, adic a matricei Hessian. Dac V este funcie de m
variabile, atunci matricea Hessian, notat 2V sau Vxx , este definit prin
2V
2V
x x 1i m
i j 1 j m
Hessianul funciei obiectiv din relaia (4.14) este
(4.17) 2V 2BT QB

Problema RISCMIN1M, definit n n 4.1, poate fi exprimat n termenii unei


probleme de optimizare fr restricii prin utilizarea relaiei (4.13), astfel (Bartholomeu-
Biggs, 2005):
RISCMIN1M (4.18)
Minimizeaz

Pentru calculul vectorului gradient i al matricei Hessian pentru funcia F definit n


(4.18), considerm reprezentarea

unde

Sunt obinute relaiile

unde

Similar, este obinut matricea Hessian, prin


Fxx Vxx 2R x R x
T

unde
Vxx 2BT QB i
R x R x este o matrice cu rangul 1, pentru orice i,j, 1 i, j n 1 ,
T


R x R x i , j
T R R
xi x j

Problema RANDAMENTMAX1 este reformulat n termenii


RANDAMENTMAX1M (vezi n 4.1) i, prin utilizarea relaiei (4.13) rezult problema de
optimizare fr restricii (Bartholomeu-Biggs, 2005):
RANDAMENTMAX1M (4.19)
Minimizeaz

Expresiile care definesc gradientul i Hessianul funciei definite n (4.19) sunt


obinute prin reprezentarea
F R V Vac ,
2

unde
R r T Bx
V Bx Q Bx i
T


.
Vacc 2
Rezult
Fx BT r 2 V Va Vx

Fxx 2 Vx Vx V Va Vxx
T

unde Vx Vx este matrice de rangul I; pentru orice i,j, 1 i, j n 1 ,
T


Vx Vx i , j
T V V
xi x j
.

Observaii.
1. n cadrul problemelor enuate n acesast seciune, nu este impus codiia ca
fiecare s fie pozitiv. O valoare negativ a unei fraciuni de investiii are
semnificaia urmtoare: strategia optim de investiie implic vnzarea de tip short
selling, adic vnzarea unor active pe care investitorul nu le deine, prin mprumutul
acestora de la broker cu intenia de a le returna ulterior. Aceast strategie este
efectiv doar n situaia n care preul aciunilor este n scdere, deoarece
achiziionarea lor la un moment de timp ulterior investiiei curente implic un cost
mai mic dect preul obinut prin vnzarea activelor mprumutate la momentul
efecturii investiiei curente.
2. n general, soluia unei probleme de risc minim nu implic situaia de tip
short selling dac randamentul dorit este ales corespunztor, adic n
conformitate cu randamentele medii calculate pentru activele care vor fi
incluse n portofoliu.

4.3. Metode clasice de optimizare a funciilor de n variabile

Condiii de optimalitate
Fie F x1 , x2 ,..., xn funcie de variabile, continu i difereniabil. Caracterizarea
punctului de minim atins de F este realizat n termenii vectorului gradient i a matricei
Hessian
T
F F F
F , ,..., , notat n continuare cu g sau cu Fx , respectiv
x1 x 2 x n
F
2
2F , matrice notat n continuare cu G sau Fxx
x x 1i n
i j 1 j n

Observaie. n cazul n care F este dublu difereniabil, matricea Hessian G este


simetric.

Definiia 4.1. Matricea simetric A este pozitiv definit dac i numai dac, pentru
orice x 0 , are loc relaia,
xT Ax 0 .

Definiia 4.2.Fie F x, x x1 , x2 ,..., xn funcie de n variabile i x * cu proprietile



(4.20) g x * 0 i G x * este pozitiv definit.
Atunci x * este punct de minim local al lui F.
Dac o funcie F are mai multe minime locale (puncte ce ndeplinesc (4.20)), atunci
minimul global este acel minim local pentru care este obinut cea mai mic valoare a lui F.

Observaie. Problema RISCMIN0 poate fi rezolvat prin abordare analitic.


Deoarece funcia gradient este
V 2BT Q 2BT QBx ,
valoarea optimal a lui x este obinut prin rezolvarea sistemului linia
BT QBx BT Q

Metode directe de cutare a optimului


n general, n problemele de optimizare a portofoliilor, vectorul gradient i matricea
Hessian pot fi n general calculate, funciile obiectiv fiind n general dublu difereniabile.
Pentru situaiile de acest gen sunt folosite metode de tip gradient. n cazul n care
optimizarea nu poate fi realizat prin utilizarea relaiilor (4.20), o variant de rezolvare a
problemelor de optimizare o constituie metodele de cutare direct, bazate exclusiv pe
analizarea valorile funciei obiectiv.
Cutarea direct a valorii minime a unei funcii obiectiv F este realizat prin
evaluarea lui F n punctele unei reele de valori posibile ale vectorului variabil a
funciei. Dei metodele de acest tip nu sunt n general eficiente, exist situaii n care
valoarea minim poate fi aproximat prin considerarea unei variante a lui F discretizat pe
un set de puncte aleatoare i utilizarea unor argumente de natur statistic pentru
estimarea probabilitii de determinare a minimului ntr-n anumit numr de ncercri.

Cutarea univariant
Metoda implic utilizarea unei metode directe de cutare (ca, de exemplu, metoda
biseciei) pentru generarea unei secvene de tip minimizarea unidimensional a lui F astfel
nct, la fiecare etap i, 1 i n , F este minimizat n raport cu x i . Cu alte cuvinte, punctul
optim este cutat de-a lungul direciilor date de fiecare coordonat pe rnd. Dei uneori
metoda funcioneaz eficient, ea nu poate fi general aplicabil deoarece nu este
convergent.

Metoda Hooke i Jeeves


Tehnica Hooke&Jeeves utilizeaz metoda cutrii pe o singura ax pe baza
urmtorului raionament. Dac x , ~x sunt estimri ale punctelor de minim ale lui F x la
momentul iniial, respectiv la momentul final al ciclului de cutare, atunci minimizarea
unidimensional a alui F este realizat pe direcia x ~
x printr-o estimare de tipul
(4.21) x x x x ,
~ ~
unde este o constant scalar. Metoda continu prin efectuarea ciclurilor de cutare
univariant urmate de estimri de forma (4.21).

Metode de aproximare a derivatelor


Una dintre cele mai uzuale metode de minimizarea a lui F x exclusiv pe baza
valorilor funciei F este prin adaptarea metodelor de tip gradient la estimrile de tip
diferen finit ale derivatelor funciei. De exemplu, pentru derivatele de ordinul I poate fi
utilizat estimarea diferen centrat
F x1 , x2 ,..., xn F x1 h, x2 ,..., xn F x1 h, x2 ,..., xn

x1 2h
Abordrile care implic estimarea derivatelor funciei obiectiv sunt dezvoltate pe
baza presupunerii c F este difereniabil. n plus, metodele din aceast clas nu sunt n
general aplicate problemelor pentru care derivatele funciei F nu sunt funcii continue.

Metode de tip gradient


Aa cum a fost menionat, n problemele de optimizare a portofoliilor funciile
obiectiv sunt dublu difereniabile i relaiile (4.20) pot fi verificate. Optimizarea funciilor
n n variabile i care ndeplinesc proprietile din definiia 4.2 poate fi realizat prin metode
de tip gradient, respectiv de tip Newton. Sunt prezentate n continuare metoda celei mai
rapide (abrupte) descreteri i metoda Newton. Ambele metode presupun construcia cte
unui ir care, n anumite condiii de regularitate impuse funciei obiectiv, converge ctre
soluia optimal a problemei de optimizare.

Metoda celei mai rapide descreteri


Tehnica celei mai rapide descreteri este justificat geometric astfel. Presupunem c
este funcia de minimizat i este punctul construit la momentul curent. Un punct
mai bun (n sensul c valoare funciei obiectiv descrete n acel punct fa de punctul
curent) poate fi determinat prin deplasarea pe direcia de cutare care determin
descreterea cea mai rapid a lui F, adic pe direcia gradientului negativ.

Metoda celei mai rapide descreteri de tip perfect line search este descris astfel
(Bartholomeu-Biggs, 2005):

Selecteaz , estimare iniiale a punctului de minim al lui i


Repet pentru

calculeaz care minimizeaz


aplic regula de actualizare

Pn cnd

Observaie. O serie de metode de optimizare utilizeaz n construcia irului tipare


similare celui prezentat n algoritmul de mai sus; fiecare iteraie const n dou etape:
alegerea direciei de cutare (calculul lui ) i respectiv procedura de determinare a
demarcaiei (line search) n scopul stabilirii unei valori adecvate a pasului .

Definiia 4.3. Procedura de determinare a demarcaiei s * care minimizeaz


s F x k sp k se numete perfect sau exact.

Definiia 4.4. O procedur de determinare a demarcaiei prin care este acceptat


orice valoare a pasului s care ndeplinete F x k sp k F x k 0 i este mrginit se
numete inexact sau slab.

n continuare este prezentat teorema de convergen a metodei.

Propoziia 4.1. Fie o funcie dublu difereniabil, cu derivatele continue i


mrginit inferior i pentru care este ndeplinit proprietatea
pentru orice vector z, unde M>0 este constant scalar. Atunci irul definit prin

are proprietatea
cnd

Metoda Newton
Tehnica celei mai abrupte descreteri are inconvenientul c nu folosete informaia
dat de cea de-a doua derivat. Pot fi obinute metode mai eficiente pe baza proprietii
funciilor ptratice, Qx , de a avea matricea Hessian constant. Fie
(4.22) Qx x T Ax b T x c .
1
2
Gradientul este
Qx Ax b .
Punctul staionar rezult prin rezolvarea sistemului de ecuaii liniare
(4.23) Ax b .

Soluia sistemului (4.23) este punct de minim dac matricea Hessian, A, este pozitiv
definit. Dac A este negativ definit, soluia sistemului (4.23) este punct de maxim. Dac
A este oarecare, soluia lui (4.23) este punct a. Dac A este nesingular, atunci (4.22) are
un unic punct staionar.
Principiile expuse mai sus pot fi aplicate pentru minimizarea unei funcii generale,
F x . Fie x k estimaia punctului de minim al lui F la momentul curent i g k F x k ,
G k 2 F x k . Utiliznd dezvoltarea Taylor n jurul lui x k obinem


(4.24) F x k p Qp F x k p T g k p T G k p i
1
2
(4.25) F x k p Qp g k G k p
Rezult c, dac G k este pozitiv definit,
(4.26) p G k g k
T

Este obinut astfel urmtorul algoritm:

Metoda Newton
Selecteaz x 0 , estimare iniiale a punctului de minim al lui F x i 0
Repet pentru k 0,1,2,...
g k F x k , G k 2 F x k
Dac G k este pozitiv definit, atunci calculeaz p k G k g k
T

Altfel p k g k
calculeaz s * astfel nct F x k sp k ndeplinete condiiile Wolfe 2 i 3
(Bartholomeu-Biggs, 2005)
aplic regula de actualizare x k 1 x k s * p k
Pn cnd F x k 1
Observaie. n cazul problemei RISCMIN1M, matricea Hessian corespunztoare
funciei obiectiv este

deci este matrice constant (nu depinde de x). G este pozitiv definit i simetric. Constanta
M din propoziia 4.1 (convergena metodei celei mai rapide descreteri) poate fi setat
astfel.

Deoarece G este pozitiv definit i simetric, rezult c este diagonalizabil i exist


matrice cu coloane un set de vectori proprii ortogonali,
corespunztori valorilor proprii ale matricei G
astfel nct

Rezult c problema revine la calculul constantei M astfel nct

Pentru .

n continuare obinem

Deoarece dac

Rezult c

i M poate fi setat pe valoarea (valoarea proprie dominant a matricei constante G)

Exemplul 1
n tabelul 4.1 este prezentat istoricul randamentelor corespunztoare aciunilor A1,
A2, A3, A4, A5 pe o perioad de 10 sptmni. (Bartholomeu-Biggs, 2005)

S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
A1 1.2 1.3 1.4 1.5 1.1 1.2 1.1 1.0 1.0 1.1
A2 1.3 1.0 0.8 0.9 1.4 1.3 1.2 1.1 1.2 1.1
A3 0.9 1.1 1.0 1.1 1.1 1.3 1.2 1.1 1.0 1.1
A4 1.1 1.1 1.2 1.3 1.2 1.2 1.1 1.0 1.1 1.2
A5 0.8 0.75 0.65 0.75 0.8 0.9 1.0 1.1 1.1 1.2

Tabelul 4.1

Problema de rezolvat: determinarea portofoliului de risc minim pentru un


randament dat .
Randamentul mediu al portofoliului rezult

i matricea de covarian este

Problema este modelat n termenii RISCMIN1M:


Minimizeaz

Prin aplicarea metodelor de tip gradient, respectiv Newton prezentate, pentru


eroarea permis , rezult
portofoliul
riscul minim
randamentul , randamentul dat.

Exemplul 2 n cadrul acestui exemplu au fost folosite date reale, selectate de pe


Bursa de Valori din Londra, pe 20 de perioade de timp cuprinse ntre anii 2002 i 2003.
Vectorului medie a randamentelor i a matricei de covarian sunt disponibile n
(Bartholomeu-Biggs, 2005) i au urmtoarele valori,
Observaie. n cazurile reale, istoricul evoluiei randamentelor aciunilor poate
nregistra i valori negative i, de asemenea, matricea de covarian poate avea valori mult
mai mari dect n cazul datelor generate artificial (cum este cazul exemplului 1).
Problema este modelat n termenii RISCMIN1M.
Prin aplicarea metodelor de tip gradient, respectiv Newton prezentate, pentru
eroarea permis , rezult
portofoliul
riscul minim
randamentul , randamentul dat.

Observaie. Pentru aceeai eroarea permis, 10 5 n , testele indic faptul c


numrul de iteraii ale metodei celei mai rapide descreteri este de ordinul sutelor (n
implementarea cu s M 1 constant este de ordinul miilor), n timp ce metoda Newton
necesit cteva zeci de iteraii.

Urmtoarea funcie MATLAB implementeaz o metod de tip gradient n care


1
s M constant. Este tratat separat cazul n care este disponibil istoricul aciunilor i
cazul n care sunt cunoscute randamentul mediu i matricea de covarian (similar
exemplului 2).
function [y]=GRAD_riscmin1(nume,ro,Rp,eps,NM,caz);
% GRAD_riscmin1('portofoliu1.txt',100,1.15,10^-5*sqrt(5),50000,0);
% GRAD_riscmin1('',10,0.25,10^-5*sqrt(5),10000,1);
% nume=numele fisierului din care sunt prelute datele
% ro=din functia obiectiv
% Rp=randamentul prognozat
% NM=numarul de iteratii
% eps = eroarea maxima admisa
% caz=0 daca preiau date din fisier, altfel este 1

if(caz==0)
R=citeste_date(nume);
[n,m]=size(R);
[Q,rmed,alpha,B]=parametri(R);
else
n=5;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
rmed=[-0.028, 0.366, 0.231, -0.24, 0.535]';
Q=[1.0256 -0.4340 0.0202 -0.1968 -0.0311;
-0.4340 1.1049 -0.0783 0.2347 -0.1776;
0.0202 -0.0783 0.4328 -0.1236 -0.1895;
-0.1968 0.2347 -0.1236 8.0762 1.0093;
-0.0311 -0.1776 -0.1895 1.0093 2.9007];
end;
% calcul matrice Hessian
H=2*B.'*Q*B+2*(ro/(Rp^2))*(B.'*rmed)*(B.'*rmed).';
%disp(H);
[V,D]=eig(H);
% valoarea proprie maxima a matricei Hessian pentru stabilirea
%valorii cu care este actualizat xk din teorema de convergenta
Maxim=max(max(D));
rata=1/(Maxim);
k=1;er=1;
x0=ones(n-1,1);
x0=x0/(n-1);
while((k<=NM)&&(er>=eps))
val=fgrad(Q,rmed,alpha,B,ro,Rp,x0);
er=norm(val);
x=x0-rata*val;
x0=x;
k=k+1;
end;
disp(['Eroarea: ' num2str(er)]);
[vall,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x);
y=alpha+B*x;
disp('Portofoliul calculat:');disp(y);
disp(['Riscul minim calculat: ' num2str(V)]);
disp(['Randamentul calculat: ' num2str(rmed.'*y)]);
disp(['Randamentul predictionat: ' num2str(Rp)]);
disp(['Numarul de iteratii: ' num2str(k)]);
end

n continuare sunt prezentate evoluiile algoritmului de tip gradient pentru fiecare


din cele dou exemple considerate.

La apelul GRAD_riscmin1('portofoliu1.txt',100,1.15,10^-5*sqrt(5),50000,0);

La apelul GRAD_riscmin1('',10,0.25,10^-5*sqrt(5),10000,1);
4.4. Abordarea GA pentru problema optimizrii portofoliilor de n aciuni

Problema pe care ne propunem s o rezolvm este determinarea portofoliului de risc


minim pentru un randament prognozat . Problema este modelat n termenii
RISCMIN1M, transformat n problema de maxim.

Maximizeaz
.

Pentru comparaie vor fi folosite datele din tabelul 4.1 i cele din exemplul 2.

Vor fi tratate att situaiile de tip short selling, ct i situaiile n care acest
lucru este evitat. Aa cum am menionat n 4.2, dac randamentul prognozat este ales
n conformitate cu randamentele medii calculate , n general soluia unei
probleme de risc minim nu implic situaia de tip short selling pentru activele care vor fi
incluse n portofoliu.

La fiecare moment de timp, populaia este constituit din dim indivizi. Fiecrui
fenotip y (portofoliu) i corespunde un cromozom definit de un ir cu n-1 numere reale,
nsoit de informaia calitatea evaluat n termenii funciei obiectiv. Din punct de vedere al
reprezentrii, este utilizat un vector x, cu

unde y este un portofoliu:


pentru este fraciunea investit n aciunea i,
astfel nct i
i este valoarea funciei obiectiv asociat vectorului (calitatea n termenii
funciei de evaluare).
Generarea populaiei iniiale este realizat aleator. Dac este aleas varianta n care
nu este admis o situaie de tip short selling, sunt impuse constrngerile fiecrui individ
x:

1. n caz contrar, fiecare alel este generat aleator uniform ntre -1 i 1.


Pentru ca s fie n , trebuie ca .

Operatorii de variaie sunt definii astfel. Recombinarea este aplicat cu o rat pc i


revine la aplicarea operatorului de recombinare aritmetic total, cu ponderea p, celor
perechi de cromozomi alei aleator din populaia de prini (fiecare pereche de
cromozomi ocup poziiile n multisetul prinilor). Pot fi utilizate dou variante:
1. aceeai pereche de cromozomi poate fi generat de mai multe ori, respectiv
2. orice pereche de cromozomi alei ca prini este unic.
Dac o pereche de cromozomi nu genereaz progenituri prin recombinare aritmetic
(aleator a fost generat un numr sub rata de ncruciare), atunci are loc recombinarea
asexuat.

Observaie. Prin aplicarea operatorului de recombinare aritmetic total, dac doi


indivizi respect constrngerile (4.28), atunci i progeniturile lor ndeplinesc (4.28).
Aceast observaie este important n contextul excluderii situaiei de tip short selling.

Operatorul de mutaie ales este cel de tip fluaj, cu o probabilitate de mutaie mic i
cu de asemenea foarte mic (aici a fost ales ). Operatorul este
implementat n dou variante.
2. Varianta n care este exclus situaia de tip short selling. Cu o rat pm, fiecare
gen din fiecare cromozom sufer o mutaie prin adugarea unei valori generate din
repartiia normal de medie 0 i varian , dar astfel nct cromozomul rezultat s
corespund unei soluii fezabile (s fie ndeplinite condiiile 4.28). Dac prin modificarea
valorii unei gene, a, rezult un cromozom, x, care nu aparine setului soluiilor fezabile,
atunci a este ajustat astfel nct x s ndeplineasc 4.28: dac a rezult negativ, atunci a
este setat pe valoarea 0, respectiv dac suma valorilor genelor lui x, sv, este supraunitar, a
este modificat astfel nct sv s devin 1 (implicit suma investit n ultima aciune a
portofoliului devine 0).
3. Varianta general: cu o rat pm, fiecare gen din fiecare cromozom sufer o
mutaie prin adugarea unei valori generate din repartiia normal de medie 0 i varian
. Este impus o restricie prin care valoarea fiecrei alele s fie n intervalul
deci, n modul, s fie subunitar, pentru a menie semnificaia fiecrei valori de
fraciune investit n aciunea corespunztoare. De asemenea, pentru ca
s fie n , trebuie ca .

Selecia prinilor este realizat pe baza algoritmului SUS, prin utilizarea distribuiei
de probabilitate de selecie de tip rang liniar, cu presiunea de selecie s. La fiecare generaie
sunt selectai dim prini. Mecanismul de supravieuire este implementat astfel: generaia
urmtoare este dat de multisetul progeniturilor, eventual mutante, dar n care cel mai bun
individ al generaiei curente, bx, nlocuiete cel mai slab cromozom copil, dac nici unul
dintre indivizii generai n urma aplicrii operatorilor de variaie nu are calitatea cel puin
egal cu cea a lui bx.
Este prezentat n continuare implementarea algoritmului n cea de a doua variant
de generare a unei perechi de cromozomi din bazinul de recombinare (orice pereche de
cromozomi alei ca prini este unic). Pentru prima variant, n funcia crossover sunt
generate aleator perechi de cromozomi, pentru care se impune doar condiia ca cei
doi cromozomi s ocupe poziii diferite n multisetul prinilor.

function [R]=citeste_date(nume);
R=load(nume);
end

function [Q,rmed,alpha,B]=parametri(R);
%n actiuni observate in m saptamani
[n,m]=size(R);
rmed=zeros(n,1);
for i=1:n
rmed(i)=mean(R(i,:));
end;
Q=cov(R')*(m-1)/m;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
end

function [val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x);
val=((alpha+B*x).')*Q*(alpha+B*x)+(ro/(Rp^2))*((rmed.')*alpha-
Rp+(rmed.')*B*x)^2;
%disp(val);
V=((alpha+B*x).')*Q*(alpha+B*x);
%disp(V);
end

function [pop]=gen_ini(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1);
for j=1:n-1
gata=0;
while(~gata)
r=unifrnd(0,1);
if(sum(x)+r<=1)
x(j)=r;
gata=1;
end;
end;
if(sum(x)==1)
break;
end;
end;
pop(1:n-1,i)=x(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val;
end;
end

function [pop]=gen_ini_short_selling(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1);
gata=0;
while(~gata)
for j=1:n-1
x(j)=unifrnd(-1,1);
end;
if((sum(x)>=0)&&(sum(x)<=2))
pop(1:n-1,i)=x(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val;
gata=1;
end;
end;
end;
end

function [parinti]=selectie_SUS_rang_l(pop,s);
[n,dim]=size(pop);
p=rang_l(pop,s);
q=zeros(dim,1);
for i=1:dim
q(i)=sum(p(1:i));
end;
parinti=zeros(n,dim);
i=1;k=1;r=unifrnd(0,1/dim);
while(k<=dim)
while(r<=q(i))
parinti(1:n,k)=pop(1:n,i);
r=r+1/dim;
k=k+1;
end;
i=i+1;
end;
end

function [p]=rang_l(pop,s);
[n,dim]=size(pop);
p=zeros(1,dim);
for i=1:dim
p(i)=(2-s)/dim+(2*i*(s-1)/(dim*(dim+1)));
end;
end

function [popN]=crossover1(pop,pc,p,Q,rmed,alpha,B,ro,Rp);
[n,dim]=size(pop);
poz=[];
popN=zeros(n,dim);
for i=1:2:dim
ok=0;
while(~ok)
p1=unidrnd(dim-1);
p2=p1;
while(p1>=p2)
p2=unidrnd(dim);
end;
if(~ismember([p1 p2],poz,'rows'))
poz=[poz;[p1 p2]];
ok=1;
end;
end;
% nu pot fi generate aceleasi perechi de parinti la treceri diferite
x=pop(1:n-1,p1);
y=pop(1:n-1,p2);
r=unifrnd(0,1);
if(r<=pc)
x1=p*x+(1-p)*y;
popN(1:n-1,i)=x1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x1(1:n-1));
popN(n,i)=-val;
y1=p*y+(1-p)*x;
popN(1:n-1,i+1)=y1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,y1(1:n-1));
popN(n,i+1)=-val;
else
popN(1:n,i)=pop(1:n,p1);
popN(1:n,i+1)=pop(1:n,p2);
end;
end;
end

function [popN]=mutatie(pop,pm,t,Q,rmed,alpha,B,ro,Rp,caz);
% mutatia intr-un cromozom, la nivel de gena revine la aplicarea
operatiei
% de fluaj
[n,dim]=size(pop);
popN=pop;
for i=1:dim
efectuat=0;
if(caz==0)
% fara short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
fluaj=normrnd(0,t/3);
a=pop(j,i)+fluaj;
efectuat=1;
if(a<0)
a=0;
end;
s=sum(popN(1:n-1,i));
if(s+fluaj>1)
xx=s+fluaj-1;
a=a-xx;
end;
popN(j,i)=a;
end;
end;
else
%cu short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
gata=0;
while(~gata)
fluaj=normrnd(0,t/3);
if(fluaj>0)
a=min([pop(j,i)+fluaj 1]);
else
a=max([pop(j,i)+fluaj -1]);
end;
s=sum(popN(1:n-1,i));
if((s+fluaj>=0)&&(s+fluaj<=2))
popN(j,i)=a;
efectuat=1;
gata=1;
end;
end;
end;
end;
end;
if(efectuat)
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,popN(1:n-1,i));
popN(n,i)=-val;
end;
end;
end

function [rezultat]=selectie_generatie_urmatoare(pop,popN);
[n,dim]=size(pop);
fob=pop(n,1:dim);
fobN=popN(n,1:dim);
rezultat=popN;
[max1,i]=max(fob);
[max2,j]=max(fobN);
if(max1>max2)
[min1,k]=min(fobN);
rezultat(1:n,k)=pop(1:n,i);
end;
end

function [x]=GA_riscmin1(nume,dim,ro,Rp,s,pc,pm,p,t,NM,caz);
% nume=numele fisierului din care sunt prelute datele
% dim=dimensiunea populatiei, numar par
% ro=din functia obiectiv
% Rp=randamentul prognozat
% s=constrangerea de selectie pentru distributia de selectie rang liniar
% pc=probabilitatea de recombinare
% p=ponderea la recombinarea prin medie
% pm=probabilitatea de mutatie
% t=pragul de la fluaj
% NM=numarul de iteratii
% caz=0, pentru exemplul1, fara short selling
% caz=1, pentru exemplul2, cu short selling

%GA_riscmin1('portofoliu1.txt',500,100,1.15,1.8,0.8,0.01,0.7,0.1,20,0);
%GA_riscmin1('',500,10,0.25,1.8,0.8,0.02,0.7,0.1,20,1);
if(caz==0)
R=citeste_date(nume);
[n,m]=size(R);
[Q,rmed,alpha,B]=parametri(R);
pop=gen_ini(dim,n,Q,rmed,alpha,B,ro,Rp);
else
n=5;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
rmed=[-0.028, 0.366, 0.231, -0.24, 0.535]';
Q=[1.0256 -0.4340 0.0202 -0.1968 -0.0311;
-0.4340 1.1049 -0.0783 0.2347 -0.1776;
0.0202 -0.0783 0.4328 -0.1236 -0.1895;
-0.1968 0.2347 -0.1236 8.0762 1.0093;
-0.0311 -0.1776 -0.1895 1.0093 2.9007];
pop=gen_ini_short_selling(dim,n,Q,rmed,alpha,B,ro,Rp);
end;
pop1=sortrows(pop.',n);
pop=pop1.';
T=[];
T1=[];
for nrit=1:NM
%populatia sortata crescator dupa -fobiectiv
[parinti]=selectie_SUS_rang_l(pop,s);
[popN]=crossover1(parinti,pc,p,Q,rmed,alpha,B,ro,Rp);
% operatia de mutatie este realizata functie de caz - cu sau fara
%short selling
[popNou]=mutatie(popN,pm,t,Q,rmed,alpha,B,ro,Rp,caz);
[rezultat]=selectie_generatie_urmatoare(pop,popNou);
pop1=sortrows(rezultat.',n);
pop=pop1.';
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,pop(1:n-1,dim));
T=[T V];
T1=[T1 val];
end;
disp(['riscul minim:' num2str(T(NM))]);
disp(['minimul functiei obiectiv MINRISC1:' num2str(T1(NM))]);
disp('Fractiunile investite');
disp([pop(1:n-1,dim);1-sum(pop(1:n-1,dim))]);
disp('Randamentul obtinut:');
Rr=(rmed.')*(alpha+B*pop(1:n-1,dim));
disp(Rr);
figure
i=1:NM;
plot(i,T1(i),'-rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','y',...
'MarkerSize',8);
figure
i=1:NM;
plot(i,T(i),'-rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','m',...
'MarkerSize',8);

end

Variant de implementare cu excluderea situaiei de tip short selling pentru


datele din tabelul 4.1

Rezultatele care pot fi obinute la apelul


GA_riscmin1('portofoliu1.txt',500,100,1.15,1.8,0.8,0.01,0.7,0.1,20,0)
sunt figurate mai jos.
n acest exemplu, minimul funciei obiectiv corespunztoare problemei
RISCMIN1M este , riscul calculat dup 20 de generaii este
randamentul este

i portofoliul obinut:
Variant de implementare, cu considerarea situaiei de tip short selling pentru
datele din exemplul 2

Rezultatele care pot fi obinute la apelul


GA_riscmin1('',500,10,0.25,1.8,0.8,0.02,0.7,0.1,20,1);
sunt figurate mai jos.
n acest exemplu, minimul funciei obiectiv corespunztoare problemei
RISCMIN1M este 0.14238, riscul calculat dup 20 de generaii este

randamentul este

i portofoliul obinut: