NEWS.md
v2.10.0 (#194, @astamm).v2.2.0.nlopt>=2.7.0.NLOPT_LD_LBFGS in place of NLOPT_LD_LBFGS_NOCEDAL when the latter is not available (in nlopt v2.9.x).x0 and eval_f in nloptr (#191, @astamm).This release fixes a breaking bug which affects nloptr and its reverse dependencies and brings some minor tweaks and corrections along the way:
2.9.x (#176, @jaganmn): specifically, the issuses were that (i) nlopt versions 2.9.x had one less algorithm in the enum list, namely NLOPT_LD_LBFGS_NOCEDAL was removed in these versions and put back in 2.10 and (ii) we were using inst/include in which we copied nlopt headers conditionally to build the package (e.g. listing it in PKG_CPPFLAGS) resulting in possible version conflicts.LinkingTo dependencies by (i) unconditionally copying headers to inst/include and (ii) fixing cmake path search (#179, @astamm).if statement inside paste() which works differently than when used inside c() (#180, @astamm).v4 (#174, @eddelbuettel).test-banana (#167, @aadler).test-global-wrapper (#166, @aadler).nloptr.c for compatibility with the R API, efficiency, and formatting (#169, @aadler).ranseed expects an unsigned long but was passed as an integer, thus reducing the range of random seeds. It is now passed as a double and converted to a long (#169, @aadler).This is a patch release to work around a bug in the CRAN checks. Specifically, one of the unit tests for the isres() algorithm was failing on some CRAN builds because convergence is stochastic with slightly different results even with the same fixed seed prior to calling the function.
This release deprecates the default behavior of the inequality equations in any wrapper function which uses them. Currently, they are calibrated to be >= 0. This version allows for the equations to be consistent with the main nloptr function, which requires <= 0. In a future release, the default behavior will switch to assuming the calibration is <= 0, and eventually, the >= 0 behavior will be removed. It also includes a large number of safety and efficiency changes, and an expansion of the unit tests to 100% coverage for all files but one. The major changes include:
hin and hinjac in the wrapper functions which use them, bringing them into compliance with the main nloptr call. This addresses Issue #148;parallel::detectCores() (contributed by @jeroen in PR #150);testthat with tinytest (See Issue #136);is.nloptr to 100%. The only file not completely covered by unit tests is nloptr.c. The uncovered calls are error messages which get trapped by tests in R before the call gets to C;C++11;isres or the warning in nl.grad).Please see the commit logs for more detailed descriptions of the changes.
This is a patch version in which:
nlopt library via nlopt/lib/libnlopt.a instead of -Lnlopt/lib -lnlopt when building nlopt from included sources to avoid potential mess where -lnlopt could look for the nlopt library in other places and possibly link with an existing too old system build of nlopt.Additionally, we contacted Simon Urbanek for updating the nlopt recipe for macOS users so that it does now match the latest v2.7.1, which should avoid nlopt to be built on the fly on CRAN machines.
This is a release mainly for increasing direct compatibility with most user cases. In details, here is the list of changes that have been made:
SystemRequirements description to make it clearer which minimal versions of cmake (>= 3.15.0) and nlopt (>= 2.7.0) are required (#100, @HenrikBengtsson).cmake is missing when needed with clearer message (#103, @eddelbuettel).cmake in the list of suggestions to install it when missing.4.0 (#111).cmake3 binary in the current path before cmake for increasing compatibility with most RHEL/CentOS users (#104, @bhogan-mitre, @HenrikBengtsson).nlopt from included sources on macOS and on Linux if no system build of NLopt (>= 2.7.0) is found.rwinlib on Windows current release (contributed by Jeroen Ooms, #92), or NLopt from Rtools42 on Windows devel (contributed by Tomas Kalibera).NEWS.md file to track changes to the package.#include <nloptrAPI.h> in several source files.hs071 (#81, @Tom-python0121).NLOPT_GN_ESCH available from R interface (contributed by Xiongtao Dai).NLOPT_MAXTIME_REACHED) and maxtime was not set to a positive number in the options, then nloptr tries a couple more times to solve the problem. This is a new approach that should solve the bug that NLopt sometimes exits a problem stating the maximum available time has been reached, even when no limit on the time has been set.auglag, cobyla, isres, mma, and slsqp will be switched from >= to <= in a future nloptr version.donttest around example in mma documentation.auglag, cobyla, isres, mma, and slsqp will be switched from >= to <= in the next nloptr version. The current version of nloptr shows a warning when using these functions with inequality constraints. This warning can be turned off with options('nloptr.show.inequality.warning' = FALSE).configure and configure.ac.nloptr.default.options from a data.frame to a function returning the data.frame.install.packages to install the tests. The tests can be run after installation with test_package(‘nloptr’). The testthat package needs to be installed and loaded to be able to run the tests.NLOPT_MAXTIME_REACHED without running any iterations with the default setting. This change solves this.suppressMessages.Makevars to replace some code in NLopt to fix compilation on Solaris as requested by Brian Ripley.INSTALL.windows.Makevars that replaces some code related to type-casting in NLopt-2.4/isres/isres.c.src/nloptr.c from CP1252 to UTF-8.-lstdc++ from linker statement. A file dummy.cpp (with C++ extension) is added to the source directory to ensure linking with C++. Thanks to Brian Ripley for bringing this up.)check.derivatives examples in two lines to comply with new package rules.inst/doc to vignettes to comply with new package rules.apacite in vignette as an update of apacite on CRAN resulted in errors.CFLAGS, CXXFLAGS from Makevars.print_level = 3. Shows values of controls (16 April 2012 on R-Forge).Makevars and Makevars.win to link to version 2.3 of NLopt compiled with --with-cxx option. This makes the StoGo algorithm available. (31 April 2013 on R-Forge).src/Makevars to LF line endings to remove a warning from R CMD check.src/Makevars.win in order for nloptr to work with his new toolchain.src/Makevars to compile a working binary for MacOS.nloptr.print.options(option="maxeval"). nloptr.print.options() shows a description of all options if called without arguments.print_options_doc = TRUE/FALSE).population = 1000).ranseed = 3141). A value of 0 uses a random seed generated by system time.tol_constraints_eq, tol_constraints_ineq).tests/banana_global.R: new test file that uses the algorithms (CRS, ISRES, MLSL) and options ranseed and population.src/nloptr.c: capture error codes from setting options.R/nloptr.print.R: output gives ‘optimal value of controls’ when status = -4 (some error code), this is changed to ‘current value of controls’.