diff --git a/eo/src/eoScalarFitness.h b/eo/src/eoScalarFitness.h index f31a57834..59c68f9b3 100644 --- a/eo/src/eoScalarFitness.h +++ b/eo/src/eoScalarFitness.h @@ -1,104 +1,104 @@ -/* -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - - ----------------------------------------------------------------------------- - eoScalarFitness.h - - (c) Maarten Keijzer (mkeijzer@mad.scientist.com) and GeNeura Team, 1999, 2000 - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Contact: todos@geneura.ugr.es, http://geneura.ugr.es - */ - - -#ifndef eoScalarFitness_h -#define eoScalarFitness_h - -#include -#include - -/** - * eoScalarFitness >: - * Wraps a scalar fitness values such as a double or int, with the option of - * maximizing (using less) or minimizing (using greater) - - * It overrides operator<() to use the Compare template argument - * - * Suitable constructors and assignments and casts are defined to work - * with this quantity as if it were a ScalarType. -*/ -template -class eoScalarFitness -{ - public : - - eoScalarFitness() : value() {} - eoScalarFitness(const eoScalarFitness& other) : value(other.value) {} - eoScalarFitness(const ScalarType& v) : value(v) {} - - eoScalarFitness& operator=(const eoScalarFitness& other) - { value = other.value; return *this; } - eoScalarFitness& operator=(const ScalarType& v) - { value = v; return *this; } - - operator ScalarType(void) const { return value; } - - /// Comparison, using less by default - bool operator<(const eoScalarFitness& other) const - { return Compare()(value, other.value); } - - /// Comparison, using less by default - // needed for MSVC 8 (MSVC 2005) added by J.Eggermont 20-11-2006 - bool operator<(const ScalarType& other) const - { return Compare()(value, other); } - - // implementation of the other operators - bool operator>( const eoScalarFitness& y ) const { return y < *this; } - // implementation of the other operators - bool operator<=( const eoScalarFitness& y ) const { return !(*this > y); } - // implementation of the other operators - bool operator>=(const eoScalarFitness& y ) const { return !(*this < y); } - - - private : - ScalarType value; -}; - -/** -Typedefs for fitness comparison, Maximizing Fitness compares with less, -and minimizing fitness compares with greater. This because we want ordinary -fitness values (doubles) to be equivalent with Maximizing Fitness, and -comparing with less is the default behaviour. -*/ -typedef eoScalarFitness > eoMaximizingFitness; -typedef eoScalarFitness > eoMinimizingFitness; - -template -std::ostream& operator<<(std::ostream& os, const eoScalarFitness& f) -{ - os << (F) f; - return os; -} - -template -std::istream& operator>>(std::istream& is, eoScalarFitness& f) -{ - F value; - is >> value; - f = value; - return is; -} - -#endif +/* -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + + ----------------------------------------------------------------------------- + eoScalarFitness.h + + (c) Maarten Keijzer (mkeijzer@mad.scientist.com) and GeNeura Team, 1999, 2000 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: todos@geneura.ugr.es, http://geneura.ugr.es + */ + + +#ifndef eoScalarFitness_h +#define eoScalarFitness_h + +#include +#include + +/** + * eoScalarFitness >: + * Wraps a scalar fitness values such as a double or int, with the option of + * maximizing (using less) or minimizing (using greater) + + * It overrides operator<() to use the Compare template argument + * + * Suitable constructors and assignments and casts are defined to work + * with this quantity as if it were a ScalarType. +*/ +template +class eoScalarFitness +{ + public : + + eoScalarFitness() : value() {} + eoScalarFitness(const eoScalarFitness& other) : value(other.value) {} + eoScalarFitness(const ScalarType& v) : value(v) {} + + eoScalarFitness& operator=(const eoScalarFitness& other) + { value = other.value; return *this; } + eoScalarFitness& operator=(const ScalarType& v) + { value = v; return *this; } + + operator ScalarType(void) const { return value; } + + /// Comparison, using less by default + bool operator<(const eoScalarFitness& other) const + { return Compare()(value, other.value); } + + /// Comparison, using less by default + // needed for MSVC 8 (MSVC 2005) added by J.Eggermont 20-11-2006 + bool operator<(const ScalarType& other) const + { return Compare()(value, other); } + + // implementation of the other operators + bool operator>( const eoScalarFitness& y ) const { return y < *this; } + // implementation of the other operators + bool operator<=( const eoScalarFitness& y ) const { return !(*this > y); } + // implementation of the other operators + bool operator>=(const eoScalarFitness& y ) const { return !(*this < y); } + + + private : + ScalarType value; +}; + +/** +Typedefs for fitness comparison, Maximizing Fitness compares with less, +and minimizing fitness compares with greater. This because we want ordinary +fitness values (doubles) to be equivalent with Maximizing Fitness, and +comparing with less is the default behaviour. +*/ +typedef eoScalarFitness > eoMaximizingFitness; +typedef eoScalarFitness > eoMinimizingFitness; + +template +std::ostream& operator<<(std::ostream& os, const eoScalarFitness& f) +{ + os << (F) f; + return os; +} + +template +std::istream& operator>>(std::istream& is, eoScalarFitness& f) +{ + F value; + is >> value; + f = value; + return is; +} + +#endif diff --git a/eo/src/eoSelectOne.h b/eo/src/eoSelectOne.h index 20fced249..7896138a6 100644 --- a/eo/src/eoSelectOne.h +++ b/eo/src/eoSelectOne.h @@ -1,54 +1,54 @@ -/** -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - - ----------------------------------------------------------------------------- - eoSelectOne.h - (c) Maarten Keijzer, GeNeura Team, 2000 - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Contact: todos@geneura.ugr.es, http://geneura.ugr.es - */ -//----------------------------------------------------------------------------- - -#ifndef _eoSelectOne_h -#define _eoSelectOne_h - - -//----------------------------------------------------------------------------- -#include -#include -//----------------------------------------------------------------------------- - -/** eoSelectOne selects only one element from a whole population. - Most selection techniques are simply repeated applications - of eoSelectOne. - - @see eoSelectMany, eoSelectRandom, eoDetTournament, eoStochTournament, eoProportional -*/ -#if defined(_MSC_VER) && (_MSC_VER < 1300) -template -#else -template -#endif -class eoSelectOne : public eoUF&, const EOT&> -{ - public : - /// virtual function to setup some population stats (for instance eoProportional can benefit greatly from this) - virtual void setup(const eoPop& _pop) - {} -}; - - -#endif +/** -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + + ----------------------------------------------------------------------------- + eoSelectOne.h + (c) Maarten Keijzer, GeNeura Team, 2000 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: todos@geneura.ugr.es, http://geneura.ugr.es + */ +//----------------------------------------------------------------------------- + +#ifndef _eoSelectOne_h +#define _eoSelectOne_h + + +//----------------------------------------------------------------------------- +#include +#include +//----------------------------------------------------------------------------- + +/** eoSelectOne selects only one element from a whole population. + Most selection techniques are simply repeated applications + of eoSelectOne. + + @see eoSelectMany, eoSelectRandom, eoDetTournament, eoStochTournament, eoProportional +*/ +#if defined(_MSC_VER) && (_MSC_VER < 1300) +template +#else +template +#endif +class eoSelectOne : public eoUF&, const EOT&> +{ + public : + /// virtual function to setup some population stats (for instance eoProportional can benefit greatly from this) + virtual void setup(const eoPop& _pop) + {} +}; + + +#endif