⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secondbitea.html

📁 这是linux下的进化计算的源代码。 === === === === === === === === === === === ===== check latest news at http:
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<a NAME="stop"></a><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH="100%" BGCOLOR="#CCFFFF" NOSAVE ><tr><td><tt><font color="#3366FF"><b>&nbsp;</b>//////////////////////////////////////</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>// termination condition seeFirstBitEA.cpp</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>/////////////////////////////////////</font></tt><br><b><tt><font color="#3366FF">&nbsp;eoGenContinue&lt;Indi> genCont(maxGen);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;eoSteadyFitContinue&lt;Indi> steadyCont(minGen,steadyGen);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;eoFitContinue&lt;Indi> fitCont(vecSize);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;eoCombinedContinue&lt;Indi> continuator(genCont);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;continuator.add(steadyCont);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;continuator.add(fitCont);</font></tt></b></td></tr></table><a NAME="checkpoint"></a><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH="100%" BGCOLOR="#CCFFFF" NOSAVE ><tr><td><tt><font color="#3366FF"><b>&nbsp;</b>// but now you want to makemany different things every generation&nbsp;</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>// (e.g. statistics, plots,...).</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>// the class eoCheckPoint isdedicated to just that:</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>// Declare a checkpoint (froma continuator: an eoCheckPoint&nbsp;</font></tt><br><tt><font color="#3366FF"><b>&nbsp;</b>// IS AN eoContinue and willbe called in the loop of all algorithms)</font></tt><br><b><tt><font color="#3366FF">&nbsp;eoCheckPoint&lt;Indi> checkpoint(continuator);</font></tt></b><p><a NAME="param_declare"></a><tt><font color="#3366FF"><b>&nbsp; </b>//Create a counter parameter</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoValueParam&lt;unsigned>generationCounter(0, "Gen.");</font></tt></b><p><a NAME="param_pass"></a><tt><font color="#3366FF"><b>&nbsp;&nbsp; </b>//Create an incrementor (sub-class of eoUpdater). Note that the&nbsp;</font></tt><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// parameter'svalue is passed by reference,&nbsp;</font></tt><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// so everytime the incrementer is updated (every generation),</font></tt><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// the datain generationCounter will change.</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoIncrementor&lt;unsigned>increment(generationCounter.value());</font></tt></b><br><a NAME="updater_pass"></a><tt><font color="#3366FF"><b>&nbsp; </b>//Add it to the checkpoint,&nbsp;</font></tt><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// so thecounter is updated (here, incremented) every generation</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(increment);</font></tt></b><br><a NAME="stat_declare"></a><tt><font color="#3366FF"><b>&nbsp; </b>//now some statistics on the population:</font></tt><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// Best fitnessin population</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoBestFitnessStat&lt;Indi>bestStat;</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// Secondmoment stats: average and stdev</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoSecondMomentStats&lt;Indi>SecondStat;</font></tt></b><br><a NAME="stat_pass"></a><tt><font color="#3366FF"><b>&nbsp;&nbsp; </b>//Add them to the checkpoint to get them called at the appropriate time</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(bestStat);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(SecondStat);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// The Stdoutmonitor will print parameters to the screen ...</font></tt><br><a NAME="monitor_declare"></a><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp;eoStdoutMonitor monitor(false);</font></tt></b><p><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// when calledby the checkpoint (i.e. at every generation)</font></tt><br><a NAME="monitor_pass"></a><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp;checkpoint.add(monitor);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// the monitorwill output a series of parameters: add them&nbsp;</font></tt><br><a NAME="monitor_add"></a><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp;monitor.add(generationCounter);</font></tt></b><a NAME="eval_monitor"></a><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; monitor.add(eval);</b>//because now eval is an eoEvalFuncCounter!</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; monitor.add(bestStat);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; monitor.add(SecondStat);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// A filemonitor: will print parameters to ... a File, yes, you got it!</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoFileMonitorfileMonitor("stats.xg", " ");</font></tt></b><p><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// the checkpointmechanism can handle multiple monitors</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(fileMonitor);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// the fileMonitorcan monitor parameters, too, but you must tell it!</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; fileMonitor.add(generationCounter);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; fileMonitor.add(bestStat);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; fileMonitor.add(SecondStat);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// Last typeof item the eoCheckpoint can handle: state savers:</font></tt><br><a NAME="outstate_declare"></a><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp;eoState outState;</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// Registerthe algorithm into the state</font></tt><br><a NAME="outstate_register"></a><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp;outState.registerObject(parser);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; outState.registerObject(pop);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; outState.registerObject(rng);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// and feedthe state to state savers</font></tt><br><a NAME="statesaver_declare"></a><tt><font color="#3366FF">// savestate every 100th&nbsp; generation</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoCountedStateSaverstateSaver1(100, outState, "generation");&nbsp;</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// save stateevery 1 seconds&nbsp;</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; eoTimedStateSaver&nbsp;&nbsp;&nbsp;stateSaver2(1, outState, "time");&nbsp;</font></tt></b><br><a NAME="statesaver_pass"></a><tt><font color="#3366FF"><b>&nbsp; </b>//Don't forget to add the two savers to the checkpoint</font></tt><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(stateSaver1);</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;&nbsp;&nbsp;&nbsp; checkpoint.add(stateSaver2);</font></tt></b><br><tt><font color="#3366FF"><b>&nbsp;&nbsp;&nbsp;&nbsp; </b>// and that'sit for the (control and) output</font></tt></td></tr></table><a NAME="generation"></a><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH="100%" BGCOLOR="#FFCC99" NOSAVE ><tr><td><tt><font color="#FF6666"><b>&nbsp;</b>/////////////////////////////////////////</font></tt><br><tt><font color="#FF6666"><b>&nbsp;</b>// the algorithm</font></tt><br><tt><font color="#FF6666"><b>&nbsp;</b>////////////////////////////////////////</font></tt><br><tt><font color="#FF6666"><b>&nbsp;</b>// Easy EA requires&nbsp;</font></tt><br><tt><font color="#FF6666">&nbsp;// stopping criterion, eval, selection,transformation, replacement</font></tt><br><b><tt><font color="#FF6666">&nbsp;eoEasyEA&lt;Indi> gga(checkpoint,eval, select, transform, replace);</font></tt></b><br><tt><font color="#FF6666"><b>&nbsp;</b>// Apply algo to pop - that'sit!</font></tt><br><b><tt><font color="#FF6666">&nbsp;gga(pop);</font></tt></b></td></tr></table><a NAME="output"></a><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH="100%" BGCOLOR="#CCFFFF" NOSAVE ><tr><td><tt><font color="#3366FF"><b>&nbsp;</b>// Print (sorted) final population</font></tt><br><b><tt><font color="#3366FF">&nbsp;pop.sort();</font></tt></b><br><b><tt><font color="#3366FF">&nbsp;cout &lt;&lt; "FINAL Population\n"&lt;&lt; pop &lt;&lt; endl;</font></tt></b></td></tr></table><a NAME="general"></a><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH="100%" BGCOLOR="#FFCC99" NOSAVE ><tr><td><b><tt><font color="#993300">}</font></tt></b><br><tt><font color="#993300">// A main that catches the exceptions</font></tt><br><b><tt><font color="#993300">int main(int argc, char **argv)</font></tt></b><br><b><tt><font color="#993300">{</font></tt></b><br><b><tt><font color="#993300">#ifdef _MSC_VER</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag|= _CRTDBG_LEAK_CHECK_DF;</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; _CrtSetDbgFlag(flag);</font></tt></b><br><tt><font color="#993300">//&nbsp;&nbsp;&nbsp; _CrtSetBreakAlloc(100);</font></tt><br><b><tt><font color="#993300">#endif</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; try</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; {</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main_function(argc, argv);</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; }</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; catch(exception&amp;e)</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; {</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "Exception: " &lt;&lt; e.what() &lt;&lt; '\n';</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; }</font></tt></b><br><b><tt><font color="#993300">&nbsp;&nbsp;&nbsp;&nbsp; return 1;</font></tt></b><br><b><tt><font color="#993300">}</font></tt></b></td></tr></table><hr WIDTH="100%"><a href="eoLesson3.html">Back to Lesson 3</a> - <a href="eoTutorial.html">Tutorialmain page </a>- <a href="eoTopDown.html">Algorithm-Based</a> - <a href="eoBottomUp.html">Component-Based</a>-<a href="eoProgramming.html">Programminghints</a> - <b><font face="Arial,Helvetica"><a href="../../doc/html/index.html">EOdocumentation</a></font></b><hr><address><a href="mailto:Marc.Schoenauer@inria.fr">Marc Schoenauer</a></address><br><!-- Created: Nov 2000 --><!-- hhmts start -->Last modified: Sun Nov26 09:31:04 2000<!-- hhmts end --></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -