FORCES Pro generates a tailored algorithm to compute optimal solutions to the given problem. The algorithm is generated as C code that is independent of external libraries. As a result, it can be deployed on any hardware platform for which a C compiler is available, e.g. desktop computers, ARM® microprocessors, Speedgoat or dSPACE® target computers. By exploiting the problem structure, the tailored algorithm performs orders of magnitude faster than standard optimization software packages. Optimization problem classes that can be handled include LPs, QPs, QCQPs, NLPs, SOCPs, and binary decision problems.
FORCES Pro can be interfaced from MATLAB®, Simulink®, and Python®. The optimization problem is described in full detail inside a script or by using a high-level Simulink block. The problem description is communicated to the FORCES Pro server which generates the tailored solution algorithm.
Inside a MATLAB script, FORCES Pro users can describe a decision problem as a MATLAB structure with specified fields (constructor available). Nonlinear and/or non-convex objective functions and constraints can be implemented as MATLAB or external C functions. The former are provided using MATLAB function handles, the latter by indicating their filesystem path. The final structure describing the entire decision problem is communicated to the FORCES Pro server application which integrates C code for a tailored solution algorithm. Depending on the user license, the source code or a compiled binary for specified target hardware (e.g. ARM microprocessor or x86) is returned to the user.
The Simulink interface serves as an easy-to-use intermediate layer. The optimization problem is described by filling out the appropriate fields in the Simulink block mask. The FORCES Pro Simulink block can be intuitively connected with the model of the surrounding system. The Simulink model, including the optimal decision algorithm, can then be simulated on the host PC or deployed on any embedded target using Simulink code generation. Users can also deploy their algorithm code to Speedgoat target hardware using the Forces Pro integration Simulink Real-Time. The integration with Simulink Real-Time and Speedgoat hardware is particularly useful for users who want to deploy larger Simulink models, which contain Forces Pro control algorithms, onto embedded hardware.