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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6) Mutatia<br />

Mutatia are o probabilitate de 1% si se realizeaza prin inversarea valorilor bitilor<br />

tuturor genelor unui cromozom ales in mod aleator.<br />

7) Cel mai bun cromozom<br />

Se initializeaza in functia InitializeazaPopulatie() si intr-o generatie se calculeaza in<br />

functia OrdoneazaDupaFitness().<br />

In continuare vom da codul sursa complet al problemei care afla maximul unei functii<br />

in 6 nedeterminate, expresia ei aflandu-se in functia float Functia(float<br />

Nedet[MaxGena+1]).<br />

#include<br />

#include<br />

#include<br />

#include<br />

const MaxPopulatie=100,<br />

MaxIteratii=200,<br />

MaxElitism=3,<br />

MaxCrossover=30,<br />

MaxMutatie=1,<br />

MaxGena=6,<br />

NrBiti=15;<br />

typedef struct{<br />

int gena[MaxGena+1][NrBiti+1];<br />

float fitness;<br />

}TCromozom;<br />

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

TCromozom CelMaiBunCromozom;<br />

TPopulatie PopulatieVeche, PopulatieNoua;<br />

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

float LungDiv=0;<br />

int NrPop,a,b;<br />

void Citire();<br />

float Functia(float Nedet[MaxGena+2]);<br />

float Transf(TCromozom g,int j);<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 SelectieParintiAranjata(int &r1, int &r2);<br />

void Afiseaza();<br />

void main()<br />

{<br />

int i,j;<br />

Citire();<br />

randomize();<br />

InitializeazaPopulatie();<br />

CelMaiBunCromozom.fitness=0;<br />

OrdoneazaDupaFitness();<br />

for(i=1;i

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

Saved successfully!

Ooh no, something went wrong!