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

Kursawe.cpp

Go to the documentation of this file.
00001 
00010 #include <Kursawe.h>
00011 
00015 Kursawe::Kursawe(VariableType variableType) {
00016 
00017   problemName_ = "KURSAWE" ;
00018 
00019   numberOfVariables_   = 3 ;
00020   numberOfFunctions_   = 2 ;
00021   numberOfConstraints_ = 0 ;
00022   
00023   const double upperLimit[] = {5.0, 5.0, 5.0} ;
00024   const double lowerLimit[] = {-5.0, -5.0, -5.0} ;
00025   const int partitions[]    = {100, 100, 100} ;
00026   const int precision[]     = {5, 5, 5} ;
00027   
00028   upperLimit_      = new double[numberOfVariables_] ;
00029   lowerLimit_      = new double[numberOfVariables_] ;
00030   partitions_      = new int[numberOfVariables_]    ;
00031   precision_       = new int[numberOfVariables_]    ;
00032   bitsPerVariable_ = new int[numberOfVariables_]     ;
00033   
00034 // int bitsPerBinaryVariable[] = {10, 10, 10} ;
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 //  memcpy(bitsPerVariable_, bitsPerVariable, numberOfVariables_ * sizeof(int)) ;
00041     
00042   variable_ = new VariableType[numberOfVariables_] ;
00043   int i ;
00044 
00045   initializeRealVariableType(variableType) ;
00046   cout << "Created a " << problemName_ << " problem" << endl ;
00047 } // Constructor
00048 
00049   
00050 void Kursawe::evaluate(Individual *individual) {
00051   double result ;
00052   double xi     ;
00053   double xj     ;
00054   int i ;
00055 
00056   // First function
00057   result = 0.0 ;
00058   for (i = 0; i < numberOfVariables_ - 1 ; i++) {
00059     xi = (individual->chromosome_->gene_[i])->getRealAllele()   ;
00060     xj = (individual->chromosome_->gene_[i+1])->getRealAllele() ;
00061     result += -10.0 * exp((-0.2)*sqrt(pow(xi,2)+pow(xj,2)))     ;
00062   } //for
00063   individual->fitness_[0] = result ;    
00064     
00065   // Second function
00066   const double a = 0.8 ; 
00067   const double b = 3   ; 
00068   result = 0.0 ;  
00069   for (i = 0; i < numberOfVariables_ ; i++) {
00070     xi = (individual->chromosome_->gene_[i])->getRealAllele() ;
00071     result += pow(fabs(xi), a) + 5 * sin(pow(xi, b)) ;
00072   } //for
00073   individual->fitness_[1] = result ;
00074 } // Fonseca::evaluateIndividual
00075 
00076 

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