34 lines
No EOL
1.1 KiB
C++
34 lines
No EOL
1.1 KiB
C++
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// eoEvalFunc.h
|
|
// (c) GeNeura Team, 1998
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef eoEvalFunc_H
|
|
#define eoEvalFunc_H
|
|
|
|
/** Evaluate: takes one EO and sets its "fitness" property
|
|
* returning this fitness also. That is why EOT is passed by
|
|
* non-const reference: it must be altered within evaluate.\\
|
|
|
|
The requirements on the types with which this class is to be
|
|
instantiated with are null, or else, they depend on the particular
|
|
class it's going to be applied to; EO does not impose any requirement
|
|
on it. If you subclass this abstract class, and use it to evaluate an
|
|
EO, the requirements on this EO will depend on the evaluator.
|
|
*/
|
|
template< class EOT >
|
|
struct eoEvalFunc {
|
|
|
|
#ifdef _MSC_VER
|
|
typedef EOT::Fitness EOFitT;
|
|
#else
|
|
typedef typename Fitness::EOFitT EOFitT;
|
|
#endif
|
|
|
|
/// Effectively applies the evaluation function to an EO or urEO
|
|
virtual EOFitT evaluate( EOT & _eo ) const = 0;
|
|
};
|
|
|
|
#endif |