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

Viennet2.cpp

Go to the documentation of this file.
00001 
00010 #include <Viennet2.h>
00011 
00017 Viennet2::Viennet2(VariableType variableType) {
00018 
00019   problemName_ = "Viennet2-MOP7" ;
00020 
00021   numberOfVariables_   = 2 ;
00022   numberOfFunctions_   = 3 ;
00023   numberOfConstraints_ = 0 ;
00024 
00025   const double upperLimit[] = {4.0, 4.0} ;
00026   const double lowerLimit[] = {-4.0, -4.0} ;
00027   const int    partitions[] = {500, 500, 500} ;
00028   const int    precision[]     = {5, 5} ;
00029 
00030   upperLimit_      = new double[numberOfVariables_] ;
00031   lowerLimit_      = new double[numberOfVariables_] ;
00032   partitions_      = new int[numberOfVariables_]    ;
00033   precision_       = new int[numberOfVariables_]    ;
00034   bitsPerVariable_ = new int[numberOfVariables_]    ;
00035   
00036   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00037   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00038   memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00039   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00040 
00041   variable_ = new VariableType[numberOfVariables_] ;
00042 
00043   initializeRealVariableType(variableType) ;
00044   cout << "Created a " << problemName_ << " problem" << endl ;
00045 
00046 } // Viennet2::Viennet2
00047 
00048 
00049 void Viennet2::evaluate(Individual * individual) {
00050   double x[2] ;
00051 
00052   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00053   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00054 
00055   // First function
00056   individual->fitness_[0] = (x[0]-2)*(x[0]-2)/2.0 + 
00057                             (x[1]+1)*(x[1]+1)/13.0 + 3.0 ;
00058 
00059   // Second function
00060 
00061   individual->fitness_[1] = (x[0]+x[1]-3)*(x[0]+x[1]-3)/36.0 + 
00062                             (-x[0]+x[1]+2)*(-x[0]+x[1]+2)/8.0 - 17 ;
00063 
00064   // Third function
00065   individual->fitness_[2] = (x[0]+2*x[1]-1)*(x[0]+2*x[1]-1)/175.0 +
00066                             (2*x[1]-x[0])*(2*x[1]-x[0])/17.0 - 13 ;
00067 } // Viennet2::evaluate

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