Small modifications

This commit is contained in:
jmerelo 1999-10-19 11:47:15 +00:00
commit 18f6c31513
2 changed files with 44 additions and 43 deletions

View file

@ -1,5 +1,5 @@
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// EO.h // EO.h
// (c) GeNeura Team 1998 // (c) GeNeura Team 1998
@ -32,13 +32,13 @@
#include <eoPersistent.h> #include <eoPersistent.h>
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/** EO is a base class for evolvable objects, that is, the subjects of evolution. /** EO is a base class for evolvable objects, that is, the subjects of evolution.
EOs have only got a fitness, which at the same time needs to be only an object with the EOs have only got a fitness, which at the same time needs to be only an object with the
operation less than (<) defined. Fitness says how good is the object; evolution or change operation less than (<) defined. Fitness says how good is the object; evolution or change
of these objects is left to the genetic operators. A fitness less than another means a of these objects is left to the genetic operators. A fitness less than another means a
worse fitness, in whatever the context; thus, fitness is always maximized; although worse fitness, in whatever the context; thus, fitness is always maximized; although
it can be minimized with a proper definition of the < operator.\\ it can be minimized with a proper definition of the < operator.\\
The fitness object must have, besides an void ctor, a copy ctor. The fitness object must have, besides an void ctor, a copy ctor.
*/ */
template<class F> class EO: public eoObject, public eoPersistent template<class F> class EO: public eoObject, public eoPersistent
{ {
@ -59,11 +59,11 @@ public:
invalidFitness = false; invalidFitness = false;
}; };
/// Copy ctor /// Copy ctor
EO( const EO& _eo ): repFitness( _eo.repFitness ), invalidFitness( _eo.invalidFitness ) {}; EO( const EO& _eo ): repFitness( _eo.repFitness ), invalidFitness( _eo.invalidFitness ) {};
/// Virtual dtor /// Virtual dtor
virtual ~EO() {}; virtual ~EO() {};
/// Return fitness value. /// Return fitness value.
Fitness fitness() const Fitness fitness() const
@ -89,43 +89,43 @@ public:
/** Return true If fitness value is invalid, false otherwise. /** Return true If fitness value is invalid, false otherwise.
* @return true If fitness is invalid. * @return true If fitness is invalid.
*/ */
bool invalid() const { return invalidFitness; } bool invalid() const { return invalidFitness; }
/** Returns true if /** Returns true if
@return true if the fitness is higher @return true if the fitness is higher
*/ */
bool operator<(const EO& _eo2) const { return fitness() < _eo2.fitness();} bool operator<(const EO& _eo2) const { return fitness() < _eo2.fitness();}
/// Methods inherited from eoObject /// Methods inherited from eoObject
//@{ //@{
/** Return the class id.
* @return the class name as a string
*/
virtual string className() const { return "EO"; };
/**
* Read object.\\
* Calls base class, just in case that one had something to do. The read and print
* methods should be compatible and have the same format. In principle, format is
* "plain": they just print a number
* @param _is a istream.
* @throw runtime_exception If a valid object can't be read.
*/
virtual void readFrom(istream& _is) {
_is >> repFitness;
invalidFitness = false;
}
/**
* Write object. It's called printOn since it prints the object _on_ a stream.
* @param _os A ostream.
*/
virtual void printOn(ostream& _os) const {
_os << repFitness << endl;
}
//@} /** Return the class id.
* @return the class name as a string
*/
virtual string className() const { return "EO"; };
/**
* Read object.\\
* Calls base class, just in case that one had something to do. The read and print
* methods should be compatible and have the same format. In principle, format is
* "plain": they just print a number
* @param _is a istream.
* @throw runtime_exception If a valid object can't be read.
*/
virtual void readFrom(istream& _is) {
_is >> repFitness;
invalidFitness = false;
}
/**
* Write object. It's called printOn since it prints the object _on_ a stream.
* @param _os A ostream.
*/
virtual void printOn(ostream& _os) const {
_os << repFitness << endl;
}
//@}
private: private:
Fitness repFitness; // value of fitness for this chromosome Fitness repFitness; // value of fitness for this chromosome

View file

@ -5,6 +5,7 @@
// to avoid long name warnings // to avoid long name warnings
#pragma warning(disable:4786) #pragma warning(disable:4786)
#include <eo> #include <eo>
#include "binary_value.h" #include "binary_value.h"