Skip to content

Commit

Permalink
genetic algorith framwork
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkcuys committed Jul 20, 2009
1 parent 18247a6 commit 3ae80b5
Show file tree
Hide file tree
Showing 10 changed files with 137 additions and 1 deletion.
2 changes: 1 addition & 1 deletion CMakeLists.txt
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ project(texgen)
set(include_paths /usr/include/SDL /usr/include/GL)
include_directories( ${include_paths} )

set(src_files main.cpp sdlgl.cpp)
set(src_files main.cpp sdlgl.cpp simplegene.cpp simplefitness.cpp)
add_executable(texgen ${src_files})

set (link_libs GL GLEW SDL)
Expand Down
31 changes: 31 additions & 0 deletions geneticalgorithm.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include <vector>

using namespace Tai;
using namespace std;

template <class Gene, class FitnessFunction>
GeneticAlgorithm<Gene,FitnessFunction>::GeneticAlgorithm(const FitnessFunction& ff) : fitnessFunction(ff)
{
}

template <class Gene, class FitnessFunction>
GeneticAlgorithm<Gene,FitnessFunction>::~GeneticAlgorithm()
{
}

template <class Gene, class FitnessFunction>
void GeneticAlgorithm<Gene,FitnessFunction>::iterate()
{

// Selection for crossover
// Mutation
// Fitness Calculation
// Selection of next generation

typename vector<Gene>::iterator gene_it = population.begin();
for (; gene_it != population.end(); ++gene_it)
{
fitnessFunction.calculate(*gene_it);
}
}

28 changes: 28 additions & 0 deletions geneticalgorithm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#ifndef GENETICALGORITHM_H
#define GENETICALGORITHM_H

#include <vector>

namespace Tai
{
template <class Gene, class FitnessFunction>
class GeneticAlgorithm
{
public:
GeneticAlgorithm(const FitnessFunction &);
~GeneticAlgorithm();

void iterate();

typedef Gene GeneType;

private:
std::vector<Gene> population;
FitnessFunction fitnessFunction;

};
}; //namespace Tai

#include "geneticalgorithm.cpp"

#endif //GENETICALGORITHM_H
6 changes: 6 additions & 0 deletions main.cpp
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
#include "sdlgl.h"
#include "geneticalgorithm.h"
#include "simplegene.h"
#include "simplefitness.h"

#include <iostream>

Expand All @@ -8,6 +11,9 @@ int main(int argc, char **argv)
std::cout << "Starting texgen app" << std::endl;

SDLGLMain app;
Tai::SimpleFitness ff;
Tai::GeneticAlgorithm<Tai::SimpleGene, Tai::SimpleFitness> ga(ff);
ga.iterate();

return app.run();
}
Empty file modified sdlgl.cpp
100644 → 100755
Empty file.
Empty file modified sdlgl.h
100644 → 100755
Empty file.
10 changes: 10 additions & 0 deletions simplefitness.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "simplefitness.h"
#include "simplegene.h"

using namespace Tai;

double SimpleFitness::calculate(const SimpleGene& gene)
{
return 0.0;
}

16 changes: 16 additions & 0 deletions simplefitness.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef TAI_SIMPLEFITNESS
#define TAI_SIMPLEFITNESS

namespace Tai
{
// forward declaration
class SimpleGene;

class SimpleFitness
{
public:
double calculate(const SimpleGene&);
};
}; //namespace Tai

#endif //TAI_SIMPLEFITNESS
23 changes: 23 additions & 0 deletions simplegene.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "simplegene.h"

using namespace Tai;
using namespace std;


SimpleGene::SimpleGene()
{
}

SimpleGene::~SimpleGene()
{
}

int SimpleGene::getLength()
{
return 0;
//return values.length;
}

void SimpleGene::mutate()
{
}
22 changes: 22 additions & 0 deletions simplegene.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef TAI_SIMPLEGENE_H
#define TAI_SIMPLEGENE_H

#include <vector>

namespace Tai
{
class SimpleGene
{
public:
SimpleGene();
~SimpleGene();

int getLength();
void mutate();

private:
std::vector<double> values;
};
}; //namespace Tai

#endif //TAI_SIMPLEGENE_H

0 comments on commit 3ae80b5

Please sign in to comment.