git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@40 331e1502-861f-0410-8da2-ba01fb791d7f
185 lines
12 KiB
HTML
185 lines
12 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>EO: gprop.cpp Source File</title>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
</head><body>
|
|
<!-- Generated by Doxygen 1.3.9.1 -->
|
|
<div class="qindex"> <form class="search" action="search.php" method="get">
|
|
<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
|
|
<div class="nav">
|
|
<a class="el" href="dir_000020.html">app</a> / <a class="el" href="dir_000023.html">gprop</a></div>
|
|
<h1>gprop.cpp</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00002 <span class="comment">// gprop</span>
|
|
00003 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00004 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
|
|
00005
|
|
00006 <span class="preprocessor">#include <stdlib.h></span> <span class="comment">// EXIT_SUCCESS EXIT_FAILURE</span>
|
|
00007 <span class="preprocessor">#include <stdexcept></span> <span class="comment">// exception </span>
|
|
00008 <span class="preprocessor">#include <iostream></span> <span class="comment">// cerr cout</span>
|
|
00009 <span class="preprocessor">#include <fstream></span> <span class="comment">// ifstream</span>
|
|
00010 <span class="preprocessor">#include <string></span> <span class="comment">// string</span>
|
|
00011 <span class="preprocessor">#include <eo></span> <span class="comment">// all usefull eo stuff</span>
|
|
00012 <span class="preprocessor">#include "gprop.h"</span> <span class="comment">// Chrom eoChromInit eoChromMutation eoChromXover eoChromEvaluator</span>
|
|
00013
|
|
00014 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00015 <span class="comment">// global variables</span>
|
|
00016 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00017
|
|
00018 <span class="keywordtype">unsigned</span> in, out, hidden;
|
|
00019 mlp::set train, validate, test;
|
|
00020
|
|
00021 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00022 <span class="comment">// parameters</span>
|
|
00023 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00024
|
|
00025 <a class="code" href="classeo_value_param.html">eoValueParam<unsigned></a> pop_size(10, <span class="stringliteral">"pop_size"</span>, <span class="stringliteral">"population size"</span>, <span class="charliteral">'p'</span>);
|
|
00026 <a class="code" href="classeo_value_param.html">eoValueParam<unsigned></a> generations(10, <span class="stringliteral">"generations"</span>, <span class="stringliteral">"number of generation"</span>, <span class="charliteral">'g'</span>);
|
|
00027 <a class="code" href="classeo_value_param.html">eoValueParam<double></a> mut_rate(0.25, <span class="stringliteral">"mut_rate"</span>, <span class="stringliteral">"mutation rate"</span>, <span class="charliteral">'m'</span>);
|
|
00028 <a class="code" href="classeo_value_param.html">eoValueParam<double></a> xover_rate(0.25, <span class="stringliteral">"xover_rate"</span>, <span class="stringliteral">"default crossover rate"</span>, <span class="charliteral">'x'</span>);
|
|
00029 <a class="code" href="classeo_value_param.html">eoValueParam<string></a> file(<span class="stringliteral">""</span>, <span class="stringliteral">"file"</span>, <span class="stringliteral">"common start of patterns filenames *.trn *.val and *.tst"</span>, <span class="charliteral">'f'</span>);
|
|
00030 <a class="code" href="classeo_value_param.html">eoValueParam<unsigned></a> hiddenp(0, <span class="stringliteral">"hidden"</span>, <span class="stringliteral">"number of neurons in hidden layer"</span>, <span class="charliteral">'d'</span>);
|
|
00031
|
|
00032 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00033 <span class="comment">// auxiliar functions</span>
|
|
00034 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00035
|
|
00036 <span class="keywordtype">void</span> arg(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
|
|
00037 <span class="keywordtype">void</span> load_file(mlp::set& s, <span class="keyword">const</span> string& s);
|
|
00038 <span class="keywordtype">void</span> ga();
|
|
00039
|
|
00040 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00041 <span class="comment">// main</span>
|
|
00042 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00043
|
|
00044 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)
|
|
00045 {
|
|
00046 <span class="keywordflow">try</span>
|
|
00047 {
|
|
00048 arg(argc, argv);
|
|
00049 ga();
|
|
00050 }
|
|
00051 <span class="keywordflow">catch</span> (exception& e)
|
|
00052 {
|
|
00053 cerr << argv[0] << <span class="stringliteral">": "</span> << e.what() << endl;
|
|
00054 exit(EXIT_FAILURE);
|
|
00055 }
|
|
00056
|
|
00057 <span class="keywordflow">return</span> 0;
|
|
00058 }
|
|
00059
|
|
00060 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00061 <span class="comment">// implementation</span>
|
|
00062 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00063
|
|
00064 <span class="keywordtype">void</span> arg(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)
|
|
00065 {
|
|
00066 eoParser parser(argc, argv);
|
|
00067
|
|
00068 parser.processParam(pop_size, <span class="stringliteral">"genetic operators"</span>);
|
|
00069 parser.processParam(generations, <span class="stringliteral">"genetic operators"</span>);
|
|
00070 parser.processParam(mut_rate, <span class="stringliteral">"genetic operators"</span>);
|
|
00071 parser.processParam(xover_rate, <span class="stringliteral">"genetic operators"</span>);
|
|
00072 parser.processParam(file, <span class="stringliteral">"files"</span>);
|
|
00073 parser.processParam(hiddenp, <span class="stringliteral">"genetic operators"</span>);
|
|
00074
|
|
00075 <span class="keywordflow">if</span> (parser.userNeedsHelp())
|
|
00076 {
|
|
00077 parser.printHelp(cout);
|
|
00078 exit(EXIT_SUCCESS);
|
|
00079 }
|
|
00080
|
|
00081 load_file(train, <span class="stringliteral">"trn"</span>);
|
|
00082 load_file(validate, <span class="stringliteral">"val"</span>);
|
|
00083 load_file(test, <span class="stringliteral">"tst"</span>);
|
|
00084
|
|
00085 phenotype::trn_max = train.size();
|
|
00086 phenotype::val_max = validate.size();
|
|
00087 phenotype::tst_max = test.size();
|
|
00088
|
|
00089 in = train.front().input.size();
|
|
00090 out = train.front().output.size();
|
|
00091 gprop_use_datasets(&train, &validate, &test);
|
|
00092 hidden = hiddenp.<a class="code" href="classeo_value_param.html#a2">value</a>();
|
|
00093 }
|
|
00094
|
|
00095 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00096
|
|
00097 <span class="keywordtype">void</span> load_file(mlp::set& set, <span class="keyword">const</span> string& ext)
|
|
00098 {
|
|
00099 string filename = file.<a class="code" href="classeo_value_param.html#a2">value</a>(); filename += <span class="stringliteral">"."</span> + ext;
|
|
00100
|
|
00101 ifstream ifs(filename.c_str());
|
|
00102 <span class="keywordflow">if</span> (!ifs)
|
|
00103 {
|
|
00104 cerr << <span class="stringliteral">"can't open file \""</span> << filename << <span class="stringliteral">"\""</span> << endl;
|
|
00105 exit(EXIT_FAILURE);
|
|
00106 }
|
|
00107
|
|
00108 ifs >> set;
|
|
00109
|
|
00110 <span class="keywordflow">if</span> (set.size() == 0)
|
|
00111 {
|
|
00112 cerr << filename << <span class="stringliteral">" data file is empty!"</span>;
|
|
00113 exit(EXIT_FAILURE);
|
|
00114 }
|
|
00115 }
|
|
00116
|
|
00117 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00118
|
|
00119 <span class="keywordtype">void</span> ga()
|
|
00120 {
|
|
00121 <span class="comment">// create population</span>
|
|
00122 eoInitChrom init;
|
|
00123 <a class="code" href="classeo_pop.html">eoPop<Chrom></a> pop(pop_size.<a class="code" href="classeo_value_param.html#a2">value</a>(), init);
|
|
00124
|
|
00125 <span class="comment">// evaluate population</span>
|
|
00126 <a class="code" href="structeo_eval_func_ptr.html">eoEvalFuncPtr<Chrom></a> evaluator(eoChromEvaluator);
|
|
00127 apply<Chrom>(evaluator, pop);
|
|
00128
|
|
00129 <span class="comment">// selector</span>
|
|
00130 <a class="code" href="classeo_stoch_tournament_select.html">eoStochTournamentSelect<Chrom></a> select;
|
|
00131
|
|
00132 <span class="comment">// genetic operators</span>
|
|
00133 eoChromMutation mutation;
|
|
00134 eoChromXover xover;
|
|
00135
|
|
00136 <span class="comment">// stop condition</span>
|
|
00137 <a class="code" href="classeo_gen_continue.html">eoGenContinue<Chrom></a> continuator1(generations.<a class="code" href="classeo_value_param.html#a2">value</a>());
|
|
00138 phenotype p; p.val_ok = validate.size() - 1; p.mse_error = 0;
|
|
00139 <a class="code" href="classeo_fit_continue.html">eoFitContinue<Chrom></a> continuator2(p);
|
|
00140 <a class="code" href="classeo_combined_continue.html">eoCombinedContinue<Chrom></a> continuator(continuator1, continuator2);
|
|
00141
|
|
00142 <span class="comment">// checkpoint</span>
|
|
00143 <a class="code" href="classeo_check_point.html">eoCheckPoint<Chrom></a> checkpoint(continuator);
|
|
00144
|
|
00145 <span class="comment">// monitor</span>
|
|
00146 <a class="code" href="classeo_stdout_monitor.html">eoStdoutMonitor</a> monitor;
|
|
00147 checkpoint.add(monitor);
|
|
00148
|
|
00149 <span class="comment">// statistics</span>
|
|
00150 <a class="code" href="classeo_best_fitness_stat.html">eoBestFitnessStat<Chrom></a> stats;
|
|
00151 checkpoint.add(stats);
|
|
00152 monitor.<a class="code" href="classeo_monitor.html#a1">add</a>(stats);
|
|
00153
|
|
00154 <span class="comment">// genetic algorithm</span>
|
|
00155 <a class="code" href="classeo_s_g_a.html">eoSGA<Chrom></a> sga(select,
|
|
00156 xover, xover_rate.<a class="code" href="classeo_value_param.html#a2">value</a>(),
|
|
00157 mutation, mut_rate.<a class="code" href="classeo_value_param.html#a2">value</a>(),
|
|
00158 evaluator,
|
|
00159 checkpoint);
|
|
00160
|
|
00161 sga(pop);
|
|
00162
|
|
00163 cout << <span class="stringliteral">"best: "</span> << *max_element(pop.begin(), pop.end()) << endl;
|
|
00164 }
|
|
00165
|
|
00166 <span class="comment">//-----------------------------------------------------------------------------</span>
|
|
00167
|
|
00168 <span class="comment">// Local Variables: </span>
|
|
00169 <span class="comment">// mode:C++</span>
|
|
00170 <span class="comment">// End:</span>
|
|
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Oct 19 05:06:40 2006 for EO by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
|
|
</body>
|
|
</html>
|