Sunteți pe pagina 1din 9

10

SOFTWARE DE ALGORITMI
EVOLUTIVI

Vom descrie câteva din cele mai cunoscute pachete de


programe folosite pentru a rezolva probleme cu ajutorul algoritmilor
evolutivi.

GENESIS:GENEtic Search Implementation System (autor,


John Grefenstette) este scris în limbajul C şi poate fi utilizat sub Linux
sau MsDos. Uşurinţa sa în utilizare a făcut ca, mult timp, să fie cel
mai utilizat pachet de programe în probleme de optimizare a
funcţiilor. Totuşi, are şi limitări importante: nu admite decât
reprezentări binare sau vectori de numere reale, implementează doar
încrucişarea dublă şi este dificil de extins.
Pachetul este însoţit de un ghid de utilizare foarte clar şi
concis, care prezintă principalele opţiuni de utilizare şi modul cum se
setează diverşi parametri. GENESIS a fost, şi încă mai este, important
ca material didactic.
232
GENEsYs (autor, Thomas Bäck) este o extensie a
programului GENESIS, modul de utilizare fiind aproape identic. El
elimină o parte din limitările programului de bază; de exemplu,
permite încrucişarea multiplă, introduce diverse metode de selecţie,
permite autoadaptarea ratei de mutaţie. Totuşi, nici această versiune
nu aduce noutăţi în privinţa reprezentării datelor. Sunt utilizate o
mulţime de funcţii obiectiv: funcţii De Jong, funcţii continue
complicate, funcţii binare, funcţii fractale.

DGENESIS: Distributed GA (autor, Erick Cantu-Paz) este


bazat pe GENESIS 5.0 şi are scopul de a implementa un algoritm
genetic distribuit pentru o reţea de staţii de lucru. Fiecare subpopulaţie
este prelucrată printr-un process UNIX iar utilizatorul poate fixa rata
de migrare, intervalul de migrare şi topologia comunicării dintre
subpopulaţii.

Simple GA (autor, Stephen J. Hartley) este scris în Java şi


este mai complex decât programele anterioare. Principala slăbiciune
constă în absenţa unor clase care să implementeze structuri de date
complexe (de exemplu, arbori) dar structura ierarhiei de clase permite
utilizatorului să-şi creeze cu uşurinţă astfel de reprezentări.

232
233
GAL: Simple GA in Lisp (autor, Bill Spears) este un program
în Common Lisp bazat pe pachetul GENESIS. Foloseşte încrucişarea
multiplă aplicată la 60% din indivizi dar este posibil să se utilizeze şi
încrucişarea uniformă; mutaţia este bazată pe fitnessul proporţionat.

GALIB (autor, Matthew Wall) este scris în C++ şi poate fi


rulat sub diverse sisteme de operare (Win 9.x, Win NT, Linux, MAC,
etc). Este un pachet deosebit de complex: conţine clase predefinite
pentru reprezentarea cromozomilor ca şiruri binare, matrice binare,
vectori reali, matrice reale, arbori, etc. şi defineşte un mare număr de
operatori de evoluţie pentru fiecare din aceste reprezentări.
Documentaţia este foarte detaliată, conţinând peste 190 de pagini în
format html.

SUGAL (autor, Andrew Hunter) este scris în C şi poate fi


utilizat sub Linux şi Windows. Pentru cei care nu cunosc foarte bine
limbajul C++, SUGAL este o alternativă la pachetul GALIB. La fel
ca şi acesta dispune de o gamă largă de reprezentări şi de operatori
evolutivi. Documentaţia este foarte bogată, ghidul de utilizare având
în jur de 145 de pagini html. De asemenea, conţine un mare număr de
exemple, ceea ce permite ca de fiecare dată să se găsească printre ele
unul destul de apropiat de problema de rezolvat.

GAGA: A Genetic Algorithm for General Application este


un algoritm general folosit pentru a minimiza funcţii obiectiv

233
234
dificile.Versiunea originală, scrisă de Hilary Adams, a fost modificată
de Ian Poole şi rescrisă în C de Jon Crowcroft .

GENOCOP, Genetic-2, Genetic-2N: (autor, Zbigniew


Michalewicz) sunt pachete de algoritmi genetici folosiţi pentru
optimizări numerice.

GENOCOP: GEnetic algorithm for Numerical Optimization


for COnstrained Problems, optimizează funcţii cu orice număr de
restricţii liniare de tip egalitate sau inegalitate.

Genetic-2 : rezolvă problema de transport liniară, minimizând costul


transportului.

Genetic-2N : rezolvă problema de transport neliniară, minimizând


costul transportului.

GenET: (autor, Cezary Z. Janikow) este un pachet de


programe , scrise în C++, care permite dezvoltarea rapidă de aplicaţii,
idependent de domeniu. GenET a fost scris cu intenţia de a deveni o
bibliotecă de reprezentări şi operatori ce pot fi utilizaţi ca un
mecanism de a compara diferite modele şi strategii. Conţine multe
exemple de implementări pentru probleme cu structuri omogene sau
heterogene şi furnizează diverse modele ale populaţiei, caracteristice
algoritmilor genetici şi programării evolutive. Permite adaptarea
automată a probabilităţilor operatorilor şi un mecanism de selecţie
dinamic.

234
235
SES: Simple Evolution Strategy (autor, Joachim Sprave) este
un program (în limbajul C) de optimizare parametrică bazat pe
strategii evolutive. SES este o implementare tradiţională a strategiilor
evolutive, dar are şi unele deficienţe:
- mutaţiile corelate şi încrucişarea globală nu sunt implementate
- încrucişarea discretă operează simultan asupra ambilor parametri:
 i şi x i sunt luaţi din acelaşi părinte pentru fiecare poziţie i .

EM: Evolution Machine (autori: Hans-Michael Voigt,


Joachim Born, Jens Treptow) reprezintă o colecţie de algoritmi
genetici şi strategii evolutive, aplicabili problemelor de optimizare cu
codificare reală. EM tratează în principal algoritmi genetici dar are şi
abordări ale căutării evolutive. O caracteristică este reprezentarea
grafică (în una, două şi trei dimensiuni) a rezultatelor, ceea ce permite
analiza funcţiei fitness şi a evoluţiei procesului de optimizare.

LICE (autor, Joachim Sprave) este un program de optimizare


parametrică bazat pe strategii evolutive; foloseşte o schemă de selecţie
locală pentru a preveni stagnarea prematură.

WinGA: Simple Genetic Algorithm for Windows (autor,


Jason H. Moore) este o demonstraţie interactivă de utilizare a
algoritmilor genetici. Programul permite utilizatorului să varieze
parametrii algoritmului genetic şi să analizeze performanţele.

235
236
TOLKIEN: TOoLKIt gENetics-based applications (autor,
Anthony Yiu-Cheung Tang) este o bibliotecă de clase C++ pentru
utilizarea algoritmilor genetici şi a sistemelor de clasificare. Pachetul
include textul sursă, un manual de utilizare, un tutorial şi câteva
programe demonstrative.

GAucsd: Genetic Algorithm Software Package (autor, Nici


Schraudolph) este bazat pe GENESIS, dar se deosebeşte prin
numeroase îmbunătăţiri; cele mai importante se referă la simplificarea
scrierii evaluării funcţiilor şi la codificarea parametrilor. Aceste
modificări duc la creşterea performanţei căutării în spaţii continue.

GAC: Simple GA in C (autor, Bill Spears) foloseşte


încrucişarea cu n puncte aplicată la 60% din populaţie ( n fiind mai
mic decât lungimea unui cromozom), dar este posibil să se folosească
şi încrucişarea uniformă. Mutaţia este foarte puţin folosită iar selecţia
este de tip fitness proporţionat.

GAGS: Genetic algorithm application generator and C++


class library (autor, J.J. Merelo Guervos) . GAGS 0.92 (Genetic
Algorithms from Granada, Spain) este un generator, scris în C++, de
aplicaţii de tip algoritm genetic. GAGS oferă următoarele posibilităţi:
• lucrul cu indivizi de dimensiune variabilă
• selecţia de tip turneu, ruletă
• încrucişarea cu două puncte
236
237
• mutaţia la nivel de bit

GAMusic: Genetic Algorithm to Evolve Musical Melodies


(autor, Jason H. Moore) generează melodii scurte iar utilizatorul le
asociază fitnessul corespunzător. Operaţiile de mutaţie şi încrucişare
la nivelul frecvenţelor sunt controlate de utilizator. Fiecare serie de
note muzicale este reprezentată în binar într-un tablou de dimensiune
128, ceea ce permite 30 note pe melodie şi furnizează un spaţiu al
soluţiilor de aproximativ 3 .4  10 38 melodii.

GENALG: Genetic Algorithm package written in Pascal


(autor, Wesley R. Elsberry) este un program care demonstrează lucrul
cu algoritmi genetici. Pornind de la o populaţie de numere reale
generate aleator, încearcă să găsească un număr suficient de aproape
de un număr dat.

GenET: Domain-independent generic GA software


package (autor, Cezary Z. Janikow) permite dezvoltarea rapidă de
aplicaţii, fiind o bibliotecă de reprezentări şi operatori. Permite lucrul
cu diverse modele: algoritmi genetici, steady-state, modele  n, m  şi
 n , n  m  de programare evolutivă.

Genie: GA-based modeling/forecasting system (autor, Lance


Chambers) este utilizat în planificarea pe termen lung: construieşte un
model al unui “mediu” şi prognozează cum va evolua mediul în viitor.

237
238
GENlib: Genetic Algorithms and Neural Networks (autor,
Jochen Ruhland) este o bibliotecă ce conţine funcţii pentru algoritmi
genetici şi două aplicaţii pentru antrenarea reţelelor neuronale. Prima
aplicaţie utilizează algoritmi genetici pentru a antrena o reţea feed-
forward cu trei nivele ca să poată lucra ca funcţia cosinus. Un astfel de
antrenament este foarte dificil de efectual cu un algoritm de tip
„propagare înapoi”, în timp ce algoritmii genetici dau rezultate foarte
bune. A doua aplicaţie dezvoltă o reţea neuronală care imită funcţia
XOR. Pentru aceasta sunt folosiţi doi algoritmi genetici: primul
stabileşte topologia reţelei iar al doilea ajustează ponderile.

mGA: C and Common Lisp implementations of a messy


GA (autori: Kalyanmoy Deb, David E. Goldberg, T. Kerzic) este o
implementare în C a algoritmilor genetici dezordonaţi. De asemenea,
este disponibilă şi o versiune în Common Lisp. Testele prezentate
scot în evidenţă faptul că aceşti algoritmi găsesc întotdeauna optimul
global, într-un timp polinomial.

ParaTSP: Parallel GA with Simulated Annealing to solve


TSP's (autor, Holger Totzke) este un pachet software (bazat pe
GENEsYs) folosit pentru a rezolva problema comis voiajorului, cu
ajutorul algoritmilor genetici şi a călirii simulate.

238
239

http://www.cs.cmu.edu/afs/cs/project/ai-
repository/ai/areas/genetic/ga/systems/0.html

239

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