Ipopt Documentation  
ChangeLog.md
Go to the documentation of this file.
1 # ChangeLog
2 
3 Here we list changes of Ipopt since the release of version 2.2.0.
4 More detailed information about incremental changes can be found in the
5 [commit history](https://github.com/coin-or/Ipopt/commits).
6 [TOC]
7 
8 ## 3.14
9 
10 ### 3.14.19 (2025-07-30)
11 
12 - Fixed call to `getenv_s` on Windows, introduced with 3.14.17.
13  This invalid use of this call made the Pardiso interfaces unusable on Windows.
14 
15 ### 3.14.18 (2025-07-28)
16 
17 - Restricted workaround for using Pardiso to Intel MKL 2025.0.x.
18  Intel MKL 2025.1.0 has the corresponding issue fixed. [#799]
19 - Fixed that Jipopt::finalize_solution did not store final objective value correctly
20  [#820, by Kevin Kofler]. Instead, the value of the last iterate evaluation was returned,
21  which was often the same.
22 - Added IpoptApplication::Version() (C++ interface), GetIpoptVersion (C interface), and
23  Ipopt::GetVersion() (Java interface) to retrieve version of Ipopt library [#824].
24 - Fixed possible missing initialization of delta_x and delta_s in PDPerturbationHandler
25  in case ConsiderNewSystem failed [#834].
26 - Undefine `max` if defined after include of windows.h in IpUtils.cpp [#834].
27 - Added missing initialization of Filter Acceptor in case restoration phase is called
28  when the fallback mechanism of BacktrackingLinearSearch has been activated [#834,#837].
29  If this happened in the first iteration, it led to the use of uninitialized values.
30 - Added missing return if symbolic factorization with MA57 (ma57ad, ma57as) failed [#834].
31 - Fixed application of scaling when computing violations of inequality constraints in
32  `TNLP::get_curr_violations()`. Added `OrigIpoptNLP::d_space()`.
33 - Fixed signature of call to MKL's Pardiso: the DPARM argument does not exist in this
34  version of Pardiso.
35 
36 ### 3.14.17 (2024-12-14)
37 
38 - Added `Ipopt::RegisterInterruptHandler()` and `Ipopt::UnregisterInterruptHandler()`
39  to `IpUtils.hpp` to wrap handling of interrupt signals.
40  Added parameter `checkinterrupt` (default false) to `AmplTNLP` constructor
41  to enable check for interrupt signal in `intermediate_callback`.
42 - The `ipopt` and `ipopt_sens` executables and scalable problems C++ examples can now be
43  interrupted by SIGINT/SIGHUP (systems with sigaction()) or SIGINT/SIGTERM/SIGABRT (Windows systems).
44 - New option `mumps_mpi_communicator` to specify the MPI communicator when using
45  an MPI-enabled build of MUMPS [#790, by Alex Tyler Chapman].
46 - Updated build system to current autotools versions; initial support for icx/ifx and flang
47 - Removed use of `vsprintf` and `sprintf`. Added `IpoptData::Append_info_string(std::string,double)`.
48 - Removed use of `strcpy`, `strncpy`, `strdup`, and `sscanf`.
49 - Using `fopen_s` and `getenv_s` instead of `fopen` and `getenv`, respectively, if available.
50 - Added workaround for using Pardiso from Intel MKL 2025.0.1 [#799].
51  This requires checking the MKL version at runtime and can be disabled by defining `IPOPT_NO_MKLVERSIONCHECK`.
52 
53 ### 3.14.16 (2024-04-22)
54 
55 - Fixed load of linear solver libraries at runtime on Windows, which got
56  broken for relative paths (the default) in 3.14.15 [#759, #760].
57 
58 ### 3.14.15 (2024-04-10)
59 
60 - Fixed include guard of IpGenAugSystemSolver.hpp [#756, by Christopher Wellons].
61 - Improved finding dependencies of linear solver libraries loaded at runtime on Windows
62  [#755, by Yue Yang].
63 
64 ### 3.14.14 (2024-01-18)
65 
66 - Fixed build of MA57 interface when `FUNNY_MA57_FINT` is defined (MA57 with long integers).
67 - Fixed that initial dual values for fixed variables (z_L, z_U) were ignored when doing a
68  warm start with fixed_variable_treatment = make_constraint [#728].
69 - Fixed that the last argument when calling MA27CD/MA27C in MA27 interface was wrong [#738].
70 
71 ### 3.14.13 (2023-11-08)
72 
73 - Reduced priority for making Spral the default value for option linear_solver [#677].
74 - Adapted to change of integer types in Spral interface. Minimal required Spral version is now v2023.03.29.
75 - Fixed that return code from `TNLP::eval_jac_g()` was ignored at first call [#697, by
76  Christoph Hansknecht].
77 - Print additional messages when reallocation of MA27 working space failed [#671, by
78  Daniel Oliveira].
79 - Added option `file_append` to specify whether to append to `output_file` instead of
80  truncating it. Added default argument `file_append` to `Journalist::AddFileJournal()`,
81  added default argument `fappend` to `FileJournal::Open()`, and added default argument
82  `file_append` to `IpoptApplication::OpenOutputFile()`. [#720]
83 
84 ### 3.14.12 (2023-04-05)
85 
86 - Fix that a source file was installed and install more header files.
87  [#641, #642, by Joao Sousa Pinto]
88 - Fixed crash of GetIpoptCurrentIterate() and GetIpoptCurrentViolations() in
89  C interface when called before or after IpoptSolve(). [#644, #645, by Robbybp]
90 - Updated HSL_MA97 header file to the one from HSL MA97 2.8.0 [#646, by Jari Fowkes].
91 - Fixed crash when trying to solve problem without variables and constraints. [#648]
92 - Added optional argument to `AlgorithmBuilder` constructor to provide name of custom solver. [#618]
93 - Changed handling of dual solution for square problems: When solving a problem
94  with as many equations as variables, Ipopt used to ignore the violation of
95  dual feasibility and complementarity in the convergence check and computed
96  a final dual solution via a least-square estimate. If this failed, Ipopt would
97  claim a square problem to be solved to optimality without providing a solution
98  that satisfies optimality conditions. With this version, the behavior has
99  been changed so that dual feasibility is no longer ignored by the convergence
100  check, the least-square estimate is only computed if optimality is not proven
101  already, and the normal Ipopt algorithm continues if the least-square estimate
102  does not satisfy optimality conditions.
103 - Updated HSL_MC86 header file to the one from HSL MC68 3.3.3 [#653, by Jari Fowkes].
104 
105 ### 3.14.11 (2023-02-07)
106 
107 - Added `IpoptData::TimingStats() const` [#611]
108 - Assume DLL library extension in linear solver library loader on Windows
109  also when building with other compiler than MSVC/Intel [#628].
110 - Updated buildsystem files after upgrading to most recent versions of autotools.
111 - Install some additional header files [#637].
112 
113 ### 3.14.10 (2022-10-11)
114 
115 - Added option `grad_f_constant` to specify that objective function is linear.
116  If set, the gradient of the objective will be requested by Ipopt only once. [#597]
117 - Added `OrigIpoptNLP::orig_d_L()` and `OrigIpoptNLP::orig_d_U()` to get
118  original constraint sides (before relaxation due to bound_relax_factor > 0).
119 - `TNLP::get_curr_violations()` now returns the constraint violation and
120  complementarity w.r.t. the original (non-relaxed) constraint sides. [#603]
121 
122 ### 3.14.9 (2022-07-21)
123 
124 - Fixed mapping of meta data for variable bounds, e.g., variable names,
125  from TNLP to Ipopts internal NLP [#590].
126 
127 ### 3.14.8 (2022-07-13)
128 
129 - Added options ma27_print_level, ma57_print_level, and mumps_print_level
130  to enable output from these linear solvers.
131 
132 ### 3.14.7 (2022-06-24)
133 
134 - Fixed that ComputeSensitivityMatrix() of sIpopt assumed that there are
135  no more than two parameters [#578, by Andrea Vescovini].
136 - For completeness, added option `gradient_approximation` to enable approximation
137  of gradient of objective function by finite differences. Do not use. [#573]
138 - Added function `IPSETPROBLEMSCALING` to Fortran interface to set problem
139  scaling [#577, by Steven R. Hall]
140 
141 ### 3.14.6 (2022-05-02)
142 
143 - Fixed mapping of meta data for inequalities, e.g., constraint names,
144  from TNLP to Ipopts internal NLP [#570, by Daniel Oliveira].
145 - Fixed that MC68 ordering time was not accounted in symbolic factorization
146  time of HSL MA86 [#571].
147 - Include more header files in IpIpoptCalculatedQuantities.hpp for setups
148  where forward declarations are not sufficients [#572].
149 
150 ### 3.14.5 (2022-02-09)
151 
152 - Tried to fix recognition of JNI headers on macOS >= 11 [#516].
153 - Fixed that only primal variable values where passed to `finalize_solution()`
154  when a timelimit was reached [#552].
155 
156 ### 3.14.4 (2021-09-20)
157 
158 - Skip build of Java interface if either java or jar is not found [#510].
159  Only give warning if javac and jar are found, but no java or javadoc.
160 - Fixed that `--with-lapack-lflags` was ignored if `--with-lapack` was not
161  specified explicitly [#512,#515].
162 
163 ### 3.14.3 (2021-09-03)
164 
165 - Fixed timing for iterate initialization if initialization fails due to
166  an evaluation error.
167 - Fixed possible integer overflow when reserving space for indices of Jacobian
168  belonging to fixed variables (introduced with 3.14.0) and reduced memory
169  usage for indices of Jacobian belonging to fixed variables.
170 
171 ### 3.14.2 (2021-07-21)
172 
173 - Added `OptionsList::UnsetValue()` to remove an option setting.
174 - Added missing translation of some Ipopt status codes into AMPL solve result codes.
175 - If using the MPI-parallel version of MUMPS: Moved calls to
176  `MPI_Init()`/`MPI_Finalize()` in MUMPS interface into global constructor/destructor
177  of Ipopt library (if building with GCC/clang). Use configure flag
178  `--disable-mpiinit` to disable. [#500]
179 
180 ### 3.14.1 (2021-06-25)
181 
182 - Fixed invalidation of cached Hessians when reoptimizing with same structure.
183 - Added `OptionsList::SetBoolValue()` and `OptionsList::SetBoolValueIfUnset()`. [#492]
184 - Skip check for and link against libdl if linear solver loader is disabled.
185 - Fixed missing initialization of `BacktrackingLineSearch::in_watchdog_`.
186 - Fixed a problem with the current solution not being reset when
187  initialization of a NLP fails in reoptimization.
188 - Fixed that C++11 capability was not correctly identified with MS/Intel compilers.
189 
190 ### 3.14.0 (2021-06-15)
191 
192 #### Data Types
193 
194 - Due to a contribution by Mitchell Clement [#428], it is now possible
195  to build Ipopt in a variant that uses single-precision floating
196  point arithmetic instead of the default double-precision.
197  This can be enabled by specifying the configure flag `--with-precision=single`.
198  Doing so has a number of consequences on Ipopt interfaces and Ipopt dependencies.
199  See the Ipopt installation instructions for more details.
200 - The name of all functions in `IpBlas.hpp` and `IpLapack.hpp` has been
201  changed to drop the precision-specifier "D" in the name.
202  Wrapper using the old names are available, but their use is deprecated.
203 - It is now possible to build Ipopt in a variant that uses 64-bit
204  integers for its `Index` type. This can be enabled by specifying
205  the configure flag `--with-intsize=64`. Doing so has a number of
206  consequences on Ipopt interfaces and Ipopt dependencies. See
207  the Ipopt installation instructions for more details. [#259]
208 - Added new header `IpTypes.h` that defines Ipopt types for integer
209  and real numbers for C users.
210 - Deprecated almost never used type `Ipopt::Int`, use `int` instead.
211 - Deprecated `Number`, `Index`, and `Int` (on global namespace) in
212  `IpStdCInterface.h`, use `ipnumber`, `ipindex`, and `int` instead, respectively.
213 - Deprecated `Bool` in `IpStdCInterface.h` and replaced it by `bool`
214  from `stdbool.h`. Note, that `Bool` was defined to be `int`, but `bool`
215  is likely a shorter type, e.g., `signed char`. Deprecated `TRUE` and
216  `FALSE`, use `true` and `false` instead.
217 - Deprecated `IPOPT_EXPORT` macro and introduced `IPOPT_CALLCONV`.
218 - Deprecated `IPOPT_FORTRAN_INTEGER_TYPE` and `ipfint`. These were
219  always assumed to be `int`. Use `ipindex` or `ipopt::Index` instead.
220 
221 #### Linear Solver Interfaces
222 
223 - Due to a contribution by Byron Tasseff [#446], it is now possible to use
224  the linear solver [SPRAL](https://github.com/ralna/spral) (Sparse Parallel
225  Robust Algorithms Library) with Ipopt.
226  SPRAL is open-source and can, optionally, make use of NVIDIA GPUs.
227  If Ipopt has been build with SPRAL, then option `linear_solver` can be
228  set to `spral` to enable use of SPRAL.
229  See the installation instructions on how to build the Ipopt/SPRAL interface
230  and the options documentation for new options that are available for
231  the Ipopt/SPRAL interface.
232 - Added `IpoptLinearSolvers.h` with function `IpoptGetAvailableLinearSolvers()`
233  to retrieve information which linear solvers are available for Ipopt
234  (linked in or loaded at runtime). Options `linear_solver` and
235  `linear_system_scaling` can now only be set to values which corresponding
236  code is available (linked in or for load at runtime).
237 - Revised and streamlined implementation of feature that loads libraries
238  with HSL or Pardiso routines at runtime. Added options `hsllib` and `pardisolib`
239  to specify name of of HSL and Pardiso libraries, respectively.
240 - Separated interfaces for Pardiso from [pardiso-project.org](https://pardiso-project.org)
241  and Pardiso from Intel MKL and allow to have both Pardiso versions available
242  with the same Ipopt libraries.
243  - Pardiso from pardiso-project.org can be selected via `linear_solver=pardiso`.
244  configure option <b>`--with-pardiso` should now specify only a Pardiso
245  library to be loaded at runtime</b> (the value for `--with-pardiso` decides
246  the default value for option `pardisolib`).
247  To avoid conflicts with Pardiso from MKL, it is **no longer possible to
248  link against Pardiso from pardiso-project.org**.
249  - Pardiso from MKL can be selected via <b>`linear_solver=pardisomkl`</b>.
250  - Options that influence Pardiso from MKL are named <b>`pardisomkl_msglvl`, `pardisomkl_order`, etc.</b>
251  - configure option `--disable-pardisomkl` can be used to disable the check
252  for MKL Pardiso. [#454]
253 - Fixed that return code (`info%flag`) of `ma97_solve()` was not checked
254  in `Ma97SolverInterface::MultiSolve()`.
255 - Calls into MUMPS are now protected by a mutex if compiling for C++11 or higher.
256  This prevents Ipopt from calling MUMPS concurrently from several threads.
257 - An insufficient memory return status is now also given if the memory
258  required for a working space array of a linear solver exceeds the maximal
259  value for the working space length variable, e.g., if MA27 requires a
260  working space array of length higher than 2^31.
261 - Avoid floating point overflow when computing memory increase in interfaces
262  to MA27 and MA57.
263 
264 #### Algorithm
265 
266 - Changed treatment of NLPs with all variables fixed and `fixed_variable_treatment`
267  set to `make_parameter`:
268  Ipopt will still terminate early, but initialize its data structures
269  first and print a solve summary (49a0d3a56).
270  Changed treatment of NLPs with inconsistent variable bounds or constraint
271  sides: These will now result in an invalid problem definition error (-11)
272  (5cdb2624bb).
273  As a consequence, solve statistics should now always be available if the
274  return status from `(Re)Optimize()` is larger than -10.
275 - Bound multipliers are now computed for fixed variables if
276  `fixed_variable_treatment` is set to `make_parameter` (the default).
277  This can trigger a reevaluating of the gradient of the objective
278  function or the Jacobian of the constraint functions. If this
279  is not desired, then option `fixed_variable_treatment` can be set
280  to the new value `make_parameter_nodual`. [#308]
281 - Changed default for `honor_original_bounds` to no.
282  Variable bounds (see option `bound_relax_factor`) are now relaxed
283  by at most the value of `constr_viol_tol`.
284  The solve summary now reports the violation of original bounds
285  and `SolveStatistics::(Scaled)Infeasibilities()` has been extended
286  to report the violation of original variable bounds. [#312]
287 - If Ipopt hits a time or iteration limit during watchdog phase,
288  the iterate from before the watchdog phase is now restored and
289  passed to `finalize_solution`. Note that this does not apply if
290  Ipopt is stopped due to a user-interrupt (`intermediate_callback`).
291  [#289]
292 - When `BacktrackingLinesearch` could not find a trial point that
293  provided sufficient progress, it may resort to call the feasibility
294  restoration phase. If, however, the current (scaled) constraint
295  violation was below tol/100, this would result in the infamous
296  "Restoration phase is called at almost feasible point..." abort
297  with status code `Restoration_Failure`. Now, this message has been
298  changed to "Linesearch failed, but no restoration phase or other
299  fall back is available." and the status code to `Error_In_Step_Computation`
300  to better reflect that the linesearch failed and not the restoration
301  phase. Further, the unscaled constraint violation tolerance now
302  needs to be below `constr_viol_tol/10` as well in order to trigger
303  this abort.
304 - When a square problem is solved and the restoration phase only succeeded to
305  find a point that is feasible w.r.t. constr_viol_tol, but not w.r.t. tol,
306  then status Feasible_Point_Found is returned now.
307 
308 #### Ipopt interfaces
309 
310 - Added `TNLP::get_curr_iterate()` and `TNLP::get_curr_violations()`
311  to request the current iterate (primal and dual variable values)
312  and primal and dual infeasibility w.r.t. the TNLP. The methods
313  are meant to be called during `intermediate_callback` to inspect
314  the current iterate. The C, Fortran, and Java interfaces have
315  been extended by corresponding functions, too. The hs071 examples
316  have been extended to show use of the new functions. Added test
317  `getcurr` to test new functions. [#382, #451]
318 - Extended the Java interface by the possibility to specify an `intermediate_callback`.
319 - Added flag to `TNLPAdapter::ResortX()` to specify how to handle fixed variables.
320  Added flag to `TNLPAdapter::ResortG()` to specify whether to correct by
321  right-hand-side of equality constraints.
322  Added `TNLPAdapter::ResortBoundMultipliers()` to generate correct duals
323  for fixed variables if `fixed_variable_treatment` is `make_constraint`.
324  Added `TNLPAdapter::GetFullDimensions()`, `TNLPAdapter::GetFixedVariables()`,
325  `TNLPAdapter::GetPermutationMatrices()`, and `TNLPAdapter::GetC_Rhs()`
326  to retrieve more information of the transformation in a `TNLPAdapter`.
327 - Added `TNLPAdapter::ResortBounds()` and deprecated `TNLPAdapter::ResortBnds()`.
328 - `AmplTNLP` constructor and `AmplTNLP::get_options()` now expect to
329  receive a pointer to a `RegisteredOptions` object as well.
330  Previous versions of these methods are still available but deprecated.
331  Using a NULL pointer for the `RegisteredOptions` argument is
332  also deprecated.
333 - `std::overflow_error` exceptions are now caught by Ipopt even if rethrowing
334  of non-Ipopt exceptions is enabled.
335 
336 #### Timing
337 
338 - Added option `max_wall_time` to specify a wallclock time limit.
339  Added `SolverReturn` code `WALLTIME_EXCEEDED` and `ApplicationReturnStatus`
340  code `Maximum_WallTime_Exceeded`.
341 - Changed default for `max_cpu_time` to 1e20 to indicate no CPU timelimit.
342 - Detailed timing statistics are no longer collected by default.
343  To reenable, set the new option `timing_statistics` to yes or set the
344  option `print_timing_statistics` to yes [#299].
345 - Removed `IpoptData::ResetCpuStartTime()`. Deprecated `IpoptData::cpu_time_start()`,
346  use `IpoptData::TimingStats()::OverallAlgorithm()::StartCpuTime()` instead.
347 - Deprecated `SolveStatistics::TotalCPUTime()`, use `SolveStatistics::TotalCpuTime()`
348  instead.
349 
350 #### Option handling
351 
352 - All Ipopt options are now also available via the AMPL interface,
353  that is, can be set in AMPL via an option `ipopt_options "..."` statement.
354 - Added flag "advanced" for `RegisteredOption` to store whether an
355  option is rather meant for expert users.
356 - Added class `RegisteredCategory` to store information on category
357  of registered option. Next to the name, this is a priority, which
358  determines the order in which categories are printed. As a
359  consequence, methods `RegisteredOption::RegisteringCategory()` and
360  `RegisteredOptions::RegisteringCategory()` now return a
361  `RegisteredCategory` object instead of a string. Further,
362  `RegisteredOption::SetRegisteringCategory()` has been removed.
363 - Deprecated existing `RegisteredOptions::OutputXyz()` methods and
364  added new variant of `RegisteredOptions::OutputOptionDocumentation()`.
365  Added parameter `print_advanced_options` to indicate whether to
366  print documentation for advanced options, too.
367 - Added previously undocumented advanced options to options reference.
368 
369 #### Miscellaneous
370 
371 - Updated buildsystem, including improved checks for dependencies,
372  use of current autotools, and skipping the build of intermediate
373  non-distributed libraries.
374 - Fixed missing initialization of `IpoptApplication::smart_jnlst` in
375  second `IpoptApplication` constructor, if `ipopt verbosity > 0`.
376 - Add GCC format attribute to `Journalist::Printf` functions to enable
377  `printf`-formatter check.
378 - Fixed `DenseVector::SumLogsImpl()` such that it returns 0.0 for
379  a vector of dimension 0. Returned `nan` for homogeneous 0-vector
380  of dimension 0 before, which may have caused the restoration phase to
381  fail for problems with only equality or only inequality constraints.
382  Also other `DenseVector` methods now skip calculations when dimension
383  is 0 to avoid (probably harmless) divisions by zero.
384 - Fixed a problem where moving slack away from 0 did not succeed
385  when mu was very small. [#212]
386 - Fixed a problem where moving slacks away from 0 resulted in `nan`
387  if multipliers were zero. Added `Vector::ElementWiseSelect()`.
388 - Various tiny bugfixes and improvements in performance and code style
389  by following suggestions of `cppcheck`.
390 - Added documentation on some available C preprocessor flags for expert users.
391 - Fixed static build of sIpopt without GCC. Fixed that installed sIpopt
392  headers were not usable (`SIPOPTLIB_EXPORT` not defined).
393 - Fixed wrong gradient of objective function and Lagrangian Hessian in
394  restoration problem [#478, by Nai-Yuan Chiang].
395 - If Ipopt is compiled for checklevel 2 or higher and the GLIBC extension `feenableexcept()`
396  is available, then floating-pointing exceptions divbyzero, overflow, and
397  invalid are raised while `IpoptAlgorithm::Optimize()` is running.
398 - Fixed that norm on unscaled complementarity or scaled complementarity tolerance
399  were negative when maximizing (by using a negative scaling factor for the
400  objective).
401 - Changed formula for relative error in derivative checker. The absolute
402  error is now scaled up if the approximate derivative value is between
403  derivative_test_tol and 1. [#487].
404 - The second-order derivative checker now uses values for obj_factor and
405  lambda that are different from 1.
406 
407 
408 ## 3.13
409 
410 ### 3.13.4 (2021-02-24)
411 
412 - Fixed a linking issue for `ipopt_sens` [#418]
413 - Fixed Makefile for Java example regarding location of jar file
414 - Fixed build of R interface if using `-fvisibility=hidden`.
415 
416 ### 3.13.3 (2020-10-16)
417 
418 - Members of `AmplTNLP` class are now protected instead of private.
419 - Updated Eclipse Public License from 1.0 to 2.0.
420 - Fixed dangling pointer problems with Journalist used for debugging
421  (`--with-ipopt-verbosity > 0`) when more than one `IpoptApplication`
422  is used. [#393, thanks to Brad Bell]
423 - Fixed build problem when using HSL library that does not include
424  MA27, MA57, or MC19. [#395]
425 - Added example `recursive_nlp` that uses Ipopt to solves an
426  optimization problem for the evaluation of the objective function.
427  [contributed by Brad Bell]
428 - Fixed build of linear-solver loader on Windows [#408]
429 
430 ### 3.13.2 (2020-04-30)
431 
432 - The C-preprocessor defines `COIN_IPOPT_CHECKLEVEL`,
433  `COIN_IPOPT_VERBOSITY`, and `FORTRAN_INTEGER_TYPE`, which are defined
434  by `IpoptConfig.h`, have been renamed to `IPOPT_CHECKLEVEL`,
435  `IPOPT_VERBOSITY`, and `IPOPT_FORTRAN_INTEGER_TYPE`, respectively.
436  They are still available under their previous name, but these
437  will be removed in Ipopt 3.14.
438 - Changed dependencies as used by coinbrew to use new versions (2.1)
439  of ThirdParty/HSL and ThirdParty/MUMPS and dropped ThirdParty/Metis.
440  The new versions of the HSL and MUMPS build scripts now look
441  for a Metis library in the system and should work with both
442  Metis 4 and Metis 5.
443 - Changed location where Java interface jar gets installed from
444  `$libdir` to `$datadir/java/`.
445 - minor fixes to buildsystem
446 
447 ### 3.13.1 (2020-03-11)
448 
449 - Added asserts that check whether sparsity pattern of Jacobian
450  and Hessian as returned by TNLP are within range w.r.t. number
451  of variables and constraints. [#350]
452 - `TNLPAdapter::ResortBnds` now initializes complete output arrays
453  with 0.0 before filling in values for non-fixed variables. Use
454  new argument `clearorig` to turn this off. [#352]
455 - bring back configure variables `ADD_{C,CXX,F}FLAGS`
456 - added configure option `--enable-relocatable` to make prefix in
457  pkg-config files relative to pcfiledir (assuming that `--libdir`
458  hasn't been set)
459 - bring back `configall_system.h` for build without config header
460 - minor fixes to buildsystem
461 
462 ### 3.13.0 (2019-10-19)
463 
464 This major release comes with a larger renovation of the build
465 system and a changed directory structure (eliminated top directory),
466 which is the result of a long and still on-going effort to use
467 recent autotools versions for various COIN-OR projects, reduce
468 future maintenance efforts, and adapting behaviors of standard
469 autotools-based projects.
470 As a consequence, a monolithic build of Ipopt, which builds Ipopt
471 with all its dependencies in one run of configure and make is no
472 longer possible. Dependencies should now be build and installed
473 before building Ipopt.
474 Additionally, support for some outdated versions of dependencies
475 and unmaintained components of Ipopt has been dropped and some
476 improvements that may require changes on the users side have been
477 applied.
478 
479 A more detailed, probably incomplete, list of changes follows:
480 - Removed git submodules. Dependencies (HSL, Mumps, ASL, etc) now
481  need to be build and installed in advance, either manually or
482  by using coinbrew.
483 - Dropped support for HSL < 2013.
484 - Dropped support for MA28 in the linear solver loader.
485 - Dropped support for Pardiso < 4.0 from pardiso-project.org.
486 - Added support for Mumps 5.2.x, though initial experiments on
487  CUTEst indicated that, on average, performance is worse than
488  when using Mumps 4.10.0.
489 - Dropped CUTEr interface, the successor CUTEst includes an
490  interface to Ipopt.
491 - Dropped Matlab interface as it is unmaintained and it was
492  reported that it stopped functioning.
493  Use https://github.com/ebertolazzi/mexIPOPT instead.
494 - Dropped MSVS project files as unmaintained and not functioning
495  with current Ipopt anymore.
496 - Integrated Java interface into the main Ipopt library, that is,
497  it is handled equivalently to the C and Fortran interfaces:
498  - The source moved into `src/Interfaces`.
499  - The JNI functions are now included in the main Ipopt library,
500  thus an extra jipopt library is no longer build or necessary.
501  - The Java class and `org.coinor.ipopt.jar` package are build and
502  installed as part of the main Ipopt build.
503  - The examples moved into `examples/*_java`.
504  - A Java interface test is executed by `make test`.
505  - To build javadoc, run `make javadoc` in the main build directory.
506  - The configure flag `--disable-java` can be used to disable the
507  check for Java and build of the Java interface.
508  - `DLLPATH` and `DLLNAME` have been removed from the Ipopt class and
509  constructors that works without arguments and with only one
510  argument (specifying the Ipopt library namestem) have been added.
511  - Method `Ipopt::finalize` has been marked as deprecated and will
512  be removed in some future Ipopt version. Users must call
513  `dispose()` explicitly.
514 - Integrated sIpopt into the main Ipopt build, that is, it is now
515  build together with Ipopt, but installed as separate library
516  and executable. Use `--disable-sipopt` to disable building sIpopt.
517 - `IPOPT_THREAD_LOCAL` now uses C++11's `thread_local` keyword if C++11
518  is available.
519 - When using a GCC-compatible compiler, Ipopt and sIpopt interface
520  functions are now declared with `visibility(default)`-attribute,
521  thus building Ipopt with `-fvisibility=hidden` still produces a
522  usable library.
523 - When using a MSVC-compatible compiler, Ipopt and sIpopt interface
524  functions are now declared with `dllimport`-attribute, so that an
525  Ipopt C++ DLL can be used.
526 - Under Windows/Msys2, DLLs are now build by default.
527 - Cygwin and MSys1 are not supported.
528 - pkg-config is now mandatory to use dependencies like ASL or HSL.
529  On Windows, make sure to use a pkg-config version that produces
530  Unix-style paths.
531 - Script "`compile`" is now used to wrap around calls of cl/icl/ifort
532  and translate GCC-style compiler flags to MSVC style.
533 - "Addlibs" files have been removed, pkg-config should be used instead.
534 - Header files are now installed in the better named
535  `$prefix/include/coin-or` instead of `$prefix/include/coin`.
536 - The default for `--prefix` is no longer the build directory, but
537  the autotools-default, probably `/usr/local`.
538 - The check for a Fortran compiler can be disabled via `--disable-f77`
539  and Ipopt can easier be build without a Fortran compiler.
540 - Lapack is no longer optional, but required. The separate check
541  for Blas and the `--with-blas` flags have been removed.
542 - `--enable-debug` does not imply `--disable-shared` anymore.
543 - Removed `--enable-debug-ipopt`, use `--enable-debug` instead.
544 - Removed configure variables `{ADD,OPT,DBG}_{C,CXX,F77}FLAGS`.
545  Use `{C,CXX,F77}FLAGS` instead.
546 - Silent build output is now enabled by default, use configure
547  flag `--disable-silent-rules` or call make with `V=1` to disable.
548 - Also for static builds, PIC objects are now generated by default,
549  use `--without-pic` to disable.
550 - The `--with-*-incdir` and `--with-*-lib` configure flags have been
551  replaced by corresponding `--with-*-cflags` and `--with-*-lflags`
552  flags. Note that the include directories need to be specified
553  via `-I<dir>` in `--with-*-cflags`.
554 - Fixed handling of `ma77_default_control` in `LSL_setMA77()`.
555 - Fixed calculation of quality function when setting option
556  `quality_function_centrality` to `reciprocal`.
557 - Fixed compiler warnings, in particular when using `-Wunused-parameter`.
558 - Changed default for `ma97_print_level` to -1. This avoids messages
559  about numerical singular systems written to stdout by default.
560 
561 ## 3.12
562 
563 ### 3.12.13 (2019-04-08)
564 
565 - fixed Pardiso settings when using Pardiso from Pardiso project
566  website (by Olaf Schenk): the new settings should provide much
567  better performance; the default for option `pardiso_order` changed
568  from `five` to `metis`.
569 - changed distinction of MKL and Basel Pardiso in configure: to
570  use MKL Pardiso, only specify MKL for Blas; to use Basel Pardiso,
571  use `--with-pardiso`
572 
573 ### 3.12.12 (2018-11-17)
574 
575 - allow for `--without-matlab-home` to disable check for Matlab [r2748]
576 - add `dppsv` to `v8-ifort` [r2746]
577 - disable error in `LibraryHandler.c` if `snprintf` detection failed [r2751]
578 
579 ### 3.12.11 (2018-09-16)
580 
581 - fill MUMPS struct with zeros when allocating in MUMPS interface [r2724]
582 - minor fix in build-system of ThirdParty/ASL
583 
584 ### 3.12.10 (2018-06-02)
585 
586 - fixed setting for parallel solve when using MKL Pardiso
587  (by t1393988511) [r2711]: parallel solve was disabled (which
588  is not the default); note, that the setting for parallel
589  factorization was not affected
590 - fixed invalid read in AMPL interface for problems without
591  objective function [r2715, #305]
592 - updated ThirdParty/ASL to retrieve updated ASL (20180528) [#305]
593 - name JIpopt library `libjipopt.dylib` on Mac OS X [r2718, #275]
594 
595 ### 3.12.9 (2018-01-15)
596 
597 - fixed memory leak in MA86 interface (by mhahn) [r2700,#283]
598 - fixed handling of time limit when reoptimizing: CPU time spend
599  was accumulated when reoptimizing, while it should have been
600  reset for each solve (by paul-scott) [r2702,r2703]
601 - fixed sign in Jacobian finite-difference approximation when point
602  was close to variable upper bounds (by Enrico Bertolazzi) [r2704]
603 
604 ### 3.12.8 (2017-06-12)
605 
606 - add define for `FORTRAN_INTEGER_TYPE` to `config_ipopt_default.h`
607 - `IpoptApplication::RethrowNonIpoptException()` now returns whether
608  non-ipopt exceptions were rethrown before the method was called.
609 
610 ### 3.12.7 (2017-02-25)
611 
612 - removed compiler flag `-pedantic-errors` to avoid problems with some
613  configure tests when using recent GCC versions
614 - fixed rare bug in handling variable/constraint names in `AmplTNLP`
615  (by G. Hackebeil) [r2673]
616 - the `get.Mumps` script in ThirdParty/Mumps now renames `libseq/mpi.h`
617  to `libseq/mumps_mpi.h` to avoid conflicts when building in a MPI
618  environment (by T. Ralphs); note that if updating an existing
619  checkout/download of Ipopt, you may have to rerun get.Mumps
620 
621 ### 3.12.6 (2016-07-20)
622 
623 - better support for custom algorithm development [r2659] (by Gabriel Hackebeil):
624  &quot;Reorganization of the `AlgorithmBuilder` class to allow easier
625  customization of the Ipopt algorithm. In particular, we wanted to
626  make use of the code that creates the `SymLinearSolver` object to
627  implement our own `SymLinearSolver` without copy-pasting everything
628  in AlgorithmBuilder.
629  `AlgorithmBuilder::BuildBasicAlgorithm` now consists of 8 method calls
630  that build the core components passed into the arguments of the
631  `IpoptAlgorithm` class. These calls are ordered based on any dependencies
632  they might have. In addition, all code for creating the `PDSystemSolver`,
633  `AugSystemSolver`, and `SymLinearSolver` has been moved into separate factory
634  methods.
635  Also, included is a change to install a few more header files with Ipopt.
636  Some of these are required to subclass AlgorithmBuilder, and the others
637  are simply some matrix types that we require.&quot;
638 - extend build system to work without Fortran compiler [r2660,r2661]:
639  If no Fortran compiler is available (`F77=unavailable`), then
640  the build system checks for functions in Blas, Lapack, and
641  Pardiso via C linkage. This seems to work when using the Intel MKL,
642  thus allowing to build Ipopt with C/C++ compilers and MKL only.
643  The linear solver loader and the CuteR interface are disabled when
644  no Fortran compiler is available. A user may have to adjust the
645  definition of `F77_FUNC` in `Ipopt/src/Common/IpoptConfig.h`.
646 
647 ### 3.12.5 (2016-04-30)
648 
649 - changed `fptr` from `long` to `void*`: the Fortran side needs to
650  make sure that it uses a big enough integer type to store a
651  C pointer, thus `void*` can be used on the C side [r2599]
652 - added additional second-order-correction method, which can be
653  selected by setting the new option `soc_method` to 1 (by Wei Wan)
654  [r2606, r2607]
655 - added parameter `allow_clobber` with default value false to
656  `IpoptApplication::Initialize()` and `OptionsList::ReadFromStream()`
657 
658 ### 3.12.4 (2015-08-09)
659 
660 - option to use regularized Hessian when doing a curvature test
661  without inertia information (`neg_curv_test_tol` > 0), new
662  option `neg_curv_test_reg` to switch back to original behavior
663  (by N.-Y. Chiang and V. Zavala Tejeda) [r2579]
664 - sIpopt: Added access to sensitivity directional derivative
665  vector (`ds/dp*(p-p0)` Eq. 14 sIpopt implementation paper). Also,
666  added an option to compute the sensitivity matrix and provide
667  access to it. Finally, added an example that shows how to
668  access the new information. (by R. Lopez-Negrete)
669 - use workaround for failing check for random number generator
670  with any gcc 4.8.x, x >= 2
671 
672 ### 3.12.3 and 3.11.11 (2015-04-15)
673 
674 - fixed bug in MA97 interface that lead to conversion issues
675  (by J. Hogg) [r2566, #260]
676 
677 ### 3.12.2 (2015-04-04)
678 
679 - revised integration of doxygen-generated documentation into build system
680  (by T. Ralphs)
681 
682 ### 3.12.1 (2015-02-13)
683 
684 - fixes to build system for dependency linking and library versioning
685 - Ipopt will now report an NLP with inconsistent variable bounds
686  or inconsistent constraints sides as infeasible instead of
687  throwing an invalid TNLP exception (by T. Kelman) [r2548]
688 
689 ### 3.12.0 (2015-01-23)
690 
691 - Library dependencies are now recorded in shared library builds,
692  which is intended to simplify linking against the Ipopt library.
693  However, the pkg-config and `ipopt_addlibs` files do not reflect
694  this change yet (it is rather experimental, imho). To restore
695  the previous behavior, use `--disable-dependency-linking` as
696  configure option.
697 - If linking against Intel MKL for Blas/lapack, use of Pardiso
698  from MKL is now automatically enabled. Note, that this will
699  change the default solver on Ipopt builds without any of the
700  linear solvers MA27, MA57, MA97, and MA86 (these take preference
701  over Pardiso). [#216]
702 - dropped support for old HSL sources (<2013; ThirdParty/HSLold)
703 - updated ASL sources, now downloaded from AMPL-MP (github)
704 - some internal changes to data structures (improved use of compound
705  component spaces) and addition of `IpLapackDppsv` (by Gabe Hackebeil)
706 
707 ## 3.11
708 
709 ### 3.11.10 (2015-01-18)
710 
711 - fix a memory allocation in Java interface in cases where `jint`
712  has a different size than `int` [r2513]
713 - the buildsystem now tries the `Accelerate` framework instead of
714  `vecLib` for finding Blas/Lapack on MacOS X
715 
716 ### 3.11.9 (2014-08-16)
717 
718 - fix compilation issue of Java interface on systems where `Index`
719  and `jint` have different size [r2498, #241]
720 - work around failing check for random number generator with gcc
721  4.8.3 [r2495, r2496]
722 - readded `IpTaggedObject.cpp` to list of sources to compile in
723  MSVS `v8-ifort` project file [r2492]
724 - work around missing support for thread-local storage with gcc < 4.5
725  on MacOS X [r2491, #243]
726 - fix call to MKL Pardiso init function [r2489]
727 - speed up Triplet to CSR converter [r2487, #234]
728 - fixed a bug in equilibration scaling where average values were
729  computed incorrectly (by V. Zverovich) [r2483]
730 
731 ### 3.11.8 (2014-04-08)
732 
733 - fixed a bug, introduced with Ipopt 3.11.0, where the tag in the
734  Ipopt's caching mechanism was not unique over time, which lead
735  to failures of Ipopt that were difficult to debug or recognize
736  (e.g., Ipopt may have stopped with an restoration failure for
737  instances that solved fine with Ipopt 3.10) [r2472, r2473]
738  I'm very thankful to Gabriel Hackebeil and Kurt Majewski for
739  their debugging effort on this issue.
740 - building Mumps with pthreads is now disabled by default [#229]
741 - fixed setting of `LD` on Windows (now set to link only iff using
742  MS/Intel compilers) [#230]
743 - fixed download link for Gnumex [r2471]
744 - for some messages about too-few-degrees-of-freedom and restoration
745  failure, the message level changed from error to strong-warning
746  [r2460, r2469]
747 - revised calls to `MPI_Init` and `MPI_Finalize` in MUMPS interface [r2467]
748  (`MPI_Init` is now called only if function `MPI_Initialized` is available
749  and MPI has not been initialized already; `MPI_Finalize` is only called
750  if Ipopt also called `MPI_Init`; ...)
751 
752 ### 3.11.7 (2013-12-18)
753 
754 - adapted PARDISO parameters when using MKL PARDISO to be close
755  to using Basel PARDISO
756 - added options `pardiso_max_iterative_refinement_steps` and
757  `pardiso_order`; the former defaults to 1 in case of MKL PARDISO,
758  which may help on instances that otherwise fail due to numerical issues
759 - removed duplicate code in `IpQualityFunctionMuOracle.cpp` [#225, r2445]
760 - fixed bug in triplet to csr converter [#226, r2446]
761 - minor changes in buildsystem
762 
763 ### 3.11.6 (2013-11-16)
764 
765 - updates to Matlab Interface build system (by T. Kelman)
766 - fix to updates of R Interface [r2416, #223]
767 - fixed `SHAREDLIBEXT` in `v8-ifort`'s `config.h` [r2426, #224]
768 - minor fixes to the buildsystem
769 
770 ### 3.11.5 (2013-10-26)
771 
772 - added method `IpoptApplication::RethrowNonIpoptException()` to enable
773  rethrowing of non-ipopt and non-`bad_alloc` exceptions catched in
774  the `*Optimize()` and `Initialization()` methods; default is still to
775  return with `NonIpopt_Exception_Thrown` status
776 - minor fixes to the buildsystem [#215, #222]
777 
778 ### 3.11.4 (2013-09-12)
779 
780 - hopefully fixed non-working linear solver loader in DLLs build with
781  MSVS/`v8-ifort` project files [r2365]
782 - allow MC19 to be loaded via linear solver loader (by J. Currie) [r2366]
783 - fixed new point flag when running dependency detector [r2368]
784 - experimental: adapt Pardiso interface to work with MKL Pardiso
785  (by J. Currie, T. Kelman) [r2369, #216]:
786  - in a few tests it has been found that Pardiso from Intel MKL nowadays
787  seems to work fine with Ipopt
788  - to use Intel MKL with Ipopt 3.11, one has to specify the MKL libs via
789  `--with-pardiso` and add `-DHAVE_PARDISO_MKL -DHAVE_PARDISO_PARALLEL`
790  to the compiler flags
791  - note that this is still an experimental feature (and thus not enabled
792  by default)
793 - updated Ipopt/R interface to version 0.8.4 [r2373]
794  - additional variables have been included in the object returned from `ipoptr`:
795  - `z_L`: final values for the lower bound multipliers
796  - `z_U`: final values for the upper bound multipliers
797  - `constraints`: final values for the constraints
798  - `lambda`: final values for the Lagrange multipliers
799  - removed `ipoptr_environment` as argument in `ipoptr` (see also r2372)
800 - fixed bug in penalty term for centrality in quality function (not used by
801  default) [#219, r2374]
802 - minor bugfixes in AMPL interface, debug print statements, and compound matrix
803  (by G. Hackebeil) [#218, r2371, r2377, r2378, r2379]
804 - download scripts for ASL, Blas, and Lapack now first try to download tarball
805  copies from the COIN-OR server
806 
807 ### 3.11.3 (2013-08-08)
808 
809 - `get.*` scripts for ThirdParty/{ASL,Blas,Lapack} now work around broken
810  ftp access to www.netlib.org.
811 
812 ### 3.11.2 (2013-07-01)
813 
814 - changed default for option `option_file_name` to `ipopt.opt`; specifying an
815  empty string for this option now disables reading of an option file [r2339]
816 - missing initial values are now set to 0.0, projected onto variable bounds,
817  in AMPL interface [r2340, #205]
818 - fixed missing variable initialization in MA97 interface [r2341, #206]
819 
820 ### 3.11.1 (2013-06-14)
821 
822 - the setup for the `v8-ifort` MSVS project changed to use dynamic runtime
823  DLLs instead of static linking, which caused crashes in debug mode
824  (by M. Roelofs) [r2301]
825 - fixed memory leaks in Java Interface (by javier) [#200, r2312]
826 - updates and fixes to MA77 and MA87 interfaces, adding support of
827  HSL 2013 codes (by J. Hogg);
828  HSL 2012 still supported when compiled with Ipopt, but the linear solver
829  loader to dynamically load a HSL library at runtime now assumes HSL 2013
830 - added option `ma97_solve_blas3` (by J. Hogg) [r2329]
831 - changed default for option `ma27_meminc_factor` from 10.0 to 2.0 [r2330]
832 - fixed bug in `ipopt_auxdata` of MATLAB Interface related to `iterfunc` [r2325]
833 
834 ### 3.11.0 (2013-05-07)
835 
836 #### Miscellaneous
837 
838 - update and extension of Ipopt documentation
839 - updated build of doxygen-generated documentation to comply with other
840  COIN-OR projects
841 - localized global variables in `TaggedObject` and `RegisteredOption`,
842  so that Ipopt should now be threadsafe as long as Ipopt objects
843  (esp. `SmartPtr`'s) are not shared between threads and a threadsafe
844  linear solver is used (e.g., MA27) [#167]
845 - no more need for whitespace character at end of options file
846 - added options `print_frequency_iter` and `print_frequency_time` to regulate
847  which iteration summary lines should be printed [#161]
848 - function evaluation timings are now available in `OrigIpoptNLP` [#86]
849 - some fixes to uncommon issues with the Ipopt `SmartPtr` [#162]
850 
851 #### Linear Solver Interfaces
852 
853 - new build system for Harwell codes (ThirdParty/HSL), which requires
854  the coin-hsl archives from http://www.hsl.rl.ac.uk/ipopt/;
855  previously downloaded HSL sources can still be used by placing them
856  into ThirdParty/HSLold, but this option will be removed in a future
857  Ipopt version
858 - new interfaces for Harwell codes HSL_MA77, HSL_MA86, and HSL_MA97;
859  see http://www.hsl.rl.ac.uk/ipopt/ about help on when to use which solver;
860  especially MA57 and HSL_MA97 should be considered as replacement for MA27;
861  however, MA27 is still the default for now
862 - changed default of `ma57_automatic_scaling` to `no` (faster in general,
863  but for higher reliability, you may want to set this option to yes)
864 
865 #### Ipopt Interfaces
866 
867 - major improvements for building the MATLAB interface (see documentation)
868 - MATLAB interface now returns number of function evaluations, too
869 - the MA57 interface can now be used with the MA57 library that comes with
870  MATLAB (configure option `--enable-matlab-ma57`; cannot use Metis)
871 - `auxdata` is now handled by a wrapper function `ipopt_auxdata.m` instead
872  of internally within the MEX code (replace Matlab call to `ipopt` with
873  `ipopt_auxdata` if using auxiliary data in any callbacks) [r2282]
874 - exposed more intermediate Ipopt information to `iterfunc` callback [r2283]
875 
876 - fixes to JIpopt buildsystem (now may work on windows and uses libtool)
877 - JIpopt now reads options file `ipopt.opt` by default, if present
878 - removed predefined `KEY_` strings in JIpopt
879 - renamed API functions that retrieve solution values in JIpopt
880 
881 - simplified installation of R interface
882 
883 ## 3.10
884 
885 ### 3.10.4 (2013-05-05)
886 
887 - fixed sign of dual values in AMPL solution again (with help of Gabe)
888  [r2169, r2170, r2184, #183]
889 - fixed bugs with reoptimizing a TNLP with all variables fixed [r2172, r2173, #179]
890 - fixed more issues with sparse data structures and non-double numbers
891  in Matlab interface (by T. Kelman) [r2191]
892 - added missing `final int` for Ipopt return code `Maximum_CpuTime_Exceeded`
893  in Java interface [r2216]
894 - fixed bug when trying to warmstart Ipopt in Java interface [r2253]
895 - fixed wrong use of `SmartPtr`'s in Java interface [r2255, r2263]
896 - fixed bug in returning final solution in Java interface [r2258]
897 - included patch in ThirdParty/Mumps to work around bugs in Mumps
898  matrix ordering routines AMF and QAMD (now give preference to AMD and METIS)
899 
900 ### 3.10.3 (2012-11-19)
901 
902 - minor fixes in MA86 interface (by Jonathan Hogg) [r2069, r2086]
903 - fix in `IpTripletToCSRConverter` for CSR forms with
904  extra entries (by Jonathan Hogg) [r2087]
905 - workaround problems with Mac OS X Lion's blas library
906  (by Frederic Hetch) [r2102, #181]
907 - the C interface now catches also Ipopt exceptions thrown
908  within the `OptimizeTNLP` call and returns `Ipopt::Unrecoverable_Exception`
909  as status [r2094, #144]
910 - fixed segmentation fault in adaptive barrier parameter update rule
911  when using the mehrotra option on unconstrained problems [r2114, #114]
912 - fixed segmentation fault in case no iterate is available in case of
913  catastrophic failure in restoration phase [r2115]
914 - fixed default for `mumps_dep_tol` to work with current Mumps versions [r2116]
915 - fixed sign of dual values in AMPL solution [r2123, #183]
916 - fixed issue with sparse gradients in Matlab interface
917  (by T. Kelman) [r2133, #187]
918 - sIPOPT (by H. Pirnay):
919  - starting values in C++ version of parametric example now
920  match AMPL version [r2098]
921  - numerical values in parametric example now match publication [r2099]
922  - added options `n_sens_steps` and `sens_boundcheck` as AMPL options [r2099]
923  - any non-zero suffix value is now accepted for `sens_init_constr` [r2100]
924  - fix typo in AMPL interface (by Weifeng Chen) [r2110]
925  - fix bug when compiling without AMPL interface [r2113]
926 - build system:
927  - updated instruction on using nowadays HSL sources (by T. Kelman)
928  - fixed issue with libdir being `<prefix>/lib64`
929 - other minor fixes
930 
931 ### 3.10.2 (2012-02-12)
932 
933 - updates to HSL interface (by Jonathan Hogg):
934  - MC68 can now be loaded dynamically, too
935  - MA86 exploits built-in scaling
936  - MA86 can choose best ordering from AMD and Metis
937  - fix for return code of MA86 for singular matrices
938 - corrected computation of Upsilon (norm of step SQUARED)
939 - updates to MSVS `v8-ifort` project files and addition of vc10
940  project files (using vc8-generated `IpoptFSS.dll`) (by Marcel Roelofs)
941 - minor bugfixes, include updates in BuildTools
942 
943 ### 3.10.1 (2011-09-20)
944 
945 - include updates in BuildTools, including new ThirdParty/Metis
946  (fix for URL to download Metis 4.0.3 release)
947 - linear solver loader prints error code when failing to load
948  library under Windows
949 - message on failure when reallocating memory in Mumps now includes
950  size of memory that was tried to be allocated
951 - added missing include of `cstdio/stdio.h` in `IpJournalist.hpp`
952 - minor fixes to build system
953 
954 ### 3.10.0 (2011-06-20)
955 
956 - move to new COIN-OR configuration and installation convention
957 - primal infeasibility output is now true infeasibility in original
958  problem formulation
959 
960 ## 3.9
961 
962 ### 3.9.3 (2011-04-07)
963 
964 - include updates in BuildTools, including new ThirdParty/Metis
965  (required to work with current metis release)
966 
967 ### 3.9.2 (2010-12-22)
968 
969 - converted from Common Public License to Eclipse Public License
970 - some bugfixes from BuildTools
971 
972 ### 3.9.1 (2010-11-26)
973 
974 - improved Hessian update for restoration phase
975 - added intermediate callback feature to C and Fortran interface
976 
977 ### 3.9.0 (2010-11-05)
978 
979 - switching to new BuildTools system
980 - added R interface (contributed by Jelmer Ypma)
981 - updates in AsNMPC (by Hans Pirnay)
982 
983 ## 3.8
984 
985 ### 3.8.3 (2010-06-29)
986 
987 - restated `SolveStatistics::TotalCPUTime` method for backward
988  compatibility
989 
990 ### 3.8.2 (2010-06-16)
991 
992 - uses MUMPS version 4.9 and Lapack version 3.2.1
993 - added AsNMPC contribution made by Hans Pirnay
994 - enhanced MA57 options
995 - several bug fixes and minor additions
996 
997 ### 3.8.1 (2009-10-30)
998 
999 - Bugfix in NLP function evaluation timing measurement. The
1000  time for the objective function gradient had been forgotten.
1001 
1002 ### 3.8.0 (2009-10-30)
1003 
1004 - Added MSVC solution with Intel Fortran compiler to generate DLLs
1005  (contributed by Marcel Roelofs). To make this work, a lot of methods
1006  in exported headers have been made virtual
1007 - changed default convergence tolerance in restoration phase (now same
1008  as regular tolerance)
1009 - output is flushed after each iteration
1010 
1011 ## 3.7
1012 
1013 ### 3.7.1 (2009-10-06)
1014 
1015 - bugfix for square problems
1016 - correct timing information (obj gradient was forgotten)
1017 - flush output buffer after each iteration
1018 - first code for iterative WSMP version (experimental and undocumented)
1019 
1020 ### 3.7.0 (2009-07-16)
1021 
1022 - a number of fixes (including those from 2009 COIN-OR Bug Squashing Party)
1023 - changes in some exposed header files to provide access to internal
1024  data structures for specific applications
1025 
1026 ## 3.6
1027 
1028 ### 3.6.1 (2009-05-01)
1029 
1030 - minor corrections in tutorial files
1031 
1032 ### 3.6.0 (2009-04-29)
1033 
1034 - new Matlab interface
1035 - added new option to limit cpu time: `max_cpu_time`
1036 - added ThirdParty directory for Metis to be used with MUMPS or MA57
1037 - updated CUTEr Makefile to make it work with CUTEr2
1038 - added files for a tutorial (including coding exercise)
1039 
1040 ## 3.5
1041 
1042 ### 3.5.5 (2009-01-13)
1043 
1044 - minor fixes regarding compilation
1045 - undocumented version of inexact method
1046 
1047 ### 3.5.4 (2008-09-29)
1048 
1049 - changed to MUMPS version 4.8.3 in externals (Mumps developers
1050  seem to have removed 4.8.1).
1051 
1052 ### 3.5.3 (2008-09-19)
1053 
1054 - changed back to MUMPS version 4.8.1 since there seem to be issues
1055  on Windows
1056 
1057 ### 3.5.2 (2008-09-18)
1058 
1059 - changed to latest version of MUMPS (4.8.2)
1060 - some bugfixes (linear algebra objects, automatic problem scaling)
1061 - made sure the subversion revision number is correct in all files
1062 - allowed general additional data and cq in `IpData` and `IpCq`
1063 
1064 ### 3.5.1 (2008-08-26)
1065 
1066 - changed to latest version of MUMPS (4.8.1)
1067 
1068 ### 3.5.0 (2008-08-25)
1069 
1070 - added `ComputeRowAMax` and `ComputeColAMax` methods to Matrix base class
1071 - changed externals for MUMPS to stable/1.1
1072 - call `finalize_solution` in more failure cases
1073  (this means that AMPL writes .sol file in more situations)
1074 - added `IpTNLPReducer` as simple way to exclude constraints from problem
1075 - several fixes, also from COIN-OR Bug Squashing Party 2008
1076 
1077 ## 3.4
1078 
1079 ### 3.4.2 (2008-07-18)
1080 
1081 - some bug fixes
1082 - added wallclock time routine
1083 - penalty function version does no longer crash if it
1084  wants to go to restoration phase (not that this really helps
1085  convergence though)
1086 
1087 ### 3.4.1 (2008-05-30)
1088 
1089 - some bug fixes
1090 - deleted `v9` MSVC files again (since `v8` works fine for `v9`)
1091 - print Ipopt version in default print level
1092 - added option that allows to change name of options file
1093  (`option_file_name`)
1094 
1095 ### 3.4.0 (2008-04-25)
1096 
1097 - added support to dynamically load HSL or Pardiso:
1098  If Ipopt has been compiled without some HSL or Pardiso solver,
1099  it can now load those solvers from a shared library at runtime
1100  without recompilation. This will make distribution of binaries
1101  easier. Does not work on all platforms yet.
1102 - several bugfixes
1103 - ensured compilation of MSVS project files (`v8` and `v9`)
1104 - new special return code for square problems
1105  (`Feasible_Point_Found` returned if dual inf not small)
1106 - new initialization option for bound multipliers
1107  (see option `bound_mult_init_method`)
1108 - added simple penalty function line search option
1109  (`line_search_method=penalty`) - not guaranteed to converge, see
1110  Ipopt implementation paper (in MathProg)
1111 - some very basic method to approximate constraint Jacobian by
1112  finite differences (not efficient, but will hopefully be extended)
1113 
1114 ## 3.3
1115 
1116 ### 3.3.5 (2008-02-28)
1117 
1118 - corrected links for Ipopt mailing list
1119 - added missing `Makefile.in` for Matlab interface
1120 - the `addlibs*` files are now installed in `share/doc/coin/Ipopt`
1121  instead of lib
1122 - updates in Matlab interface
1123 - bugfix for ticket #56
1124 
1125 ### 3.3.4 (2007-12-27)
1126 
1127 - headers are now installed in `include/coin` (no longer in `include/ipopt`)
1128 - default for `dual_inf_tol` is now 1 (instead of 1e-4)
1129 - In matlab interface, here the text from Peter Carbonetto:
1130  There have been several significant changes made to the MATLAB interface
1131  since the last release. The most important two changes are:
1132  1. Following the "warm start" feature of IPOPT, you may pass in initial
1133  estimates for the Lagrange multipliers.
1134  2. Callback routines for computing the objective, gradient (etc.) are now
1135  specified using function handles instead of strings.
1136  (Thanks to Marcus Brubaker at the University of Toronto for the initial suggestion.)
1137 
1138 ### 3.3.3 (2007-09-25)
1139 
1140 - minor changes, bug fixes
1141 
1142 ### 3.3.1 (2007-06-20)
1143 
1144 Synchronized with all changes in trunk; probably more than to be
1145 remembered. In the following a few:
1146 - support for Mumps linear solver (contributed by Damian Hocking)
1147 - `--print-options` flag for ipopt ASL solver executable to see all
1148  Ipopt options (available through `ipopt.opt` file)
1149 - added Matlab interface (contributed by Peter Carbonetto)
1150 - added support for `f2c` compiler to compiler Fortran code with
1151  MSVC++ compiler
1152 - new MSVS support (now within MSVS project and also with `f2c`)
1153 - a number of small changes/bug fixes/improvements
1154 - small change in interface (e.g., `FinalizeSolution` method)
1155 
1156 ## 3.2
1157 
1158 ### 3.2.4 (2007-04-24)
1159 
1160 - updated download script for Blas to fit netlib's recent changes
1161 - using a more recent version of BuildTools
1162 
1163 ### 3.2.3 (2006-11-29)
1164 
1165 - updated download script for Lapack to fit to netlib's recent changes
1166 
1167 ### 3.2 r795 (2006-10-11)
1168 
1169 - Bugfix in L-BFGS update
1170 - fix in configure with detection of `sizeof(int*)` on Cygwin
1171 
1172 ### 3.2.1 (2006-07-14) - dev release number 764
1173 
1174 - Bugfix in least square multiplier estimate.
1175  It mainly showed up in LBFGS with restoration phase as seg fault
1176 
1177 ### 3.2.0 (2006-07-07) - dev release number 757
1178 
1179 - changed installation procedure and directory structure to
1180  conform with new COIN-OR convention
1181 
1182 ## 3.1
1183 
1184 ### 3.1.0 (2006-04-08) - dev release number 714
1185 
1186 Several bug-fixes, improvements and additions. In particular:
1187 - new quasi-Newton approximation using L-BFGS
1188 - interfaces to linear solver MA57, WSMP, Pardiso
1189  (MUMPS and TAUCS not yet completed)
1190 - derivative checker
1191 - unit test
1192 - configure supports compilation under Cygwin with native Windows compilers
1193 - ScalableExample
1194 - user call-back method in TNLP
1195 
1196 ## 3.0
1197 
1198 ### 3.0.1 (2005-12-04)
1199 
1200 - Several corrections to Windows files
1201 - Fix termination if number of iterations is exceeded in restoration phase
1202 
1203 ### 3.0.0 (2005-08-26) - dev release number 510
1204 
1205 - First official release of the new C++ implementation of Ipopt.
1206 
1207 ## 2.2
1208 
1209 ### no new release (2005-08-19)
1210 
1211 - corrected detection of BLAS libraries for SUN (make sure the example Makefiles work)
1212 - upgrade LICENSE file to CPL version 1.0 as retrieved from www.opensource.org
1213 
1214 ### 2.2.1e (2005-05-30)
1215 
1216 - fixed sign of multipliers returned to AMPL
1217  (bug reported by Rhoda Baker and Karsten Theissen)
1218 - switched to automake 1.9.5
1219 
1220 ### no new release (2005-01-07)
1221 
1222 - bugfix for the limited memory BFGS in case of square problems
1223  (bug reported by Wanhe Zhang and Ned Nedialkov)
1224 
1225 ### 2.2.1d (2004-10-05)
1226 
1227 - Added `outlev` as an option to the AMPL solver as a synonym for `iprint`
1228 - For `iprint` = 0, the output lines per iteration are now suppressed
1229 - corrected two bugs in `configure` script (test for size of `long` etc
1230  before Fortran libraries as added to `LIBS`; prevent cycling in
1231  `make -j 1` test)
1232 - internally renamed subroutine `ERROR` to `OPTERROR` (`ERROR` had a
1233  name clash for some Fortran compiler)
1234 - avoid uninitialized variable in `update_b_lm.f`
1235 - minor correction in computation of residual in `get_step_full.F`
1236 - minor change for slack correction in `filter.F`
1237 
1238 ### 2.2.1c (2004-07-20)
1239 
1240 - corrected bug leading to very small `QTAU` in rare circumstances
1241 
1242 ### 2.2.1b (2004-05-21)
1243 
1244 - Make `DFILLINFACT` option available through AMPL interface
1245 - Now, later increase of memory requirement for Harwell solvers is also
1246  based on `DFILLINFACT`, instead of using a fixed values of 10.
1247 
1248 ### 2.2.1a (2004-05-13)
1249 
1250 - fix in `IPOPT/ipopt/mainloop.F`:
1251  The multipliers were not scaled back for low printlevel.
1252 
1253 ### no new release (2004-04-28)
1254 
1255 - fix in `IPOPT/AMPL_interface/ipoptAMPL.c`:
1256  Now the mulitpliers for the constraints are passed back to AMPL.
1257 - Added download scripts using `wget` to get ASL, BLAS, and LAPACK more easily.
1258  Thanks to Frank Wuebbeling for the hint.
1259 
1260 ### 2.2.1 (2004-04-25)
1261 
1262 - AMPL solver executable is now called `ipopt` (instead of `ipoptAMPL`).
1263  This fixed also problem with assigning IPOPT options from within
1264  AMPL. (reported by Karsten Theissen)
1265 - default value for number of iterations is now 10000 (instead of 1000)
1266 - new option: `IMAXCPUSEC` to be set to the maximum number of CPU seconds
1267  after which the algorithm should stop. The check is performed only at
1268  certain points in the algorithm, so that the executable might run longer
1269  than specified.
1270  The algorithm also stops (as before) when the file "STOP" is detected in
1271  the current directory. Finally, a call to `USER_REQUESTED_STOP` has
1272  been added if the preprocessor macro `USE_USER_REQUESTED_STOP` has been
1273  defined. If this `LOGICAL` function returns `.TRUE.`, the algorithm also
1274  stops. This feature was requested by David Ternet.
1275 - if IPOPT is run several time in a row, the counting of function
1276  evaluations is restarted after every new call of IPOPT.
1277 - in `get_step_full`, now check if the number of negative eigenvalues is LESS
1278  than then number constraints. If so, increase the pivot tolerance,
1279  and if that doesn't help, pretend that the system is singular.
1280  (this fixed a problem reported by Hans Mittelmann)
1281 - decrease default values for `DPIVTOLMAX`
1282 - suppress superflous leading zeros in iteration output. For long output
1283  (`ioutput=1`) include CPU time
1284 - a few changes regarding the inertia correction (`get_step_full.F`).
1285  This decreases CPU time significantly in a few cases.
1286 - corrected problem in C-files related to names for `struct`'s (some GNU
1287  compiler complained)
1288 - changed default options for GNU compilers (now `-O3 -funroll-loops`,
1289  no longer `-O2` and `-mieee-fp`)
1290 - no reference to MC35 in `resto_tron` if `HAVE_MC35` is not defined
1291 - `#error` preprocessor directive removed from `*.F` files, since not all
1292  compilers understand it (reported by Hans Mittelmann)
1293 - switch to automake 1.8.3
1294 
1295 ### 2.2.0 (2004-03-10)
1296 
1297 Many things have changed since the last official release.
1298 Here a few highlights:
1299 - easier installation procedure with autoconf
1300 - algorithm made more robust and efficient
1301 - new restoration phase for filter method (TRON no longer needed for
1302  full-space option anymore)
1303 - C-interface