From 8567bc5d28cc66b40e3cc6e45a35a5c1abba2010 Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Fri, 22 Jul 2011 11:10:25 +0200 Subject: [PATCH 1/3] * eoLogger: overidded ctor in order to define a file to dump --- eo/src/utils/eoLogger.cpp | 50 +++++++++++++++++++++++++++------------ eo/src/utils/eoLogger.h | 19 +++++++++++++++ 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/eo/src/utils/eoLogger.cpp b/eo/src/utils/eoLogger.cpp index 39107612..e478ba09 100644 --- a/eo/src/utils/eoLogger.cpp +++ b/eo/src/utils/eoLogger.cpp @@ -21,8 +21,8 @@ Contact: http://eodev.sourceforge.net Authors: - Johann Dréo - Caner Candan +Johann Dréo +Caner Candan */ @@ -40,17 +40,7 @@ Authors: #include "eoLogger.h" -eoLogger::eoLogger() : - std::ostream(&_obuf), - - _verbose("quiet", "verbose", "Set the verbose level", 'v'), - _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), - _output("", "output", "Redirect a standard output to a file", 'o'), - - _selectedLevel(eo::progress), - _contextLevel(eo::quiet), - _fd(2), - _obuf(_fd, _contextLevel, _selectedLevel) +void eoLogger::_init() { _standard_io_streams[&std::cout] = 1; _standard_io_streams[&std::clog] = 2; @@ -67,6 +57,37 @@ eoLogger::eoLogger() : addLevel("xdebug", eo::xdebug); } +eoLogger::eoLogger() : + std::ostream(&_obuf), + + _verbose("quiet", "verbose", "Set the verbose level", 'v'), + _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), + _output("", "output", "Redirect a standard output to a file", 'o'), + + _selectedLevel(eo::progress), + _contextLevel(eo::quiet), + _fd(2), + _obuf(_fd, _contextLevel, _selectedLevel) +{ + _init(); +} + +eoLogger::eoLogger(eo::file file) : + std::ostream(&_obuf), + + _verbose("quiet", "verbose", "Set the verbose level", 'v'), + _printVerboseLevels(false, "print-verbose-levels", "Print verbose levels", 'l'), + _output("", "output", "Redirect a standard output to a file", 'o'), + + _selectedLevel(eo::progress), + _contextLevel(eo::quiet), + _fd(2), + _obuf(_fd, _contextLevel, _selectedLevel) +{ + _init(); + *this << file; +} + eoLogger::~eoLogger() { if (_fd > 2) { ::close(_fd); } @@ -99,7 +120,7 @@ void eoLogger::_createParameters( eoParser& parser ) //------------------------------------------------------------------ - // // we're gonna print the list of levels if -l parameter is used. + // we're gonna print the list of levels if -l parameter is used. //------------------------------------------------------------------ if ( _printVerboseLevels.value() ) @@ -195,7 +216,6 @@ namespace eo {} } -//! make_verbose gets level of verbose and sets it in eoLogger void make_verbose(eoParser& parser) { eo::log._createParameters( parser ); diff --git a/eo/src/utils/eoLogger.h b/eo/src/utils/eoLogger.h index 50369d35..e5faf8f3 100644 --- a/eo/src/utils/eoLogger.h +++ b/eo/src/utils/eoLogger.h @@ -142,12 +142,20 @@ class eoLogger : public eoObject, public std::ostream { public: + //! default ctor eoLogger(); + + //! overidded ctor in order to instanciate a logger with a file define in parameter + eoLogger(eo::file file); + + //! dtor ~eoLogger(); + //! common function for all eo objects virtual std::string className() const; //! Print the available levels on the standard output + //! enablable with the option -l void printLevels() const; /*! Returns the selected levels, that is the one asked by the user @@ -163,11 +171,16 @@ public: inline eo::Levels getLevelContext() const { return _contextLevel; } protected: + //! in order to add a level of verbosity void addLevel(std::string name, eo::Levels level); private: + //! used by the function make_verbose in order to add options to specify the verbose level void _createParameters( eoParser& ); + //! used by the set of ctors to initiate some useful variables + void _init(); + private: /** * outbuf @@ -195,21 +208,26 @@ public: /** * operator<< used there to set a verbose mode. */ + //! in order to use stream style to define the context verbose level where the following logs will be saved friend eoLogger& operator<<(eoLogger&, const eo::Levels); /** * operator<< used there to set a filename through the class file. */ + //! in order to use stream style to define a file to dump instead the standart output friend eoLogger& operator<<(eoLogger&, eo::file); /** * operator<< used there to set a verbose level through the class setlevel. */ + //! in order to use stream style to define manually the verbose level instead using options friend eoLogger& operator<<(eoLogger&, eo::setlevel); /** * operator<< used there to be able to use std::cout to say that we wish to redirect back the buffer to a standard output. */ + //! in order to use stream style to go back to a standart output defined by STL + //! and to get retro-compatibility friend eoLogger& operator<<(eoLogger&, std::ostream&); private: @@ -254,6 +272,7 @@ private: /** @example t-eoLogger.cpp */ +//! make_verbose gets level of verbose and sets it in eoLogger void make_verbose(eoParser&); namespace eo From d47c3345969fdf364cfaf24acee503f5f2a566f3 Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Tue, 26 Jul 2011 13:33:34 +0200 Subject: [PATCH 2/3] * eo website W3C compliant + integrated mini-jappix to connect to XMPP from website --- website/index.html | 713 +++++++++++++++++++++++---------------------- 1 file changed, 361 insertions(+), 352 deletions(-) diff --git a/website/index.html b/website/index.html index 3aed1543..b3154a83 100644 --- a/website/index.html +++ b/website/index.html @@ -1,33 +1,44 @@ + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> - - - - - - - + + + + + + + - Evolving Objects (EO): Evolutionary Computation Framework - + Evolving Objects (EO): Evolutionary Computation Framework - + + -
- Evolving Objects logo - +
+ -
+
-

Evolving Objects (EO): an Evolutionary Computation Framework

+

Evolving Objects (EO): an Evolutionary Computation Framework

-

EO is a template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast.

+

EO is a template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast.

- + -

Evolutionary algorithms forms a family of algorithms inspired by the theory of evolution, that solve various problems. - They evolve a set of solutions to a given problem, in order to produce the best results. - These are stochastic algorithms, because they iteratively use random processes. - The vast majority of these methods are used to solve optimization problems, and may be also called "metaheuristics". - They are also ranked among computational intelligence methods, a domain close to artificial intelligence. -

+

Evolutionary algorithms forms a family of algorithms inspired by the theory of evolution, that solve various problems. + They evolve a set of solutions to a given problem, in order to produce the best results. + These are stochastic algorithms, because they iteratively use random processes. + The vast majority of these methods are used to solve optimization problems, and may be also called "metaheuristics". + They are also ranked among computational intelligence methods, a domain close to artificial intelligence. +

-

With the help of EO, you can easily design evolutionary algorithms that will find solutions to virtually all kind of hard optimization problems, from continuous to combinatorial ones.

+

With the help of EO, you can easily design evolutionary algorithms that will find solutions to virtually all kind of hard optimization problems, from continuous to combinatorial ones.

-

If you want to know how to help us to improve EO, the easiest way is to click on the following button: +

If you want to know how to help us to improve EO, the easiest way is to click on the following button: -

- - - -
+
+ + + +
- + - + - -
-
-

+ + +
+
+

-

If you need immediate support or have any question, you can join us on the official chatroom. Just go on our webchat interface and enter your nick. If you already have an XMPP account (Jabber or Google Talk, for example), you can directly connect to the eo@chat.jabberfr.org MUC with your favorite client.

+

If you need immediate support or have any question, you can join us on the official chatroom. Just go on our webchat interface and enter your nick. If you already have an XMPP account (Jabber or Google Talk, for example), you can directly connect to the eo@chat.jabberfr.org MUC with your favorite client.

- + -

Features

+

Features

-

Component-based framework

+

Component-based framework

-

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

-

If you have a classical problem for which available code exists (for example if you have a black-box problem with real-valued variables), you will just choose components to form an algorithm and connect it to your fitness function (which computes the quality of a given solution).

-

If your problem is a bit more exotic, you will have to code a class that represents how your individuals (a solution to your problem) are represented, and perhaps some variations operators, but most of the other operators (selection, replacement, stopping criteria, command-line interface, etc.) are already available in EO.

-

+

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

+

If you have a classical problem for which available code exists (for example if you have a black-box problem with real-valued variables), you will just choose components to form an algorithm and connect it to your fitness function (which computes the quality of a given solution).

+

If your problem is a bit more exotic, you will have to code a class that represents how your individuals (a solution to your problem) are represented, and perhaps some variations operators, but most of the other operators (selection, replacement, stopping criteria, command-line interface, etc.) are already available in EO.

+

-

Main Features

+

Main Features

- + - +
-
Examples of problems that you can solve with the help of EO:
@@ -205,345 +217,342 @@
+ -
    +
    • Flexible design that permits to easily create virtually any algorithm
    • Solution representation for continuous and combinatorial problems: -
        -
      • binary-strings,
      • -
      • permutations,
      • -
      • vectors,
      • -
      • easily write your own,
      • -
      • -
      +
        +
      • binary-strings,
      • +
      • permutations,
      • +
      • vectors,
      • +
      • easily write your own,
      • +
      • +
    • Several algorithm paradigms: -
        -
      • evolution strategies,
      • -
      • genetic algorithms,
      • -
      • estimation of distribution,
      • -
      • particle swarm optimization
      • -
      • -
      +
        +
      • evolution strategies,
      • +
      • genetic algorithms,
      • +
      • estimation of distribution,
      • +
      • particle swarm optimization
      • +
      • +
    • Many selection and replacement operators: -
        -
      • rank-based,
      • -
      • deterministic or stochastic tournaments,
      • -
      • roulette,
      • -
      • elitism,
      • -
      • -
      +
        +
      • rank-based,
      • +
      • deterministic or stochastic tournaments,
      • +
      • roulette,
      • +
      • elitism,
      • +
      • +
    • Ready-to-use variations operators: -
        -
      • uniform initializer, -
      • gaussian mutation, -
      • subtree crossover, -
      • -
      +
        +
      • uniform initializer,
      • +
      • gaussian mutation,
      • +
      • subtree crossover,
      • +
      • +
    • Easy combination of several operators: -
        -
      • proportional combination,
      • -
      • sequential call,
      • -
      • -
      +
        +
      • proportional combination,
      • +
      • sequential call,
      • +
      • +
    • Portable and human-readable parameter files
    • Suspend and load population from files
    • Versatile checkpointing and logging: -
        -
      • graphical display,
      • -
      • file dump,
      • -
      • various statistics,
      • -
      • signal catching,
      • -
      • -
      +
        +
      • graphical display,
      • +
      • file dump,
      • +
      • various statistics,
      • +
      • signal catching,
      • +
      • +
    • Mersenne Twister random number generator (and various distributions)
    • No useless computation (sparing fitness call, functor-based calls)
    • Fast running speed, thanks to C++
    • And more!
    • -
    +
-

Portability

-

EO should work on Windows and any Un*x-like operating system with a +

Portability

+

EO should work on Windows and any Un*x-like operating system with a standard-conforming C++ development system.

-

Recent versions of EO have been tested on the following platforms: -

+

Recent versions of EO have been tested on the following platforms: +

-
    -
  • Linux x86 with GCC 3.x and 4.x
  • -
  • Linux x86_64 with GCC 3.x and GCC 4.x
  • -
  • MacOS X/Darwin PowerPC with GCC 3.x
  • -
  • MacOS X/Darwin x86 with GCC 4.x
  • -
  • Microsoft Windows using Cygwin's GCC 3.x (cygming special). -
  • Microsoft Windows using Visual Studio 2003/2005; projects files +
      +
    • Linux x86 with GCC 3.x and 4.x
    • +
    • Linux x86_64 with GCC 3.x and GCC 4.x
    • +
    • MacOS X/Darwin PowerPC with GCC 3.x
    • +
    • MacOS X/Darwin x86 with GCC 4.x
    • +
    • Microsoft Windows using Cygwin's GCC 3.x (cygming special).
    • +
    • Microsoft Windows using Visual Studio 2003/2005; projects files are provided.
    • -
    • Solaris SPARC with GCC 3.x
    • -
    • Solaris x86 with GCC 3.x
    • -
    +
  • Solaris SPARC with GCC 3.x
  • +
  • Solaris x86 with GCC 3.x
  • +
-

Recent versions of EO uses the CMake portable build system, that permits to easily generate a build chain for your environment.

+

Recent versions of EO uses the CMake portable build system, that permits to easily generate a build chain for your environment.

-

If you have tested EO on a system not listed here, please let - us know.

+

If you have tested EO on a system not listed here, please let + us know.

-

If you are working on a system with an older C++ compiler there +

If you are working on a system with an older C++ compiler there is a good chance that eo-0.9.3z.1 works. It is tested on Linux with gcc-2.9x and several systems (IRIX, Solaris) with egcs.

-

Presentations

+

Presentations

-

A functional and "philosophical" overview of EO was presented at EA'01 conference. - You can download the paper +

A functional and "philosophical" overview of EO was presented at EA'01 conference. + You can download the paper or the - slides, or browse them right here:

+ slides, or browse them right here:

- + -

You can also read this - PowerPoint presentation, that shows the EO philosophy. +

You can also read this + PowerPoint presentation, that shows the EO philosophy. It includes a Visual Basic macro for evolving objects in Visual Basic for Applications.

-

EO is described in the following scientific article:
-

M. Keijzer, J.J. Merelo, G. Romero, G., M. Schoenauer, - "Evolving +

EO is described in the following scientific article:
+

M. Keijzer, J.J. Merelo, G. Romero, G., M. Schoenauer, + "Evolving objects: A general purpose evolutionary computation library", Artificial Evolution, 2310, 829--888 (2002).
-

+

-

- -@Article{Keijzer2001,
-  title =     "Evolving Objects: A General Purpose Evolutionary Computation Library ",
-  author =    "Maarten Keijzer and J. J. Merelo and G. Romero and M. Schoenauer",
-  journal =   "Artificial Evolution",
-  year =      "2002",
-  volume =    "2310",
-  pages =     "829--888",
-  keywords =  "genetic algorithms, genetic programming, evolutionary computation, metaheuristic, computational intelligence, optimization",
-  URL =       "http://www.lri.fr/~marc/EO/EO-EA01.ps.gz",
-  size =      "12 pages",
-  abstract =  "This paper presents the evolving objects library
-                 (EOlib), an object-oriented framework for evolutionary
-                 computation (EC) that aims to provide a flexible set of
-                 classes to build EC applications. EOlib design
-                 objective is to be able to evolve any object in which
-                 fitness makes sense.",
-}
-
-
-

+

+ + @Article{Keijzer2001,
+   title =     "Evolving Objects: A General Purpose Evolutionary Computation Library ",
+   author =    "Maarten Keijzer and J. J. Merelo and G. Romero and M. Schoenauer",
+   journal =   "Artificial Evolution",
+   year =      "2002",
+   volume =    "2310",
+   pages =     "829--888",
+   keywords =  "genetic algorithms, genetic programming, evolutionary computation, metaheuristic, computational intelligence, optimization",
+   URL =       "http://www.lri.fr/~marc/EO/EO-EA01.ps.gz",
+   size =      "12 pages",
+   abstract =  "This paper presents the evolving objects library
+                  (EOlib), an object-oriented framework for evolutionary
+                  computation (EC) that aims to provide a flexible set of
+                  classes to build EC applications. EOlib design
+                  objective is to be able to evolve any object in which
+                  fitness makes sense.",
+ }
+
+
+

-

Here is a list of some known publications that used EO:

-
+
- - - + + + - + From d39cafe6d6f484cddecb76e4b8e50ccdb63d7b04 Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Tue, 26 Jul 2011 13:35:01 +0200 Subject: [PATCH 3/3] * lightblue.css: indented --- website/lightblue.css | 72 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/website/lightblue.css b/website/lightblue.css index e96546fb..b6802a0e 100644 --- a/website/lightblue.css +++ b/website/lightblue.css @@ -1,14 +1,14 @@ -/*************************************************************************** -* * -* contented3 - An open source xhtml/css website template by Contented * -* Designs. You're free to modify it and use it for any purpose without * -* cost or obligation. We'd prefer that you leave the link to our website * -* in the footer but it's not required. * -* * -* If you have comments or questions, please contact us at * -* http://www.ContentedDesigns.com. Thanks! * -* * -***************************************************************************/ +/**************************************************************************** + * * + * contented3 - An open source xhtml/css website template by Contented * + * Designs. You're free to modify it and use it for any purpose without * + * cost or obligation. We'd prefer that you leave the link to our website * + * in the footer but it's not required. * + * * + * If you have comments or questions, please contact us at * + * http://www.ContentedDesigns.com. Thanks! * + * * + ***************************************************************************/ * { padding:0px; @@ -111,18 +111,18 @@ table { } a { - color: #3366CC; - /*background-color: #FFFFFF;*/ - font-weight: normal; - text-decoration: none; + color: #3366CC; + /*background-color: #FFFFFF;*/ + font-weight: normal; + text-decoration: none; outline:none; } a:hover { - color: #0033CC; - /*background-color: #FFFFFF;*/ - font-weight: normal; - text-decoration: underline; + color: #0033CC; + /*background-color: #FFFFFF;*/ + font-weight: normal; + text-decoration: underline; } @@ -133,12 +133,12 @@ a:hover { } #title { - color:#3366CC; - /*background-color:#FFFFFF;*/ - font-size:3em; - font-weight:bold; - margin:0px 0px 10px 0px; - float:left; + color:#3366CC; + /*background-color:#FFFFFF;*/ + font-size:3em; + font-weight:bold; + margin:0px 0px 10px 0px; + float:left; } #slogan { @@ -170,7 +170,7 @@ ul#menu { margin: 0; padding: 0; list-style: none; - /*width:650px;*/ +/*width:650px;*/ } ul#menu li { @@ -201,7 +201,7 @@ ul#menu a.selected:visited { background: #3366CC; color: #FFFFFF; } padding:1em; margin:1em; /*width:650px; - float:left;*/ + float:left;*/ clear:left; } @@ -217,16 +217,16 @@ ul#menu a.selected:visited { background: #3366CC; color: #FFFFFF; } } #foot a { - color:#3366CC; - background-color:#FFFFFF; - text-decoration: none; + color:#3366CC; + background-color:#FFFFFF; + text-decoration: none; } #foot a:hover { - color:#0033CC; - background-color:#FFFFFF; - font-weight: normal; - text-decoration: underline; + color:#0033CC; + background-color:#FFFFFF; + font-weight: normal; + text-decoration: underline; } #copyright { @@ -248,10 +248,10 @@ ul#menu a.selected:visited { background: #3366CC; color: #FFFFFF; } font-weight:bold; } - .table_form_label { +.table_form_label { text-align:right; padding-right:1em; - } +} .table_form_submit { text-align:center;