Sunteți pe pagina 1din 7

Cromozomi, gene...

Algoritmi EVOLUTIVI
focus

Crina Groºan, Mihai Oltean


Începând cu anii '70 s-a manifestat un interes sporit pentru algoritmii care se
bazeazã pe un principiu evolutiv. Un termen comun adoptat care sã se refere
la tehnicile folosite este acela de metode de calcul evolutiv.

Calculul evolutiv torului) reprezintã o soluþie potenþialã a problemei ºi este


În general, orice sarcinã abstractã care trebuie îndeplinitã implementatã sub forma unei structuri de date S. Un in-
poate fi privitã ca fiind rezolvarea unei probleme, care, la divid este uneori numit ºi cromozom.
rândul ei, poate fi perceputã ca o cãutare în spaþiul soluþi- Fiecare soluþie este evaluatã ca fiind o mãsurã a "fit-
ilor potenþiale. Deoarece, de obicei, cãutãm cea mai bunã ness-ului" sãu (speranþei de viaþã). Acest fitness reprezintã
soluþie, putem privi acest proces ca fiind unul de optimi- calitatea individului. De obicei, cu cât individul este mai pro-
zare. Pentru spaþii mici, metodele clasice exhaustive sunt miþãtor, cu atât fitness-ul sãu este mai mare. Existã unele
suficiente; pentru spaþii mari, pot fi folosite tehnicile spe- probleme în cazul cãrora fitness-ul trebuie sã fie minimizat.
ciale ale inteligenþei artificiale. Metodele calculului evolu- O nouã populaþie (iteraþia t + 1) se formeazã alegând
tiv se numãrã printre aceste tehnici; ele folosesc algoritmi cei mai promiþãtori indivizi (pasul de selecþie) din popula-
ale cãror metode de cãutare au ca model câteva fenomene þia curentã. O parte din membri populaþiei nou formate
naturale: moºtenirea geneticã ºi lupta pentru supravieþuire. suferã transformãri (pasul de modificare) sub acþiunea
Cele mai cunoscute tehnici din clasa calculului evolutiv operatorilor genetici, pentru a obþine noi soluþii.
sunt algoritmii genetici, strategiile evolutive, programarea Operatorii genetici sunt, de fapt, proceduri care ope-
geneticã ºi programarea evolutivã. Existã ºi alte sisteme hi- reazã asupra elementelor vectorului populaþie. Existã doi
bride care încorporeazã diferite proprietãþi ale paradigme- operatori genetici principali:
lor de mai sus; mai mult, structura oricãrui algoritm de • un operator unar mi de transformare numit mutaþie, care
calcul evolutiv este, în mare mãsurã, aceeaºi. Un model ar creeazã un nou individ printr-o micã modificare a unui
fi urmãtorul: individ ales (mi: S → S);
• un operator mai puternic cj numit încruciºare, care creea-
procedura algoritm_evolutiv zã noi indivizi combinând pãrþi din doi sau mai mulþi in-
t←0 divizi (cj: S × ... × S → S) (de cele mai multe ori se folosesc
creare P(t) doi pãrinþi).
Ginfo nr. 8 - decembrie 2001

evaluare P(t) Dupã un anumit numãr de generaþii algoritmul con-


cât timp nu condiþia de terminare verge: se sperã cã cel mai promiþãtor individ ajunge la o va-
t←t+1 loare cât mai apropiatã de soluþia optimã. În ciuda simila-
selectare P(t) din P(t-1) ritãþilor puternice între diferitele tehnici de calcul evolutiv,
modificare P(t) existã ºi multe diferenþe. Acestea sunt date, în principal, de
evaluare P(t) structurile de date folosite pentru a reprezenta un individ
sfârºit cât timp ºi de ordinea în care se aplicã operatorii genetici. De exem-
sfârºit procedura plu, cele douã linii din algoritmul de mai sus:
selectare P(t) din P(t-1)
În cele ce urmeazã vom explica algoritmul general pro- modificare P(t)
pus mai sus. pot apãrea în ordine inversã: (în strategiile evolutive, întâi
se modificã populaþia ºi apoi este formatã o nouã populaþie
Algoritmii evolutivi menþin o populaþie P(t ) = {x1t ,K, xnt } prin procesul de selecþie, în timp ce într-un algoritm gene-
de indivizi la fiecare iteraþie t. O populaþie poate fi privitã tic întâi se aplicã selecþia, iar apoi intrã în acþiune operato-
30 ca fiind un vector de valori. Fiecare individ (element al vec- rii genetici de transformare).
Existã, de asemenea, ºi alte diferenþe între metode. Una Algoritmi genetici
dintre acestea ar fi cea referitoare la metodele de selecþie Începuturile algoritmilor genetici se situeazã undeva în
care includ: jurul anului 1950, când mai mulþi biologi au folosit calcu-
• selecþia proporþionalã, unde ºansa (probabilitatea) ca un latoarele pentru simularea sistemelor biologice. Rezultate-
individ sã fie selectat este proporþionalã cu fitness-ul lui; le muncii au început sã aparã dupã 1960, când la Universi-
• metoda rangului, în care toþi indivizii din populaþie sunt tatea din Michigan, sub directa îndrumare a lui John Hol-
sortaþi în funcþie de fitness, iar probabilitatea (ºansa) ca ei land, algoritmii genetici au apãrut în forma în care sunt cu-
sã fie selectaþi este fixatã de întreg procesul de evoluþie noscuþi astãzi.
(de exemplu, probabilitatea de selecþie a celui mai promi- Dupã cum sugereazã ºi numele, algoritmii genetici fo-

focus
þãtor individ este 0.15, a individului urmãtor este 0.14, losesc principii din genetica naturalã. Câteva principii fun-
etc.; cel mai promiþãtor individ are cea mai mare proba- damentale ale geneticii sunt împrumutate ºi folosite artifi-
bilitate ºi suma totalã a probabilitãþilor indivizilor este cial pentru a construi algoritmi de cãutare care sunt ro-
1); buºti ºi cer informaþii minime despre problemã.
• selecþia prin turnir (prin concurs) unde un anumit numãr Algoritmii genetici au fost inventaþi folosind modelul
de indivizi (de obicei doi) luptã pentru a fi selectaþi în procesului de adaptare. Ei opereazã, în principal, cu ºiruri
noua generaþie. Aceastã competiþie (turnir) este repetatã binare ºi folosesc un operator de recombinare ºi unul de
pânã sunt selectaþi un numãr de indivizi egal cu dimen- mutaþie.
siunea populaþiei. Prin mutaþie se schimbã un element (genã) dintr-un
Pentru fiecare dintre aceste categorii de selecþie existã cromozom, iar prin încruciºare se schimbã material gene-
ºi alte detalii importante. Câteva exemple sunt: tic între doi pãrinþi; dacã pãrinþii sunt reprezentaþi prin ºi-
• selecþia proporþionalã poate necesita folosirea unor me- ruri de cinci biþi, de exemplu (0, 0, 0, 0, 0) ºi (1, 1, 1, 1, 1),
tode de trunchiere; încruciºarea celor doi vectori poate duce la obþinerea des-
• existã diferite moduri pentru stabilirea probabilitãþii în cendenþilor (0, 0, 1, 1, 1) ºi (1, 1, 0, 0, 0) (acesta este un
metoda rangului; exemplu al aºa-numitei încruciºãri cu un punct de tãietu-
• dimensiunea mulþimii alese pentru concurs poate juca un rã).
rol semnificativ în metoda selecþiei prin turnir. Fitness-ul unui individ este atribuit proporþional cu va-
Trecerea de la o generaþie la alta poate fi efectuatã în loarea funcþiei criteriu corespunzãtoare individului; indi-
douã variante: vizii sunt selectaþi pentru generaþia urmãtoare pe baza fit-
• algoritm generaþional (noua populaþie este formatã doar ness-ului lor.
din descendenþi ai vechii generaþii); Vom ilustra modul de lucru al algoritmilor genetici cu
• algoritm non-generaþional (în noua populaþie sunt intro- ajutorul unei probleme simple: proiectarea unei cutii de
duºi, de obicei, cei mai promiþãtori indivizi din cele douã conserve. Considerãm o cutie de conserve cilindricã, cu nu-
populaþii, cea a pãrinþilor ºi cea a descendenþilor). Este mai doi parametri: diametrul d ºi înãlþimea h (evident, pot
posibil, de asemenea, sã creãm puþini (în particular, unul fi consideraþi ºi alþi parametri, cum ar fi grosimea, proprie-
singur) descendenþi, care înlocuiesc câþiva (cei mai puþin tãþi ale materialului, forma, dar sunt suficienþi doar cei doi
promiþãtori) indivizi. parametri pentru a ilustra lucrul cu algoritmii genetici).
Ca o regulã generalã trebuie reþinut faptul cã, în majo- Sã considerãm cã aceastã conservã trebuie sã aibã un
ritatea cazurilor, este de preferat sã se utilizeze un model volum de cel puþin 300 ml ºi obiectivul proiectului este de
elitist, care pãstreazã cei mai promiþãtori indivizi dintr-o a minimiza costul materialului folosit la fabricarea conser-
generaþie ºi îi adaugã automat generaþiei urmãtoare (aceas- vei. Putem formula problema noastrã astfel: sã se minimi-
ta înseamnã cã, dacã cel mai promiþãtor individ din gene-  πd 2 
Ginfo nr. 8 - decembrie 2001

zeze valoarea funcþiei f ( d , h) = c + πdh ,


raþia curentã este pierdut datoritã selecþiei sau operatorilor  2 
genetici, sistemul forþeazã apariþia lui într-o generaþie ur- unde c reprezintã costul materialului conservei per cm2, iar
mãtoare). Un astfel de model este foarte folositor pentru expresia din parantezã reprezintã suprafaþa conservei.
rezolvarea multor probleme de optimizare. Funcþia f se mai numeºte ºi funcþie criteriu (sau funcþie
Totuºi, structurile de date folosite pentru probleme obiectiv). Mai trebuie îndeplinitã ºi condiþia ca volumul
particulare, împreunã cu o mulþime de operatori genetici, cutiei sã fie cel puþin 300 ml ºi vom formula aceasta astfel:
constituie componenta esenþialã a oricãrui algoritm evolu- πd 2 h
g ( d , h) ≡ ≥ 300.
tiv. 4
Acestea sunt elementele cheie care ne permit sã distin- Parametrii d ºi h pot varia între anumite limite:
gem între variatele paradigme ale metodelor evolutive. dmin ≤ d ≤ dmax ºi hmin ≤ h ≤ hmax.

Principalele paradigme ale calculului Reprezentarea soluþiei


evolutiv Primul pas în utilizarea unui algoritm genetic este stabi-
Existã câteva paradigme importante ale tehnicilor de cal- lirea unei codificãri a problemei. Codificarea binarã este
cul evolutiv. Le vom trata în continuare pe fiecare în parte. cea mai obiºnuitã dintre tehnicile de codificare; ea este
31
simplu de manipulat ºi conferã robusteþe problemei. Re- • cromozomii utilizaþi au lungime constantã;
prezentarea binarã poate codifica aproape orice situaþie, • populaþia (generaþia) P(t + 1) de la momentul t + 1 se ob-
iar operatorii nu includ cunoºtinþe despre domeniul pro- þine reþinând toþi descendenþii populaþiei P(t) ºi ºtergând
blemei. Este motivul pentru care un algoritm genetic se ulterior cromozomii generaþiei precedente (P(t));
poate aplica unor probleme foarte diferite. În cazul codi- • numãrul cromozomilor este constant.
ficãrii binare, fiecare valoare se reprezintã printr-un ºir de Putem prezenta acum structura algoritmului genetic
lungime specificatã care conþine valorile 0 ºi 1. În anumite fundamental:
situaþii este necesar sã utilizãm codificarea "naturalã" a Pasul 1: t ← 0.
problemei, în locul reprezentãrii binare. Un exemplu de Pasul 2: Se iniþializeazã aleator populaþia P(t).
focus

codificare naturalã ar fi codificarea realã, care utilizeazã Pasul 3: Se evalueazã cromozomii populaþiei P(t). În acest
numere reale pentru reprezentare. scop se utilizeazã o funcþie de performanþã ce
Pentru a folosi algoritmii genetici la gãsirea unor valori depinde de problemã.
optime pentru parametri d ºi h, care sã satisfacã condiþia Pasul 4: Cât timp nu este îndeplinitã condiþia de termina-
prezentatã sub forma funcþiei g ºi care sã minimizeze re se executã paºii urmãtori:
funcþia f, vom avea în primul rând nevoie de reprezentarea Pasul 4.1: Se selecteazã cromozomii din P(t) care vor
valorilor parametrilor în ºiruri binare (vom folosi, aºadar, contribui la formarea noii generaþii. Fie P1 mulþimea
o codificare binarã a problemei). Sã presupunem cã folo- cromozomilor selectaþi (P1 reprezintã o populaþie in-
sim cinci biþi pentru a codifica fiecare dintre cei doi para- termediarã).
metri d ºi h. De exemplu, urmãtorul ºir reprezintã o con- Pasul 4.2: Se aplicã cromozomilor din P1 operatorii ge-
servã cu diametrul de 8 cm ºi înãlþimea de 10 cm: netici. Cei mai utilizaþi sunt operatorii de mutaþie ºi
01000
123 01010
123 . încruciºare. În funcþie de problemã se pot alege ºi alþi
d h operatori (inversiune, reordonare, operatori speciali).
Pentru aceste valori ale lui d ºi h, costul conservei este Fie P2 populaþia astfel obþinutã (descendenþii popula-
de 23 de unitãþi. þiei P(t)). Se ºterg din P1 pãrinþii descendenþilor obþi-
nuþi. Cromozomii rãmaºi în P1 sunt incluºi în popu-
laþia P2. Se construieºte noua generaþie, astfel: P(t + 1)
← P2; se ºterg toþi cromozomii din P(t); se executã
atribuirea t ← t + 1; se evalueazã P(t).
Marginea inferioarã a celor doi parametri este 0, iar Condiþia de terminare se referã, de regulã, la atingerea
marginea superioarã este 31. numãrului de generaþii specificate.
Folosind aceastã reprezentare a parametrilor pe cinci Dacã numãrul maxim admis de generaþii este N, atunci
biþi, existã exact 210 = 1024 soluþii posibile. Folosind mar- condiþia de oprire este t > N.
ginile considerate mai sus, algoritmii genetici ne permit sã Se admite cã rezultatul algoritmului este dat de cel mai
alegem numai valori din intervalul [0, 31]. promiþãtor individ din ultima generaþie. În realitate, nimic
Algoritmii genetici nu ne impun numai valori întregi nu ne garanteazã cã un individ mai performant nu a fost
din acest interval; în general, putem folosi orice altã valoa- obþinut într-o generaþie anterioarã. De aceea, este normal
re întreagã sau realã, prin schimbarea lungimii ºirului bi- ca la fiecare pas (la fiecare generaþie t) sã reþinem cel mai
nar ºi a celor douã margini: inferioarã ºi superioarã. promiþãtor individ care a fost generat pânã atunci. Acest
proces se numeºte elitism. Revenind la exemplul nostru, sã
Atribuirea fitness-ului considerãm o populaþie aleatoare de ºase indivizi, fiecare
Am afirmat anterior cã algoritmii genetici lucreazã cu ºi- având marcat fitness-ul corespunzãtor.
Ginfo nr. 8 - decembrie 2001

ruri de biþi reprezentând valorile parametrilor ºi nu cu pa-


rametrii înºiºi. Dupã ce a fost creat un nou ºir (o nouã so-
luþie) prin operatori genetici, trebuie sã-l evaluãm. În ma-
joritatea cazurilor, fitness-ul este chiar valoarea funcþiei cri-
teriu pentru soluþia respectivã. De exemplu, fitness-ul con- Douã dintre conservele considerate nu au volumul in-
servei reprezentat prin ºirul de zece biþi este: terior de cel puþin 300 ml ºi, prin urmare, vor fi penalizate
F = 0.0654 · (π(8)2 / 2+ π(8)(10)) = 23, cu suma scrisã lângã cutia respectivã. Aceastã penalizare
presupunând cã avem c = 0.0654. este destul de mare pentru a face ca toate soluþiile inaccep-
Dacã obiectivul nostru este de a minimiza funcþia cri- tabile sã devinã mai puþin promiþãtoare decât oricare din-
teriu, atunci vom spune cã o soluþie este mai bunã decât al- tre soluþiile acceptabile.
ta, dacã fitness-ul celei de-a doua este mai mare.
Selecþia
Structura unui algoritm genetic Un rol important în cadrul unui algoritm genetic îl ocupã
Vom descrie în continuare structura algoritmilor genetici. operatorul de selecþie. Acest operator decide care dintre
32 Pentru început vom stabili urmãtoarele: indivizii unei populaþii vor putea participa la formarea po-
pulaþiei urmãtoare. Scopul selecþiei este de a asigura mai Existã mai multe moduri de a realiza acest lucru. Cele
multe ºanse de reproducere celor mai performanþi indivizi mai uzuale metode sunt selecþia proporþionalã, selecþia
dintr-o populaþie datã. Prin selecþie se urmãreºte maximi- prin turnir ºi selecþia prin ordonare.
zarea performanþei indivizilor. În continuare vom prezen- Pentru exemplul nostru, vom folosi selecþia prin con-
ta succint cele mai importante mecanisme de selecþie. curs. Vom ilustra în figura de mai jos modul de selecþie.

Selecþia proporþionalã
În cazul selecþiei proporþionale, probabilitatea de selecþie a
unui individ depinde de valoarea performanþei acestuia. Sã

focus
presupunem cã avem o mulþime de cromozomi x1, x2, …,
xn. Pentru fiecare cromozom xi vom calcula performanþa
sa f(xi). Se impune condiþia ca f(xi) ≥ 0. Suma perfor-
manþelor tuturor cromozomilor din populaþie va constitui
performanþa totalã ºi o vom nota cu F. Probabilitatea de
selecþie pi a cromozomului xi este datã de relaþia:
f ( xi )
pi = .
F
Selecþia bazatã pe ordonare
Aceastã modalitate de selecþie constã în a calcula (pentru
fiecare generaþie) valorile funcþiei de fitness ºi de a aranja Dupã cum se poate observa ºi în figurã, avem ºase pe-
indivizii în ordinea descrescãtoare a acestor valori. Se va rechi a câte douã cutii; dintre perechea de cutii cu fitness-ul
atribui fiecãrui individ i o probabilitate de selecþie pi care 23 respectiv 30, o vom alege pe cea cu fitness-ul 23 ºi o
depinde de rangul sãu în ºirul stabilit. Probabilitãþile de- vom include în populaþia intermediarã; dintre cutia cu fit-
pind acum doar de poziþia cromozomului. Cel mai promi- ness-ul 24 ºi cea cu fitness-ul 11 ºi penalizarea 28, o vom
þãtor individ are probabilitatea 1. alege pe cea cu fitness-ul 24 ºi o vom include în populaþia
intermediarã º.a.m.d. Astfel, am format o populaþie inter-
Selecþia prin concurs mediarã care are tot ºase elemente. Este uºor de observat
Selecþia prin concurs sau selecþia turnir se bazeazã pe com- cã soluþiile promiþãtoare au mai mult de o copie în popu-
pararea directã a câte doi cromozomi ºi selectarea celui mai laþia intermediarã (de exemplu, cutia cu fitness-ul 23 ºi cea
performant. Operaþiile implicate sunt urmãtoarele: cu fitness-ul 24 au câte douã copii).
• se aleg în mod aleator doi cromozomi;
• se calculeazã performanþele cromozomilor selectaþi; Operatorul de încruciºare
• cromozomul mai performant este selectat (copiat în po- Operatorul de încruciºare este aplicat asupra indivizilor
pulaþia intermediarã asupra cãreia se aplicã operatorii ge- din populaþia intermediarã. În exemplul nostru, va fi apli-
netici). cat asupra reprezentãrii binare a celor ºase elemente pe ca-
re le avem în populaþia intermediarã. Operatorul de încru-
Alte mecanisme de selecþie ciºare acþioneazã în felul urmãtor: sunt aleºi aleator doi
Un alt tip de selecþie este selecþia elitistã. În acest caz, la fi- indivizi din populaþia intermediarã (care se mai numeºte ºi
ecare generaþie se pãstreazã cel mai promiþãtor sau cei mai piscinã de încruciºare) ºi anumite porþiuni din cei doi indi-
promiþãtori indivizi. O altã idee ar fi ca, la fiecare genera- vizi sunt interschimbate. Operatorul imitã încruciºarea in-
þie, sã fie înlocuitã doar o parte restrânsã a populaþiei. tercromozomialã naturalã. De regulã, se utilizeazã opera-
Ginfo nr. 8 - decembrie 2001

tori de încruciºare de tipul (2, 2), adicã doi pãrinþi dau naº-
Operatorii genetici tere la doi descendenþi. Încruciºarea realizeazã un schimb
Descriem în continuare operatorii genetici folosiþi, de obi- de informaþie între cei doi pãrinþi. Descendenþii obþinuþi
cei, într-un algoritm genetic. prin încruciºare vor avea caracteristici ale ambilor pãrinþi.
Datã fiind importanþa majorã a încruciºãrii, au fost propu-
Operatorul de reproducere se mai multe modele de încruciºare. Vom enumera aici câ-
Rolul operatorului de reproducere este de a menþine solu- teva dintre cele utilizate atunci când se foloseºte codifica-
þiile promiþãtoare din populaþie ºi de a le elimina pe cele rea binarã.
mai puþin promiþãtoare, pãstrând constantã dimensiunea
populaþiei. Aceasta se realizeazã astfel: Încruciºarea cu un punct de tãieturã
• se identificã soluþiile promiþãtoare din populaþie; Fie r lungimea cromozomilor. Un punct de tãieturã este
• se creeazã mai multe copii ale soluþiilor promiþãtoare; un numãr întreg k ∈ {1, 2, …, r - 1}. Numãrul k indicã po-
• se eliminã soluþiile mai puþin promiþãtoare din populaþie ziþia din interiorul cromozomului unde secvenþa cromo-
astfel încât multiplele copii ale soluþiilor promiþãtoare sã zomialã se rupe pentru ca segmentele obþinute sã se re-
poatã fi plasate în populaþie. combine cu alte segmente provenite de la alþi cromozomi.
33
Considerãm doi cromozomi: Trebuie reþinut faptul cã încruciºarea nu genereazã
x = x1x2…xkxk+1…xr ºi descendenþi aleatori. Deºi este improbabil ca fiecare încru-
y = y1y2…ykyk+1…yr. ciºare între douã soluþii din populaþie sã genereze soluþii fii
În urma recombinãrii se schimbã între cei doi cromo- mai promiþãtoare decât soluþiile pãrinte, totuºi în scurt
zomi secvenþele aflate în dreapta punctului de tãieturã k. timp devine clar cã ºansa de a crea soluþii mai promiþãtoare
Cromozomii fii vor fi: este mai mare decât în cazul cãutãrii aleatoare. Din încru-
x' = x1x2…xkyk+1…yr ºi ciºarea cu un singur punct de tãieturã a unei perechi de ºi-
y' = y1y2…ykxk+1…xr. ruri binare, se pot crea doar douã ºiruri pereche diferite
De exemplu, dacã avem o reprezentare mai sugestivã a care vor avea în componenþã biþi combinaþi din ambii pã-
focus

celor doi cromozomi: rinþi; soluþiile fiu create sunt, probabil, ºiruri cel puþin la
fel de promiþãtoare. Prin urmare, nu fiecare încruciºare poa-
te crea soluþii la fel de promiþãtoare, dar nu vor fi mai pu-
þin promiþãtoare decât pãrinþii. Dacã a fost obþinutã o so-
luþie mai puþin promiþãtoare, atunci aceasta nu va mai apã-
descendenþii vor fi: rea când se va aplica urmãtorul operator de reproducere ºi
astfel va avea o viaþã scurtã. Dacã este creatã o soluþie mai
promiþãtoare, atunci este probabil ca ea sã aibã mai multe
copii la urmãtoarea aplicare a operatorului de reproducere.
Pentru a pãstra o astfel de selecþie a ºirurilor promiþãtoare
în timpul aplicãrii operatorului de reproducere, nu toate
Încruciºarea cu mai multe puncte de tãieturã ºirurile din populaþie sunt folosite pentru încruciºare.
În cazul utilizãrii mai multor puncte de tãieturã, segmen-
tele obþinute se combinã dupã o regulã datã. Considerãm Operatorul de mutaþie
încruciºarea cu douã puncte de tãieturã. Acest tip de în- Operatorul de încruciºare este, în principal, responsabil cu
cruciºare se realizeazã conform schemei de mai jos. aspectul de cãutare al algoritmilor genetici, în timp ce ope-
Din cromozomii: ratorul de mutaþie este folosit pentru alte scopuri. Mutaþia
este cel de-al doilea operator genetic în ordinea importan-
þei ºi folosirii sale. Efectul acestui operator este schimbarea
valorii unei singure poziþii dintr-un cromozom. Prin mu-
taþie se introduc în populaþie indivizi care nu ar fi putut fi
vor rezulta doi descendenþi de tipul: obþinuþi prin alte mecanisme.
Operatorul de mutaþie acþioneazã asupra biþilor indi-
ferent de poziþia lor în cromozom. Fiecare bit al cromozo-
mului poate suferi o mutaþie. Într-un cromozom pot exis-
ta, aºadar, mai multe poziþii care suferã o mutaþie.
Mutaþia este un operator probabilist (adicã nu se aplicã
În cazul a trei puncte de tãieturã, descendenþii vor fi de cu siguranþã). Considerãm o populaþie de n indivizi (cro-
forma: mozomi), fiecare având lungimea r. Fiecare bit are aceeaºi
probabilitate pm de a suferi mutaþia.
Existã mai multe variante ale operatorului de mutaþie.
Una dintre ele ar fi mutaþia în forma tare. În aceastã situa-
Ginfo nr. 8 - decembrie 2001

þie se procedeazã în felul urmãtor: se genereazã un numãr


aleator q în intervalul [0, 1). Dacã q < pm, atunci se executã
Revenind la exemplul nostru, vom considera încruci- mutaþia poziþiei respective schimbând 0 în 1 sau 1 în 0. În
ºarea cu un singur punct de tãieturã. De exemplu, din în- caz contrar, poziþia respectivã nu se schimbã.
cruciºarea a douã soluþii reprezentate prin cutia care are Revenind la exemplul nostru, dacã aplicãm operatorul
fitness-ul 23, h = 8 ºi d = 10, respectiv cutia cu fitness-ul 26, de mutaþie unei soluþii obþinute în urma procesului de în-
h = 14 ºi d = 6, vor rezulta doi descendenþi care vor avea cruciºare, ºi anume soluþiei care are fitness-ul 22, vom ob-
fitness-ul 22, h = 10 ºi d = 6, respectiv fitness-ul 38, h = 12 þine o altã soluþie care va avea fitness-ul 16.
ºi d = 10 dupã modelul de mai jos:

Soluþia obþinutã este mai promiþãtoare decât soluþia origi-


nalã.
În consecinþã, operatorul de reproducere selecteazã ce-
34 le mai promiþãtoare ºiruri, operatorul de încruciºare com-
binã subºiruri din douã ºiruri promiþãtoare pentru a forma Recent, tehnicile de programare evolutivã au fost folo-
ºiruri mai promiþãtoare, iar operatorul de mutaþie schimbã site pentru rezolvarea problemelor de optimizare numeri-
ºirurile local, de asemenea, pentru a îmbunãtãþi soluþia. cã precum ºi în numeroase alte scopuri.

Strategii evolutive Programarea geneticã


Strategiile evolutive au fost dezvoltate ca metode de rezol- O altã abordare interesantã a fost descoperitã relativ re-
vare pentru problemele de optimizare a parametrilor. Pri- cent de John Koza (vezi [5]). Koza sugereazã cã programul
ma strategie evolutivã a fost bazatã pe o populaþie con- dorit va evolua el însuºi pe parcursul unui proces de evo-
stând dintr-un singur individ. De asemenea, este folosit un luþie. Cu alte cuvinte, în loc de a rezolva o problemã ºi în

focus
singur operator în procesul de evoluþie: mutaþia. Aceasta loc de a construi un program evolutiv care sã rezolve pro-
este în concordanþã cu conceptul biologic potrivit cãruia blema, vom încerca sã gãsim un cod sursã care sã o rezol-
modificãri mici au loc mai frecvent decât o modificare ma- ve. Koza a dezvoltat o nouã metodologie care furnizeazã
re. De obicei aceastã strategie conform cãreia un pãrinte dã un mod de a efectua aceastã cãutare.
naºtere prin mutaþie unui singur descendent este cunoscu- De exemplu, se doreºte obþinerea unui program Pascal
tã sub numele de strategie evolutivã 1 + 1. Felul în care se sau C++ care sã rezolve problema drumului hamiltonian
aplicã practic acest algoritm este simplu: se genereazã o so- sau problema ieºirii dintr-un labirint. Deci, nu ne intere-
luþie aleatoare pe domeniul de cãutare ºi se efectueazã mu- seazã sã obþinem o soluþie pentru un set oarecare de date,
taþii asupra ei. Este acceptat cel mai bun dintre pãrinte ºi ci, mai degrabã, ne intereseazã sã obþinem un program sur-
descendent. Operatorul de mutaþie se aplicã repetat pânã sã care sã genereze o soluþie corectã pentru orice intrare
când se ajunge la soluþie. datã. Cu alte cuvinte, ne intereseazã sã obþinem ca rezultat
Un alt tip de strategie este strategia (µ + λ): µ pãrinþi un program asemãnãtor cu cel pe care l-am fi putut scrie
produc λ descendenþi. Noua populaþie (temporarã) de (µ noi dacã am fi ºtiut sã rezolvãm problema.
+ λ) indivizi este redusã din nou - printr-un proces de se- Din punct de vedere evolutiv abordarea unor astfel de
lecþie - la µ indivizi. Pe de altã parte, în strategia (µ, λ), µ in- probleme se face generând o mulþime (populaþie) aleatoare
divizi produc λ descendenþi (λ > µ) ºi prin procesul de se- de coduri sursã care apoi sunt selectate pe baza funcþiei de
lecþie se alege o nouã populaþie de µ indivizi numai din fitness ºi evoluate cu ajutorul unor operatori genetici spe-
mulþimea celor λ descendenþi. Astfel, viaþa fiecãrui individ cifici.
este limitatã la o generaþie. În primul rând trebuie sã atribuim o funcþie de calitate
(funcþia fitness) fiecãrui program generat. Aceastã funcþie
Programare evolutivã de fitness trebuie sã reflecte performanþele programului
Tehnicile programãrii evolutive originale au fost dezvolta- cãruia îi este ataºatã.
te de Lawrence Fogel. El urmãrea o dezvoltare a inteligen- De obicei ataºarea unei funcþii de fitness se face rulând
þei artificiale în sensul dezvoltãrii abilitãþii de a prezice programul respectiv ºi mãsurând calitatea soluþiei în ra-
schimbãrile într-un mediu înconjurãtor. port cu o soluþie care se cunoaºte a fi optimã. Un program
Mediul înconjurãtor a fost descris ca o secvenþã de sim- va avea o calitate mai mare dacã soluþia generatã va fi mai
boluri, iar evoluarea algoritmului presupunea obþinerea unui asemãnãtoare cu cea a soluþiei corecte. Nu este grav dacã o
nou produs, ºi anume a unui nou simbol. Simbolul obþinut soluþie optimã nu se cunoaºte anterior, deoarece noi dorim
va maximiza funcþia finalã care mãsoarã acurateþea predicþi- sã obþinem soluþii cu un fitness cât mai mare (sau cât mai
ei. De exemplu, putem considera o serie de evenimente no- mic).
tate a1, a2, …, an; un algoritm va determina urmãtorul sim- Evoluarea programelor sursã se realizeazã prin opera-
bol (an+1), bazându-se pe simbolurile cunoscute a1, a2, …, an. tori genetici specifici. De exemplu, un operator de recom-
Ginfo nr. 8 - decembrie 2001

Ideea care stã la baza programãrii evolutive este de a binare poate însemna alipirea secvenþelor dintr-un cod
evolua un algoritm. Ca ºi în strategiile evolutive, ºi în tehni- sursã cu secvenþe din alt cod sursã. Un operator de mutaþie
ca programãrii evolutive se creeazã mai întâi descendenþii ar putea însemna inserarea de noi instrucþiuni în codul
ºi apoi se vor selecta indivizii pentru generaþia urmãtoare. sursã, ºtergerea de instrucþiuni, transformarea de instruc-
Fiecare pãrinte produce un singur descendent; deci dimen- þiuni. Evident, în urma aplicãrii acestor operatori genetici
siunea populaþiei intermediare se dubleazã (ca în strategia se genereazã cod sursã care conþine greºeli de sintaxã. De
evolutivã (n, n), unde n este dimensiunea populaþiei). asemenea, sunt generate secvenþe de cod sursã nefolositoa-
Descendentul este creat printr-o mutaþie aleatoare a pãrin- re. Exemple în acest sens sunt secvenþa de instrucþiuni:
telui (este posibil sã se aplice mai mult de o mutaþie unui i := i + 1;
individ). Un numãr de indivizi (cei mai promiþãtori) egal i := i - 1;
cu dimensiunea populaþiei sunt reþinuþi pentru noua gene- sau secvenþa:
raþie. În versiunea originalã acest proces este repetat pânã a := 0;
se obþine un nou simbol care este disponibil. Dupã ce s-a b := c / a;
obþinut un nou simbol, acesta este adãugat listei simbolu- De obicei, se evolueazã reprezentãri mai simple ale
rilor cunoscute ºi întregul proces se repetã. programelor de calculator ºi anume reprezentãrile arbo-
35
rescente. Existã limbaje de programare (de exemplu LISP) Structura algoritmului genetic propus pentru rezolva-
în care programele sunt scrise sub forma unor liste uºor rea acestei probleme a fost prezentatã mai sus. Vom folosi
transformabile în arbori. selecþia turnir pentru obþinerea populaþiei intermediare.
Operatorii genetici folosiþi sunt specifici codificãrii binare
Aplicaþie (încruciºare cu un singur punct de tãieturã, mutaþie cu
În cele ce urmeazã vom prezenta rezolvarea unei proble- probabilitate pm= 0.1).
me folosind algoritmii genetici Codul sursã al implementãrii este disponibil pentru
download la www.ginfo.ro/revista/11_8/.
Enunþ (Submulþime de sumã datã)
focus

Se considerã o mulþime M de n numere ºi un numãr S. Sã Concluzii ºi sfaturi practice


se determine o submulþime a mulþimii M care are suma În acest articol au fost prezentate principalele direcþii ale
elementelor cât mai apropiatã de numãrul S. algoritmilor evolutivi. Aplicaþiile practice ale acestor algo-
ritmi sunt nenumãrate. Ei sunt folosiþi în domenii tot mai
Rezolvare neaºteptate cum ar fi proiectarea aripilor de avion sau la
Determinarea unei submulþimi de sumã datã este o pro- proiectarea formei staþiilor orbitale. Dacã aþi ales sã rezol-
blemã NP-completã (vezi [4]). Aceasta înseamnã cã nu se vaþi o problemã evolutiv, trebuie sã þineþi cont de câteva
ºtie dacã existã sau nu un algoritm de complexitate poli- sfaturi.
nomialã pentru rezolvarea acestei probleme. Pânã în pre- • Pentru a rezolva o problemã cu algoritmi evolutivi tre-
zent, algoritmii folosiþi au complexitate exponenþialã, iar buie sã o transformaþi mai întâi într-o problemã de opti-
pentru anumite cazuri particulare au complexitate pseudo- mizare, adicã sã se minimizeze sau sã se maximizeze o
polinomialã. De exemplu, putem rezolva rezonabil aceas- valoare (cel mai scurt lanþ hamiltonian, cea mai mare com-
tã problemã, dacã datele de intrare îndeplinesc urmãtoa- ponentã intern stabilã etc.).
rele condiþii: • Algoritmii evolutivi sunt algoritmi euristici, adicã soluþia
• sunt cel mult 100 de numere naturale; gãsitã de ei nu este întotdeauna cea mai bunã, dar se aflã
• suma numerelor nu depãºeºte 500 (mai exact, produsul într-o vecinãtate a soluþiei optime. Deci, dacã aveþi de
dintre numãrul numerelor ºi suma acestora nu trebuie sã ales între un algoritm polinomial care rezolvã sigur pro-
depãºeascã dimensiunea maximã admisã pentru alocarea blema ºi un algoritm evolutiv, ar fi de preferat sã folosiþi
unei matrice (presupunem cã aceasta este alocatã static). algoritmul polinomial.
Dacã aceste condiþii ar fi îndeplinite am putea rezolva • Algoritmii evolutivi, de obicei, au complexitate polino-
uºor aceastã problemã prin metoda programãrii dinamice, mialã. De aceea ei sunt foarte des utilizaþi pentru a rezol-
folosind un algoritm de complexitate O(n · S) (vezi [6]). va problemele dificile (NP-complete). Rezultatele obþi-
Însã, dacã numerele nu ar fi întregi ci reale, sau suma nute sunt foarte apropiate de cele obþinute de algoritmii
lor ar fi mai mare decât 500, sau diferenþele între ele ar fi siguri, dar care au rulat mii de ore.
mari etc., atunci algoritmul prin programare dinamicã nu • Dacã problema este complexã folosiþi un algoritm gene-
mai poate fi folosit. Am enumerat aici doar cazurile im- tic ºi nu o strategie evolutivã. De obicei mutaþia este un
portante, dar pot fi imaginate ºi alte dificultãþi. operator de cãutare slab, deci, dacã se foloseºte doar aces-
Din aceste motive vom rezolva aceastã problemã cu ta, existã ºanse mari sã se obþinã o soluþii locale ºi nu glo-
ajutorul unui algoritm genetic. Va trebui sã gãsim o repre- bale.
zentare a soluþiei ºi, de asemenea, o funcþie de fitness.
Modul în care vom reprezenta soluþia ne este dat chiar Bibliografie
în enunþul problemei: se cere o submulþime a unei mulþimi 1. Beasley D., Bull D.R., Martin R.R., An Overview of
Ginfo nr. 8 - decembrie 2001

M cu n elemente. Deci, o soluþie a problemei este o sub- Genetic Algorithms, Part 1, Foundations, University
mulþime. Vom codifica o submulþime printr-un ºir de lun- Computing, Vol.15, No.4, pp. 170-181, 1993;
gime n care conþine doar valorile 0 ºi 1. Dacã o poziþie k 2. Dumitrescu D., Algoritmi genetici ºi strategii evolutive
va avea valoarea 1, atunci submulþimea respectivã va con- - Aplicaþii în inteligenþa artificialã ºi în domenii conexe,
þine elementul Mk (al k-lea element din mulþimea M), iar Editura Albastrã, Cluj-Napoca, 2000;
dacã pe poziþia k este valoarea 0, atunci elementul respec- 3. Goldberg D.E., Genetic Algorithms in Search, Optimi-
tiv nu aparþine submulþimii. Aceastã reprezentare a unei zation and Machine Learning, Addison - Wesley, Read-
submulþimi este specificã tipului set din Turbo Pascal. ing, MA,1989;
Modul de calcul al fitness-ului (calitãþii) unei soluþii 4. Garey M.R., Johnson D.S., Computers and Intractabi-
(submulþimi) este simplu. Calculãm suma elementelor sub- lity: A Guide to NP-completeness, W.H. Freeman and
mulþimii, iar fitness-ul va fi diferenþa (în valoare absolutã) Company, New York, 1978.
dintre suma obþinutã ºi numãrul dat S. În aceste condiþii 5. Koza J.R., Genetic Programming, MIT Press, Cam-
fitness-ul va trebui minimizat, deoarece noi dorim sã de- bridge, MA, 1992;
terminãm o submulþime pentru care suma elementelor es- 6. Oltean M., Proiectarea ºi implementarea algoritmilor,
36 te cât mai apropiatã de valoarea datã S. Computer Libris Agora, Cluj-Napoca, 2000.