31 [[nodiscard]]
virtual std::string
getType()
const = 0;
Abstract base for every control element (P, I, D, PT1, ...).
virtual int optimizeGetNumParameters() const =0
Number of tunable parameters this element consumes.
virtual ~ControlElement()=default
virtual double calculate(double u, double dt)=0
Advance one sample: feed input u, return output.
virtual std::string getType() const =0
Short type tag, e.g. "P", "PT1", "ControlLoop".
virtual void initialize(double dt)=0
Reset internal state for a simulation run at sample time dt.
virtual void optimizeSetParameters(const std::vector< double > ¶ms, int startIdx)=0
Load parameters from params starting at startIdx.
virtual double getLowestTimeConstant() const =0
Lowest time constant of the element, or -1 if it has none.