paradiseo/trunk/paradiseo-peo/docs/html/classpeoEA.html

236 lines
16 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ParadisEO-PEO: peoEA&lt; EOT &gt; Class Template Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="classes.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>peoEA&lt; EOT &gt; Class Template Reference</h1><!-- doxytag: class="peoEA" --><!-- doxytag: inherits="Runner" -->The <a class="el" href="classpeoEA.html">peoEA</a> class offers an elementary evolutionary algorithm implementation.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="peoEA_8h-source.html">peoEA.h</a>&gt;</code>
<p>
<p>Inheritance diagram for peoEA&lt; EOT &gt;:
<p><center><img src="classpeoEA.png" usemap="#peoEA< EOT >_map" border="0" alt=""></center>
<map name="peoEA< EOT >_map">
<area href="classRunner.html" alt="Runner" shape="rect" coords="54,56,153,80">
<area href="classCommunicable.html" alt="Communicable" shape="rect" coords="0,0,99,24">
<area href="classThread.html" alt="Thread" shape="rect" coords="109,0,208,24">
</map>
<a href="classpeoEA-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#dbfc4f8907bef234602149229f132371">peoEA</a> (eoContinue&lt; EOT &gt; &amp;__cont, <a class="el" href="classpeoPopEval.html">peoPopEval</a>&lt; EOT &gt; &amp;__pop_eval, eoSelect&lt; EOT &gt; &amp;__select, <a class="el" href="classpeoTransform.html">peoTransform</a>&lt; EOT &gt; &amp;__trans, eoReplacement&lt; EOT &gt; &amp;__replace)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. <a href="#dbfc4f8907bef234602149229f132371"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ab8c321d29350634143a2a01cf2ad24"></a><!-- doxytag: member="peoEA::run" ref="6ab8c321d29350634143a2a01cf2ad24" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#6ab8c321d29350634143a2a01cf2ad24">run</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evolutionary algorithm function - a side effect of the fact that the class is derived from the <b><a class="el" href="classRunner.html">Runner</a></b> class, thus requiring the existence of a <em>run</em> function, the algorithm being executed on a distinct thread. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#3c709e3b2491147d26fee36138644613">operator()</a> (eoPop&lt; EOT &gt; &amp;__pop)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function operator for specifying the population to be associated with the algorithm. <a href="#3c709e3b2491147d26fee36138644613"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5f015eebf42f176b9fe322488c446c2a"></a><!-- doxytag: member="peoEA::cont" ref="5f015eebf42f176b9fe322488c446c2a" args="" -->
eoContinue&lt; EOT &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#5f015eebf42f176b9fe322488c446c2a">cont</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9140259f50c9186edcb062b023624c96"></a><!-- doxytag: member="peoEA::pop_eval" ref="9140259f50c9186edcb062b023624c96" args="" -->
<a class="el" href="classpeoPopEval.html">peoPopEval</a>&lt; EOT &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#9140259f50c9186edcb062b023624c96">pop_eval</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2d8428d69fdd6aefefbaf543fdd46d19"></a><!-- doxytag: member="peoEA::select" ref="2d8428d69fdd6aefefbaf543fdd46d19" args="" -->
eoSelect&lt; EOT &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#2d8428d69fdd6aefefbaf543fdd46d19">select</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="713c77935eb8aafebfb9488cfaa4a363"></a><!-- doxytag: member="peoEA::trans" ref="713c77935eb8aafebfb9488cfaa4a363" args="" -->
<a class="el" href="classpeoTransform.html">peoTransform</a>&lt; EOT &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#713c77935eb8aafebfb9488cfaa4a363">trans</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9bd2d4356cf7e69e3141dc269213aa8a"></a><!-- doxytag: member="peoEA::replace" ref="9bd2d4356cf7e69e3141dc269213aa8a" args="" -->
eoReplacement&lt; EOT &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#9bd2d4356cf7e69e3141dc269213aa8a">replace</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0b110e410bc16283e8339f24b733772"></a><!-- doxytag: member="peoEA::pop" ref="c0b110e410bc16283e8339f24b733772" args="" -->
eoPop&lt; EOT &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpeoEA.html#c0b110e410bc16283e8339f24b733772">pop</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class EOT&gt;<br>
class peoEA&lt; EOT &gt;</h3>
The <a class="el" href="classpeoEA.html">peoEA</a> class offers an elementary evolutionary algorithm implementation.
<p>
In addition, as compared with the algorithms provided by the EO framework, the <a class="el" href="classpeoEA.html">peoEA</a> class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a <a class="el" href="classpeoEA.html">peoEA</a> object:<p>
<table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0" cellspacing="3" cellpadding="3">
<tr>
<td>... &nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>eoPop&lt; EOT &gt; population( POP_SIZE, popInitializer ); &nbsp; </td><td>// creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>eoGenContinue&lt; EOT &gt; eaCont( NUM_GEN ); &nbsp; </td><td>// number of generations for the evolutionary algorithm </td></tr>
<tr>
<td>eoCheckPoint&lt; EOT &gt; eaCheckpointContinue( eaCont ); &nbsp; </td><td>// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>peoSeqPopEval&lt; EOT &gt; eaPopEval( evalFunction ); &nbsp; </td><td>// sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>eoRankingSelect&lt; EOT &gt; selectionStrategy; &nbsp; </td><td>// selection strategy for creating the offspring population - a simple ranking selection in this case </td></tr>
<tr>
<td>eoSelectNumber&lt; EOT &gt; eaSelect( selectionStrategy, POP_SIZE ); &nbsp; </td><td>// the number of individuals to be selected for creating the offspring population </td></tr>
<tr>
<td>eoRankingSelect&lt; EOT &gt; selectionStrategy; &nbsp; </td><td>// selection strategy for creating the offspring population - a simple ranking selection in this case </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>eoSGATransform&lt; EOT &gt; transform( crossover, CROSS_RATE, mutation, MUT_RATE ); &nbsp; </td><td>// transformation operator - crossover and mutation operators with their associated probabilities </td></tr>
<tr>
<td>peoSeqTransform&lt; EOT &gt; eaTransform( transform ); &nbsp; </td><td>// ParadisEO specific sequential operator - a parallel version may be specified in the same manner </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>eoPlusReplacement&lt; EOT &gt; eaReplace; &nbsp; </td><td>// replacement strategy - for integrating the offspring resulting individuals in the initial population </td></tr>
<tr>
<td>&nbsp; </td><td>&nbsp; </td></tr>
<tr>
<td>peoEA&lt; EOT &gt; eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); &nbsp; </td><td>// ParadisEO evolutionary algorithm integrating the above defined objects </td></tr>
<tr>
<td>eaAlg( population ); &nbsp; </td><td>// specifying the initial population for the algorithm </td></tr>
<tr>
<td>... &nbsp; </td><td>&nbsp; </td></tr>
</table>
<p>
<p>
Definition at line <a class="el" href="peoEA_8h-source.html#l00069">69</a> of file <a class="el" href="peoEA_8h-source.html">peoEA.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="dbfc4f8907bef234602149229f132371"></a><!-- doxytag: member="peoEA::peoEA" ref="dbfc4f8907bef234602149229f132371" args="(eoContinue&lt; EOT &gt; &amp;__cont, peoPopEval&lt; EOT &gt; &amp;__pop_eval, eoSelect&lt; EOT &gt; &amp;__select, peoTransform&lt; EOT &gt; &amp;__trans, eoReplacement&lt; EOT &gt; &amp;__replace)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class EOT&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classpeoEA.html">peoEA</a>&lt; EOT &gt;::<a class="el" href="classpeoEA.html">peoEA</a> </td>
<td>(</td>
<td class="paramtype">eoContinue&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__cont</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classpeoPopEval.html">peoPopEval</a>&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__pop_eval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">eoSelect&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__select</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classpeoTransform.html">peoTransform</a>&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">eoReplacement&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__replace</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
<p>
Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>eoContinue&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __cont - continuation criterion specifying whether the algorithm should continue or not; </td></tr>
<tr><td valign="top"></td><td valign="top"><em>peoPopEval&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; </td></tr>
<tr><td valign="top"></td><td valign="top"><em>eoSelect&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __select - selection strategy to be applied for constructing a list of offspring individuals; </td></tr>
<tr><td valign="top"></td><td valign="top"><em>peoTransform&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; </td></tr>
<tr><td valign="top"></td><td valign="top"><em>eoReplacement&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __replace - replacement strategy for integrating the offspring individuals in the initial population; </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="peoEA_8h-source.html#l00113">113</a> of file <a class="el" href="peoEA_8h-source.html">peoEA.h</a>.
<p>
References <a class="el" href="peoEA_8h-source.html#l00105">peoEA&lt; EOT &gt;::pop_eval</a>, and <a class="el" href="peoEA_8h-source.html#l00107">peoEA&lt; EOT &gt;::trans</a>.
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="3c709e3b2491147d26fee36138644613"></a><!-- doxytag: member="peoEA::operator()" ref="3c709e3b2491147d26fee36138644613" args="(eoPop&lt; EOT &gt; &amp;__pop)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class EOT&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classpeoEA.html">peoEA</a>&lt; EOT &gt;::operator() </td>
<td>(</td>
<td class="paramtype">eoPop&lt; EOT &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>__pop</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Function operator for specifying the population to be associated with the algorithm.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>eoPop&lt;</em>&nbsp;</td><td>EOT &gt;&amp; __pop - initial population of the algorithm, to be iteratively evolved; </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="peoEA_8h-source.html#l00129">129</a> of file <a class="el" href="peoEA_8h-source.html">peoEA.h</a>.
<p>
References <a class="el" href="peoEA_8h-source.html#l00109">peoEA&lt; EOT &gt;::pop</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="peoEA_8h-source.html">peoEA.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Sat Dec 30 14:55:31 2006 for ParadisEO-PEO by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>