• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/ECF/main.cpp

00001 #include "ECF.h"
00002 
00003 // Za svaki primjer je potrebno:
00004 // a) definirati odgovarajuci EvaluateOp objekt koji se primjenjuje za evaluaciju jedinke
00005 // b) definirati genotip (po zelji i druge parametre) u konf fajlu
00006 //
00007 // Svaki primjer ima posebnu funkciju main() - otkomentirati
00008 
00009 
00010 // 0. primjer: kako ispitati fitnes jedinke (spremljene u ind.txt)
00011 
00012 
00013 
00014 
00015 
00016 // 1. primjer: GA OneMax problem
00017 /*
00018 #include "examples/GAonemax/OneMaxEvalOp.h"
00019 int main(int argc, char **argv)
00020 {
00021     argc = 2;   // hard coded za lakse isprobavanje :)
00022     argv[1] = "./examples/GAOneMax/parametri.txt";
00023 
00024     StateP state (new State);
00025 
00026     //state->setEvalOp(static_cast<EvaluateOpP> (new OneMaxEvalOp));
00027     state->setEvalOp(new OneMaxEvalOp);
00028 
00029     state->initialize(argc, argv);
00030     state->run();
00031 
00032     return 0;
00033 }
00034 */
00035 
00036 
00037 
00038 
00039 
00040 // 2. primjer: GA minimizacija funkcije
00041 
00042 #include "examples/GAFunctionMin/FunctionMinEvalOp.h"
00043 int main(int argc, char **argv)
00044 {
00045 //  argc = 2;
00046 //  argv[1] = "./examples/GAFunctionMin/parametri.txt";
00047 
00048     // PSO algoritam:
00049     //argv[1] = "./examples/GAFunctionMin/parameters_DE.txt";
00050 
00051     StateP state (new State);
00052     state->setEvalOp(new FunctionMinEvalOp);
00053 
00054     state->initialize(argc, argv);
00055     state->run();
00056 
00057     return 0;
00058 
00059 //
00060 //  ispis populacije u txt fajl, za potrebe landscape analysis
00061 //
00062     ofstream fajl("popis.txt");
00063     for(uint i = 0; i < state->getPopulation()->getLocalDeme()->getSize(); i++) {
00064         IndividualP ind = state->getPopulation()->getLocalDeme()->at(i);
00065         fajl << ind->fitness->getValue() << "\t";
00066         FloatingPointP fp = boost::static_pointer_cast<FloatingPoint::FloatingPoint> (ind->getGenotype());
00067         for(uint dim = 0; dim < fp->realValue.size(); dim++)
00068             fajl << fp->realValue[dim] << "\t";
00069         fp = boost::static_pointer_cast<FloatingPoint::FloatingPoint> (ind->getGenotype(2));
00070         fajl << fp->realValue[0];
00071         fajl << "\n";
00072     }
00073 
00074     return 0;
00075 }
00076 
00077 
00078 
00079 
00080 
00081 
00082 namespace Tree {
00083 
00084 // primjer tipa podataka
00085 struct my_type
00086 {
00087     double v;
00088     bool b;
00089 };
00090 
00091 // terminal za doticni tip
00092 class MyTerminal : public Primitives::Primitive
00093 {
00094 public:
00095     my_type value_;
00096 
00097     MyTerminal()
00098     {
00099         nArguments_ = 0;
00100     }
00101     void execute(void* result, Tree& tree)
00102     {
00103         my_type& res = *(my_type*)result;
00104         res = value_;
00105     }
00106     void setValue(void* value)
00107     {
00108         value_ = *(my_type*)value;
00109     }
00110     ~MyTerminal()
00111     {   }
00112 };
00113 
00114 // primjer funkcije za korisnicki tip podataka
00115 class MyFunc : public Primitives::Primitive
00116 {
00117 public:
00118     MyFunc()
00119     {
00120         nArguments_ = 2;
00121         name_ = "func";
00122     }
00123     void execute(void* result, Tree& tree)
00124     {
00125         my_type first, second;
00126         my_type& func = *(my_type*)result;
00127 
00128         getNextArgument(&first, tree);
00129         getNextArgument(&second, tree);
00130         
00131         func.b = first.b && second.b;
00132         func.v = first.v + second.v;
00133     }
00134     ~MyFunc()
00135     {   }
00136 };
00137 
00138 }
00139 
00140 
00141 
00142 // 3. primjer: GP simbolicka regresija
00143 /*
00144 #include "examples/GPSymbReg/SymbRegEvalOp.h"
00145 #include "examples/GPSymbReg/zbr.h"
00146 int main(int argc, char **argv)
00147 {
00148 //  argc = 2;
00149 //  argv[1] = "./examples/GPSymbReg/parametri.txt";
00150 
00151     StateP state = static_cast<StateP> (new State);
00152 
00153     state->setEvalOp(static_cast<EvaluateOpP> (new SymbRegEvalOp));
00154 
00155     // primjer: dodavanje korisnickog operatora
00156 //  MyOpP myOp = (MyOpP) (new MyOp);
00157 //  state->addOperator(myOp);
00158 
00159     // primjer: dodavanje korisnickog algoritma
00160 //  MyAlgP myAlg = (MyAlgP) (new MyAlg);
00161 //  state->addAlgorithm(myAlg);
00162 
00163     // primjer: dodavanje korisnickog genotipa
00164 //  MyGenotypeP myGenotype = (MyGenotypeP) (new MyGenotype);
00165 //  state->addGenotype(myGenotype);
00166 
00167     // primjer: dodavanje korisnicke funkcije za stablo
00168     TreeP tree = (TreeP) new Tree::Tree;
00169     Tree::PrimitiveP zbr = (Tree::PrimitiveP) new Tree::Ad;
00170     tree->addFunction(zbr);
00171 
00172 Tree::PrimitiveP myFunc = (Tree::PrimitiveP) new Tree::MyFunc;
00173 tree->addFunction(myFunc);
00174 
00175 Tree::PrimitiveP myTerm = (Tree::PrimitiveP) new Tree::MyTerminal;
00176 myTerm->setName("term");
00177 tree->addTerminal(myTerm);
00178 
00179 
00180     state->addGenotype(tree);
00181 
00182     //for(int i = 0; i < 100; i++) {
00183         state->initialize(argc, argv);
00184         state->run();
00185     //}
00186 
00187     //std::vector<IndividualP> vec = state->getPopulation()->hof_->getBest();
00188     //IndividualP ind = vec[0];
00189     //state->getAlgorithm()->evaluate(ind);
00190     //XMLNode out;
00191     //ind->write(out);
00192     //std::cout << out.createXMLString() << std::endl;
00193 
00194     std::vector<IndividualP> vec = state->getPopulation()->getHof()->getBest();
00195     IndividualP ind = vec[0];
00196     XMLNode xml2 = XMLNode::parseString("<Individual size=""1"" gen=""77""><FitnessMin value=""4.26326e-14""/><Tree size=""36"">+ + * * X * X X - * X X + X X + sin X * X * X X / - * X X X / / X X + X X </Tree></Individual>", "Individual");
00197     ind->read(xml2);
00198     state->getAlgorithm()->evaluate(ind);
00199     std::cout << ind->toString();
00200 
00201     return 0;
00202 }
00203 */
00204 
00205 
00206 //4. primjer: GA problem trgovackog putnika, 29 gradova
00207 /*
00208 #include "examples/GATSP/TSPEvalOp.h"
00209 int main(int argc, char **argv)
00210 {
00211 //  argc = 2;
00212 //  argv[1] = "./examples/GATSP/parameters.txt";
00213 
00214     StateP state = static_cast<StateP> (new State);
00215 
00216     state->setEvalOp(static_cast<EvaluateOpP> (new TSPEvalOp));
00217 
00218     state->initialize(argc, argv);
00219     //state->getFitnessObject();
00220 
00221     state->run();
00222 
00223     return 0;
00224 }
00225 */
00226 
00227 
00228 
00229 //5. primjer: GA problem aproksimacije funkcije
00230 /*
00231 #include "examples/GAApprox/ApproxEvalOp.h"
00232 int main(int argc, char **argv)
00233 {
00234 //  argc = 2;
00235 //  argv[1] = "./examples/GAApprox/parameters.txt";
00236 
00237     StateP state(new State);
00238 
00239     state->setEvalOp(EvaluateOpP (new AproxEvalOp));
00240 
00241     state->initialize(argc, argv);
00242     state->run();
00243 
00244     return 0;
00245 }
00246 */
00247 
00248 
00249 
00250 //6. primjer: GP evolucija pravila rasporedjivanja
00251 /*
00252 #include "examples/GPScheduling/SchedulingEvalOp.h"
00253 int main(int argc, char **argv)
00254 {
00255     argc = 2;
00256     //argv[1] = "./examples/GPScheduling/parameters.txt";
00257     argv[1] = "./parameters.txt";
00258 
00259     StateP state = static_cast<StateP> (new State);
00260 
00261     state->setEvalOp(static_cast<EvaluateOpP> (new SchedulingEvalOp));
00262 
00263     state->initialize(argc, argv);
00264     state->run();
00265 
00266 //  XMLNode xInd = XMLNode::parseFile("./ind.txt", "Individual");
00267 //  IndividualP ind = (IndividualP) new Individual(state);
00268 //  ind->read(xInd);
00269 //  state->getAlgorithm()->evaluate(ind);
00270 //  std::cout << ind->toString();
00271 
00272     return 0;
00273 }
00274 */
00275 
00276 
00277 //7. primjer: XCS
00278 /*
00279 #include "examples/XCSmux/MuxEvalOp.h"
00280 #include "examples/XCSmaze/SingleObjMazeEnv.h"
00281 #include "examples/XCSmaze/SeqObjMazeEnv.h"
00282 #include "examples/XCSmaze/TwoObjMazeEnv.h"
00283 #include "examples/XCSmaze/ThreeObjMazeEnv.h"
00284 
00285 int main(int argc, char **argv)
00286 {
00287     argc = 2;
00288     StateP state = static_cast<StateP> (new State);
00289     MazeEnvP maze;
00290 
00291     //Multistep:
00292 
00293     //  - sigle-objective maze:
00294         //argv[1] = "examples/XCSmaze/single-obj params.txt";
00295         //maze = static_cast<MazeEnvP> (new SingleObjMazeEnv(state));
00296         //maze->setMazeFile("examples/XCSmaze/Environments/single-objective/Maze1.txt");
00297 
00298     //  - multi-objective maze:
00299         //argv[1] = "examples/XCSmaze/seq-obj params.txt";
00300         //maze = static_cast<MazeEnvP> (new SeqObjMazeEnv(state));
00301         //maze->setMazeFile("examples/XCSmaze/Environments/multi-objective/Maze1k.txt");
00302     
00303         argv[1] = "examples/XCSmaze/three-obj params.txt";
00304         maze = static_cast<MazeEnvP> (new ThreeObjMazeEnv(state,0));
00305         maze->setMazeFile("examples/XCSmaze/Environments/multi-objective/Maze1em.txt");
00306     
00307     maze->setResultsFile("examples/XCSmaze/Maze1k results.txt");
00308     state->setEvalOp(maze);
00309     
00310     //Singlestep:
00311 
00312     //  - 6-multiplexor problem:
00313     //  argv[1] = "./examples/XCSmux/parametri.txt";
00314     //  state->setEvalOp(static_cast<EvaluateOpP> (new MuxEvalOp(state)));
00315 
00316     state->initialize(argc, argv);
00317 
00318     state->run();
00319 
00320     int a;
00321     cin >> a;
00322     return 0;
00323 }
00324 */
00325 
00326 
00327 
00328 //8. primjer: Kartezijski GP - feedforward
00329 /*
00330 #include "examples/CGPFeedForward/FeedForwardEvalOp.h"
00331 #include "examples/CGPFeedForward/CGPEvalOp.h"
00332 #include "cartesian/Cartesian.h"
00333 using namespace cart;
00334 
00335 int main(int argc, char **argv)
00336 {
00337     argc = 2;
00338     argv[1] = "./examples/CGPFeedForward/parameters.txt";
00339 
00340     StateP state (new State);
00341 
00342     CartesianP cart (new Cartesian);
00343 
00344     state->addGenotype(cart);
00345 
00346     state->setEvalOp(new FunctionMinEvalOp);
00347 
00348 
00349     // izabrati koji tip
00350     //state->setEvalOp(new cart::FeedForwardEvalOpInt);
00351     //state->setEvalOp(static_cast<EvaluateOpP> (new cart::FeedForwardEvalOpDouble));
00352     //state->setEvalOp(static_cast<EvaluateOpP> (new cart::CircuitEvalOpUint));
00353 
00354     state->initialize(argc, argv);
00355     state->run();
00356 
00357     return 0;
00358 }
00359 */

Generated on Tue Nov 4 2014 13:04:31 for ECF by  doxygen 1.7.1