Algoritmi genetici pentru rezolvarea problemelor prin - Sorin ...
Algoritmi genetici pentru rezolvarea problemelor prin - Sorin ...
Algoritmi genetici pentru rezolvarea problemelor prin - Sorin ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Genome.cpp<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
//////////////////////////////////////////////////<br />
// (c) 2003 <strong>Sorin</strong> OSTAFIEV (sorin@ostafiev.com) //<br />
//////////////////////////////////////////////////<br />
// Genome.cpp: implementation of the Genome class.<br />
//<br />
//////////////////////////////////////////////////////////////////////<br />
#include "stdafx.h"<br />
#include "StringCovering.h"<br />
#include "Genome.h"<br />
#include "globals.h"<br />
#include <br />
#include "Population.h"<br />
#ifdef _DEBUG<br />
#undef THIS_FILE<br />
static char THIS_FILE[]=__FILE__;<br />
#define new DEBUG_NEW<br />
#endif<br />
//////////////////////////////////////////////////////////////////////<br />
// Construction/Destruction<br />
//////////////////////////////////////////////////////////////////////<br />
Genome::Genome(const Population* const population, const GA* const ga, const genome_type type /* = GENOME_ZERO */)<br />
_population(population),<br />
_ga(ga),<br />
_populationFitness(-1),<br />
_gaFitness(-1),<br />
_body(_genome_size)<br />
{<br />
switch (type)<br />
{<br />
}<br />
};<br />
case GENOME_RANDOM:<br />
{<br />
for (int i = 0; i < _genome_size; i++)<br />
{<br />
if (0 == (rand() & 1))<br />
{<br />
_body.reset(i);<br />
}<br />
else<br />
{<br />
_body.set(i);<br />
};<br />
};<br />
};<br />
break;<br />
case GENOME_ZERO:<br />
{<br />
_body.reset();<br />
};<br />
break;<br />
default:<br />
assert(0);<br />
break;<br />
Genome::~Genome()<br />
{<br />
}<br />
void Genome::Mutate()<br />
{<br />
assert (_genome_size == _body.size());<br />
}<br />
const int mutation_bit = rand() % _genome_size;<br />
_body.flip(mutation_bit);<br />
void Genome::Crossover(Genome &genome)<br />
Page 1 of 4