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
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