IMPORTANT NOTE: As of March 1 2015, this (old) version of FORCES will NO LONGER BE OPERATIONAL.

Since its first conception in June 2012 as a demonstrator at the American Control Conference in Montreal, Canada, FORCES has undergone major changes and improvements that have led to FORCES Pro, the new version of the code generation system. Since this (old) version of FORCES is no longer maintained and we would like to deliver the best performance and user experience that shall be associated with the name FORCES, we kindly request all users to switch to the actively developed version FORCES Pro, which includes new methods such as gradient projection and alternating direction methods, new interfaces such as Python or direct Simulink support, important bug fixes and performance improvements, as well as professional support.

FORCES Pro is fully backward compatible, i.e. existing code generation scripts can be run without modification using FORCES Pro after downloading the new client.

Existing academic FORCES users from degree-granting institutions are entitled to apply for a free 1-year voucher. Send us an email to

What is it?

FORCES stands for Fast Optimization for Real-time Control on Embedded Systems and is a numerical optimization code generation framework for convex multistage problems. This problem class covers most Model Predictive Control (MPC) formulations as well as Moving Horizon Estimation (MHE) problems, but includes also spline optimization or portfolio optimization problems, for example.

FORCES generates library-free ANSI-C code that is several orders of magnitude faster and smaller than most other solvers. The generated code comes with a Matlab MEX interface in order to quickly assess the performance of the code. The C-module can be directly added to any existing embedded software project. Multiple solvers within one software project are supported.


The following features are currently provided by FORCES:

  • Code generation of primal-dual interior point methods
  • Support for convex linear programs (LPs)
  • Support for quadratic programs (QPs)
  • Support for quadratic constraints (QCQPs)
  • Support for parametric problems: basically all problem data can be defined as a parameter
  • Code generation independent of the problem size
  • Small code size
  • One of the fastest interior point codes for the considered problem class
  • Matlab MEX interface

Terms and Conditions

FORCES is a free service offered by the Automatic Control Laboratory at the Swiss Federal Institute of Technology in Zurich (ETHZ). In order to facilitate debugging and further development of FORCES, your requests will be logged to a database. In particular, also your numerical problem data will be stored.

The generated code is licensed under GPL 3.0. This means that using it is free of charge. If you re-distribute the code (for example in a software project, as part of a product or a device), your software stack also has to carry a GPL license, and you must retain all copyrights. See the specific terms of the GPL license on re-distribution.


FORCES has been written by Alexander Domahidi as part of academic research. It is provided AS IS, in particular there is no NO WARRANTIES with respect to the use of the software without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. The author shall not have ANY LIABILITY FOR ANY DAMAGE arising from the use of the software.


Details of the interior point method that FORCES implements are given in this paper (presented at the Control and Decisions Conference 2012 in Maui, HI, USA). If you find FORCES useful, please cite it as detailed in Citing FORCES.