From 382557878aeccfca47221714b7ea94678c7d04a4 Mon Sep 17 00:00:00 2001 From: mac Date: Mon, 12 Jun 2000 20:07:25 +0000 Subject: [PATCH] eoInit is a base class for making EO's, eoPop now has a constructor for eoInit's --- eo/src/eoInit.h | 43 +++++++++++++++++++++++++++++++++++++++++++ eo/src/eoPop.h | 14 ++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 eo/src/eoInit.h diff --git a/eo/src/eoInit.h b/eo/src/eoInit.h new file mode 100644 index 00000000..48568a13 --- /dev/null +++ b/eo/src/eoInit.h @@ -0,0 +1,43 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// eoInit.h +// (c) Maarten Keijzer 2000, 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 + Marc.Schoenauer@polytechnique.fr + mak@dhi.dk + */ +//----------------------------------------------------------------------------- + +#ifndef _eoInit_H +#define _eoInit_H + +/** + Base class for Initialization of chromosomes, used in a population + contructor + + @see eoPop +*/ +template +class eoInit +{ +public : + virtual EOT operator()(void) = 0; +}; + +#endif \ No newline at end of file diff --git a/eo/src/eoPop.h b/eo/src/eoPop.h index 8e469e30..e5abfc83 100644 --- a/eo/src/eoPop.h +++ b/eo/src/eoPop.h @@ -30,6 +30,7 @@ // EO includes #include +#include #include /** Subpopulation: it is used to move parts of population @@ -90,6 +91,19 @@ class eoPop: public vector, public eoObject, public eoPersistent { } }; + /** Ctor for user-defined chromosomes, + @param _popSize total population size + @param _chromRnd Initialization routine, produces EO's + */ + eoPop( unsigned _popSize, eoInit & _chromRnd ) + :vector() + { + for ( unsigned i = 0; i < _popSize; i++ ) + { + push_back( _chromRnd() ); + } + }; + /** Ctor from an istream; reads the population from a stream, each element should be in different lines