GepocUS / Spcies

Suite of Predictive Controllers for Industrial Embedded Systems. A Matlab toolbox for automatic code generation of solvers for MPC controllers.
Apache License 2.0
14 stars 2 forks source link

Add posibility of solution refinement using a second value of the penalty parameter #11

Open pablokrupa opened 3 years ago

pablokrupa commented 3 years ago

Currently, the value of rho cannot change online. There is no current intent of changing this, since it would require recomputing many of the matrices of the problems (although it may become a possibility in the distant future).

However, something that could be added to improve the performance of the algorithm is to allow for the use of two values of rho: a large initial value, so that the algorithm converges quickly to a proximity of the optimal solution (for a given tolerance), an then a small value, so that it converges quickly to a very close point to the optimal solution (for another given tolerance).

This could be very useful because, in general, we find that the algorithm converges very quickly for reasonably large values of the penalty parameter to relatively large tolerances (1e-3 or so) if the initial point is far away from the optimal solution. However, it then takes a long time to converge to smaller tolerances (1e-5, for instance). In contrast, a small penalty parameter converges slowly to the optimal solution if the initial point is very far away, but very quickly if it is very close.

The approach proposed here would require defining two sets of variables: one for the initial penalty parameter and one for the "refinement" penalty parameter. Then, pointers would have to be used to refer to each of these sets of variables.