chiark / gitweb /
Merge pull request #108 from jdumas/master
[nlopt.git] / NEWS
diff --git a/NEWS b/NEWS
index 14eb9b2565ef095edb3d09d85da90bc301289d39..6a9dfc3f46a42e3dab59e55a727e054174eba268 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,297 @@
-NLopt 1.1 (28 October 2009)
+NLopt 2.4.2 (20 May 2014)
+
+* Fix CRS for empty dimensions (where lower == upper bound) (issue #13).
+
+* Improvements to CMake (thanks to @xantares) and Windows builds (issue #12).
+
+* Fix guile2 compatibility (issue #21).
+
+NLopt 2.4.1 (19 November 2013)
+
+* Use cdecl calling convention instead of stdcall on Win32, to
+  simplify shared-library usage and for consistency with Win64.
+
+NLopt 2.4 (2 November 2013)
+
+* New genetic algorithm ESCH, thanks to Carlos Henrique da Silva Santos.
+
+* Fix swig dir for VPATH builds, thanks to Sandro Vitenti for the bug report.
+
+* Use python-config program in the configure script to find the include
+  directories for Python, if possible (may be overridden by PYTHON_CONFIG
+  environment variable).
+
+* Bugfix in copy constructor for C++ and Python interfaces.
+
+* Bugfix in return value for setting min/max objective.
+
+* Handle negative rescalings in COBYLA and BOBYQA.
+
+* Plugin installation honors the configure --prefix, if any
+  (thanks to xantares@github).
+
+* Various compilation fixes for compatibility with recent software.
+
+NLopt 2.3.1 (16 September 2012)
+
+* Bug fix: COBLYA should return ROUNDOFF_LIMITED rather than XTOL_REACHED
+  if the trust-region radius underflows to zero; thanks to David Liu.
+
+* Bug fix: incorrect return value from set min/max objective.
+
+* Handle case of negative rescalings (from negative dx) in COBYLA and BOBYQA;
+  thanks to Alexander Law for the bug report
+
+NLopt 2.3 (20 July 2012)
+
+* In Matlab/Octave interface, make returning NaN from the objective
+  equivalent to nlopt_force_stop; thanks to Norman Violet for the suggestion.
+
+* Added CCSA-quadratic (NLOPT_LD_CCSAQ), similar to MMA.
+
+* Added interface for supplying a preconditioner (approximate Hessian);
+  currently only supported in CCSAQ.
+
+* When adding mconstraints, allow tol==NULL as synonym for zero tolerances.
+
+* Added missing NLOPT_LD_SLSQP constant in Matlab/Octave.
+
+* Lower tolerance for dual optimization in MMA/CCSAQ; thanks to
+  Christophe Leruste for the problem report
+
+* Fixed bug in timer, thanks to William Vaughn for the patch.
+
+* Bug fix to convergence test in sbplx; thanks to Douglas Bates.
+
+NLopt 2.2.4 (9 June 2011)
+
+* Fixed linking problem for C++ and Python shared libraries on MacOS X;
+  thanks to Volker Lorrmann for the bug report.
+
+NLopt 2.2.3 (8 June 2011)
+
+* Fixed additional re-entrancy problem in Luksan algorithms missed
+  in the previous version; thanks to Gert Wollny for the bug report.
+
+* Fixed set/get vector_storage in Fortran interface for Fortran
+  compilers with all-uppercase linkage.
+
+NLopt 2.2.2 (26 May 2011)
+
+* Added set_vector_storage API to modify the memory usage and the 
+  subspace dimension for low-storage quasi-Newton methods.
+
+* Fixed missing support for maxtime stopping criteria in Luksan and
+  ORIG_DIRECT algorithms; thanks to Jurgen Werner for the bug report.
+
+* Fixed algorithms to support the case where the lower and upper bounds
+  are equal for some variables (which effectively eliminates those
+  variables from optimization).
+
+* Added missing xtol check to SLSQP, which caused erroneous ROUNDOFF_LIMITED
+  error codes to be returned; thanks to Alexander Riess for the bug report.
+
+* Fixed slight overcounting of function evaluations for maxeval check
+  in SLSQP.
+
+* Fixed deprecated API to support xtol_abs == NULL for backward
+  compatibility (thanks to Francesco Biscani for the bug report).
+
+* Made Luksan algorithms (e.g. LBFGS and other quasi-Newton methods)
+  re-entrant; thanks to Gert Wollny for the bug report.  (Fixes
+  Gentoo bug #368685.)
+
+* Fixed bug in DIRECT (not ORIG_DIRECT), where a typo caused suboptimal
+  convergence in some cases; thanks to Sinisa Hristov for the bug report.
+
+NLopt 2.2.1 (6 September 2010)
+
+* If you compile nlopt.h with the NLOPT_DLL_EXPORT symbol #defined,
+  it now uses the dllexport directive (under Windows), useful for
+  compiling an NLopt DLL under Microsoft compilers; thanks to Benoit
+  Scherrer for the suggestion.
+
+* Handle case where copysign function is missing, e.g. on Windows;
+  thanks to Benoit Scherrer for the bug report.
+
+* Remove C99-style mixed declaration and code in a couple files, so
+  that code compiles in C89; thanks to Benoit Scherrer for the bug report.
+
+* Removed a few compiler warnings under Microsoft compilers; thanks
+  to Benoit Scherrer for the bug report.
+
+* Export nlopt_get_algorithm_name function on Windows; thanks to Ofek
+  Shilon for the bug report.
+
+* Don't use dllimport directive with lcc on Windows (which doesn't
+  support it); thanks to Laurent Vanbeylen for the bug report.
+
+* Update Nodedal README directory to indicate that Nocedal's LBFGS code
+  is now available under the GPL, and therefore may be distributed with
+  a future NLopt version (although Luksan's LBFGS code already works well).
+
+* Bug fix in set/get_xtol_abs; thanks to David Rivest-Henault for the report.
+
+NLopt 2.2 (15 July 2010)
+
+* Added SLSQP algorithm for gradient-based local optimization with
+  nonlinear constraints via sequential quadratic programming, based
+  on the implementation by Dieter Kraft that was adapted for SciPy.
+
+* Modified BOBYQA and COBYLA algorithms to support unequal initial
+  step sizes in different directions; thanks to Tom Fiddaman for pointing
+  out the need for this in the case where different directions have
+  very different scales.
+
+* Added Python module docstring; thanks to Sebastian Walter for the suggestion.
+
+* Added GUILE_INSTALL_DIR variable to allow the user to change the
+  Guile installation directory.
+
+* Added Fortran interface for vector-valued constraints.
+
+* Throw correct exceptions in Python for the add_*constraint functions;
+  thanks to Dmitrey Kroshko for the bug report.
+
+* Support forced stop and exceptions in ORIG_DIRECT algorithm.
+
+* Remove arbitrary 1e20 upper bound on function values from ORIG_DIRECT
+  code.
+
+* Bugfix in C++ interface (and some other language front-ends) when
+  deallocating the nlopt_opt object in cases like MLSL where
+  local_optimizer is used; thanks to Jurgen Werner for the bug report.
+
+NLopt 2.1.2 (8 July 2010)
+
+* The Python mconstraint (vector-valued constraint) functions
+  now pass a 2-dimensional array for the gradient argument, rather
+  than a flattened 1d array.
+
+* Improved handling of exceptions and forced stops for constrained
+  optimization, making sure that no constraints are evaluated after
+  the stop.
+
+* Return an NLOPT_INVALID_ARGS error if more than n equality constraints
+  are added in an n-dimensional problem.
+
+* Fix bug that could cause spurious NLOPT_INVALID_ARGS errors when
+  adding constraints under rare circumstances.
+
+* Eliminate a few small memory leaks that could occur under error conditions.
+
+NLopt 2.1.1 (7 July 2010)
+
+* More robust configure check for Python include directories, via
+  distutils.sysconfig.get_python_inc() and numpy.get_include().
+  Thanks to Nathaniel Smith for the tip.
+
+* Bug fix in Guile interface: added missing prefix to nlopt-version-major
+  etcetera.
+
+NLopt 2.1 (6 July 2010)
+
+* New vector-valued constraint feature; thanks to Dmitrey Kroshko of OpenOpt
+  for the suggestion.
+
+* COBYLA now accepts equality constraints.
+
+* Guard against multiple inclusion in nlopt.hpp; thanks to Saul
+  Thurrowgood for the suggestion.
+
+NLopt 2.0.2 (17 June 2010)
+
+* Fixed compilation failure in Microsoft Visual Studio, due to
+  incorrect usage of __stdcall keyword; thanks to Dave Katz for the
+  bug report.
+
+NLopt 2.0.1 (16 June 2010)
+
+* Bug fix in Fortran API (for nlo_get_ functions returning arrays).
+
+* Fixed buggy compilation with MinGW.
+
+NLopt 2.0 (15 June 2010)
+
+* New C API, that works by creating an nlopt_opt "object" and then calling
+  functions to set the optimization parameters -- much more extensible
+  than the old API (which is preserved for backwards compatibility).
+  (Updated Fortran, Matlab, and GNU Octave wrappers as well.)
+
+* C++ nlopt.hpp wrapper around C API, allowing namespaces, object
+  constructors/destructors, std::vector<double>, and exceptions
+  to be exploited.
+
+* New nlopt wrappers callable from Python and GNU Guile, generated
+  with the help of SWIG.
+
+* New 'man nlopt' manual page documenting new API.
+
+* New AUGLAG algorithm(s) implementing an augmented-Lagrangian method
+  proposed by Birgin and Martinez (2008), which supports nonlinear
+  equality and inequality constraints "wrapped around" other
+  local/global optimization methods.
+
+* Added API for nonlinear equality constraints (currently only
+  supported by AUGLAG and ISRES algorithms).
+
+* Support inequality constraints directly in ORIG_DIRECT algorithms
+  (no need to return NaN when constraint is violated).
+
+* Inequality/equality constraints now have optional tolerances that
+  are used as conditions in stopping criteria.
+
+* Pseudo-randomize simplex steps in COBYLA algorithm, improving robustness
+  by avoiding accidentally taking steps that don't improve conditioning
+  (which seems to happen sometimes with active bound constraints).  The
+  algorithm remains deterministic (a deterministic seed is used), however.
+
+* Allow COBYLA to increase the trust-region radius if the predicted improvement
+  was approximately right and the simplex is OK, following a suggestion
+  in the SAS manual for PROC NLP that seems to improve convergence speed.
+
+* Added nlopt_force_stop function to force a (graceful) halt to
+  the optimization, and corresponding NLOPT_FORCED_STOP return code.
+
+* Improved thread-safety in random-number generation: thread-local
+  storage is used for random-number state, on compilers that support
+  it (e.g. gcc, Intel, Microsoft), to make the generation thread-safe.
+  In this case, the random-number seed must be set per-thread.
+
+* Return an error in global-search algorithms if the domain is not finite.
+
+* Use stdcall convention on Windows; thanks to Alan Young for the suggestion.
+
+* Added missing absolute-tolerance criteria in Luksan algorithms; thanks
+  to Greg Nicholas for the bug report.
+
+* Fixed compilation under C++, and use C++ compiler for everything in
+  --with-cxx mode; thanks to Greg Nicholas for the bug report.
+
+* In MMA, only stop at minf_max/stopval if the point is feasible.
+
+* Fix Matlab mex file to not include unnecessary nlopt-util.h file,
+  simplifying Windows compilation.
+
+NLopt 1.2 (18 November 2009)
+
+* Added Powell's BOBYQA algorithm for box-constrained optimization
+  without derivatives, an improvement on NEWUOA.
+
+* Added ISRES genetic algorithm, supporting nonlinearly constrained
+  global optimization.
+
+* New functions nlopt_{set/get}_stochastic_population to provide
+  optional greater control over the random "population" sizes in
+  stochastic algorithms (although it still has a sensible default).
+
+* Bug fix: remove extraneous text accidentally included in nlopt.f Fortran
+  include file.
+
+* Bug fix: configure script now correctly handles Matlab installation
+  when MEX_INSTALL_DIR is specified manually by the user.
+
+NLopt 1.1 (12 November 2009)
 
 * configure script detects whether --enable-shared is required
   in order to compile Matlab and Octave plugins (as is the case
@@ -11,6 +304,10 @@ NLopt 1.1 (28 October 2009)
 * Modified COBYLA algorithm to have better support for bound
   constraints.
 
+* Added new NLOPT_ROUNDOFF_LIMITED failure code to indicate
+  cases in which optimization breaks down due to roundoff errors,
+  in which case it is possible that useful results were obtained.
+
 * Experimental support for nonlinear equality constraints via
   augmented-Lagrangian method.
 
@@ -18,6 +315,11 @@ NLopt 1.1 (28 October 2009)
   DLL, although you have to manually add #define NLOPT_DLL
   to nlopt.h *after* installing (after compiling NLopt).
 
+* Added several checks for roundoff-related breakdown to NEWUOA code.
+
+* When only a relative error tolerance is specified, no longer
+  fails to halt when exact convergence to zero is obtained.
+
 * Workaround for incompatible qsort_r functions in BSD and GNU libc
   by always using my own version; thanks to Wendy Vandoolaeghe
   and Philippe Preux for the bug report and explanation.