• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

Srinivas.cpp

Go to the documentation of this file.
00001 
00009 #include <Srinivas.h>
00010 
00016 Srinivas::Srinivas(VariableType variableType) {
00017   problemName_ = "SRINIVAS" ;
00018 
00019   numberOfVariables_   = 2 ;
00020   numberOfFunctions_   = 2 ;
00021   numberOfConstraints_ = 2 ;
00022 
00023   const double upperLimit[] = {20.0, 20.0} ;
00024   const double lowerLimit[] = {-20.0, -20.0} ;
00025   const int precision[]     = {5, 5} ;
00026 
00027   upperLimit_      = new double[numberOfVariables_] ;
00028   lowerLimit_      = new double[numberOfVariables_] ;
00029   precision_       = new int[numberOfVariables_]    ;
00030   bitsPerVariable_ = new int[numberOfVariables_]    ;
00031 
00032   memcpy(upperLimit_, upperLimit, numberOfVariables_ * sizeof(double)) ;
00033   memcpy(lowerLimit_, lowerLimit, numberOfVariables_ * sizeof(double)) ;
00034   memcpy(precision_, precision, numberOfVariables_ * sizeof(int)) ;
00035 //  memcpy(bitsPerVariable_, bitsPerVariable, numberOfVariables_ * sizeof(int)) ;
00036 
00037   variableType_ = new VariableType[numberOfVariables_] ;
00038 
00039   initializeVariableType(variableType) ;
00040   cout << "Created a " << problemName_ << " problem" << endl ;
00041 } // Srinivas::Srinivas
00042 
00047 void Srinivas::evaluate(Individual *individual) {
00048   double result ;
00049   double x[2]   ;
00050   
00051   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00052   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00053 
00054   // First function
00055   result =  (x[0]-2.0)*(x[0]-2.0)+(x[1]-1.0)*(x[1]-1.0) + 2.0 ;
00056   individual->fitness_[0] = result ;
00057 
00058   // Second function
00059   result = 9.0*x[0] - (x[1] - 1.0)*(x[1] - 1.0) ;
00060 
00061   individual->fitness_[1] = result ;
00062 } // Srinivas::evaluateIndividual
00063 
00064 
00073 void Srinivas::evaluateConstraints(Individual * individual) {
00074   double x[2]               ;
00075   double constraintValue[2] ;
00076   
00077   individual->numberOfViolatedConstraints_ = 0 ;
00078   individual->overallConstraintViolation_  = 0 ;
00079   
00080   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00081   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00082   
00083   constraintValue[0] = -(x[0]*x[0] + x[1]*x[1] - 225.0)  ;
00084   constraintValue[1] = - (x[0] - 3.0 * x[1] + 10.0)      ;
00085 
00086   int i ;
00087   for (i = 0 ; i < 2; i++) 
00088     if (constraintValue[i] < 0) {
00089       individual->overallConstraintViolation_ -= constraintValue[i] ;
00090       individual->numberOfViolatedConstraints_ ++ ;
00091     } // if
00092 } // Srinivas::evaluateConstraints
00093 
00094 
00095 

Our Software

orangebox Mallba

orangebox ssGA

orangebox JGDS

orangebox xxGA

orangebox JCell

orangebox MHTB

orangebox DEME

orangebox JMetal

orangebox More...

orangebox Go Back