OptimizerBase.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  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 : public IOptimizer {
  12. protected:
  13. std::shared_ptr<IModule> _module;
  14. std::vector<std::shared_ptr<IInput>> _inputs;
  15. std::vector<json> _input_limits;
  16. std::vector<std::shared_ptr<IOutput>> _outputs;
  17. std::vector<double> _output_vals;
  18. exprtk::expression<double> _func_expr;
  19. struct opt_state {
  20. state module_state = state::STATE_ERROR;
  21. double opt_value = 0;
  22. };
  23. opt_state updateReader();
  24. public:
  25. bool addModifier(std::string input_id, const json& limit) override;
  26. bool addReader(std::string output_id) override;
  27. bool changeModifier(std::string input_id, const json& limit) override;
  28. void removeModifier(std::string input_id) override;
  29. void removeReader(std::string output_id) override;
  30. bool setEvaluation(std::string func) override;
  31. //state update() override;
  32. };
  33. }
  34. #endif