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

Viennet3.cpp

Go to the documentation of this file.
00001 
00010 #include <Viennet3.h>
00011 
00012 // STEP 3. Define the constructor of the class
00013 
00019 Viennet3::Viennet3(VariableType variableType) {
00020 
00021   problemName_ = "Viennet3-MOP5" ;
00022 
00023   numberOfVariables_   = 2 ;
00024   numberOfFunctions_   = 3 ;
00025   numberOfConstraints_ = 0 ;
00026 
00027   const double upperLimit[] = {3.0, 3.0} ;
00028   const double lowerLimit[] = {-3.0, -3.0} ;
00029   const int    partitions[] = {100, 100} ;
00030   const int precision[]     = {5, 5} ;
00031 
00032   upperLimit_      = new double[numberOfVariables_] ;
00033   lowerLimit_      = new double[numberOfVariables_] ;
00034   partitions_      = new int[numberOfVariables_]    ;
00035   precision_       = new int[numberOfVariables_]    ;
00036   bitsPerVariable_ = new int[numberOfVariables_]    ;
00037   
00038   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00039   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00040   memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00041   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00042 
00043   variable_ = new VariableType[numberOfVariables_] ;
00044 
00045   initializeRealVariableType(variableType) ;
00046   cout << "Created a " << problemName_ << " problem" << endl ;
00047 
00048 } // Viennet3::Viennet3
00049 
00050 void Viennet3::evaluate(Individual * individual) {
00051   double x[2] ;
00052 
00053   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00054   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00055 
00056   // First function
00057   individual->fitness_[0] = 0.5 * (x[0]*x[0] + x[1]*x[1]) + 
00058                                    sin(x[0]*x[0] + x[1]*x[1]) ;
00059 
00060   // Second function
00061   double value1 = 3 * x[0] - 2 * x[1] + 4 ;
00062   double value2 = x[0] - x[1] + 1 ;
00063   individual->fitness_[1] = (value1 * value1)/8 + (value2 * value2)/27 + 15 ;
00064 
00065   // Third function
00066   individual->fitness_[2] = 1 / (x[0]*x[0] + x[1]*x[1]+1) - 
00067                              1.1 * exp(-(x[0]*x[0])-(x[1]*x[1])) ;
00068 } // Viennet3::evaluate
00069 

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