Skip to content

Releases: GepocUS/Spcies

v0.3.11

21 Mar 13:03
Compare
Choose a tag to compare

This release brings a new version of the semiband ADMM-based solver for MPCT (formulation = 'MPCT', method = 'ADMM', submethod = 'semiband') that includes the option to use soft-constraints and to consider output constraints. These features are enabled though options.soft_constraints and options.constrained_output.
Details of this new variant of the solver can be found at:

Gracia, V., Krupa, P., Limon, D., & Alamo, T. (2024). Implementation of soft-constrained MPC for Tracking using its semi-banded problem structure. arXiv preprint arXiv:2403.04601.

Additionally, this release solves a bug where random numbers were some times allocated to the computation time variables when options.timing == false. Computation times should now be strictly set to 0.0 when not measured.

v0.3.10

14 Feb 16:16
Compare
Choose a tag to compare

This new release brings several major improvements and features (and some small fixes).

Main changes

  • Quality of life changes:
    • Function spcies() is now the main entry point of the toolbox. It can be used to access all its features. For example, spcies('gen', [args]) is now the recommended way of generating MPC solvers (see the basic tutorial).
    • The toolbox now has a single options argument, instead of distinguishing between options and solver_options. Additionally, options are now internally checked and handled better. The deprecated solver_options can still be used, but it throws a warning indicating that it is deprecated.
    • Some argument names have been changed to be more intuitive: 'type' is now 'formulation', and 'subclass' is now 'submethod'. The deprecated names can still be used, although they throw a warning indicating that they are deprecated.
  • Added documentation feature to the toolbox, which can be accessed using spcies('help') (for the initial help page) or spcies('help', 'topic_name') for documentation about a particular topic. The documentation is currently incomplete, with the objective of having a fully documented toolbox in some future release (no promises as to when).
  • New ADMM-based solver for the MPCT formulation that takes advantage of the semi-banded structure of the Hessian of its optimization problem. To generate this solver use: 'formulation' = 'MPCT', 'method'= 'ADMM' and 'submethod' = 'semiband'.
  • All solvers now measure computation times. Additionally, computation times are now measured by default, but can be suppressed by setting the option timing to false. Computation times are divided into update_time, solve_time, polish_time and run_time. See spcies('help', 'timing') for more information.

Minor changes

  • Some minor fixed and improvements in MPCT solvers. In particular, the EADMM solver for MPCT can now accept non-diagonal cost function matrices.
  • Fixed small bug in the ADMM solver for the ellipHMPC formulation: harmonic artificial reference is now set properly then using the mex interface.
  • Updated the tutorials and the README to reflect the new changes.
  • Fixed bug on macOS: generated_solvers/ should now properly reset when using spcies('clear').
  • Refactored file names and directory names to avoid clashed with other Matlab toolboxes or user-code. For example, utils/ is now sp_utils/.
  • For developers: added a new snippet feature (see #47). Snippers are located in the folder snippets/ and can be inserted into code by using spcies_snippet_snipName();, where snipName is the name of some file in the snippets/ folder.
  • For developers: added guidelines and help in documentation. See spcies('help', 'develop').

v0.3.9

27 Oct 16:27
Compare
Choose a tag to compare

Added the ellipHMPC solver for the HMPC for tracking harmonic references.

v0.3.8

14 Sep 17:02
Compare
Choose a tag to compare
  • Added new features and improvements to the equMPC and laxMPC solvers:
    • Added "time-varying" solvers, i.e., solvers which allow online changes to the MPC ingredients (prediction model, cost function matrices, etc.). The update procedure exploits the sparse structure of the solver ingredients, leading to update times in the range of a few microseconds on an average PC.
    • Solvers now output computation times (update time, solve time, run time, etc.).
  • Added new tutorials explaining the different aspects and features of the toolbox, including how to use the newly added "time-varying" solvers.

v0.3.7

15 Feb 18:03
Compare
Choose a tag to compare

Improved the ADMM solver for the HMPC formulation. It is now much quicker and efficient.

v0.3.6

24 Nov 08:35
Compare
Choose a tag to compare
  • Included solvers for the HMPC formulation.
  • Mayor speed improvements on the code generation.

v0.3.5

22 Nov 17:45
Compare
Choose a tag to compare

Added an ADMM-based solver for the ellipMPC formulation in which the terminal quadratic constraint is imposed by means of a second order cone constraint.

v0.3.4

05 Nov 08:18
Compare
Choose a tag to compare
  • laxMPC and ellipMPC solvers now accept varying bounds.
  • Created folders for personal solvers and functions.
  • Minor bug fixes.

v0.3.3

08 Sep 12:42
Compare
Choose a tag to compare
  • Improvements on the Matlab non-sparse solvers:
    - All solvers now have a Matlab counterpart.
    - They generate historics with information of the iterates.
    - Cleaner, more well documented and standardized code.
  • Added and improved the tutorials and examples.
  • Quality of life improvements:
    - Added functions to test the solvers.
    - Default options are handled better.
    - Added spcies.m function, which can be used for various purposes.
    - Easier installation using spcies.m.
  • Some efficiency improvements of the sparse solvers.
  • Numerous bug fixes.

Version 0.3.0

21 Apr 13:23
Compare
Choose a tag to compare

This version made mayor changes to the inner workings of the toolbox and the names of the functions.
Additionally, some quality-of-life improvements have been made, such as the addition of a default folder where the solvers are generated.
The solvers themselves have barely been touched, with the exception of some bug fixes and improvements to the default precision with which the variables are defined.
The new version number is mostly to indicate that this version is not backwards compatible with v0.2.0.