Software developed at IfA
Software for Modeling
 HYSDEL (HYbrid Systems DEscription Language):
Software for modeling of hybrid systems.
 Highlevel modeling of MLD and hybrid systems
 Compilation into canonical form & simulation
 Code export to standard solvers for hybrid MPC


HYSDEL is a software tool for modeling of mixed logic dynamical (MLD) or hybrid systems, i.e. (switched) linear systems that contain logical inputs, states, outputs or other logical rules. HYSDEL efficiently translates a highlevel description of such systems into a canonical form suitable for optimization. The resulting HYSDEL model can be directly employed by optimization solvers for use in hybrid model predictive control.
Since its inception in 2003, HYSDEL has been used in many industrial projects and is one of the standard modeling tools for hybrid systems.

 Building RC Modeling Toolbox: Resistancecapacitance modeling tool of buildings for control.
 Generation of dynamic models for buildings
from construction, geometry, and building data
 Export of models for use in MPC
 A large part of the input data can be generated from EnergyPlus input data files


The Building ResistanceCapacitance Modeling (BRCM) Toolbox for Matlab facilitates the firstprinciples modeling of buildings for MPC. The Toolbox provides a means for the fast generation of (bi)linear resistancecapacitance type models from basic geometry, construction and building systems data. The tool also supports the generation of the corresponding potentially timevarying costs and constraints. The Toolbox is based on validated modeling principles.

Software for Predictive Control and Numerical Optimization
The following list gives an overview of the numerical optimization tools developed at IfA, in ascending order in terms of supported problem class and in descending order in terms of computational performance.
 MPT (MultiParametric Toolbox): A Matlab toolbox for parametric optimization, computational geometry and explicit model predictive control.
 Parametric optimization (LPs, QPs, LCPs, MILPs, MIQPs)
 Computational geometry on polyhedra
 Explicit model predictive control


MPT implements state of the art numerical solvers for solving parametric optimization problems, i.e. problems that can be presolved for all admissible values of the parameters, which results in a lookup table that admits a very efficient online implementation. The computational geometry engine of MPT has a collection of algorithms that operate with convex polyhedra and their unions very efficiently. The toolbox allows a convenient visualization of polyhedra, convex sets, and functions defined over polyhedra. MPT contains easy to use interfaces for modeling, control design, computation, analysis, and postprocessing of optimal controllers in an explicit form. The obtained solution can be exported as a stand alone lookup table to the C programming language and compiled on a target application.
MPT is one of the most popular toolboxes for parametric programming with more than 30,000 downloads to date.

 FiOrdOs (First Order Optimization Software)  Iterative gradient projection solvers for embedded systems.
 Primal and dual (fast) gradient projection methods
 Quadratic objectives and convex feasible sets
 Automatic preconditioning
 C code generation


When an explicit solution is not available or is too large to store in memory on an embedded platform, gradientbased methods can be both very fast and memory efficient if the problem is mildly conditioned, and the constraint sets are simple (e.g. lower and upper bounds, 2normballs etc.).
FiOrdOs is a Matlab toolbox for automated generation of C implementations of gradient projection methods. It considers the class of parametric convex programs with quadratic cost, which includes important embedded optimization use cases such as MPC. Additional toolbox features include optimal preconditioning and the automatic certification of the iteration count for a restricted set of problems. The generated Ccode can be compiled for any platform and can be made libraryfree. FiOrdOs also provides a tailored MEXinterface for calling generated solvers inside Matlab and Simulink library for rapid prototyping.

 FORCES (Fast Optimal Realtime Control on Embedded Systems)  Generation of standalone interiorpoint solvers for MPClike multistage problems.
 Primaldual interior point methods for MPC/MHE
 Efficient for multistage LPs, QPs, QCQPs
 Strong support for parametric dynamics
 C Code generation


Primaldual interior point methods deliver high performance independently of problem conditioning and the particular shape of the constraint set, and are therefore a viable alternative when gradient projection methods converge slowly.
FORCES is a code generation framework for convex multistage quadratically constrained quadratic programs (QCQPs), which covers most MPC formulations as well as Moving Horizon Estimation (MHE) problems, spline optimization or portfolio optimization problems, for example. FORCES generates tailored, libraryfree ANSIC implementations a of primaldual interior point method that is several orders of magnitude faster and smaller than most other interior point solvers. No memory manager is employed in the generated code, which can be immediately used on an embedded control system. The generated code comes with a Matlab MEX interface in order to quickly assess the performance of the code.

 ECOS (Embedded Conic Solver): Standalone software for convex second order cone programming.
 Interiorpoint method with infeasibility detection
 Sparse Problems (LPs, QPs, QCQPs, SOCPs)
 Interfaces to 11 languages/frameworks


In case the problem is not in multistage form, or has large but sparse matrices or secondorder cone constraints and in applications where feasibility dectection is an important feature, general primaldual interior point methods with sparse linear algebra are a powerful alternative.
ECOS is a standalone numerical software package for solving convex secondorder cone programs (SOCPs). It implements an efficient primaldual interior point method with homogeneous embedding for detecting infeasibility or unboundedness, and supports also sparse problems. It is entirely written in ANSI C, with a minimal footprint, and so can be run on many platforms including embedded systems. ECOS comes with interfaces to Matlab, Python, Java,
Julia,
Scala,
Breeze,
CVX,
CVXPY,
Yalmip and even JuliaOpt.

