Support for the following design phases:
Developing the model with an intuitive block diagram.
Forward simulation and validation of the model.
Automatic export of the optimization problem to a solver.
Developed to handle large scale, non trivial problems.
C++ or Matlab code generation.
Explicit closed-form evaluation of Jacobian and Hessian.
Proven with problems of tens of thousands variables.
Eliminates manual problem coding, eases maintenance and assures that the same model used for optimization and for simulation.
Supports discrete and continuous models.
For continuous model, supports Euler, trapezoidal and RK4 discretization (easily expandable).
Full vector support.
Model developing features:
Color coded constraint violations.
Polyblocks display the user defined function.
User defined port labeling.
Export to IPOPT and fmincon solvers (more to come).
Used in nonlinear MPC project with ~450 states and 30 time steps (about 30000 variables and similar number of constraints). Solution time of about 1 minute with IPOPT.
Create a model using Simulink and BLOM library.
Execute and validate the model against reference data.
Translate to optimization problem.
Export the problem to a solver: e.g. CreateIpoptCPP
The Functional block holds expression of the form f(x)/g(x).
The Constraint block marks variable as > 0 or < 0.
The continuous or discrete State block.
The Cost block, accumulates cost variables (future features: terminal cost, continuous time, norms over time, norms over vector elements).
The Input/External variable modifiers mark the control and external (time-varying predictions or parameters) variables.