📄 firstmerge.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">Tutorialmain page</a> -<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Basedpage</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EOdocumentation</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 beenremoved).<br><b><font color="#FF6600">Warning</font></b>: the <font color="#FF6666">pinkbackground</font> here denotes the differences, not the section ofthe 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>(includingthe 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">doublereal_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"> doublesum = 0;</font></font><br><font face="Courier New,Courier"><font color="#CC0000"> for (unsignedi = 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">doublebinary_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"> doublesum = 0;</font></font><br><font face="Courier New,Courier"><font color="#CC0000"> for (unsignedi = 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">voidmain_function(int argc, char **argv)</font></font><br><font face="Courier New,Courier">{</font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint SEED = 42;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint VEC_SIZE = 8;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint POP_SIZE = 20;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint T_SIZE = 3;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint MAX_GEN = 500;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const floatCROSS_RATE = 0.8;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const floatMUT_RATE = 0.5;</font></font></td><td BGCOLOR="#C3C2B4"><font face="Courier New,Courier"><font color="#993300">voidmain_function(int argc, char **argv)</font></font><br><font face="Courier New,Courier">{</font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint SEED = 42;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint VEC_SIZE = 8;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint POP_SIZE = 20;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint T_SIZE = 3;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const unsignedint MAX_GEN = 500;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const floatCROSS_RATE = 0.8;</font></font><br><font face="Courier New,Courier"><font color="#3366FF">const floatMUT_RATE = 0.5;</font></font></td></tr><tr><td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#3366FF">constdouble EPSILON = 0.01;</font></font></td><td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#3366FF">constdouble 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 (unsignedint 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 (unsignedint 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(intargc, char **argv)</font></font><br><font face="Courier New,Courier"><font color="#993300">{</font></font><br><font face="Courier New,Courier"><font color="#993300">... [technicalcode 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(intargc, char **argv)</font></font><br><font face="Courier New,Courier"><font color="#993300">{</font></font><br><font face="Courier New,Courier"><font color="#993300">[... technicalcode 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">Tutorialmain page</a> -<a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Basedpage</a> - <a href="eoProgramming.html">Programming hints</a> - <a href="../../doc/html/index.html">EOdocumentation</a><br><hr><address><a href="mailto:Marc.Schoenauer@inria.fr">Marc Schoenauer</a></address><br><!-- Created: Tue Nov 7 07:04:15 CET 2000 --><!-- hhmts start -->Lastmodified: Tue Nov 7 07:49:47 CET 2000<!-- hhmts end --></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -