OptimizerEvolutionary.h 839 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef OPTIMIZEREVOLUTIONARY_H
  2. #define OPTIMIZEREVOLUTIONARY_H
  3. #include "OptimizerBase.h"
  4. namespace mdd {
  5. class OptimizerEvolutionary : public OptimizerBase {
  6. protected:
  7. class Gene {
  8. public:
  9. json limit;
  10. json value;
  11. void mutate();
  12. static void combine(Gene gene1, Gene gene2);
  13. };
  14. class DNA {
  15. public:
  16. json code;
  17. void mutate();
  18. void combine();
  19. void applyDNA(std::vector<Gene>& genes);
  20. static DNA generate(const std::vector<Gene>& genes);
  21. };
  22. class Individuum {
  23. public:
  24. DNA dna;
  25. double fitness;
  26. };
  27. class Population {
  28. public:
  29. std::vector<Individuum> inivids:
  30. std::vector<std::shared_ptr<Population>> grow(int size);
  31. };
  32. std::vector<Gene> _genes
  33. Population _pops;
  34. public:
  35. OptimizerEvolutionary(std::shared_ptr<IModule> module);
  36. state update() override;
  37. };
  38. }
  39. #endif