There is a newer version of the record available.

Published October 17, 2019 | Version 3.5.1
Software Open

casadi/casadi: 3.5.1

  • 1. Philips
  • 2. KU Leuven
  • 3. Robert Bosch GmbH Corporate Research
  • 4. JMG Robotics, dronecrew.com, Purdue University
  • 5. Stanford University
  • 6. Robovision
  • 7. IBM
  • 8. University of Freiburg
  • 9. INRIA-PARIS @willowsierra
  • 10. KISTERS Nederland B.V.

Description

Install

Grab a binary from the table (for MATLAB, use the newest compatible version below):

<table> <tr><th></th><th>Windows</th><th>Linux</th><th>Mac</th></tr> <tr> <th>Matlab</th> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-matlabR2016a-v3.5.1.zip">R2016a</a> or later,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-matlabR2014b-v3.5.1.zip">R2014b</a>,<br /> <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-matlabR2014a-v3.5.1.zip">R2014a</a>,<br /> <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-matlabR2013a-v3.5.1.zip">R2013a</a> or R2013b</td> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-matlabR2014b-v3.5.1.tar.gz">R2014b</a> or later,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-matlabR2014a-v3.5.1.tar.gz">R2014a</a></td> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-matlabR2015a-v3.5.1.tar.gz">R2015a</a> or later,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-matlabR2014b-v3.5.1.tar.gz">R2014b</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-matlabR2014a-v3.5.1.tar.gz">R2014a</a></td> </tr> <tr> <th>Octave</th> <td> 4.4.1 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-4.4.1-w32-v3.5.1.zip">32bit</a> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-4.4.1-w64-v3.5.1.zip">64bit</a>), <br /> 4.4.0 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-4.4.0-w32-v3.5.1.zip">32bit</a> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-4.4.0-w64-v3.5.1.zip">64bit</a>), <br /> 5.1.0 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-5.1.0-w32-v3.5.1.zip">32bit</a> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-octave-5.1.0-w64-v3.5.1.zip">64bit</a>)</td> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-octave-4.4.1-v3.5.1.tar.gz">4.4.1</a>, <br/><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-octave-4.2.2-v3.5.1.tar.gz">4.2.2</a>, <br/><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-octave-5.1.0-v3.5.1.tar.gz">5.1.0</a></td> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-octave-5.1.0-v3.5.1.tar.gz">5.1.0</a></td> </tr> <tr> <th rowspan="2">Python</th> <td>Py27 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py27-v3.5.1.zip">32bit</a><sup>*</sup> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py27-v3.5.1-64bit.zip">64bit</a><sup>*</sup>),<br /> Py35 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py35-v3.5.1.zip">32bit</a><sup>*</sup> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py35-v3.5.1-64bit.zip">64bit</a><sup>*</sup>),<br /> Py36 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py36-v3.5.1.zip">32bit</a><sup>*</sup> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py36-v3.5.1-64bit.zip">64bit</a><sup>*</sup>),<br /> Py37 (<a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py37-v3.5.1.zip">32bit</a><sup>*</sup> / <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-windows-py37-v3.5.1-64bit.zip">64bit</a><sup>*</sup>) </td> <td><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-py27-v3.5.1-64bit.tar.gz">Py27</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-py35-v3.5.1-64bit.tar.gz">Py35</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-py36-v3.5.1-64bit.tar.gz">Py36</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-linux-py37-v3.5.1-64bit.tar.gz">Py37</a></td> <td> <a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-py27-v3.5.1.tar.gz">Py27</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-py35-v3.5.1.tar.gz">Py35</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-py36-v3.5.1.tar.gz">Py36</a>,<br /><a href="https://github.com/casadi/casadi/releases/download/3.5.1/casadi-osx-py37-v3.5.1.tar.gz">Py37</a></td> </tr> <tr> <td colspan="3">or just <code>pip install casadi</code> (needs <code>pip -V</code>>=8.1)</td> </tr> </table>

(<sup>*</sup>) Check your Python console if you need 32bit or 64bit - bitness should be printed at startup.

Unzip in your home directory and adapt the path:

<table> <tr><th>Matlab/Octave</th><th>Python</th><tr> <tr><td> <pre> <code> addpath('<yourpath>/casadi-matlabR2014a-v3.5.1') import casadi.* x = MX.sym('x') disp(jacobian(sin(x),x)) </code> </pre> </td><td> <pre> <code> from sys import path path.append(r"<yourpath>/casadi-py27-v3.5.1") from casadi import * x = MX.sym("x") print(jacobian(sin(x),x)) </code> </pre> </td></tr> </table>

Get started with the example pack.

Troubleshooting Release notes CasADi Functions
  • CasADi Functions can be serialized now (#308).
f.save('f.casadi')            % Dump any CasADi Function to a file
f = Function.load('f.casadi') % Loads back in

This enables easy sharing of models/solver isntances beteen Matlab/Python/C++ cross-platform, and enables a form of parallelization.

  • You can now evaluate CasADi Functions from C without requiring code-generation. This makes it possible to embed CasADi computations in Fortran, Julia, FMI, ...
  • All CasADi Functions support timing information now (print_time, default true for QP and NLP solvers). Use record_time to make timings available through f.stats() without printing them.
  • map with reduce arguments now has an efficient implementation (no copying/repmat)
  • Low-overhead Callback eval support was changed to eval_buffer
  • FunctionInternal::finalize no longer takes options dict.
  • Options always_inline and never_inline were added
  • Options is_diff_in and is_diff_out were added
CasADi expressions
  • breaking: IM type is removed from public API (was used to represent integer sparse matrices). Use DM instead.
  • breaking: linspace(0,1,3) and linspace(0.0,1,3) now both return [0 0.5 1] instead of [0 0 1] for the former
  • MX supports slicing with MX now (symbolic indexing).
  • Issue #2364:
    • breaking: veccat of an empty list now returns 0-by-1 instead of 0-by-0.
    • jtimes output dimensions have changed when any of the arguments is empty.
    • NLP function object's 'lam_p' is now 0-by-1 in case of missing parameters.
Interpolation functionality
  • Support for parametric (=changeable only, but not differentiable) grid and/or coefficients for linear/spline interpolation
    • for interpolant, new constructors where added that takes dimensions instead of concrete vectors
  • Support for symbolic (differentiable) grid and coefficients for linear interpolation (set inline option to true).
Python specific
  • Overhead-less CasADi Function evaluation API added through Python memoryviews
  • Similar functionality in Callbacks
Matlab/Octave specific
  • breaking: a(:)=b now behaves like Matlab builtin matrices when a is a CasADi matrix. Before, only the first column of a would be touched by this statement. (#2363)
  • breaking: Fixed bug where MX constructor treated a numeric row vector as column vector. Now size(MX(ones(1,4))) returns (1,4) as expected. (#2366)
  • Can now use spy directly on DM,MX,SX
Opti
  • Opti supports conic problems now: Opti('conic')
  • One can now easily obtain a parametric solution as a CasADi Function from an Opti instance:
opti = Opti()
x = opti.variable()
y = opti.variable()
p = opti.parameter()

opti.minimize(y**2+sin(x-y-p)**2)
opti.subject_to(x+y>=1)

opti.solver(nlpsolver,nlpsolver_options)

F = opti.to_function("F",[x,p,opti.lam_g],[x,y])

r = F(0,0.1,0)

(3.5.1) Improved support for vertcatted inputs to to_function

  • Using Opti together with max_iter is more natural now: use solve_limited() to avoid exceptions to be raised when iterations or time runs out. No need to try/catch.
Code-generation
  • breaking: external now looks for a .dylib file, not .so
  • breaking: Codegen API has changes related to thread-local memory:
  • void* mem changed to int mem
  • alloc_mem, init_mem, free_mem have been purged. checkout and release replace them.
  int mem = checkout();
  eval(arg, res, iw, w, mem);
  release(mem);
  • Codegen 'CODEGEN_PREFIX' has been renamed to 'CASADI_CODEGEN_PREFIX'
  • QP solvers (QRQP, OSQP) and SqpMethod codegenerate now. This means that embedded MPC with CasADi is now more practical.
  • Runge-Kutta and Collocation Integrator objects can be inlined into code-generatable MX Function with the 'simplify' option.
    • (3.5.1) an important flaw was corrected that caused incorrect code for expression graphs with logical 'and' and 'or'.
    • (3.5.1) fixed regression for expression graphs containing inf/nan
Solvers
  • breaking: NLP solvers - bound_consistency, an option to post-process the primal and dual solution by projecting it on the bounds, introduced in 3.4, was changed to default off
  • Sundials was patched to support multi-threading
  • WORHP was bumped to v1.13
  • SNOPT was bumped to v7.7
  • SuperSCS (conic solver) was added
  • OSQP (QP solver) was added
  • CBC (LP solver) was added

  • breaking: SQP Method

    • regularize_margin option was added
    • regularize (bool) option was removed. To get the effect of regularize=true, specify convexify_strategy='regularize'. Other strategies include clipping eigenvalues.
    • line search was reverted from a custom designed thing, to standard textbook L1
  • CPLEX and Gurobi got support for sos constraints
  • Conic/qpsol interface extended for semidefinite programming and SOCP
    • Solvers supporting SOCP: Gurobi, SuperSCS, CPLEX
  • breaking: Newton Rootfinder now supports a line_search option (default true)
  • Rootfinder now throws an exception by default ('error_on_fail' option true) when failing to converge
Convenience tools
  • Debugging facilities:
    • Function options print_in/print_in print inputs/outputs when numerically evaluating a function
    • Function option dump_in/dump_out dumps to the file system
    • Function option dump dumps the function itself (loadable with Function.load)
  • DM.from_file and DM.to_file with a MatrixMarket and txt support
  • Helping interaction with codegen with main=true: Function.generate_in/Function.nz_from_in/Function.nz_to_in to help creating input text files.
  • Function.convert_in/Function.convert_out to switch between list and dictionary arguments/results
Binaries
  • (3.5.1) Mac binaries for Matlab was switched to a different build environemnt. The binaries now require High Sierra or above, and work on Catalina.

Files

casadi/casadi-3.5.1.zip

Files (4.6 MB)

Name Size Download all
md5:ba20eb58e210fec7fb389ce86d5ed78c
4.6 MB Preview Download

Additional details

Related works