Redundant Code : avoid some redundancy by the inheritance of EO class methods
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2291 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
1bd0a53c1d
commit
5f7981b8ae
1 changed files with 5 additions and 52 deletions
|
|
@ -44,22 +44,23 @@
|
||||||
* Container of the neighbor informations
|
* Container of the neighbor informations
|
||||||
*/
|
*/
|
||||||
template< class EOType, class Fitness=typename EOType::Fitness>
|
template< class EOType, class Fitness=typename EOType::Fitness>
|
||||||
class moNeighbor : public eoObject, public eoPersistent
|
class moNeighbor : public EO<Fitness>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef EOType EOT;
|
typedef EOType EOT;
|
||||||
|
using EO<Fitness>::fitness;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default Constructor
|
* Default Constructor
|
||||||
*/
|
*/
|
||||||
moNeighbor() {}
|
moNeighbor():EO<Fitness>() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy Constructor
|
* Copy Constructor
|
||||||
* @param _neighbor to copy
|
* @param _neighbor to copy
|
||||||
*/
|
*/
|
||||||
moNeighbor(const moNeighbor<EOT, Fitness>& _neighbor) {
|
moNeighbor(const moNeighbor<EOT, Fitness>& _neighbor) {
|
||||||
repFitness = _neighbor.fitness();
|
fitness(_neighbor.fitness());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -68,7 +69,7 @@ public:
|
||||||
* @return a neighbor equal to the other
|
* @return a neighbor equal to the other
|
||||||
*/
|
*/
|
||||||
virtual moNeighbor<EOT, Fitness>& operator=(const moNeighbor<EOT, Fitness>& _neighbor) {
|
virtual moNeighbor<EOT, Fitness>& operator=(const moNeighbor<EOT, Fitness>& _neighbor) {
|
||||||
repFitness = _neighbor.fitness();
|
fitness(_neighbor.fitness());
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,31 +79,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void move(EOT & _solution) = 0 ;
|
virtual void move(EOT & _solution) = 0 ;
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the fitness
|
|
||||||
* @return fitness of the neighbor
|
|
||||||
*/
|
|
||||||
const Fitness fitness() const {
|
|
||||||
return repFitness;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get fitness as reference, useful when fitness is set in a multi-stage way, e.g., MOFitness gets performance information, is subsequently ranked
|
|
||||||
* @return fitness as reference of the neighbor
|
|
||||||
*/
|
|
||||||
Fitness& fitnessReference() {
|
|
||||||
return repFitness;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set fitness. At the same time, validates it.
|
|
||||||
* @param _fitness new fitness value.
|
|
||||||
*/
|
|
||||||
void fitness(const Fitness& _fitness) {
|
|
||||||
repFitness = _fitness;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test equality between two neighbors
|
* Test equality between two neighbors
|
||||||
* @param _neighbor a neighbor
|
* @param _neighbor a neighbor
|
||||||
|
|
@ -120,29 +96,6 @@ public:
|
||||||
return "moNeighbor";
|
return "moNeighbor";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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 std::istream.
|
|
||||||
*/
|
|
||||||
virtual void readFrom(std::istream& _is) {
|
|
||||||
_is >> repFitness;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write object. Called printOn since it prints the object _on_ a stream.
|
|
||||||
* @param _os A std::ostream.
|
|
||||||
*/
|
|
||||||
virtual void printOn(std::ostream& _os) const {
|
|
||||||
_os << repFitness << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// minimal information on the neighbor : fitness
|
|
||||||
Fitness repFitness ;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue