30.01.2015 Views

Editura Sfântul Ierarh Nicolae ISBN 978-606-577-027-0

Editura Sfântul Ierarh Nicolae ISBN 978-606-577-027-0

Editura Sfântul Ierarh Nicolae ISBN 978-606-577-027-0

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

*afiseaza cea mai buna solutie gasita*/<br />

}<br />

Algoritmii genetici au o structura foarte generala, care permite folosirea lor pentru<br />

majoritatea problemelor. Ceea ce se schimba sunt urmatoarele:<br />

- codificarea cromozomilor;<br />

- initializarea populatiei;<br />

- incrucisarea;<br />

- mutatia.<br />

Vom da in continuare sursa completa ce implementeaza forma generala a<br />

programului. Pentru o mai buna lizibilitate a codului, toate functiile care se folosesc in<br />

acest program au fost mai intai declarate prin antetul lor inaintea programului principal, si<br />

dezvoltate apoi dupa acesta. Inca o data, comentariile la nivelul codului sursa sunt<br />

suficiente pentru a intelege ce se intampla.<br />

#include<br />

#include<br />

#include<br />

/*aici isi au prototipul functiile randomize() si random(int)*/<br />

const MaxPopulatie=100,<br />

/*numarul de cromozomi in populatie*/<br />

MaxIteratii=100,<br />

/*numarul de iteratii ale algoritmului*/<br />

MaxElitism=2,<br />

/*cati cromozomi sunt copiati prin elitism*/<br />

MaxCrossover=37,<br />

/*de cate ori apare incrucisarea intr-o populatie*/<br />

MaxMutatie=1;<br />

/*de cate ori apare mutatia intr-o populatie*/<br />

typedef struct{<br />

int gena[22];<br />

/*depinde de la problema la problema*/<br />

float fitness;<br />

}TCromozom;<br />

/*tipul care codifica un cromozom*/<br />

typedef TCromozom TPopulatie[MaxPopulatie+1];<br />

/*tipul care codifica o populatie*/<br />

TCromozom CelMaiBunCromozom;<br />

/*cea mai buna solutie in orice moment*/<br />

TPopulatie PopulatieVeche, PopulatieNoua;<br />

/*se lucreaza cu doua populatii*/<br />

int i,j,k,contor,co,r1,r2;<br />

int NrPop;<br />

void citire();<br />

void CalculFitness();<br />

void InitializeazaPopulatie();<br />

void Elitism(int NrMutati);<br />

void Crossover(TCromozom g1, TCromozom g2, TCromozom &rez1, TCromozom<br />

&rez2);<br />

void Mutatie(TCromozom &mutant);<br />

void MutaRestul(int NrMutati);<br />

void OrdoneazaDupaFitness();<br />

void SelectieParinti(int &r1, int &r2);<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!