A new specialized class, called
optimization, in which the proposed Optimica-specific constructs are valid is supported by Optimica. This approach is consistent with the Modelica language, since there are already several other specialized classes, e.g.,
model. By introducing a new specialized class, it also becomes straightforward to check the validity of a program, since the Optimica-specific constructs are only valid inside an
optimization class. The
optimization class corresponds to an optimization problem, static or dynamic, as specified above. Apart from the Optimica-specific constructs, an
optimization class can also contain component and variable declarations, local classes, and equations.
It is not possible to declare components from
optimization classes in the current version of Optimica. Rather, the underlying assumption is that an
optimization class defines an optimization problem, that is solved off-line. An interesting extension would, however, be to allow for
optimization classes to be instantiated. With this extension, it would be possible to solve optimization problems, on-line, during simulation. A particularly interesting application of this feature is model predictive control, which is a control strategy that involves on-line solution of optimization problems during execution.
As a starting-point for the formulation of the optimization problem consider the
optimization DIMinTime DoubleIntegrator di; input Real u = di.u; end DIMinTime;
This class contains only one component representing the dynamic system model, but will be extended in the following to incorporate also the other elements of the optimization problem.