<div>i am having problem with code how to generate a specific tree.This code generate a tree using sedd value which is random.But i want to generate a specific tree .... Please Anyone can help me .The code is as below</div>  <div>&nbsp;</div>  <div>&nbsp;</div>  <div>#include &lt;stdio.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;iostream.h&gt;<BR>#include &lt;fstream.h&gt;<BR>#include &lt;ga/ga.h&gt;</div>  <div>&nbsp;</div>  <div>// The objective function is declared here and defined below.<BR>float objective(GAGenome &amp;);</div>  <div>// This is the declaration for the initialization operator for our trees.<BR>void TreeInitializer(GAGenome &amp;);</div>  <div>// This is a recursive function that will be used in the 'write' method for <BR>// our tree genomes.<BR>void WriteNode(ostream &amp; os, GANode&lt;int&gt; * n);</div>  <div><BR>int<BR>main(int argc, char *argv[])<BR>{<BR>&nbsp; /*cout &lt;&lt; "Example 6\n\n";<BR>&nbsp; cout &lt;&lt; "This example uses a
 SteadyState GA and Tree&lt;int&gt; genome.&nbsp; It\n";<BR>&nbsp; cout &lt;&lt; "tries to maximize the size of the tree genomes that it\n";<BR>&nbsp; cout &lt;&lt; "contains.&nbsp; The genomes contain ints in its nodes.\n\n";*/<BR>&nbsp; //cout.flush();</div>  <div>// See if we've been given a seed to use (for testing purposes).&nbsp; When you<BR>// specify a random seed, the evolution will be exactly the same each time<BR>// you use that seed number.</div>  <div>&nbsp; unsigned int seed = 0;<BR>&nbsp;/*for(int i=1; i&lt;argc; i++) {<BR>&nbsp;&nbsp;&nbsp; if(strcmp(argv[i++],"seed") == 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seed = atoi(argv[i]);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }*/</div>  <div>// Set the default values of the parameters.</div>  <div>&nbsp; GAParameterList params;<BR>&nbsp; GASteadyStateGA::registerDefaultParameters(params);<BR>&nbsp; params.set(gaNpopulationSize, 5);<BR>&nbsp; params.set(gaNpCrossover, 0.7);<BR>&nbsp; params.set(gaNpMutation,
 0.01);<BR>&nbsp; params.set(gaNnGenerations, 10);<BR>&nbsp; params.set(gaNscoreFilename, "bog.dat");<BR>&nbsp; params.set(gaNscoreFrequency, 5); // record score every 10th generation<BR>&nbsp; params.set(gaNflushFrequency, 5); // dump scores every 10th recorded score<BR>&nbsp; params.parse(argc, argv, gaFalse); // Parse the command line for GAlib args.</div>  <div>// Now create the GA and run it.&nbsp; We first create a chromsome with the<BR>// operators we want.&nbsp; Once we have the genome set up, create the genetic <BR>// algorithm, set the parameters, and let it go.</div>  <div>&nbsp; GATreeGenome&lt;int&gt; genome(objective);<BR>&nbsp; genome.initializer(TreeInitializer);<BR>&nbsp; genome.mutator(GATreeGenome&lt;int&gt;::SwapSubtreeMutator);</div>  <div>&nbsp; GASteadyStateGA ga(genome);<BR>&nbsp; ga.parameters(params);<BR>&nbsp; ga.evolve(seed);</div>  <div>&nbsp; genome = ga.statistics().bestIndividual();<BR>&nbsp; cout &lt;&lt; "the ga generated this tree:\n"
 &lt;&lt; genome &lt;&lt; "\n";<BR>&nbsp; cout &lt;&lt; genome.size() &lt;&lt; " nodes, " &lt;&lt; genome.depth() &lt;&lt; " levels deep.\n";<BR>&nbsp; cout &lt;&lt; "best of generation data are in '" &lt;&lt; ga.scoreFilename() &lt;&lt; "'\n";</div>  <div>&nbsp; return 0;<BR>}<BR>&nbsp;</div>  <div><BR>/* ----------------------------------------------------------------------------<BR>Objective function<BR>&nbsp; All we do in this objective function is try to maximize the size of the tree.<BR>Just return the tree size.&nbsp; This means that if you run this objective function<BR>for many generations you'll run out of memory!&nbsp; There is no limit to tree or<BR>list sizes built-in to the GA library.<BR>---------------------------------------------------------------------------- */<BR>float<BR>objective(GAGenome &amp; c)<BR>{<BR>&nbsp; GATreeGenome&lt;int&gt; &amp; genome = (GATreeGenome&lt;int&gt; &amp;)c;<BR>&nbsp; return genome.size();<BR>}</div>  <div>&nbsp;</div> 
 <div>/* ----------------------------------------------------------------------------<BR>Here is the initializer for our genomes.&nbsp; It builds a tree of n items of type<BR>int.&nbsp; Notice that we first destroy any tree that is already in the genome <BR>before we do our initialization.&nbsp; This is so that the genomes can be re-used.<BR>When you re-run a GA, it does not destroy the individuals in the population - <BR>it reuses them.&nbsp; Thus, the initializer must make sure that the genome is <BR>cleaned up before it tries to initialize it.<BR>---------------------------------------------------------------------------- */<BR>void<BR>TreeInitializer(GAGenome &amp; c)<BR>{<BR>&nbsp; GATreeGenome&lt;int&gt; &amp;child=(GATreeGenome&lt;int&gt; &amp;)c;</div>  <div>// destroy any pre-existing tree<BR>&nbsp; child.root();<BR>&nbsp; child.destroy();</div>  <div>// Create a new tree with depth of 'depth' and each eldest node containing<BR>// 'n' children (the other siblings
 have none).<BR>&nbsp; int depth=2, n=3, count=0;<BR>&nbsp; child.insert(count++,GATreeBASE::ROOT);</div>  <div>&nbsp; for(int i=0; i&lt;depth; i++){<BR>&nbsp;&nbsp;&nbsp; child.eldest();<BR>&nbsp;&nbsp;&nbsp; child.insert(count++);<BR>&nbsp;&nbsp;&nbsp; for(int j=0; j&lt;n; j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; child.insert(count++,GATreeBASE::AFTER);<BR>&nbsp; }<BR>}</div>  <div>&nbsp;</div>  <div>&nbsp;</div>  <div><BR>/* ----------------------------------------------------------------------------<BR>Tree genome method overrides<BR>-------------------------------------------------------------------------------<BR>&nbsp; Here we override the built-in methods for the tree class.&nbsp; We can do this<BR>because the tree class is template-ized - when the compiler looks for an<BR>instance of the tree class methods, it finds these so it won't generate an<BR>instance from the templates.&nbsp; You can do this with ANY method of a template<BR>class.&nbsp; Here we do it only for
 the write method.<BR>&nbsp; The default write operator prints out pointers to the contents of each node.<BR>Here we print out the actual contents of each node.&nbsp; This assumes that the <BR>object in our node has the operator&lt;&lt; defined for it.<BR>---------------------------------------------------------------------------- */<BR>void <BR>WriteNode(ostream &amp; os, GANode&lt;int&gt; * n)<BR>{<BR>&nbsp; if(!n) return;<BR>&nbsp; GANodeBASE * node = (GANodeBASE *)n;</div>  <div>&nbsp; os.width(10);<BR>&nbsp; os &lt;&lt; ((GANode&lt;int&gt; *)node)-&gt;contents &lt;&lt; " ";<BR>&nbsp; os.width(10); <BR>&nbsp; if(node-&gt;parent) os &lt;&lt; ((GANode&lt;int&gt; *)node-&gt;parent)-&gt;contents &lt;&lt; " ";<BR>&nbsp; else os &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp; os.width(10); <BR>&nbsp; if(node-&gt;child) os &lt;&lt; ((GANode&lt;int&gt; *)node-&gt;child)-&gt;contents &lt;&lt; " ";<BR>&nbsp; else os &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp; os.width(10);<BR>&nbsp;
 if(node-&gt;next) os &lt;&lt; ((GANode&lt;int&gt; *)node-&gt;next)-&gt;contents &lt;&lt; " ";<BR>&nbsp; else os &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp; os.width(10);<BR>&nbsp; if(node-&gt;prev) os &lt;&lt; ((GANode&lt;int&gt; *)node-&gt;prev)-&gt;contents &lt;&lt; "\n";<BR>&nbsp; else os &lt;&lt; ".\n";<BR>&nbsp; WriteNode(os, (GANode&lt;int&gt; *)node-&gt;child);</div>  <div>&nbsp; for(GANodeBASE * tmp=node-&gt;next; tmp &amp;&amp; tmp != node; tmp=tmp-&gt;next){<BR>&nbsp;&nbsp;&nbsp; os.width(10);<BR>&nbsp;&nbsp;&nbsp; os &lt;&lt; ((GANode&lt;int&gt; *)tmp)-&gt;contents &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; os.width(10);<BR>&nbsp;&nbsp;&nbsp; if(tmp-&gt;parent) os &lt;&lt; ((GANode&lt;int&gt; *)tmp-&gt;parent)-&gt;contents &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; else os &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; os.width(10); <BR>&nbsp;&nbsp;&nbsp; if(tmp-&gt;child) os &lt;&lt; ((GANode&lt;int&gt; *)tmp-&gt;child)-&gt;contents &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; else os
 &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; os.width(10); <BR>&nbsp;&nbsp;&nbsp; if(tmp-&gt;next) os &lt;&lt; ((GANode&lt;int&gt; *)tmp-&gt;next)-&gt;contents &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; else os &lt;&lt; "." &lt;&lt; " ";<BR>&nbsp;&nbsp;&nbsp; os.width(10); <BR>&nbsp;&nbsp;&nbsp; if(tmp-&gt;prev) os &lt;&lt; ((GANode&lt;int&gt; *)tmp-&gt;prev)-&gt;contents &lt;&lt; "\n";<BR>&nbsp;&nbsp;&nbsp; else os &lt;&lt; ".\n";<BR>&nbsp;&nbsp;&nbsp; WriteNode(os, (GANode&lt;int&gt; *)tmp-&gt;child);<BR>&nbsp; }<BR>}</div>  <div>int<BR>GATreeGenome&lt;int&gt;::write(ostream &amp; os) const<BR>{<BR>&nbsp; os &lt;&lt; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node&nbsp;&nbsp;&nbsp;&nbsp; parent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; child&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev\n";<BR>&nbsp; WriteNode(os, (GANode&lt;int&gt; *)rt);<BR>&nbsp; return os.fail() ? 1 : 0;<BR>}</div>  <div>&nbsp;</div>  <div><BR>// If your compiler does not do automatic
 instantiation (e.g. g++ 2.6.8),<BR>// then define the NO_AUTO_INST directive.&nbsp; The following includes force an<BR>// instantiation of the template class that we're going to use in the example.<BR>#ifdef NO_AUTO_INST<BR>#include &lt;ga/GATree.C&gt;<BR>#include &lt;ga/GATreeGenome.C&gt;<BR>#if defined(__GNUG__)<BR>template class GATree&lt;int&gt;;<BR>template class GATreeGenome&lt;int&gt;;<BR>#else<BR>GATree&lt;int&gt;;<BR>GATreeGenome&lt;int&gt;;<BR>#endif<BR>#endif<BR></div><p>
        

        
                <hr size=1> 
Jiyo cricket on <a href="http://us.rd.yahoo.com/mail/in/mailcricket/*http://in.sports.yahoo.com/cricket/">Yahoo! India cricket</a><br>
<a href="http://us.rd.yahoo.com/mail/in/mailmobilemessenger/*http://in.mobile.yahoo.com/new/messenger/">Yahoo! Messenger Mobile</a> Stay in touch with your buddies all the time.