update lesson1 new version

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@268 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
liefooga 2007-04-17 15:55:58 +00:00
commit 97b9338bef
14 changed files with 454 additions and 689 deletions

View file

@ -2,7 +2,7 @@
//-----------------------------------------------------------------------------
// FlowShopEA.cpp
// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
/*
This library...
@ -14,9 +14,9 @@
using namespace std;
/* EO */
// eo general include
#include "eo"
/* EO + MOEO */
// moeo general include
#include <moeo>
// for the creation of an evaluator
#include "make_eval_FlowShop.h"
// for the creation of an initializer
@ -26,42 +26,25 @@ using namespace std;
// how to initialize the population
#include <do/make_pop.h>
// the stopping criterion
#include <do/make_continue_pareto.h>
#include <do/make_continue_moeo.h>
// outputs (stats, population dumps, ...)
#include <do/make_checkpoint_pareto.h>
#include <do/make_checkpoint_moeo.h>
// evolution engine (selection and replacement)
#include <do/make_ea_moeo.h>
// simple call to the algo
#include <do/make_run.h>
// checks for help demand, and writes the status file and make_help; in libutils
void make_help (eoParser & _parser);
/* MOEO */
#include <moeoArchive.h>
#include <moeoArchiveUpdater.h>
#include <moeoArchiveFitnessSavingUpdater.h>
#include <metric/moeoContributionMetric.h>
#include <metric/moeoEntropyMetric.h>
#include <metric/moeoBinaryMetricSavingUpdater.h>
// evolution engine (selection and replacement)
#include <old/make_algo_MOEO.h>
void make_help(eoParser & _parser);
/* FLOW-SHOP */
// definition of representation
#include "FlowShop.h"
// definition of fitness
#include "FlowShopFitness.h"
int
main (int argc, char *argv[])
{
try
{
eoParser parser (argc, argv); // for user-parameter reading
eoState state; // to keep all things allocated
int main(int argc, char* argv[]) {
try {
eoParser parser(argc, argv); // for user-parameter reading
eoState state; // to keep all things allocated
@ -70,11 +53,11 @@ main (int argc, char *argv[])
/*** the representation-dependent things ***/
// The fitness evaluation
eoEvalFuncCounter < FlowShop > &eval = do_make_eval (parser, state);
eoEvalFuncCounter<FlowShop>& eval = do_make_eval(parser, state);
// the genotype (through a genotype initializer)
eoInit < FlowShop > &init = do_make_genotype (parser, state);
eoInit<FlowShop>& init = do_make_genotype(parser, state);
// the variation operators
eoGenOp < FlowShop > &op = do_make_op (parser, state);
eoGenOp<FlowShop>& op = do_make_op(parser, state);
@ -83,43 +66,16 @@ main (int argc, char *argv[])
/*** the representation-independent things ***/
// initialization of the population
eoPop < FlowShop > &pop = do_make_pop (parser, state, init);
eoPop<FlowShop>& pop = do_make_pop(parser, state, init);
// definition of the archive
moeoArchive < FlowShop > arch;
moeoArchive<FlowShop> arch;
// stopping criteria
eoContinue < FlowShop > &term =
do_make_continue_pareto (parser, state, eval);
eoContinue<FlowShop>& term = do_make_continue_moeo(parser, state, eval);
// output
eoCheckPoint < FlowShop > &checkpoint =
do_make_checkpoint_pareto (parser, state, eval, term);
eoCheckPoint<FlowShop>& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch);
// algorithm
eoAlgo < FlowShop > &algo =
do_make_algo_MOEO (parser, state, eval, checkpoint, op, arch);
/*** archive-related features ***/
// update the archive every generation
moeoArchiveUpdater < FlowShop > updater (arch, pop);
checkpoint.add (updater);
// save the archive every generation in 'Res/Arch*'
moeoArchiveFitnessSavingUpdater < FlowShop > save_updater (arch);
checkpoint.add (save_updater);
// save the contribution of the non-dominated solutions in 'Res/Contribution.txt'
moeoVectorVsVectorBM < FlowShop, double >*contribution =
new moeoContributionMetric < FlowShop > ();
moeoBinaryMetricSavingUpdater < FlowShop >
contribution_updater (*contribution, arch, "Res/Contribution.txt");
checkpoint.add (contribution_updater);
// save the entropy of the non-dominated solutions in 'Res/Entropy.txt'
moeoVectorVsVectorBM < FlowShop, double >*entropy =
new moeoEntropyMetric < FlowShop > ();
moeoBinaryMetricSavingUpdater < FlowShop > entropy_updater (*entropy,
arch,
"Res/Entropy.txt");
checkpoint.add (entropy_updater);
eoAlgo<FlowShop>& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch);
@ -127,32 +83,36 @@ main (int argc, char *argv[])
/*** Go ! ***/
// help ?
make_help (parser);
make_help(parser);
// first evalution
apply < FlowShop > (eval, pop);
apply<FlowShop>(eval, pop);
pop.sort();
arch.update(pop);
// printing of the initial population
cout << "Initial Population\n";
pop.sortedPrintOn (cout);
pop.sortedPrintOn(cout);
cout << endl;
// run the algo
do_run (algo, pop);
do_run(algo, pop);
// printing of the final population
cout << "Final Population\n";
pop.sortedPrintOn (cout);
pop.sortedPrintOn(cout);
cout << endl;
// printing of the final archive
cout << "Final Archive\n";
arch.sortedPrintOn (cout);
arch.sortedPrintOn(cout);
cout << endl;
} catch (exception & e)
{
cout << e.what () << endl;
} catch(exception& e) {
cout << e.what() << endl;
}
return EXIT_SUCCESS;
}