From decda239777cfb051a54c0553a741e3cc3fdef75 Mon Sep 17 00:00:00 2001 From: nojhan Date: Sat, 9 May 2020 16:08:33 +0200 Subject: [PATCH] webpage fix - fix: use code instead of pre tags, - hard copy instead of iframe (github compat), - add A. Quemy tutorial links. --- index.html | 421 ++++++++++++++++++++++++++++++++++++++---- website/lightblue.css | 37 +++- 2 files changed, 413 insertions(+), 45 deletions(-) diff --git a/index.html b/index.html index e65ec8ba2..6e376f463 100644 --- a/index.html +++ b/index.html @@ -126,27 +126,103 @@ Download the latest stable release. -

Or clone the latest version:

git clone git://scm.gforge.inria.fr/paradiseo/paradiseo.git

+

Or clone the latest version: git clone git://scm.gforge.inria.fr/paradiseo/paradiseo.git

Build

As is a development framework, you do not really need to install it on all your systems. Just put it somewhere on your development computer, compile it from here and indicate where to find it to your favorite build system.

is mainly developed for Linux, on which it is straightforward to install a C++ build chain. - For example, on Ubuntu 18.04:

sudo apt install g++-8 cmake make libeigen3-dev libopenmpi-dev doxygen graphviz libgnuplot-iostream-dev

+ For example, on Ubuntu 18.04: sudo apt install g++-8 cmake make libeigen3-dev libopenmpi-dev doxygen graphviz libgnuplot-iostream-dev

use the CMake build system, so building it should be as simple as: -

mkdir build ; cd build ; cmake .. && make -j

+ mkdir build ; cd build ; cmake .. && make -j

For more details, see the building section.

Develop

-

Download the quick start project template, edit the

CMakeLists.txt
file to indicate where to find and start developing your own solver.

+

Download the quick start project template, edit the CMakeLists.txt file to indicate where to find and start developing your own solver.

To show you how does a code look, you will find below a minimal implementation of the popular CMA-ES algorithm.

- -

The code is presented without comments, to keep it short, but it is yet full-featured, as you will see if you compile it and run

./cmaes --help

+ + +

+ + 1 #include <eo> + 2 #include <edo> + 3 #include <es.h> + 4 #include <do/make_pop.h> + 5 #include <do/make_run.h> + 6 #include <do/make_continue.h> + 7 #include <do/make_checkpoint.h> + 8 + 9 using R = eoReal<eoMinimizingFitness>; +10 using CMA = edoNormalAdaptive<R>; +11 +12 R::FitnessType sphere(const R& sol) { +13 double sum = 0; +14 for(auto x : sol) { sum += x * x; } +15 return sum; +16 } +17 +18 int main(int argc, char** argv) { +19 eoParser parser(argc, argv); +20 eoState state; +21 +22 size_t dim = parser.createParam<size_t>(10, +23 "dimension", "Dimension", 'd', +24 "Problem").value(); +25 +26 size_t max_eval = parser.getORcreateParam<size_t>(100 * dim, +27 "maxEval", "Maximum number of evaluations", 'E', +28 "Stopping criterion").value(); +29 +30 edoNormalAdaptive<R> gaussian(dim); +31 +32 auto& obj_func = state.pack< eoEvalFuncPtr<R> >(sphere); +33 auto& eval = state.pack< eoEvalCounterThrowException<R> >(obj_func, max_eval); +34 auto& pop_eval = state.pack< eoPopLoopEval<R> >(eval); +35 +36 auto& gen = state.pack< eoUniformGenerator<R::AtomType> >(-5, 5); +37 auto& init = state.pack< eoInitFixedLength<R> >(dim, gen); +38 auto& pop = do_make_pop(parser, state, init); +39 pop_eval(pop,pop); +40 +41 auto& eo_continue = do_make_continue( parser, state, eval); +42 auto& pop_continue = do_make_checkpoint(parser, state, eval, eo_continue); +43 auto& best = state.pack< eoBestIndividualStat<R> >(); +44 pop_continue.add( best ); +45 auto& distrib_continue = state.pack< edoContAdaptiveFinite<CMA> >(); +46 +47 auto& selector = state.pack< eoRankMuSelect<R> >(dim/2); +48 auto& estimator = state.pack< edoEstimatorNormalAdaptive<R> >(gaussian); +49 auto& bounder = state.pack< edoBounderRng<R> >(R(dim, -5), R(dim, 5), gen); +50 auto& sampler = state.pack< edoSamplerNormalAdaptive<R> >(bounder); +51 auto& replacor = state.pack< eoCommaReplacement<R> >(); +52 +53 make_verbose(parser); +54 make_help(parser); +55 +56 auto& algo = state.pack< edoAlgoAdaptive<CMA> >( +57 gaussian , pop_eval, selector, +58 estimator, sampler , replacor, +59 pop_continue, distrib_continue); +60 +61 try { +62 algo(pop); +63 } catch (eoMaxEvalException& e) { +64 eo::log << eo::progress << "STOP" << std::endl; +65 } +66 +67 std::cout << best.value() << std::endl; +68 return 0; +69 } + + +

+ +

The code is presented without comments, to keep it short, but it is yet full-featured, as you will see if you compile it and run ./cmaes --help

Get help

@@ -250,7 +326,7 @@

One of the very powerful feature of is that its design targets easy combination of operators. Is is, for instance, straightforward to plug several different continuation operators in the stopping criterion slot of algorithms.

-

Popular combination of operators are provided as pre-defined functions, with automatic command line argument control.

+

Popular combination of operators are provided as code-defined functions, with automatic command line argument control.

Additionally, this design allows for all kind of hybridizations between algorithms. For instance, it's easy to plug a local search algorithm as a variation operator of an evolutionary algorithm.

Another advantage is that you can very easily try alternative algorithms. With tens of operators available for popular slots, the number of different algorithms increase very rapidly. For instance, just using basic genetic algorithm operators with set parameters, can provide up to 5 millions different bitstrings algorithms. Given that metaheuristics are very sensitive to the interactions between operators, this approach allows for vital degrees of freedom.

Of course, it's also possible to add new algorithms "grammar". For instance, the grammar for estimation of distribution algorithms is an extension of the one for evolutionary algorithms. That way, you can re-use the operators already implemented for other algorithms.

@@ -393,10 +469,263 @@

VS other Frameworks

The following tables show how compares to other active open-source frameworks, to the best of our knowledge (updated on 2019-10-18).

- -

Gathering and maintaining those information is not easy, so take them with a grain of salt, and if you see errors in those tables, please contact us.

+ + + + +
+Projects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Framework + Colored by speed level + LanguageLicense + If ‘Yes’, you have to disclose the sources of your solver when using this framework + Copyleft + Number of contributors + Contrib. + Number of lines of code ×1000 + kloc
C++LGPLv2/CeCillNo5082
jMetalJavaMITNo2960
ECJJavaAFLv3Yes3354
OpenBeagleC++LGPLv3No448
JeneticsJavaApachev2No1047
ECFC++MITNo1915
DEAPPythonLGPLv3No459
CllibScalaApachev2No174
+ +
+Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Framework + Evolutionary Algorithms + EA + Genetic Programming + GP + Estimation of Distribution Algorithms + EDA + Particle Swarm Opimization + PSO + Local Search + LS + Multi-Objective Optimization + MO + Parallelization for Clusters + MPI + Paralellization for Multicores + MC + Parallelization on GPU + GPU + Fitness Landscapes + FL + Algorithm Selection + ASScore
YYYYYYYYNYY10
ECJYYYNNYYYYNN7
jMetalYNNYNYYNNNN4
ECFYYNYNNYNNNN4
DEAPYNNNNYYYNNN4
OpenBeagleYNNNNYYNNNN3
JeneticsY?NNNYNNNNN2
+ +
+ + +

Gathering and maintaining this information is not easy, so take them with a grain of salt, and if you see errors in those tables, please contact us.

@@ -631,7 +960,7 @@ undiscovered knowledge.
  • EO Lesson6 second part Implement a binary PSO algorithm
  • -

    Tutorials MO (local search module)

    +

    Tutorials on MO (local search module)

    -

    Tutorials MOEO (multi-objective module)

    +

    Tutorials on MOEO (multi-objective module)