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

Zdt1.cpp

Go to the documentation of this file.
00001 
00011 #include <Zdt1.h>
00012 
00018 Zdt1::Zdt1(VariableType variableType) {
00019 
00020   problemName_ = "ZDT1-MOP-G1" ;
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 
00040   upperLimit_      = new double[numberOfVariables_] ;
00041   lowerLimit_      = new double[numberOfVariables_] ;
00042   partitions_      = new int[numberOfVariables_]    ;
00043   precision_       = new int[numberOfVariables_]    ;
00044   bitsPerVariable_ = new int[numberOfVariables_]    ;
00045   
00046   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00047   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00048   memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00049   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00050 
00051   variable_ = new VariableType[numberOfVariables_] ;
00052 
00053   initializeRealVariableType(variableType) ;
00054   cout << "Created a " << problemName_ << " problem" << endl ;
00055 
00056 } // Zdt1::Zdt1
00057 
00058 
00059 static double g(MultiobjectiveProblem * problem, Individual * individual) {
00060   int i ;
00061   double sum ;
00062   
00063   sum = 0;
00064   for (i = 1; i < problem->numberOfVariables_; i++)
00065     sum += (individual->chromosome_->gene_[i])->getRealAllele() ;
00066   
00067   return 1 + 9/(problem->numberOfVariables_ - 1)* sum ;
00068 } ;
00069 
00070 
00071 void Zdt1::evaluate(Individual * individual) {
00072   int    i ;
00073   double x ;
00074 
00075   x = (individual->chromosome_->gene_[0])->getRealAllele() ;
00076   // First function
00077   individual->fitness_[0] = x;
00078 
00079   // Second function
00080 
00081   individual->fitness_[1] = 1 - sqrt(x/g(this, individual)) ;
00082 } // Zdt1::evaluate
00083 
00084 

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