00001
00002
00003
00004
00005 #include <ga/eoBin.h>
00006 #include <eoPop.h>
00007 #include <eoInclusion.h>
00008
00009
00010
00011 typedef eoBin<float> Chrom;
00012
00013 #include "binary_value.h"
00014
00015
00016
00017 main()
00018 {
00019 const unsigned CHROM_SIZE = 4;
00020
00021 eoBinRandom<Chrom> random;
00022 BinaryValue eval;
00023
00024 for (unsigned POP_SIZE = 4; POP_SIZE <=6; POP_SIZE++)
00025 {
00026 eoPop<Chrom> pop;
00027 unsigned i;
00028 for ( i = 0; i < POP_SIZE; i++)
00029 {
00030 Chrom chrom(CHROM_SIZE);
00031 random(chrom);
00032 eval(chrom);
00033 pop.push_back(chrom);
00034 }
00035
00036 for (unsigned POP2_SIZE = 4; POP2_SIZE <=6; POP2_SIZE++)
00037 {
00038 eoPop<Chrom> pop2, pop3, pop4, pop5;
00039
00040 for (i = 0; i < POP2_SIZE; i++)
00041 {
00042 Chrom chrom(CHROM_SIZE);
00043 random(chrom);
00044 eval(chrom);
00045 pop2.push_back(chrom);
00046 }
00047
00048 std::cout << "--------------------------------------------------" << std::endl
00049 << "breeders \tpop" << std::endl
00050 << "--------------------------------------------------" << std::endl;
00051 for (i = 0; i < max(pop.size(), pop2.size()); i++)
00052 {
00053 if (pop.size() > i)
00054 std::cout << pop[i] << " " << pop[i].fitness() << " \t";
00055 else
00056 std::cout << "\t\t";
00057 if (pop2.size() > i)
00058 std::cout << pop2[i] << " " << pop2[i].fitness();
00059 std::cout << std::endl;
00060 }
00061
00062 eoInclusion<Chrom> inclusion(0.75);
00063 pop3 = pop2;
00064 inclusion(pop, pop3);
00065
00066 eoInclusion<Chrom> inclusion2;
00067 pop4 = pop2;
00068 inclusion2(pop, pop4);
00069
00070 eoInclusion<Chrom> inclusion3(1.5);
00071 pop5 = pop2;
00072 inclusion3(pop, pop5);
00073
00074 std::cout << std::endl
00075 << "0.75 \t\t1.0 \t\t1.5" << std::endl
00076 << "---- \t\t--- \t\t---" << std::endl;
00077 for (i = 0; i < pop5.size(); i++)
00078 {
00079 if (pop3.size() > i)
00080 std::cout << pop3[i] << " " << pop3[i].fitness() << " \t";
00081 else
00082 std::cout << " \t\t";
00083 if (pop4.size() > i)
00084 std::cout << pop4[i] << " " << pop4[i].fitness() << " \t";
00085 else
00086 std::cout << " \t\t";
00087 if (pop5.size() > i)
00088 std::cout << pop5[i] << " " << pop5[i].fitness();
00089 std::cout << std::endl;
00090 }
00091 }
00092 }
00093
00094 return 0;
00095 }
00096
00097