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

Constr_Ex.cpp

Go to the documentation of this file.
00001 
00010 #include <Constr_Ex.h>
00011 
00017 Constr_Ex::Constr_Ex(VariableType variableType) {
00018 
00019   problemName_ = "Constr_Ex" ;
00020 
00021   numberOfVariables_   = 2 ;
00022   numberOfFunctions_   = 2 ;
00023   numberOfConstraints_ = 2 ;
00024 
00025   const double upperLimit[] = {1, 5} ;
00026   const double lowerLimit[] = {0.1, 0} ;
00027   const int partitions[]    = {100, 100, 100} ;
00028   const int precision[]     = {5, 5, 5} ;
00029 
00030   upperLimit_      = new double[numberOfVariables_] ;
00031   lowerLimit_      = new double[numberOfVariables_] ;
00032   partitions_      = new int[numberOfVariables_]    ;
00033   precision_       = new int[numberOfVariables_]    ;
00034   bitsPerVariable_ = new int[numberOfVariables_]    ;
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 
00041   variable_ = new VariableType[numberOfVariables_] ;
00042 
00043   initializeRealVariableType(variableType) ;
00044   cout << "Created a " << problemName_ << " problem" << endl ;
00045 } // Constr_Ex::Constr_Ex
00046 
00047 
00048 void Constr_Ex::evaluate(Individual * individual) {
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   individual->fitness_[0] = x[0] ;
00056 
00057   // Second function
00058   individual->fitness_[1] = (1.0 + x[1]) / x[0] ;
00059 
00060 } // Constr_Ex::evaluate
00061 
00062 bool Constr_Ex::constraintsAreSafisfied(Individual * individual) {
00063   double x[2]   ;
00064   bool   result ; 
00065   
00066   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00067   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00068     
00069   if ( ((x[1]  + 9*x[0]) >= 6) &&
00070        ((-x[1] + 9*x[0]) >= 1) )
00071         return true ;
00072   else
00073     return false ;
00074 } // Constr_Ex::constraintsAreSafisfied
00075 
00076 int Constr_Ex::numberOfNonSatisfiedConstraints(Individual * individual) {
00077   int    counter ;
00078   double x[2]    ;
00079  
00080   counter = 0 ;
00081   x[0] = (individual->chromosome_->gene_[0])->getRealAllele() ;
00082   x[1] = (individual->chromosome_->gene_[1])->getRealAllele() ;
00083   
00084   if ((x[1]  + 9*x[0]) < 6)
00085     counter ++ ;
00086   if ((-x[1] + 9*x[0]) < 1) 
00087     counter ++ ;
00088 
00089   return counter ;  
00090 } // Constr_Ex::numberOfNonSatisfiedConstraints

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