1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #pragma once
- #include "IOptimizer.h"
- #include "exprtk.hpp"
- namespace mdd {
- ////////////////////////////////////////////////////////////
- //
- //Optimization is always minimization!
- //
- ////////////////////////////////////////////////////////////
- class OptimizerBase
- : public IOptimizer
- {
- protected:
- json _base_config;
- std::string key;
- const std::string type = "optimizer";
- std::shared_ptr<IModule> _module;
- std::vector<std::shared_ptr<IInput>> _inputs;
- std::vector<std::shared_ptr<IOutput>> _outputs;
- std::vector<double> _output_vals;
- exprtk::expression<double> _func_expr;
- std::function<json(const json&)> _callback;
- struct opt_state {
- state module_state = state::STATE_ERROR;
- double opt_value = 0;
- };
- opt_state updateOutputs();
- OptimizerBase(const std::string& base_config = "{}");
- bool configureChild(const json& config) override;
- public:
- bool connect(std::shared_ptr<IModule> module) override;
- void updateLayout();
- bool setEvaluation(std::string func) override;
- bool configure(const json& config) override;
- const json& getConfiguration() override;
- //virtual std::string getGeneratorID() = 0;
- void load(const json& j);
- json dump();
- json getIdentifier() override;
- void attachCallback(std::function<json(const json&)> callback) override;
- //state update() override;
- };
- }
|