Here we list changes of Ipopt since the release of version 2.2.0. More detailed information about incremental changes can be found in the commit history. [TOC]
- Fixed issue where Ipopt exceptions could not been caught from other libraries
on macOS with clang when Ipopt or the other library was build with
-fvisibility=hidden. - Call MPI_Init() with NULL instead of dummy arguments to fix SIGSEGV with MPICH >= 4.3.1 [#846, by Shengqi Chen].
- Fixed a use-after-free in Spral interface where attempting to solve a second system with the same structurally singular matrix would end up trying to use an old numeric factorization using data from an already freed symbolic factorization [#848, by Kevin Kofler].
- Fixed call to
getenv_son Windows, introduced with 3.14.17. This invalid use of this call made the Pardiso interfaces unusable on Windows.
- 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), and Ipopt::GetVersion() (Java interface) to retrieve version of Ipopt library [#824].
- Fixed possible missing initialization of delta_x and delta_s in PDPerturbationHandler in case ConsiderNewSystem failed [#834].
- Undefine
maxif defined after include of windows.h in IpUtils.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.
- Added
Ipopt::RegisterInterruptHandler()andIpopt::UnregisterInterruptHandler()toIpUtils.hppto wrap handling of interrupt signals. Added parametercheckinterrupt(default false) toAmplTNLPconstructor to enable check for interrupt signal inintermediate_callback. - The
ipoptandipopt_sensexecutables 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_communicatorto 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
vsprintfandsprintf. AddedIpoptData::Append_info_string(std::string,double). - Removed use of
strcpy,strncpy,strdup, andsscanf. - Using
fopen_sandgetenv_sinstead offopenandgetenv, 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 defining
IPOPT_NO_MKLVERSIONCHECK.
- Fixed load of linear solver libraries at runtime on Windows, which got broken for relative paths (the default) in 3.14.15 [#759, #760].
- Fixed include guard of IpGenAugSystemSolver.hpp [#756, by Christopher Wellons].
- Improved finding dependencies of linear solver libraries loaded at runtime on Windows [#755, by Yue Yang].
- Fixed build of MA57 interface when
FUNNY_MA57_FINTis 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 MA27CD/MA27C in MA27 interface was wrong [#738].
- 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_appendto specify whether to append tooutput_fileinstead of truncating it. Added default argumentfile_appendtoJournalist::AddFileJournal(), added default argumentfappendtoFileJournal::Open(), and added default argumentfile_appendtoIpoptApplication::OpenOutputFile(). [#720]
- Fix that a source file was installed and install more header files. [#641, #642, by Joao Sousa Pinto]
- Fixed crash of GetIpoptCurrentIterate() and GetIpoptCurrentViolations() in C interface when called before or after IpoptSolve(). [#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
AlgorithmBuilderconstructor 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].
- 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].
- Added option
grad_f_constantto 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 w.r.t. the original (non-relaxed) constraint sides. [#603]
- Fixed mapping of meta data for variable bounds, e.g., variable names, from TNLP to Ipopts internal NLP [#590].
- Added options ma27_print_level, ma57_print_level, and mumps_print_level to enable output from these linear solvers.
- Fixed that ComputeSensitivityMatrix() of sIpopt assumed that there are no more than two parameters [#578, by Andrea Vescovini].
- For completeness, added option
gradient_approximationto enable approximation of gradient of objective function by finite differences. Do not use. [#573] - Added function
IPSETPROBLEMSCALINGto Fortran interface to set problem scaling [#577, by Steven R. Hall]
- Fixed mapping of meta data for inequalities, e.g., constraint names, from TNLP to Ipopts internal NLP [#570, by Daniel Oliveira].
- Fixed that MC68 ordering time was not accounted in symbolic factorization time of HSL MA86 [#571].
- Include more header files in IpIpoptCalculatedQuantities.hpp for setups where forward declarations are not sufficients [#572].
- Tried to fix recognition of JNI headers on macOS >= 11 [#516].
- Fixed that only primal variable values where passed to
finalize_solution()when a timelimit was reached [#552].
- Skip build of Java interface if either java or jar is not found [#510]. Only give warning if javac and jar are found, but no java or javadoc.
- Fixed that
--with-lapack-lflagswas ignored if--with-lapackwas not specified explicitly [#512,#515].
- Fixed timing for iterate initialization if initialization fails due to an evaluation error.
- Fixed possible integer overflow when reserving space for indices of Jacobian belonging to fixed variables (introduced with 3.14.0) and reduced memory usage for indices of Jacobian belonging to fixed variables.
- Added
OptionsList::UnsetValue()to remove an option setting. - Added missing translation of some Ipopt status codes into AMPL solve result codes.
- If using the MPI-parallel version of MUMPS: Moved calls to
MPI_Init()/MPI_Finalize()in MUMPS interface into global constructor/destructor of Ipopt library (if building with GCC/clang). Use configure flag--disable-mpiinitto disable. [#500]
- Fixed invalidation of cached Hessians when reoptimizing with same structure.
- Added
OptionsList::SetBoolValue()andOptionsList::SetBoolValueIfUnset(). [#492] - Skip check for and link against libdl if linear solver loader is disabled.
- Fixed missing initialization of
BacktrackingLineSearch::in_watchdog_. - Fixed a problem with the current solution not being reset when initialization of a NLP fails in reoptimization.
- Fixed that C++11 capability was not correctly identified with MS/Intel compilers.
- Due to a contribution by Mitchell Clement [#428], it is now possible
to build Ipopt in a variant that uses single-precision floating
point arithmetic instead of the default double-precision.
This can be enabled by specifying the configure flag
--with-precision=single. Doing so has a number of consequences on Ipopt interfaces and Ipopt dependencies. See the Ipopt installation instructions for more details. - The name of all functions in
IpBlas.hppandIpLapack.hpphas been changed to drop the precision-specifier "D" in the name. Wrapper using the old names are available, but their use is deprecated. - It is now possible to build Ipopt in a variant that uses 64-bit
integers for its
Indextype. This can be enabled by specifying the configure flag--with-intsize=64. Doing so has a number of consequences on Ipopt interfaces and Ipopt dependencies. See the Ipopt installation instructions for more details. [#259] - Added new header
IpTypes.hthat defines Ipopt types for integer and real numbers for C users. - Deprecated almost never used type
Ipopt::Int, useintinstead. - Deprecated
Number,Index, andInt(on global namespace) inIpStdCInterface.h, useipnumber,ipindex, andintinstead, respectively. - Deprecated
BoolinIpStdCInterface.hand replaced it byboolfromstdbool.h. Note, thatBoolwas defined to beint, butboolis likely a shorter type, e.g.,signed char. DeprecatedTRUEandFALSE, usetrueandfalseinstead. - Deprecated
IPOPT_EXPORTmacro and introducedIPOPT_CALLCONV. - Deprecated
IPOPT_FORTRAN_INTEGER_TYPEandipfint. These were always assumed to beint. Useipindexoripopt::Indexinstead.
- Due to a contribution by Byron Tasseff [#446], it is now possible to use
the linear solver SPRAL (Sparse Parallel
Robust Algorithms Library) with Ipopt.
SPRAL is open-source and can, optionally, make use of NVIDIA GPUs.
If Ipopt has been build with SPRAL, then option
linear_solvercan be set tospralto enable use of SPRAL. See the installation instructions on how to build the Ipopt/SPRAL interface and the options documentation for new options that are available for the Ipopt/SPRAL interface. - Added
IpoptLinearSolvers.hwith functionIpoptGetAvailableLinearSolvers()to retrieve information which linear solvers are available for Ipopt (linked in or loaded at runtime). Optionslinear_solverandlinear_system_scalingcan now only be set to values which corresponding code is available (linked in or for load at runtime). - Revised and streamlined implementation of feature that loads libraries
with HSL or Pardiso routines at runtime. Added options
hsllibandpardisolibto specify name of of HSL and Pardiso libraries, respectively. - Separated interfaces for Pardiso from pardiso-project.org
and Pardiso from Intel MKL and allow to have both Pardiso versions available
with the same Ipopt libraries.
- Pardiso from pardiso-project.org can be selected via
linear_solver=pardiso. configure option--with-pardisoshould now specify only a Pardiso library to be loaded at runtime (the value for--with-pardisodecides the default value for optionpardisolib). To avoid conflicts with Pardiso from MKL, it is no longer possible to link against Pardiso from pardiso-project.org. - Pardiso from MKL can be selected via
linear_solver=pardisomkl. - Options that influence Pardiso from MKL are named
pardisomkl_msglvl,pardisomkl_order, etc. - configure option
--disable-pardisomklcan be used to disable the check for MKL Pardiso. [#454]
- Pardiso from pardiso-project.org can be selected via
- Fixed that return code (
info%flag) ofma97_solve()was not checked inMa97SolverInterface::MultiSolve(). - Calls into MUMPS are now protected by a mutex if compiling for C++11 or higher. This prevents Ipopt from calling MUMPS concurrently from several threads.
- An insufficient memory return status is now also given if the memory required for a working space array of a linear solver exceeds the maximal value for the working space length variable, e.g., if MA27 requires a working space array of length higher than 2^31.
- Avoid floating point overflow when computing memory increase in interfaces to MA27 and MA57.
- Changed treatment of NLPs with all variables fixed and
fixed_variable_treatmentset tomake_parameter: Ipopt will still terminate early, but initialize its data structures first and print a solve summary (49a0d3a56). Changed treatment of NLPs with inconsistent variable bounds or constraint sides: These will now result in an invalid problem definition error (-11) (5cdb2624bb). As a consequence, solve statistics should now always be available if the return status from(Re)Optimize()is larger than -10. - Bound multipliers are now computed for fixed variables if
fixed_variable_treatmentis set tomake_parameter(the default). This can trigger a reevaluating of the gradient of the objective function or the Jacobian of the constraint functions. If this is not desired, then optionfixed_variable_treatmentcan be set to the new valuemake_parameter_nodual. [#308] - Changed default for
honor_original_boundsto no. Variable bounds (see optionbound_relax_factor) are now relaxed by at most the value ofconstr_viol_tol. The solve summary now reports the violation of original bounds andSolveStatistics::(Scaled)Infeasibilities()has been extended to report the violation of original variable bounds. [#312] - If Ipopt hits a time or iteration limit during watchdog phase,
the iterate from before the watchdog phase is now restored and
passed to
finalize_solution. Note that this does not apply if Ipopt is stopped due to a user-interrupt (intermediate_callback). [#289] - When
BacktrackingLinesearchcould not find a trial point that provided sufficient progress, it may resort to call the feasibility restoration phase. If, however, the current (scaled) constraint violation was below tol/100, this would result in the infamous "Restoration phase is called at almost feasible point..." abort with status codeRestoration_Failure. Now, this message has been changed to "Linesearch failed, but no restoration phase or other fall back is available." and the status code toError_In_Step_Computationto better reflect that the linesearch failed and not the restoration phase. Further, the unscaled constraint violation tolerance now needs to be belowconstr_viol_tol/10as well in order to trigger this abort. - When a square problem is solved and the restoration phase only succeeded to find a point that is feasible w.r.t. constr_viol_tol, but not w.r.t. tol, then status Feasible_Point_Found is returned now.
- Added
TNLP::get_curr_iterate()andTNLP::get_curr_violations()to request the current iterate (primal and dual variable values) and primal and dual infeasibility w.r.t. the TNLP. The methods are meant to be called duringintermediate_callbackto inspect the current iterate. The C, Fortran, and Java interfaces have been extended by corresponding functions, too. The hs071 examples have been extended to show use of the new functions. Added testgetcurrto test new functions. [#382, #451] - Extended the Java interface by the possibility to specify an
intermediate_callback. - Added flag to
TNLPAdapter::ResortX()to specify how to handle fixed variables. Added flag toTNLPAdapter::ResortG()to specify whether to correct by right-hand-side of equality constraints. AddedTNLPAdapter::ResortBoundMultipliers()to generate correct duals for fixed variables iffixed_variable_treatmentismake_constraint. AddedTNLPAdapter::GetFullDimensions(),TNLPAdapter::GetFixedVariables(),TNLPAdapter::GetPermutationMatrices(), andTNLPAdapter::GetC_Rhs()to retrieve more information of the transformation in aTNLPAdapter. - Added
TNLPAdapter::ResortBounds()and deprecatedTNLPAdapter::ResortBnds(). AmplTNLPconstructor andAmplTNLP::get_options()now expect to receive a pointer to aRegisteredOptionsobject as well. Previous versions of these methods are still available but deprecated. Using a NULL pointer for theRegisteredOptionsargument is also deprecated.std::overflow_errorexceptions are now caught by Ipopt even if rethrowing of non-Ipopt exceptions is enabled.
- Added option
max_wall_timeto specify a wallclock time limit. AddedSolverReturncodeWALLTIME_EXCEEDEDandApplicationReturnStatuscodeMaximum_WallTime_Exceeded. - Changed default for
max_cpu_timeto 1e20 to indicate no CPU timelimit. - Detailed timing statistics are no longer collected by default.
To reenable, set the new option
timing_statisticsto yes or set the optionprint_timing_statisticsto yes [#299]. - Removed
IpoptData::ResetCpuStartTime(). DeprecatedIpoptData::cpu_time_start(), useIpoptData::TimingStats()::OverallAlgorithm()::StartCpuTime()instead. - Deprecated
SolveStatistics::TotalCPUTime(), useSolveStatistics::TotalCpuTime()instead.
- All Ipopt options are now also available via the AMPL interface,
that is, can be set in AMPL via an option
ipopt_options "..."statement. - Added flag "advanced" for
RegisteredOptionto store whether an option is rather meant for expert users. - Added class
RegisteredCategoryto store information on category of registered option. Next to the name, this is a priority, which determines the order in which categories are printed. As a consequence, methodsRegisteredOption::RegisteringCategory()andRegisteredOptions::RegisteringCategory()now return aRegisteredCategoryobject instead of a string. Further,RegisteredOption::SetRegisteringCategory()has been removed. - Deprecated existing
RegisteredOptions::OutputXyz()methods and added new variant ofRegisteredOptions::OutputOptionDocumentation(). Added parameterprint_advanced_optionsto indicate whether to print documentation for advanced options, too. - Added previously undocumented advanced options to options reference.
- Updated buildsystem, including improved checks for dependencies, use of current autotools, and skipping the build of intermediate non-distributed libraries.
- Fixed missing initialization of
IpoptApplication::smart_jnlstin secondIpoptApplicationconstructor, ifipopt verbosity > 0. - Add GCC format attribute to
Journalist::Printffunctions to enableprintf-formatter check. - Fixed
DenseVector::SumLogsImpl()such that it returns 0.0 for a vector of dimension 0. Returnednanfor homogeneous 0-vector of dimension 0 before, which may have caused the restoration phase to fail for problems with only equality or only inequality constraints. Also otherDenseVectormethods now skip calculations when dimension is 0 to avoid (probably harmless) divisions by zero. - Fixed a problem where moving slack away from 0 did not succeed when mu was very small. [#212]
- Fixed a problem where moving slacks away from 0 resulted in
nanif multipliers were zero. AddedVector::ElementWiseSelect(). - Various tiny bugfixes and improvements in performance and code style
by following suggestions of
cppcheck. - Added documentation on some available C preprocessor flags for expert users.
- Fixed static build of sIpopt without GCC. Fixed that installed sIpopt
headers were not usable (
SIPOPTLIB_EXPORTnot defined). - Fixed wrong gradient of objective function and Lagrangian Hessian in restoration problem [#478, by Nai-Yuan Chiang].
- If Ipopt is compiled for checklevel 2 or higher and the GLIBC extension
feenableexcept()is available, then floating-pointing exceptions divbyzero, overflow, and invalid are raised whileIpoptAlgorithm::Optimize()is running. - Fixed that norm on unscaled complementarity or scaled complementarity tolerance were negative when maximizing (by using a negative scaling factor for the objective).
- Changed formula for relative error in derivative checker. The absolute error is now scaled up if the approximate derivative value is between derivative_test_tol and 1. [#487].
- The second-order derivative checker now uses values for obj_factor and lambda that are different from 1.
- Fixed a linking issue for
ipopt_sens[#418] - Fixed Makefile for Java example regarding location of jar file
- Fixed build of R interface if using
-fvisibility=hidden.
- Members of
AmplTNLPclass are now protected instead of private. - Updated Eclipse Public License from 1.0 to 2.0.
- Fixed dangling pointer problems with Journalist used for debugging
(
--with-ipopt-verbosity > 0) when more than oneIpoptApplicationis used. [#393, thanks to Brad Bell] - Fixed build problem when using HSL library that does not include MA27, MA57, or MC19. [#395]
- Added example
recursive_nlpthat uses Ipopt to solves an optimization problem for the evaluation of the objective function. [contributed by Brad Bell] - Fixed build of linear-solver loader on Windows [#408]
- The C-preprocessor defines
COIN_IPOPT_CHECKLEVEL,COIN_IPOPT_VERBOSITY, andFORTRAN_INTEGER_TYPE, which are defined byIpoptConfig.h, have been renamed toIPOPT_CHECKLEVEL,IPOPT_VERBOSITY, andIPOPT_FORTRAN_INTEGER_TYPE, respectively. They are still available under their previous name, but these will be removed in Ipopt 3.14. - Changed dependencies as used by coinbrew to use new versions (2.1) of ThirdParty/HSL and ThirdParty/MUMPS and dropped ThirdParty/Metis. The new versions of the HSL and MUMPS build scripts now look for a Metis library in the system and should work with both Metis 4 and Metis 5.
- Changed location where Java interface jar gets installed from
$libdirto$datadir/java/. - minor fixes to buildsystem
- Added asserts that check whether sparsity pattern of Jacobian and Hessian as returned by TNLP are within range w.r.t. number of variables and constraints. [#350]
TNLPAdapter::ResortBndsnow initializes complete output arrays with 0.0 before filling in values for non-fixed variables. Use new argumentclearorigto turn this off. [#352]- bring back configure variables
ADD_{C,CXX,F}FLAGS - added configure option
--enable-relocatableto make prefix in pkg-config files relative to pcfiledir (assuming that--libdirhasn't been set) - bring back
configall_system.hfor build without config header - minor fixes to buildsystem
This major release comes with a larger renovation of the build system and a changed directory structure (eliminated top directory), which is the result of a long and still on-going effort to use recent autotools versions for various COIN-OR projects, reduce future maintenance efforts, and adapting behaviors of standard autotools-based projects. As a consequence, a monolithic build of Ipopt, which builds Ipopt with all its dependencies in one run of configure and make is no longer possible. Dependencies should now be build and installed before building Ipopt. Additionally, support for some outdated versions of dependencies and unmaintained components of Ipopt has been dropped and some improvements that may require changes on the users side have been applied.
A more detailed, probably incomplete, list of changes follows:
- Removed git submodules. Dependencies (HSL, Mumps, ASL, etc) now need to be build and installed in advance, either manually or by using coinbrew.
- Dropped support for HSL < 2013.
- Dropped support for MA28 in the linear solver loader.
- Dropped support for Pardiso < 4.0 from pardiso-project.org.
- Added support for Mumps 5.2.x, though initial experiments on CUTEst indicated that, on average, performance is worse than when using Mumps 4.10.0.
- Dropped CUTEr interface, the successor CUTEst includes an interface to Ipopt.
- Dropped Matlab interface as it is unmaintained and it was reported that it stopped functioning. Use https://github.com/ebertolazzi/mexIPOPT instead.
- Dropped MSVS project files as unmaintained and not functioning with current Ipopt anymore.
- Integrated Java interface into the main Ipopt library, that is,
it is handled equivalently to the C and Fortran interfaces:
- The source moved into
src/Interfaces. - The JNI functions are now included in the main Ipopt library, thus an extra jipopt library is no longer build or necessary.
- The Java class and
org.coinor.ipopt.jarpackage are build and installed as part of the main Ipopt build. - The examples moved into
examples/*_java. - A Java interface test is executed by
make test. - To build javadoc, run
make javadocin the main build directory. - The configure flag
--disable-javacan be used to disable the check for Java and build of the Java interface. DLLPATHandDLLNAMEhave been removed from the Ipopt class and constructors that works without arguments and with only one argument (specifying the Ipopt library namestem) have been added.- Method
Ipopt::finalizehas been marked as deprecated and will be removed in some future Ipopt version. Users must calldispose()explicitly.
- The source moved into
- Integrated sIpopt into the main Ipopt build, that is, it is now
build together with Ipopt, but installed as separate library
and executable. Use
--disable-sipoptto disable building sIpopt. IPOPT_THREAD_LOCALnow uses C++11'sthread_localkeyword if C++11 is available.- When using a GCC-compatible compiler, Ipopt and sIpopt interface
functions are now declared with
visibility(default)-attribute, thus building Ipopt with-fvisibility=hiddenstill produces a usable library. - When using a MSVC-compatible compiler, Ipopt and sIpopt interface
functions are now declared with
dllimport-attribute, so that an Ipopt C++ DLL can be used. - Under Windows/Msys2, DLLs are now build by default.
- Cygwin and MSys1 are not supported.
- pkg-config is now mandatory to use dependencies like ASL or HSL. On Windows, make sure to use a pkg-config version that produces Unix-style paths.
- Script "
compile" is now used to wrap around calls of cl/icl/ifort and translate GCC-style compiler flags to MSVC style. - "Addlibs" files have been removed, pkg-config should be used instead.
- Header files are now installed in the better named
$prefix/include/coin-orinstead of$prefix/include/coin. - The default for
--prefixis no longer the build directory, but the autotools-default, probably/usr/local. - The check for a Fortran compiler can be disabled via
--disable-f77and Ipopt can easier be build without a Fortran compiler. - Lapack is no longer optional, but required. The separate check
for Blas and the
--with-blasflags have been removed. --enable-debugdoes not imply--disable-sharedanymore.- Removed
--enable-debug-ipopt, use--enable-debuginstead. - Removed configure variables
{ADD,OPT,DBG}_{C,CXX,F77}FLAGS. Use{C,CXX,F77}FLAGSinstead. - Silent build output is now enabled by default, use configure
flag
--disable-silent-rulesor call make withV=1to disable. - Also for static builds, PIC objects are now generated by default,
use
--without-picto disable. - The
--with-*-incdirand--with-*-libconfigure flags have been replaced by corresponding--with-*-cflagsand--with-*-lflagsflags. Note that the include directories need to be specified via-I<dir>in--with-*-cflags. - Fixed handling of
ma77_default_controlinLSL_setMA77(). - Fixed calculation of quality function when setting option
quality_function_centralitytoreciprocal. - Fixed compiler warnings, in particular when using
-Wunused-parameter. - Changed default for
ma97_print_levelto -1. This avoids messages about numerical singular systems written to stdout by default.
- fixed Pardiso settings when using Pardiso from Pardiso project
website (by Olaf Schenk): the new settings should provide much
better performance; the default for option
pardiso_orderchanged fromfivetometis. - changed distinction of MKL and Basel Pardiso in configure: to
use MKL Pardiso, only specify MKL for Blas; to use Basel Pardiso,
use
--with-pardiso
- allow for
--without-matlab-hometo disable check for Matlab [r2748] - add
dppsvtov8-ifort[r2746] - disable error in
LibraryHandler.cifsnprintfdetection failed [r2751]
- fill MUMPS struct with zeros when allocating in MUMPS interface [r2724]
- minor fix in build-system of ThirdParty/ASL
- fixed setting for parallel solve when using MKL Pardiso (by t1393988511) [r2711]: parallel solve was disabled (which is not the default); note, that the setting for parallel factorization was not affected
- fixed invalid read in AMPL interface for problems without objective function [r2715, #305]
- updated ThirdParty/ASL to retrieve updated ASL (20180528) [#305]
- name JIpopt library
libjipopt.dylibon Mac OS X [r2718, #275]
- fixed memory leak in MA86 interface (by mhahn) [r2700,#283]
- fixed handling of time limit when reoptimizing: CPU time spend was accumulated when reoptimizing, while it should have been reset for each solve (by paul-scott) [r2702,r2703]
- fixed sign in Jacobian finite-difference approximation when point was close to variable upper bounds (by Enrico Bertolazzi) [r2704]
- add define for
FORTRAN_INTEGER_TYPEtoconfig_ipopt_default.h IpoptApplication::RethrowNonIpoptException()now returns whether non-ipopt exceptions were rethrown before the method was called.
- removed compiler flag
-pedantic-errorsto avoid problems with some configure tests when using recent GCC versions - fixed rare bug in handling variable/constraint names in
AmplTNLP(by G. Hackebeil) [r2673] - the
get.Mumpsscript in ThirdParty/Mumps now renameslibseq/mpi.htolibseq/mumps_mpi.hto avoid conflicts when building in a MPI environment (by T. Ralphs); note that if updating an existing checkout/download of Ipopt, you may have to rerun get.Mumps
- better support for custom algorithm development [r2659] (by Gabriel Hackebeil):
"Reorganization of the
AlgorithmBuilderclass to allow easier customization of the Ipopt algorithm. In particular, we wanted to make use of the code that creates theSymLinearSolverobject to implement our ownSymLinearSolverwithout copy-pasting everything in AlgorithmBuilder.AlgorithmBuilder::BuildBasicAlgorithmnow consists of 8 method calls that build the core components passed into the arguments of theIpoptAlgorithmclass. These calls are ordered based on any dependencies they might have. In addition, all code for creating thePDSystemSolver,AugSystemSolver, andSymLinearSolverhas been moved into separate factory methods. Also, included is a change to install a few more header files with Ipopt. Some of these are required to subclass AlgorithmBuilder, and the others are simply some matrix types that we require." - extend build system to work without Fortran compiler [r2660,r2661]:
If no Fortran compiler is available (
F77=unavailable), then the build system checks for functions in Blas, Lapack, and Pardiso via C linkage. This seems to work when using the Intel MKL, thus allowing to build Ipopt with C/C++ compilers and MKL only. The linear solver loader and the CuteR interface are disabled when no Fortran compiler is available. A user may have to adjust the definition ofF77_FUNCinIpopt/src/Common/IpoptConfig.h.
- changed
fptrfromlongtovoid*: the Fortran side needs to make sure that it uses a big enough integer type to store a C pointer, thusvoid*can be used on the C side [r2599] - added additional second-order-correction method, which can be
selected by setting the new option
soc_methodto 1 (by Wei Wan) [r2606, r2607] - added parameter
allow_clobberwith default value false toIpoptApplication::Initialize()andOptionsList::ReadFromStream()
- option to use regularized Hessian when doing a curvature test
without inertia information (
neg_curv_test_tol> 0), new optionneg_curv_test_regto switch back to original behavior (by N.-Y. Chiang and V. Zavala Tejeda) [r2579] - sIpopt: Added access to sensitivity directional derivative
vector (
ds/dp*(p-p0)Eq. 14 sIpopt implementation paper). Also, added an option to compute the sensitivity matrix and provide access to it. Finally, added an example that shows how to access the new information. (by R. Lopez-Negrete) - use workaround for failing check for random number generator with any gcc 4.8.x, x >= 2
- fixed bug in MA97 interface that lead to conversion issues (by J. Hogg) [r2566, #260]
- revised integration of doxygen-generated documentation into build system (by T. Ralphs)
- fixes to build system for dependency linking and library versioning
- Ipopt will now report an NLP with inconsistent variable bounds or inconsistent constraints sides as infeasible instead of throwing an invalid TNLP exception (by T. Kelman) [r2548]
- Library dependencies are now recorded in shared library builds,
which is intended to simplify linking against the Ipopt library.
However, the pkg-config and
ipopt_addlibsfiles do not reflect this change yet (it is rather experimental, imho). To restore the previous behavior, use--disable-dependency-linkingas configure option. - If linking against Intel MKL for Blas/lapack, use of Pardiso from MKL is now automatically enabled. Note, that this will change the default solver on Ipopt builds without any of the linear solvers MA27, MA57, MA97, and MA86 (these take preference over Pardiso). [#216]
- dropped support for old HSL sources (<2013; ThirdParty/HSLold)
- updated ASL sources, now downloaded from AMPL-MP (github)
- some internal changes to data structures (improved use of compound
component spaces) and addition of
IpLapackDppsv(by Gabe Hackebeil)
- fix a memory allocation in Java interface in cases where
jinthas a different size thanint[r2513] - the buildsystem now tries the
Accelerateframework instead ofvecLibfor finding Blas/Lapack on MacOS X
- fix compilation issue of Java interface on systems where
Indexandjinthave different size [r2498, #241] - work around failing check for random number generator with gcc 4.8.3 [r2495, r2496]
- readded
IpTaggedObject.cppto list of sources to compile in MSVSv8-ifortproject file [r2492] - work around missing support for thread-local storage with gcc < 4.5 on MacOS X [r2491, #243]
- fix call to MKL Pardiso init function [r2489]
- speed up Triplet to CSR converter [r2487, #234]
- fixed a bug in equilibration scaling where average values were computed incorrectly (by V. Zverovich) [r2483]
- fixed a bug, introduced with Ipopt 3.11.0, where the tag in the Ipopt's caching mechanism was not unique over time, which lead to failures of Ipopt that were difficult to debug or recognize (e.g., Ipopt may have stopped with an restoration failure for instances that solved fine with Ipopt 3.10) [r2472, r2473] I'm very thankful to Gabriel Hackebeil and Kurt Majewski for their debugging effort on this issue.
- building Mumps with pthreads is now disabled by default [#229]
- fixed setting of
LDon Windows (now set to link only iff using MS/Intel compilers) [#230] - fixed download link for Gnumex [r2471]
- for some messages about too-few-degrees-of-freedom and restoration failure, the message level changed from error to strong-warning [r2460, r2469]
- revised calls to
MPI_InitandMPI_Finalizein MUMPS interface [r2467] (MPI_Initis now called only if functionMPI_Initializedis available and MPI has not been initialized already;MPI_Finalizeis only called if Ipopt also calledMPI_Init; ...)
- adapted PARDISO parameters when using MKL PARDISO to be close to using Basel PARDISO
- added options
pardiso_max_iterative_refinement_stepsandpardiso_order; the former defaults to 1 in case of MKL PARDISO, which may help on instances that otherwise fail due to numerical issues - removed duplicate code in
IpQualityFunctionMuOracle.cpp[#225, r2445] - fixed bug in triplet to csr converter [#226, r2446]
- minor changes in buildsystem
- updates to Matlab Interface build system (by T. Kelman)
- fix to updates of R Interface [r2416, #223]
- fixed
SHAREDLIBEXTinv8-ifort'sconfig.h[r2426, #224] - minor fixes to the buildsystem
- added method
IpoptApplication::RethrowNonIpoptException()to enable rethrowing of non-ipopt and non-bad_allocexceptions catched in the*Optimize()andInitialization()methods; default is still to return withNonIpopt_Exception_Thrownstatus - minor fixes to the buildsystem [#215, #222]
- hopefully fixed non-working linear solver loader in DLLs build with
MSVS/
v8-ifortproject files [r2365] - allow MC19 to be loaded via linear solver loader (by J. Currie) [r2366]
- fixed new point flag when running dependency detector [r2368]
- experimental: adapt Pardiso interface to work with MKL Pardiso
(by J. Currie, T. Kelman) [r2369, #216]:
- in a few tests it has been found that Pardiso from Intel MKL nowadays seems to work fine with Ipopt
- to use Intel MKL with Ipopt 3.11, one has to specify the MKL libs via
--with-pardisoand add-DHAVE_PARDISO_MKL -DHAVE_PARDISO_PARALLELto the compiler flags - note that this is still an experimental feature (and thus not enabled by default)
- updated Ipopt/R interface to version 0.8.4 [r2373]
- additional variables have been included in the object returned from
ipoptr:z_L: final values for the lower bound multipliersz_U: final values for the upper bound multipliersconstraints: final values for the constraintslambda: final values for the Lagrange multipliers
- removed
ipoptr_environmentas argument inipoptr(see also r2372)
- additional variables have been included in the object returned from
- fixed bug in penalty term for centrality in quality function (not used by default) [#219, r2374]
- minor bugfixes in AMPL interface, debug print statements, and compound matrix (by G. Hackebeil) [#218, r2371, r2377, r2378, r2379]
- download scripts for ASL, Blas, and Lapack now first try to download tarball copies from the COIN-OR server
get.*scripts for ThirdParty/{ASL,Blas,Lapack} now work around broken ftp access to www.netlib.org.
- changed default for option
option_file_nametoipopt.opt; specifying an empty string for this option now disables reading of an option file [r2339] - missing initial values are now set to 0.0, projected onto variable bounds, in AMPL interface [r2340, #205]
- fixed missing variable initialization in MA97 interface [r2341, #206]
- the setup for the
v8-ifortMSVS project changed to use dynamic runtime DLLs instead of static linking, which caused crashes in debug mode (by M. Roelofs) [r2301] - fixed memory leaks in Java Interface (by javier) [#200, r2312]
- updates and fixes to MA77 and MA87 interfaces, adding support of HSL 2013 codes (by J. Hogg); HSL 2012 still supported when compiled with Ipopt, but the linear solver loader to dynamically load a HSL library at runtime now assumes HSL 2013
- added option
ma97_solve_blas3(by J. Hogg) [r2329] - changed default for option
ma27_meminc_factorfrom 10.0 to 2.0 [r2330] - fixed bug in
ipopt_auxdataof MATLAB Interface related toiterfunc[r2325]
- update and extension of Ipopt documentation
- updated build of doxygen-generated documentation to comply with other COIN-OR projects
- localized global variables in
TaggedObjectandRegisteredOption, so that Ipopt should now be threadsafe as long as Ipopt objects (esp.SmartPtr's) are not shared between threads and a threadsafe linear solver is used (e.g., MA27) [#167] - no more need for whitespace character at end of options file
- added options
print_frequency_iterandprint_frequency_timeto regulate which iteration summary lines should be printed [#161] - function evaluation timings are now available in
OrigIpoptNLP[#86] - some fixes to uncommon issues with the Ipopt
SmartPtr[#162]
- new build system for Harwell codes (ThirdParty/HSL), which requires the coin-hsl archives from http://www.hsl.rl.ac.uk/ipopt/; previously downloaded HSL sources can still be used by placing them into ThirdParty/HSLold, but this option will be removed in a future Ipopt version
- new interfaces for Harwell codes HSL_MA77, HSL_MA86, and HSL_MA97; see http://www.hsl.rl.ac.uk/ipopt/ about help on when to use which solver; especially MA57 and HSL_MA97 should be considered as replacement for MA27; however, MA27 is still the default for now
- changed default of
ma57_automatic_scalingtono(faster in general, but for higher reliability, you may want to set this option to yes)
-
major improvements for building the MATLAB interface (see documentation)
-
MATLAB interface now returns number of function evaluations, too
-
the MA57 interface can now be used with the MA57 library that comes with MATLAB (configure option
--enable-matlab-ma57; cannot use Metis) -
auxdatais now handled by a wrapper functionipopt_auxdata.minstead of internally within the MEX code (replace Matlab call toipoptwithipopt_auxdataif using auxiliary data in any callbacks) [r2282] -
exposed more intermediate Ipopt information to
iterfunccallback [r2283] -
fixes to JIpopt buildsystem (now may work on windows and uses libtool)
-
JIpopt now reads options file
ipopt.optby default, if present -
removed predefined
KEY_strings in JIpopt -
renamed API functions that retrieve solution values in JIpopt
-
simplified installation of R interface
- fixed sign of dual values in AMPL solution again (with help of Gabe) [r2169, r2170, r2184, #183]
- fixed bugs with reoptimizing a TNLP with all variables fixed [r2172, r2173, #179]
- fixed more issues with sparse data structures and non-double numbers in Matlab interface (by T. Kelman) [r2191]
- added missing
final intfor Ipopt return codeMaximum_CpuTime_Exceededin Java interface [r2216] - fixed bug when trying to warmstart Ipopt in Java interface [r2253]
- fixed wrong use of
SmartPtr's in Java interface [r2255, r2263] - fixed bug in returning final solution in Java interface [r2258]
- included patch in ThirdParty/Mumps to work around bugs in Mumps matrix ordering routines AMF and QAMD (now give preference to AMD and METIS)
- minor fixes in MA86 interface (by Jonathan Hogg) [r2069, r2086]
- fix in
IpTripletToCSRConverterfor CSR forms with extra entries (by Jonathan Hogg) [r2087] - workaround problems with Mac OS X Lion's blas library (by Frederic Hetch) [r2102, #181]
- the C interface now catches also Ipopt exceptions thrown
within the
OptimizeTNLPcall and returnsIpopt::Unrecoverable_Exceptionas status [r2094, #144] - fixed segmentation fault in adaptive barrier parameter update rule when using the mehrotra option on unconstrained problems [r2114, #114]
- fixed segmentation fault in case no iterate is available in case of catastrophic failure in restoration phase [r2115]
- fixed default for
mumps_dep_tolto work with current Mumps versions [r2116] - fixed sign of dual values in AMPL solution [r2123, #183]
- fixed issue with sparse gradients in Matlab interface (by T. Kelman) [r2133, #187]
- sIPOPT (by H. Pirnay):
- starting values in C++ version of parametric example now match AMPL version [r2098]
- numerical values in parametric example now match publication [r2099]
- added options
n_sens_stepsandsens_boundcheckas AMPL options [r2099] - any non-zero suffix value is now accepted for
sens_init_constr[r2100] - fix typo in AMPL interface (by Weifeng Chen) [r2110]
- fix bug when compiling without AMPL interface [r2113]
- build system:
- updated instruction on using nowadays HSL sources (by T. Kelman)
- fixed issue with libdir being
<prefix>/lib64
- other minor fixes
- updates to HSL interface (by Jonathan Hogg):
- MC68 can now be loaded dynamically, too
- MA86 exploits built-in scaling
- MA86 can choose best ordering from AMD and Metis
- fix for return code of MA86 for singular matrices
- corrected computation of Upsilon (norm of step SQUARED)
- updates to MSVS
v8-ifortproject files and addition of vc10 project files (using vc8-generatedIpoptFSS.dll) (by Marcel Roelofs) - minor bugfixes, include updates in BuildTools
- include updates in BuildTools, including new ThirdParty/Metis (fix for URL to download Metis 4.0.3 release)
- linear solver loader prints error code when failing to load library under Windows
- message on failure when reallocating memory in Mumps now includes size of memory that was tried to be allocated
- added missing include of
cstdio/stdio.hinIpJournalist.hpp - minor fixes to build system
- move to new COIN-OR configuration and installation convention
- primal infeasibility output is now true infeasibility in original problem formulation
- include updates in BuildTools, including new ThirdParty/Metis (required to work with current metis release)
- converted from Common Public License to Eclipse Public License
- some bugfixes from BuildTools
- improved Hessian update for restoration phase
- added intermediate callback feature to C and Fortran interface
- switching to new BuildTools system
- added R interface (contributed by Jelmer Ypma)
- updates in AsNMPC (by Hans Pirnay)
- restated
SolveStatistics::TotalCPUTimemethod for backward compatibility
- uses MUMPS version 4.9 and Lapack version 3.2.1
- added AsNMPC contribution made by Hans Pirnay
- enhanced MA57 options
- several bug fixes and minor additions
- Bugfix in NLP function evaluation timing measurement. The time for the objective function gradient had been forgotten.
- Added MSVC solution with Intel Fortran compiler to generate DLLs (contributed by Marcel Roelofs). To make this work, a lot of methods in exported headers have been made virtual
- changed default convergence tolerance in restoration phase (now same as regular tolerance)
- output is flushed after each iteration
- bugfix for square problems
- correct timing information (obj gradient was forgotten)
- flush output buffer after each iteration
- first code for iterative WSMP version (experimental and undocumented)
- a number of fixes (including those from 2009 COIN-OR Bug Squashing Party)
- changes in some exposed header files to provide access to internal data structures for specific applications
- minor corrections in tutorial files
- new Matlab interface
- added new option to limit cpu time:
max_cpu_time - added ThirdParty directory for Metis to be used with MUMPS or MA57
- updated CUTEr Makefile to make it work with CUTEr2
- added files for a tutorial (including coding exercise)
- minor fixes regarding compilation
- undocumented version of inexact method
- changed to MUMPS version 4.8.3 in externals (Mumps developers seem to have removed 4.8.1).
- changed back to MUMPS version 4.8.1 since there seem to be issues on Windows
- changed to latest version of MUMPS (4.8.2)
- some bugfixes (linear algebra objects, automatic problem scaling)
- made sure the subversion revision number is correct in all files
- allowed general additional data and cq in
IpDataandIpCq
- changed to latest version of MUMPS (4.8.1)
- added
ComputeRowAMaxandComputeColAMaxmethods to Matrix base class - changed externals for MUMPS to stable/1.1
- call
finalize_solutionin more failure cases (this means that AMPL writes .sol file in more situations) - added
IpTNLPReduceras simple way to exclude constraints from problem - several fixes, also from COIN-OR Bug Squashing Party 2008
- some bug fixes
- added wallclock time routine
- penalty function version does no longer crash if it wants to go to restoration phase (not that this really helps convergence though)
- some bug fixes
- deleted
v9MSVC files again (sincev8works fine forv9) - print Ipopt version in default print level
- added option that allows to change name of options file
(
option_file_name)
- added support to dynamically load HSL or Pardiso: If Ipopt has been compiled without some HSL or Pardiso solver, it can now load those solvers from a shared library at runtime without recompilation. This will make distribution of binaries easier. Does not work on all platforms yet.
- several bugfixes
- ensured compilation of MSVS project files (
v8andv9) - new special return code for square problems
(
Feasible_Point_Foundreturned if dual inf not small) - new initialization option for bound multipliers
(see option
bound_mult_init_method) - added simple penalty function line search option
(
line_search_method=penalty) - not guaranteed to converge, see Ipopt implementation paper (in MathProg) - some very basic method to approximate constraint Jacobian by finite differences (not efficient, but will hopefully be extended)
- corrected links for Ipopt mailing list
- added missing
Makefile.infor Matlab interface - the
addlibs*files are now installed inshare/doc/coin/Ipoptinstead of lib - updates in Matlab interface
- bugfix for ticket #56
- headers are now installed in
include/coin(no longer ininclude/ipopt) - default for
dual_inf_tolis now 1 (instead of 1e-4) - In matlab interface, here the text from Peter Carbonetto:
There have been several significant changes made to the MATLAB interface
since the last release. The most important two changes are:
- Following the "warm start" feature of IPOPT, you may pass in initial estimates for the Lagrange multipliers.
- Callback routines for computing the objective, gradient (etc.) are now specified using function handles instead of strings. (Thanks to Marcus Brubaker at the University of Toronto for the initial suggestion.)
- minor changes, bug fixes
Synchronized with all changes in trunk; probably more than to be remembered. In the following a few:
- support for Mumps linear solver (contributed by Damian Hocking)
--print-optionsflag for ipopt ASL solver executable to see all Ipopt options (available throughipopt.optfile)- added Matlab interface (contributed by Peter Carbonetto)
- added support for
f2ccompiler to compiler Fortran code with MSVC++ compiler - new MSVS support (now within MSVS project and also with
f2c) - a number of small changes/bug fixes/improvements
- small change in interface (e.g.,
FinalizeSolutionmethod)
- updated download script for Blas to fit netlib's recent changes
- using a more recent version of BuildTools
- updated download script for Lapack to fit to netlib's recent changes
- Bugfix in L-BFGS update
- fix in configure with detection of
sizeof(int*)on Cygwin
- Bugfix in least square multiplier estimate. It mainly showed up in LBFGS with restoration phase as seg fault
- changed installation procedure and directory structure to conform with new COIN-OR convention
Several bug-fixes, improvements and additions. In particular:
- new quasi-Newton approximation using L-BFGS
- interfaces to linear solver MA57, WSMP, Pardiso (MUMPS and TAUCS not yet completed)
- derivative checker
- unit test
- configure supports compilation under Cygwin with native Windows compilers
- ScalableExample
- user call-back method in TNLP
- Several corrections to Windows files
- Fix termination if number of iterations is exceeded in restoration phase
- First official release of the new C++ implementation of Ipopt.
- corrected detection of BLAS libraries for SUN (make sure the example Makefiles work)
- upgrade LICENSE file to CPL version 1.0 as retrieved from www.opensource.org
- fixed sign of multipliers returned to AMPL (bug reported by Rhoda Baker and Karsten Theissen)
- switched to automake 1.9.5
- bugfix for the limited memory BFGS in case of square problems (bug reported by Wanhe Zhang and Ned Nedialkov)
- Added
outlevas an option to the AMPL solver as a synonym foriprint - For
iprint= 0, the output lines per iteration are now suppressed - corrected two bugs in
configurescript (test for size oflongetc before Fortran libraries as added toLIBS; prevent cycling inmake -j 1test) - internally renamed subroutine
ERRORtoOPTERROR(ERRORhad a name clash for some Fortran compiler) - avoid uninitialized variable in
update_b_lm.f - minor correction in computation of residual in
get_step_full.F - minor change for slack correction in
filter.F
- corrected bug leading to very small
QTAUin rare circumstances
- Make
DFILLINFACToption available through AMPL interface - Now, later increase of memory requirement for Harwell solvers is also
based on
DFILLINFACT, instead of using a fixed values of 10.
- fix in
IPOPT/ipopt/mainloop.F: The multipliers were not scaled back for low printlevel.
- fix in
IPOPT/AMPL_interface/ipoptAMPL.c: Now the mulitpliers for the constraints are passed back to AMPL. - Added download scripts using
wgetto get ASL, BLAS, and LAPACK more easily. Thanks to Frank Wuebbeling for the hint.
- AMPL solver executable is now called
ipopt(instead ofipoptAMPL). This fixed also problem with assigning IPOPT options from within AMPL. (reported by Karsten Theissen) - default value for number of iterations is now 10000 (instead of 1000)
- new option:
IMAXCPUSECto be set to the maximum number of CPU seconds after which the algorithm should stop. The check is performed only at certain points in the algorithm, so that the executable might run longer than specified. The algorithm also stops (as before) when the file "STOP" is detected in the current directory. Finally, a call toUSER_REQUESTED_STOPhas been added if the preprocessor macroUSE_USER_REQUESTED_STOPhas been defined. If thisLOGICALfunction returns.TRUE., the algorithm also stops. This feature was requested by David Ternet. - if IPOPT is run several time in a row, the counting of function evaluations is restarted after every new call of IPOPT.
- in
get_step_full, now check if the number of negative eigenvalues is LESS than then number constraints. If so, increase the pivot tolerance, and if that doesn't help, pretend that the system is singular. (this fixed a problem reported by Hans Mittelmann) - decrease default values for
DPIVTOLMAX - suppress superflous leading zeros in iteration output. For long output
(
ioutput=1) include CPU time - a few changes regarding the inertia correction (
get_step_full.F). This decreases CPU time significantly in a few cases. - corrected problem in C-files related to names for
struct's (some GNU compiler complained) - changed default options for GNU compilers (now
-O3 -funroll-loops, no longer-O2and-mieee-fp) - no reference to MC35 in
resto_tronifHAVE_MC35is not defined #errorpreprocessor directive removed from*.Ffiles, since not all compilers understand it (reported by Hans Mittelmann)- switch to automake 1.8.3
Many things have changed since the last official release. Here a few highlights:
- easier installation procedure with autoconf
- algorithm made more robust and efficient
- new restoration phase for filter method (TRON no longer needed for full-space option anymore)
- C-interface