Main Page | Namespace List | Class Hierarchy | Compound List | File List | Compound Members | File Members

Zdt2.cpp

Go to the documentation of this file.
00001 
00011 #include <Zdt2.h>
00012 
00018 Zdt2::Zdt2(VariableType variableType) {
00019 
00020   problemName_ = "ZDT2-MOP-G2" ;
00021 
00022   numberOfVariables_   = 30 ;
00023   numberOfFunctions_   = 2 ;
00024   numberOfConstraints_ = 0 ;
00025 
00026   const double upperLimit[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00027                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00028                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1} ;
00029   const double lowerLimit[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00030                                0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00031                                0, 0, 0, 0, 0, 0, 0, 0, 0, 0} ;
00032   const int    partitions[] = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
00033                                5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
00034                                5, 5, 5, 5, 5, 5, 5, 5, 5, 5} ;
00035   const int precision[]     = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
00036                                5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
00037                                5, 5, 5, 5, 5, 5, 5, 5, 5, 5} ;
00038 
00039   upperLimit_      = new double[numberOfVariables_] ;
00040   lowerLimit_      = new double[numberOfVariables_] ;
00041   partitions_      = new int[numberOfVariables_]    ;
00042   precision_       = new int[numberOfVariables_]    ;
00043   bitsPerVariable_ = new int[numberOfVariables_]    ;
00044   
00045   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00046   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00047   memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00048   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00049 
00050   variable_ = new VariableType[numberOfVariables_] ;
00051 
00052   initializeRealVariableType(variableType) ;
00053   cout << "Created a " << problemName_ << " problem" << endl ;
00054 
00055 } // Zdt2::Zdt2
00056 
00057 
00058 static double g(MultiobjectiveProblem * problem, Individual * individual) {
00059   int i ;
00060   double sum ;
00061   
00062   sum = 0;
00063   for (i = 1; i < problem->numberOfVariables_; i++)
00064     sum += (individual->chromosome_->gene_[i])->getRealAllele() ;
00065   
00066   return 1 + 9/(problem->numberOfVariables_ - 1)* sum ;
00067 } ;
00068 
00069 
00070 void Zdt2::evaluate(Individual * individual) {
00071   int    i ;
00072   double x ;
00073 
00074   x = (individual->chromosome_->gene_[0])->getRealAllele() ;
00075   // First function
00076   individual->fitness_[0] = x;
00077 
00078   // Second function
00079   double tmp = x/g(this, individual) ;
00080   individual->fitness_[1] = 1 - tmp * tmp  ;
00081 } // Zdt2::evaluate
00082 
00083 
00084 

Generated on Wed Feb 11 10:38:02 2004 for Paes by doxygen 1.3.3