OptimizerBase.h 800 B

1234567891011121314151617181920212223242526272829303132
  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<std::shared_ptr<IOutput>> _outputs;
  16. std::vector<double> _output_vals;
  17. exprtk::expression<double> _func_expr;
  18. struct opt_state {
  19. state module_state = state::STATE_ERROR;
  20. double opt_value = 0;
  21. };
  22. opt_state updateOutputs();
  23. public:
  24. void updateLayout();
  25. bool setEvaluation(std::string func) override;
  26. //state update() override;
  27. };
  28. }
  29. #endif