BLOM is a language of modeling dynamical nonlinear systems for optimization problems, especially MPC. - 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.
Current status - 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.
Typical workflow with BLOM - 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 To obtain the library and for further information, see the BLOM wiki. |

Software >