Changes v3.0.0 to v3.1.0

jgillis edited this page Jan 5, 2017 · 18 revisions

Octave front-end

In addition to C++, Python and MATLAB, CasADi can now be used from Octave.

Python 3

Python 3 is now supported. The support first appeared in the minor release 3.0.1.

Syntax changes

  • CasADi 3.0 introduced the function qpsol for creating QP solver objects using either a low-level interface (specifying the matrix sparsities) or a high-level interface (specifying the objective and constraint expressions, just as as for NLPs). In CasADi 3.1, the function overload corresponding to low-level interface has been renamed conic to avoid ambiguity issues and to reflect a generalization of the internal classes. The high-level interface is called qpsol as before.
  • The Compiler class has been generalized and renamed Importer.

Refactored and updated interface to SUNDIALS

The SUNDIALS interface has been updated to the latest version, 2.6.1, and has undergone a major update. The updated interface should scale much better than before to larger dimension, thanks to improved support for (the automatic) sensitivity analysis. During the refactoring, some support was dropped, in particular the use of SUNDIALS' built-in direct linear solvers. The default linear solver is now CasADi's 'csparse' plugin (a direct sparse solver distributed with CasADi). To get a dense solver (previously the default option), you can e.g. use CasADi's 'lapacklu' plugin. Also note the improved just-in-time compilation support, see below.

Extended functionality

  • Just-in-compilation, to speed up numerical evaluation, is now more easily available. If you set the option jit to true for the NLP solver objects, the rootfinder objects or the integrators, then just-in-time compilation will be used for the internal auto-generated functions.
  • KNITRO now supports mixed-integer NLPs

Changed functionality

  • mapaccum implementation has been removed as AD primitive and replaced with an unrolled MX Function. A consequence is that it scales unfavourably with N. If you have code of the form step.mapaccum('map', 10000), you better replace it by a stack of smaller N: step.mapaccum('map', 100).mapaccum('map',100)

New interfaces

  • bonmin: A mixed integer NLP solver (included in binaries, no need for separate installation)
  • A modified version of blockSQP, an NLP solver with block structure exploitation (included in source/binaries)
  • ma27: A sparse direct linear solver for symmetric, not necessarily positive definite linear systems.
  • hpmpc: The fast MPC solver by Gianluca Frison (included in binaries, no need for separate installation)
  • slicot solver for Periodic Lyapunov Equations was ported from CasADi 2.4

Changes to the binaries

  • with_openmp flag enabled for all builds retracted for now; crashes reported
  • bumped the minimal OS version of debian builds to 14.04 LTS (was 12.04 LTS) A result of this is that the binaries do not run as-is on a 12.04 system. You can still make them run with:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install libstdc++6-4.7-dev
  • snopt: version 7.5-1.2 (June 2015). Build flags: with-c, with-64 (see build script)