#ifndef OPTIMIZERBASE_H #define OPTIMIZERBASE_H #include "IOptimizer.h" #include "exprtk.hpp" namespace mdd { //////////////////////////////////////////////////////////// // //Optimization is always minimization! // //////////////////////////////////////////////////////////// class OptimizerBase : public IOptimizer { protected: std::shared_ptr _module; std::vector> _inputs; std::vector _input_limits; std::vector> _outputs; std::vector _output_vals; exprtk::expression _func_expr; struct opt_state { state module_state = state::STATE_ERROR; double opt_value = 0; }; opt_state updateReader(); public: bool addModifier(std::string input_id, const json& limit) override; bool addReader(std::string output_id) override; bool changeModifier(std::string input_id, const json& limit) override; void removeModifier(std::string input_id) override; void removeReader(std::string output_id) override; bool setEvaluation(std::string func) override; //state update() override; }; } #endif