oliverbastert@fico.com

Xpress 8.1 has been released

Blog Post created by oliverbastert@fico.com Advocate on Feb 7, 2017

New in Release 8.1

 

  • A new problem performance Tuner is available through the Optimizer console, the API and the Mosel modelling language. The Tuner automates the search for good control settings for solving a given problem, or class of problems, more efficiently.
    • Allows for tuning of all problem types supported by the Xpress Optimizer and Xpress Nonlinear.
    • Tuning can be performed against permuted versions of the original instance in order to ensure tuned results are more robust against small problem changes.
    • A new console command, TUNE, is available for starting a tuning session on a loaded problem.
    • A new API function, XPRStune, has been introduced for tuning a problem through the API.
    • New controls have been introduced for configuring the new Tuner:
      TUNERHISTORY     Whether to re-use previous results when restarting the Tuner.
      TUNERMAXTIME    Time limit for the entire tuning session.
      TUNERMETHOD     Selects which built-in method the Tuner should use when searching through possible control combinations.
      TUNERMODE          Can be used to specify that a Tuner session should be run before a problem is solved.
      TUNEROUTPUT     Controls the amount of logging output from the Tuner.
      TUNERPERMUTE    Number of permutations of the original problem to include in a Tuner session, in addition to the original problem.
      TUNERTARGET     The Tuner goal, such as improve solve time, best bound or best solution.
      TUNERTHREADS    Number of threads used by the Tuner.
      TUNERMETHODFILE The location of a file describing which control settings to tune against.
      TUNEROUTPUTPATH A directory where Tuner results will be written to.
      TUNERSESSIONNAME String identifier for the Tuner session. Results will be recorded to a folder with this name in the TUNEROUTPUTPATH location.

 

Xpress-Optimizer

  • Dual Simplex now includes Sifting, which can speed up the solve of LPs with many more columns than rows.
    • A new control, SIFTING, has been introduced to select when to run the Sifting algorithm.
  • It is now possible to warm-start a Barrier solve by providing a primal solution, a dual solution or both. A starting solution can be loaded through the API with XPRSloadlpsol, or from a file using XPRSreadslxsol.
    • Setting the control BARSTART=-1 will cause Barrier to use a pre-loaded solution for warm-starting, if one exists.
  • A new local search heuristic is available for MIPs, based on interior point solutions. It is most useful for finding a first feasible solution.
    • A new bit 6 has been introduced in HEURSEARCHROOTSELECT and HEURSEARCHTREESELECT to enable or disable this heuristic.
  • Improved presolving for MIPs with a large number of precedence constraints.
    • A new control, PREIMPLICATIONS, has been introduced to control this feature.
  • A new control, MIPRAMPUP, has been introduced to control the ramp-up phase of parallel MIP.
  • Aggregated Mixed Integer Rounding cuts have been improved for network-type problems.
  • Flow path cuts are now disabled by default. To enable them, clear bit 11 of the CUTSELECT or the TREECUTSELECT controls.
  • The Python API is now compatible with Python 2.7.
  • The Python API now supports all Optimizer callback functions.
  • The control CPUPLATFORM for selecting vectorization support now has two additional settings:
    -1: Automatically select the highest deterministic support [SSE2, AVX].
    -2: Automatically select the highest support [SSE2, AVX, AVX2].
    Selecting AVX2 can result in a different solve path than Generic, SSE2 or AVX.
  • A new API function, XPRS_ge_setarchconsistency has been introduced. It can be used to ensure solver behavior that is consistent across systems with different levels of vectorization support [SSE2, AVX or AVX2].
  • A new control, CROSSOVERITERLIMT, has been introduced to set the iteration limit for crossover.
  • A new control, CROSSOVEROPS, has been introduced to allow for tuning of crossover.
  • Added new control CROSSOVERITERLIMT to set iteration limit for the crossover

 

Xpress-NonLinear

  • The automatic differentiation tool now supports parallel calculations. New control XSLP_CALCTHREADS can be used to manually set the number of threads used.
  • The nonlinear eliminations in presolve have been made more efficient.
  • The nonlinear presolver may now shrink the problem size. Use XSLP_PRESOLVESTATE to determine if the problem is in a presolved state. To prevent SLP from shrinking the problem size, set the XSLP_PRESOLVELEVEL control to smaller than full.
  • XSLPgetslpsol always return the solution to the original problem. XSLPgetslpsol now only return values for columns and rows present in the original problem.
  • New attributes XSLP_ORIGINALCOLS and XSLP_ORIGINALTOWS can be used to return the original number of model rows and columns in the problem.

 

Mosel 4.2.0

 

Enhancements/updates:

Mosel

  •    new option '-sdm sdm' to the the maximum depth of a stack dump. This can also be set with the environment variable MOSEL_SDMAX
  • new execution option '-cov' and command 'cover[age]' to perform code coverage of models
  • new option '-sdir dir' to select the location of profiler/debugger source and report files debugger: new command 'finish' (continue up to end of subroutine)

Language

  • new procedures 'fwrite[ln][_]' taking a stream number (integer) as the first argument. These procedures make it possible to write to an error stream
  • assertion error messages are now send to the model error stream
  • new statement 'return' to quit the current subroutine
  • new functions 'setmatherr', 'NAN' and 'isnan'
  • new control parameter 'mathctrl' to disable failure on math error

Runtime Library

  • notation "\uxxxx" can now be used to represent Unicode characters in string constants
  • after a runtime error Mosel now dumps its call stack. The maximum depth of this dump is defined using function 'XPRMsetsdmax' (default is 0)
  • new functions 'XPRMsetsdmax' and 'XPRMgetsdmax'
  • function 'getmodprop(PROP_NAME)' now returns the initial model name.
  • To get the internal unique name use property PROP_UNAME

Native interface

  • new service 'SVC_DSOSTRE' to implement a dso stream

Compiler Library

  • procedure 'setparam' is now more restrictive regarding type conversion

moseldoc

  • support for documentation of annotations (doc.annot.*)

Remote invocation

  • new command 'covres' to retrieve code coverage information (model must have been run in profiling mode)
  • new parameter 'sdmax' to set the maximum stack dump size
  • parameter 'dbgctrl': new value 'F' to continue execution up to the end of the current subroutine
  • command 'dbgflndx' now includes an additional array ('name') to report the function names. If used with no parameter it returns the line indices for all available routines. By default the result set is unsorted: option 'N' sorts it according to routine names and option 'L' uses the line indices as the sorting criteria
  • eval: new function 'getmodprop' to retrieve model information

xprmsrv

  • new option '-tc' to display the server configuration
  • configuration can now be updated while the server is running (Windows: with '-service reload' command; Unix: USR1 signal)
  • new configuration variable 'CONFDIR': this is a directory path where are located additional configuration files (read after the main file)
  • new context specific configuration variables RUN_BEFORE and RUN_AFTER
  • new notation '[context]+': append definitions only if "context" exists
  • new notation '[context]=': replace definitions "context"
  • XPRMSRV_ACCESS: definition of a network from a host name (e.g. "myhost/24")
  • XPRMSRV_ACCESS: new special identifier "SELF" (server hostname)

 

Bugs fixed:

Compiler Library

  • an issue has been resolved in the processing of annotations when option'explterm' is being used

Runtime Library

  • option EP_STRIP no longer ignored (exportprob)

 

 

Version 4.0.4 (7 October 2016)

Enhancements/updates:

+ Runtime Library

   -

 

 

Version 4.0.3 (10 August 2016)

Enhancements/updates:

+ Runtime Library

  • operation R:=S with R being a range and S a set of integers containing one element is now supported
  • improved efficiency of memory management
  • improved performance on writing text files in DOS format

 

 

+ Compiler Library

  • verification of the syntax of annotations has been improved

 

 

Bugs fixed:

+ Compiler Library

  • an issue has been resolved in the processing of multi-lines annotations

 

 

Version 4.0.2 (27 July 2016)

Enhancements/updates:

+ Runtime Library

 

 

Bugs fixed:

+ Compiler Library

   - an issue has been resolved in the handling of loop local variables

     of the form 'v=value' when 'value' is not an integer

 

 

+ Runtime Library

   - statement A+=B where both A and B are ranges and A is empty no longer

     results in a runtime error

 

 

Version 4.0.1 (6 June 2016)

Bugs fixed:

+ Runtime Library

   - a potential memory corruption has been fixed in the 'findident' function

     when it is used by an NI routine during a debugging session

   - the 'null:' IO driver no longer enforces binary mode (this was causing

     issues with XML output)

 

 

---------------------------------------------------------------------

***** mmhttp 2.2.0

Enhancements/updates:

   - new version of 'httpreply'/'httpreplycode' with an additional parameter

     to include supplementary headers to the response

   - new procedure 'httpcancel' to cancel an asynchronous request

   - new parameters 'http_maxcontime' and 'http_maxreqtime' to set maximum

     duration of requests

   - support for 'gzip' content encoding in results for httpget/put/post/del

   - new function 'httpgetheader' to extract the header of a result file

 

 

Version 2.0.1 (6 June 2016)

Bugs fixed:

   - 'urlencode' now handles UTF-8 characters properly

 

 

---------------------------------------------------------------------

***** mmjobs 2.10.1

Enhancements/updates:

   - propagate sdmax setting to remote instances

   - new procedure 'getmodprop' to retrieve model information

 

 

Bugs fixed:

   - an issue in the comparison to 'nullevent' has been fixed

   - event objects are now initialised with 'nullevent'

 

 

---------------------------------------------------------------------

***** mmnl 1.6.2

Enhancements/updates:

   - Support for control parameter 'mathctrl'

 

 

---------------------------------------------------------------------

***** mmodbc 3.2.0

Enhancements/updates:

   - extented syntax now supports 3-digits parameter indices (e.g. '?101')

   - both extended and standard syntax can now be used in the same query

   - the 'mmsqlite' driver now includes the extension functions from:

      http://www.sqlite.org/contrib/download/extension-functions.c

 

 

Bugs fixed:

   - a potential memory corruption has been fixed in the handling of empty

     results when reading sets or lists

 

 

---------------------------------------------------------------------

***** mmquad 1.2.8

Enhancements/updates:

   - LP format: append '/2' to quadratic obective

   - Support for control parameter 'mathctrl'

 

 

---------------------------------------------------------------------

***** mmsheet 1.4.1

Enhancements/updates:

   - upgrade to libxl 3.7.1

 

 

---------------------------------------------------------------------

***** mmssl 1.4.0

Enhancements/updates:

   - support for SSL operations with time limit (for https)

 

 

---------------------------------------------------------------------

***** mmsystem 2.2.0

Enhancements/updates:

   - new function 'formattext'

 

 

Bugs fixed:

   - a potential 'bus error' has been fixed in 'getsize(text)' (Sparc only)

 

 

---------------------------------------------------------------------

***** mmxml 2.2.2

Enhancements/updates:

   - new versions of 'getnode' & 'getnodes' accepting a 'text' parameter

 

 

Version 2.2.1 (6 June 2016)

Bugs fixed:

   - JSON reader: notation '\uxxxx' can now process unicode values >255

   - the default encoding of an XML document is now UTF-8

 

 

---------------------------------------------------------------------

***** mmxprs 2.10.1

Enhancements/updates:

   - new optimisation option XPRS_TUNE to enable the tuner

   - new procedure 'setarchconsistency'

 

 

---------------------------------------------------------------------

***** zlib 1.4.1

Bugs fixed:

   - a potential memory corruption has been fixed in the zip file driver

Outcomes