t-eolottery.cpp

00001 //-----------------------------------------------------------------------------
00002 // t-eolottery.cpp
00003 //-----------------------------------------------------------------------------
00004 
00005 #include <eo>  // eoBin, eoPop, eoLottery
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 //-----------------------------------------------------------------------------

Generated on Thu Oct 19 05:06:43 2006 for EO by  doxygen 1.3.9.1