include config.h
This commit is contained in:
parent
521871a7ea
commit
5cd40b50ae
2 changed files with 28 additions and 20 deletions
|
|
@ -3,7 +3,7 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// make_genotype.h
|
// make_genotype.h
|
||||||
// (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2001
|
// (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2001
|
||||||
/*
|
/*
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
|
|
@ -27,6 +27,10 @@
|
||||||
#ifndef _make_genotype_h
|
#ifndef _make_genotype_h
|
||||||
#define _make_genotype_h
|
#define _make_genotype_h
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SSTREAM
|
#ifdef HAVE_SSTREAM
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#else
|
#else
|
||||||
|
|
@ -42,25 +46,25 @@
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This fuction does the initialization of what's needed for a particular
|
* This fuction does the initialization of what's needed for a particular
|
||||||
* genotype (here, std::vector<double> == eoReal).
|
* genotype (here, std::vector<double> == eoReal).
|
||||||
* It could be here tempatied only on the fitness, as 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.
|
* bitstrings with any fitness.
|
||||||
* However, for consistency reasons, it was finally chosen, as in
|
* However, for consistency reasons, it was finally chosen, as in
|
||||||
* the rest of EO, to templatize by the full EOT, as this eventually
|
* 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)
|
* allows to choose the type of genotype at run time (see in es dir)
|
||||||
*
|
*
|
||||||
* It is instanciated in src/es/make_genotyupe_real.cpp
|
* It is instanciated in src/es/make_genotyupe_real.cpp
|
||||||
* and incorporated in the src/es/libes.a
|
* and incorporated in the src/es/libes.a
|
||||||
*
|
*
|
||||||
* It returns an eoInit<EOT> tha can later be used to initialize
|
* It returns an eoInit<EOT> tha can later be used to initialize
|
||||||
* the population (see make_pop.h).
|
* the population (see make_pop.h).
|
||||||
*
|
*
|
||||||
* It uses a parser (to get user parameters) and a state (to store the memory)
|
* 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.
|
* the last argument is to disambiguate the call upon different instanciations.
|
||||||
*
|
*
|
||||||
* WARNING: that last argument will generally be the result of calling
|
* WARNING: that last argument will generally be the result of calling
|
||||||
* the default ctor of EOT, resulting in most cases in an EOT
|
* the default ctor of EOT, resulting in most cases in an EOT
|
||||||
* that is ***not properly initialized***
|
* that is ***not properly initialized***
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -69,7 +73,7 @@ eoEsChromInit<EOT> & do_make_genotype(eoParser& _parser, eoState& _state, EOT)
|
||||||
{
|
{
|
||||||
// the fitness type
|
// the fitness type
|
||||||
typedef typename EOT::Fitness FitT;
|
typedef typename EOT::Fitness FitT;
|
||||||
|
|
||||||
// for eoReal, only thing needed is the size - but might have been created elswhere ...
|
// for eoReal, only thing needed is the size - but might have been created elswhere ...
|
||||||
eoValueParam<unsigned>& vecSize = _parser.getORcreateParam(unsigned(10), "vecSize", "The number of variables ", 'n',"Genotype Initialization");
|
eoValueParam<unsigned>& vecSize = _parser.getORcreateParam(unsigned(10), "vecSize", "The number of variables ", 'n',"Genotype Initialization");
|
||||||
|
|
||||||
|
|
@ -78,8 +82,8 @@ eoEsChromInit<EOT> & do_make_genotype(eoParser& _parser, eoState& _state, EOT)
|
||||||
|
|
||||||
// now some initial value for sigmas - even if useless?
|
// now some initial value for sigmas - even if useless?
|
||||||
// shoudl be used in Normal mutation
|
// shoudl be used in Normal mutation
|
||||||
std::string & sigmaString = _parser.getORcreateParam(std::string("0.3"), "sigmaInit",
|
std::string & sigmaString = _parser.getORcreateParam(std::string("0.3"), "sigmaInit",
|
||||||
"Initial value for Sigmas (with a '%' -> scaled by the range of each variable)",
|
"Initial value for Sigmas (with a '%' -> scaled by the range of each variable)",
|
||||||
's',"Genotype Initialization").value();
|
's',"Genotype Initialization").value();
|
||||||
|
|
||||||
// check for %
|
// check for %
|
||||||
|
|
@ -90,7 +94,7 @@ eoEsChromInit<EOT> & do_make_genotype(eoParser& _parser, eoState& _state, EOT)
|
||||||
to_scale = true;
|
to_scale = true;
|
||||||
sigmaString.resize(pos); // get rid of %
|
sigmaString.resize(pos); // get rid of %
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_SSTREAM
|
#ifdef HAVE_SSTREAM
|
||||||
std::istringstream is(sigmaString);
|
std::istringstream is(sigmaString);
|
||||||
#else
|
#else
|
||||||
|
|
@ -103,7 +107,7 @@ eoEsChromInit<EOT> & do_make_genotype(eoParser& _parser, eoState& _state, EOT)
|
||||||
if ( (sigma < 0) )
|
if ( (sigma < 0) )
|
||||||
throw std::runtime_error("Negative sigma in make_genotype");
|
throw std::runtime_error("Negative sigma in make_genotype");
|
||||||
|
|
||||||
eoEsChromInit<EOT> * init =
|
eoEsChromInit<EOT> * init =
|
||||||
new eoEsChromInit<EOT>(boundsParam.value(), sigma, to_scale);
|
new eoEsChromInit<EOT>(boundsParam.value(), sigma, to_scale);
|
||||||
// satore in state
|
// satore in state
|
||||||
_state.storeFunctor(init);
|
_state.storeFunctor(init);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
// to avoid long name warnings
|
// to avoid long name warnings
|
||||||
#pragma warning(disable:4786)
|
#pragma warning(disable:4786)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
|
|
@ -14,7 +18,7 @@
|
||||||
#include "eoIntBounds.h"
|
#include "eoIntBounds.h"
|
||||||
|
|
||||||
|
|
||||||
// the global dummy bounds
|
// the global dummy bounds
|
||||||
// (used for unbounded variables when bounds are required)
|
// (used for unbounded variables when bounds are required)
|
||||||
eoIntNoBounds eoDummyIntNoBounds;
|
eoIntNoBounds eoDummyIntNoBounds;
|
||||||
|
|
||||||
|
|
@ -24,7 +28,7 @@ extern double read_double(std::string _s);
|
||||||
extern long int read_int(std::string _s);
|
extern long int read_int(std::string _s);
|
||||||
|
|
||||||
|
|
||||||
/** the constructor for eoGeneralIntBound - from a string
|
/** the constructor for eoGeneralIntBound - from a string
|
||||||
*/
|
*/
|
||||||
eoIntBounds* eoGeneralIntBounds::getBoundsFromString(std::string _value)
|
eoIntBounds* eoGeneralIntBounds::getBoundsFromString(std::string _value)
|
||||||
{
|
{
|
||||||
|
|
@ -36,7 +40,7 @@ eoIntBounds* eoGeneralIntBounds::getBoundsFromString(std::string _value)
|
||||||
|
|
||||||
// look for opening char
|
// look for opening char
|
||||||
size_t posDeb = _value.find_first_of(beginOrClose); // allow ]a,b]
|
size_t posDeb = _value.find_first_of(beginOrClose); // allow ]a,b]
|
||||||
if (posDeb >= _value.size()) // nothing left to read
|
if (posDeb >= _value.size()) // nothing left to read
|
||||||
throw std::runtime_error("Syntax error in eoGeneralIntBounds Ctor");
|
throw std::runtime_error("Syntax error in eoGeneralIntBounds Ctor");
|
||||||
|
|
||||||
// ending char: next {}() after posDeb
|
// ending char: next {}() after posDeb
|
||||||
|
|
@ -48,7 +52,7 @@ eoIntBounds* eoGeneralIntBounds::getBoundsFromString(std::string _value)
|
||||||
std::string sBounds = _value.substr(posDeb+1, posFin-posDeb-1);
|
std::string sBounds = _value.substr(posDeb+1, posFin-posDeb-1);
|
||||||
// and remove from original string
|
// and remove from original string
|
||||||
_value = _value.substr(posFin+1);
|
_value = _value.substr(posFin+1);
|
||||||
|
|
||||||
remove_leading(sBounds, delim);
|
remove_leading(sBounds, delim);
|
||||||
size_t posDelim = sBounds.find_first_of(delim);
|
size_t posDelim = sBounds.find_first_of(delim);
|
||||||
if (posDelim >= sBounds.size())
|
if (posDelim >= sBounds.size())
|
||||||
|
|
@ -88,7 +92,7 @@ eoIntBounds* eoGeneralIntBounds::getBoundsFromString(std::string _value)
|
||||||
if (maxBound <= minBound)
|
if (maxBound <= minBound)
|
||||||
throw std::runtime_error("Syntax error in eoGeneralIntBounds Ctor");
|
throw std::runtime_error("Syntax error in eoGeneralIntBounds Ctor");
|
||||||
locBound = new eoIntInterval(minBound, maxBound);
|
locBound = new eoIntInterval(minBound, maxBound);
|
||||||
}
|
}
|
||||||
else if (!minBounded && !maxBounded) // no bound at all
|
else if (!minBounded && !maxBounded) // no bound at all
|
||||||
locBound = new eoIntNoBounds;
|
locBound = new eoIntNoBounds;
|
||||||
else if (!minBounded && maxBounded)
|
else if (!minBounded && maxBounded)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue