Releases: coin-or/Ipopt
Releases · coin-or/Ipopt
3.14.19
- Fixed call to
getenv_s
on Windows, introduced with 3.14.17.
An invalid use of this call made the Pardiso interfaces unusable on Windows.
The attached Windows builds include the interface to Pardiso from Intel MKL again.
In the debug builds (-mdd
), ASL is no longer build in debug mode to work around an exception from a possibly invalid _control87
call (#838).
The archive with the debug builds (-mdd
) now includes .pdb
files with debug information for Ipopt and Mumps.
3.14.18
- Restricted workaround for using Pardiso to Intel MKL 2025.0.x. Intel MKL 2025.1.0 has the corresponding issue fixed. [#799]
- Fixed that
Jipopt::finalize_solution
did not store final objective value correctly [#820, by Kevin Kofler].
Instead, the value of the last iterate evaluation was returned, which was often the same. - Added
IpoptApplication::Version()
(C++ interface),GetIpoptVersion
(C interface), andIpopt::GetVersion()
(Java interface) to retrieve version of Ipopt library [#824]. - Fixed possible missing initialization of
delta_x
anddelta_s
inPDPerturbationHandler
in caseConsiderNewSystem
failed [#834]. - Undefine
max
if defined after include ofwindows.h
inIpUtils.cpp
[#834]. - Added missing initialization of Filter Acceptor in case restoration phase is called when the fallback mechanism of BacktrackingLinearSearch has been activated [#834,#837].
If this happened in the first iteration, it led to the use of uninitialized values. - Added missing return if symbolic factorization with MA57 (ma57ad, ma57as) failed [#834].
- Fixed application of scaling when computing violations of inequality constraints in
TNLP::get_curr_violations()
. AddedOrigIpoptNLP::d_space()
. - Fixed signature of call to MKL's Pardiso: the
DPARM
argument does not exist in this version of Pardiso.
The attached Windows builds do not include the interface to MKL's Pardiso due to an issue introduced with 3.14.17. This will be fixed with the next release and the interface be enabled again.
3.14.17
- Added
Ipopt::RegisterInterruptHandler()
andIpopt::UnregisterInterruptHandler()
toIpUtils.hpp
to wrap handling of interrupt signals.
Added parametercheckinterrupt
(default false) toAmplTNLP
constructor to enable check for interrupt signal inintermediate_callback
. - The
ipopt
andipopt_sens
executables and scalable problems C++ examples can now be interrupted by SIGINT/SIGHUP (systems with sigaction()) or SIGINT/SIGTERM/SIGABRT (Windows systems). - New option
mumps_mpi_communicator
to specify the MPI communicator when using an MPI-enabled build of MUMPS [#790, by Alex Tyler Chapman]. - Updated build system to current autotools versions; initial support for icx/ifx and flang.
- Removed use of
vsprintf
andsprintf
. AddedIpoptData::Append_info_string(std::string,double)
. - Removed use of
strcpy
,strncpy
,strdup
, andsscanf
. - Using
fopen_s
andgetenv_s
instead offopen
andgetenv
, respectively, if available. - Added workaround for using Pardiso from Intel MKL 2025.0.1 [#799].
This requires checking the MKL version at runtime and can be disabled by definingIPOPT_NO_MKLVERSIONCHECK
.
3.14.16
3.14.15
3.14.14
- Fixed build of MA57 interface when
FUNNY_MA57_FINT
is defined (MA57 with long integers). - Fixed that initial dual values for fixed variables (z_L, z_U) were ignored when doing a warm start with
fixed_variable_treatment = make_constraint
[#728]. - Fixed that the last argument when calling MA27C[D] in MA27 interface was wrong [#738].
3.14.13
- Reduced priority for making Spral the default value for option linear_solver [#677].
- Adapted to change of integer types in Spral interface. Minimal required Spral version is now v2023.03.29.
- Fixed that return code from
TNLP::eval_jac_g()
was ignored at first call [#697, by Christoph Hansknecht]. - Print additional messages when reallocation of MA27 working space failed [#671, by Daniel Oliveira].
- Added option
file_append
to specify whether to append tooutput_file
instead of truncating it.
Added default argumentfile_append
toJournalist::AddFileJournal()
, added default argumentfappend
toFileJournal::Open()
, and added default argumentfile_append
toIpoptApplication::OpenOutputFile()
. [#720]
3.14.12
- Fix that a source file was installed and install more header files. [#641, #642, by Joao Sousa Pinto]
- Fixed crash of
GetIpoptCurrentIterate()
andGetIpoptCurrentViolations()
in C interface when called before or afterIpoptSolve()
. [#644, #645, by Robbybp] - Updated HSL_MA97 header file to the one from HSL MA97 2.8.0 [#646, by Jari Fowkes].
- Fixed crash when trying to solve problem without variables and constraints. [#648]
- Added optional argument to
AlgorithmBuilder
constructor to provide name of custom solver. [#618] - Changed handling of dual solution for square problems: When solving a problem with as many equations as variables, Ipopt used to ignore the violation of dual feasibility and complementarity in the convergence check and computed a final dual solution via a least-square estimate. If this failed, Ipopt would claim a square problem to be solved to optimality without providing a solution that satisfies optimality conditions. With this version, the behavior has been changed so that dual feasibility is no longer ignored by the convergence check, the least-square estimate is only computed if optimality is not proven already, and the normal Ipopt algorithm continues if the least-square estimate does not satisfy optimality conditions.
- Updated HSL_MC86 header file to the one from HSL MC68 3.3.3 [#653, by Jari Fowkes].
3.14.11
- Added
IpoptData::TimingStats() const
[#611] - Assume DLL library extension in linear solver library loader on Windows also when building with other compiler than MSVC/Intel [#628].
- Updated buildsystem files after upgrading to most recent versions of autotools.
- Install some additional header files [#637].
3.14.10
- Added option
grad_f_constant
to specify that objective function is linear. If set, the gradient of the objective will be requested by Ipopt only once. [#597] - Added
OrigIpoptNLP::orig_d_L()
andOrigIpoptNLP::orig_d_U()
to get original constraint sides (before relaxation due to bound_relax_factor > 0). TNLP::get_curr_violations()
now returns the constraint violation and complementarity with respect to the original (non-relaxed) constraint sides. [#603]