<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: The GA doesn't work</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>You are initialising all your genomes to &quot;1,1,1,1,1,1&quot; then just swapping them about with the SwapMutator. There is nothing happening to change these 1's into 2's, 3's etc.</FONT></P>

<P><FONT SIZE=2>-----------</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; Allan</FONT>
</P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: agna@brawijaya.ac.id [<A HREF="mailto:agna@brawijaya.ac.id">mailto:agna@brawijaya.ac.id</A>] </FONT>
<BR><FONT SIZE=2>Sent: 01 March 2003 06:30</FONT>
<BR><FONT SIZE=2>To: galib@mit.edu</FONT>
<BR><FONT SIZE=2>Subject: The GA doesn't work</FONT>
</P>
<BR>

<P><FONT SIZE=2>Dear Sir/Madar, </FONT>
</P>

<P><FONT SIZE=2>I am new user for GAlib.</FONT>
<BR><FONT SIZE=2>I've tried to instantiate a genome from GA1DArrayGenome&lt;int&gt;. Following this email is my own simple source. No problem with the program, but the GA does nothing. The final genome is the same as the initial genome. What's wrong ? Is there anyone ready to help me ? </FONT></P>

<P><FONT SIZE=2>With best wishes</FONT>
<BR><FONT SIZE=2>A Naba</FONT>
<BR><FONT SIZE=2>&nbsp;-----------------------------</FONT>
<BR><FONT SIZE=2>#include &lt;stdio.h&gt;</FONT>
<BR><FONT SIZE=2>#include &lt;iostream.h&gt;</FONT>
<BR><FONT SIZE=2>#include &lt;ga/ga.h&gt; </FONT>
</P>

<P><FONT SIZE=2>float Objective(GAGenome &amp; c);</FONT>
<BR><FONT SIZE=2>void IntArrayInitializer(GAGenome &amp; c); </FONT>
</P>

<P><FONT SIZE=2>int main(int argc, char *argv[]){ </FONT>
</P>

<P><FONT SIZE=2>&nbsp; int i,len;</FONT>
<BR><FONT SIZE=2>&nbsp; len=6;</FONT>
<BR><FONT SIZE=2>&nbsp; //Create Target</FONT>
<BR><FONT SIZE=2>&nbsp; int target[len];</FONT>
<BR><FONT SIZE=2>&nbsp; for(i=0;i&lt;len;i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; target[i] = i+1;</FONT>
</P>

<P><FONT SIZE=2>&nbsp; // Create genome object</FONT>
<BR><FONT SIZE=2>&nbsp; GA1DArrayGenome&lt;int&gt; genome(len,Objective,(void *)target);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; // to ensure that the target the right one</FONT>
<BR><FONT SIZE=2>&nbsp; cout&lt;&lt; &quot;Check Target : \n&quot;;</FONT>
<BR><FONT SIZE=2>&nbsp; int * initialData = (int *) genome.userData();</FONT>
<BR><FONT SIZE=2>&nbsp; for(i=0;i&lt;genome.length();i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cout &lt;&lt; initialData[i] &lt;&lt; &quot; &quot;;</FONT>
<BR><FONT SIZE=2>&nbsp; cout &lt;&lt; endl;</FONT>
</P>

<P><FONT SIZE=2>&nbsp; genome.initializer(IntArrayInitializer);</FONT>
<BR><FONT SIZE=2>&nbsp; genome.mutator(GA1DArrayGenome&lt;int&gt;::SwapMutator);</FONT>
<BR><FONT SIZE=2>&nbsp; genome.crossover(GA1DArrayGenome&lt;int&gt;::OnePointCrossover);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; GAParameterList params;</FONT>
<BR><FONT SIZE=2>&nbsp; GASteadyStateGA::registerDefaultParameters(params);</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNpopulationSize, 100);</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNpCrossover, 0.8);</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNpMutation, 0.01);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // probability of mutation</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNnGenerations, 100);&nbsp;&nbsp;&nbsp;&nbsp; // number of generations</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNscoreFrequency, 5);&nbsp;&nbsp;&nbsp;&nbsp; // how often to record scores</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNflushFrequency, 5);&nbsp;&nbsp;&nbsp; // HOW often to flush scores</FONT>
<BR><FONT SIZE=2>&nbsp; params.set(gaNscoreFilename, &quot;bog.dat&quot;);</FONT>
<BR><FONT SIZE=2>&nbsp; params.parse(argc, argv, gaFalse);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; GASteadyStateGA ga(genome);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; ga.parameters(params);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; GARankSelector selector;</FONT>
<BR><FONT SIZE=2>&nbsp; ga.selector(selector);</FONT>
</P>

<P><FONT SIZE=2>&nbsp; ga.initialize();&nbsp; // If the genome has its own initializer, do this</FONT>
<BR><FONT SIZE=2>&nbsp; genome =&nbsp; ga.statistics().bestIndividual();</FONT>
<BR><FONT SIZE=2>&nbsp; // Initial Genome after initialized</FONT>
<BR><FONT SIZE=2>&nbsp; cout &lt;&lt; &quot;Initial Genome : \n&quot;;</FONT>
<BR><FONT SIZE=2>&nbsp; for(i=0;i&lt;genome.length();i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cout &lt;&lt; genome[i] &lt;&lt; &quot; &quot;;</FONT>
<BR><FONT SIZE=2>&nbsp; cout &lt;&lt; endl;</FONT>
</P>

<P><FONT SIZE=2>&nbsp; while(!ga.done()) ga.step();</FONT>
<BR><FONT SIZE=2>&nbsp; ga.flushScores();</FONT>
</P>

<P><FONT SIZE=2>&nbsp; genome =&nbsp; ga.statistics().bestIndividual();</FONT>
</P>

<P><FONT SIZE=2>&nbsp; cout &lt;&lt; &quot;Best Genome : &quot; &lt;&lt; endl;</FONT>
<BR><FONT SIZE=2>&nbsp; for(i=0;i&lt;genome.length();i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cout &lt;&lt; genome[i] &lt;&lt; &quot; &quot;;</FONT>
<BR><FONT SIZE=2>&nbsp; cout &lt;&lt; endl; </FONT>
</P>

<P><FONT SIZE=2>&nbsp; return 0;</FONT>
<BR><FONT SIZE=2>}</FONT>
</P>

<P><FONT SIZE=2>float Objective(GAGenome &amp; c){</FONT>
<BR><FONT SIZE=2>&nbsp; GA1DArrayGenome&lt;int&gt; &amp; genome = (GA1DArrayGenome&lt;int&gt; &amp;) c;</FONT>
<BR><FONT SIZE=2>&nbsp; int * pattern = (int *)c.userData(); </FONT>
</P>

<P><FONT SIZE=2>&nbsp; float value = 0.0;</FONT>
<BR><FONT SIZE=2>&nbsp; for(int i=0;i&lt;genome.length();i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; value += 1.0/(1.0 + fabs(genome[i]-pattern[i])); </FONT>
</P>

<P><FONT SIZE=2>&nbsp; return(value);</FONT>
<BR><FONT SIZE=2>} </FONT>
</P>

<P><FONT SIZE=2>void IntArrayInitializer(GAGenome &amp; c){</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp; GA1DArrayGenome&lt;int&gt; &amp; genome = (GA1DArrayGenome&lt;int&gt; &amp;) c;</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp; for(int i=0;i&lt;genome.length();i++)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; genome[i] = 1;</FONT>
<BR><FONT SIZE=2>}</FONT>
</P>

<P><FONT SIZE=2>_______________________________________________</FONT>
<BR><FONT SIZE=2>galib mailing list</FONT>
<BR><FONT SIZE=2>galib@mit.edu</FONT>
<BR><FONT SIZE=2><A HREF="http://lancet.mit.edu/mailman/listinfo/galib" TARGET="_blank">http://lancet.mit.edu/mailman/listinfo/galib</A></FONT>
</P>

</BODY>
</HTML>