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