Hi all,
We're happy to announce the release of CasADi 3.4!
CasADi 3.4 introduces support for local sensitivity analysis for nonlinear programming. This allows you to calculate the sensitivities of an NLP solution, via sensitivity equations automatically derived by using the implicit function theorem on the KKT conditions. Both forward and reverse mode of algorithmic differentiation and higher order derivatives (in principle to any order) are supported. One application of this support is calculation of confidence intervals and covariance matrices in parameter estimation problems. We are currently preparing example code to demonstrate this functionality and will post it to the CasADi forum when ready.
NLP sensitivity analysis, the way it's implemented in CasADi, requires knowledge of the active constraints at the solution. This is often not available, especially when using an interior point QP or NLP solver. For this reason, we have started work on an active-set QP solver in CasADi, that will allow the active of an NLP or QP solution to be determined. This is still work in progress.
Another new feature is the support for parallel maps via threads. Previously, this has only been possible via OpenMP, which has proven difficult to distribute with the downloadable CasADi binaries. Since the thread approach is more portable, we are now able to offer parallelization support without custom installation.
There is also an important update regarding the linear solvers in CasADi: CasADi 3.3 introduced support for two sparse direct linear solvers relying based on sparse direct QR factorization and sparse direct LDL factorization, respectively. In the release notes and in the code, it was not made clear enough that part of these routines could be considered derivative works of CSparse and LDL, respectively, both under copyright of Tim Davis. In the current release, routines derived from CSparse and LDL are clearly marked as such and to be considered derivative work under LGPL. All these routines reside inside the casadi::Sparsity class. Since CasADi, CSparse and LDL all have the same open-source license (LGPL), this will not introduce any additional restrictions for users. Since C code generated from CasADi is not LGPL (allowing CasADi users to use the generated code freely), all CSparse and LDL derived routines have been removed or replaced in CasADi's C runtime. This means that code generation for CasADi's 'qr' and 'ldl' is now possible without any additional license restrictions. A number of bugs have also been resolved.
Finally, the paper "CasADi - A software framework for nonlinear optimization and optimal control", submitted to Mathematical Programming Computation, has now been been accepted. We encourage you to read this paper (a preprint is available on Optimization Online:
http://paper.casadi.org/) and cite it when using CasADi for academic work, e.g. as follows:
@Article{Andersson2018,
Author = {Joel A E Andersson and Joris Gillis and Greg Horn
and James B Rawlings and Moritz Diehl},
Title = {{CasADi} -- {A} software framework for nonlinear optimization
and optimal control},
Journal = {Mathematical Programming Computation},
Year = {In Press, 2018},
}
Best regards,
Joel and Joris