Documente Academic
Documente Profesional
Documente Cultură
Adresa: Catalina.Cocianu@ie.ase.ro
Cunoștințe necesare
Bazele programării, Algoritmi și tehnici de programare
Probabilități și statistică matematică
Cunoștințe de bază în utilizarea calculatoarelor
Bibliografie
Manual
C. Cocianu, C. Uscatu, Programare evolutivă și algoritmi genetici,
Editura ASE București, 2015
Alte monografii
Eiben, A. E., Smith, J. E., Introduction to Evolutionary Computing,
Springer-Verlag, 2003
Fulcher, J., Jain, L. C. (Eds.), Computational Intelligence: A
Compendium,Springer-Verlag, 2008
Engelbrecht, A.P., Computational Intelligence. An Introduction, John
Wiley & Sons, 2007
Evaluare pe parcurs
Seminar 50%
Probă practică 20%
Proiect 30%
Lucrare scrisă 50%
Clasificare
Componentele EA
Funcția de evaluare
Operatori de variație
Mutație
Recombinare
Operatori de selecție
Selecția părinților
Operatori de mutație
Operatori de selecție
Selecția părinților
Mecanismul de auto-adaptare
I. CALCUL EVOLUTIV. SUPORTUL DE NATURĂ
BIOLOGICĂ AL EC
Calculul evolutiv (EC) - domeniu al informaticii inspirat din procesul evoluţiei
naturale: conexiunea evoluţie naturală – tehnica de rezolvare a problemelor
de tip experiment-eroare (sau generare-testare).
STRATEGII EVOLUTISTE
PROGRAMARE EVOLUTISTĂ
PROGRAMARE GENETICĂ
IV. EXEMPLU: Rezolvarea unei probleme de
optimizare a unei funcţii de o variabilă
OBSERVAȚIE. OPERATORII DE SELECȚIE ȘI VARIAȚIE PREZENTAȚI
ÎN CONTINUARE SUNT DEFINIȚI EXLUSIV ÎN SCOP DIDACTIC, CA
POSIBILE ALEGERI.
Procesul de selecție de tip turneu este implementat astfel: de 𝑑𝑖𝑚 2 ori
selectează aleator doi indivizi din populația curentă și alege cromozomul cu
valoarea fitness cea mai mare. Populația de părinți este cu dimensiune 𝑑𝑖𝑚 2.
Condiţia terminală
a fost depăşit un prag al numărului de generaţii sau calitatea medie a
populaţiei nu mai poate fi îmbunătăţită semnificativ.
Populaţia
Reprezentarea desemnează:
codificare/decodificare
structura de date utilizată pentru definirea spaţiul genotipurilor
Exemplu de reprezentare prin permutări
D
D
D
D
D
D
D
D
𝑃 = 2, 7, 5, 8, 1, 4, 6, 3
Exemplu de reprezentare binară a unui număr real
Reprezentarea unui număr 𝑥 ∈ 𝐷 = 𝑎, 𝑏 ⊂ ℝ cu 𝑛𝑧 zecimale exacte
𝒃−𝒂
Deci cel de-al 𝑛 + 1-lea număr, 𝑛 = 0,1, … , 2𝑚 − 1, 𝒙 = 𝒂 + 𝒏 ∗ 𝟐𝒎 −𝟏 este unic
determinat de valoarea 𝒏 (𝑎, 𝑏, 𝑚 sunt fixate), 𝒙 poate fi reprezentat binar
utilizând reprezentarea binară a lui n pe m biți.
𝒙 ↔ 𝒏 ↔ 𝒗: 𝒗𝒆𝒄𝒕𝒐𝒓𝒖𝒍 𝒓𝒆𝒑𝒓𝒆𝒛𝒆𝒏𝒕𝒂𝒓𝒆 𝒃𝒊𝒏𝒂𝒓ă 𝒂 𝒍𝒖𝒊 𝒏 𝒑𝒆 𝒎 𝒃𝒊ț𝒊
𝒃−𝒂 𝒙 − 𝒂 ∙ 𝟐𝒎 − 𝟏
𝒙=𝒂+𝒏∗ 𝒎 ⇒𝒏=
𝟐 −𝟏 𝒃−𝒂
Exemplu numeric; funcții MATLAB utilizate
Problema: 𝐷 = −3,10.2 , 𝑏 − 𝑎 = 13.2. Reprezintă 𝒙 = 𝟐. 𝟏𝟕𝟑895 cu
precizia 𝑛𝑧 = 3 zecimale exacte
A. 𝒙 → 𝒏 → 𝒗: 𝒗𝒆𝒄𝒕𝒐𝒓𝒖𝒍 𝒓𝒆𝒑𝒓𝒆𝒛𝒆𝒏𝒕𝒂𝒓𝒆 𝒃𝒊𝒏𝒂𝒓ă 𝒂 𝒍𝒖𝒊 𝒏 𝒑𝒆 𝒎 𝒃𝒊ț𝒊
2.173895+3 ∗ 214 −1
𝑚 = 𝑙𝑜𝑔2 13.2 ∗ 103 + 1 = 14; 𝑛 = = 6421
13.2
pentru [] – funcția MATLAB fix; pentru 𝑙𝑜𝑔2 funcția MATLAB log2
𝑣 = [0 1 1 0 0 1 0 0 0 1 0 1 0 1] reprezentarea
binară a lui 6421 – în MATLAB v=bitget(n,m:-1:1)
𝟐. 𝟏𝟕𝟑895 → 6421 → [0 1 1 0 0 1 0 0 0 1 0 1 0 1]
B. 𝒗 → 𝒏 → 𝒙 , aproximarea lui 𝒙 cu 3 zecimale exacte
𝑚 = 14, 𝑛 = 𝑚 𝑖=1 𝑣 𝑖 ∙ 2
𝑚−𝑖
= 6421 – în MATLAB:
n=0;
for i=1:m
n=bitset(n,m+1-i,v(i));
end;
13.2
𝑥 = −3 + 6421 ∗ 214−1 = 𝟐. 𝟏𝟕𝟑5 aproximarea lui 𝒙 cu 3 zecimale exacte
[0 1 1 0 0 1 0 0 0 1 0 1 0 1] → 6421 → 𝟐. 𝟏𝟕𝟑5
III. Componentele EA. Funcţia de evaluare 𝒇
Recombinarea este stochastică: alegerea acelor părţi ale părinţilor care vor
fi combinate şi tipul de recombinare sunt bazate pe extrageri aleatoare.
Exemple:
Funcţie de decizie este bazată exclusiv pe funcţia de evaluare
Funcţie de decizie este bazată exclusiv pe factorul vârstă
Decizia este luată funcție și de vârstă și de calitate
VIII. Componentele EA. Iniţializarea. Condiţia
terminală
Iniţializarea: crearea populaţiei iniţiale este realizată în general prin
generare aleatoare de fenotipuri şi apoi obţinerea multisetului de genotipuri
asociat.
Condiţia terminală:
Număr 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
Număr 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
III. Reprezentarea prin vectori cu numere întregi
Exemplu: problema determinării unui drum între două puncte date într-o
reţea de puncte în care conexiunile posibile sunt sus, jos, stânga şi
respectiv dreapta revine la determinarea unei secvenţe de deplasări către
nord, sud, est, respectiv vest cu câte o unitate. Fiecare tip de deplasare
este codificată cu o valoare din 0,1,2,3 .
Alegerea unei codificări - pe baza unor relaţii naturale între valorile pe care
le poate lua fiecare atribut (variabilă).
Atribute ordinale - dacă sunt cu valori într-o mulţime de numere întregi,
valoarea 2 este “mai similară“ cu 3 decât cu 312.
Atributelor cardinale – distanța între două valori posibile este irelevantă.
IV. Reprezentarea prin numere reale
În multe situaţii practice, reprezentarea unui candidat la soluţie este
realizată prin intermediul unui şir de numere reale. În general este preferată
această reprezentare atunci când fenotipurile provin dintr-o distribuţie
continuă. Genotipul corespunzător unui candidat soluţie cu n gene este deci
vectorul 𝑥 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 , unde 𝑥𝑖 ∈ ℝ, 𝑖 = 1, … , 𝑛.
max 𝑓 𝑥
𝑥∈𝐷
𝑥 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 𝑇
𝑛
𝐷= 𝑎𝑖 , 𝑏𝑖
𝑖
(probleme de optimizarea potrofoliilor de active)
V. Reprezentarea prin permutări
Permutările sunt utilizate în probleme în care trebuie stabilită
ordinea apariţiei unor secvenţe de evenimente.
Clase de probleme:
probleme în care ordinea apariţiei evenimentelor este
importantă. Exemplu: problema planificării activităţilor;
probleme în care apare dependenţa de adiacenţă – scopul:
stabilirea vecinătăților. Exemplu: problema comis-voiajorului
Diferenţa: în cazul celei de-a doua clase, punctul de start (în
cazul problemei comis-voiajorului oraşul de plecare) nu este
important.
VI. Operatorul mutaţie. Reprezentarea binară
Cel mai utilizat operator de mutaţie în reprezentarea binară consideră
fiecare genă a fiecărui cromozom pentru inversarea valorii asociate cu o
probabilitate pm în general mică.
Număr 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
Număr 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
III. Reprezentarea prin vectori cu numere întregi
Exemplu: problema determinării unui drum între două puncte date într-o
reţea de puncte în care conexiunile posibile sunt sus, jos, stânga şi
respectiv dreapta revine la determinarea unei secvenţe de deplasări către
nord, sud, est, respectiv vest cu câte o unitate. Fiecare tip de deplasare
este codificată cu o valoare din 0,1,2,3 .
Alegerea unei codificări - pe baza unor relaţii naturale între valorile pe care
le poate lua fiecare atribut (variabilă).
Atribute ordinale - dacă sunt cu valori într-o mulţime de numere întregi,
valoarea 2 este “mai similară“ cu 3 decât cu 312.
Atributelor cardinale – distanța între două valori posibile este irelevantă.
IV. Reprezentarea prin numere reale
În multe situaţii practice, reprezentarea unui candidat la soluţie este
realizată prin intermediul unui şir de numere reale. În general este preferată
această reprezentare atunci când fenotipurile provin dintr-o distribuţie
continuă. Genotipul corespunzător unui candidat soluţie cu n gene este deci
vectorul 𝑥 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 , unde 𝑥𝑖 ∈ ℝ, 𝑖 = 1, … , 𝑛.
max 𝑓 𝑥
𝑥∈𝐷
𝑥 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 𝑇
𝑛
𝐷= 𝑎𝑖 , 𝑏𝑖
𝑖
(probleme de optimizarea potrofoliilor de active)
V. Reprezentarea prin permutări
Permutările sunt utilizate în probleme în care trebuie stabilită
ordinea apariţiei unor secvenţe de evenimente.
Clase de probleme:
probleme în care ordinea apariţiei evenimentelor este
importantă. Exemplu: problema planificării activităţilor;
probleme în care apare dependenţa de adiacenţă – scopul:
stabilirea vecinătăților. Exemplu: problema comis-voiajorului
Diferenţa: în cazul celei de-a doua clase, punctul de start (în
cazul problemei comis-voiajorului oraşul de plecare) nu este
important.
VI. Operatorul mutaţie. Reprezentarea binară
Cel mai utilizat operator de mutaţie în reprezentarea binară consideră
fiecare genă a fiecărui cromozom pentru inversarea valorii asociate cu o
probabilitate pm în general mică.
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
𝐶𝑐1 = 10, 6, 7, 1
𝐶𝑐2 = 5, 9, 8, 4, 2
𝐶𝑐3 = 3
x2 1 5 2 6 9 7 3 8 10 4
y2 10 2 4 7 5 1 3 9 6 8
Operatorul OCX
Operatorul de recombinare de ordine (Order Crossover): probleme în care
spaţiul genotipurilor este dat printr-un set de permutări semnificând ordinea
apariţiei unor evenimente.
Cel de-al doilea copil este construit similar, plecând de la secvenţa de alele
din cel de-al doilea părinte şi copiind restul elementelor din primul părinte
similar procedeului descris pentru crearea primei progenituri.
Recombinarea multiplă
Operatorii de recombinare multiplă - obţinerea de progenituri prin utilizarea
n-tuplurilor de părinţi, 𝑛 > 2.
𝑓𝑖
𝑝𝑖 = 𝜇
𝑗=1 𝑓 𝑦𝑗
𝑓𝑖
𝑛𝑎𝑖 =
𝑓
Inconveniente ale utilizării distribuției de selecție FPS:
𝑡
1
𝛽𝑝𝑡 = min 𝑓 𝑦
𝑝 𝑦∈𝒫𝑢
𝑢=𝑡−𝑝+1
FPS cu sigma-scalarea
1
𝑓𝑡 = 𝑓 𝑦 ,
𝒫𝑡
𝑦∈𝒫𝑡
2 1 2
𝜎𝑓,𝑡 = 𝑓 𝑦 − 𝑓𝑡
𝒫𝑡 − 1
𝑦∈𝒫𝑡
𝑔 𝑦 = 𝑚𝑎𝑥 𝑓 𝑦 − 𝑓𝑡 − 𝑐 ∙ 𝜎𝑓,𝑡 , 0
1 − 𝑒𝑥𝑝 −𝑖
𝑃𝑟𝑎𝑛𝑔_𝑒 𝑦𝑖 =
𝑐
𝑃𝑟𝑎𝑛𝑔_𝑒 𝑦𝑖 = 1
𝑖=1
Exemplu
Maximizarea funcţiei 𝑓 𝑥 = 𝑥 2 , cu 𝑥𝜖 0,1,2, … , 31 .
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
Exemplu de implementare
Exemplu Maximizarea funcţiei 𝑓 𝑥 = 𝑥 2 , cu 𝑥𝜖 0,1,2, … , 31 .
Nr. Fenotipul Cromozomul Calitatea FPS
crt. populaţiei iniţiale 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
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
O variantă îmbunătăţită: algoritmul SUS (Stochastic Universal Sampling). Spre
deosebire de mecanismul de tip ruletă, în care o ruletă cu un braţ este rotită de
𝜇 ori, mecanismul SUS asigură o rotire a unei rulete cu 𝜇 braţe echidistante.
2 − 𝑠 2𝑖 𝑠 − 1
𝑃𝑟𝑎𝑛𝑔 𝑦𝑖 = +
𝜇 𝜇 𝜇+1
Implementarea mecanismului SUS
Nr. Cromozomul populaţiei iniţiale 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
Poate fi selectat un obiect (nu fracțiuni din el) dacă nu este depăşit Cmax.
𝑓 𝑣 = 𝑣𝑎𝑙𝑜𝑎𝑟𝑒 𝑖 ∗ 𝑣 𝑖
𝑖=1
Operatorii de variație
Recombinarea unipunct, cu probabilitatea 𝑝𝑐 ≥ 0.6 . Schema de
recombinare presupune că populația de părinți este generată fără a ține
cont de o anumită ordine/valoare ale funcției fitness. Cromozomii
rezultat sunt considerați în multisetul copiilor dacă aceștia corespund
unor soluții fezabile dimensiunea populației de copii este cel mult
egală cu dimensiunea populației curente
Mutația bit-flip, cu probabilitatea 𝑝𝑚 ≅ 0.1 – similar, cromozomul rezultat
este considerat în multisetul copiilor mutați dacă acesta corespunde
unei soluții fezabile
Stabilirea populației de părinți (selecția părinților) – prin SUS, utilizând
distribuția FPS cu sigma-scalare
𝑛 𝑛−1 𝑛
𝑉 𝑦 = 𝜎𝑖2 𝑦𝑖 2 + 2 𝜎𝑖𝑗 𝑦𝑖 𝑦𝑗
𝑖=1 𝑖=1 𝑗=𝑖+1
sau, matriceal
𝑉 𝑦 = 𝑦 𝑇 𝑄𝑦,
𝑦 = 𝑦1 , 𝑦2 , … , 𝑦𝑛 𝑇
𝑄 = 𝜎𝑖𝑗 1≤𝑖≤𝑛 , 𝜎𝑖𝑖 = 𝜎𝑖2 , 1 ≤ 𝑖 ≤ 𝑛
1≤𝑗≤𝑛
𝑅= 𝑟𝑖 𝑦𝑖
𝑖=1
sau, matriceal
𝑅 = 𝑟𝑇 𝑦 ,
𝑟 = 𝑟1 , 𝑟2 , … , 𝑟𝑛 𝑇
𝑆= 𝑦𝑖 = 1
𝑖=1
devine
𝑆 = 𝑒𝑇𝑦 = 1
RISCMIN0:
Minimizează 𝑉 = 𝑦 𝑇 𝑄𝑦
𝑛
cu restricţia 𝑖=1 𝑦𝑖 = 1 .
RISC-RANDAMENT1:
Minimizează 𝐹 = −𝑟 𝑇 𝑦 + 𝜌𝑦 𝑇 𝑄𝑦
𝑛
cu restricţia 𝑖=1 𝑦𝑖 = 1 .
RISCMIN1:
Minimizează 𝑉 = 𝑦 𝑇 𝑄𝑦
𝑛 𝑛
cu restricţiile 𝑖=1 𝑟𝑖 𝑦𝑖 = 𝑅𝑝 şi 𝑖=1 𝑦𝑖 =1.
RISCMIN1M:
Minimizează
𝑛 2
𝜌
𝐹= 𝑦 𝑇 𝑄𝑦 + 2 𝑟𝑖 𝑦𝑖 − 𝑅𝑝
𝑅𝑝 𝑖=1
𝑛
cu restricţia 𝑖=1 𝑦𝑖 =1.
Definirea problemelor de tip randament maxim
Problema primară de maximizarea randamentului, RANDAMENTMAX0 :
RANDAMENTMAX0:
Minimizează 𝑅 = −𝑟 𝑇 𝑦
cu restricţia 𝑛𝑖=1 𝑦𝑖 = 1 .
RANDAMENTMAX1:
Minimizează 𝑅 = −𝑟 𝑇 𝑦
𝑛
cu restricţiile 𝑉 = 𝑦 𝑇 𝑄𝑦 = 𝑉𝑎𝑐 şi 𝑖=1 𝑦𝑖 =1.
Definirea problemelor de tip randament maxim
Problema modificată RANDAMENTMAX1M:
RANDAMENTMAX1M:
Minimizează
𝜌
𝐹 = −𝑟 𝑇 𝑦 + 2
𝑦 𝑇 𝑄𝑦 − 𝑉𝑎𝑐 2
𝑉𝑎𝑐
𝑛
cu restricţia 𝑖=1 𝑦𝑖 =1.
𝑦𝑛 = 1 − 𝑦𝑖
𝑖=1
𝑥 = 𝑦1 , 𝑦2 , … , 𝑦𝑛−1 𝑇 , 𝛼 = 0,0, … , 0,1 𝑇 vector n-dimensional şi B matrice
1 0 … 0
0 1 … 0
de dimensiune 𝑛 × 𝑛 − 1 , 𝐵 = …………… .
0 0 … 1
−1 − 1 … − 1
Obţinem
𝑦 = 𝛼 + 𝐵𝑥
Transformarea în probleme de optimizare fără
constrângeri
MINRISC0:
Minimizează
𝑉 = 𝛼 + 𝐵𝑥 𝑇 𝑄 𝛼 + 𝐵𝑥
RISCMIN1M
Minimizează
𝜌 2
𝐹 = 𝛼 + 𝐵𝑥 𝑇 𝑄 𝛼 + 𝐵𝑥 + 2 𝑟 𝑇 𝛼 − 𝑅𝑝 + 𝑟 𝑇 𝐵𝑥
𝑅𝑝
RANDAMENTMAX1M
Minimizează
𝜌 2
𝐹= −𝑟 𝑇 𝛼 + 𝐵𝑥 + 𝛼 + 𝐵𝑥 𝑇 𝑄 𝛼 + 𝐵𝑥 − 𝑉
𝑎𝑐
𝑉𝑎𝑐 2
Dacă 𝑥 ∗ = 𝑥1∗ , 𝑥2∗ , … , 𝑥𝑛−1
∗ 𝑇 este o soluţie a uneia din problemele enunţate,
este
𝛻𝐹 𝑥 = 𝛻𝑉 𝑥 + 2𝜌 𝑅 − 𝑅𝑝 𝛻𝑅 𝑥
unde 𝛻𝑉 𝑥 = 2𝐵𝑇 𝑄 𝛼 + 𝐵𝑥 şi 𝛻𝑅 𝑥 = 𝐵𝑇 𝑟
Rezolvarea RISCMIN1M prin tehnica celei mai
rapide descreşteri
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
Abordare GA.
Reprezentare, generarea
populației inițiale, operatorul de
recombinare
Randamentul / riscul unui portofoliu
Fie 𝐴 = 𝑎1 , 𝑎2 , … , 𝑎𝑛 ↔ 1,2, … , 𝑛 un grup de n acţiuni
Considerăm disponibil istoricul randamentelor procentuale pe m perioade
de timp pentru fiecare i ∈ 1,2, … , 𝑛 şi notăm cu
𝑟𝑖𝑗 , randamentul acţiunii i în perioada j;
1 𝑚
𝑟𝑖 =
𝑚 𝑗=1 𝑟𝑖𝑗 , randamentul mediu al acţiunii i
𝑛
𝑦𝑖 , fracţiunea investită în acţiunea i, astfel încât 𝑆 = 𝑖=1 𝑦𝑖 =1
𝜎𝑖2 , varianţa acţiunii i:
𝑚
1 2
𝜎𝑖2 = 𝑟𝑖𝑗 − 𝑟𝑖
𝑚
𝑗=1
𝜎𝑖𝑘 , covarianţa dintre acţiunile i şi k:
𝑚
1
𝜎𝑖𝑘 = 𝑟𝑖𝑗 − 𝑟𝑖 𝑟𝑘𝑗 − 𝑟𝑘
𝑚
𝑗=1
Portofoliul este definit de fracţiunile de investiţii 𝑦1 , 𝑦2 , … , 𝑦𝑛 .
Randamentul / riscul unui portofoliu
Varianţa portofoliului este definită prin
𝑉 𝑦 = 𝑦 𝑇 𝑄𝑦,
𝑦 = 𝑦1 , 𝑦2 , … , 𝑦𝑛 𝑇
𝑄 = 𝜎𝑖𝑗 1≤𝑖≤𝑛 , 𝜎𝑖𝑖 = 𝜎𝑖2 , 1 ≤ 𝑖 ≤ 𝑛
1≤𝑗≤𝑛
şi este utilizată ca măsură a riscului portofoliului.
𝑅 𝑦 = 𝑟𝑇 𝑦 ,
𝑇
𝑟 = 𝑟1 , 𝑟2 , … , 𝑟𝑛
Definirea problemei RISCMIN1M
Determinarea portofoliului de risc minim pentru un randament apropiat de o
valoare dată 𝑅𝑝 - problema RISCMIN1M:
Minimizează
𝜌 2
𝐹 𝑦 = 𝑦 𝑇 𝑄𝑦 + 2 𝑟 𝑇 𝑦 − 𝑅𝑝
𝑅𝑝
𝑛
cu restricţia 𝑖=1 𝑦𝑖 =1.
𝑛
Pentru eliminarea restricției 𝑖=1 𝑦𝑖 = 1 procedăm astfel:
𝑥 = 𝑦1 , 𝑦2 , … , 𝑦𝑛−1 𝑇
𝛼 = 0,0, … , 0,1 𝑇 vector n-dimensional
1 0 … 0
0 1 … 0
B matrice de dimensiune 𝑛 × 𝑛 − 1 , 𝐵 = ……………
0 0 … 1
−1 − 1 … − 1
Definirea problemei RISCMIN1M
Rezultă 𝑦 = 𝛼 + 𝐵𝑥 și
𝜌 2
𝐹1 𝑥 = 𝛼 + 𝐵𝑥 𝑇 𝑄 𝛼 + 𝐵𝑥 + 2 𝑟 𝑇 𝛼 + 𝑟 𝑇 𝐵𝑥 − 𝑅𝑝
𝑅𝑝
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
Modelul de populaţie
Populația este cu dimensiune constantă (funcție de generație), dim.
𝑥 𝑖 = 𝑦 𝑖 ,1 ≤ 𝑖 ≤ 𝑛 − 1
𝑥 𝑛 = −𝐹1 𝑥 1: 𝑛 − 1
Abordarea genetică a problemei RISCMIN1M
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;
V=((alpha+B*x).')*Q*(alpha+B*x);
end
Abordarea genetică a problemei RISCMIN1M
Generarea populaţiei inițiale: aleator, cu respectarea restricțiilor
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
Operația de recombinare
Abordare GA.
Randamentul / riscul unui portofoliu
Fie 𝐴 = 𝑎1 , 𝑎2 , … , 𝑎𝑛 ↔ 1,2, … , 𝑛 un grup de n acţiuni
Considerăm disponibil istoricul randamentelor procentuale pe m perioade
de timp pentru fiecare i ∈ 1,2, … , 𝑛 şi notăm cu
𝑟𝑖𝑗 , randamentul acţiunii i în perioada j;
1 𝑚
𝑟𝑖 =
𝑚 𝑗=1 𝑟𝑖𝑗 , randamentul mediu al acţiunii i
𝑛
𝑦𝑖 , fracţiunea investită în acţiunea i, astfel încât 𝑆 = 𝑖=1 𝑦𝑖 =1
𝜎𝑖2 , varianţa acţiunii i:
𝑚
1 2
𝜎𝑖2 = 𝑟𝑖𝑗 − 𝑟𝑖
𝑚
𝑗=1
𝜎𝑖𝑘 , covarianţa dintre acţiunile i şi k:
𝑚
1
𝜎𝑖𝑘 = 𝑟𝑖𝑗 − 𝑟𝑖 𝑟𝑘𝑗 − 𝑟𝑘
𝑚
𝑗=1
Portofoliul este definit de fracţiunile de investiţii 𝑦1 , 𝑦2 , … , 𝑦𝑛 .
Randamentul / riscul unui portofoliu
Varianţa portofoliului este definită prin
𝑉 𝑦 = 𝑦 𝑇 𝑄𝑦,
𝑦 = 𝑦1 , 𝑦2 , … , 𝑦𝑛 𝑇
𝑄 = 𝜎𝑖𝑗 1≤𝑖≤𝑛 , 𝜎𝑖𝑖 = 𝜎𝑖2 , 1 ≤ 𝑖 ≤ 𝑛
1≤𝑗≤𝑛
şi este utilizată ca măsură a riscului portofoliului.
𝑅 𝑦 = 𝑟𝑇 𝑦 ,
𝑇
𝑟 = 𝑟1 , 𝑟2 , … , 𝑟𝑛
Definirea problemei RISCMIN1M
Determinarea portofoliului de risc minim pentru un randament apropiat de o
valoare dată 𝑅𝑝 - problema RISCMIN1M:
Minimizează
𝜌 2
𝐹 𝑦 = 𝑦 𝑇 𝑄𝑦 + 2 𝑟 𝑇 𝑦 − 𝑅𝑝
𝑅𝑝
𝑛
cu restricţia 𝑖=1 𝑦𝑖 =1.
𝑛
Pentru eliminarea restricției 𝑖=1 𝑦𝑖 = 1 procedăm astfel:
𝑥 = 𝑦1 , 𝑦2 , … , 𝑦𝑛−1 𝑇
𝛼 = 0,0, … , 0,1 𝑇 vector n-dimensional
1 0 … 0
0 1 … 0
B matrice de dimensiune 𝑛 × 𝑛 − 1 , 𝐵 = ……………
0 0 … 1
−1 − 1 … − 1
Definirea problemei RISCMIN1M
Rezultă 𝑦 = 𝛼 + 𝐵𝑥 și
𝜌 2
𝐹1 𝑥 = 𝛼 + 𝐵𝑥 𝑇 𝑄 𝛼 + 𝐵𝑥 + 2 𝑟 𝑇 𝛼 + 𝑟 𝑇 𝐵𝑥 − 𝑅𝑝
𝑅𝑝
Modelul de populaţie
Populația este cu dimensiune constantă (funcție de generație), dim.
𝑥 𝑖 = 𝑦 𝑖 ,1 ≤ 𝑖 ≤ 𝑛 − 1
𝑥 𝑛 = −𝐹1 𝑥 1: 𝑛 − 1
Abordarea genetică a problemei RISCMIN1M
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;
V=((alpha+B*x).')*Q*(alpha+B*x);
end
Abordarea genetică a problemei RISCMIN1M
Generarea populaţiei inițiale: aleator, cu respectarea restricțiilor
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
Operația de recombinare
Varianta în care este exclusă situaţia de tip “short selling”: cu o rată pm,
fiecare genă din fiecare cromozom c1 suferă o mutaţie prin adăugarea unei
𝑡
valori generate din repartiţia N 0, 𝜎 = 3 , dar astfel încât cromozomul
rezultat c2 să corespundă unei soluţii fezabile. Dacă c2 nu este soluţie
fezabilă, atunci alela/alelele modificate este/sunt ajustată/ajustate astfel
încât c2 să devină soluţie fezabilă.
Varianta generală: cu o rată pm, fiecare genă din fiecare cromozom suferă
𝑡
o mutaţie prin adăugarea unei valori generate din repartiţia N 0, 𝜎 = 3 .
Restricţii:
valoarea fiecărei alele să fie în −1,1
𝑛−1 𝑛−1
𝑦 𝑛 = 1 − 𝑖=1 𝑥 𝑖 să fie în −1,1 , adică 0 ≤ 𝑖=1 𝑥 𝑖 ≤ 2 .
Dacă prin modificarea valorii unei gene este obținută o soluţie nefezabilă,
atunci este generată o altă valoare de fluaj, până când restricţiile sunt
îndeplinite.
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
Selecţia părinţilor este realizată pe baza algoritmului SUS, prin utilizarea
distribuţiei de probabilitate de selecţie de tip rang liniar, cu presiunea de
selecţie s. Înaintea apelului, populația este sortată. La fiecare generaţie sunt
selectaţi dim părinţi.
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
Abordarea genetică a problemei RISCMIN1M
function [p]=rang_l(pop,s)
[~,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
Abordarea genetică a problemei RISCMIN1M
Mecanismul de supravieţuire 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
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
𝑇
𝑟 ≅ −0.028 0.366 0.231 − 0.24 0.535