00001
00009 #include <Schaffer.h>
00010
00014 Schaffer::Schaffer(VariableType variableType) {
00015
00016 problemName_ = "Schaffer-MOP1" ;
00017
00018 numberOfVariables_ = 1 ;
00019 numberOfFunctions_ = 2 ;
00020 numberOfConstraints_ = 0 ;
00021
00022 const double upperLimit[] = {10^5} ;
00023 const double lowerLimit[] = {-10^5} ;
00024 const int partitions[] = {10, 10, 10} ;
00025 const int precision[] = {5, 5, 5} ;
00026
00027 upperLimit_ = new double[numberOfVariables_] ;
00028 lowerLimit_ = new double[numberOfVariables_] ;
00029 partitions_ = new int[numberOfVariables_] ;
00030 precision_ = new int[numberOfVariables_] ;
00031 bitsPerVariable_ = new int[numberOfVariables_] ;
00032
00033 memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00034 memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00035 memcpy(partitions_, partitions_, numberOfVariables_ * sizeof(int)) ;
00036 memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00037
00038 variable_ = new VariableType[numberOfVariables_] ;
00039
00040 initializeRealVariableType(variableType) ;
00041 cout << "Created a " << problemName_ << " problem" << endl ;
00042
00043 }
00044
00045
00046 void Schaffer::evaluate(Individual * individual) {
00047
00048 double result ;
00049
00050 result = (individual->chromosome_->gene_[0])->getRealAllele() *
00051 (individual->chromosome_->gene_[0])->getRealAllele() ;
00052 individual->fitness_[0] = result ;
00053
00054
00055 result = ((individual->chromosome_->gene_[0])->getRealAllele() - 2) *
00056 ((individual->chromosome_->gene_[0])->getRealAllele() - 2) ;
00057
00058 individual->fitness_[1] = result ;
00059 }
00060