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