Rosenbrock.cpp
Go to the documentation of this file.00001 00009 #include <Rosenbrock.h> 00010 00014 Rosenbrock::Rosenbrock(VariableType variableType, int numberOfVariables) { 00015 00016 problemName_ = "ROSENBROCK" ; 00017 00018 numberOfVariables_ = numberOfVariables ; 00019 numberOfFunctions_ = 1 ; 00020 numberOfConstraints_ = 0 ; 00021 00022 upperLimit_ = new double[numberOfVariables_] ; 00023 lowerLimit_ = new double[numberOfVariables_] ; 00024 precision_ = new int[numberOfVariables_] ; 00025 bitsPerVariable_ = new int[numberOfVariables_] ; 00026 00027 for (int i = 0; i < numberOfVariables_; i++) { 00028 upperLimit_[i] = 5.12 ; 00029 lowerLimit_[i] = -5.12 ; 00030 precision_[i] = 5 ; 00031 } // for 00032 00033 variableType_ = new VariableType[numberOfVariables_] ; 00034 00035 initializeVariableType(variableType) ; 00036 cout << "Created a " << problemName_ << " problem" << endl ; 00037 } // Constructor 00038 00043 void Rosenbrock::evaluate(Individual *individual) { 00044 double sum ; 00045 double *x = new double[numberOfVariables_] ; 00046 00047 for (int i = 0; i < numberOfVariables_; i++) 00048 x[i] = (individual->chromosome_->gene_[i])->getRealAllele() ; 00049 00050 // First function 00051 sum = 0.0 ; 00052 for (int i = 0; i < (this->numberOfVariables_ - 1) ; i++) { 00053 sum += 100.0 * (x[i+1]-x[i]*x[i])*(x[i+1]-x[i]*x[i]) +(x[i]-1)*(x[i]-1) ; 00054 } //for 00055 00056 individual->fitness_[0] = sum ; 00057 delete [] x ; 00058 } // Rosenbrock::evaluateIndividual 00059 00060