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

Fonseca.cpp

Go to the documentation of this file.
00001 #include <Fonseca.h>
00002 
00003 Fonseca::Fonseca(VariableType variableType) {
00004   problemName_ = "FONSECA" ;
00005 
00006   numberOfVariables_   = 3 ;
00007   numberOfFunctions_   = 2 ;
00008   numberOfConstraints_ = 0 ;
00009 
00010   const double upperLimit[] = {4.0, 4.0, 4.0} ;
00011   const double lowerLimit[] = {-4.0, -4.0, -4.0} ;
00012   const int partitions[]    = {80, 80, 80} ;
00013   const int precision[]     = {5, 5, 5} ;
00014 
00015   upperLimit_      = new double[numberOfVariables_] ;
00016   lowerLimit_      = new double[numberOfVariables_] ;
00017   partitions_      = new int[numberOfVariables_]    ;
00018   precision_       = new int[numberOfVariables_]    ;
00019   bitsPerVariable_ = new int[numberOfVariables_]    ;
00020 
00021   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00022   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00023   memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00024   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00025 
00026   variable_ = new VariableType[numberOfVariables_] ;
00027 
00028   initializeRealVariableType(variableType) ;
00029   cout << "Created a " << problemName_ << " problem" << endl ;
00030 } // Fonseca::Fonseca
00031 
00032 void Fonseca::evaluate(Individual *individual) {
00033   // First function
00034   double result = 0.0 ;
00035   int i ;
00036 
00037   for (i = 0; i < numberOfVariables_; i++) {
00038 //cout << "Allele: " << (individual->chromosome_->gene_[i])->getRealAllele() << endl ;
00039       result += pow((individual->chromosome_->gene_[i])->getRealAllele() -
00040                    (1 /sqrt((double)numberOfVariables_)), 2) ;
00041   } //for
00042 
00043   result = 1 - exp(-result) ;
00044   individual->fitness_[0] = result ;
00045 
00046   // Second function
00047   result = 0.0 ;  
00048   for (i = 0; i < numberOfVariables_ ; i++) {
00049 //cout << "Allele: " << (individual->chromosome_->gene_[i])->getRealAllele() << endl ;
00050       result += pow((individual->chromosome_->gene_[i])->getRealAllele()+ 
00051                     (1 / sqrt((double)numberOfVariables_)), 2) ;
00052   } //for
00053 
00054   result = 1 - exp(-result) ;
00055   individual->fitness_[1] = result ;
00056 } // Fonseca::evaluateIndividual

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