Some changes in names, before too many users have to modify their code :-)

Changed ga.h in src/ga into make_ga.h (was ambiguous with src/ga.h)
Chenged the interface of make_genotype - now templatized by the EOT
and not the fitness - this is mandatory for ES genoptypes as it allows to
choose the type of gentype at run-time (from existing types, of course!)
This commit is contained in:
evomarc 2001-04-30 12:26:31 +00:00
commit 1c75344197
4 changed files with 24 additions and 18 deletions

View file

@ -17,4 +17,4 @@ libga_a_SOURCES = make_algo_scalar_ga.cpp \
CPPFLAGS = -Wall
CXXFLAGS = -g
libeoincdir = $(includedir)/eo/ga
libeoinc_HEADERS = eoBit.h eoBitOp.h eoBitOpFactory.h ga.h
libeoinc_HEADERS = eoBit.h eoBitOp.h eoBitOpFactory.h make_ga.h

View file

@ -52,8 +52,8 @@
//////////////////////////
// the genotypes
eoInit<eoBit<double> > & make_genotype(eoParameterLoader& _parser, eoState& _state, double _d);
eoInit<eoBit<eoMinimizingFitness> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoMinimizingFitness _d);
eoInit<eoBit<double> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoBit<double> _eo);
eoInit<eoBit<eoMinimizingFitness> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoBit<eoMinimizingFitness> _eo);
// the operators
eoGenOp<eoBit<double> >& make_op(eoParameterLoader& _parser, eoState& _state, eoInit<eoBit<double> >& _init);

View file

@ -31,23 +31,20 @@
* files that you just need to link with your own main and fitness code).
*
* The corresponding ***INSTANCIATED DECLARATIONS*** are contained
* in make_genotype_ga.h
* while the TEMPLATIZED code is define in make_genotype.h in the ga dir
*
* Unlike most EO .h files, it does not (and should not) contain any code,
* just declarations
* in ga.h in src/ga dir
* while the TEMPLATIZED code is define in make_genotype_ga.h
*/
// the templatized code
#include <ga/make_genotype.h>
#include <ga/make_genotype_ga.h>
/// The following function merely call the templatized do_* functions above
eoInit<eoBit<double> > & make_genotype(eoParameterLoader& _parser, eoState& _state, double _d)
eoInit<eoBit<double> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoBit<double> _eo)
{
return do_make_genotype(_parser, _state, _d);
return do_make_genotype(_parser, _state, _eo);
}
eoInit<eoBit<eoMinimizingFitness> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoMinimizingFitness _d)
eoInit<eoBit<eoMinimizingFitness> > & make_genotype(eoParameterLoader& _parser, eoState& _state, eoBit<eoMinimizingFitness> _eo)
{
return do_make_genotype(_parser, _state, _d);
return do_make_genotype(_parser, _state, _eo);
}

View file

@ -38,8 +38,12 @@
/*
* This fuciont does the initialization of what's needed for a particular
* genotype (here, bitstrings).
* It is templatized ***olny on the fitness*** so it can be used to evolve
* It could be here tempatied only on the fitness, as it can be used to evolve
* bitstrings with any fitness.
* However, for consistency reasons, it was finally chosen, as in
* the rest of EO, to templatize by the full EOT, as this eventually
* allows to choose the type of genotype at run time (see in es dir)
*
* It is instanciated in ga/ga.cpp - and incorporated in the ga/libga.a
*
* It returns an eoInit<eoBit<FitT> > tha can later be used to initialize
@ -47,10 +51,15 @@
*
* It uses a parser (to get user parameters) and a state (to store the memory)
* the last argument is to disambiguate the call upon different instanciations.
*
* WARNING: that last argument will generally be the result of calling
* the default ctor of EOT, resulting in most cases in an EOT
* that is ***not properly initialized***
*/
template <class FitT>
eoInit<eoBit<FitT> > & do_make_genotype(eoParameterLoader& _parser, eoState& _state, FitT)
template <class EOT>
eoInit<EOT> & do_make_genotype(eoParameterLoader& _parser, eoState& _state, EOT)
{
// for bitstring, only thing needed is the size
eoValueParam<unsigned>& chromSize = _parser.createParam(unsigned(10), "ChromSize", "The length of the bitstrings", 'n',"initialization");
@ -59,8 +68,8 @@ eoInit<eoBit<FitT> > & do_make_genotype(eoParameterLoader& _parser, eoState& _st
// based on boolean_generator class (see utils/rnd_generator.h)
eoBooleanGenerator * gen = new eoBooleanGenerator;
_state.storeFunctor(gen);
eoInitFixedLength<eoBit<FitT> >* init = new eoInitFixedLength<eoBit<FitT> >(chromSize.value(), *gen);
// satore in state
eoInitFixedLength<EOT>* init = new eoInitFixedLength<EOT>(chromSize.value(), *gen);
// store in state
_state.storeFunctor(init);
return *init;
}