Skip to content

Releases: ampl/mp

Automatic reformulations and NL Writer

07 Nov 05:45
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: 3.1.0...v4.0.0

3.1.0

29 Mar 16:07
Compare
Choose a tag to compare
  • Updated ASL to version 20160307: changelog.

  • Optimization problems can now be read from .nl files and strings using ReadNLFile and ReadNLString 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

03 Mar 01:51
Compare
Choose a tag to compare
  • Updated ASL to version 20151209.

  • Documented common definitions: http://ampl.github.io/common.html (#33).

  • Renamed nl.h to nl-reader.h. Including nl.h still works, but is deprecated and nl.h will be removed or re-purposed in the next version.

  • [Breaking] Replaced fmt::StringRef with mp::NLStringRef in ReadNLString where both size and null-termination is required. This doesn't affect callers who passed C strings or std::string objects.

  • [Breaking] Renamed the following previously undocumented symbols:

    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 from NLHandler that receives notifications of unhandled constructs via the OnUnhandled method. If the latter is not provided, the default NLHandler::OnUnhandled method is called which reports unhandled constructs by throwing exceptions. For the old behavior use NullNLHandler (#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 takes ComplInfo object instead of int as the third argument:

      void OnComplementarity(int con_index, int var_index, ComplInfo info);
    • NLHandler::OnIntSuffix and NLHandler::OnDblSuffix now take suf::Kind instead of int 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 with fmt::CStringRef where null-termination is required, namely ReadNLFile, ReadNLString, ReadError, BinaryReadError. This doesn't affect callers who passed C strings or std::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).

  • Fixed documentation issues (#45, #48, #66, #67, #71).

  • Made handling of function evaluation errors more consistent between platforms (#57, #59).

  • Fixed build issues (#54, #55, #62, #81, #87).

  • 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 and sulum) 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 all element constraints to be controlled via defaultinferencelevel.

  • 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. The normal 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

12 Feb 18:23
Compare
Choose a tag to compare

Deprecated inclusion of nl.h. nl-reader.h should be used instead.

2.0.4

10 Feb 16:55
Compare
Choose a tag to compare

2.0.3

17 Aug 23:06
Compare
Choose a tag to compare

Fix compilation error on OS X Yosemite (#55).

2.0.2

16 Aug 15:03
Compare
Choose a tag to compare

Fix compilation error on OS X and clang.

2.0.1

29 Mar 00:07
Compare
Choose a tag to compare

Updated versions of libmp.so and libasl.so that were incorrectly set to 1.4.0 in release 2.0.0.

2.0.0

23 Mar 23:17
Compare
Choose a tag to compare

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 LocalSolver verbosity=1 and terse 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

08 Jan 22:33
Compare
Choose a tag to compare

General

  • New nl reader: source, docs
  • New versioning scheme (Issue #17)
  • AMPL Solver Library version 20150107: changelog
  • gen-expr-info and arithchk 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.