diff --git a/eo/app/gprop/gprop.cpp b/eo/app/gprop/gprop.cpp index 3b977d5c..3c8d17c4 100644 --- a/eo/app/gprop/gprop.cpp +++ b/eo/app/gprop/gprop.cpp @@ -3,7 +3,7 @@ //----------------------------------------------------------------------------- #include // EXIT_SUCCESS EXIT_FAILURE -#include // exception +#include // exception #include // cerr cout #include // ifstream #include // string @@ -35,7 +35,7 @@ eoValueParam hiddenp(0, "hidden", "number of neurons in hidden layer", //----------------------------------------------------------------------------- void arg(int argc, char** argv); -void load_file(mlp::set& s, const string& s); +void load_file(mlp::set& s1, const string& s2); void ga(); //----------------------------------------------------------------------------- @@ -65,7 +65,7 @@ int main(int argc, char** argv) void arg(int argc, char** argv) { eoParser parser(argc, argv); - + parser.processParam(pop_size, "genetic operators"); parser.processParam(generations, "genetic operators"); parser.processParam(mut_rate, "genetic operators"); @@ -82,7 +82,7 @@ void arg(int argc, char** argv) load_file(train, "trn"); load_file(validate, "val"); load_file(test, "tst"); - + phenotype::trn_max = train.size(); phenotype::val_max = validate.size(); phenotype::tst_max = test.size(); @@ -104,8 +104,8 @@ void load_file(mlp::set& set, const string& ext) { cerr << "can't open file \"" << filename << "\"" << endl; exit(EXIT_FAILURE); - } - + } + ifs >> set; if (set.size() == 0) @@ -122,18 +122,18 @@ void ga() // create population eoInitChrom init; eoPop pop(pop_size.value(), init); - + // evaluate population eoEvalFuncPtr evaluator(eoChromEvaluator); apply(evaluator, pop); - + // selector eoStochTournamentSelect select; // genetic operators eoChromMutation mutation; eoChromXover xover; - + // stop condition eoGenContinue continuator1(generations.value()); phenotype p; p.val_ok = validate.size() - 1; p.mse_error = 0; @@ -142,23 +142,23 @@ void ga() // checkpoint eoCheckPoint checkpoint(continuator); - + // monitor eoStdoutMonitor monitor; checkpoint.add(monitor); - + // statistics eoBestFitnessStat stats; checkpoint.add(stats); monitor.add(stats); - + // genetic algorithm eoSGA sga(select, - xover, xover_rate.value(), - mutation, mut_rate.value(), - evaluator, + xover, xover_rate.value(), + mutation, mut_rate.value(), + evaluator, checkpoint); - + sga(pop); cout << "best: " << *max_element(pop.begin(), pop.end()) << endl; @@ -166,6 +166,6 @@ void ga() //----------------------------------------------------------------------------- -// Local Variables: +// Local Variables: // mode:C++ // End: diff --git a/eo/app/gprop/gprop.h b/eo/app/gprop/gprop.h index 399a1ff6..11bf684b 100644 --- a/eo/app/gprop/gprop.h +++ b/eo/app/gprop/gprop.h @@ -52,12 +52,12 @@ struct phenotype friend bool operator<(const phenotype& a, const phenotype& b) { - return a.val_ok < b.val_ok || !(b.val_ok < a.val_ok) && b.mse_error < a.mse_error; + return (a.val_ok < b.val_ok) || (!(b.val_ok < a.val_ok)) && (b.mse_error < a.mse_error); } friend bool operator==(const phenotype& a, const phenotype& b) { - return a.val_ok == b.val_ok && b.mse_error == a.mse_error; + return (a.val_ok == b.val_ok) && (b.mse_error == a.mse_error); } friend bool operator>=(const phenotype& a, const phenotype& b) @@ -69,9 +69,9 @@ struct phenotype { return (!(a == b)) && (!(a < b)); } - - - + + + friend std::ostream& operator<<(std::ostream& os, const phenotype& p) { return os << p.trn_ok << "/" << p.trn_max << " " @@ -79,7 +79,7 @@ struct phenotype << p.tst_ok << "/" << p.tst_max << " " << p.mse_error; } - + friend std::istream& operator>>(std::istream& is, phenotype& p) { return is; // complete me @@ -111,14 +111,14 @@ public: std::string className() const { return "Chrom"; } - void printOn (std::ostream& os) const - { - os << std::setprecision(3) << static_cast(*this) << " \t" - << fitness(); + void printOn (std::ostream& os) const + { + os << std::setprecision(3) << static_cast(*this) << " \t" + << fitness(); // os << fitness(); } - - void readFrom (std::istream& is) + + void readFrom (std::istream& is) { invalidate(); // complete me } @@ -201,16 +201,16 @@ public: int correct(const mlp::net& net, const mlp::set& set) { int sum = 0; - + for (mlp::set::const_iterator s = set.begin(); s != set.end(); ++s) { unsigned partial = 0; - + for (unsigned i = 0; i < s->output.size(); ++i) if (s->output[i] < 0.5 && net(s->input)[i] < 0.5 || s->output[i] > 0.5 && net(s->input)[i] > 0.5) ++partial; - + if (partial == s->output.size()) ++sum; } @@ -234,6 +234,6 @@ phenotype eoChromEvaluator(const Chrom& chrom) #endif // gprop_h -// Local Variables: -// mode:C++ +// Local Variables: +// mode:C++ // End: diff --git a/eo/src/eoFitContinue.h b/eo/src/eoFitContinue.h index 4d594c3d..b2328308 100644 --- a/eo/src/eoFitContinue.h +++ b/eo/src/eoFitContinue.h @@ -3,7 +3,7 @@ //----------------------------------------------------------------------------- // eoFitContinue.h // (c) Maarten Keijzer, 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 @@ -27,8 +27,8 @@ #include -/** -Fitness continuation: +/** +Fitness continuation: Continues until the maximum fitness level is reached. */ @@ -39,18 +39,17 @@ public: /// Define Fitness typedef typename EOT::Fitness FitnessType; - /// Ctor + /// Ctor eoFitContinue( const FitnessType _maximum) - : eoContinue (), maximum( _maximum ) {}; + : eoContinue (), maximum( _maximum ) {}; - /** Returns false when a fitness criterium is - * reached. Assumes pop is not sorted! */ - virtual bool operator() ( const eoPop& _pop ) + /** Returns false when a fitness criterium is reached. Assumes pop is not sorted! */ + virtual bool operator() ( const eoPop& _pop ) { FitnessType bestCurrentFitness = _pop.nth_element_fitness(0); - if (bestCurrentFitness >= maximum) + if (bestCurrentFitness >= maximum) { - std::cout << "STOP in eoFitContinue: Best fitness has reached " << + std::cout << "STOP in eoFitContinue: Best fitness has reached " << bestCurrentFitness << "\n"; return false; } diff --git a/eo/src/eoInitializer.h b/eo/src/eoInitializer.h index 3900ffe4..44933666 100644 --- a/eo/src/eoInitializer.h +++ b/eo/src/eoInitializer.h @@ -68,7 +68,7 @@ public: eoParticleBestInit &_initBest, eoTopology &_topology, eoPop < POT > &_pop - ) : proc(_proc), procPara(dummyEval), initVelo(_initVelo), initBest(_initBest), topology(_topology), pop(_pop) + ) : proc(_proc), initVelo(_initVelo), procPara(dummyEval), initBest(_initBest), topology(_topology), pop(_pop) {} //! Constructor for parallel evaluation @@ -110,15 +110,15 @@ private : /* @param proc First evaluation @param initVelo Initialization of the velocity - @param initBest Initialization of the best - */ + @param initBest Initialization of the best + */ eoUF& proc; eoVelocityInit < POT > & initVelo; eoParticleBestInit & initBest; - eoPopEvalFunc & procPara; + eoPopEvalFunc & procPara; eoTopology & topology; eoPop < POT > & pop; - + class eoDummyEval : public eoPopEvalFunc { public: diff --git a/eo/src/eoTwoOptMutation.h b/eo/src/eoTwoOptMutation.h index d6e27ca0..edeeb2f2 100644 --- a/eo/src/eoTwoOptMutation.h +++ b/eo/src/eoTwoOptMutation.h @@ -1,29 +1,27 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - //----------------------------------------------------------------------------- // eoTwoOptMutation.h // (c) GeNeura Team, 2000 - EEAAX 2000 - Maarten Keijzer 2000 // (c) INRIA Futurs - Dolphin Team - Thomas Legrand 2007 -/* - 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 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. +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 +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 - thomas.legrand@lifl.fr - Marc.Schoenauer@polytechnique.fr - mak@dhi.dk - */ +Contact: todos@geneura.ugr.es, http://geneura.ugr.es +thomas.legrand@lifl.fr +Marc.Schoenauer@polytechnique.fr +mak@dhi.dk +*/ //----------------------------------------------------------------------------- #ifndef eoTwoOptMutation_h @@ -33,48 +31,52 @@ /** - * Especially designed for combinatorial problem such as the TSP. - */ +* Especially designed for combinatorial problem such as the TSP. +*/ template class eoTwoOptMutation: public eoMonOp { - public: - - typedef typename EOT::AtomType GeneType; - - /// CTor - eoTwoOptMutation(){} - - - /// The class name. - virtual std::string className() const { return "eoTwoOptMutation"; } +public: + typedef typename EOT::AtomType GeneType; - /** - * - * @param eo The cromosome which is going to be changed. - */ - bool operator()(EOT& _eo) - { - unsigned i,j,from,to; - - // generate two different indices - i=eo::rng.random(_eo.size()); - do j = eo::rng.random(_eo.size()); while (i == j); - - from=std::min(i,j); - to=std::max(i,j); - int idx =(to-from)/2; - - // inverse between from and to - for(unsigned int k = 0; k <= idx ;k++) - std::swap(_eo[from+k],_eo[to-k]); + /// CTor + eoTwoOptMutation(){} - return true; + /// The class name. + virtual std::string className() const { return "eoTwoOptMutation"; } + + /** + * + * @param eo The cromosome which is going to be changed. + */ + bool operator()(EOT& _eo) { + // generate two different indices + unsigned i(eo::rng.random(_eo.size())); + unsigned j; + do { + j = eo::rng.random(_eo.size()); + } while(i == j); + unsigned from(std::min(i,j)); + unsigned to(std::max(i,j)); + unsigned idx((to - from)/2); + + // inverse between from and to + for(unsigned k = 0; k <= idx; ++k) + std::swap(_eo[from+k],_eo[to-k]); + return true; } - + }; //----------------------------------------------------------------------------- #endif + +// Local Variables: +// coding: iso-8859-1 +// mode: C++ +// c-file-offsets: ((c . 0)) +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/eo/src/ga/eoBit.h b/eo/src/ga/eoBit.h index 7d874893..989f3210 100644 --- a/eo/src/ga/eoBit.h +++ b/eo/src/ga/eoBit.h @@ -35,9 +35,10 @@ //----------------------------------------------------------------------------- -#include // std::ostream, std::istream -#include // bind2nd -#include // std::string +#include +#include +#include +#include #include "eoVector.h" @@ -102,7 +103,7 @@ public: { resize(bits.size()); std::transform(bits.begin(), bits.end(), begin(), - std::bind2nd(std::equal_to(), '1')); + std::bind2nd(std::equal_to(), '1')); } } }; @@ -113,6 +114,9 @@ public: // Local Variables: +// coding: iso-8859-1 // mode: C++ +// c-file-offsets: ((c . 0)) // c-file-style: "Stroustrup" +// fill-column: 80 // End: diff --git a/eo/src/other/eoExternalEO.h b/eo/src/other/eoExternalEO.h index 08516138..9be61020 100644 --- a/eo/src/other/eoExternalEO.h +++ b/eo/src/other/eoExternalEO.h @@ -41,7 +41,7 @@ class eoExternalEO : public EO, virtual public External public : eoExternalEO() - : EO(), External() + : External(), EO() {} /** Init externalEo with the struct itself and set fitness to zero */ diff --git a/eo/src/utils/eoFileSnapshot.h b/eo/src/utils/eoFileSnapshot.h index 5dff408a..d94d5346 100644 --- a/eo/src/utils/eoFileSnapshot.h +++ b/eo/src/utils/eoFileSnapshot.h @@ -1,5 +1,3 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - //----------------------------------------------------------------------------- // eoFileSnapshot.h // (c) Marc Schoenauer, Maarten Keijzer and GeNeura Team, 2001 @@ -27,8 +25,10 @@ #ifndef _eoFileSnapshot_h #define _eoFileSnapshot_h -#include +#include #include +#include + #include #include #include @@ -188,3 +188,12 @@ private : }; #endif + + +// Local Variables: +// coding: iso-8859-1 +// mode: C++ +// c-file-offsets: ((c . 0)) +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/eo/src/utils/eoGnuplot1DSnapshot.cpp b/eo/src/utils/eoGnuplot1DSnapshot.cpp index 10dba923..b41477a2 100644 --- a/eo/src/utils/eoGnuplot1DSnapshot.cpp +++ b/eo/src/utils/eoGnuplot1DSnapshot.cpp @@ -11,7 +11,6 @@ eoMonitor& eoGnuplot1DSnapshot::operator()() // update file using the eoFileMonitor method eoFileSnapshot::operator()(); #ifdef HAVE_GNUPLOT - // sends plot order to gnuplot std::ostringstream os; os << "set title 'Gen. " << getCounter() << "'; plot '" @@ -25,8 +24,10 @@ eoMonitor& eoGnuplot1DSnapshot::operator()() } - // Local Variables: +// coding: iso-8859-1 +// mode: C++ +// c-file-offsets: ((c . 0)) // c-file-style: "Stroustrup" // fill-column: 80 // End: diff --git a/eo/src/utils/make_help.cpp b/eo/src/utils/make_help.cpp index 1d7b2e5c..6647cf01 100644 --- a/eo/src/utils/make_help.cpp +++ b/eo/src/utils/make_help.cpp @@ -1,9 +1,7 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - //----------------------------------------------------------------------------- // make_help.h // (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2001 -/* +/* 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 @@ -26,19 +24,21 @@ #ifdef _MSC_VER // to avoid long name warnings #pragma warning(disable:4786) -#endif +#endif -#include +#include #include #include +#include + using namespace std; /** Generation of the status file, and output of the help message if needed * * MUST be called after ALL parameters have been read in order to list them * - * Warning: this is a plain .cpp file and shoudl NOT be included anywhere, + * Warning: this is a plain .cpp file and shoudl NOT be included anywhere, * but compiled separately and stored in a library. * * It is declared in all make_xxx.h files in representation-dependent dirs @@ -63,15 +63,15 @@ void make_help(eoParser & _parser) if (_parser.userNeedsHelp()) { _parser.printHelp(cout); - cout << "You can use an edited copy of file " << statusParam.value() + cout << "You can use an edited copy of file " << statusParam.value() << " as parameter file" << endl; exit(1); } } -/** test a dir. +/** test a dir. * Creates it if does not exist - * If exists, throws an exception or erase everything there, + * If exists, throws an exception or erase everything there, * depending on last parameter * * Always return true (for code easy writing on the other side :-) @@ -107,3 +107,12 @@ bool testDirRes(std::string _dirName, bool _erase=true) throw runtime_error(s); return true; } + + +// Local Variables: +// coding: iso-8859-1 +// mode: C++ +// c-file-offsets: ((c . 0)) +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/eo/test/t-eoSelect.cpp b/eo/test/t-eoSelect.cpp index 30fb0008..d62e5ade 100644 --- a/eo/test/t-eoSelect.cpp +++ b/eo/test/t-eoSelect.cpp @@ -1,13 +1,11 @@ -//----------------------------------------------------------------------------- - // to avoid long name warnings #ifdef _MSC_VER #pragma warning(disable:4786) #endif -#include // runtime_error +#include +#include -// general #include //-----------------------------------------------------------------------------