Releases: ampl/mp
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
ReadNLFile
andReadNLString
respectively: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.h
tonl-reader.h
. Includingnl.h
still works, but is deprecated andnl.h
will be removed or re-purposed in the next version. -
[Breaking] Replaced
fmt::StringRef
withmp::NLStringRef
inReadNLString
where both size and null-termination is required. This doesn't affect callers who passed C strings orstd::string
objects. -
[Breaking] Renamed the following previously undocumented symbols:
mp::sol::UNSOLVED
->mp::sol::UNCERTAIN
mp::expr::opcode
->mp::expr::nl_opcode
mp::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:
-
NLHandler
now takes the second template argument,Impl
, which specifies a class derived fromNLHandler
that receives notifications of unhandled constructs via theOnUnhandled
method. If the latter is not provided, the defaultNLHandler::OnUnhandled
method is called which reports unhandled constructs by throwing exceptions. For the old behavior useNullNLHandler
(#84). -
Added the
NullNLHandler
class 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::OnComplementarity
now takesComplInfo
object instead ofint
as the third argument:void OnComplementarity(int con_index, int var_index, ComplInfo info);
-
NLHandler::OnIntSuffix
andNLHandler::OnDblSuffix
now takesuf::Kind
instead ofint
as 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::StringRef
withfmt::CStringRef
where null-termination is required, namelyReadNLFile
,ReadNLString
,ReadError
,BinaryReadError
. This doesn't affect callers who passed C strings orstd::string
objects. -
[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
). -
gjh
now 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).
-
ExprVisitor
can 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
,ssdsolver
andsulum
) 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:default
low
basic
medium
extended
The default value is
default
, which allows the inference strength of allelement
constraints 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
terse
verbosity level which now maps to custom output. Thenormal
verbosity level now maps to LocalSolver verbosity 1 (#46). - Piecewise-linear term support (#46).
- Objective bound support via the
bound
objective suffix (#46). - Fixed handling of initial values and bounds.
- Added
interrupted
status. - Fixed a segfault when using the library built with a broken version of Apple LLVM version 4.2 of clang (#82)
2.1.0
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
General
- The NL reader API is now stable
- AMPL Solver Library version 20150318: changelog
- New C API for a subset of ASL functions contributed by Dominique Orban (#36)
- Improved type safety of expression API (#35)
- Added
AMPL_LIBRARY_DIR
CMake variable which specifies a directory to install AMPL function libraries relative to${CMAKE_INSTALL_PREFIX}
(#32) .mex
files are now installed in the same directory as shared libraries (#27, #32)- Fixed detection of floating-point arithmetic on non-x86 architectures (#25)
- Changed OS X deployment target to 10.7 for compatibility with older systems
- Fixed issues with the documentation (#31, #39, #41, #42, #43, #44)
- Migrated the documentation from ReadTheDocs to GitHub Pages for better stability and performance
LocalSolver
-
Updated to version 5.0
-
The
normal
verbosity is now mapped to LocalSolververbosity=1
andterse
to custom output -
Added support for piecewise-linear terms:
var x; minimize o: <<0; -1, 1>> x; option pl_linearize 0; option solver localsolver; solve;
The new option
pl_bigm
controls the artificial bound used for unbounded variables in piecewise-linear terms. -
Objective bound can now be specified with the
bound
suffix:suffix bound; minimize o: sum{i in 1..NumOrders} WastedSteel[i] suffix bound 0;
Gecode
- Updated to version 4.4.0: changes
COIN-OR Solvers
- Clp 1.16.4
- Cbc 2.9.3
- Ipopt 3.12.1
- Bonmin 1.8.1
- Couenne 0.5.3
Open-source solver binaries are available for download from the AMPL Open-Source Downloads page.
1.3.0
General
- New nl reader: source, docs
- New versioning scheme (Issue #17)
- AMPL Solver Library version 20150107: changelog
gen-expr-info
andarithchk
are no longer run at build time when cross-compiling to x86 and x86_64 (Issue #9).
Gecode
- Updated to version 4.3.2.
LocalSolver
- Improved solution log when
verbosity=normal
:
localsolver 4.5: verbosity=normal
| Moves |
Time Iter | Total Infeas Accepted Improv | Obj
1s 18363 35861 0.3% 4.4% 350 0
2s 60215 120018 0.4% 5.7% 361 0
3s 119254 237600 0.4% 5.3% 362 0
- Report the time when the best solution was found.
Binaries are available for download from the AMPL Open-Source Downloads page.