Changed the "to-down / bottom-up" to "algorithm-based / component-based"
Also added all replacement procedures in eoEngine.html and the general operator interface in eoOperators.html
This commit is contained in:
parent
9c3453e876
commit
2a93bba7e6
24 changed files with 881 additions and 294 deletions
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -355,7 +355,7 @@ The actual code is in boldface and the comment in normal face.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -337,7 +337,7 @@ The actual code is in boldface and the comment in normal face.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -353,7 +353,7 @@ The actual code is in boldface and the comment in normal face.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -336,7 +336,7 @@ The actual code is in boldface and the comment in normal face.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -265,7 +265,7 @@ e)</font></font></font>
|
||||||
<br><font face="Courier New,Courier"><font color="#993300"><font size=+1>}</font></font></font>
|
<br><font face="Courier New,Courier"><font color="#993300"><font size=+1>}</font></font></font>
|
||||||
<p>
|
<p>
|
||||||
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<a href="eoLesson1.html">Back to Lesson 1</a> -
|
<a href="eoLesson1.html">Back to Lesson 1</a> -
|
||||||
<a href="eoTutorial.html">Tutorial
|
<a href="eoTutorial.html">Tutorial
|
||||||
main page</a> -
|
main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EO
|
||||||
documentation</a>
|
documentation</a>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -273,7 +273,7 @@ code removed ]</font></font>
|
||||||
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> -
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> -
|
||||||
<a href="eoTutorial.html">Tutorial
|
<a href="eoTutorial.html">Tutorial
|
||||||
main page</a> -
|
main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EO
|
||||||
documentation</a>
|
documentation</a>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTutorial.html">Tutorial main page</a> -
|
<a href="eoTutorial.html">Tutorial main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> -<font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
hints</a> -<font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font>
|
documentation</a></font></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -59,8 +59,8 @@ you'll probably end up with an executable file named <b><tt><font color="#660000
|
||||||
<center>Complain that it does not work under Windows :-)</center>
|
<center>Complain that it does not work under Windows :-)</center>
|
||||||
|
|
||||||
<hr WIDTH="100%"><a href="eoTutorial.html">Tutorial main page</a> -
|
<hr WIDTH="100%"><a href="eoTutorial.html">Tutorial main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
hints</a> - <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font>
|
documentation</a></font></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson3.html">Back to Lesson 3</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson3.html">Back to Lesson 3</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -597,7 +597,7 @@ cout << "Exception: " << e.what() << '\n';</font></tt></b>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<hr WIDTH="100%"><a href="eoLesson3.html">Back to Lesson 3</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson3.html">Back to Lesson 3</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></b>
|
documentation</a></font></b>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -44,7 +44,7 @@ i++)</font></tt></b>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
<body text="#000000" background="beige009.jpg" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" background="beige009.jpg" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font>
|
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,20 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="GENERATOR" content="Mozilla/4.72 [en] (X11; U; Linux 2.2.16 i686) [Netscape]">
|
<meta name="GENERATOR" content="Mozilla/4.72 [en] (X11; U; Linux 2.2.16 i686) [Netscape]">
|
||||||
<title>EO - The Bottom-Up approach</title>
|
<title>EO - The Component-Based approach</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#CCCCCC" link="#0000EF" vlink="#51188E" alink="#FF0000">
|
<body text="#000000" bgcolor="#CCCCCC" link="#0000EF" vlink="#51188E" alink="#FF0000">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<center>
|
<center>
|
||||||
<h1>
|
<h1>
|
||||||
<font color="#FF0000">EO - Bottom-Up approach</font></h1></center>
|
<font color="#FF0000">EO - Component-Based approach</font></h1></center>
|
||||||
|
|
||||||
<p><br>Congratualtions - You have chosen the bottom-up approach!
|
<p><br>Congratualtions - You have chosen the component-based approach!
|
||||||
From here you will be allowed to browse into the different components of
|
From here you will be allowed to browse into the different components of
|
||||||
an Evolutionary Algorithm, and to see how to program your favorite using
|
an Evolutionary Algorithm, and to see how to program your favorite using
|
||||||
the EO library.
|
the EO library.
|
||||||
|
|
@ -60,8 +60,8 @@ to go directly to the corresponding section of the tutorial.
|
||||||
</map>
|
</map>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Top-Down
|
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
|
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
||||||
<title>Genetic Engine</title>
|
<title>Genetic Engine</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
- <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<center>
|
<center>
|
||||||
|
|
@ -16,21 +17,42 @@ documentation</a></font></font></b>
|
||||||
<p><br><b><font color="#000099"><font size=+2>Contents</font></font></b>
|
<p><br><b><font color="#000099"><font size=+2>Contents</font></font></b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Introduction</li>
|
<a href="#introduction">Introduction</a></li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Selection</li>
|
<a href="#selection">Selection</a> choice of parents that will be allowed
|
||||||
|
to <b><font color="#FF6600">reproduce</font></b></li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Replacement</li>
|
<a href="#replacement">Replacement</a> choice of individuals that will
|
||||||
|
<b><font color="#FF6600">survive</font></b></li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Popular evolution engines</li>
|
Popular <a href="#popular">evolution engines</a> all historical evolution
|
||||||
|
engines are implemented in EO</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Helper classes:</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="#tournament">tournaments</a>, are intensively used within selection
|
||||||
|
and replacement procedures</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="#howmany">rate-or-number</a> is used to decide whether to return
|
||||||
|
a relative (to the current population size) or absolute number, when something
|
||||||
|
should return more than one individual.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="#SAD">Survive-and-die</a>, a functor class with two populations
|
||||||
|
arguments: saves some from the first in the second, and kill some others
|
||||||
|
from the first. Used in replacements only.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p><br><b><font color="#000099"><font size=+2>Introduction</font></font></b>
|
<hr WIDTH="100%">
|
||||||
<br>The term evolution engine denotes the different parts that simulate
|
<br><a NAME="introduction"></a><b><font color="#000099"><font size=+2>Introduction</font></font></b>
|
||||||
the Darwinism in Evolutionary Algorithms.
|
<p>The term <b><font color="#FF6600">evolution engine</font></b> denotes
|
||||||
|
the different parts of an Evolutionary Algorithm that simulate the Darwinism:
|
||||||
<center>
|
<center>
|
||||||
<p><i><font color="#009900">The fittest individuals are more likely to
|
<p><i><font color="#009900">The fittest individuals are more likely to
|
||||||
reproduce and survive.</font></i></center>
|
reproduce and survive.</font></i></center>
|
||||||
|
|
@ -43,10 +65,17 @@ that will be allowed to <b><font color="#009900">reproduce</font></b><font color
|
||||||
<br><a href="#replacement">Replacement</a> takes place after reproduction,
|
<br><a href="#replacement">Replacement</a> takes place after reproduction,
|
||||||
and is the Darwinistic choice of those individuals that will <b><font color="#009900">survive</font></b>,
|
and is the Darwinistic choice of those individuals that will <b><font color="#009900">survive</font></b>,
|
||||||
i.e. become the parents of the next generation.
|
i.e. become the parents of the next generation.
|
||||||
<p><a NAME="selection"></a><b><font color="#000099"><font size=+2>Selection</font></font></b>
|
<p>Both selection and replacement will be discussed in turn, before some
|
||||||
|
helper classes that are used within selection and replacement procedures
|
||||||
|
are presented.
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%"><a NAME="selection"></a><b><font color="#000099"><font size=+2>Selection</font></font></b>
|
||||||
<br>
|
<br>
|
||||||
<p><a NAME="replacement"></a><b><font color="#000099"><font size=+2>Replacement</font></font></b>
|
<br>
|
||||||
<br>The replacement phase takes place <font color="#FF6600">after the birth
|
<p>
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="replacement"></a><b><font color="#000099"><font size=+2>Replacement</font></font></b>
|
||||||
|
<p>The replacement phase takes place <font color="#FF6600">after the birth
|
||||||
of all offspring</font> through variation operators. The idea is to close
|
of all offspring</font> through variation operators. The idea is to close
|
||||||
the generation loop, i.e. to end up with a population of individuals that
|
the generation loop, i.e. to end up with a population of individuals that
|
||||||
will be the initial population of next generation. That population will
|
will be the initial population of next generation. That population will
|
||||||
|
|
@ -57,64 +86,46 @@ one generation to the next one - though nothing stops you from writing
|
||||||
an algorithm with varying population size.
|
an algorithm with varying population size.
|
||||||
<p><b><font color="#000099">Replacement: </font><font color="#FF0000">The
|
<p><b><font color="#000099">Replacement: </font><font color="#FF0000">The
|
||||||
interface</font></b>
|
interface</font></b>
|
||||||
<br>The abstract class for replacement procedures is the functor class
|
<p>The abstract class for replacement procedures is the functor class
|
||||||
<font color="#009900">eoReplacement</font>,
|
<font color="#009900">eoReplacement</font>,
|
||||||
and the interface for its <tt><font color="#993300">operator()</font></tt>
|
and the interface for its <tt><font color="#993300">operator()</font></tt>
|
||||||
is
|
is
|
||||||
<center>
|
<center>
|
||||||
<p><b><tt><font color="#993300">void operator()(const eoPop<EOT>&
|
<p><b><tt><font color="#993300">void operator()(eoPop<EOT>& _parents,
|
||||||
_parents, eoPop<EOT>& _offspring)</font></tt></b></center>
|
eoPop<EOT>& _offspring)</font></tt></b></center>
|
||||||
|
|
||||||
<p>which you could have guessed from the inheritance tree for class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoreplacement.html">eoReplacement</a></font></font></b>.,
|
<p>which you could have guessed from the inheritance tree for class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoreplacement.html">eoReplacement</a></font></font></b>.,
|
||||||
as you see there that <font color="#009900">eoReplacement</font> derives
|
as you see there that <font color="#009900">eoReplacement</font> derives
|
||||||
from <tt><font color="#993300">class eoBF<const eoPop<EOT>&,
|
from <tt><font color="#993300">class eoBF<eoPop<EOT>&, eoPop<EOT>&,
|
||||||
eoPop<EOT>&, void></font></tt>.
|
void></font></tt>.
|
||||||
<br>This means that it takes <font color="#FF6600">2 populations</font>
|
<br>This means that it takes <font color="#FF6600">2 populations</font>
|
||||||
(called, for obvious anthropomorphic reasons, _parents and _offspring :-)
|
(called, for obvious anthropomorphic reasons, _parents and _offspring :-)
|
||||||
and puts the result into population offspring (as _parents is passed as
|
and is free to modify both, but the resulting population should be placed
|
||||||
<b><tt><font color="#993300">const</font></tt></b>ant
|
in the first argument (usually called_parents) to close the loop and go
|
||||||
population).
|
to next generation.
|
||||||
<p><b><font color="#FF0000">Note</font></b>: After the replacement step,
|
|
||||||
all algorithms swap the parents and offspring populations - this is why
|
|
||||||
the result of the replacement is put into the _offspring population --
|
|
||||||
the _parents being there untouched until the very last moment.
|
|
||||||
<p><b><font color="#000099">Replacement: </font><font color="#FF0000">Instances</font></b>
|
<p><b><font color="#000099">Replacement: </font><font color="#FF0000">Instances</font></b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The most straightforward replacement is ... <font color="#FF6600">no replacement</font>,
|
<b><tt><font color="#009900">eoGenerationalReplacement </font></tt></b>This
|
||||||
or, more precisely, <font color="#FF6600">generational replacement</font>:
|
is the most straightforward replacement, called <font color="#FF6600">generational
|
||||||
all offspring replace all parents (used in Holland's and Goldberg's traditional
|
replacement</font>: all offspring replace all parents (used in Holland's
|
||||||
GAs). In EO, this is implemented in the <b><tt><font color="#009900">eoNoReplacement</font></tt></b>
|
and Goldberg's traditional GAs). It takes no argument, and supposes
|
||||||
class, whose <tt><font color="#993300">operator()</font></tt> does ...
|
that offspring and parents are of the same size (but does not check!).</li>
|
||||||
<font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/eoreplacement_h-source.html#l00051">exactly
|
|
||||||
nothing</a></font></font> (remember that _parents and _offspring will be
|
|
||||||
swapped later on).</li>
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<li>
|
<li>
|
||||||
But the basic type of replacement in EO has two major steps, <font color="#FF6600">merging</font>
|
<b><tt><font color="#009900">eoMergeReduce</font></tt></b> This is one
|
||||||
|
the basic types of replacement in EO. It has two major steps, <font color="#FF6600">merging</font>
|
||||||
both populations of parents and offspring, and <font color="#FF6600">reducing</font>
|
both populations of parents and offspring, and <font color="#FF6600">reducing</font>
|
||||||
this big population to the right size. The functor class is called <b><tt><font color="#009900">eoMergeReduce</font></tt></b>.
|
this big population to the right size. It <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eomegereduce.html">contains
|
||||||
and it <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/eoreplacement_h-source.html#l00064">contains
|
two objects</a></font></font> of respective types <b><font color="#009900"><a href="#merge">eoMerge</a></font></b>
|
||||||
two objects</a></font></font> of respective types <b><font color="#009900">eoMerge</font></b>
|
and <b><font color="#009900"><a href="#reduce">eoReduce</a></font></b>
|
||||||
and <b><font color="#009900">eoReduce</font></b> and you can probably guess
|
and you can probably guess what each of them actually does :-)</li>
|
||||||
what each of them actually does :-)</li>
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
<p>Available <font color="#FF6600">instances of eoMerge</font> objects
|
|
||||||
are <b><tt><font color="#009900">eoPlus</font></tt></b>, that simply adds
|
|
||||||
the parents to the offspring, or <b><tt><font color="#009900">eoElitism</font></tt></b>,
|
|
||||||
that adds only some of the (best) parents to the offspring. A special case
|
|
||||||
of eoElistism is <b><tt><font color="#009900">eoNoElitism</font></tt></b>,
|
|
||||||
an eoMerge that does nothing.
|
|
||||||
<br>
|
|
||||||
<p>Available <font color="#FF6600">instances of eoReduce</font> are <b><tt><font color="#009900">eoTruncate</font></tt></b>,
|
|
||||||
that deterministically keeps only the required number of individuals, taking
|
|
||||||
the best ones, and <b><tt><font color="#009900">eoEPReduce</font></tt></b>
|
|
||||||
that usees the EP stocahstic tournamenent to reduce the population.
|
|
||||||
<p>Available <font color="#FF6600">instances of eoMergeReduce</font> replacement
|
<p>Available <font color="#FF6600">instances of eoMergeReduce</font> replacement
|
||||||
procedures are built on the above, and include
|
include
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b><tt><font color="#009900">eoCommaReplacement</font></tt></b>, one of
|
<b><tt><font color="#009900">eoCommaReplacement</font></tt></b>, one of
|
||||||
|
|
@ -129,20 +140,50 @@ where the best from offspring+parents become the next generation. It is
|
||||||
an <b><tt><font color="#993300">eoMergeReduce(eoPlus, eoTruncate)</font></tt></b>.</li>
|
an <b><tt><font color="#993300">eoMergeReduce(eoPlus, eoTruncate)</font></tt></b>.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<b><tt><font color="#009900">eoEPReplacement</font></tt></b>, from <font color="#FF6600">Evolutionary
|
<b><tt><font color="#009900">eoEPReplacement</font></tt></b>, used in the
|
||||||
|
<font color="#FF6600">Evolutionary
|
||||||
Programming</font> historical algorithm, doing a stochastic tournament
|
Programming</font> historical algorithm, doing a stochastic tournament
|
||||||
among parents + offspring. It is an <b><tt><font color="#993300">eoMergeReduce(eoPlus,
|
among parents + offspring. It is an <b><tt><font color="#993300">eoMergeReduce(eoPlus,
|
||||||
eoEPReduce)</font></tt></b>.</li>
|
eoEPReduce)</font></tt></b> and its constructor requires as argument the
|
||||||
|
size of the tournament (unsigned int).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Another type of eoReplacement is eoKillReplace in which some individuals
|
<b><tt><font color="#009900">eoReduceMerge</font></tt></b> is another important
|
||||||
of the population are reaplced by some of the offspring.</li>
|
type of eoReplacement: the parents are first reduced, and then merged with
|
||||||
|
the offspring. Note that the parent population is reduced of the exact
|
||||||
|
number of offspring.</li>
|
||||||
|
|
||||||
|
<br>Though not mandatory, it is implicitely assumed that few offspring
|
||||||
|
have been generated. Hence, all derived replacement procedures of class
|
||||||
|
<b><tt><font color="#009900">eoReduceMerge</font></tt></b>
|
||||||
|
are termed <b><tt><font color="#009900">eoSGAxxx</font></tt></b>, as they
|
||||||
|
are the ones to use in SteadyState Genetic Algorithm engine. This gives
|
||||||
|
the following <font color="#FF6600">instances of eoReduceMerge</font>:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoSSGAWorseReplacement</font></tt></b>
|
||||||
|
in which the worse parents are killed and replaced by all offsprings (no
|
||||||
|
additional argument needed);</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoSSGADetTournamentReplacement</font></tt></b>
|
||||||
|
in which parents to be killed are chosen by a (reverse) determinitic tournament.
|
||||||
|
Additional parameter (in the constructor) is the tournament size, an <b><tt><font color="#993300">unsigned
|
||||||
|
int</font></tt></b>).</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoSSGAStochTournamentReplacement</font></tt></b>
|
||||||
|
in which parents to be killed are chosen by a (reverse) stochastic tournament.
|
||||||
|
Additional parameter (in the constructor) is the tournament rate, a <b><tt><font color="#993300">double</font></tt></b>).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p><br><b><font color="#000099">Replacement: </font><font color="#FF0000">Adding
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoSurviveAndDie</font></tt></b> is</li>
|
||||||
|
</ul>
|
||||||
|
<b><font color="#000099">Replacement: </font><font color="#FF0000">Adding
|
||||||
(weak) elitism</font></b>
|
(weak) elitism</font></b>
|
||||||
<br>You can add what is called <font color="#FF6600">weak elitism</font>
|
<p>You can add what is called <font color="#FF6600">weak elitism</font>
|
||||||
to any replacement by encapsulating it into an <b><tt><font color="#009900">eoWeakElitismReplacement</font></tt></b>
|
to any replacement by encapsulating it into an <b><tt><font color="#009900">eoWeakElitismReplacement</font></tt></b>
|
||||||
object. Weak elitism ensures that the overall <font color="#FF6600">best
|
object. Weak elitism ensures that the overall <font color="#FF6600">best
|
||||||
fitness</font> in the population <font color="#FF6600">will never decrease</font>:
|
fitness</font> in the population <font color="#FF6600">will never decrease</font>:
|
||||||
|
|
@ -152,25 +193,228 @@ population, replacing the worse.
|
||||||
<p>Within EO, this is very easy to add:
|
<p>Within EO, this is very easy to add:
|
||||||
<p>First, declare your replacement functor (here, generational, but it
|
<p>First, declare your replacement functor (here, generational, but it
|
||||||
can be any replacement object):
|
can be any replacement object):
|
||||||
<br><b><tt><font color="#009900">eoNoReplacement<Indi> genReplace;</font></tt></b>
|
<br><b><tt><font color="#009900">eoGenerationalReplacement<Indi> genReplace;</font></tt></b>
|
||||||
<br>Then wrap the weak elitism around it:
|
<br>Then wrap the weak elitism around it:
|
||||||
<br><b><tt><font color="#009900">eoWeakElitismReplacement<Indi> replace(genReplace);</font></tt></b>
|
<br><b><tt><font color="#009900">eoWeakElitismReplacement<Indi> replace(genReplace);</font></tt></b>
|
||||||
<br>and use now replace as your replacement procedure within your algorithm.
|
<br>and use now replace as your replacement procedure within your algorithm.
|
||||||
<p><font color="#FF0000">Note</font>: of course, adding weak elitism to
|
<p><font color="#FF0000">Note</font>: of course, adding weak elitism to
|
||||||
an elitist replacement makes no sense - but will not harm either :-)
|
an elitist replacement makes no sense - but will not harm either :-)
|
||||||
<p><a NAME="popular"></a><b><font color="#000099"><font size=+2>Popular
|
<p><b><font color="#000099">Replacement: </font><font color="#FF0000">Test
|
||||||
|
file</font></b>
|
||||||
|
<p>The file <b><tt><font color="#993300">t-eoReplacement</font></tt></b>
|
||||||
|
in the <b><font color="#FF6600">test directory</font></b> implements all
|
||||||
|
above replacmenet procedures withni a very simple and easy-to-monitor Dummy
|
||||||
|
EO class.
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="popular"></a><b><font color="#000099"><font size=+2>Popular
|
||||||
evolution engines</font></font></b>
|
evolution engines</font></font></b>
|
||||||
<br>The most popular evolution engines are listed below, together with
|
<p>This section will be completed soon - in the meantime just trust us
|
||||||
the way to use them in EO. If you don't find your particuler algorithm,
|
that all of these are already implemented in EO (except maybe some of the
|
||||||
please send it to us, and we might include it here!
|
last category :-) !!!!!!
|
||||||
|
<p>The most popular evolution engines are listed below, together with the
|
||||||
|
way to use them in EO. If you don't find your particuler algorithm, please
|
||||||
|
send it to us, and we might include it here!
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Generational Genetic Algorihtm</li>
|
<a NAME="GGA"></a>Generational Genetic Algorihtm</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a NAME="SSGA"></a>Steady-State Genetic Algorithm</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a NAME="ESPlus"></a>(MU+Lambda)-Evolution Strategy</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a NAME="ESComma"></a>(MU,LAMBDA)-Evolution Strategy</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a NAME="EP"></a>Evolutionary Programming</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a NAME="General"></a>You name it :-)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="tournament"></a><b><font color="#000099"><font size=+2>Tournaments</font></font></b>
|
||||||
|
<p>Tournaments are an easy and quick way to <b><font color="#FF6600">select</font></b>
|
||||||
|
individuals within a population based on simple comparisons. Though usually
|
||||||
|
based on fitness comparisons, they can use any comparison operator.
|
||||||
|
<br>In EO, there are two variants of tournaments used to select one single
|
||||||
|
individual, namely <b><tt><font color="#009900">Deterministic Tournament</font></tt></b>
|
||||||
|
and <b><tt><font color="#009900">Stochastic Tournament</font></tt></b>,
|
||||||
|
that are used in selection and in replacement procedures, and a global
|
||||||
|
tournament-based selection of a whole bunch of individuals, the <b><tt><font color="#009900">EP
|
||||||
|
Tournament</font></tt></b>. Though the single-selection tournaments can
|
||||||
|
be repeated to select more than one individual, and the batch tournament
|
||||||
|
selection can be used to select a single individual, both uses are probably
|
||||||
|
a waste of CPU time.
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">Deterministic Tournament</font></tt></b> of
|
||||||
|
size T selects returns the best of T uniformly chosen individuals in the
|
||||||
|
population. It is implemented in the <b><tt><font color="#009900">eoDetTournamentSelect</font></tt></b>
|
||||||
|
class, a sub-class of eoSelectOne, as well as in the <b><tt><font color="#009900">eoDetTournamentTruncate</font></tt></b>
|
||||||
|
class that repeatidly removes from the population the "winner" of the inverse
|
||||||
|
tournament. These objects use the C++ function determinitic_tournament
|
||||||
|
in <a href="../../doc/html/selectors_h-source.html">selectors.h</a>.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">Stochastic Tournament</font></tt></b> of rate
|
||||||
|
R first choses two individuals from the population, and selects the best
|
||||||
|
one with probability R and the worse one with probability (1-R). It is
|
||||||
|
implemented in the <b><tt><font color="#009900">eoStochTournamentSelect</font></tt></b>
|
||||||
|
class, a sub-class of eoSelectOne, as well as in the <b><tt><font color="#009900">eoStochTournamentTruncate</font></tt></b>
|
||||||
|
class that repeatidly removes from the population the "winner" of the inverse
|
||||||
|
tournament. These objects use the C++ function determinitic_tournament
|
||||||
|
in <a href="../../doc/html/selectors_h-source.html">selectors.h</a>.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">EP Tournament</font></tt></b> of size T is
|
||||||
|
a global tournament: it works by assigning a score to all individuals in
|
||||||
|
the population the following way: starting with a score of 0, each individual
|
||||||
|
I is "opposed" T times to a uniformly chosen individual. Everytime I wins,
|
||||||
|
its score in incremented by 1 (and by 0.5 for every draw). The individuals
|
||||||
|
are then selected deterministically based on their scores from that procedure.
|
||||||
|
The <b><tt><font color="#009900">EP Tournament</font></tt></b> is implemented
|
||||||
|
in the <b><tt><font color="#009900">eoEPReduce</font></tt></b> truncation
|
||||||
|
method used in some replacement procedures.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p><br>
|
<p><br>
|
||||||
<hr WIDTH="100%"><a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<hr WIDTH="100%">
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> -<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
<br><a NAME="merge"></a><b><font color="#000099"><font size=+2>Merging
|
||||||
|
populations</font></font></b>
|
||||||
|
<p>In replacement procedures, one frequently needs to merge two populations
|
||||||
|
(computed form old parents and new-born offspring). Classes derived from
|
||||||
|
the abstract class eoMerge are written for that purpose.
|
||||||
|
<p><b><font color="#000099">eoMerge</font></b>: <b><font color="#FF0000">interface</font></b>
|
||||||
|
<br>The abstract class for merging procedures is the functor class
|
||||||
|
<font color="#009900">eoMerge</font>,
|
||||||
|
and the interface for its <tt><font color="#993300">operator()</font></tt>
|
||||||
|
is
|
||||||
|
<center>
|
||||||
|
<p><b><tt><font color="#993300">void operator()(const eoPop<EOT>&
|
||||||
|
_parents, eoPop<EOT>& _offspring)</font></tt></b></center>
|
||||||
|
|
||||||
|
<p>which you could have guessed from the inheritance tree for class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eomerge.html">eoMerge</a></font></font></b>,
|
||||||
|
as you see there that <font color="#009900">eoMerge</font> derives from
|
||||||
|
<br><tt><font color="#993300">class eoBF<const eoPop<EOT>&, eoPop<EOT>&,
|
||||||
|
void></font></tt>.
|
||||||
|
<br>This means that it takes <font color="#FF6600">2 populations</font>
|
||||||
|
and modifies the seond one by adding some individuals from the first one
|
||||||
|
(which is supposed to remain <b><tt><font color="#993300">const</font></tt></b>ant).
|
||||||
|
<p><b><font color="#000099">eoMerge</font></b>: <b><font color="#FF0000">instances</font></b>
|
||||||
|
<br>Available <font color="#FF6600">instances of eoMerge</font> objects
|
||||||
|
are <b><tt><font color="#009900">eoPlus</font></tt></b>, that simply adds
|
||||||
|
the parents to the offspring, or <b><tt><font color="#009900">eoElitism</font></tt></b>,
|
||||||
|
that adds only some of the (best) parents to the offspring. A special case
|
||||||
|
of eoElistism is <b><tt><font color="#009900">eoNoElitism</font></tt></b>,
|
||||||
|
an eoMerge that does nothing.
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="reduce"></a><b><font color="#000099"><font size=+2>Reducing
|
||||||
|
populations</font></font></b>
|
||||||
|
<p>The other useful component of replacement procedures, <font color="#009900">eoReduce</font>,
|
||||||
|
<font color="#FF6600">kills
|
||||||
|
some individuals</font> from a given population.
|
||||||
|
<p><b><font color="#000099">eoReduce</font></b>: <b><font color="#FF0000">interface</font></b>
|
||||||
|
<br>The abstract class for reducing procedures is the functor class
|
||||||
|
<font color="#009900">eoReduce</font>,
|
||||||
|
and the interface for its <tt><font color="#993300">operator()</font></tt>
|
||||||
|
is
|
||||||
|
<center>
|
||||||
|
<p><b><tt><font color="#993300">void operator()(eoPop<EOT>& _parents,
|
||||||
|
unsigned int new_size)</font></tt></b></center>
|
||||||
|
|
||||||
|
<p>which you could have guessed from the inheritance tree for class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoreduce.html">eoReduce</a></font></font></b>,
|
||||||
|
as you see there that <font color="#009900">eoReduce</font> derives from
|
||||||
|
<br><tt><font color="#993300">class eoBF<eoPop<EOT>&, unsigned
|
||||||
|
int, void></font></tt>.
|
||||||
|
<br>An <font color="#009900">eoReduce</font> shoud take a<font color="#FF6600">
|
||||||
|
population</font> and shrink it to the required size.
|
||||||
|
<p><b><font color="#000099">eoReduce</font></b>: <b><font color="#FF0000">instances</font></b>
|
||||||
|
<br>Available <font color="#FF6600">instances of eoReduce</font> are
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoTruncate</font></tt></b>, deterministically
|
||||||
|
kills the worse individuals, keeping only the required number. It starts
|
||||||
|
by sorting teh populations, and hence does <font color="#FF6600">modify
|
||||||
|
its order</font>.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoLinearTruncate</font></tt></b>, deterministically
|
||||||
|
kills the worse individuals, keeping only the required number. It does
|
||||||
|
so by repeatedly removing the worsr individual. Hence does <font color="#FF6600">not
|
||||||
|
modify its order</font>, but takes longer time than <b><tt><font color="#009900">eoTruncate</font></tt></b>
|
||||||
|
in case of many offspring.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoEPReduce</font></tt></b>, uses the <a href="#EPtournament">EP
|
||||||
|
stochastic tournament</a> to reduce the population. It requires an additinal
|
||||||
|
argument, the tournament size.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoDetTournamentTruncate</font></tt></b> uses
|
||||||
|
inverse deterministic tournament to repeatidly kill one individual until
|
||||||
|
the propoer size is reached. As <b><tt><font color="#009900">eoLinearTruncate</font></tt></b>,
|
||||||
|
it might take some time in the case of many offspring. It requires the
|
||||||
|
size of the tournament (<b><tt><font color="#993300">unsigned int</font></tt></b>)
|
||||||
|
as parameter in the constructor (default is 2).</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><tt><font color="#009900">eoStochTournamentruncate</font></tt></b>
|
||||||
|
uses inverse stochastic tournament to repeatidly kill individuals from
|
||||||
|
the population. It requires the rate of the tournament (<b><tt><font color="#993300">double</font></tt></b>)
|
||||||
|
as parameter in the constructor (default is 0.75).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p><br>
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="howmany"></a><b><font color="#000099"><font size=+2>Relative
|
||||||
|
or absolute number of individuals</font></font></b>
|
||||||
|
<p>Many classes in selection/replacement procedures will handle a number
|
||||||
|
of individuals that may either be fixed or be a fraction of some argument-population
|
||||||
|
size.
|
||||||
|
<br>Of course, it is possible to write two different classes that will
|
||||||
|
only differ by the way they compute the number of individuals they have
|
||||||
|
to treat, as it is done for selectors with the two classes <font color="#009900">eoSelectPerc</font>
|
||||||
|
and <font color="#009900">eoSelectNumber</font> (it could also have been
|
||||||
|
possible to have some pure abstrat class and implement the computation
|
||||||
|
of the number of individuals to treat in some derived classes).
|
||||||
|
<br>However, rather than multiply the number of class, EO has defined a
|
||||||
|
class that will handle the problem once and for all, the class <b><tt><font color="#993300">eoHowMany</font></tt></b>.
|
||||||
|
It receives a <b><tt><font color="#993300">double</font></tt></b>, and
|
||||||
|
a <b><tt><font color="#993300">boolean</font></tt></b> indicating whether
|
||||||
|
that double is to be treated <b><font color="#FF6600">as a rate</font></b>
|
||||||
|
or as <b><font color="#FF6600">an absolute (unisgned) interger.</font></b>
|
||||||
|
<p><b><font color="#000099">eoHowMany</font></b>: <b><font color="#FF0000">interface</font></b>
|
||||||
|
<br>The class interface for its <tt><font color="#993300">operator()</font></tt>
|
||||||
|
is
|
||||||
|
<center>
|
||||||
|
<p><b><tt><font color="#993300">unsigned int operator()(unsigned int _pop_size)</font></tt></b></center>
|
||||||
|
|
||||||
|
<p>which you could have guessed from the inheritance tree for class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eohowmany.html">eoHowMany</a></font></font></b>,
|
||||||
|
as you see there that <b><tt><font color="#993300">eoHowMany</font></tt></b>
|
||||||
|
derives from
|
||||||
|
<br><tt><font color="#993300">class eoUF<unsigned int, unsigned int></font></tt>.
|
||||||
|
<p>Its constructor takes 2 argumenrts:
|
||||||
|
<center>
|
||||||
|
<p><b><tt><font color="#993300">eoHowMany(double _rate, bool _interpret_as_rate
|
||||||
|
= true)</font></tt></b></center>
|
||||||
|
so by default the double is indeed interpreted as a rate.
|
||||||
|
<p>It is used in <font color="#009900">eoSelectMany</font> (which supersedes
|
||||||
|
<font color="#009900">eoSelectPerc</font>
|
||||||
|
and <font color="#009900">eoSelectNumber</font>, but they are left there
|
||||||
|
for tutorial reasons!) as well as in many <a href="#reduce">truncation</a>
|
||||||
|
methods.
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%">
|
||||||
|
<br><a NAME="SAD"></a><b><font color="#000099"><font size=+2>Survive and
|
||||||
|
Die</font></font></b>
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%"><a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
|
- <a href="eoProgramming.html">Programming hints</a> -<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
|
|
@ -21,8 +21,8 @@ hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<hr>
|
<hr>
|
||||||
<address><a href="mailto:Marc.Schoenauer@polytechnique.fr">Marc Schoenauer</a></address>
|
<address><a href="mailto:Marc.Schoenauer@polytechnique.fr">Marc Schoenauer</a></address>
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" background="beige009.jpg" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" background="beige009.jpg" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
|
|
@ -22,8 +22,8 @@ hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<!-- ----------------------------------------------- -->
|
<!-- ----------------------------------------------- -->
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Top-Down
|
<a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
hints</a> - <a href="../../doc/html/index.html">EO documentation</a>
|
||||||
<hr>
|
<hr>
|
||||||
<address>
|
<address>
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdksmp i686) [Netscape]">
|
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
||||||
<title>Tutorial: Lesson 1</title>
|
<title>Tutorial: Lesson 1</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoLesson2.html">Lesson 2</a> -
|
<a href="eoLesson2.html">Lesson 2</a> -
|
||||||
<a href="eoTutorial.html">Tutorial
|
<a href="eoTutorial.html">Tutorial
|
||||||
main page</a> -
|
main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> -<font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
- <a href="eoProgramming.html">Programming hints</a> -<font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font>
|
documentation</a></font></font>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%"><!-- -------------- End of header ------------------ --><!-- ----------------------------------------------- -->
|
<hr WIDTH="100%"><!-- -------------- End of header ------------------ --><!-- ----------------------------------------------- -->
|
||||||
|
|
@ -220,10 +220,10 @@ objects of class</font> <b><font face="Arial,Helvetica"><font size=+1><a href=".
|
||||||
parents, according to user-defined probabilities. These probabilities
|
parents, according to user-defined probabilities. These probabilities
|
||||||
are defined with all other <a href="#parametres">parameters</a>, and will
|
are defined with all other <a href="#parametres">parameters</a>, and will
|
||||||
be passed to the <b><tt><font color="#FF6666"><font size=+1>eoSGA </font></font></tt></b><a href="#parametres">algorithm</a><font color="#000000">.
|
be passed to the <b><tt><font color="#FF6666"><font size=+1>eoSGA </font></font></tt></b><a href="#parametres">algorithm</a><font color="#000000">.
|
||||||
For more details on these classes, go to the <a href="eoOperators.html#crossover">top-down
|
For more details on these classes, go to the <a href="eoOperators.html#crossover">algorithm-based
|
||||||
corresponding pages</a>, or to their respective documentation pages.</font><br>
|
corresponding pages</a>, or to their respective documentation pages.</font></li>
|
||||||
<BR></li>
|
|
||||||
|
|
||||||
|
<br>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="FirstBitGA.html#operators">Bit</a> The crossover <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eobincrossover.html">eoBinCrossover</a></font></font></b>
|
<a href="FirstBitGA.html#operators">Bit</a> The crossover <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eobincrossover.html">eoBinCrossover</a></font></font></b>
|
||||||
|
|
@ -402,8 +402,8 @@ the same sub-dir of dir Tutorial than the lesson itself (see <a href="NoWay.html
|
||||||
<hr WIDTH="100%"><a href="eoLesson2.html">Lesson 2</a> -
|
<hr WIDTH="100%"><a href="eoLesson2.html">Lesson 2</a> -
|
||||||
<a href="eoTutorial.html">Tutorial
|
<a href="eoTutorial.html">Tutorial
|
||||||
main page</a> -
|
main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
- <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font>
|
documentation</a></font></font>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@
|
||||||
<a href="eoLesson3.html">Lesson
|
<a href="eoLesson3.html">Lesson
|
||||||
3</a> -
|
3</a> -
|
||||||
<a href="eoTutorial.html">Main page</a> -
|
<a href="eoTutorial.html">Main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down</a>
|
<a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up</a> - <a href="eoProgramming.html">Hints</a>
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Hints</a>
|
||||||
-<font size=+1> <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
-<font size=+1> <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></b></font>
|
documentation</a></font></b></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -37,7 +37,7 @@ operators</font> of the same type</li>
|
||||||
stopping criteria</font></li>
|
stopping criteria</font></li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
use <font color="#009900"><a href="#evolution">alternate</a> selection/replacement</font>
|
use <font color="#009900"><a href="evolution">alternate</a> selection/replacement</font>
|
||||||
engines, deviating from the pure generational GA</li>
|
engines, deviating from the pure generational GA</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
@ -67,9 +67,7 @@ argument is a <a href="binary_value.html">vector<bool></a> or a <a href="real
|
||||||
and not an unknown type. This will allow to use the same file for any EO
|
and not an unknown type. This will allow to use the same file for any EO
|
||||||
object that is a sub-class of the corresponding STL vector class.</font></li>
|
object that is a sub-class of the corresponding STL vector class.</font></li>
|
||||||
|
|
||||||
<br>
|
<p><br><b><font color="#FF0000">Note:</font></b> <font color="#000000">Also,
|
||||||
<p>
|
|
||||||
<p><b><font color="#FF0000">Note:</font></b> <font color="#000000">Also,
|
|
||||||
a non-templatized fitness can be </font><b><font color="#FF6600">compiled
|
a non-templatized fitness can be </font><b><font color="#FF6600">compiled
|
||||||
separately</font></b><font color="#000000"> (not done here) into an object
|
separately</font></b><font color="#000000"> (not done here) into an object
|
||||||
file once and for all (<a href="eoProgramming.html#templates">remember</a>
|
file once and for all (<a href="eoProgramming.html#templates">remember</a>
|
||||||
|
|
@ -86,8 +84,6 @@ requires.</font></li>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<p><b><font color="#FF0000">Note:</font></b> <font color="#000000">In the
|
<p><b><font color="#FF0000">Note:</font></b> <font color="#000000">In the
|
||||||
previous files (<a href="FirstBitGA.html#eval">Bit</a> - <a href="FirstRealGA.html#eval">Real</a>)
|
previous files (<a href="FirstBitGA.html#eval">Bit</a> - <a href="FirstRealGA.html#eval">Real</a>)
|
||||||
, the last 2 types were deduced from the first (2nd argument = fitness
|
, the last 2 types were deduced from the first (2nd argument = fitness
|
||||||
|
|
@ -111,9 +107,7 @@ You can also use different initializers and call them in turn through the
|
||||||
call to <a href="../../doc/html/class_eopop.html#a2">pop.append()</a> function
|
call to <a href="../../doc/html/class_eopop.html#a2">pop.append()</a> function
|
||||||
(see <a href="#exercise2">Exercise 2</a>).</font></li>
|
(see <a href="#exercise2">Exercise 2</a>).</font></li>
|
||||||
|
|
||||||
<br>
|
<p><br><b><font color="#FF0000">Note</font><font color="#CC33CC">: </font></b><font color="#000000">Don't
|
||||||
<p>
|
|
||||||
<p><b><font color="#FF0000">Note</font><font color="#CC33CC">: </font></b><font color="#000000">Don't
|
|
||||||
forget to </font><b><font color="#CC0000">evaluate the population</font></b><font color="#000000">:
|
forget to </font><b><font color="#CC0000">evaluate the population</font></b><font color="#000000">:
|
||||||
the eoPop has no idea of the eval function, so it has to be done from outside!!!</font>
|
the eoPop has no idea of the eval function, so it has to be done from outside!!!</font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -134,7 +128,7 @@ or Quad (for crossovers, of class <b><font face="Arial,Helvetica"><font size=+1>
|
||||||
is derived from the corresponding eoxxxOp class. When applying the eoPropCombinedxxxOp,
|
is derived from the corresponding eoxxxOp class. When applying the eoPropCombinedxxxOp,
|
||||||
one of the eoxxxOp it contains is chosen by a <a href="../../doc/html/class_eorng.html#a12">roulette
|
one of the eoxxxOp it contains is chosen by a <a href="../../doc/html/class_eorng.html#a12">roulette
|
||||||
wheel,</a> according to their respective rates, and is applied to the arguments.
|
wheel,</a> according to their respective rates, and is applied to the arguments.
|
||||||
For more details on these classes, go to the <a href="eoOperators.html#crossover">top-down
|
For more details on these classes, go to the <a href="eoOperators.html#crossover">algorithm-based
|
||||||
corresponding pages</a>, or to their respective documentation pages.</font></li>
|
corresponding pages</a>, or to their respective documentation pages.</font></li>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
@ -340,8 +334,8 @@ and <font color="#3366FF">stopping criteria</font> here).</li>
|
||||||
<a href="eoLesson3.html">Lesson
|
<a href="eoLesson3.html">Lesson
|
||||||
3</a> -
|
3</a> -
|
||||||
<a href="eoTutorial.html">Main page</a> -
|
<a href="eoTutorial.html">Main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down</a>
|
<a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up</a> - <a href="eoProgramming.html">Hints</a>
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Hints</a>
|
||||||
- <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
- <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
<a href="eoLesson4.html">Lesson
|
<a href="eoLesson4.html">Lesson
|
||||||
4</a> -
|
4</a> -
|
||||||
<a href="eoTutorial.html">Main page</a> -
|
<a href="eoTutorial.html">Main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down</a>
|
<a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up</a> - <a href="eoProgramming.html">Hints</a>
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Hints</a>
|
||||||
- <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></b>
|
- <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%"><!-- -------------- End of header ------------------ --><!-- ----------------------------------------------- -->
|
<hr WIDTH="100%"><!-- -------------- End of header ------------------ --><!-- ----------------------------------------------- -->
|
||||||
|
|
@ -135,7 +135,7 @@ we will not go into details: e.g. we will not tell you that the
|
||||||
<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eovalueparam.html">eoValueParam</a></font></font></b>
|
<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eovalueparam.html">eoValueParam</a></font></font></b>
|
||||||
is actually a templatized sub-class of abstract class eoParam (oops, I
|
is actually a templatized sub-class of abstract class eoParam (oops, I
|
||||||
said it!), nor will we deal with parameters outside their use from an eoParser.
|
said it!), nor will we deal with parameters outside their use from an eoParser.
|
||||||
See the parameter section of the Bottom-up tutorial, or wait until <a href="eoLesson4.html">lesson
|
See the parameter section of the Component-Based tutorial, or wait until <a href="eoLesson4.html">lesson
|
||||||
4</a>).</font></li>
|
4</a>).</font></li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -519,8 +519,8 @@ construct.
|
||||||
<a href="eoLesson4.html">Lesson
|
<a href="eoLesson4.html">Lesson
|
||||||
4</a> -
|
4</a> -
|
||||||
<a href="eoTutorial.html">Main page</a> -
|
<a href="eoTutorial.html">Main page</a> -
|
||||||
<a href="eoTopDown.html">Top-Down</a>
|
<a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up</a> - <a href="eoProgramming.html">Hints</a>
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Hints</a>
|
||||||
-<b> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></b>
|
-<b> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -2,64 +2,111 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdksmp i686) [Netscape]">
|
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
||||||
<title>Variation Operators</title>
|
<title>Variation Operators</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<b><font color="#FF0000">General</font></b>: <a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
|
hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><b><font color="#FF0000">TOC</font></b> : <a href="#introduction">Introduction</a>
|
<br><b><font color="#FF0000">Local</font></b>: <a href="#introduction">Introduction</a>
|
||||||
- <a href="#crossover">Crossover</a> - <a href="#mutation">Mutation</a>
|
- <a href="#crossover">Crossover</a> - <a href="#mutation">Mutation</a>
|
||||||
- <a href="#proportional_simple">Simple combinations</a> - <a href="#general">General
|
- <a href="#proportional_simple">Combinations</a> - <a href="#general">General
|
||||||
Operators</a> - <a href="#general_combination">General combinations</a>
|
Operators</a> - <a href="#populators">Populators</a> - <a href="#general_combination">General
|
||||||
|
combinations</a>- <a href="#advanced_general">Advanced operators</a>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<center>
|
<center>
|
||||||
<h1>
|
<h1>
|
||||||
<b><font color="#CC0000">Variation Operators</font></b></h1></center>
|
<b><font color="#CC0000">Variation Operators</font></b></h1></center>
|
||||||
|
<a NAME="introduction"></a><b><font color="#000099"><font size=+2>Variation
|
||||||
<p><br><a NAME="introduction"></a><b><font color="#000099"><font size=+2>Variation
|
|
||||||
Operators</font></font></b>
|
Operators</font></font></b>
|
||||||
<br>Variation operators modify individuals, or, equivalently, move them
|
<br>Variation operators modify individuals, or, equivalently, move them
|
||||||
in the search space. They are almost always <b><font color="#FF6600">stochastic</font></b>,
|
in the search space. In Evolutionary Algorithms, varitaion operators are
|
||||||
i.e. they are based on random numbers, or equivalently, perform random
|
almost always <b><font color="#FF6600">stochastic</font></b>, i.e. they
|
||||||
modifications of their arguments. Variation operators are classified depending
|
are based on random numbers, or equivalently, perform random modifications
|
||||||
on the number of arguments they use and/or modify.
|
of their arguments. Variation operators are classified depending on the
|
||||||
<p>Variation operators involving two individuals are called <a href="#crossover">crossover
|
number of arguments they use and/or modify.
|
||||||
operators</a>. They can either modify one of the parents according to the
|
<ul>
|
||||||
material of the other parent, or modify both parents. In EO, the former
|
<li>
|
||||||
are called Binary operators and the latter Quadratic operators.
|
Variation operators involving <b><font color="#FF6600">two individuals</font></b>
|
||||||
<br>Variation operators involving one single individual are called <a href="#mutation">mutation
|
are called <a href="#crossover">crossover operators</a>. They can either
|
||||||
operators.</a>
|
modify one of the parents according to the material of the other parent,
|
||||||
<br>In EO you can also define and use variation operators that generate
|
or modify both parents. In EO, the former are called Binary operators and
|
||||||
any number of offspring from any number of parents (sometimes termed <b><font color="#FF6600">orgy</font></b>
|
the latter Quadratic operators.</li>
|
||||||
operators). They are called <a href="#general">general operators</a>.
|
|
||||||
<p>Though most the historical evolutionary algorithms used at most one
|
<li>
|
||||||
crossover and one mutation (see e.g. the Simple Genetic Algorithm in <a href="eoLesson1.html">lesson1</a>),
|
Variation operators involving <b><font color="#FF6600">one single individual</font></b>
|
||||||
the trend now in evolutionary computation is to combine operators, choosing
|
are called <a href="#mutation">mutation operators.</a></li>
|
||||||
at run-time and for each individual which operator to apply. This can be
|
|
||||||
done in the framework of simple operators, combining for instance several
|
<li>
|
||||||
mutations into a variation operator that chooses one of them according
|
Straightforward extensions of these simple operators allow to combine them:
|
||||||
to user-defined preferences: such combinations are called in EO <a href="#proportional_simple">proportional
|
in
|
||||||
combination of simple operators</a> (see e.g. how to define and use such
|
<a href="#proportional_simple">proportional combinations</a>, one operator
|
||||||
combined operators in the SGA of <a href="eoLesson2.html">lesson2</a>).
|
is chosen among a given set of operators of same arity according to some
|
||||||
<p>Finally, there are many other ways to combine different variation operators
|
weights.</li>
|
||||||
of different kind. Within EO, you can choose to apply many different types
|
|
||||||
of operator to the population, either in turn (this is called sequential
|
<li>
|
||||||
combination) or by randomly choosing among a set of operators at a given
|
In EO you can also define and use variation operators that generate any
|
||||||
time (this is proportional combination, generalizing the one defined for
|
number of offspring from any number of parents (sometimes termed <b><font color="#FF6600">orgy</font></b>
|
||||||
simple operators). You can of course mix and interleave both approaches
|
operators). They are called <a href="#general">general operators</a>.</li>
|
||||||
at will, and this is described as <a href="#general_combination">general
|
|
||||||
combination of general operators</a>.
|
<li>
|
||||||
<p><b><font color="#FF0000">EO implementation</font></b>: all variation
|
However, the interface of such operators was designed for their use inside
|
||||||
operators in EO derive from the base (abstract) class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoop.html">eoOp</a></font></font></b>
|
<a href="#general_combination">general
|
||||||
(as usual, click to see the inheritance diagram). blabla
|
combinations</a>: you can use <b><font color="#FF6600">proportional combination</font></b>,
|
||||||
<br>
|
in which one operator is chosen among a given set of operators of same
|
||||||
|
arity according to some weights, as for simple operators except that operators
|
||||||
|
of different arities can be mixed, but you can also use <b><font color="#FF6600">sequential
|
||||||
|
combinations</font></b>, where different operators are applied in
|
||||||
|
turn with given probability. But you can also embed any of such combinations
|
||||||
|
at any depth.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
The price to pay for that is that you must use an instermediate class to
|
||||||
|
access the individuals, the <a href="#populators">eoPopulator</a> class.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Thanks to that class, it also become easy to design <a href="#advanced_general">advanced
|
||||||
|
operators</a>, such as crossover operators where the mate is chosen according
|
||||||
|
to <b><font color="#FF6600">sexual preference</font></b> rather than fitness-based
|
||||||
|
preferences.</li>
|
||||||
|
</ul>
|
||||||
|
<b><font color="#FF0000">EO classes for variation operators</font></b>:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b><font color="#FF0000">Base classes</font></b>: all variation operators
|
||||||
|
in EO derive from the base (pure abstract) class <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoop.html">eoOp</a></font></font></b>
|
||||||
|
(as usual, click to see the inheritance diagram). Four (also abstract)
|
||||||
|
classes derive from <b><font color="#CC33CC">eoOp</font></b>, namely <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eomonop.html">eoMonOp</a></font></font></b>
|
||||||
|
(for <a href="#mutation">mutations</a>), <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eobinop.html">eoBinOp</a></font></font></b>
|
||||||
|
and <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoquadop.html">eoQuadOp</a></font></font></b>
|
||||||
|
(for <a href="#crossover">crossover</a>) and <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eogenop.html">eoGenOp</a></font></font></b>
|
||||||
|
for <a href="#general">all other operators</a>.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><font color="#FF0000">Combined classes</font></b>: those classes combine
|
||||||
|
variation operators, and are variation operators by themselves: the simple
|
||||||
|
variation operators can be combined into the corresponding <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoproportionalcombinedmonop.html">eoProportionalCombinedMonOp</a></font></font></b>,
|
||||||
|
<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoproportionalcombinedbinop.html">eoProportionalCombinedBinOp</a></font></font></b>
|
||||||
|
and <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoproportionalcombinedquadop.html">eoProportionalCombinedQuadOp</a></font></font></b>.
|
||||||
|
The general operators <b><font color="#CC33CC">eoGenOp</font></b> can be
|
||||||
|
combined into some <b><font face="Arial,Helvetica"><font color="#000000"><font size=+1><a href="../../doc/html/class_eoopcontainer.html">eoOpContainer</a></font></font></font></b>,
|
||||||
|
abstract class with two implementations, <b><font face="Arial,Helvetica"><font color="#000000"><font size=+1><a href="../../doc/html/class_eoproportionalopcontainer.html">eoProportionalOpContainer</a></font></font></font></b>
|
||||||
|
and <b><font face="Arial,Helvetica"><font color="#000000"><font size=+1><a href="../../doc/html/class_eosequentialopcontainer.html">eoSequentialOpContainer</a></font></font></font></b></li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<b><font color="#FF0000">Related classes</font></b>: General operators
|
||||||
|
of class <b><font color="#CC33CC">eoGenOp</font></b> can only be used through
|
||||||
|
the <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eopopulator.html">eoPopulator</a></font></font></b>
|
||||||
|
class.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a NAME="crossover"></a><b><font size=+1><font color="#000099">Simple
|
<a NAME="crossover"></a><b><font size=+1><font color="#000099">Simple
|
||||||
operators: </font><font color="#FF0000">Crossover</font></font></b>
|
operators: </font><font color="#FF0000">Crossover</font></font></b>
|
||||||
<p>The characteristic of crossover operators is that they involve two parents.
|
<p>The characteristic of crossover operators is that they involve two parents.
|
||||||
However, there are crossover operators that generate two parents, and some
|
However, there are crossover operators that generate two parents, and some
|
||||||
|
|
@ -112,7 +159,6 @@ you are using for instance an SGA, this (<a href="FirstRealGA.html#operators">de
|
||||||
<a href="FirstRealGA.html#generation">usage</a>).
|
<a href="FirstRealGA.html#generation">usage</a>).
|
||||||
See also the different ways that are described below, encapsulating the
|
See also the different ways that are described below, encapsulating the
|
||||||
operators into combined operators objects.
|
operators into combined operators objects.
|
||||||
<br>
|
|
||||||
<p><a NAME="writing_crossover"></a><b><font color="#FF0000">Writing a crossover
|
<p><a NAME="writing_crossover"></a><b><font color="#FF0000">Writing a crossover
|
||||||
operator:</font></b>
|
operator:</font></b>
|
||||||
<br>There are only two things to modify in the <a href="../Templates/crossover.tmpl">template
|
<br>There are only two things to modify in the <a href="../Templates/crossover.tmpl">template
|
||||||
|
|
@ -121,7 +167,7 @@ creating!)
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The <font color="#FF6600">constructor</font>, where you pass to the object
|
The <font color="#FF6600">constructor</font>, where you pass to the object
|
||||||
any useful parameter</li>
|
any useful parameter (see the private data at end of class definition).</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
The <font color="#FF6600">operator()</font> method, which performs the
|
The <font color="#FF6600">operator()</font> method, which performs the
|
||||||
|
|
@ -130,12 +176,11 @@ actual crossover.</li>
|
||||||
<li>
|
<li>
|
||||||
<b><font color="#FF6600">Warning</font></b>: don't forget to <b><font color="#FF6600">invalidate</font></b>
|
<b><font color="#FF6600">Warning</font></b>: don't forget to <b><font color="#FF6600">invalidate</font></b>
|
||||||
the fitness of any individual that has actually been modified. Otherwise,
|
the fitness of any individual that has actually been modified. Otherwise,
|
||||||
the l<a href="eoEval.html#lazy">azy fitness evaluation procedure</a> in
|
the <a href="eoEval.html#lazy">lazy fitness evaluation procedure</a> in
|
||||||
EO will not know it should compute the fitness again and will keep the
|
EO might not know it should compute the fitness again and will keep the
|
||||||
old value.</li>
|
old value.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p><br>
|
|
||||||
<hr WIDTH="100%"><a NAME="mutation"></a><b><font color="#000099"><font size=+1>Simple
|
<hr WIDTH="100%"><a NAME="mutation"></a><b><font color="#000099"><font size=+1>Simple
|
||||||
operators: </font></font><font color="#FF0000"><font size=+2>Mutation</font></font></b>
|
operators: </font></font><font color="#FF0000"><font size=+2>Mutation</font></font></b>
|
||||||
<br>Mutation operators modify one single individual. The corresponding
|
<br>Mutation operators modify one single individual. The corresponding
|
||||||
|
|
@ -177,7 +222,7 @@ creating!)
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The <font color="#FF6600">constructor</font>, where you pass to the object
|
The <font color="#FF6600">constructor</font>, where you pass to the object
|
||||||
any useful parameter</li>
|
any useful parameter (see the private data at end of class definition).</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
The <font color="#FF6600">operator()</font> method, which performs the
|
The <font color="#FF6600">operator()</font> method, which performs the
|
||||||
|
|
@ -187,80 +232,287 @@ actual crossover.</li>
|
||||||
<b><font color="#FF6600">Warning</font></b>: don't forget to <b><font color="#FF6600">invalidate</font></b>
|
<b><font color="#FF6600">Warning</font></b>: don't forget to <b><font color="#FF6600">invalidate</font></b>
|
||||||
the fitness of the individual - if it has actually been modified. Otherwise,
|
the fitness of the individual - if it has actually been modified. Otherwise,
|
||||||
the <a href="eoEval.html#lazy">lazy fitness evaluation procedure</a> in
|
the <a href="eoEval.html#lazy">lazy fitness evaluation procedure</a> in
|
||||||
EO will not know it should compute the fitness again and will keep the
|
EO might not know it should compute the fitness again and will keep the
|
||||||
old value.</li>
|
old value.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a NAME="proportional_simple"></a><b><font size=+1><font color="#000099">Combining
|
<a NAME="proportional_simple"></a><b><font size=+1><font color="#000099">Combining
|
||||||
simple operators: </font><font color="#FF0000">proportional combinations</font></font></b>
|
simple operators: </font><font color="#FF0000">proportional combinations</font></font></b>
|
||||||
<p>The best thing to do is to go to the <a href="eoLesson2.html#combined_operators">Lesson2</a>
|
<p>The best thing to do is to go to the <a href="eoLesson2.html#combined_operators">Lesson2</a>
|
||||||
of the tutorial, where everything is explained.
|
of the tutorial, where everything is explained. You will find out how you
|
||||||
|
can use
|
||||||
|
<br>several mutations (respectiveley crossovers) as a single operator:
|
||||||
|
every time the operator is called, one of the available operators is chosen
|
||||||
|
by some roulette wheel selection using realtive weights.
|
||||||
<p>
|
<p>
|
||||||
<hr WIDTH="100%"><a NAME="general"></a><b><font color="#000099"><font size=+2>General
|
<hr WIDTH="100%"><a NAME="general"></a><b><font color="#000099"><font size=+2>General
|
||||||
Operators</font></font></b>
|
Operators</font></font></b>
|
||||||
|
<p>General operators in EO are variation operators that are neither simple
|
||||||
|
mutations nor simple crossovers. They can involve any number of parents,
|
||||||
|
and create any number of offspring. Moreover, they can make use of different
|
||||||
|
ways to get the parents they will involve, e.g. they can use a different
|
||||||
|
selector for each of the parents they need to select.
|
||||||
|
<p>The corresponding EO class is called <b><font color="#CC33CC">eoGenOp</font></b>.
|
||||||
|
and it is as usual templatized by the type of individual it can handle
|
||||||
|
(see documentation for <b><font face="Arial,Helvetica"><font size=+1><a href="doc/html/class_eomonop.html">eoGenOp</a></font></font></b>
|
||||||
|
:-)
|
||||||
|
<p><a NAME="interface"></a><b><font color="#FF0000">Interface</font></b>:
|
||||||
|
<br><font color="#000000">The interface for </font><b><font color="#CC33CC">eoGenOp</font></b><font color="#000000">
|
||||||
|
is based on that of another class, called </font><b><font color="#999900">eoPopulator</font><font color="#CC33CC">.
|
||||||
|
</font></b>An
|
||||||
|
<b><font color="#999900">eoPopulator</font></b>
|
||||||
|
is a <b><font color="#FF6600">population</font></b>, but also behaves like
|
||||||
|
an <b><font color="#FF6600">iterator</font></b> over a population (hence
|
||||||
|
the name, <b><font color="#FF6600">Popul</font></b>ation-Iter<b><font color="#FF6600">ator</font></b>).
|
||||||
|
<p><a NAME="populator_interface"></a>The <b><font color="#FF6600">basic
|
||||||
|
interface</font></b> of an <b><font color="#999900">eoPopulator</font></b>
|
||||||
|
(see also <a href="../../doc/html/class_eogenop.html">the documentation</a>,
|
||||||
|
of course) is the following: Individuals are accessed through the <b><tt><font color="#993300">operator*</font></tt></b>;
|
||||||
|
Basic iterator operations are available, like (pre)incrementation through
|
||||||
|
<b><tt><font color="#993300">operator++</font></tt></b>,
|
||||||
|
position management through <b><tt><font color="#993300">seekp</font></tt></b>
|
||||||
|
(returns the current position) and <b><tt><font color="#993300">tellp</font></tt></b>
|
||||||
|
(go to a given position); Individuals can also be <b><font color="#993300">insert</font></b>ed
|
||||||
|
and <b><font color="#993300">erase</font></b>d at current position using
|
||||||
|
the corresponding methods; last but not least, as the individuals are returned
|
||||||
|
by reference, it is mandatory to ensure that they will not be moved around
|
||||||
|
later: the memory management routine reserve is called whenever there
|
||||||
|
is a chance to add some individuals in the population.
|
||||||
|
<p>This results in the following general interface for an <b><font color="#CC33CC">eoGenOp</font></b>:
|
||||||
|
It receives as argument an <b><font color="#999900">eoPopulator</font></b>,
|
||||||
|
gets the individuals it needs using the <b><tt><font color="#993300">operator*</font></tt></b>,
|
||||||
|
and must handle the positinning of the using the <b><tt><font color="#993300">operator++</font></tt></b>
|
||||||
|
method.
|
||||||
|
<p><b><tt><font color="#993300">void operator()(</font><font color="#999900">eoPopulator</font><font color="#993300">&
|
||||||
|
_pop)</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo1 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop;
|
||||||
|
|
||||||
|
</b>// advance</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo2 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop;
|
||||||
|
|
||||||
|
</b>// advance</font></tt>
|
||||||
|
<br><b><tt><font color="#993300">...</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eoN = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop;
|
||||||
|
|
||||||
|
</b>// advance</font></tt>
|
||||||
|
<p><tt><font color="#993300">// do whatever the operator is supposed to
|
||||||
|
do</font></tt>
|
||||||
|
<br><b><tt><font color="#993300">}</font></tt></b>
|
||||||
|
<p><b><font color="#FF6600">What happens next?</font></b> Well, it all
|
||||||
|
depends on how many parents and how many offspring your general op needs:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
If the number of generated offspring is <font color="#FF6600">equal</font>
|
||||||
|
to the number of parents, the operator simply needs to modify them (they
|
||||||
|
are passed by reference, no useless copy takes place).</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
If the operator produces <font color="#FF6600">more offspring than there
|
||||||
|
were parents</font>, it needs to insert them into the list using the <b><tt><font color="#993300">insert</font></tt></b>
|
||||||
|
method of the class <b><font color="#999900">eoPopulator</font></b> as
|
||||||
|
in the following:</li>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
|
<p><b><tt><font color="#993300">void operator()(</font><font color="#999900">eoPopulator</font><font color="#993300">&
|
||||||
|
_pop)</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo1 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop;
|
||||||
|
|
||||||
|
</b>// advance</font></tt>
|
||||||
|
<br><tt><font color="#993300"> // Now create second offspring - eo1
|
||||||
|
is modified too!</font></tt>
|
||||||
|
<br><b><tt><font color="#993300"> EOT eo2 = create_individual(eo1);</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"> // inserts eo2 in _pop after eo1</font></tt>
|
||||||
|
<br><b><tt><font color="#993300"> _pop.insert(eo2);</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">...</font></tt></b>
|
||||||
|
<br>Of course the size of the resulting population will grow - and you
|
||||||
|
should have a replacement procedure that takes care of that.
|
||||||
|
<li>
|
||||||
|
The case where <font color="#FF6600">more parents are needed than offspring
|
||||||
|
will be created</font> is a little more delicate: think about <b><font color="#CC33CC">eoBinOp</font></b>,
|
||||||
|
and try to imagine the reasons why no crossover of that class asre used
|
||||||
|
in the first lessons of the tutorial, within the SGA framework. There are
|
||||||
|
two possibilities:</li>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
If you think "generational", the first idea is to get the parents from
|
||||||
|
outside the curent list, so the total number of (intermediate) offspring
|
||||||
|
is always equal to the initial population size. By chance, the <b><font color="#999900">eoPopulator</font></b>has
|
||||||
|
a handle on the initial population that was used to start the process,
|
||||||
|
and you can access it from inside the GenOp method. For instance
|
||||||
|
<p><b><tt><font color="#993300">void operator()(</font><font color="#999900">eoPopulator</font><font color="#993300">&
|
||||||
|
_pop)</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo1 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop; </b>// advance</font></tt>
|
||||||
|
<br><b><tt><font color="#993300"> const EOT & eo2 = </font><font color="#009900">select</font><font color="#993300">(_pop.source());</font></tt></b>
|
||||||
|
<p>where select is any selector you like. Note the const: you are not allowed
|
||||||
|
to modify an element of the original population (but you could of course
|
||||||
|
have copied it!). Now to find out where that selector comes from, you'll
|
||||||
|
have to wait until next section. If you can't wait, go directly there.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
If you don't care about the size of the offspring population, you can use
|
||||||
|
the delete method of the class <b><font color="#999900">eoPopulator</font></b>.
|
||||||
|
For instance
|
||||||
|
<br><b><tt><font color="#993300">void operator()(</font><font color="#999900">eoPopulator</font><font color="#993300">&
|
||||||
|
_pop)</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo1 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop; </b>// advance</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo2 = *_pop; </b>// get
|
||||||
|
(select if necessary) the guy</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> ++_pop; </b>// advance</font></tt>
|
||||||
|
<br><tt><font color="#993300"> // do whatever needs to be done, modifying
|
||||||
|
eo1 but not eo2</font></tt>
|
||||||
|
<br><tt><font color="#993300"><b> _pop.delete(); </b>//
|
||||||
|
removes (untouched) eo2 from the list</font></tt></li></ul>
|
||||||
|
</ul>
|
||||||
|
<b><font color="#FF6600">Warning</font></b>: if you use operators that
|
||||||
|
have different number of parents than offspring, you are deviating from
|
||||||
|
the simple generational approach. Be careful to have the proper replacement
|
||||||
|
procedure to take care of the population size: in most instances of algorithms
|
||||||
|
that come within EO, this is enforced (an exception is thrown if population
|
||||||
|
size varies from one genertaion to the other) but this might not be true
|
||||||
|
for all forthcoming EO algorithms.
|
||||||
|
<p><b><font color="#FF0000">Using general operators</font></b>:
|
||||||
|
<br>Directly applying general operators to given individuals is impossible
|
||||||
|
in EO, due to its <a href="#interface">interface</a>. You need the help
|
||||||
|
of an individual dispenser of class <b><font color="#999900">eoPopulator</font></b>.
|
||||||
|
But anyway general operators were thought to be used mainly in combination
|
||||||
|
of one another, as described <a href="#general_combination">below</a>.
|
||||||
|
<p><a NAME="writing_mutation"></a><b><font color="#FF0000">Writing a general
|
||||||
|
operator:</font></b>
|
||||||
|
<br>There are many things to modify in the <a href="../Templates/mutation.tmpl">template
|
||||||
|
class definitions</a> provided.
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
The <font color="#FF6600">constructor</font>, where you pass to the object
|
||||||
|
any useful parameter (see private data at end of class definition).</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
The <font color="#FF6600">operator()</font> method, which performs the
|
||||||
|
actual crossover. Remember you must use the argument <b><font color="#999900">eoPopulator</font></b>to
|
||||||
|
access the members of the [p[ulation in turn (method
|
||||||
|
<b><tt><font color="#993300">operator*</font></tt></b>),
|
||||||
|
you may use the initial population (method <b><tt><font color="#993300">source()</font></tt></b>),
|
||||||
|
as well as the <b><tt><font color="#993300">insert</font></tt></b> or <b><tt><font color="#993300">delete</font></tt></b>
|
||||||
|
methods.</li>
|
||||||
|
|
||||||
|
<br><b><font color="#FF6600">Warning</font></b>: as usual, don't forget
|
||||||
|
to <b><font color="#FF6600">invalidate</font></b> the fitness of the individual
|
||||||
|
- if it has actually been modified. Otherwise, the <a href="eoEval.html#lazy">lazy
|
||||||
|
fitness evaluation procedure</a> in EO will not know it should compute
|
||||||
|
the fitness again and will keep the old value.</ul>
|
||||||
|
|
||||||
|
<hr WIDTH="100%"><a NAME="populators"></a><b><font color="#000099"><font size=+2>The
|
||||||
|
populators:</font></font></b>
|
||||||
|
<br>The public interface class <b><font color="#999900">eoPopulator</font></b>
|
||||||
|
has been described above. However, a protected method, termed <b><tt><font color="#993300">select</font></tt></b>,
|
||||||
|
is used inside the object to get new parents for the following operator,
|
||||||
|
and its implementation distinguishes two types of <b><font color="#999900">eoPopulator</font></b>:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
The <b><font color="#999900">eoSeqPopulator</font></b> gets new parents
|
||||||
|
from its source (the initial population). When the source is exhausted,
|
||||||
|
an exception if thrown. The idea of such pooulator is to start from a population
|
||||||
|
of already selected individuals.</li>
|
||||||
|
|
||||||
|
<br>The programmer should hence be very careful that the number of available
|
||||||
|
parents matches the requirements of the operators when using an <b><font color="#999900">eoSeqPopulator</font></b>
|
||||||
|
object.
|
||||||
|
<li>
|
||||||
|
The <b><font color="#999900">eoSelectivePopulator</font></b> , on the opposite,
|
||||||
|
always gets new parents using its private <b><font color="#009900">eoSelectOne</font></b>
|
||||||
|
object (passed at construct time). Hence it can handle any number of parents
|
||||||
|
at will. The idea of such populator is to handle the whole <b><font color="#FF6600">breeding</font></b>
|
||||||
|
process, i.e. selection and variation operators.</li>
|
||||||
|
</ul>
|
||||||
|
An immediate consequence is that if you are not sure of the numebr of
|
||||||
|
parents you will need in some operators (e.g. because of some stochastic
|
||||||
|
proportional selection ebtween operators that don't need the same number
|
||||||
|
of parents, then you <b><font color="#FF6600">must</font></b> use an <b><font color="#CC33CC">eoSelectivePopulator</font></b>
|
||||||
|
to apply the variation operators to the population.
|
||||||
|
<br>
|
||||||
<hr WIDTH="100%"><a NAME="general_combination"></a><b><font color="#000099"><font size=+2>General
|
<hr WIDTH="100%"><a NAME="general_combination"></a><b><font color="#000099"><font size=+2>General
|
||||||
Combinations:</font></font></b>
|
Combinations:</font></font></b>
|
||||||
<p>There are two main ways to use and combine general operators in EO:
|
<br>There are two main ways to use and combine general operators in EO:
|
||||||
the proportional combination, similar to what has been described for simple
|
the proportional combination, similar to what has been described for simple
|
||||||
operators above, and the sequential combination, which amounts to apply
|
operators <a href="#proportional_simple">above</a>, and the sequential
|
||||||
all operators in turn to a bunch of individuals, each operator being applied
|
combination, which amounts to apply all operators in turn to a bunch of
|
||||||
with a specific probability.
|
individuals, each operator being applied with a specific probability.
|
||||||
<p><b><font color="#FF0000">Proportional combinations</font></b> behave
|
<p><a NAME="prop_container"></a><b><font color="#FF0000">Proportional combinations</font></b>
|
||||||
like a unique operator: when it is called upon a population of candidates,
|
<br>When called upon a population (through an <b><font color="#999900">eoPopulator</font></b>
|
||||||
an <b><font color="#CC33CC">eoProportionalOpContainer</font></b> enters
|
object), an <b><font color="#CC33CC">eoProportionalOpContainer</font></b>
|
||||||
the following loop:
|
enters the following loop:
|
||||||
<p>while there are individuals left in the candidate population
|
<p>while there are individuals left in the list
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
choose one of the included operators according to their relative rates
|
choose one of the included operators according to their relative rates
|
||||||
by some roulette wheel random choice</li>
|
(by some roulette wheel random choice)</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
find out the number of parents that it requires (haha, the tricky part
|
applies the chosen operator. The parents are dispensed to the operator
|
||||||
if e.g. sequentialOp are imbedded :-)</li>
|
from the list on demand.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
gets the required number of individual from the candidates,</li>
|
What happens next exactly depends on the type of operator, but basically,
|
||||||
|
some of the parents get modified, some might get removed from the list
|
||||||
|
and some new individual might get inserted on the list.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
applies the chosen operator to those parents, generating a list of offspring</li>
|
updates the list pointer (if needed) to the individual following the ones
|
||||||
|
that just have been modified/inserted/deleted.</li>
|
||||||
<li>
|
|
||||||
removes the parents from the candidate population</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
append the offspring to the result population</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<b><font color="#FF0000">Sequential combinations</font></b> behave like
|
<a NAME="seqential_container"></a><b><font color="#FF0000">Sequential combinations</font></b>
|
||||||
a unique operator: when it is called upon a population of candidates, an
|
<br>When it is called upon a list of pending candidates, an
|
||||||
<b><font color="#CC33CC">eoSequentialOpContainer</font></b>
|
<b><font color="#CC33CC">eoSequentialOpContainer</font></b>
|
||||||
enters the following loop:
|
enters the following loop:
|
||||||
<p>for all operators it contains, apply the operator to the candidate population,
|
<p>mark the current position
|
||||||
that is
|
<br>for all operators it contains,
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
start with an empty offspring population</li>
|
go to marked position</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
get the number of parents the operator at hand requires (haha, the tricky
|
until <a href="#container_and_populator">current end of population</a>
|
||||||
part if the operator is an eoProportionalOpContainer!!!)</li>
|
is reached do</li>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
flip a coin according to the operator rate.</li>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
If true, apply the operator to the parents. The current parents can be
|
||||||
|
modified, or some can be deleted from the list, or some offspring can be
|
||||||
|
inserted in the list.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
flip a coin according to the operator rate. It heads, apply the operator
|
If false, move the pointer over the required number of parents (i.e. don't
|
||||||
to the parents to generate some offspring, and append the generated offspring
|
modify thoses parents)</li>
|
||||||
to the offspring population. If tails, directly append the parents to the
|
</ul>
|
||||||
offspring population</li>
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
until no more parents (or an insufficient number of parents) are left in
|
Next pending parent</li>
|
||||||
the population. The remaining parents, if any, are copied in the offspring
|
</ul>
|
||||||
population</li>
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
make the offspring population the parentpopulation for next operator.</li>
|
Next operator</li>
|
||||||
</ul>
|
</ul>
|
||||||
<font color="#FF6600">Remark:</font>The eoSGATransform presented in <a href="eoLesson2.html#transform">Lesson2</a>
|
<font color="#FF6600">Remark:</font>The eoSGATransform presented in <a href="eoLesson2.html#transform">Lesson2</a>
|
||||||
can be viewed as a particular type of <b><font color="#CC33CC">eoSequentialOpContainer</font></b>.
|
can be viewed as a particular type of <b><font color="#CC33CC">eoSequentialOpContainer</font></b>.
|
||||||
|
|
@ -268,29 +520,27 @@ It was not coded that way in order to provide a gradual introduction to
|
||||||
all concepts.
|
all concepts.
|
||||||
<br><font color="#FF6600">Exercise</font>: write the code to perform an
|
<br><font color="#FF6600">Exercise</font>: write the code to perform an
|
||||||
eoSGA using the eoOpContainer constructs.
|
eoSGA using the eoOpContainer constructs.
|
||||||
<p><font color="#FF6600">Remark</font>: there is actually a single list
|
|
||||||
of individuals that is maintained through a clever mecahnism of mark, rewind
|
|
||||||
and unmark, but that's a purely technical matter. If you are interested,
|
|
||||||
go and check the eoOpContainer and the eoSequentialOpContainer code.
|
|
||||||
<br>
|
|
||||||
<p><b><font color="#FF0000">Adding operators to a container:</font></b>
|
<p><b><font color="#FF0000">Adding operators to a container:</font></b>
|
||||||
<br>The basic function to add an operator to an eoOpContainer is the method
|
<br>The way to add an operator to an <b><font color="#CC33CC">eoOpContainer</font></b>
|
||||||
<b><tt><font color="#993300">add</font></tt></b>
|
is the method
|
||||||
from class eoOpContainer.
|
<b><tt><font color="#993300">add</font></tt></b>. It is similar
|
||||||
<br>It is similar to all other <b><tt><font color="#993300">add</font></tt></b>
|
to all other <b><tt><font color="#993300">add</font></tt></b> methods in
|
||||||
methods in other Combined things in eo (as the simple eoProportionalCombinedXXXop
|
other Combined things in eo (as the simple eoProportionalCombinedXXXop
|
||||||
described above, but also the eoCombinedContinue class or the eoCheckPoint
|
described above, but also the eoCombinedContinue class or the eoCheckPoint
|
||||||
class).
|
class).
|
||||||
<br>The syntax is straightforward, and it works with any of the operator
|
<br>The syntax is straightforward, and it works with any of the operator
|
||||||
classes defined above:
|
classes <b><font color="#CC33CC">eoXXXOp</font></b>, where XXX stands for
|
||||||
|
<b><font color="#CC33CC">Mon,
|
||||||
|
Bin, Quad </font></b><font color="#000000">or</font><b><font color="#CC33CC">
|
||||||
|
Gen</font></b>:
|
||||||
<p><b><tt><font color="#993300">someOperatorType<Indi> myOperator;</font></tt></b>
|
<p><b><tt><font color="#993300">someOperatorType<Indi> myOperator;</font></tt></b>
|
||||||
<br><b><tt><font color="#993300">eoXXXOpContainer<Indi> myOpContainer;</font></tt></b>
|
<br><b><tt><font color="#993300">eoYYYOpContainer<Indi> myOpContainer;</font></tt></b>
|
||||||
<br><tt><font color="#993300"><b>myOpContainer.add(myOperator, rate); </b>//
|
<br><tt><font color="#993300"><b>myOpContainer.add(myOperator, rate); </b>//
|
||||||
rate: double whose <b>meaning depends on XXX</b></font></tt>
|
rate: double whose <b>meaning depends on XXX</b></font></tt>
|
||||||
<p>where XXX can be one of Proportional and Sequential.
|
<p>where YYY can be one of Proportional and Sequential.
|
||||||
<br>However, the way <b><tt><font color="#993300">rate</font></tt></b>
|
<br><b><font color="#FF6600">Warning</font></b>: the way <b><tt><font color="#993300">rate</font></tt></b>
|
||||||
will be used is highly dependent on the type of OpContainer your are creating
|
will be used is highly dependent on the type of <b><font color="#CC33CC">eoOpContainer</font></b>
|
||||||
there:
|
your are creating there:
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The rates for <b><font color="#CC33CC">eoProportionalOpContainer</font></b>
|
The rates for <b><font color="#CC33CC">eoProportionalOpContainer</font></b>
|
||||||
|
|
@ -300,21 +550,115 @@ values</font></b>.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
The "rates" for <b><font color="#CC33CC">eoSequentialOpContainer </font></b>actually
|
The "rates" for <b><font color="#CC33CC">eoSequentialOpContainer </font></b>actually
|
||||||
are probabilities, i.e. they will be used in a coin-flipping to determine
|
are <b><font color="#FF6600">probabilities</font></b>, i.e. they will be
|
||||||
whether that particuler operator will be applied to the next candidates
|
used in a coin-flipping to determine whether that particuler operator will
|
||||||
at hand. They should be <b><font color="#FF6600">in [0,1]</font></b> (no
|
be applied to the next candidates at hand. They should be <b><font color="#FF6600">in
|
||||||
error will happen if they are not, but the operator will be applied systematically
|
[0,1]</font></b> (no error will happen if they are not, but the operator
|
||||||
- this is equivalent of a rate equal to 1).</li>
|
will be applied systematically - this is equivalent of a rate equal to
|
||||||
|
1).</li>
|
||||||
|
</ul>
|
||||||
|
<a NAME="container_and_populator"></a><b><font color="#FF0000">Containers,
|
||||||
|
Selectors and Populators</font></b>
|
||||||
|
<br>The way the <b><font color="#CC33CC">eoOpContainer</font></b> are applied
|
||||||
|
on a population using an <b><font color="#999900">eoPopulator</font></b>
|
||||||
|
object. But, whereas the behavior of <b><font color="#CC33CC"><a href="#prop_container">eoProportionalOpContainer</a></font></b>
|
||||||
|
does not depend on the type of <b><font color="#999900">eoPopulator</font></b>,(one
|
||||||
|
operator is chosen by roulette_wheel, and applied once before control is
|
||||||
|
given back to the caller), the main loop in method <b><tt><font color="#993300">operator()
|
||||||
|
</font></tt></b>of
|
||||||
|
class <b><font color="#CC33CC"><a href="#seqential_container">eoSequentialOpContainer</a></font></b>
|
||||||
|
iterates <b><tt><font color="#993300">while (!_pop.exhausted())</font></tt></b>
|
||||||
|
which is interpreted differently depending on the <a href="#populators">type
|
||||||
|
of <b><font color="#CC33CC">eoPopulator</font></b></a>:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
if the argument is an <b><font color="#999900">eoSelectivePopulator</font></b>,
|
||||||
|
the default position of the eoPopulator, considered as a population iterator,
|
||||||
|
is at end of population. Individuals are added upon demand of an operator,
|
||||||
|
and in most cases all operators are applied once. This also depends, however,
|
||||||
|
on the arities of all operators:</li>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Consider an <b><font color="#CC33CC">eoSequentialOpContainer</font></b>
|
||||||
|
containing an eoQuadOp and an eoMonOp. The eoQuadOp first asks for two
|
||||||
|
parents and modifies them. The eoMonOp is then called starting from the
|
||||||
|
forst of thoses two modified individuals, and is hence applied twice, once
|
||||||
|
on each parent.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
But consider now an <b><font color="#CC33CC">eoSequentialOpContainer</font></b>
|
||||||
|
containing an <b><font color="#CC33CC">eoGenOp</font></b> that takes one
|
||||||
|
parent and generates three offspring, followed by an <b><font color="#CC33CC">eoQuadOp</font></b>.
|
||||||
|
The <b><font color="#CC33CC">eoGenOp</font></b> will call the selector
|
||||||
|
to get the parent its need and will modify it and put 2 additional offspring
|
||||||
|
at end of the population. The <b><font color="#CC33CC">eoQuadOp</font></b>
|
||||||
|
will then be called on the first of the three outputs of the <b><font color="#CC33CC">eoGenOp</font></b>,
|
||||||
|
and hence will act upon the frist two of them. But at that point, the populator
|
||||||
|
iterator will point to the third of the individuals resulting from the
|
||||||
|
<b><font color="#CC33CC">eoGenOp</font></b>,
|
||||||
|
and the test <b><tt><font color="#993300">_pop.exhausted()</font></tt></b>
|
||||||
|
will return false, so the <b><font color="#CC33CC">eoQuadOp</font></b>
|
||||||
|
will again be called. The second parent it needs will be given by a new
|
||||||
|
call to the embedded <b><font color="#009900">eoSelectOne</font></b> of
|
||||||
|
the and everything will go on smoothly, except that a total of 4
|
||||||
|
offspring will have been generated by application of this particular <b><font color="#CC33CC">eoSequentialOpContainer</font></b>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p><br>
|
<li>
|
||||||
<hr WIDTH="100%"><b><font color="#FF0000">TOC</font></b> : <a href="#introduction">Introduction</a>
|
if the argument is an <b><font color="#999900">eoSeqPopulator</font></b>,
|
||||||
|
the position of the iterator starts from the beginning of an existing population
|
||||||
|
(the source populations), and hence when an an <b><font color="#CC33CC">eoSequentialOpContainer</font></b>
|
||||||
|
is called, it goes through the whole remaining of the population (the test
|
||||||
|
<b><tt><font color="#993300">_pop.exhausted()</font></tt></b>
|
||||||
|
only returns true at end of the source population).</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
From the above it is easy to see that passing an <b><font color="#999900">eoSeqPopulator</font></b>
|
||||||
|
to an <b><font color="#CC33CC">eoProportionalOpContainer</font></b> that
|
||||||
|
contains an <b><font color="#CC33CC">eoSequentialOpContainer</font></b>,
|
||||||
|
though not technically forbiddden, will most produce something totally
|
||||||
|
unpredictable, and hence should probably not be used without great care.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr WIDTH="100%"><a NAME="advanced_general"></a><b><font color="#000099"><font size=+2>Advanced
|
||||||
|
general operators:</font></font></b>
|
||||||
|
<p>It is sometimes useful to be able to use a selector from inside an operator
|
||||||
|
(a typical example is when you want to implement <b><font color="#FF6600">sexual
|
||||||
|
preferences</font></b>, i.e. choose a mate for a first parent according
|
||||||
|
to some characteritics of that first parent).
|
||||||
|
<br>This is made possible in EO because the general operators have a handle
|
||||||
|
on the initial population through the method source() of the argument eoPopulator
|
||||||
|
they work on. Their <b><tt><font color="#993300">operator()</font></tt></b>
|
||||||
|
method shoudl look like
|
||||||
|
<p><b><tt><font color="#993300">void operator()(</font><font color="#999900">eoPopulator</font><font color="#993300">&
|
||||||
|
_pop)</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||||
|
<br><tt><font color="#993300"><b> EOT & eo1 = *_pop; </b>// get
|
||||||
|
(select if necessary) the first guy</font></tt>
|
||||||
|
<br><b><tt><font color="#993300"> ++_pop;
|
||||||
|
|
||||||
|
</font></tt></b><tt><font color="#993300">// advance</font></tt>
|
||||||
|
<br><b><tt><font color="#993300"> EOT & eo2 = </font><font color="#009900">findBlonde</font><font color="#993300">(_pop.source());
|
||||||
|
|
||||||
|
</font></tt></b><tt><font color="#993300">// select mate</font></tt>
|
||||||
|
<br><tt><font color="#993300">// do whatever the operator is supposed to
|
||||||
|
do</font></tt>
|
||||||
|
<br><b><tt><font color="#993300">}</font></tt></b>
|
||||||
|
<p>Where does that <b><tt><font color="#009900">findBlonde</font></tt></b>
|
||||||
|
selector comes from? As usual, you have to attach it to the operator,
|
||||||
|
in its constructor for instance, which should give something like:
|
||||||
|
<p><b><tt><font color="#993300">sexualSelectorType<Indi> findBlonde;</font></tt></b>
|
||||||
|
<br><b><tt><font color="#993300">sexualOperatorType<Indi> yourBrainAndMyBeauty(findBlonde);</font></tt></b>
|
||||||
|
<p>
|
||||||
|
<hr WIDTH="100%"><b><font color="#FF0000">Local</font></b>: <a href="#introduction">Introduction</a>
|
||||||
- <a href="#crossover">Crossover</a> - <a href="#mutation">Mutation</a>
|
- <a href="#crossover">Crossover</a> - <a href="#mutation">Mutation</a>
|
||||||
- <a href="#proportional_simple">Simple combinations</a> - <a href="#general">General
|
- <a href="#proportional_simple">Combinations</a> - <a href="#general">General
|
||||||
Operators</a> - <a href="#general_combination">General combinations</a>
|
Operators</a> - <a href="#populators">Populators</a> - <a href="#general_combination">General
|
||||||
<br>
|
combinations</a>- <a href="#advanced_general">Advanced operators
|
||||||
<hr WIDTH="100%"><a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<hr WIDTH="100%"></a><b><font color="#FF0000">General</font></b>: <a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> -<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
|
hints</a> -<b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
@ -323,5 +667,6 @@ documentation</a></font></font></b>
|
||||||
|
|
||||||
<br><!-- Created: Mon Oct 30 07:27:13 CET 2000 --><!-- hhmts start -->Last
|
<br><!-- Created: Mon Oct 30 07:27:13 CET 2000 --><!-- hhmts start -->Last
|
||||||
modified: Fri Dec. 8 2000 <!-- hhmts end -->
|
modified: Fri Dec. 8 2000 <!-- hhmts end -->
|
||||||
|
<br>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTutorial.html">Tutorial main page </a>-
|
<a href="eoTutorial.html">Tutorial main page </a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -241,8 +241,8 @@ Blabla</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Top-Down
|
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Algorithm-Based
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
page</a> - <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -144,7 +144,7 @@ apply<EOT>(eval, _pop);</font></tt></b>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font>
|
documentation</a></font>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,25 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
||||||
<title>EO - The Top-Down approach</title>
|
<title>EO - The Algorithm-Based approach</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTutorial.html">Tutorial main page
|
<a href="eoTutorial.html">Tutorial main
|
||||||
|
page
|
||||||
</a>-
|
</a>-
|
||||||
<a href="eoTopDown.html">Top-Down
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
- <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<center>
|
<center>
|
||||||
<h1>
|
<h1>
|
||||||
<font color="#FF0000">EO - The Top-Down approach</font></h1></center>
|
<font color="#FF0000">EO - The Algorithm-Based approach</font></h1></center>
|
||||||
|
|
||||||
<p><br>Congratulations - You have chosen the top-down approach! This
|
<p><br>Congratulations - You have chosen the algorithm-based approach!
|
||||||
means that you want to start from something that already works, and gradually
|
This means that you want to start from something that already works, and
|
||||||
learn about the more complex constructs. We have prepared a series of "lessons"
|
gradually learn about the more complex constructs. We have prepared a series
|
||||||
for you.
|
of "lessons" for you.
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="eoLesson1.html">Lesson 1 </a>- a gentle introduction to the <font color="#FF6600">EO
|
<a href="eoLesson1.html">Lesson 1 </a>- a gentle introduction to the <font color="#FF6600">EO
|
||||||
|
|
@ -47,8 +47,10 @@ populations,
|
||||||
<b><font color="#3366FF">restart</font></b> stopped runs,
|
<b><font color="#3366FF">restart</font></b> stopped runs,
|
||||||
...).</li>
|
...).</li>
|
||||||
|
|
||||||
<p><br>Current version (Nov. 29, 2000) stops here, but here are the plans
|
<br>
|
||||||
(subjected to many changes, of course!)
|
<p>
|
||||||
|
<p>Current version (Nov. 29, 2000) stops here, but here are the plans (subjected
|
||||||
|
to many changes, of course!)
|
||||||
<br>
|
<br>
|
||||||
<li>
|
<li>
|
||||||
Lesson 4 - More about checkpointing: write your first <font color="#FF6600">adaptive
|
Lesson 4 - More about checkpointing: write your first <font color="#FF6600">adaptive
|
||||||
|
|
@ -67,14 +69,14 @@ more sophisticated island model (no totally distributed population yet).</li>
|
||||||
<li>
|
<li>
|
||||||
Lesson 7 - ...</li>
|
Lesson 7 - ...</li>
|
||||||
</ul>
|
</ul>
|
||||||
Of course, in each lesson, you have links to the Bottom-Up page of the
|
Of course, in each lesson, you have links to the Component-Based of the
|
||||||
corresponding component of an EA you are modifying.
|
corresponding component of an EA you are modifying.
|
||||||
<br>( ... Well, to tell you the truth, as of today, November 28, this is
|
<br>( ... Well, to tell you the truth, as of today, November 28, this is
|
||||||
not true :-)
|
not true :-)
|
||||||
<br>
|
<br>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Top-Down
|
<br><a href="eoTutorial.html">Tutorial main page </a>- <a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
page</a> - <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -82,7 +84,7 @@ documentation</a></font></font></b>
|
||||||
<address>
|
<address>
|
||||||
<a href="mailto:marc@cmapx.polytechnique.fr">Marc Schoenauer</a></address>
|
<a href="mailto:marc@cmapx.polytechnique.fr">Marc Schoenauer</a></address>
|
||||||
|
|
||||||
<br><!-- Created: DATE --><!-- hhmts start -->Last modified: Fri Nov 28
|
<br><!-- Created: DATE --><!-- hhmts start -->Last modified: Tue Dec 19
|
||||||
2000 <!-- hhmts end -->
|
2000 <!-- hhmts end -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -2,44 +2,46 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
|
<meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) [Netscape]">
|
||||||
<title>Tutorial EO</title>
|
<title>Tutorial EO</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
- <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<center>
|
<center>
|
||||||
<h1>
|
<h1>
|
||||||
<font color="#FF0000">EO Tutorial</font></h1></center>
|
<font color="#FF0000">EO Tutorial</font></h1></center>
|
||||||
Welcome to EO - the Evolving Objects library. What is this tutorial good
|
Welcome to EO - the Evolving Objects library.
|
||||||
for?
|
<p>The short term idea of this tutorial is to help you <font color="#FF6600">build
|
||||||
<br>Well, the short term idea here is to help you <font color="#FF6600">build
|
|
||||||
your own Evolutionary Algorithms</font> using EO - while the long term
|
your own Evolutionary Algorithms</font> using EO - while the long term
|
||||||
idea is that you will be able to contribute to EO, and ultimately write
|
idea is that you will be able to contribute to EO, and ultimately write
|
||||||
<font color="#FF6600">our</font>
|
<font color="#FF6600">our</font>
|
||||||
EAs :-)
|
EAs :-)
|
||||||
<h3>
|
<h3>
|
||||||
<b><font color="#000099"><font size=+2>About this tutorial</font></font></b></h3>
|
<b><font color="#000099"><font size=+2>About this tutorial</font></font></b></h3>
|
||||||
This tutorial can be used in 2 different ways: top-down and bottom-up.
|
This tutorial can be used in 2 different ways: algorithm-based and component-based.
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="eoTopDown.html">Top-down</a> means you start from a <font color="#FF6600">very
|
<a href="eoTopDown.html">Algorithm-Based</a> means you start from a <font color="#FF6600">very
|
||||||
simple, ready-to-run algorithm,</font> and gradually modify it, making
|
simple, ready-to-run algorithm,</font> and gradually modify it, making
|
||||||
it both more powerful and more complex.</li>
|
it both more powerful and more complex.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="eoBottomUp.html">Bottom-up</a> means you start by examining the
|
<a href="eoBottomUp.html">Component-Based</a> means you start by examining
|
||||||
<font color="#FF6600">components
|
the
|
||||||
of an EA one by one</font>, down to the level of complexity you feel comfortable
|
<font color="#FF6600">components of an EA one by one</font>, down to
|
||||||
with, and then build the whole algorithm using those components you need
|
the level of complexity you feel comfortable with, and then build the whole
|
||||||
(or the one you are mastering). Such approach might be viewed as going
|
algorithm using those components you need (or the one you are mastering).
|
||||||
through a simplified user guide, too.</li>
|
Such approach might be viewed as going through a simplified user guide,
|
||||||
|
too.</li>
|
||||||
</ul>
|
</ul>
|
||||||
However, it is <b><font color="#FF6600">strongly recommended</font></b>
|
However, it is <b><font color="#FF6600">strongly recommended</font></b>
|
||||||
that you take some time on the first lesson of the Top-down approach to
|
that you take some time on the first lesson of the Algorithm-Based approach
|
||||||
get familiar with the basic concepts that are used throughout EO. Anyway,
|
to get familiar with the basic concepts that are used throughout EO. Anyway,
|
||||||
as of today, November 29, the Bottom-up page is not written yet :-)
|
as of today, December 19, the Component-Based is only very sparsely written
|
||||||
|
:-)
|
||||||
<p><b><font color="#000099"><font size=+2>Related documents</font></font></b>
|
<p><b><font color="#000099"><font size=+2>Related documents</font></font></b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -162,8 +164,8 @@ that you think could be improved, you are welcome to <a href="mailto:Marc.Schoen
|
||||||
me</a>.
|
me</a>.
|
||||||
<center>
|
<center>
|
||||||
<p><font color="#000099"><font size=+2>Enjoy!
|
<p><font color="#000099"><font size=+2>Enjoy!
|
||||||
<hr WIDTH="100%"></font></font><a href="eoTopDown.html">Top-Down page</a>
|
<hr WIDTH="100%"></font></font><a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> -<b><font size=+1> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
hints</a> -<b><font size=+1> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b></center>
|
documentation</a></font></font></b></center>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<title>Tutorial EO</title>
|
<title>Tutorial EO</title>
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
<body text="#000000" link="#0000EF" vlink="#51188E" alink="#FF0000" background="beige009.jpg">
|
||||||
<a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
|
|
@ -22,15 +22,15 @@ idea is that you will be able to contribute to EO, and ultimately write
|
||||||
EAs :-)
|
EAs :-)
|
||||||
<h3>
|
<h3>
|
||||||
<b><font color="#000099"><font size=+2>About this tutorial</font></font></b></h3>
|
<b><font color="#000099"><font size=+2>About this tutorial</font></font></b></h3>
|
||||||
This tutorial can be used in 2 different ways: top-down and bottom-up.
|
This tutorial can be used in 2 different ways: algorithm-based and component-based.
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="eoTopDown.html">Top-down</a> means you start from a <font color="#FF6600">very
|
<a href="eoTopDown.html">Algorithm-Based</a> means you start from a <font color="#FF6600">very
|
||||||
simple, ready-to-run algorithm,</font> and gradually modify it, making
|
simple, ready-to-run algorithm,</font> and gradually modify it, making
|
||||||
it both more powerful and more complex.</li>
|
it both more powerful and more complex.</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="eoBottomUp.html">Bottom-up</a> means you start by examining the
|
<a href="eoBottomUp.html">Component-Based</a> means you start by examining the
|
||||||
<font color="#FF6600">components
|
<font color="#FF6600">components
|
||||||
of an EA one by one</font>, down to the level of complexity you feel comfortable
|
of an EA one by one</font>, down to the level of complexity you feel comfortable
|
||||||
with, and then build the whole algorithm using those components you need
|
with, and then build the whole algorithm using those components you need
|
||||||
|
|
@ -38,9 +38,9 @@ with, and then build the whole algorithm using those components you need
|
||||||
through a simplified user guide, too.</li>
|
through a simplified user guide, too.</li>
|
||||||
</ul>
|
</ul>
|
||||||
However, it is <b><font color="#FF6600">strongly recommended</font></b>
|
However, it is <b><font color="#FF6600">strongly recommended</font></b>
|
||||||
that you take some time on the first lesson of the Top-down approach to
|
that you take some time on the first lesson of the Algorithm-Based approach to
|
||||||
get familiar with the basic concepts that are used throughout EO. Anyway,
|
get familiar with the basic concepts that are used throughout EO. Anyway,
|
||||||
as of today, November 29, the Bottom-up page is not written yet :-)
|
as of today, November 29, the Component-Based is not written yet :-)
|
||||||
<p><b><font color="#000099"><font size=+2>Related documents</font></font></b>
|
<p><b><font color="#000099"><font size=+2>Related documents</font></font></b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -163,8 +163,8 @@ that you think could be improved, you are welcome to <a href="mailto:Marc.Schoen
|
||||||
me</a>.
|
me</a>.
|
||||||
<center>
|
<center>
|
||||||
<p><font color="#000099"><font size=+2>Enjoy!
|
<p><font color="#000099"><font size=+2>Enjoy!
|
||||||
<hr WIDTH="100%"></font></font><a href="eoTopDown.html">Top-Down page</a>
|
<hr WIDTH="100%"></font></font><a href="eoTopDown.html">Algorithm-Based</a>
|
||||||
- <a href="eoBottomUp.html">Bottom-up page</a> - <a href="eoProgramming.html">Programming
|
- <a href="eoBottomUp.html">Component-Based</a> - <a href="eoProgramming.html">Programming
|
||||||
hints</a> -<b><font size=+1> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
hints</a> -<b><font size=+1> <font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b></center>
|
documentation</a></font></font></b></center>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
<body text="#000000" bgcolor="#C3C2B4" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
||||||
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> -<b><font size=+1>
|
page</a> - <a href="eoProgramming.html">Programming hints</a> -<b><font size=+1>
|
||||||
<font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></font></b>
|
<font face="Arial,Helvetica"><a href="../../doc/html/index.html">EO documentation</a></font></font></b>
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -43,7 +43,7 @@ sum += _ind[i] * _ind[i];</font></tt></b>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
<hr WIDTH="100%"><a href="eoLesson2.html">Back to Lesson 2</a> - <a href="eoTutorial.html">Tutorial
|
||||||
main page </a>- <a href="eoTopDown.html">Top-Down page</a> - <a href="eoBottomUp.html">Bottom-up
|
main page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based
|
||||||
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
page</a> - <a href="eoProgramming.html">Programming hints</a> - <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/index.html">EO
|
||||||
documentation</a></font></font></b>
|
documentation</a></font></font></b>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
Reference in a new issue