Changes v3.1.0 to v3.2.0

jgillis edited this page Nov 30, 2017 · 16 revisions

New features

  • Introduced differentiable exponential matrix node expm (requires slicot)
  • Introduced differentiable N-dimensional lookup tables: interpolant with 'bspline' solver.

Bugs in the SUNDIALS interface fixed

CasADi 3.1 included a refactored support for ODE/DAE sensitivity analysis. While more efficient, this also exposed some bugs that have now been fixed in the CasADi 3.2 release, including:

  • A bug affecting second order sensitivity analysis using CVODES was fixed. Cf. #1924.
  • Segfault in IDAS Cf. #1911.

API changes

  • The if_else and conditional operations are now non-short-circuiting by default for both SX and MX. This means that if_else(c,x,y) is now equivalent to if_else(c,x,y,False) and not if_else(c,x,y,True) as before. Also note that if_else(c,x,y,True) is only supported for MX. Cf. #1968.
  • The functions Function::jacobian, Function::derivative and Function::hessian, which have had an internal character since CasADi 3.0, have been deprecated and will be removed in their current forms in the next release. The user is encouraged to work with expressions (e.g. J = jacobian(f,x) or Jv = jtimes(f,x,v) or [H,g] = hessian(f,x)) or use Function::factory (*). To allow a smooth transition, Function::jacobian and Function::hessian will be available as Function::jacobian_old and Function::hessian_old in this and next release. Cf. #1777.

(*) example in Matlab:

x = MX.sym('x')
y = x^2;
f = Function('f',{x},{y})
%J = f.jacobian(0,0) replacement:
J = Function('J',{x},{jacobian(y,x), y}) % alternative 1
J = f.factory('J',{'i0'},{'jac:o0:i0','o0'}) % alternative 2
%H = f.hessian(0,0) replacement:
[H,g] = hessian(y,x);
H = Function('H',{x},{H,g}) % alternative 1
H = f.factory('H',{'i0'},{'hess:o0:i0:i0','grad:o0:i0'}) % alternative 2

Improvements to C code generation

  • The generated code now follows stricter coding standards. It should now be possible to compile the code with the GCC flags -Wall -Werror. Cf. #1741.

Changes to the build system

  • The build system has been refactored and CasADi/C++ can be conveniently compiled with Visual Studio C++ on Windows. The installation now also includes CMake configure files, which makes it convenient to locate and use a CasADi installation in C++ code. Cf. #1982.
  • The logic for source builds have changed. Before, the build system would try to locate third-party packages on the system and compile and install the third-party interfaces if this was successful. Now, the logic is that third-party packages are not installed unless the user specifically indicates this e.g.-DWITH_IPOPT=ON`. Cf. #1989, #1988.
  • The default installation directories for the SWIG interfaces (for Python, Octave and MATLAB) has changed. It is now installed as subdirectories of the CMAKE_INSTALL_PREFIX location by default, but this can be changed by explicitly setting the CMake variables BIN_PREFIX, CMAKE_PREFIX, INCLUDE_PREFIX, LIB_PREFIX, MATLAB_PREFIX and PYTHON_PREFIX. A flat installation directory (without subdirectories) can be obtained by setting the WITH_SELFCONTAINED option. This is the default behavior on Windows. Cf. #1991, #1990

Changes to precompiled binaries

Python 2.6 (#1976), Python 3.6 (#1987) and Octave 4.2 (#2002, #2000) are now supported.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.