diff --git a/index.html b/index.html index 42023f92a..b32938fed 100644 --- a/index.html +++ b/index.html @@ -83,7 +83,8 @@
    Code
  1. Downloads
  2. -
  3. Builds
  4. +
  5. Dependencies
  6. +
  7. Compilation
  8. Licenses
  9. Contribute
@@ -104,6 +105,7 @@
+

: a Heuristic Optimization Framework

@@ -116,17 +118,22 @@
  • a focus on speed and several parallelization options.
  • +
    +

    Quick start

    +

    Download

    Download the latest stable release.

    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.

    @@ -138,12 +145,17 @@ 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.

    -

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

    +

    To show you how does a code look, you will find here 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 within the build directory, with c++ cmaes.cpp -I../eo/src -I../edo/src -DWITH_EIGEN=1 -I/usr/include/eigen3 -std=c++17 -L./lib/ -leo -leoutils -les -o cmaes and run ./cmaes --help

    +

    @@ -221,8 +233,7 @@

    -

    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

    If you need immediate support or have any question, the best way to get @@ -231,33 +242,52 @@

    Alternatively, you can join us on the official chatroom. You can try our webchat interface, or if you already use IRC, you can directly connect to the irc.freenode.org/#paradiseo multi-user chatroom with your favorite client.

    +
    +
    +

    Rationale

    +

    Black-box and Gray-box Optimization Problems

    targets the development of solvers for mathematical optimization problems for which you cannot compute gradients. The classical use case is the automated design or configuration of some system which is simulated.

    +
    + +

    It supports mono-objective and multi-objective functions, partial evaluation, several generic way to represent solutions and have all the tools for using your own representation.

    does not provides tools for modelling your problem, but makes it easy to find the best algorithm to solve it.

    +
    +

    Metaheuristics / Evolutionary Algorithms

    targets the design of metaheuristics solvers using computational intelligence methods, a subdomain of artificial intelligence.

    +
    + +

    It was originally designed for Evolutionary Algorithms, but rapidly evolved to provide abstractions for several "grammars" for other metaheuristics (or search heuristics, or whatever you call them). As of today, it provides: evolutionary algorithms (evolution strategies, genetic algorithms, etc.), particle swarm optimization, local searches (greedy search, simulated annealing, etc.), estimation of distribution algorithms (covariance-matrix adaptation, etc.).

    +
    +

    Why choosing ?

    Learning a full-featured framework like very often seems overkill. However, we would like to stress out that you may forget some points while jumping to this conclusion.

    +
    +
    +

    Full-featured

    provides the largest mature codebase of state-of-the-art algorithms, and is focused on (automatically) find the most efficient solvers.

    +
    +

    The most classical impediment to the use of is that you just want to check if your problem can actually be solved with heuristics. You feel that it would be a loss of time to learn complex stuff if it ends being useless.

    @@ -270,8 +300,14 @@ Fortunately, have the largest codebase of the market, hardened along 20 years of development of tens of solvers. Additionally, it provides the tools to rapidly search for the best combination of algorithms to solve your problem, even searching for this combination automatically.

    +
    +
    +

    Efficient

    is the fastest framework on the market, which is a crucial feature for modern and robust approach to solver design and validation.

    +
    + +

    Another classical criticism against is that C++ is hard and that a fast language is useless because speed is not a concern when your objective function is dominating all the runtime.

    @@ -283,28 +319,38 @@

    +
    +

    How fast is ?

    +

    As indicated in the previous section, this speed is crucially useful for algorithm design and algorithm selection.

    + +

    You can expect that validating an algorithm implemented with will be up to 10 times faster than its (heavily optimized) Python counterpart.

    To give an order of magnitude:

    • If you use the "official" vanilla implementation of CMA-ES in Python/Numpy solving the BBOB problem suite through the COCO plateform, running the whole benchmark will take approximately 10 minutes on a single Intel Core i5 @ 2.50GHz with a colid state disk.
    • The same experiment, running the implementation using the seamless binding to the IOHprofiler BBOB implementation, will take 1 minute.
    - Thus, you can expect that an algorithm implemented with will be up to 10 times faster than its (heavily optimized) Python counterpart. - As indicated in the previous section, this speed is crucially useful for algorithm design and algorithm selection.

    +
    +
    +

    Those measures are for a sequential execution, both implementation are able to run in parallel mode.

    CMA-ES solves numeric problems with quadratic complexity regarding the number of dimensions. If you target simpler algorithms, they will be faster but one can expect a similar behaviour.

    The pycma used for the comparison rely on numpy for the heavy parts of the computations. If you use a pure Python implementation, the difference will be far greater.

    +
    +
    +

    Features

    +

    Component-based Design

    Designing an algorithm with consists in choosing what components (called operators) you want to use for your specific needs, just as building a structure with Lego blocks.

    @@ -320,8 +366,9 @@

    If your problem is a bit more exotic, you will have to code a class that encodes how solutions to your problem are represented, and perhaps a few more. For instance, you may want ad-hoc variations operators, but most of the other operators (selection, replacement, stopping criteria, command-line interface, etc.) are already available in .

    +
    - +

    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.

    @@ -339,9 +386,10 @@
    The grammar of EDAs is extending the grammar of EAs, by adding an intermediate "distribution" data structure and operators manipulating it.
    +
    - +

    Large Choice of Components

    is organized in several modules, either providing different "grammars" for different algorithms, either providing high-level features. All modules follows the same architecture design and are interoperable with the others, so that you can easily choose the subset of features you need.

    @@ -356,7 +404,9 @@

    It is, for instance, easy to start with a simple local search, then add multi-objective capabilities, then shared-memory parallelization, then hybridization with an evolutionary algorithm and finally plug everything in an objective function so as to optimize the parameters with a particle swarm optimizer.

    +
    +

    Below is an abridged list of components available in the EO module (only):

    @@ -431,14 +481,17 @@
  • And more!
  • +
    - +

    Portability

    is mainly developed under Linux operating systems, where its dependencies and the C++ toolchain are easy to install. Recent versions have been tested with gcc and clang compilers.

    Stable versions should however work on Windows and any Unix-like operating system with a standard-conforming C++ development system.

    +
    +

    Previous versions of have been tested on the following platforms: @@ -464,7 +517,9 @@ +

    +

    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).

    @@ -726,10 +781,14 @@

    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.

    +
    +

    Documentation

    +
    +

    Academic Articles about

      @@ -905,8 +964,9 @@ undiscovered knowledge.
    +
    - +

    Presentations Slides

    The following documents aim to provide general overviews of the different 's modules. They are based on different pdf files which offer complementary view on both theoritical aspects and pratical use.

    @@ -947,37 +1007,39 @@ undiscovered knowledge. +
    +

    Tutorials

    Examples on the differents metaheuristics are available in "tutorials" directory of each module of . Here you can find the corresponding explications.

    Tutorials on EO (evolutionary algorithms module)

    -
    +

    API documentation

    The heart of is a set of classes implementing operators. Each module has a separate API documentation. If you want to browse the features and find which class to use, this is the right entry point

    @@ -1028,7 +1092,9 @@ undiscovered knowledge.

    Note that if you want to find the API documentation for the version you have at hand, just build the make doc target and open paradiseo/<build>/<module>/doc/html/index.html in your web browser.

    +
    +

    Examples of real solvers

    If you want to see examples of real solvers: @@ -1038,11 +1104,17 @@ undiscovered knowledge.

  • The Descarwin project hold the "DaE" planning solver, which is implemented with and won the International Planning Competition.
  • +

    +
    + +

    Code

    +
    +

    Downloads

    The current stable release is version 2.0.1: ParadisEO 2.0.1. Some other releases (older or newer) can be found on GitHub/paradiseo/releases.

    @@ -1057,10 +1129,10 @@ undiscovered knowledge.
  • Johann Dreo's: on GitHub.
  • +
    -

    Builds

    - -

    Dependencies

    +
    +

    Dependencies

    In order to build the latest version of , you will need a C++ compiler supporting C++17. So far, GCC and CLANG gave good results under Linux. You will also need the CMake and make build tools.

    @@ -1081,8 +1153,10 @@ undiscovered knowledge.

    To install all those dependencies at once under Ubuntu (18.04), just type: sudo apt install g++-8 cmake make libeigen3-dev libopenmpi-dev doxygen graphviz libgnuplot-iostream-dev.

    +
    -

    Compilation

    +
    +

    Compilation

    The build chain uses the classical workflow of CMake. The recommended method is to build in a specific, separated directory @@ -1111,7 +1185,9 @@ undiscovered knowledge.

    If you ENABLE_CMAKE_TESTING and BUILD_TESTING, it will be the tests, which you can run with the "ctest" command.

    If you ENABLE_CMAKE_EXAMPLE, it will also build the examples.

    +
    +

    Licenses

    is distributed under the @@ -1120,16 +1196,20 @@ undiscovered knowledge.

    Note that those licenses places copyleft restrictions on a program created with , but does not apply these restrictions to other software that would links with the program.

    -

    Contribute

    development is open and contributions are welcomed.

    The official bug tracker is available on the project page. But you may be more confortable using the issue tracker of Johann Dreo's project page on GitHub.

    If you have any question about contributing: subscribe to our (low traffic) mailing-list.

    +
    +
    + +

    History

    +

    Institutional support

    have been developed with the support of the following institutions: @@ -1150,7 +1230,9 @@ undiscovered knowledge.

  • Free University of Brussels
  • +
    +

    Authors

    The EO module was started in 1999 by the Geneura @@ -1209,7 +1291,7 @@ undiscovered knowledge.

    Some softwares listed here are using , but they are not maintained by the team. They may not be free softwares.

    -
      +

      • DegaX is an ActiveX control which embeds 0.8.4.
      • @@ -1219,6 +1301,10 @@ undiscovered knowledge.
      • GUIDE is a GUI that allows the generation of evolutionary algorithms. It can use or ECJ.
      +

      +
    +
    +
    @@ -1249,30 +1335,5 @@ undiscovered knowledge. - - - - - diff --git a/website/lightblue.css b/website/lightblue.css index 5fa985d1b..4d67b7b8d 100644 --- a/website/lightblue.css +++ b/website/lightblue.css @@ -18,13 +18,13 @@ body { } .logo { - font-family: 'Comfortaa', cursive; + font-family: 'Comfortaa', monospace; font-style:normal; font-weight:400; } .logo_eo { - font-family: 'Comfortaa', cursive; + font-family: 'Comfortaa', monospace; font-style:normal; font-weight:700; } @@ -38,8 +38,9 @@ pre { .command { background-color:#333; color:lightgrey; - padding:0.3em; + padding:2px; margin:0.2em; + border:thin solid white; } #alt { @@ -65,6 +66,8 @@ pre { #main { float:right; width:78%; + padding-right:1em; + padding-bottom:1em; } #slogan { @@ -176,6 +179,7 @@ a:hover { border: thin solid black; display:block; margin:1em; + box-shadow: 10px 10px 15px #074198; } .excerpt em { @@ -253,7 +257,7 @@ ul#menu a.selected:visited { background: #3366CC; color: #FFFFFF; } max-height: 0; overflow: hidden; transition: max-height 0.2s ease-out; - background-color: #f5f5f5; + background-color: #fbfbfb; border: thin solid #ccc; margin-left:2em; } @@ -277,10 +281,10 @@ figcaption { .code { width:95%; - height:35em; + height:70ch; resize:vertical; overflow-y:scroll; - box-shadow: 5px 10px 18px #aaa; + box-shadow: 10px 10px 10px #888; background-color:#2b2b2b; color: #d4cfc9; border:thin solid black; @@ -368,10 +372,8 @@ comment { display:none; } #main { clear:left; width:95%; - margin-left:2%; - margin-right:2%; - } - #main > p { + padding-left:1em; + padding-right:1em; text-align:justify; } @@ -394,3 +396,296 @@ comment { display:none; } } } +@media only screen and (min-width: 90em) { + #main { + } + + .details { + font-size:0.80em; + color:gray; + box-shadow: inset 5px 5px 5px #ddd; + } + + #Plan .excerpt { + width:80%; + margin-left:5%; + } + + /* QUICKSTART */ + + #Quickstart { + text-align:justify; + display:grid; + grid-template-columns:1fr 1fr; + grid-gap:2em; + } + + #Quickstart h1 { + grid-row:1; + grid-column-start:1; + grid-column-end:3; + } + + #Quickstart #Download { + grid-row:2; + grid-column:1; + } + + #Quickstart #Build { + grid-row:3; + grid-column:1; + } + + #Quickstart #Develop { + grid-row:4; + grid-column:1; + } + + #Quickstart #Gethelp { + grid-row:5; + grid-column:1; + } + + #Quickstart .code { + grid-row-start:2; + grid-row-end:6; + grid-column:2; + height:110ch; + } + + /* RATIONALE */ + + #Rationale { + display:grid; + grid-template-columns:1fr 1fr; + grid-gap:2em; + text-align:justify; + } + + #Rationale .collapsible { + display:none; + } + + #Rationale .details { + max-height:100%; + width:80%; + } + + #Rationale h1 { + grid-row:1; + grid-column-start:1; + grid-column-end:3; + } + + #Rationale #Optimization { + grid-row:2; + grid-column:1; + } + + #Rationale #Optimization_details { + grid-row:2; + grid-column:2; + } + + #Rationale #Metaheuristics { + grid-row:3; + grid-column:1; + } + + #Rationale #Metaheuristics_details { + grid-row:3; + grid-column:2; + } + + #Rationale #Why { + grid-row:4; + grid-column-start:1; + grid-column-end:3; + } + + #Rationale #Why_fullfeatured { + grid-row:5; + grid-column:1; + } + + #Rationale #Why_fullfeatured_details { + grid-row:5; + grid-column:2; + } + + #Rationale #Why_efficiency { + grid-row:6; + grid-column:1; + } + + #Rationale #Why_efficiency_details { + grid-row:6; + grid-column:2; + } + + #Rationale #Fast { + grid-row:7; + grid-column:1; + } + + #Rationale #Fast_details { + grid-row:7; + grid-column:2; + margin-top:15ch; + } + + /* FEATURES */ + + #Features { + display:grid; + grid-template-columns:1fr 1fr; + grid-gap:2em; + text-align:justify; + } + + #Features .collapsible { + display:none; + } + + #Features .details { + max-height:100%; + width:80%; + } + + #Features figure { + max-width:100%; + margin-left:1em; + } + + #Features h1 { + grid-row:1; + grid-column-start:1; + grid-column-end:3; + } + + #Features #ComponentBased { + grid-row:2; + grid-column:1; + } + + #Features #ComponentBased_details { + grid-row:2; + grid-column:2; + } + + #Features #LargeChoice { + grid-row:3; + grid-column:1; + } + + #Features #LargeChoice_details { + grid-row:3; + grid-column:2; + } + + #Features #Portability { + grid-row:4; + grid-column:1; + } + + #Features #Portability_details { + grid-row:4; + grid-column:2; + } + + #Features #VS { + grid-row:5; + grid-column-start:1; + grid-column-end:3; + } + + #Features #VS figure { + margin-left:15%; + } + + /* DOCUMENTATION */ + + #Documentation { + display:flex; + flex-wrap: wrap; + } + + #Documentation div { + margin:1em; + } + + #Documentation #Articles { + flex: 1 1 25em; + } + + #Documentation #Presentations { + flex: 1 1 25em; + } + + #Documentation #Tutorials { + flex: 1 1 30em; + } + + #Documentation #API { + flex: 1 1 25em; + } + + #Documentation #Examples { + flex: 1 1 25em; + } + + /* DOCUMENTATION */ + + #Code { + display:flex; + flex-wrap: wrap; + } + + #Code div { + margin:1em; + } + + #Code #Downloads { + flex: 1 1 20em; + text-align:justify; + } + + #Code #Dependencies { + flex: 1 1 40em; + text-align:justify; + } + + #Code #Compilation { + flex: 1 1 40em; + text-align:justify; + } + + #Code #Licenses_Contribute { + flex: 1 1 20em; + } + + /* HISTORY */ + + #History { + display:grid; + grid-template-columns:30% 70%; + grid-gap:2em; + } + + #History h1 { + grid-row:1; + grid-column-start:1; + grid-column-end:3; + } + + #History #Institution { + grid-row:2; + grid-column:1; + } + + #History #Authors { + grid-row:2; + grid-column:2; + } + +}