GeneralPopulation.cpp

Go to the documentation of this file.
00001 #include "GeneralPopulation.h"
00002 #include "VecMat.h"
00003 using namespace std;
00004 GeneralPopulation::GeneralPopulation(const int popsize, const int genesize):
00005 Probabilities(popsize),
00006 CrowdingDistances(popsize),
00007 Population(popsize,genesize)
00008 {
00009         OldStored = false;
00010 }
00011 
00012 GeneralPopulation::~GeneralPopulation()
00013 {}
00014 
00015 GeneralPopulation::GeneralPopulation(GeneralPopulation &Old):
00016 OldPopulation(Old.OldPopulation),
00017 Probabilities(Old.Probabilities),
00018 CrowdingDistances(Old.CrowdingDistances),
00019 Population(Old.Population)
00020 {
00021         OldStored = Old.OldStored;
00022 }
00023 
00024 GeneralPopulation::GeneralPopulation(const tpopulation &FirstHalf, const tpopulation &SecondHalf):
00025 OldPopulation(FirstHalf.size1()+SecondHalf.size1(),FirstHalf.size2()),
00026 Probabilities(FirstHalf.size1()+SecondHalf.size1()),
00027 CrowdingDistances(FirstHalf.size1()+SecondHalf.size1()),
00028 Population(FirstHalf.size1()+SecondHalf.size1(),FirstHalf.size2())
00029 {
00030         OldStored = false;
00031         ublas::matrix_range<tpopulation> PopFirstHalf(Population, ublas::range(0,FirstHalf.size1()), ublas::range(0,FirstHalf.size2()));
00032         ublas::matrix_range<tpopulation> PopSecondHalf(Population, ublas::range(FirstHalf.size1(),FirstHalf.size1()+SecondHalf.size1()),
00033                  ublas::range(0,FirstHalf.size2()));
00034         PopFirstHalf = FirstHalf;
00035         PopSecondHalf = SecondHalf;
00036 }
00037 
00038 GeneralPopulation& GeneralPopulation::operator=(const GeneralPopulation &source)
00039 {
00040         if (this != &source)
00041         { 
00042                 OldPopulation = source.OldPopulation;   
00043                 Population = source.Population;
00044                 Probabilities = source.Probabilities;
00045                 CrowdingDistances = source.CrowdingDistances;
00046         }
00047         return *this;
00048 }
00049 
00050 void GeneralPopulation::PrintPopulation(ostream &output) const
00051 {
00052         const int popsize = Population.size1();
00053         const int genesize = Population.size2();
00054         int i,j;
00055         output << popsize << " " << genesize << endl;
00056         for (i = 0; i < popsize; ++i)
00057         {
00058                 for (j = 0; j < genesize; ++j)
00059                         output << Population(i,j) << " ";
00060                 output << endl;
00061         }
00062 }
00063 void GeneralPopulation::ResizePop(const int popsize, const int genesize)
00064 {
00065         OldPopulation.resize(popsize,genesize);
00066         Population.resize(popsize,genesize);
00067         Probabilities.resize(popsize);
00068         CrowdingDistances.resize(popsize);
00069 }
00070 
00071 void GeneralPopulation::ReadPopulation(std::istream &input)
00072 {
00073         unsigned int popsize, genesize, dummy;
00074         unsigned int i,j;
00075         
00076         input >> popsize >> genesize;
00077         ResizePop(popsize,genesize);
00078         for (i = 0; i < popsize; ++i)
00079         {
00080                 for (j = 0; j < genesize; ++j)
00081                 {
00082                         input >> dummy;
00083                         Population(i,j) = (dummy == 1);
00084                 }
00085         }
00086 }
00087 void GeneralPopulation::PrintProbabilities(std::ostream &output) const
00088 {
00089         for (unsigned int i = 0; i < Probabilities.size(); ++i)
00090         {
00091                 output << Probabilities(i) << " ";
00092         }
00093         output << endl;
00094 }
00095 
00096 void GeneralPopulation::PrintDistances(std::ostream &output) const
00097 {
00098         for (unsigned int i = 0; i < CrowdingDistances.size(); ++i)
00099         {
00100                 output << CrowdingDistances(i) << " ";
00101         }
00102         output << endl;
00103 }

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