Small modifications
This commit is contained in:
parent
ef43aaf616
commit
18f6c31513
2 changed files with 44 additions and 43 deletions
88
eo/src/EO.h
88
eo/src/EO.h
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Reference in a new issue