OptimizerBase.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef OPTIMIZERBASE_H
  2. #define OPTIMIZERBASE_H
  3. #include "IOptimizer.h"
  4. #include "exprtk.hpp"
  5. namespace mdd {
  6. ////////////////////////////////////////////////////////////
  7. //
  8. //Optimization is always minimization!
  9. //
  10. ////////////////////////////////////////////////////////////
  11. class OptimizerBase
  12. : public IOptimizer
  13. {
  14. protected:
  15. json _base_config;
  16. std::shared_ptr<IModule> _module;
  17. std::vector<std::shared_ptr<IInput>> _inputs;
  18. std::vector<std::shared_ptr<IOutput>> _outputs;
  19. std::vector<double> _output_vals;
  20. exprtk::expression<double> _func_expr;
  21. struct opt_state {
  22. state module_state = state::STATE_ERROR;
  23. double opt_value = 0;
  24. };
  25. opt_state updateOutputs();
  26. OptimizerBase(const std::string& base_config);
  27. bool configureChild(const json& config) override;
  28. public:
  29. bool connect(std::shared_ptr<IModule> module) override;
  30. void updateLayout();
  31. bool setEvaluation(std::string func) override;
  32. bool configure(const std::string& config) override;
  33. const std::string& getConfiguration() override;
  34. //virtual std::string getGeneratorID() = 0;
  35. void load(const json& j);
  36. json dump();
  37. json getIdentifier() override;
  38. //state update() override;
  39. };
  40. }
  41. #endif