testselect.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include "SimpleSelect.h"
00003 #include "BinaryTournamentSelect.h"
00004 #include "UniformRNG.h"
00005 #include "BinaryPopulation.h"
00006 #include "gentypes.h"
00007 using namespace std;
00008 #include <boost/numeric/ublas/io.hpp>
00009 #include <boost/function.hpp>
00010 #include <boost/bind.hpp>
00011 
00012 const int popsize = 10;
00013 const int genesize =10;
00014 const tprobabilityv &SetProbabilities(const tprobabilityv &Probabilities)
00015 {
00016         return Probabilities;
00017 }
00018 
00019 int main()
00020 {
00021         UniformRNG Random;
00022         
00023         
00024         tprobabilityv probabilities(popsize);
00025         BinaryPopulation Population(popsize,genesize,&Random);
00026         BinaryTournamentSelect Select(&Random,boost::bind(&GeneralPopulation::GetProbabilities,boost::ref(Population)),
00027                 boost::bind(&GeneralPopulation::GetCrowdingDistances,boost::ref(Population)));
00028         tcrowddistv distances(popsize);
00029         double sum=0;
00030         const double fixed = Random.GetNumber();
00031         
00032         for (int i = 0; i < popsize/2; ++i)
00033         {
00034                 probabilities(i) = fixed;
00035                 distances(i) = Random.GetNumber();
00036                 sum += probabilities(i);
00037         }
00038         for (int i = popsize/2; i < popsize; ++i)
00039         {
00040                 probabilities(i) = Random.GetNumber();
00041                 distances(i) = Random.GetNumber();
00042                 sum += probabilities(i);
00043         }
00044         cout <<"Input Probabilities: ";
00045         for (int i = 0; i < popsize; ++i)
00046         {
00047                 probabilities(i) /= sum;
00048                 cout << probabilities(i) << " ";
00049         }
00050         cout << endl;
00051         cout <<"Input Distances: ";     
00052         cout << distances;
00053         cout << endl;
00054         Population.SetProbabilities(probabilities);
00055         Population.SetCrowdingDistances(distances);
00056         Select.Init();
00057         for (int i = 0; i < popsize; ++i)
00058         {
00059                 cout << probabilities(i) << " " << Select.GetOne() << endl;
00060         }
00061         
00062 }

Generated on Fri Jul 4 15:30:21 2008 for GPLIB++ by  doxygen 1.5.5