that makes full use of libes.a. The user guide is in Lesson4 of the tutorial - programmer's guide will come later. Plus many small changes here and there
286 lines
14 KiB
HTML
286 lines
14 KiB
HTML
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<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]">
|
|
<title>Differences</title>
|
|
</head>
|
|
<body text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="beige009.jpg">
|
|
<a href="eoLesson1.html">Back to Lesson 1</a> -
|
|
<a href="eoTutorial.html">Tutorial
|
|
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> - <a href="../../doc/html/index.html">EO
|
|
documentation</a>
|
|
<br>
|
|
<hr WIDTH="100%"><!-- -------------- End of header ------------------ --><!-- ----------------------------------------------- -->
|
|
<center>
|
|
<h1>
|
|
<font color="#FF0000">FirstBitGA and FirstRealGA: differences</font></h1></center>
|
|
Below is a comparison of the codes for both algorithms (comments have been
|
|
removed).
|
|
<br><b><font color="#FF6600">Warning</font></b>: the <font color="#FF6666">pink
|
|
background</font> here denotes the differences, not the section of
|
|
the algorithm, which is only recalled by the color of the text!
|
|
<br>These differences are limited to
|
|
<ul>
|
|
<li>
|
|
the declaration of <font color="#666600">the type of the genotypes,</font></li>
|
|
|
|
<li>
|
|
the <font color="#990000">fitness function</font> (what did you expect
|
|
:-),</li>
|
|
|
|
<li>
|
|
the <font color="#CC33CC">initialization</font> (and if you look carefully,
|
|
you'll find out that only a small part of the initialization is different,
|
|
as both genotypes are eoFixedLength objects) and of course</li>
|
|
|
|
<li>
|
|
the choice of <font color="#CC33CC">variation operators </font>(including
|
|
the parameter for the mutation).</li>
|
|
</ul>
|
|
|
|
<table BORDER=0 CELLPADDING=5 COLS=2 WIDTH="100%" BGCOLOR="#C3C2B4" >
|
|
<tr>
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#993300">#include
|
|
<stdexcept ></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">#include <iostream></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">#include <strstream></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">#include <eo></font></font></td>
|
|
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#993300">#include
|
|
<stdexcept ></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">#include <iostream></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">#include <strstream></font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">#include <eo></font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#FFFF00">#include <es.h><br>
|
|
typedef eoReal<double> Indi;</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#FFFF00">#include <ga.h><br>
|
|
typedef eoBit<double> Indi;</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC0000">double
|
|
real_value(const Indi & _indi)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">{</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> double
|
|
sum = 0;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> for (unsigned
|
|
i = 0; i < _indi.size(); i++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">
|
|
sum += _indi[i]*_indi[i];</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> return
|
|
(-sum); // maximizing</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">}</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC0000">double
|
|
binary_value(const Indi & _indi)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">{</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> double
|
|
sum = 0;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> for (unsigned
|
|
i = 0; i < _indi.size(); i++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">
|
|
sum += _indi[i];</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000"> return
|
|
(sum);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC0000">}</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#993300">void
|
|
main_function(int argc, char **argv)</font></font>
|
|
<br><font face="Courier New,Courier">{</font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int SEED = 42;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int VEC_SIZE = 8;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int POP_SIZE = 20;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int T_SIZE = 3;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int MAX_GEN = 500;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const float
|
|
CROSS_RATE = 0.8;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const float
|
|
MUT_RATE = 0.5;</font></font></td>
|
|
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#993300">void
|
|
main_function(int argc, char **argv)</font></font>
|
|
<br><font face="Courier New,Courier">{</font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int SEED = 42;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int VEC_SIZE = 8;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int POP_SIZE = 20;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int T_SIZE = 3;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const unsigned
|
|
int MAX_GEN = 500;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const float
|
|
CROSS_RATE = 0.8;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">const float
|
|
MUT_RATE = 0.5;</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#3366FF">const
|
|
double EPSILON = 0.01;</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#3366FF">const
|
|
double P_MUT_PER_BIT = 0.01;</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC0000">eoEvalFuncPtr<Indi>
|
|
eval(real_value);</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC0000">eoEvalFuncPtr<Indi>
|
|
eval(binary_value);</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#CC33CC">eoPop<Indi>
|
|
pop;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">for (unsigned
|
|
int igeno=0; igeno<POP_SIZE; igeno++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC"> {</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
Indi v;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
for (unsigned ivar=0; ivar<VEC_SIZE; ivar++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
{</font></font></td>
|
|
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#CC33CC">eoPop<Indi>
|
|
pop;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">for (unsigned
|
|
int igeno=0; igeno<POP_SIZE; igeno++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC"> {</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
Indi v;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
for (unsigned ivar=0; ivar<VEC_SIZE; ivar++)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
{</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">
|
|
double r = 2*rng.uniform() - 1;</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">
|
|
bool r = rng.flip(); </font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#CC33CC">
|
|
v.push_back(r); //</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
}</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
eval(v);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
pop.push_back(v);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC"> }</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">pop.sort();</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
"Initial Population" << endl;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
pop;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#009900">eoDetTournament<Indi>
|
|
select(T_SIZE);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">eoGenContinue<Indi>
|
|
continuator(MAX_GEN);</font></font></td>
|
|
|
|
<td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#CC33CC">
|
|
v.push_back(r); //</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
}</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
eval(v);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">
|
|
pop.push_back(v);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC"> }</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">pop.sort();</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
"Initial Population" << endl;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
pop;</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#009900">eoDetTournament<Indi>
|
|
select(T_SIZE);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">eoGenContinue<Indi>
|
|
continuator(MAX_GEN);</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoUniformMutation<Indi>
|
|
mutation(EPSILON);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">eoSegmentCrossover<Indi>
|
|
xover;</font></font></td>
|
|
|
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoBitMutation<Indi>
|
|
mutation(P_MUT_PER_BIT);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#CC33CC">eo1PtBitXover<Indi>
|
|
xover;</font></font></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td BGCOLOR="#C3C2B4">
|
|
<font face="Courier New,Courier"><font color="#FF6666">eoSGA<Indi>
|
|
gga(select, xover, CROSS_RATE,</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">
|
|
mutation, MUT_RATE, eval, continuator);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">gga(pop);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">pop.sort();</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
"FINAL Population\n" << pop << endl;</font></font>
|
|
<br><font face="Courier New,Courier">}</font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">int main(int
|
|
argc, char **argv)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">{</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">... [technical
|
|
code removed]</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">}</font></font></td>
|
|
|
|
<td BGCOLOR="#C3C2B4">
|
|
<font face="Courier New,Courier"><font color="#FF6666">eoSGA<Indi>
|
|
gga(select, xover, CROSS_RATE,</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">
|
|
mutation, MUT_RATE, eval, continuator);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#FF6666">gga(pop);</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">pop.sort();</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#3366FF">cout <<
|
|
"FINAL Population\n" << pop << endl;</font></font>
|
|
<br><font face="Courier New,Courier">}</font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">int main(int
|
|
argc, char **argv)</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">{</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">[... technical
|
|
code removed ]</font></font>
|
|
<br><font face="Courier New,Courier"><font color="#993300">}</font></font></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<hr WIDTH="100%"><a href="eoLesson1.html">Back to Lesson 1</a> -
|
|
<a href="eoTutorial.html">Tutorial
|
|
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> - <a href="../../doc/html/index.html">EO
|
|
documentation</a>
|
|
<br>
|
|
<hr>
|
|
<address>
|
|
<a href="mailto:marc@cmapx.polytechnique.fr">Marc Schoenauer</a></address>
|
|
|
|
<br><!-- Created: Tue Nov 7 07:04:15 CET 2000 --><!-- hhmts start -->Last
|
|
modified: Tue Nov 7 07:49:47 CET 2000<!-- hhmts end -->
|
|
</body>
|
|
</html>
|