Skip to content

Releases: nicolapiccinelli/libmpc

0.7.0

03 Jan 16:49
Compare
Choose a tag to compare

Added

  • Added logger verbosity management via environment variable MPCXX_LOG_LEVEL_OVERRIDE
  • In Python bindings added the possibility to set the optimization problem parameters, to retrieve the optimal sequence and to set horizon slice
  • Reduced memory footprint in the non-linear mpc
  • Added Python script for benchmarking the non-linear and linear mpc

Changed

  • Pybind11 dependency updated to version 2.12.0 to support numpy 2
  • When an element of the optimization vector from the previous iteration violates the bounds, it is overwritten with the value in the middle of the bounds
  • Breaking change: The enum Logger::log_level has been renamed to Logger::LogLevel
  • Breaking change: The enum Logger::log_type has been renamed to Logger::LogType
  • Breaking change: The enum constraints_type has been renamed to ConstraintsType

Fixed

  • Fixed IMPC::isControlHorizonSliceValid() and IMPC::isPredictionHorizonSliceValid(); before was not possible to set a slice where the start+end was bigger than the horizon
  • Fixed possibly wrong initialization when warm start is disabled. The optimization vector was initialized with the first previous solution, which, however, might not respect some of the boundaries
  • Fixed undefined behaviour in case Tineq and/or Teq were set to zero, now the user-defined constraints are not evaluated in such a case

0.6.2

31 Jul 15:55
Compare
Choose a tag to compare

Added

  • The Result struct now contains the feasibility of the solution vector in the is_feasible field

Fixed

  • Version 0.6 and 0.6.1 were affected by a bug preventing the proper computation of the Jacobian of the user-defined inequality constraints. This bug has been fixed in this version

0.6.1

07 Jun 15:44
Compare
Choose a tag to compare

Fixed

  • Fixed the horizon slicing for the non-linear mpc. The horizon slicing was not working properly when set via the HorizonSlice struct

0.6.0

06 Jun 16:53
Compare
Choose a tag to compare

Added

  • Added support for input and state bound constraints in the non-linear mpc. These constraints are actually restricing the search space of the optimization problem
    and are obeyed by the solver also during intermediate steps of the optimization problem
  • Added warm start support in the non-linear mpc. The warm start is disabled by default and can be enabled using the parameter enable_warm_start

Changed

  • Breaking change: The stopping criterias in the non-linear mpc parameters are now disabled by default. The only enabled criteria is the maximum number of iterations
  • Breaking change: The optimal sequence returned by the linear and non-linear mpc is now containing also the initial condition
  • The Jacobians of the constraints in the non-linear mpc are now estimated using the trapeizoial rule
  • The functions to set the bound constraints now uses a dedicated structure to define the horizon span
  • Breaking change: The functions setConstraints are now split in setStateBounds, setInputBounds and setOutputBounds
  • Breaking change: The fields retcode and status_msg in the result struct of the non-linear mpc are now solver_status and solver_status_msg respectively

0.5.0

17 May 17:01
Compare
Choose a tag to compare

Added

  • Python bindings for the library using pybind11 (pympcxx)
  • The result struct now contains a string to describe the status of the optimization problem
  • Added new parameters for the nonlinear mpc (time_limit, absolute_ftol, absolute_xtol)

Changed

  • Breaking change: some of the APIs have been refactored. New APIs: setDiscretizationSamplingTime, setExogenousInputs, optimize
    substitute setContinuosTimeModel, setExogenuosInputs, step
  • Improved error handling in the NLopt interface

Fixed

  • The set of the discretization sampling time was not working properly in the non-linear mpc

0.4.2

14 Feb 16:49
Compare
Choose a tag to compare

Added

  • Added examples to show how to use the library

Fixed

  • Fixed the cmake target configuration to properly target the library

0.4.1

30 Jan 00:15
Compare
Choose a tag to compare

Changed

  • Removed coloured output for the integrated logger
  • Configure script now can be used to avoid the installation of the test suite

Fixed

  • Fixed dockerfile to use the 0.6.3 version of the OSQP solver

0.4.0

20 May 09:37
Compare
Choose a tag to compare

Added

  • Added profiler to measure statistics of the optimization problem
  • In linear mpc is now possible to override the warm start of the optimization problem
  • Added support for OSQP warm start in linear mpc

Changed

  • The linear mpc parameters now allows enabling the warm start of the optimization problem
  • The mpc result structure now contains a status field to check if the optimization problem has been solved
  • CMakelists.txt has been refactored to export the INCLUDE_DIRS variable

0.3.1

06 Mar 19:19
Compare
Choose a tag to compare

Fixed

  • The computation of the scalar multipler was not correct

0.3.0

04 Mar 15:56
Compare
Choose a tag to compare

Added

  • Added new api in linear mpc to add a scalar constraints

Changed

  • In linear mpc the last input command is now used to initialize the optimal control problem

Fixed

  • The default value for the box constraints in linear mpc are now set -inf and inf
  • In linear mpc optimal input sequence was erroneously the delta input sequence