eoSelectFactory.h

00001 // eoSelectFactory.h
00002 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
00003 
00004 //-----------------------------------------------------------------------------
00005 // EOFactory.h
00006 // (c) GeNeura Team, 1998
00007 /* 
00008     This library is free software; you can redistribute it and/or
00009     modify it under the terms of the GNU Lesser General Public
00010     License as published by the Free Software Foundation; either
00011     version 2 of the License, or (at your option) any later version.
00012 
00013     This library is distributed in the hope that it will be useful,
00014     but WITHOUT ANY WARRANTY; without even the implied warranty of
00015     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016     Lesser General Public License for more details.
00017 
00018     You should have received a copy of the GNU Lesser General Public
00019     License along with this library; if not, write to the Free Software
00020     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021 
00022     Contact: todos@geneura.ugr.es, http://geneura.ugr.es
00023  */
00024 //-----------------------------------------------------------------------------
00025 
00026 #ifndef _EOSELECTFACTORY_H
00027 #define _EOSELECTFACTORY_H
00028 
00029 #include <eoFactory.h>
00030 #include <eoRandomSelect.h>
00031 #include <eoTournament.h>
00032 
00033 //-----------------------------------------------------------------------------
00034 
00038 template< class EOT>
00039 class eoSelectFactory: public eoFactory<eoSelect< EOT> > {
00040         
00041 public:
00042         
00044         //{@
00046         eoSelectFactory( ) {}
00047         
00049         virtual ~eoSelectFactory() {}
00051 
00056         virtual eoSelect<EOT>* make(std::istream& _is) {
00057                 eoSelect<EOT> * selectPtr;
00058                 std::string objectTypeStr;
00059                 _is >> objectTypeStr;
00060                 // All selectors have a rate, the proportion of the original population
00061                 float rate;
00062                 _is >> rate;
00063                 if  ( objectTypeStr == "eoTournament") {
00064                         // another parameter is necessary
00065                         unsigned tSize;
00066                         _is >> tSize;
00067                         selectPtr = new eoTournament<EOT>( rate, tSize );
00068                 } else  {
00069                         if ( objectTypeStr == "eoRandomSelect" ) {
00070                                 selectPtr = new eoRandomSelect<EOT>( rate );
00071                         } else {
00072                                                 throw std::runtime_error( "Incorrect selector type" );
00073                         }
00074                 }
00075                 return selectPtr;
00076         }
00077 
00079 
00080         void printOn( std::ostream& _os ) const {};
00081         void readFrom( std::istream& _is ){};
00082 
00085         
00086 };
00087 
00088 
00089 #endif

Generated on Thu Oct 19 05:06:38 2006 for EO by  doxygen 1.3.9.1