t-eoinclusion.cpp

00001 //-----------------------------------------------------------------------------
00002 // t-eoinclusion.cpp
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 //-----------------------------------------------------------------------------

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