Limitations of the FORCES Code Generator

We hope to fix these limitations as soon as possible:

  • Initialization: We do not employ a phase I method for initialization (yet). Instead, we initialize the primal variables to 0, and set the slacks to the corresponding RHS of the inequalities. The Lagrange multipliers are chosen to satisfy the central path condition $s_i z_i = 1$. If the origin is a strictly feasible point for your problem, our initialization should work extremely well, and at a much lower computational cost than typical phase I methods. If the origin is not strictly feasible, the solver will still converge, but probably at a lower speed. See Solver settings to learn how to select the initialization method.
  • Support for special cases of multistage problems: For the time being, the FORCES code generator implements the basic method described in the paper, and exploits some of the block internal structure such as diagonal Hessians plus lower/upper bounds only. There is no support for a differentiation between inputs and states (sub-blocks) yet. This means that you will not quite get the same timings as in the paper. If the code runs too slowly for your application, please contact us!
  • Parametric QCQPs: For quadratic constraints (see details), the Hessian $Q$ cannot be defined as parameters. If this is a limitation for you, drop us an email - this is easily fixed.

Please let us know if you experience problems with FORCES: forces@ee.ethz.ch