00001
00002
00003
00004
00005 #include <eo>
00006
00007
00008
00009 typedef eoBin<float> Chrom;
00010
00011 void binary_value(Chrom& chrom)
00012 {
00013 float sum = 0;
00014 for (unsigned i = 0; i < chrom.size(); i++)
00015 if (chrom[i])
00016 sum += pow(2, i);
00017 chrom.fitness(sum);
00018 }
00019
00020
00021
00022 main()
00023 {
00024 const unsigned POP_SIZE = 8, CHROM_SIZE = 4;
00025
00026 eoPop<Chrom> pop, pop2;
00027 eoBinRandom<Chrom> random;
00028 unsigned i;
00029
00030 for (i = 0; i < POP_SIZE; i++)
00031 {
00032 Chrom chrom(CHROM_SIZE);
00033 random(chrom);
00034 binary_value(chrom);
00035 pop.push_back(chrom);
00036 }
00037
00038 std::cout << "original population:" << std::endl;
00039 sort(pop.begin(), pop.end());
00040 for (i = 0; i < pop.size(); i++)
00041 std::cout << pop[i] << " " << pop[i].fitness() << std::endl;
00042
00043 eoLottery<Chrom> lottery;
00044 lottery(pop, pop2);
00045
00046 std::cout << "selected by lottery population:" << std::endl;
00047 sort(pop2.begin(), pop2.end());
00048 for (i = 0; i < pop2.size(); i++)
00049 std::cout << pop2[i] << " " << pop2[i].fitness() << std::endl;
00050
00051 return 0;
00052 }
00053
00054