*** empty log message ***
This commit is contained in:
parent
9415bfad74
commit
c99bce368c
3 changed files with 118 additions and 0 deletions
86
eo/tutorial/ParadisEO/Lesson3/CellularBitEA.cpp
Normal file
86
eo/tutorial/ParadisEO/Lesson3/CellularBitEA.cpp
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
#include <stdexcept>
|
||||
#include <iostream>
|
||||
#include <strstream>
|
||||
|
||||
#include <eo>
|
||||
#include <ga.h>
|
||||
|
||||
typedef eoBit<double> Indi;
|
||||
|
||||
#include "binary_value.h"
|
||||
|
||||
void main_function(int argc, char **argv)
|
||||
{
|
||||
|
||||
const unsigned int SEED = 42;
|
||||
const unsigned int VEC_SIZE = 8;
|
||||
const unsigned int POP_SIZE = 25;
|
||||
|
||||
const unsigned int MAX_GEN = 100;
|
||||
|
||||
const double P_MUT_PER_BIT = 0.01;
|
||||
|
||||
rng.reseed(SEED);
|
||||
|
||||
eoEvalFuncPtr<Indi, double, const vector<bool>& > eval( binary_value );
|
||||
|
||||
eoUniformGenerator<bool> uGen;
|
||||
eoInitFixedLength<Indi> random(VEC_SIZE, uGen);
|
||||
|
||||
eoPop<Indi> pop(POP_SIZE, random);
|
||||
|
||||
|
||||
apply<Indi>(eval, pop);
|
||||
|
||||
pop.sort();
|
||||
|
||||
cout << "Initial Population" << endl;
|
||||
cout << pop;
|
||||
|
||||
eo1PtBitXover<Indi> xover1;
|
||||
|
||||
eoBitMutation<Indi> mutationBitFlip(P_MUT_PER_BIT);
|
||||
|
||||
eoGenContinue<Indi> genCont(MAX_GEN);
|
||||
|
||||
eoBestSelect <Indi> select ;
|
||||
|
||||
eoToricCellularEasyEA <Indi> gga (genCont,
|
||||
eval,
|
||||
select,
|
||||
xover1,
|
||||
mutationBitFlip,
|
||||
select,
|
||||
select) ;
|
||||
|
||||
cout << "\n Here we go\n\n";
|
||||
gga(pop);
|
||||
|
||||
pop.sort();
|
||||
cout << "FINAL Population\n" << pop << endl;
|
||||
|
||||
}
|
||||
|
||||
// A main that catches the exceptions
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
// rng.reseed(42);
|
||||
int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
|
||||
flag |= _CRTDBG_LEAK_CHECK_DF;
|
||||
_CrtSetDbgFlag(flag);
|
||||
// _CrtSetBreakAlloc(100);
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
main_function(argc, argv);
|
||||
}
|
||||
catch(exception& e)
|
||||
{
|
||||
cout << "Exception: " << e.what() << '\n';
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
15
eo/tutorial/ParadisEO/Lesson3/Makefile
Normal file
15
eo/tutorial/ParadisEO/Lesson3/Makefile
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
.cpp: ; c++ -DPACKAGE=\"eo\" -DVERSION=\"0.9.1\" -I. -I../../../src -Wall -g -o $@ $*.cpp ../../../src/utils/libeoutils.a ../../../src/libeo.a
|
||||
|
||||
.cpp.o: ; c++ -DPACKAGE=\"eo\" -DVERSION=\"0.9.1\" -I. -I../../../src -Wall -g -c $*.cpp
|
||||
|
||||
ALL = CellularBitEA
|
||||
|
||||
lesson3 : $(firstEA)
|
||||
|
||||
all : $(ALL)
|
||||
|
||||
clean :
|
||||
@/bin/rm $(ALL) *.o *~
|
||||
|
||||
CellularBitEA : binary_value.h
|
||||
|
||||
17
eo/tutorial/ParadisEO/Lesson3/binary_value.h
Normal file
17
eo/tutorial/ParadisEO/Lesson3/binary_value.h
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include <eo>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/** Just a simple function that takes binary value of a chromosome and sets
|
||||
the fitnes.
|
||||
@param _chrom A binary chromosome
|
||||
*/
|
||||
// INIT
|
||||
double binary_value(const vector<bool>& _chrom)
|
||||
{
|
||||
double sum = 0;
|
||||
for (unsigned i = 0; i < _chrom.size(); i++)
|
||||
sum += _chrom[i];
|
||||
return sum;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue