Releases: ampl/mp
MP2NL meta-driver, Gurobi's signpow()
What's Changed
- MP2NL meta-driver: https://mp.ampl.com/modeling-tools.html#meta-driver-mp2nl
- Support tanh() and signpow() for Gurobi 13: https://mp.ampl.com/modeling-expressions.html#general-nonlinear-functions
- fix URL for nlwrite.pdf by @svigerske in #271
Full Changelog: v4.0.4...v4.1.0
NLWriter, cuOpt, Gurobi's TAN()
What's Changed
- Gurobi: Add missing TAN operation code in nonlinear expressions by @pobonomo in #263
- Add cuOpt solver to AMPL MP library by @chris-maes in #265
- add missing return to ExprArgWriter move-assign operator by @svigerske in #269
New Contributors
- @pobonomo made their first contribution in #263
- @chris-maes made their first contribution in #265
Full Changelog: v4.0.3...v4.0.4
NLWriter: OSX_DEPLOYMENT_TARGET 13.4
NLWriter declares CMAKE_OSX_DEPLOYMENT_TARGET=13.4 due to SDK 15.4 requirement for to_chars().
Full Changelog: v4.0.2...v4.0.3
NLWriter's `dtoa()`
NLWriter sets OSX_DEPLOYMENT_TARGET=13.3 by default.
To return to 10.15, configure CMake with NLW2_LIB_DMGAY_DTOA=on.
Full Changelog: v4.0.1...v4.0.2
v4.0.1
What's Changed
- NLWriter uses
std::to_chars() - remove check that is always true by @svigerske in #246
Full Changelog: v4.0.0...v4.0.1
Automatic reformulations and NL Writer
First tagged release since 2016
Overview
- Automatic reformulation framework
- Logical, combinatorial and conic constraints are reformulated into basic constructs suitable for a given solver, see https://mp.ampl.com/
- Out-multiplication of quadratics, as typical for MIQP solvers
- Piecewise-linear approximation of univariate nonlinear functions
- 9 MILP/MIQP solvers implemented in MP, they are now default AMPL binaries
- Multi-objective emulator #239
- Reformulation explorer #232
- Automatic solution check #200
- NL Writer library added in C/C++ and Python #30
- Expression tree output, suitable for (MI)NLP solver API, added in #137
Pull requests
- Not all Linux have fpu_control.h (that's a glibc specific header) by @oswaldo4 in #102
- Fixwindows by @mapgccv in #117
- Allow skip building tests with -DBUILD_TESTING=off by @zhihaoy in #123
- find_library(DL_LIBRARY dl) is wrong by @zhihaoy in #124
- CMake builtin c++11 flags by @zhihaoy in #125
- Update to aslinterface to integrate complementarity constraints by @tmigot in #112
- 64 bit windows build by @mapgccv in #127
- Update fmt calls in the MySQL test by @jamesjer in #128
- Update the gecode interface for gecode 5.x by @jamesjer in #129
- avoid load of misaligned address warning in BinaryReader by @svigerske in #134
- Added MIP backend by @mapgccv in #136
- MIPBackend: more changes by @glebbelov in #137
- Avoid jacop-related crashes due to destructor execution order by @jamesjer in #133
- Feature/options by @mapgccv in #140
- make namespace explicit when accessing fmt from fmt::internal by @svigerske in #175
- Ortools by @mapgccv in #176
- Revert "Ortools" by @mapgccv in #177
- Merge preliminary ortools driver by @mapgccv in #178
- Revert "Ortools" by @glebbelov in #179
- Revert "Revert "Ortools"" Last of 5 by @glebbelov in #181
- Revert "Revert "Ortools"" by @glebbelov in #182
- Revert "Ortools": -5 of 5 by @glebbelov in #183
- Update model-guide.rst by @4er4er4er in #186
- Mosek driver new features by @szelidvihar in #190
- Draft: Add SCIP driver by @jurgen-lentz in #205
- change scip to scipmp by @jurgen-lentz in #206
- Draft: GCG driver by @jurgen-lentz in #207
- GCG driver by @jurgen-lentz in #212
- More migration to by @jamesjer in #235
New Contributors
- @oswaldo4 made their first contribution in #102
- @mapgccv made their first contribution in #117
- @zhihaoy made their first contribution in #123
- @tmigot made their first contribution in #112
- @jamesjer made their first contribution in #128
- @svigerske made their first contribution in #134
- @glebbelov made their first contribution in #137
- @4er4er4er made their first contribution in #186
- @szelidvihar made their first contribution in #190
- @jurgen-lentz made their first contribution in #205
Full Changelog: 3.1.0...v4.0.0
3.1.0
-
Updated ASL to version 20160307: changelog.
-
Optimization problems can now be read from .nl files and strings using
ReadNLFileandReadNLStringrespectively:mp::Problem p; ReadNLFile("diet.nl", p);
-
Fixed building problem representation from .nl files with permuted indices (#92).
-
Switched to CMake 3.3 to address issues with propagation of compiler options.
-
Improved compatibility with Solaris (#88). Thanks to @gidden (Matthew Gidden).
-
Updates to the ASL C API by Dominique Orban (#65).
-
Made installation of documentation optional (#93).
-
Added missing default values for arguments in the API documentation (#91).
-
Implemented a workaround for a Google Test issue with GCC 6 (#86).
3.0.0
-
Updated ASL to version 20151209.
-
Documented common definitions: http://ampl.github.io/common.html (#33).
-
Renamed
nl.htonl-reader.h. Includingnl.hstill works, but is deprecated andnl.hwill be removed or re-purposed in the next version. -
[Breaking] Replaced
fmt::StringRefwithmp::NLStringRefinReadNLStringwhere both size and null-termination is required. This doesn't affect callers who passed C strings orstd::stringobjects. -
[Breaking] Renamed the following previously undocumented symbols:
mp::sol::UNSOLVED->mp::sol::UNCERTAINmp::expr::opcode->mp::expr::nl_opcodemp::expr::INT_DIV->mp::expr::TRUNC_DIV
The new symbols are now documented and part of the stable API.
-
[Breaking] Improved safety of the NL handler API:
-
NLHandlernow takes the second template argument,Impl, which specifies a class derived fromNLHandlerthat receives notifications of unhandled constructs via theOnUnhandledmethod. If the latter is not provided, the defaultNLHandler::OnUnhandledmethod is called which reports unhandled constructs by throwing exceptions. For the old behavior useNullNLHandler(#84). -
Added the
NullNLHandlerclass that can be used as a base class when only a subset of constructs needs to be handled. Unhandled constructs will be ignored, not reported. -
NLHandler::OnComplementaritynow takesComplInfoobject instead ofintas the third argument:void OnComplementarity(int con_index, int var_index, ComplInfo info);
-
NLHandler::OnIntSuffixandNLHandler::OnDblSuffixnow takesuf::Kindinstead ofintas the second argument:IntSuffixHandler OnIntSuffix(fmt::StringRef name, suf::Kind kind, int num_values); DblSuffixHandler OnDblSuffix(fmt::StringRef name, suf::Kind kind, int num_values);
-
-
[Breaking] Update C++ Format to version 2.0 replacing
fmt::StringRefwithfmt::CStringRefwhere null-termination is required, namelyReadNLFile,ReadNLString,ReadError,BinaryReadError. This doesn't affect callers who passed C strings orstd::stringobjects. -
[Breaking] Added NLHandler::EndInput which is called at the end of input.
-
Experimental APIs for working with optimization problems (
problem.h) and nonlinear expressions (expr.h). -
gjhnow always returns structural sparsity pattern for Hessian, not only when dual values are provided (#77). -
Fixed building ASL on GCC 5 (#78).
-
NL reader is no longer affected by the current locale (#75).
-
Added NL reader examples: nl-example.cc (#74). Thanks to @baharev (Ali Baharev).
-
Made AMPL GSL bindings compatible with GSL 2.1 (#70). Thanks to @opoplawski (Orion Poplawski).
-
Made handling of function evaluation errors more consistent between platforms (#57, #59).
-
ExprVisitorcan now handle all expression types including string expressions (#51). -
Added support for variable and constraint names (#53).
-
Better error handling in the simple ASL interface (#60).
-
The Sulum solver interface is no longer actively supported because Sulum has been discontinued.
-
Added support for common expressions to new solver interfaces.
-
New solver interfaces (
ilogcp,gecode,jacop,smpswriter,ssdsolverandsulum) don't use ASL any more. -
Fixed discovery of 64-bit ODBC libraries.
-
Fixed compilation issues with MSVC11 (due to broken implementation of variadic templates there) and other versions.
IBM/ILOG CPLEX and CP Optimizers (ilogcp)
-
Updated IBM/ILOG CPLEX CP Optimizer to version 12.6.2.
-
New option
failuredirectedsearchemphasis:Specifies the number of workers that use failure-directed search once it has started. The value does not have to be integer. For example, value 1.5 means that first worker spends 100% of the time by failure-directed search, second worker 50% and remaining workers 0%. Default =
auto(depends on actual performance of the failure-directed search). -
New option
dumpfile:Specifies the name of a file where to dump the model before solving it. This file name must have extension ".cpo". Default = "" (don't dump the model).
-
New option
exportfile:Specifies the name of a file where to export the model before solving it. This file name must have extension ".cpo". Default = "" (don't export the model).
-
New option
elementinferencelevel:Inference level for
element(IloElement) constraints. Possible values:defaultlowbasicmediumextended
The default value is
default, which allows the inference strength of allelementconstraints to be controlled viadefaultinferencelevel. -
New option
warninglevel:Specifies the highest warning level to be displayed, all warnings higher than this level are masked. CP Optimizer warning levels run from 1 to 4, so setting this option to 0 turns off all warnings. Warnings issued may indicate potential errors or inefficiencies in your model. Default = 2.
-
Don't try to retrieve dual solution for quadratically constrained problems in CPLEX.
LocalSolver (locsol)
- Update LocalSolver to version 5.0+: changes.
- Added the
terseverbosity level which now maps to custom output. Thenormalverbosity level now maps to LocalSolver verbosity 1 (#46). - Piecewise-linear term support (#46).
- Objective bound support via the
boundobjective suffix (#46). - Fixed handling of initial values and bounds.
- Added
interruptedstatus. - Fixed a segfault when using the library built with a broken version of Apple LLVM version 4.2 of clang (#82)