Initializing help system before first use

Xpress Release Notes

New in Release 8.11

Back to top
Xpress Optimizer 37.01.01
  • When a MIP contains significant disconnected components, these will now be solved concurrently as separate sub-problems during the branch-and-bound tree search.
    • Supported for both deterministic and opportunistic parallel modes.
    • A new control, MIPCOMPONENTS, has been introduced to turn off this feature.
    • It is not possible to interact with the sub-problem component solves using some callbacks. If any of the following callbacks are set, this feature will be turned off and components are solved as part of a regular branch- and-bound search: optnode, prenode, cutmgr, estimate, sepnode, chgbranch, chgbranchobject
  • The ability to run multiple concurrent solves of the same MIP has been introduced. When enabled, multiple solves of the given MIP will be started in parallel, but with different random number generator seeds. The solves will all run up to a pre-determined node limit, at which point a winner is selected for the remainder of the solver.
    • A new control, MIPCONCURRENTSOLVES, has been introduced for enabling concurrent solves. On automatic setting, the number of solves started depends on the setting of MIPTHREADS.
    • A new control, MIPCONCURRENTNODES, has been introduced for specifying the concurrent node limit when a winner is selected.
    • The total number of simultaneous tasks being solved concurrently will never exceed the limit given by MAXMIPTASKS. The threading resources are shared between all concurrent solves and when a winner is selected, all resources are applied to the winning solve.
    • It is not possible to interact with the concurrent solves using some callbacks. If any of the following callbacks are set, this feature will be turned off: optnode, prenode, cutmgr, estimate, sepnode, chgbranch, chgbranchobject
  • Solution refinement has been extended to also apply to problems with a convex quadratic objective function.
  • A new control, CLAMPING, has been introduced to clamp returned solution values to be within the valid bounds. This effectively removes small primal or dual infeasibilities from a solution before it is returned.
  • It is now possible to use Barrier for reoptimizing during the sifting algorithm. A new control, SIFTSWITCH, has been introduced to control when to switch from Barrier to dual simplex during sifting.
  • The solver will now warn after the initial LP solve of a MIP if the problem is expected to have a high attention level with respect to basis condition numbers. Such a warning indicates that numerical issues are possible and that it might help to reconsider the model formulation.
  • The MIP log will now include a search completion estimate, which is a prediction from 0 to 1 about how much of the expected tree size has been searched.
  • MIP specific performance related changes
    • Symmetry based presolve reductions for the continuous part of MIPs.
    • Added new SOS1-based formulation for ABS-constraints. The new control GENCONSABSTRANSFORMATION can be used to choose between the different formulations.
    • Added new binary formulation for piecewise-linear constraints.The new control PWLNONCONVEXTRANSFORMATION can be used to choose between the different formulations.
    • Extended presolving for piecewise-linear constraints.
    • Improved handling of delayed rows.
    • The concurrent LP solver will be used after a MIP restart.
    • Probing is now independent of cutting and branching variable selection.
    • A new control, NODEPROBINGEFFORT, has been introduce for controlling the amount of effort to put into probing during the branch-and-bound search.
  • Minor changes:
    • The output log will now contain a list of all non-default control settings at the start of a solve.
  • All fixes from Xpress Update 8.10.1 (Optimizer 36.01.11).
Xpress Nonlinear 37.01.01
  • Significantly improved nonlinear presolver. New bit option XSLP_PRESOLVEOPS_NOLINEAR for control XSLP_PRESOLVEOPS to disable the new features.
  • Upgraded to Knitro 12.
  • Improved the likelyhood of SLP finding feasible solutions before convergence.
  • New API for building nonlinear problems that associate expressions to rows rather than rows and columns: XSLPaddformulas, XSLPchgformulastring, XSLPchgformula, XSLPloadformulas, XSLPgetformularows, XSLPgetformula, XSLPdelformulas. New control XSLP_KEEPEQUALSCOLUMN to determine if MPS and LP files are read with maintaining the artificial EQUALSCOLUMN or not. Defaults to not keeping the EQUALSCOLUMN.
  • New value XSLP_NLPSTATUS_UNSOLVED for XSLP_NLPSTATUS to indicate when a solve failed. This is to capture the corresponding value of XPRS_LPSTATUS.
  • The solver is now able to read nonlinear .lp files (if written with Xpress 8/12 or later).
  • Improved loading time nonlinear expression checking.

Xpress Mosel 5.4.0

Compiler Library
  • Option '-D': new annotation 'doc.include' for XML file inclusion.
Native Interface
  • New servive SRV_STATIC to identify a module that should not be unloaded.
moseldoc
  • Support for file inclusion and new option '-i' to specify the search path for included files.
mmetc 2.2.0
  • New diskdata option 'dataframe' for high performance CSV reading.
mmodbc 3.8.1
  • IMCI routine 'sqlexecute' now also receives column names.
mmxprs 3.0.0
  • New matrix loader procedure:
    • An NL problem can now be loaded via 'loadprob' before optimization.
    • Update of the objective only is now supported for QP problems expressed with 'mmnl'.
  • New parameter 'xprs_maxupdc' to enable atomic matrix update.
  • New function 'setmatcoeff' to modify the matrix loaded into the optimizer.
  • Improved handling of 'mpsol' and 'basis' entities.
mosjvm 1.1.0
  • New function 'jvmnewobj' to create Java objects
  • Can pass 'jvmobject' to 'jvmcall*' functions to call instance methods
  • If the model is stopped during a call into Java, the Java thread will be interrupted.
    • This feature slightly increases the overhead of calling from Mosel to Java, which may be noticable when making millions of such calls. In case this causes issues, it can be disabled by setting the 'jvminterrupt' parameter to 'false'.
  • On Mac, will search for Java installation in '/Library/Java/JavaVirtualMachine' if it cannot be found elsewhere
xreflect 1.0.1
  • Previously part of Xpress Insight, this module is now distributed with Xpress.
Xpress Workbench 3.3.3
  • Mac: alert user if Xpress examples are out of date, and offer to provide latest ones.
  • Support for more Python features in editor's syntax highlighter.
  • Support for Scenario Types in Insight XML companion file auto-completion.
BCL 4.10.4
  • BCL .Net now throws an exception on 'fatal' errors by default (instead of exiting the process).
Xpress Kalis 13.0.0
  • Complexity improvements for the cumulative constraint (incremental timetable computation, major speed up on cumulative scheduling problems).
  • Improve domain propagation of non-linear functions (exp, log, trigonometric).
  • Improve drastically memory consumption when using 'implies' constraints.

Fixed in Release 8.11

Back to top

Mosel 5.4.0

Compiler Library
  • The compiler now detects modifications of local runtime constants.
  • It is now required to terminate each 'requirement' statement by a newline or a ';'.
  • An issue has been fixed in the handling of the aggregate operator 'inter'.
Licensing (xprl) 3.1.3
  • Fixed issue on Linux with handling network adapter names containing certain characters.
Xpress Workbench 3.3.3
  • Fixed: issues where logging to output pane can fail to appear, or be corrupted on window resize.
  • Fixed: UI failing to update in response to changes in file system content.
BCL 4.10.4
  • Fixed .Net XPRB.beginLicensing to not automatically release the licensing mutex when a license is already acquired. Also marked XPRB.beginLicensing and XPRB.endLicensing as deprecated in favour of the equivalent XPRS functions.
Xpress Kalis 13.0.0
  • Fixed a memory leak in 'optimize' method.
  • Fixed a bug when using linear combination of cpfloatvar and '<=' operator.

Fixed in Release 8.10.1

Back to top
Xpress Optimizer 36.01.11
  • New Python API functions setLoggingEnabled() and getLoggingEnabled() to control whether Optimizer messages are written to the Python output stream.
  • Includes the following fixes from 36.01.05:
    • Fixed an issue in indicator presolving that could lead to nondeterminism with insufficient memory.
    • Fixed a performance issue with very large clique covered constraints in MIPs.
    • Fixed an issue loading Knitro from the Python interface under Linux
    • Fixed two potential memory leaks in the Python interface
    • Fixed a licensing error when using the Python interface with an OEM license
Xpress Nonlinear 36.01.11
  • Includes the following fixes from 36.01.05:
    • Fixed an issue with MINLP instances with a convex quadratic objective and indicators constraints.
    • Fixed an issue in presolve when evaluating constant expressions.

Xpress Mosel 5.2.4

Runtime Library

  • An issue has been resolved in the generation of matrix names when using dynamic packages
  • An issue that could cause an IVE crash has been resolved in the debugger interface
  • An issue has been resolved in the handling of array references

New in Release 8.10

Back to top
Xpress Optimizer 36.01.10
  • Support for compute server mode
    • Solve problems remotely on an Xpress Insight 5 worker with any Xpress application running locally.
    • No need to modify applications using Xpress to utilize the new compute server mode, the connection is initiated by setting environment variables.
    • No local license is required for Xpress applications connected to an Xpress compute server (the compute server must be licensed to allow for compute connections).
    • Remote solving of LPs, MIPs, quadratic and nonlinear problems are supported.
    • Key callbacks including logging, integer solution and gapnotify are supported in compute mode.
    • Allows solving IIS and repairinfeas problems remotely.
    • Can tune problems remotely (including in parallel if multiple Insight 5 workers are available).

Xpress Mosel 5.2.2

mmsystem 2.8.1
  • 'untar'/'unzip' now accept to extract absolute symbolic links.

mmnl 2.2.0

  • 'fmin'/'fmax' can now be used with a list or a variable number of arguments.
  • New 'pwlin' function to represent piecewise linear expressions.
mmxprs 2.22.0
  • New type 'boolvar' for expressing Boolean constraints.
  • Procedures 'loadprob(boolean,linctr)' and 'loadprob(boolean,linctr,set of mpvar)' are deprecated and will be removed in a future release ('loadprob' now always forces a reload of the problem).
python3 2.1.0
  • Python 3.8 support.
Xpress Workbench 3.3.2
  • Console error stream output starting with "INFO" will not highlight in red
Xpress Kalis 12.9.0
  • New 'cp_print_stats' subroutine to export in raw CSV format the output displayed by 'cp_show_stats'.
  • Added a warning to close a schedule before propagation and close it directly when solving.
  • 'cp_show_stats' now also shows a metric for time spent in callbacks.
  • Preprocessing on unary resources used as alternative resources: no longer use the disjunction branching.

Fixed in Release 8.10

Back to top
Xpress Optimizer 36.01.10
  • All fixes from Xpress Update 8.9.3 (Optimizer 36.01.04)
  • Fixed an issue with the save-restore functionality for nonlinear problems in the Python interface.
  • Tightened a tolerance in MIP presolve to prevent some slightly violated solutions from being returned.
  • Fixed an issue when all breakpoints of a piecewise linear function were beyond the upper bound of the input.
  • Fixed an issue detecting constant expressions in the nonlinear presolver.
Xpress Nonlinear 36.01.10
  • All fixes from Xpress Update 8.9.3 (Nonlinear 36.01.04)
  • Fixed a problem with evaluating piecewise linear functions above the largest breakpoint.
  • Fixed a problem with piecewise linear functions with fixed variables.
  • Improved performance on some problems where feasilbity is achived gradually.
  • Fixed a problem reformulating the abs value for a quadratic expression in the presolver.

Xpress Mosel 5.2.2

Runtime Library
  • Trying to initialise an array of booleans from strings using the 'bin:' driver no longer causes memory corruptions.
Compiler Library
  • Loop indices can now be dereferenced when they refer to lists or arrays.
mmjobs 2.18.2
  • Trying to run a package no longer causes a deadlock.
mmxprs 2.22.0
  • Solutions can now be accessed from callbacks when solving with XNLP.
Xpress Workbench 3.3.2
  • No longer incorrectly enabling local debug of Python files
  • In Python Insight models, the "if __name__ == '__main__'" code branch is now taken
  • New HTML File template now using correct version of Insight Javascript API
  • Workbench now detecting Insight Execution Modes when attached to declarations
  • "App has been published" message reworded when incremental publish means no upload was necessary
Xpress Kalis 12.9.0
  • Best bound now displays correctly for negative objectives.

Fixed in Release 8.9.4

Back to top
Xpress Optimizer 36.01.05
  • Fixed an issue loading Knitro from the Python interface under Linux
  • Fixed two potential memory leaks in the Python interface
  • Fixed an issue with the save-restore functionality for nonlinear problems in the Python interface.
  • Fixed a licensing error when using the Python interface with an OEM license
  • Tightened a tolerance in MIP presolve to prevent some slightly violated solutions from being returned.
  • Fixed an issue when all breakpoints of a piecewise linear function were beyond the upper bound of the input.
  • Fixed an issue detecting constant expressions in the nonlinear presolver.
  • Fixed an issue in indicator presolving that could lead to nondeterminism with insufficient memory.
  • Fixed a performance issue with very large clique covered constraints in MIPs.
Xpress Nonlinear 36.01.05
  • Fixed a problem with evaluating piecewise linear functions above the largest breakpoint.
  • Fixed a problem with piecewise linear functions with fixed variables.
  • Improved performance on some problems where feasilbity is achived gradually.
  • Fixed a problem reformulating the abs value fo a quadratic expression in the presolver.
  • Fixed an issue with MINLP instances with a convex quadratic objective and indicators constraints.
  • Fixed an issue in presolve when evaluating constant expressions.

Xpress Mosel 5.2.3

Runtime Library
  • an issue has been resolved in the handling of array references
  • trying to initialise an array of booleans from strings using the 'bin:' driver may cause memory corruptions
Compiler Library
  • loop indices can now be dereferenced when they refer to lists or arrays
mmjobs 2.18.3
  • Posix systems: correct process id displayed in case of a crash of a submodel run via 'rcmd:'
  • trying to run a package no longer causes a deadlock
mmsystem 2.8.1
  • untar/unzip now accept to extract absolute symbolic links
python3 2.1.0
  • Support of Python 3.8 on Linux and Mac and updated the documentation accordingly

Fixed in Release 8.9.3

Back to top
Xpress Optimizer 36.01.04
  • Fixed a performance issue with presolve eliminations when eliminating on very large rows.
  • Fixed an issue in which final MIP bound may exceed MIP objective
  • Fixed an issue that would ignore small bounds on integer variables in the Python interface.
  • Fixed an issue in the dual sifting algorithm.
  • Fixed an issue in the multiplication operator of the Python interface between linear expressions.
  • Fixed an issue causing the rootpresolve=1 control setting being ignored by the Optimizer.
  • Fixed a performance issue with a heuristic to reduce the number of fractionals in MIP solves.
  • Changed an example in the Python set to better reflect the original model.
  • Fixed an issue when loading semi-continuous variables with infinite lower bound.
  • Fixed an issue with piecewise linear functions in the Python interface where the value at the upper extreme of an interval is ignored if two intervals are separated, i.e., they are not contiguous.
  • XPRSsetlogfile will now issue an error if the logfile cannot be opened.
  • Fixed an issue with the MIP log that would incorrectly report unfinished for an infeasible problem.
  • Fixed an issue updating the solution value of the objective transfer column for nonlinear problems.
  • Providing an invalid file path should no longer crash XPRSwriteprtsol.
  • Fixed a problem with calculating Hessians for objective transfer rows.
  • Fixed an issue with weak dual reductions being applied globally that could lead to incorrect cutoffs and wrong solutions.
  • Fixed an issue in the pwl/gencons API that could lead to crashes if the second add-call consisted of many more breakpoints/columns per constraint than the first one.
  • Fixed an issue when all general constraints were AND/OR constraints with fixed resultant which could lead to those constraints being incorrectly ignored.
  • Fixed an issue in branching that could lead to crashes if the LP relaxation could not be solved.
  • Fixed an issue in heuristics when SOS-constraints were present.
Xpress Nonlinear 36.01.04
  • XSLP_CUTSTRATEGY was missing from xslp.h.
  • Fixed a memory leak in mmxnlp.
  • Fixed a problem in mmxnlp that could cause a crash when zero expressions are created.

Xpress Mosel 5.2.1

mosel
  • Debugger: getting a value of an array of more than 5 dimensions no longer causes a failure
  • Debugger: dereferencing an array with an empty string no longer raises an error if the cell exists
mmxprs 2.20.4
  • Solutions can now be accessed from callbacks when solving with XNLP

Fixed in Release 8.9.2

Back to top

Xpress Mosel 5.2.1

Runtime Library
  • A potential memory corruption has been fixed in the package dynamic loader
  • Calling 'setdefstream' after 'findstring' no longer raises an internal error
Compiler Library
  • '+='/'-=' applied to a local integer variable is properly compiled again
Native interface
  • On Windows 'fmove' no longer deletes the destination file if the move cannot be executed
mmhttp 3.0.1
  • HTTP server: an issue has been resolved in the processing of real values in input data
mmjobs 2.18.1
  • Accessing files via 'rmt:' no longer fails with multiple submodel depth from Workbench

New in Release 8.9.1

Back to top
General
  • MacOS-only patch updating the bundled Insight artifacts to align with Insight 4.53.1

New in Release 8.9

Back to top
Xpress Optimizer 36.01.03
  • API support for piece-wise linear functions.
    • Piece-wise linear functions that map one variable to another can be added to any supported problem type, by specifying a set of break points.
    • Added piece-wise linear functions will be reformulated using the most suitable linear MIP reformulation at the start of a solve, by introducing new variables, linear constraints and SOS entities, as required.
    • New C API functions XPRSaddpwlcons(), XPRSgetpwlcons(), XPRSdelpwlcons(). Equivalent functions have been added to the Java, .NET and Python APIs.
    • A new control, PWLDUALREDUCTIONS, has been introduce to specify whether dual reductions are allowed when reformulating piece-wise linear functions to their MILP equivalents.
    • New attributes, PWLCONS and PWLPOINTS, are now available to query the total number of respectively piece-wise linear functions and breakpoints in those functions, which are present in a problem.
  • API support for general constraints.
    • The following functions are supported: MIN, MAX, AND, OR, ABS
    • The functions take an arbitrary list of input variables and an optional constant and assigns it to a specified variable.
    • Added general constraints will be reformulated using the most suitable linear MIP reformulation at the start of a solve, by introducing new variables and linear constraints as required.
    • New C API functions XPRSaddgencons(), XPRSgetgencons(), XPRSdelgencons(). Equivalent functions have been added to the Java, .NET and Python APIs.
    • A new control, GENCONSDUALREDUCTIONS, has been introduce to specify whether dual reductions are allowed when reformulating general constraints to their MILP equivalents.
    • New attributes, GENCONS, GENCONCOLS and GENCONVALS, are now available to query the total number of respectively general constraints, columns in general constraints and constant values in general constraints, which are present in a problem.
  • XPRSfixglobals has been extended to generate the extended formulation constraints when fixing a MIP solution to a problem with piece-wise linear or general constraints.
  • The IIS tool has been extended to detect infeasibilities caused by piece-wise linear and general constraints.
  • Restarts is now a standard performance feature of MIP solves. This allows a MIP solve to reset the tree search back to the root node after a partial search.
    • A new control, MIPRESTART, has been introduced to control this feature.
    • A new attribute, TREERESTARTS, is available to query the number of partial tree restarts that have been carried out.
  • Scaling of any problem now uses a machine learning model to select the appropriate scaling algorithm to apply to a given problem. Currently selects between standard scaling (the default algorithm prior to Xpress 8.9) and Curtis-Reid scaling.
    • A new control, AUTOSCALING, has been introduce for this feature.
  • MIP solutions can now be refined to reduce or remove small deviations from exact integer values. This Fractionality Refiner is integrated with the MIP solve and might apply extra branches to remove small fractional values.
    • The MIPTOLTARGET control can be used to specify the maximum deviation from integrality in any MIP solution.
    • A new bit 11 has been introduced in the REFINEOPS control. When enabled an additional fix-and-reoptimize step is applied to any MIP solution before it is returned. Only solutions that are feasible with all integer variables fixed to exact integer values will be returned. Setting this bit implies MIPTOLTARGET=1e-15.
    • Setting the new bit 12 of the REFINEOPS control will apply the same fix-and-reoptimize step, but will not reject the final refined solution.
  • The Iterative Refiner algorithm for solution polishing to remove primal and dual violations will now return both the refined primal and dual solution values instead of recalculating them from the final basis. This is particularly useful when the Iterative Refiner uses quad precision.
  • It is now possible to specify whether to use the primal simplex, dual simplex or both, when applying the Iterative Refinement algorithm. These are specified using bits 7 and 8 of the REFINEOPS control.
  • Minor Changes:
    • The output log summary at the end of a MIP solve has been extened to display information about primal and fractionality violations in any final MIP solution.
    • New constant, XPRS_MAXBANNERLENGTH, has been added to xprs.h. It specifies the minimum buffer size required when calling XPRSgetbanner().
    • A new control, FEASTOLPERTURB, has been introduced to limit the amount of perturbation in primal simplex.
    • A new control, CROSSOVERFEASWEIGHT, has been added to change crossover behaviour.
    • A new attribute, MAXMIPINFEAS, is now available to report on the largest primal violation in a final MIP solution.
    • New attributes, ATTENTIONLEVEL and MAXKAPPA, are now available to report on the attention level and the maximum condition number, respectively, when sampling of conditions numbers has been enabled through the MIPKAPPAFREQ control.
    • The default value for the control KEEPNROWS has changed to -1, which means that free rows will automatically be dropped when reading from an MPS file.
    • All fixes from Xpress Update 8.8.4 (Optimizer 35.01.05).
Solver Python Interface
  • Added support for Python 3.8 and dropped support for Python 3.4.
  • Support for the new piece-wise linear functions and general constraints, including extensions and overloading for ease of modelling.
  • Performance improvements when handling vectors and generating large number of variables.
  • Addressed some incompatibilities when working with NumPy and Pandas.
Xpress Nonlinear 36.01.03
  • New piecewise linear function PWL.
    • A PWL function can be used as a traditional nonlinear function.
    • Alternatively, a PWL function may be reformulated to an equivalent SOS2 formulation in the nonlinear presolver.
  • Optional automatic MIP reformulations of ABS, MIN, MAX and PWL expressions.
    • A problem consisting only of nonlinear expressions using linear combination / embedded ABS, MIN, MAX and PWL functions and optionally convex quadratic formulas can now be solved to global optimality through reformulations.
  • The nonlinear license checks now only happen at solve time (calling XSLPminim, XSLPmaxim, XSLPnlpoptimize).
    • The nonlinear presolver is applyied before the first nonlinear license check.
    • This allows problems that can be fully reformulated as a MIP / convex quadratic MIP to be run through Xpress Nonlinear.
  • Mixed integer nonlinear solves now support indicator, lazy and model constraints and local MIP cuts.
    • New control XSLP_CUTSTRATEGY to optionally enable support for local cuts in the SLP in MIP strategy.
    • Local cuts are derived from the node linearizations and are not necessarily globally valid.
    • Adding local cuts can speed up the solve, but run to local infeasiblity.
  • Improved formula presolver.
    • Reduces redundancy in some large / complex nonlinear expressions to speed up the solve.
  • Improved handling of formula domain errors.
    • Nonlinear will no longer allow convergence when any expressions are violating their domain.
  • Minor Changes:
    • Excel is no longer supported for user functions.
    • The legacy xslp console executable is no longer provided (the optimizer executable provides the same functionality).
    • Several deprecated functions are removed.
    • All fixes from Xpress Update 8.8.4 (Nonlinear 35.01.05).
Xpress Mosel 5.2.0
  • It is now possible to clone models, i.e., duplicating an already loaded model in the same Mosel instance.
Language
  • It is now possible to share scalars, sets, lists and arrays between cloned models under certain conditions (new keyword shared )
  • It is now possible to declare constants of native types or records (under certain conditions), new keyword 'constant'
  • Sets can now collect constants of native types or records
  • The 'bin:' driver can now export/import module types objects in binary format (when the type supports the functionality)
  • New control parameter 'dynidxsort' (partial sorting of input data when initialising dynamic arrays) - may speed up initialisation of dynamic arrays when input data is not ordered
  • New control parameter 'sharingstatus'
  • New function 'compare' to compare two scalars of a type supporting ordering
mosel
  • New 'examine' option 'H' to inspect only the header of a bim file
  • Debugger: module and Mosel constants can now be used in expressions
Runtime Library
  • 'loadmod': new option 'h' (header) to load only the header of a bim file
  • 'loadmod' can now duplicate an already loaded model
  • 'getnextdsoconst' can now be used to retrieve the number of constants
  • Improved memory usage on concatenation of strings
  • Default compatility convention change: a1.b1.c1 is compatible with a2.b2.c2 if (a1=a2) and (b1 <=b2) Up to this release the rule was: (a1=a2) and ((b1 <b2) or ((b1=b2) and (c2 >=c1)))
  • 'resetmod' now returns an integer
  • 'gettypeprop' has new flags 'MTP_SHARE', 'MTP_TFBIN', 'MTP_TFBIN', 'MTP_ORD', 'MTP_CONST'
  • New function 'csrtoref' to retrieve the value associated to a STR_CSREF entity
Compiler Library
  • Option '-D' now supports package control parameter documentation
  • Real constants passed to '[f]write[ln]' are no longer preprocessed
xprmsrv
  • Upgrade to openssl 1.1.1 and libssh 0.8.7
BinDrv
  • New functions 'getdata' and 'putdata' to handle data blocks
Native interface
  • New tag 'S' for subroutine parameter string (temporary string)
  • New type flag 'DTYP_SHARE' for defining native types with support for data sharing
  • New type flag 'DTYP_TFBIN' for types supporting import/export in binary format (used by 'bin:' driver)
  • New type flag 'DTYP_ORD' for type implementing an ordering via the 'cmp' function
  • New type flag 'DTYP_CONST' for type supporting constant definition
  • 'gettypeprop': new flags 'MTP_SHARE,'MTP_TFBIN','MTP_ORD','MTP_CONST'
  • 'gettypeprop': new property 'TPROP_ITYPS' for getting the type array required by 'initialisations' drivers for handling entities of structure STR_CSREF
  • New entity structure 'STR_CSREF' that represents a constant of a native or record type
  • New function 'csrtoref' to retrieve the value associated to a STR_CSREF entity
  • New function 'newcsr' to a STR_CSREF entity
  • New operator @S used by the compiler as a replacement for @+ in sums (for non-commutative addition)
  • New function 'hashmix' to compute a 32bit hash value of a buffer
  • New function 'cmpval' to compare native type objects
mmetc 2.0.0
  • I/O driver diskdata: support for lists, sets and arrays of booleans and native types
  • I/O driver diskdata: new options: csv,fsep,dsep,skiph,autondx=st,emptyndx
  • I/O driver diskdata: new option: csv(c1,c2...) to select columns
  • Support for sets of constant references
mmhttp 3.0.0
  • New type 'reqqueue' and routines 'httpreqpushlim', 'httpreqpush' and 'httpreqpop' for the implementation of multithreaded http servers
mmjobs 2.18.0
  • New functions load(Model) and load(Model,Model) to clone a model
  • New procedure kill(Mosel)
mmoci 1.10.0
  • String truncation when exporting data is now reported as a failure
  • New parameter 'OCItruncsize' is the required column size after truncations have been detected
  • New parameter 'OCIautondx' and 'OCIfirstndx' to enable autoindexing mode when executing queries on arrays
  • Support for sets of constant references
mmodbc 3.8.0
  • Upgrade to SQLite 3.30.1
  • String truncation when exporting data is now reported as a failure
  • New parameter 'SQLtruncsize' is the required column size after truncations have been detected
  • New parameter 'SQLautondx' and 'SQLfirstndx' to enable autoindexing mode when executing queries on arrays
  • Support for sets of constant references
mmsheet 1.8.0
  • Upgrade to libxl 3.8.4
  • New options all drivers: autondx=st (auto index), rangesize, emptyndx
  • Support for sets of constant references
mmssl 1.6.0
  • Upgrade to openssl 1.1.1
  • New functions RSAfingerprint(k,digest), RSAprivencrypt and RSApubdecrypt
mmsystem 2.8.0
  • 'findfiles' on Windows now sorts its result using case insensitive comparisons
  • An error message is now displayed when 'system' is not executed because of restrictions
  • Support for symbolic links on Posix systems: getflstat,symlink,readlink
  • New file type SYS_LNK (symbolic link)
  • tar and zip archives now support symbolic links on Posix systems
  • Procedure 'setoserror' now also updates the system status (getsysstat)
  • New "untar"/"unzip" options SYS_VERB and SYS_NOFAIL
  • Better handling of tar format used on OSX
  • Support for binary format and order for types 'date','time' and 'datetime'
  • Support for order for type 'text'
  • 'qsort' can now handle any ordered native type
  • 'qsort' now accepts also list of arrays: each array value is used as a sorting criteria
  • It is now possible to provide a comparator function to 'qsort' (to handle complex types)
  • New function 'compareic' to compare 2 text strings ignoring case
python3 2.0.2
  • New parameter 'pyinitverbose' to activate additional logging when initializing Python.
zlib 1.6.0
  • Support for Language encoding flag (EFS) in zip files (file names in UTF-8)
  • Support for symbolic links in zip files
executor 1.0.5
  • Attribute 'dmpmanagerurl' of 'Executor' type is now deprecated, new attribute 'bearertokenurl' should be used instead.
Xpress Workbench 3.3
  • Added support for Insight apps written in Python rather than Mosel (on-premise only).
  • The view manager pane can register existing Insight View file (VDL, HMTL, Tableau) in XML Companion File.
  • When creating a new VDL View, user can select (or create if needed) the nested sub-folder(s) in which to place the file.
  • When removing a file from the view manager (hence from the companion file), an option is provided to delete the file from the project.
  • More reliable detection of Execution Modes, based on analysis of compiled rather than source code.
    • This now means that the compiled .bim must be present before custom Execution Modes will be listed, either on the Xpress Insight tab or in the View Designer.
  • View Designer
    • Palete redesign. Icons, searchable and collapsible groups.
    • VDL Set Sorter in Palette.
    • Repeat Contents on Palette and wizard
    • Support for VDL Actions and related tags. Rendering and Palette extension.
    • Execution modes attribute editor.
    • VDL Event attribute editor.
    • VDL Action wizard, creates a vdl-header if one doesn't exist and a vdl-action-group to house new VDL Action
Licensing (xprl) 3.1.1
  • Option to automatically retry failed connections to license server
  • Removed 60-checkout limit on counted licenses.
  • 'XPRSgetdaysleft' function can be used for all license types; it no longer returns an error code when user has a non-evaluation license.
BCL 4.10.3
  • The .Net XPRBbasis object now implements 'IDisposable'.
Xpress Kalis 12.8.0
  • Several refinements to the propagation mecanism to improve performance.
  • Various micro-optimizations and bug fixes.

Fixed in Release 8.8.4

Back to top

Xpress Optimizer 35.01.05

  • XPRSalter will now change the neutral row of the objective as well if the name of the row rather then **OBJ is specified.
  • XPRSalter will now read floating point numbers in full accuracy.
  • Improved numerical behavior for handling free variables with the barrier algorithm.
  • Fixed an issue in which a user function was not provided the context pointer.
  • Fixed an issue that could cause IIS to crash.
  • Fixed an issue with the analytic center presolver for MIPs, which could result in data corruption, when Barrier is used in the tree and fails to solve a node relaxation.
  • Fixed an issue with presolve implications when represolving a MIP, which could result in invalid solutions being returned.
  • Fixed an issue in the storage of branching history information that could affect performance.
  • Fixed an issue in conflict analysis that could potentially cause too short conflicts.
Xpress Nonlinear 35.01.05
  • New XSLP_NLPSTATUS for capturing solve failiures, XSLP_NLPSTATUS_UNSOLVED.

Fixed in Release 8.8.3

Back to top

Xpress Optimizer 35.01.04

  • Added support for Python 3.8 in the Xpress Python interface; support for Python 3.4 was dropped. Python 2.7 is still supported.
  • A new control, CROSSOVERFEASWEIGHT, has been added to change crossover behaviour.
  • Fixed and issue with handling of indicator constraints when presolve is turned off that could result in violated solutions being returned.
  • Fixed an issue in implied entity detection if dual reductions are disabled
  • Improved the deterministic timer for primal simplex.
  • Fixed a performance issue with the diving heuristic for large MIPs with few non-binary variables.
  • Fixed in issue in IIS that could cause a problem for infeasible MIP instances with range rows.
  • Fixed an issue involving QCQP problems that are convertible to QP instances.
  • Improved numerical behavior for estimaterowdualranges.
  • Fixed an issue that could lead to SOS-constraint with non-positive variables being dropped in presolve.
Xpress Nonlinear 35.01.04
  • Fixed an issue that could cause a crash when using XSLPchgccoef with longer than 500 token (string can be arbitrary long) formulas.
  • Improved performance of postsolving dual solutions.
BCL 4.10.2
  • Fixed possible memory leak when loading problems with both quadratic constraints and global entities or SOSs
  • Fixed possibly wrong memory allocation size for loading names into the Optimizer when loading problems with more than 16M constraints or variables

Fixed in Release 8.8.2

Xpress Optimizer 35.01.03
  • Fixed an issue that might cause reading incorrect memory areas when accessing a constraint in the Python interface.
  • Fixed an issue that could cause crash when the barrier is executed with warm-start.
  • Fixed an issue in presolve that could lead to returning infeasible solutions due to dropping wrong rows.
Xpress Mosel 5.0.3 Compiler Library
  • Various minor fixes.
mmjobs 2.16.2
  • Windows: a possible memory corruption has been fixed in the handling of the 'mempipe' driver.
mmnl 2.0.1
  • Invalid assignments now report a runtime error.
mmsystem 2.6.3
  • 'newtar' no longer generates an invalid archive with some large directory names.
mmxprs 2.20.2
  • Invalid assignments now report a runtime error.
Workbench 3.2.3
  • Fixed: Mosel processes not being cleaned up after running

Fixed in Release 8.8.1

Back to top

Xpress Optimizer 35.01.02

  • Fixed an issue in the Python interface whereby integer variables are converted to binary variables.
  • A new control, BARFAILITERLIMIT, has been added to limit the unsuccessful barrier iterations.
  • Fixed a memory leak in the loadproblem() method of the Python interface.
  • Fixed an issue in the dual simplex that could cause cycling in Phase 1.
  • Range row support added to XPRSalter.
  • Fixed a potential memory leak on Windows.
  • Fixed an issue in presolving that could lead to a wrong sign for added inequalities.
  • Fixed an issue with advanced presolving of MIPs that could result in a memory corruption.
Xpress Mosel 5.0.2 update mmhttp 2.6.1
  • When sending a query use the 'origin-form' for the query line (some buggy servers do not support 'absolute-form').
mmjobs 2.16.1
  • A submodel can no longer be marked as not running while the corresponding end-event is not yet available.
mmrobust 1.4.1
  • Support for memoryuse.

New in Release 8.8

Back to top
General
  • On macOS, the folder where the Xpress license file should be installed has changed. The license file should be placed in a folder named "FICO Xpress Config" in your Documents folder in your home directory. I.e., <HOME>/Documents/FICO Xpress Config/xpauth.xpr
Xpress Optimizer 35.01.01
  • The Solution Refiner now includes an additional option to apply Iterative Refinement. Iterative Refinement involves shifting and rescaling of the problem between iterative solves of an LP, in order to improve a linear solution. It is based on the work described in "Iterative Refinement for Linear Programming, A.M. Gleixner, D.E. Steffy, K. Wolter, ZIB Report 15-15 (May 2015)". New bits have been introduced for the REFINEOPS control for Iterative Refinement:
    • bit 5: Enable iterative refinement
    • bit 6: Use quad precision when updating the solution.
  • Memory reporting attributes have changed:
    • CURRENTMEMORY: Now reports on memory used by all objects part of the current problem solve, instead of just the queried object.
    • TOTALMEMORY: New control that reports on the total memory used by all solver objects. This includes Nonlinear and BCL.
  • It is now possible to impose memory limits on a solve. New controls have been introduced:
    • MAXMEMORYSOFT: Adjust solver behavior to stay within the given limit (not guaranteed)
    • MAXMEMORYHARD: Terminate a solve if this limit is breached. The solver will return in an interrupted state that can be resumed and where solution information is available.
    • RESOURCESTRATEGY: A new bit-vector control. If bit 1 is set, then the solver is allowed to make a non-deterministic choice based on MAXMEMORYSOFT.
  • A new control, MIPDUALREDUCTIONS, has been introduced, which can be used for disabling all dual related reductions throughout a MIP solve. This is particularly useful for users who do their own constraint generation or branching inside callbacks. This avoids having to turn off individual reductions that assume all constraints and the objective function are described completely as given in the initial formulation.
  • It is now possible to work directly with individual bits of bit-vector controls in the Tuner. When listing bit-vector controls in a method file, use ":" instead of "=" when specifying bits instead of values to use.
  • Added support for extended modelling information when reading LP and MPS file formats.
    • Added support for piece-wise linear objective functions and constraints.
    • Added support for general constraints: MIN, MAX, ABS, AND, OR
    • All such extended modelling information is converted into a linear continuous or MIP equivalent formulation at read time, potentially by introducing new constraints and variables.
  • Improved crossover and simplex performance for large scale LPs.
  • Presolve clique lifting and clique cutting for MIPs has been rewritten to remove scalability issues.
  • Fixed several MIP performance issues for very large problems.
  • Minor changes:
    • Two controls have been added for ignoring detected process control group limitations (e.g. used in "Containers") in Linux: IGNORECONTAINERSPULIMIT and IGNORECONTAINERMEMORYLIMIT
    • Extended the detection of Linux control groups (v1) to recognize more system configurations.
    • All coefficients are now written to and read from LP and MPS files exactly, meaning that when a coefficient is written to an LP/MPS file and read back in again, the exact same coefficient is recovered. This obsoletes the "z" option for the MPS file format.
    • Files written to the LP file format will now include a line identifying the version of Xpress it was written with.
    • The LP file format now supports unlimited line lengths.
Optimizer Python Interface
  • The Python interface has now a much more flexible problem.getSolution() function for evaluating expressions and aggregate Python objects.
  • Optimization problems can be specified in a compact way in the Python interface by inserting variables, constraints, and the objective function in the xpress.problem() call.
  • A much smaller memory footprint for the Python interface's modeling feature. The amount of memory required for allocating variables and constraint is substantially reduced.
Xpress Nonlinear 35.01.01
  • Redesigned formula handling when using mmxnlp:
    • Decreased memory usage when building expressions using 'nlctr' objects embedded into one another.
    • Decreased memory usage when generating identical 'nlctr' expressions.
    • Decreased peak memory usage when Mosel loads a problem.
  • Improved the nonlinear eliminator in the nonlinear presolver.
  • Nonlinear liminations are now enabled by default.
  • Support for models with more than 2^31 nonlinear tokens.
  • Parallel evaluations support for expensive blackbox functions in embedded expressions:
    • Blackbox functions depending on one another can now calculate their partial derivatives in parallel.
    • New callback 'PREUPDATELINEARIZATION'.
  • New nonlinear primal integral support:
    • New attribute XSLP_PRIMALINTEGRAL' and 'XSLP_PRIMALINTEGRALFACTOR'.
  • Nonlinear license will now be checked from Mosel only at the time of loading or solving a problem.
Xpress Mosel 5.0.2 mmnl 2.0.0
  • Improved handling of quadratic expressions.
  • Support for += and -= (that preserve constraint direction).
mmoci 1.8.1
  • In debug mode a warning is now displayed when strings are truncated.
mmodbc 3.6.0
  • mmsqlite driver: new option 'timeout' to define the busy timeout.
  • In debug mode a warning is now displayed when strings are truncated.
mmsystem 2.6.2
  • 'formattext' is no longer limited to 64k text strings.
mosjvm 1.0.13
  • Now supports Amazon Corretto JVM.
python3 2.0.1 Workbench 3.2
  • New Mosel syntax analysis to highlight errors in source code.
  • The Outline pane now works on Mosel files, as well as Javascript, and allows to jump to definition.
  • View Designer
    • Now highlights when the element hierarchy on the page breaks soft validation rules.
    • Attribute values are visible in the attributes pane when attribute is set to default
    • Element selection no longer writes a placeholder attribute into the VDL code.
    • Attributes are now organized into collapsible groups.
    • When selecting an element in the View Designer and then switching to the code editor, the code editor will jump to the selected element source
    • Copy/cut/paste operations via the clipboard are now supported in the View Designer
    • New project preference for selecting code editor or View Designer as default editor for VDL files
Xpress Kalis 12.7.0
  • Xpress Kalis is now available for MacOS.
  • The Commmunity Licence now enables a size-limited version of Xpress Kalis.
  • New procedure 'setsetuptime' to specify a setup time between two tasks iff they both require the same resource.
  • New function 'dot' for efficient computation of the scalar product between an array of decision variables and an array of numbers.

Fixed in Release 8.8

Back to top

Xpress Mosel 5.0.2

mmxprs 2.20.1
  • Memory usage information can now be retrieved from within a callback.
mmodbc 3.6.0
  • Fix for multiagg issue with median calculation on sample-weighted data.
Xpress Kalis 12.7.0
  • Fix integer overflows in cumulative resource constraint usage.
  • Fix return value of 'cp_schedule' when 'kalis_max_solutions' set to 1 and solution is suboptimal.
  • Various minor memory issues and bug fixes.
  • The Xpress Kalis examples 'runfapp[r].mos' fail to run properly under Linux.

Fixed in Release 8.7.3

Xpress Optimizer 34.01.09
  • A new control, CROSSOVERFEASWEIGHT, has been added to change crossover behaviour.
  • Added support for Python 3.8 in the Xpress Python interface; support for Python 3.4 was dropped. Python 2.7 is still supported.
  • Fixed an issue that could cause crash when the barrier is executed with warm-start.
  • Fixed an issue with advanced presolving of MIPs that could result in a memory corruption.
  • Fixed an issue in presolve that could lead to returning infeasible solutions due to dropping wrong rows.

Fixed in Release 8.7.2

Back to top
Xpress Optimizer 34.01.08
  • Fixed a leak in the loadproblem() method of the Python interface.
  • Fixed an issue in the dual simplex that could cause cycling in Phase 1.
  • Fixed an issue in the Python interface whereby using xpress.Sum() on constants is considered a non-constant object.
  • Fixed an issue where the Optimizer could crash when parallel root heuristics are enabled, and a primal solution matching the dual bound is found.
  • Fixed an issue with MIP re-presolving that could result in invalid solutions being returned.
  • Fixed a synchronization issue with parallel root heuristics that prevented termination controls set in a callback from being applied properly.
  • Fixed an issue with symmetry branching for the case when the dual simplex fails to solve the continuous node relaxation.
  • New attribute XPRS_TOTALMEMORY which can be used to retrieve the total solver memory usage in all problems.
  • The attribute XPRS_CURRENTMEMORY will now return the amount of memory used by the current problem or solve (even if called using the worker problem in a callback of a parallel solve).
  • Fixed an issue in presolving for MIPs that could result in significantly fractional values for integer variables.
  • Fixed an issue in presolving for MIPs that could lead to incorrectly declaring problems infeasible.
  • Range row support added to XPRSalter.
  • Fixed a potential memory leak on Windows.
  • Fixed an issue in presolving that could lead to a wrong sign for added inequalities.
Workbench 3.1.2
  • Fixed: when publishing, Workbench would not recompile the model if an included source file was modified.
  • Fixed: Workbench did not start up if home directory was unavailable.
  • Fixed: model schema did not appear in view designer for some models.

Fixed in Release 8.7.1

Back to top
Xpress Optimizer 34.01.07
  • Fixed an issue in the Python interface whereby a linear expression divided by a constant triggers the nonlinear solver.
  • Fixed an issue with postsolving for MIPs that could result in an invalid solution being returned.
  • Fixed an issue with presolving for MIPs that could result in an incorrect tightening of coefficients.
  • Tightened tolerances for disjunctive branching for MIPs to avoid creating undesirable disjunctive branches for numerically unstable problems.
Xpress Nonlinear 34.01.07
  • Fixed an issue in nonlinear formula eliminations in the nonlinear presolver.
  • Limited the number of automatically allowable step bound repaired infeasible iterations.
Xpress Mosel 5.0.2 mmodbc 3.4.1
  • Fix for multiagg issue with median calculation on sample-weighted data.

New in Release 8.7

Back to top
Summary
  • This release introduces the VDL View Designer for authoring VDL views in Xpress Workbench.
  • Support for 32-bit platforms has been discontinued. Supported platforms are the 64-bit variants of Windows, Linux, macOS, and SunOS.
    • (32-bit support for older versions of Xpress will proceed as normal.)
Xpress Mosel 5.0.2 moseldoc 1.4.1
  • Tabulations can now be used to separate fields in documentation annotations.
mmxprs 2.20.0
  • Optimizer problems are now created when used (e.g. to load the problem into the solver).
  • The Optimizer library is now initialized just before creating the first Optimizer problem.
mosjvm 1.0.12
  • Java threads are automatically attached to the Mosel thread on first call, and detached when the thread ends; it is no longer necessary to call jvmattachthread/jvmdetachthread to achieve optimal performance.
  • Support calling Java methods with variable numbers of arguments (Varargs methods).
Xpress Workbench 3.1.0
  • New view designer for authoring VDL views.
    • Drag and drop artboard for designing the view
    • Elements palette and attributes pane for simple access to most VDL features
    • Wizards for accelerating common actions
    • Wizards for implementing logic rules
    • Switch between artboard and code editor views seamlessly
  • New wizard for creating VDL views.
  • New pane for managing Insight views and view groups.
  • Improved launch screen with examples browser.
  • Improved Mosel compilation messages.
  • Fast incremental publish to Insight, includes only files that have been modified since last publish.
  • Support for Insight 4.51.
  • Support for VDL 4.6.
  • Updated VDL examples to version 4.6.

Fixed in Release 8.7

Back to top
Xpress Optimizer 34.01.05
  • Extra memory and core limits imposed by containers are now correctly used by the Optimizer. Two controls have been added for ignoring these limits.
  • Fixed an issue that could result in memory corruption if XPRSinit and XPRSfree are called from different threads.
  • Fixed an issue where SOS-constraints were named S1 or S2 in MPS files if no names where given, leading the MPS reader to interpret them as keywords instead of names.
  • Fixed an issue where SOS datastructures could get corrupted when changing integer columns to continuous between setting up the SOS constraints and starting the MIP-solve.
  • Fixed an issue that could cause the initial linearization to be inaccurate when eliminations are used with userfunctions.
  • Fixed an issue that could have caused the optimizer to deadlock when running low on memory.
  • Fixed an issue in the Python interface for solving quadratic nonconvex problem with a maximized objective function.
  • Fixed an issue in the Python interface that may prevent writing to file a linear problem if a nonlinear license is present.
  • Fixed an issue with parallel heuristics for MIP solves that could result in an invalid memory access.
  • Fixed an issue with parallel heuristics for MIP solves that could result in an internal error being produced.
  • Fixed a performance issue with analytic center presolving.
  • LP solves required to clean up heuristic solutions during a MIP search should now respect DEFAULTALG.
  • Fixed an issue with the component presolver for MIPs that could result in violated solutions being returned.
  • Fixed an issue that prevented LP folding from being applied to large problems when solving with Barrier without crossover.
  • Tightened some MIP presolve tolerances to avoid introducing violations in constraints with large big-M coefficients.
  • Fixed an issue where an effort limit for a MIP local search heuristic was not respected.
  • Fixed an issue with solution refinement for MIPs when the target tolerances are set tighter than the standard tolerances.
  • New option (bit 4) on PRIMALOPS to automatically terminate primal simplex solves that appear to be cycling.
Optimizer Python Interface
  • Fixed an issue in the Python interface for solving quadratic nonconvex problem with a maximized objective function.
  • Fixed an issue in the Python interface that may prevent writing to file a linear problem if a nonlinear license is present.
Xpress Nonlinear 34.01.05
  • Fixed a problem in which multistart would ignore a timeout.
Xpress Mosel 5.0.2 Compiler Library
  • An issue has been fixed in the handling of overloading subroutines between packages and modules.
Runtime Library
  • Options of driver 'raw:' are now properly identified.
mmsystem 2.6.1
  • Function 'jointext' now handles properly empty strings.
R 1.1.2
  • Fixed an issue with the optimized Rset that searched simple identifiers not only in the current GlobalEnv but also in enclosing envs.
Xpress Workbench 3.1.0
  • When connecting to Insight over HTTPS, certificates from the OS keystore are now used to verify the server.
  • Parameters provided when running a Mosel model now interpret single and double quotes correctly.
  • Project would fail to publish to Insight if the path contained a single quote character.
  • Index set names are now shown correctly when displaying array variables with single-character names in tables.
  • Intermittent glitches were present in the folder dialog when creating or opening a project.
  • Mosel source files were not detected if the path to the project contained a dollar symbol.
  • Environment variables can now be passed to Mosel models on macOS.
Licensing (xprl) 3.0.4
  • Fixed an issue with the 'xphostid' tool on some non-English installations of Windows.
  • Fixed an issue running the license server as a Windows service using the non-default account.

New in Release 8.6

Back to top
Summary
  • A major new release of Mosel. Mosel 5 introduces significant performance and functional improvements. For more information on upgrading your model to use Mosel 5, see the "Upgrading from Mosel 4 to Mosel 5" document.
  • 5% LP solver improvement, 10% MIP solver improvement across a broad range of problems, with 20% improvement on harder MIPs and 20% improvement in heuristic performance, as measured by the primal-dual integral.
  • Significantly enhanced Mosel/Python interface.
Xpress Optimizer 34.01.03
  • Information is now available in the log about numerical considerations of a problem being solved:
    • Information about the range of coefficients in the matrix, the objective and the right-hand side will now be printed at the start of any solver.
    • If numerical issues were encountered during a solve, a summary will now be printed at the end of the solve.
    • A new control, MIPKAPPAFREQ, as been introduced to allow for the sampling of the condition number (Kappa) of the LP bases encountered during a MIP solve. A summary will be printed at the end of the solve.
  • All memory usage by the Optimizer, SLP and BCL is now being tracked and is reported through the following attributes:
    • SYSTEMMEMORY - Memory not associated with any particular problem instance, such as that used by the global environment.
    • CURRENTMEMORY - Current memory usage by the problem that the attributes is queried against.
    • PEAKMEMORY - Peak memory usage by the problem that the attribute is queried against.
    • Added support for Linux control groups (e.g. Docker containers) for memory and core restrictions. These will be used for limiting the memory usage by the Optimizer and for setting a thread limit. Restrictions will be checked at initialization time (XPRSinit) only.
  • The API recorder for capturing all Optimizer API library calls has been extended to record all SLP and BCL API library calls.
  • Numerical behavior of the Barrier algorithm has been improved, in particular for quadratic/conical problems and for variables with very negative lower bounds.
  • Local search heuristics are now applied more frequently during root processing of MIPs and will also be run, by default, before or during cutting.
  • More types of rounding heuristics are now run during root cutting or during the branch-and-bound tree search.
  • A new control, PRECONVERSEPARABLE, has been introduced to enable the reformulation of quadratic constraints as second order cones. This reformulation significantly improves performance on Mixed Integer Quadratically Constrained Quadratic problems. The control is on by default when Outer Approximation is used.
  • It is now possible to scale the objective function of MIPs, by setting the OBJSCALEFACTOR control to the desired scaling factor.
  • A new tuner method has been added to the TUNERMETHOD control (value 8), which focuses on tuning heuristic performance.
  • Several changes to improve performance on MIP problems.
  • Minor changes:
    • A new callback, checktime, has been introduced for MIP solves, which will be fired when the solver deterministically checks for the time limit. It can be used for interrupting a solve.
    • A new callback, presolve, has been introduced, which will be fired immediately after a problem has been presolved.
    • New attributes, PHYSICALCORESDETECTED and PHYSICALCORESPERCPUDETECTED, are now available for obtaining the number of physical cores detected in the host system, or the number of physical cores per cpu, respectively.
    • New control REPAIRINFEASMAXTIME to limit the overall time spent when calling XPRSrepairinfeas.
    • New control ELIMFILLIN to limit the amount of fillin for individual variable eliminations during presolve.
    • New string attribute UUID that returns a 32 hexadecimal digit string containing a Universally Unique Identifier associated with the given problem. The UUID is automatically appended to the name of any global file created during a MIP solve of the problem.
    • New bit-vector control LPFLAGS to specify the algorithm(s) to use when solving an LP or the initial LP relaxation of a MIP. This control can be used instead of passing the "p", "d", "b" or "n" flags to XPRSlpoptimize or XPRSmipoptimize.
    • New API function XPRSsaveas(), similar to XPRSsave(), but which now accepts a filename.
    • The LP format file reader now accepts arbitrary line lengths. The LINELENGTH control is now deprecated.
    • Searching for an Irreducible Infeasible Set (IIS) for MIPs has been made more efficient.
Optimizer Python Interface
  • Improved speed and memory performance.
  • Added support for Python 3.7.
  • Added model, solver, and interface exception types.
Xpress Nonlinear 34.01.03
  • Improved network support in SLP through determining rows, targeting very large problems over a network structure.
  • Adaptive SLP iterations targeted at numerically difficult instances .
    • New string control 'XSLP_ITERFALLBACKOPS'
    • The Optimizer API recording facility has been extended to record all Nonlinear library API calls, including the recording of user functions.
  • New API function to load user functions:
    • XSLPadduserfunction
    • XSLPdeluserfunction
  • New API to load external libraries, designed to be used within user functions:
    • XSLPimportlibfunc
  • New initial point heuristics targeted at scenario exploration.
  • Automatic detection of doubleton eliminations connecting cascaded rows.
  • Odd integer roots negative numbers are now supported.
  • Added support for the error function and its complement: 'erf' and 'erfc'.

    Deprecated in this release: XSLPsetcbformula, XSLPsetfuncobject, XSLPsetstring, XSLPsetuniqueprefix, XSLPsetuserfuncaddress, XSLPsetuserfuncinfo, XSLPsetuserfuncobject, XSLPtime, XSLPtokencount, XSLPuserfuncinfo, XSLPvalidformula, XSLPaddcvars, XSLPaddnames, XSLPadduserfuncs, XSLPdelcvars, XSLPdeluserfuncs, XSLPfilesol, XSLPformatvalue, XSLPloaduserfuncs, XSLPparsecformula, XSLPparseformula, XSLPpreparseformula, XSLPprintmsg, XSLPqparse, XSLPgetcoefs, XSLPgetcvar, XSLPgetdtime, XSLPgetfuncinfo, XSLPgetfunctioninstance, XSLPgetfuncobject, XSLPgetmessagetype, XSLPgetnames, XSLPgetparam, XSLPgetrowinfo, XSLPgetstring, XSLPgettime, XSLPgetuserfunc, XSLPgetuserfuncaddress, XSLPgetuserfuncobject, XSLPgetversion, XSLPcalluserfunc, XSLPchgcvar, XSLPchgfuncobject, XSLPchguserfunc, XSLPchguserfuncaddress, XSLPchguserfuncobject.

Xpress Mosel 5.0
  • Packages are now handled like native modules: they are loaded dynamically at runtime when the model is loaded into memory. They can also define control parameters that are accessed via 'setparam' and 'getparam'.
  • This new handling of packages required a significant revision of how Mosel manages memory and the bim file format itself had to be redesigned. Because of these changes this new version of Mosel cannot use packages compiled with other releases and it can only run model bim files produced by Mosel 4.2 and newer.
  • The implementation of arrays has been revised: a static array is now always dense even if its indexing sets are not constant. It is therefore no longer possible to use a static array indexed by non-constant sets as a dynamic array.
Language
  • A set can now be declared as 'dynamic' (e.g. S:dynamic set of integer): sets defined this way cannot be finalised
  • Support for namespaces: new statements 'namespace','nssearch','nsgroup'
  • Initialisations blocks can export or import an entire namespace from its name
  • New option 'tagpriv' to prefix local symbols with '~' (models only)
  • New option 'dynonly' to disallow static linking of a package
  • 'uses' applied to a package no longer imports it in a model: the package remains a requirement for the model that will be imported when the model is loaded
  • Packages can now define control parameters that are accessed using 'getparam' and 'setparam'
  • Lists can now be dereferenced: l(1) is equivalent to getfirst(l) and l(0) is the same as getlast(l), l(-1) is the element before the last one etc.
  • 'list(s)' creates a list from set s and 'set(l)' creates a set from list l
  • 'list(l)' returns a copy of list l and 'set(s)' returns a copy of set s
  • New functions cutelt(l,n), cutfirst(l), cutlast(l) to extract the nth, first and last element of a list; cutfirst and cutlast can also be applied to a range
  • New function getelt(s) to get an element from a set or list
  • New function cutelt(s) to get and remove an element from a set or list
  • If T is a type name and IT an instance of this type then T(IT) returns a copy of IT (i.e. clone operator)
  • A record entity can now be created and initialised using the syntax: recnam(.fl1:=v1,.fld2:=v2...) where 'recnam' is the type name and fldi one of its fields
  • New compiler annotation '@mc.dbgmsg' to send a notification to the debugger:
    !@mc.dbgmsg break      to suspend execution and trigger debugger
    !@mc.dbgmsg traceoff   to disable tracing
    !@mc.dbgmsg traceon    to (re)enable tracing
    !@mc.dbgmsg tracelog   to log a message in the trace file
  • 'exportprob': new option EP_HEX to generate an MPS hexadecimal matrix file
  • New procedure 'setrange' to create range constraints
  • New procedure 'getcoeff(ctl,int)' to retrieve range information
  • New control parameter 'runparams', the parameters received by the model
  • New control parameter 'bimprefix' to define a list of bim prefixes
  • Procedure 'reset' can now be applied to sets,lists and arrays
  • New function 'memoryuse' to report current memory use (model, entity or a module)
  • New functions 'versionnum/versionstr' to retrieve version of Mosel and modules/packages being used by the running model
  • New array type 'hashmap' (similar use as 'dynamic')
  • 'initialisations from/to' and 'fopen' can now take any type supporting stringification (like 'text') for file name
  • Declaration of subroutines can now be done in 'declarations' blocks:
    declarations
      procedure myproc(i:integer)
    end-declarations
    ! is equivalent to:
    forward procedure myproc(i:integer)
  • New procedures 'localsetparam' and 'restoreparam'
  • Procedure 'publish' can now be use with a string as its second parameter
  • Function 'datablock' to embed data files in bim files
  • All predefined routines can now be overloaded
  • Numeric constants can nom be expressed in hexadecimal
mosel
  • New 'examine' option 'L' to load dependencies
  • New command 'trace' and execution option '-trac' to execute a model in tracing mode
  • New option '-tr fn' to define the name of the trace file (or env. variable MOSEL_TRFILE)
  • Deprecated command line option '-c' no longer supported
  • Option '-bx' now takes a list of prefixes (separated by '||') and can now be used with all commands (like -dp)
  • Options '-dp' and '-bx' can be stated several times (values are concatenated)
Remote invocation
  • New command 'profrep' (to generate result file after profiling/covering)
  • New runmode '3' to generate a trace file
  • New control 'bimprefix' to define the global list or bim prefixes
Runtime Library
  • 'getmodprop': new property 'NBBIM' (the number of bim files)
  • 'getmodprop': higher 16bits to select the bimfile
  • 'loadmod' now loads required packages when loading a package
  • 'loadmod' new option 'l' (lazy) to avoid loading dependencies of a bim file
  • New function 'getnextmoddso' to get list of used dso by a model
  • New function 'getnextpkgparam' to get list of parameters of a package
  • Improved handling of large constraints
  • New functions 'setbimprefix/getbimprefix' to set/get default bim file prefixes
  • bim files can now be loaded from a path in the 'dsopath' when the instance does not have read access under restriction
  • The runtime parameter string is now more rigorously checked
  • Functions getsetsize,getlistsize and getarrsize now return an unsigned integer
  • The default value for realfmt is now "%.10g" (was: "%g")
Compiler Library
  • Private symbols are no longer included by default (need to use -g)
  • Option '-s' (strip) no longer supported (silently ignored)
Native interface
  • New service SRV_NSGRP for defining namespace groups from a module
  • New function 'getnextmoddso' to get the list of used dso
  • New functions 'getnextanident' and 'getannotations'
  • New function 'delarrcell' to delete a cell or reset a dynamic array
  • New flag 'MM_FTYP_PTR' for function type to indicate that the function is returning a pointer to an existing entity (i.e. this is not a constructor)
  • New function 'getvcinfcause' to report the cause of a loadmatrix failure
  • New service 'SRV_MEMUSE' to report memory usage
  • New function 'memoryuse' to get memory usage of an entity
  • New function 'clsarrsrtndx' to clear sorted indices of a hashmap array
  • New file operation 'IOCTRL_SIZE' to return the size of a file
  • Function 'fsize' to get the size of a file
  • 'fopen' function of an I/O driver receives now an additional parameter to set the buffer size
  • Native routines can now return sets or lists
  • 'setdsoparam' now automatically converts the parameter value to the expected type
  • New function signature '?' (accepts an argument of any type)
  • Functions getsetsize,getlistsize and getarrsize now return an unsigned integer
XPRNLS
  • XNLSopenconv: internal buffer size can now be set using macro XNLS_OPT_BSZ
mmhttp 2.6.0
  • Support for cookies (client): http_cookies,savecookies,loadcookies,delcookies,setcookie,findcookie
  • Support for cookies (server): mksetcookie,httpreqcookies
  • New parameter 'http_freeasync' reporting the number of available asynchronous slots
  • 'httpreqfrom' and 'httpreqlabel' now return a text (instead of a string)
mmjobs 2.16.0
  • Support for 'getfsize' on 'shmem:' and 'rmt:'
  • New procedure 'waitforend' to wait for termination of a model
  • New functions 'getdsopropnum','getmodpropnum' to retrieve numerical properties as reals (instead of strings)
  • rmt driver: buffer size can now be changed (from 2k to 64k)
  • [re]setmodpar routines can now be used with text parameter names
  • compile/load/connect can now be used with text parameters
mmnl 1.10.0
  • Improved handling of runtime constants in expressions
mmoci 1.8.0
  • OCIlogon can now be used with 'text' instead of 'string'
mmquad 1.4.0
  • MPS format: support for EP_HEX
  • Improved handling of large quadratic expressions
mmsheet 1.6.0
  • Support for 'fgetsize' applied to an open file
  • New CSV option 'alltxt' to disable type detection
mmssl 1.4.5
  • Improved error detection in the base64 IO driver
mmsystem 2.6.0
  • 'getfsize' can now be used with extended file names
  • 'sysinfo' now also report total amount of system memory (SYS_RAM)
  • New option 'SYS_FLAT' for 'untar' and 'unzip'
  • New routines setoserror,getoserror,getoserrmsg,erase
  • New function jointext and splittext
  • New time formats '%f' and '%F' for milliseconds processing
  • New routines 'getdsoparam' and 'setdsoparam'
mmxml 2.2.5
  • Namespace prefixes can now be used in search paths
mmxprs 2.18.0
  • New procedure 'readsol' to load an mpsol from a file
  • The matrix is no longer reloaded when only the objective has been updated and it is of type 'qexp' (full reload still occurs with 'nlctr' objectives)
  • PREINTSOL callback now requires an integer as its first parameter (instead of a boolean before)
python3 2.0.0
  • Update requirements: Models that have been compiled with Mosel 4 and use python3, have to be recompiled with Mosel 5.
  • Support for pandas DataFrame, pandas Series, NumPy ndarray, and NumPy scalar types.
  • Support for Mosel text type conversion.
  • New parameter 'pyusepandas' for choosing Python target type for Mosel array conversion.
  • New procedure 'pyinitpandas' to initialize pandas interface.
  • New routine family 'pycall*' to call a Python function with input arguments and get the return value.
  • New routine family 'pyget*' to evaluate a Python expression and get the return value.
  • New procedure 'pygetdf' to initialize a list of Mosel arrays from a pandas DataFrame.
  • New procedure 'pyset' to assign a Mosel value to global Python variable.
  • New procedure 'pysetdf' to assign a list of Mosel arrays to a pandas DataFrame.
  • Support empty file name in I/O driver to access global Python variables: "python:".
  • Support Python string evaluation in "initializations from" blocks when extended file name is "python:".
R 1.1.01
  • Added 'Rsetdf' function
  • Added 'syncwritecon' parameter to enable synchronization in the 'WriteConsole' callback
  • Improved evaluation speed for R expressions consisting of a single simple identifier
  • Default R installation locations for 64bit Linux now include both /usr/lib64/R and /usr/lib/R
  • Mosel security restrictions check is delayed to R init time (instead of module init time)
  • Improved handling of R factors with faster conversion to Mosel strings
mosjvm 1.0.11
  • Parameters relating to JVM startup are now shared by all models in the Mosel process.
  • New parameter "jvmloaded" for checking if the JVM has already been loaded.
  • Now supports Java 8 and Java 11.
Xpress Workbench 3.0.2
  • Support for Mosel 5 and Insight 4.50.
  • New module browser sidebar shows all Mosel modules and their exported symbols.
  • Inline documentation is now shown when autocompleting symbols from Mosel modules.
  • Improved autocompletion of Mosel statements.
  • Mosel models can now be run in trace mode.
  • Bim files are now compiled into an output folder in the project, by default /out, and the master bim file is copied into the root of the archive only on publish or download app. Therefore any legacy bim file in the root of a project is obsolete and should be deleted to avoid confusion.
  • When compiling a Mosel model, the directory where bim files are created can now be specified.
  • New module browser sidebar shows all Mosel modules and their exported symbols.
  • Inline documentation is now shown when autocompleting symbols from Mosel modules.
  • Improved autocompletion of Mosel statements.
  • Mosel models can now be run in trace mode.
  • When compiling a Mosel model, the directory where bim files are created can now be specified.
  • When connecting to Insight over HTTPS, certificates from the OS keystore are now used to verify the server.
BCL 4.10.0
  • Integrated BCL into the Optimizer library (linking of xprb is no longer required)
  • The .Net class XPRBprobStruct has been obsoleted
Xpress Kalis 12.6.3
  • Added a 'table_constraint' which implements a Generalized-Arc-Consistency Table constraint.

Fixed in Release 8.6

Back to top
Xpress Optimizer 34.01.03
  • Fixed an issue with presolving of dominated singleton columns.
Xpress Workbench 3.0.2
  • Fixed an issue where externally edited files were being overwritten by Workbench when autosave is enabled.
  • Fixed an issue where updated Mosel model would not be published to Insight if a bim file already exists.
  • Fixed an issue where the debugger will not connect if the Workbench window is too narrow.
  • Fixed an issue where directories within a Workbench project cannot be deleted or renamed when the project is open.
  • Fixed an issue on macOS where Mosel models cannot be run when the project path is too long.
  • Fixed an issue where error messages printed by submodels are not displayed when the master model is run in Workbench.
  • Fixed an issue where interrupting an Insight debug session would leave the scenario executing until manually cancelled from the Insight job queue.
  • Fixed an issue where Workbench could hang when the .c9 directory was not present in the home directory.
BCL 4.10.0
  • Fixed C++ disabling of implicit XPRBprob copy assignment operator
  • Fixed .Net setObj(XPRBexpr) method to prevent the expression to be garbage-collected while still in use
Xpress Kalis 12.6.3
  • Fixed bug in relaxation framework.
  • Other minor memory issues and bug fixes.
Back to top
  • When using the mmodbc module to access a MySQL database on macOS, we recommend using MySQL Connector/ODBC version 5.2, as 5.3 and 8.0 can silently fail to perform bulk updates due to MySQL bug #95608.

Fixed in Release 8.5.11

Back to top
Xpress Optimizer 33.01.13
  • Fixed a rare occurence of local search crashing on numerically very challenging instances.
  • New option XPRS_REPAIRINFEASMAXTIME to limit the overall effort of repairinfeas.
  • Fixed an issue in the Python interface when dealing with user function with one argument.
  • Fixed an issue in reduced cost propagation.
  • Fixed an issue in XPRSloadbasis that could result in the loaded basis being ignored.
  • Fixed an issue with presolving of MIPs with unbounded integers that could result in violated solutions being returned.
  • Added option to prioritize accuracy in the barrier algorithm.
  • Fixed behaviour of the RHS scaling.
  • Added support for Linux control groups for memory/#CPUs.
  • Added support for Python 3.7.
  • Fixed an issue that could result in a variable being fixed to a suboptimal value during a MIP solve.
  • Fixed an issue where branching declares a branching candidate to be infeasible by using an invalid LP objective value.
  • Fixed an issue in crossover with quadratic problems.
  • Fixed an issue in clique lifting.
  • Fixed a problem handling callbacks in nonlinear problems solved with the Python interface.
  • Fixed a numerical stability issue when parallel dual simplex switches to sequential mode.
  • The rounding heuristic controls HEURDIVEITERLIMIT and HEURDIVERANDOMIZE should now be respected again.
  • Significantly improved MIIIS (Irreducible Infeasible Set search for Mixed Integer problems) performance.
  • Fixed an interface problem in function loadproblem() of the Python module.
  • Fixed a memory problem in the Python interface occurring with several sums of empty lists.
  • Fixed a problem in presolving with fixing an already fixed variable, leading to false infeasibility.
  • Fixed a performance issue for pre-LP rounding heuristics for MIPs with very large rows.
  • Fixed a presolve performance issue for MIPs with very large rows.
Xpress NonLinear 33.01.13
  • Made bound reduction less sensitive toward extreme bounds in log() and log10() functions.
  • Improved initial point heuristics with cascading.
  • Fixed a potential issue when runing parallel MISLP with Mosel user functions.
  • Improved initial point heuristics.
  • Improved cascading logic for network structures.
  • Support Mosel user functions returning partial derivatives with variable argument lists.
  • Off-scale bounds due to functions such as exp() now trigger a warning rather than infeasibility.
  • New public control XSLP_DELTA_INFINITY to limit placholders taking exceedingly large values.
  • Fixed in issue with the multistart search when using initial values from Mosel
  • Fixed an issue with eliminations on singleton rows.

New in Release 8.5.6

Back to top

Xpress Mosel modules

mosjvm 1.0.7
  • Allow option to run any classes in restricted mode by setting MOSJVM_ALLOW=*
  • Allow jvmclasspath parameter to be set in restricted mode
dmp 1.0.0
  • New module to allow models running in DMP to call other DMP resources in solution
executor 1.0.4
  • When running within DMP, authorization will no longer expire after 1 hour
  • Failed HTTP requests will now be retried

Fixed in Release 8.5.6

Back to top
Xpress Optimizer 33.01.09
  • Fixed a problem in presolving with fixing an already fixed variable, leading to false infeasibility.
  • Fixed a performance issue for pre-LP rounding heuristics for MIPs with very large rows.
  • Fixed a presolve performance issue for MIPs with very large rows.
  • Fixed a synchronization issue when setting MIPABSCUTOFF within a parallel MIP solve that could result in the final MIP status not being updated correctly.
  • Improved accuracy of the dual directions in the barrier algorithm.
  • Fixed a performance issue with the deterministic parallel tree search when solving a MIP from a Mosel model.
  • Fixed a problem in which the dual crash could have created a numerically instable basis.
  • Fixed a problem in which the dual simplex could have cycled.
  • Fixed behavior of loadproblem() in the Python interface to be able to load global entities.
  • Fixed issue with running IIS on feasible quadratically constrained problems.
  • Fixed performance issue with local search heuristics on problems with very few binaries
  • Fixed issue in the analysis of infeasible sub-problems for quadratic problems.
  • Fixed a problem in which the primal simplex could have cycled.
  • Fixed a leak in the modeling of problems with callbacks defined in the Python interface.
  • Fixed an issue in the Python interface when returning a partial solution with getSolution().
Xpress Nonlinear 33.01.09
  • Fixed an issue with eliminations on singleton rows.
  • Fixed a memory leak that could occur when repeatedly restoring and presolveing a problem.
  • Calling XSLPglobal now resets the solve timer.
  • Fix incorrect header in save files.
  • Support cubic root of negative numbers.
Xpress Mosel modules mmhttp 2.4.4
  • An issue has been fixed in the handling of the connection pool
mmsystem 2.4.5
  • 'fcopy' with 4 arguments now closes all its streams after an error
Xpress Workbench 2.2.4
  • Added cancel button to progress dialog shown when publishing to Insight.
  • Fixed an issue where the progress dialog sometimes got stuck when publishing to Insight.
  • Fixed an issue where error messages were not displayed after disconnecting from a child instance of Mosel.
  • Fixed an error, "Cannot read property 'getDocument' of undefined" when saving a tab which is not fully loaded.
Licensing (xprl) 2.9.7
  • Fixed an issue that caused creation of xprl.log files on Windows

New in Release 8.5.3

Back to top
General
  • A BETA version of Xpress Workbench is now available for macOS (10.13 and later).
  • The macOS version of Xpress is now installed from a DMG file.
Xpress Nonlinear 33.01.05
  • More agressive ERRORCOST updates for unbounded problems.
  • New convergence option XSLP_CONVERGEBIT_NOQUADCHECK.
  • Improved convergence criteria for mixed convex quadratic and nonlinear problems.
Xpress Mosel 4.8.4 mmhttp 2.4.3
  • HTTP server now rejects invalid queries
mmsystem 2.4.4
  • Posix: better handling of quotes in the processing of the 'system' command
Xpress Workbench 2.2.2
  • BETA support for macOS
  • Clicking a line in a Mosel stack trace opens the correct source file location.
  • Subprocesses executed from Mosel inherit the correct working directory specified in Workbench.
  • When autocompleting the name of a subroutine from a Mosel package or module, all available subroutine signatures are now shown.

Fixed in Release 8.5.3

Back to top
Xpress Optimizer 33.01.05
  • Fixed issue in presolving deleting a row which is not redundant.
  • Fixed an issue with indicator rows parallel to the objective.
  • Fixed an issue with indicator rows when presolve is turned off, which could result in feasible solutions being cut off.
  • Fixed an issue with branch evaluation for MILPs that could result in valid solutions being dropped.
  • Fixed a performance issue in the symmetry detection.
  • Fixed an issue in which false-positive symmetry detection could have resulted in incorrect reductions in branching.
  • Fixed a problem in setting an objective function with a single quadratic term in the Python interface.
  • Fixed a presolving issue for logical constraints with continuous columns
  • Fixed the handling of indicator constraints in the Python interface for binary variables set to zero.
  • Fixed an issue occurring while presolving quadratic problems.
  • Fixed an issue in the Optimizer .NET interface when callbacks were fired on slave problems
  • Fixed an issue with the set cover/partition/packing heuristic that could result in memory corruption for large MIPs.
  • Fixed an issue with the solution refiner for MIPs with quadratic objective coefficients.
  • Fixed an issue with presolving of MIPs with delayed equality or ranged rows.
  • Fixed an issue with equality indicator constraints.
  • Fixed a problem in which XPRSchgmqobj woul dnot have scaled the loaded quadratic coefficients correctly.
  • Fixed a problem in the quadratic simplex method that could have resulted in solutions being cut off in strong branching and single dual pivots.
  • Symmetry detection will now take less time for problems including symmetries on continuous variables only.
  • Fixed an internal consistency error that could be triggered when running parallel heuristics during the tree search.
  • Tightening SOSREFTOL should no longer trigger an internal error from local search heuristics.
Xpress Nonlinear 33.01.05
  • Fixed a potential issue when solving problems with integer delta variables.
Xpress Mosel 4.8.4 Compiler library
  • An issue has been fixed in the handling of file inclusion
mmsheet 1.4.6
  • xlsx/xls/csv: an issue has been fixed in the conversion of Booleans to text
Xpress Workbench 2.2.2
  • Fixed an error when downloading very large arrays as CSV.
  • Fixed an issue where Mosel error messages where not clickable when they wrapped onto a new line.
  • Fixed an issue where relative source file paths passed on the Workbench command line were not correctly located.
  • Fixed an issue where incorrect file tree was sometimes shown when several workspaces were open at the same time.
  • Fixed an issue where 'Show item in Explorer' stopped working after compiling a model.
Known issues on macOS:
  • Dialog appears intermittently while editing source files: "File has been changed on disk."
  • Not possible to set environment variables when running Mosel models.
  • Workbench does not detect changes to the environment, e.g., XPRESSDIR, after being restarted.

New in Release 8.5

Back to top
General
  • The latest product documentation is available at fico.com.
  • The platform support policy for Xpress 8.5 has changed from previous versions. AIX, HP-UX and Solaris/Sparc platforms are no longer supported.
  • New Mosel->Python interface
Xpress Optimizer 33.01.02
  • Symmetries may now be re-detected locally during a MIP tree search when it is determined to be beneficial.
  • Improved branching for highly symmetric MIP problems.
  • Improved zero-half cuts, in particular for binary quadratic problems.
  • New multi-commodity network flow cuts. A new control, NETCUTS, has been introduced for these cuts.
  • Improved dual simplex perturbation scheme for highly dual degenerate MIPs.
  • Improved performance of crossover through better exploitation of vectorization and CPU caching.
  • New API functions XPRSgetlpsolval, XPRSgetmipsolval and XPRSgetbasisval for retrieving the solution value or basis status for an individual variable or constraint.
  • Two new controls, PRIMALPERTURB and DUALPERTURB, have been introduced to replace the single PERTURB control. Perturbation can now be controlled separately for primal simplex and dual simplex.
  • A new control, PRESOLVEPASSES, has been introduced to allow repeated applications of the initial preprocessing of a problem.
  • The obsolete control TEMPBOUNDS has been removed.
  • All fixes from Xpress Update 8.4.7 (Optimizer 32.01.10).
Xpress Nonlinear 33.01.02
  • Improved MINLP rounding heuristics.
  • Improved SLP-MIP-SLP heuristics in case some rows are enforced in the first SLP iteration.
  • All fixes from Xpress Update 8.4.7 (Nonlinear 32.01.10).
Xpress Mosel 4.8.3 Native interface
  • Function 'copyval' can now be used with STR_SET, STR_LIST and STR_ARR
mmhttp 2.4.2
  • New function 'tcpping' to test a server
  • Unauthorized urls in FAC are now reported as error 997 (execution is no longer interrupted)
  • Support for SNI (server name identification) in https
mmsheet 1.4.5
  • Excel driver: better handling of files stored on network drives
mmssl 1.4.4
  • Updated version of ca-bundle.crt
  • New driver 'hmac'
mmsystem 2.4.3
  • Comparison operator has been added to 'time', 'date', 'datetime' and 'text' to enable comparison of records or arrays including these types
mmxprs 2.16.0
  • New procedure 'loadlpsol' to load LP solutions for barrier warm start and crossover
  • New procedure 'crossoverlpsol' to cross over a loaded LP solution
  • New procedure 'uselastbarsol' to retrieve a barrier solution from before crossover
  • Parameter 'xprs_objsense' can now be changed
python3 1.0.0
  • Execute Python 3 scripts from Mosel
  • I/O driver 'python' for exchanging data using 'initializations from' and 'initializations to'
  • Supported on Windows, Linux, MacOS
aec2 2.0.0
  • Now a pure Mosel package (aec2 and smew modules dependencies have been removed)
  • Support for Amazon signature protocol v4
Xpress Workbench 2.2.0
  • When debugging, Mosel arrays, sets and lists can be displayed in table form, where they can be sorted/filtered.
  • When debugging, Mosel arrays, sets and lists can be exported in a CSV file.
  • Added a compile button to the toolbar.
  • Mosel compiler options can now be specified.
  • Mosel models can be run with profiling or coverage enabled.
  • Improved support for Mosel DSO data types in the debugger.
  • Added a context menu item in the editor to find all usages of the selected model symbol.
  • After running or compiling a model, the output pane is now automatically shown, if it was hidden.
  • Workbench now looks in the MOSEL_DSO environment variable when searching for Mosel package dependencies.
  • Compiler uses MOSEL_DSO environment variable to find dependencies
  • Workbench now integrates with the online help system
BCL 4.8.14
  • Updated.Net Scanner class to support exponential notation

Fixed in Release 8.5.0

Back to top
Licensing (xprl) 2.9.3
  • Fixed an issue with long network adapter names on Linux.
  • Fixed an issue passing other command-line arguments when starting license server with -d flag
Xpress Mosel 4.8.3 Compiler Library
  • An issue has been resolved in the handling of assignments of loop indices referring to external types
  • 'initialisations' blocks no longer accept lists of arrays of user types (this is not supported)
Runtime Library
  • A possible memory corruption has been fixed in the handling of list concatenation when the first list is empty
mmsystem 2.4.3
  • An issue has been fixed in untar/unzip related to handling of directory names
  • 'setenv': removing an environment variable by giving it an empty value now always works
R 1.0.14
  • Fixed an issue with models that use the I/O driver without initializing R
Xpress Workbench 2.2.0
  • Fixed an issue where opening a second Workbench could hang on the loading screen.
  • Fixed an error, "Current scheduler state does not fix stack level", shown when stepping in the debugger.
  • Fixed an issue where the watches tree would collapse when inspecing a large array.
  • Fixed a warning which occurs when many Mosel processes are created, "Possible EventEmitter memory leak detected".
  • Fixed an error, "Step operation interrupted by debugger", which could occur when stepping over slow subroutine calls.
  • Fixed incorrect label, "Select Folder to Upload", when creating or opening a project.
  • Fixed error when opening projects stored on a drive other than C:
  • Fixed issue where Mosel output contains unexpected symbols on Windows 7
  • Fixed an issue where Mosel appears to hang and display no output when running a model
  • Fixed issue where output pane would sometimes remain blank when publishing
  • Fixed issue where watch tree collapsed immediately after being expanded

New in Release 8.4.4

Back to top
General
  • All documentation for the FICO Xpress Optimization products is now available as an integrated, searchable online library at fico.com. Installer packages will include PDF and JavaDoc manuals only.
  • The functionality to integrate Mosel with 3rd party solvers has been extended to include an interface to any AMPL-compatible solver. The whitepaper "Xpress Mosel solver interfaces" which describes this interface is included in the documentation distribution.
Xpress Mosel 4.8.2 XPRD
  • Java: new field 'XPRD.rcmdEnv' to define environment variables in the environment of the process created via 'rcmd:'
Native interface
  • New function 'setdsoparam'
mmodbc 3.2.3
  • New version of SQLcolumns
mmjobs 2.14.1
  • 'waitexpired' now returns 'true' when 'waitfor' has been called with a 0-time limit and no valid event was found
mmsystem 2.4.2
  • New routines findfiles(findfiles(integer,list of text,text,text), findfiles(integer,list of text,text), findfiles(list of text,text)
mmxml 2.2.4
  • Namespace prefixes can now be used in search paths
nlsolv 0.2.0
  • New module to solve the problem with an AMPL-compatible solver

Fixed in Release 8.4.4

Back to top
Xpress Optimizer 32.01.07
  • Fixed rare issue with quadratic constraints in the presence of variable eliminations.
  • Fixed issue that causes solve to abort when license is lost without trying to reconnect to license server
  • XPRSiisfirst will no longer return a nonzero return code in case the search times out.
  • Fixed an issue which could cause a crash with XPRScrossoverlpsol.
  • Fixed an issue making the problem inconsistent after deleting few quadratic variables.
  • Fixed a potential issue in the function that translates a binary quadratic problem into a binary linear one.
  • Fixed a memory leak in the modeling constructs of the Python interface.
  • Fixed an issue that would prevent creation of a problem with rows and columns within the limits set by the Community license.
  • Added missing method xpress.problem.nlpoptimize() to solve nonlinear optimization problems with the Xpress Python interface.
  • Fixed an issue that could lead to a deadlock in the Python interface when using xpress.problem.mipoptimize() with callback functions.
  • XPRSsetlogfile should now accept path names up to MAXPROBNAMELENGTH characters, as intended.
Xpress Nonlinear 32.01.07
  • Improved numerical stability for problems with a numerically difficult convex quadratic objective.
  • Fixed an issue where an infeasible solution could have been returned.
  • XSLP_VERSION and XSLP_MINORVERSION now returns the correct value.
  • XSLP_ALGORITHM bit 6 'Reset XSLP_DELTA_Z to zero when converged and continue SLP.' now behaves as intended.
  • Added support for using XPRSaddcols64 and XPRSaddrows64 together with XSLP.
Xpress Mosel 4.8.2 Runtime Library
  • 'getnextattrdesc' no longer returns invalid type numbers
  • Comparisons 'infinity=infinity' and 'infinity<>infinity' have been fixed
Compiler Library
  • An issue has been resolved in the handling of empty statements in 'if' and 'case' conditions
mmjobs 2.14.1
  • 'waitfor' may no longer miss an event with the expected properties when the option 'keep' is enabled
  • A potential memory corruption has been fixed in the 'send' procedure when an event is sent to a terminating model
mmsheet 1.4.4
  • csv driver: reading now stops when an out of memory error is detected
mmssl 1.4.3
  • A potential memory corruption has been fixed in the 'sslrandomdata' function
mmsystem 2.4.2
  • An issue has been fixed in the implmentation of "textfmt(real,int,int)"
Xpress Workbench 2.1.4
  • Fixed issue where output pane would sometimes remain blank when publishing
  • Fixed issue where watch tree collapsed immediately after being expanded
  • On premises, the Mosel compiler now uses the MOSEL_DSO environment variable to locate packages and modules
  • On premises, Workbench now integrates the online help site rather than the CHM version of the documentation
Licensing ( XPRL 2.9.1 )
  • Fixed an issue re-establishing connection to license server after a network error.
  • Fixed an issue with redundant server licensing when license server started with -d flag
  • Corrected error message displayed when counted license checked out 60+ times
Xpress Kalis 12.6.2
  • Fixed bug in 'produces' constraints

Fixed in Release 8.4.2

Back to top
Xpress Optimizer 32.01.05
  • Fixed a performance issue with diving heuristics that in some rare cases could trigger an unnecessarily long reoptimization solve.
  • Fixed an issue that could result in a too high lower bound being returned for a MIP that was solved to completion during re-presolving.
  • Fixed an issue where the tuner may stop prematurely when tuning a problem set without logging.
  • Improved consistency of the barrier solver on different platforms.
  • XPRSgetlastbarsol should now work when barrier was used in a concurrent solve.
  • Improved performance of local search heuristics for problems with Special Ordered Sets (SOS).
  • Fixed an issue which could cause a crash in the primal simplex.
  • Fixed an issue that would prevent creation of a problem with rows and columns within the limits set by the Community license.
  • Added missing method xpress.problem.nlpoptimize() to solve nonlinear optimization problems with the Xpress Python interface.
  • Fixed an issue that could lead to a deadlock in the Python interface when using xpress.problem.mipoptimize() with callback functions.
Xpress Nonlinear 32.01.05
  • Improved local search heuristics for MINLP problems.
  • Improved relative infeasiblity checks when XSLP_FILTER bit 1 is enabled.
  • The SLP iteration solution refiner will now check for change in relative primal infeasiblity.
  • Added missing Knitro max nodes control export.
  • XSLP_MIPITER now applies to the SLP-MIP-SLP and MIP-in-SLP heuristics as well.
  • New fallback strategy for problems instable in linear presolve due to cascading structures.
Xpress Mosel 4.8.1 mmoci 1.6.1
  • OCIcommit/OCIrollback do not set OCIsuccess
mmodbc 3.2.2
  • SQLautocommit no longer ignored
Xpress Workbench 2.1.2
  • Fixed errors when running Mosel models: "died waiting for dll loading, errno 11" and "Resource temporarily unavailable"

Fixed in Release 8.4.1

Back to top
Xpress Optimizer 32.01.04
  • Fixed an issue where creating ~8500 cones would trigger a crash in the Python interface.
  • Fixed issues where simplex solvers may wrongly declare numerical hard problems infeasible.
  • Ensure that all constraints without variables can be added with the Python interface.
  • Fixed an issue for MIPs that could result in invalid MIR cuts being created.
  • Fixed a numerical issue with rounding heuristics for MIPs with SOS constraints that could result in a solve hanging.
  • Fixed a termination issue with a local search heuristic that could result in an "internal error" message.
Xpress Nonlinear 32.01.04
  • Improved barrier fallback strategy for numerically instable solves.
  • The drcoltol handler and callback are now initiated by XSLPcontruct if set up.
Xpress Mosel 4.8.1 Compiler Library
  • An issue has been resolved in the handling of conversions in string concatenations.
mmhttp 2.4.1
  • HTTP headers of responses are now case insensitive.
mmssl 1.4.2
  • New default value for https_ciphers: "TLSv1.2+HIGH:TLSv1+HIGH:@STRENGTH"
Xpress Workbench 2.1.1
  • Fixed issue where old backups were not being cleaned up properly

New in Release 8.4

Back to top
General
  • The Mosel compiler, runtime and core modules are now free to use for any purpose including commercial production deployment. A license file is still required to use OEM licensing and all other components of the Xpress Suite.
  • The additional functionality to integrate Mosel with a 3rd party solver has been made public in the Mosel Native Interface
  • LP Folding procedure exploits symmetries when solving LP problems.
  • Multiple performance improvements to the MIP algorithm
Xpress Optimizer/NonLinear 32.01.03
  • It is now possible to exploit symmetries in LP problems using a procedure called LP Folding. This can significantly reduce the size of the problem to be solved and thereby speed up the solution process.
    • LP Folding is automatically applied and can be used with any LP solving algorithm.
    • A new control, LPFOLDING, has been introduced to specify whether LP Folding should be applied.
    • When LP Folding is applied a solve will now go through three phases: solve the reduced LP using the selected algorithm, a crossover phase and a final cleanup. The exception is when barrier is applied without crossover.
  • For tiny MIP instances with integer or binary variables with a wide range of coefficients, it is now possible to apply a basis reduction algorithm as part of presolve, which will reformulate the integer columns using a reduced basis that is closer to ortho-normal. A new control, PREBASISRED, has been introduced to specify whether MIP basis reduction should be applied.
  • More uses for the Barrier algorithm have been introduced as part of a MIP solution process. It can now be used for tightening or reducing the problems. A new control, PREANALYTICCENTER, has been introduce to specify when to use a Barrier solution.
  • Several refinements to the branch-and-bound code to improve MIP performance.
  • Output to the file created by XPRSsetlogfile is now flushed after each line.
  • A new control, HEURFORCESPECIALOBJ, has been introduce to force alternative objective local search heuristics to run on a MIP, even when the automatic strategy has determined they should not be run.
  • More choices for TUNERTARGET when tuning a MIP.
  • New function, XPRSfeaturequery, to query which features are allowed by the current license.
  • Quadratic constraints in binary variables can now be linearized when this appears beneficial.
  • All Xpress-Nonlinear functionality is now included in the XPRS library file. It is no longer necessary to link against the XSLP library.
Xpress Mosel 4.8.0 Compiler library
  • Long file names are no longer truncated when reporting error messages
Native interface
  • LP/MIP matrix manipulation routines are now avaiable from the NI
  • New service 'PROVIDER'
moseldoc
  • New tag 'recfldval' for documeting record field values
mmnl 1.8.0
  • New functions 'erf' and 'erfc'
mmxprs 2.14.0
  • New procedure 'hasfeature' to check license features
mmsvg 1.2.0
  • New versions of 'svgwaitclose' to change behavior on browser window closing in Workbench
  • New style property 'SVG_ANIMATE'
Xpress Workbench 2.1
  • Compiler errors are highlighted and can be clicked to jump to the source location
  • Compiler looks for bim file dependencies in the same directory as the source files
  • If a model raises an error while debugging, the debugger stops at the line where the error occurred
  • More Mosel module symbols are autocompleted
  • Insight sidebar is automatically opened for Insight projects only
  • Improved error reporting when Mosel model crashes
  • Improved size and position of Workbench window on low resolution displays
  • Improved error reporting when Mosel graph cannot be reopened
Xpress Nonlinear 32.01.03
  • Significantly improved performance on numerically challenging problems.
  • Added support for the min/max functions both in Mosel and through API.
  • Added support for the erf (standard error function) and its complement erfc to the API and Mosel.
  • Work with best solutions: XSLP_FILTER bit 1 is now default. Checks now include the initial solution.
  • New attribute XSLP_SOLSTATUS to indicate if a solution is available. This attribute complements XSLP_NLPSTATUS.
  • New attribute XSLP_VALIDATIONSTATUS to check if the current solution is deemed feasible, set up by XSLPvalidate.
  • New attribute XSLP_TOTALEVALUATIONERRORS to indicate the number of evaluation errors that occurred during a solve.
  • New API function XSLPnlpoptimize to solve the problem using the existing optimization sense.
  • New option for XSLP_HEURSTRATEGY to include all heuristics with no effort limits imposed.
  • Mosel can now read and write solutions of nonlinear problems using 'writesol' and 'readsol'.
  • All Xpress-Nonlinear functionality is now included in the XPRS library file. It is no longer necessary to link against the XSLP library.
  • Deprecated functions in this release:
    XSLPloadivfs, XSLPaddivfs, XSLPchgivf, XSLPdelivf, XSLPgetivformula,
    XSLPloadxvs , XSLPaddxvs, XSLPchgxv, XSLPchgxvitem, XSLPdelxvs, XSLPgetxv,XSLPgetxvitemformula,
    XSLPloaddcs, XSLPadddcs, XSLPchgdc, XSLPdeldcs, XSLPgetdcformula, XSLPopt,
    XSLPsetcbmessageF, XSLPsetcbitervarF, XSLPsetcbcascadevarF
Xpress Kalis 12.6.1
  • Implemented Mosel restrictions

Fixed in Release 8.4.0

Back to top

Xpress Mosel 4.8.0

Compiler library
  • An issue has been fixed in the handling of extended types in packages
XPRD
  • Java: an issue has been fixed in the handling of connection string parameters
mmquad 1.2.9
  • Objective modification now always reported to optimiser
mmssl 1.4.1
  • An issue has been fixed in the 'hex' driver when used for reading
mmxml 2.2.3
  • JSON reader: possible failure when loading a file containing only an empty string
mmxprs 2.14.0
  • Using mmquad no longer prevents optimising linear objectives
Xpress Workbench 2.1
  • Fixed issue where arrays of arrays could not be inspected in the debugger
  • Fixed issue where cursor was sometimes drawn in the wrong place when editing source files
  • Fixed issue where model output was truncated after 5000 lines
  • Fixed issue where variables tree could not be resized
  • Fixed issue where Mosel annotations were only autocompleted once
  • Fixed long delays when saving files, running Mosel models, and publishing to Insight
  • Fixed error when running Mosel models: "Couldn't reserve space for cygwin's heap"
  • Fixed issue with copying a source file
BCL 4.8.13
  • Fixed .Net issue with garbage collection of prob object while dependent objects are still in use
  • Fixed .Net issue with garbage collector finalizing objects while native methods still need the resources they wrap

Fixed in Release 8.3.3

Back to top

Xpress Mosel 4.6.1

Compiler Library
  • An issue has been fixed in the handling of extended types in packages
XPRD
  • Java: an issue has been fixed in the handling of connection string parameters
mmquad 1.2.9
  • objective modification now always reported to optimiser
mmssl 1.4.1
  • An issue has been fixed in the 'hex' driver when used for reading
mmxml 2.2.3
  • JSON reader: possible failure when loading a file containing only an empty string
mmxprs 2.12.1
  • Using mmquad no longer prevents optimising linear objectives
mmxnlp 31.01.12
  • Fixed error when mmxnlp would crash if loaded without being licensed.
Examples
  • Relocate IVE examples so they are visible to IVE's Complete Models wizard.
Xpress Workbench 2.0.2
  • Fixed long delays when saving files, running Mosel models, and publishing to Insight
  • Fixed error when running Mosel models: "Couldn't reserve space for cygwin's heap"
  • Copying a source file not working

Fixed in Release 8.3.2

Back to top
Xpress-Optimizer 31.01.12
  • Fixed an issue that prevented NumPy array comparisons with non-Xpress objects.
  • Added support for Python 3.6.
  • Fixed an issue with the simplex sifting algorithm for dualized problems.
  • Fixed an issue with the tuner for maximization problems.
  • Modified how heuristics are run before the initial LP relaxation solve of a MIP to avoid some expensive cases.
  • New control HEURDIVEITERLIMIT to change the simplex iteration limit for the diving and rounding heuristics.
  • The log file, set by XPRSsetlogfile, is now flushed after each line has been written.
Xpress-Nonlinear 31.01.12
  • Fixed an issue in which XSLP_UNFINISHEDLIMIT was always used as value 1.

Fixed in Release 8.3.1

Back to top
Xpress-Optimizer 31.01.11
  • Fixed an issue with quadratic bound reduction that might trigger a crash.
  • Fixed an issue related to dualization and objective scaling.
  • Fixed a UMR in the MIP heuristics.
  • Fixed issues related to the network simplex solver.
  • Fixed an issue with the MPS writer that could cause auto-generated cut row names to be truncated when they are longer than any original name.
  • Allow for the Python interface to work without a SLP license.
Xpress-Optimizer 31.01.10
  • Duplicate row eliminations should now be more robust against badly scaled rows.
  • Fixed an issue with the loading of a basis file in compact format when super-basic variables are already present in the problem.
  • Fixed a problem when turning crossover on for quadratic problems.
  • Do not report the parallel crossover banner during MIP search.
  • Fixed an uninitialized name bug in the Python interface.
Xpress-Nonlinear 31.01.11
  • Fixed a potential problem with nonlinear eliminations in refinery type models.
  • Improved numerical behavior for quadratic problems.
Xpress-Nonlinear 31.01.10
  • Fixed a problem in which an infeasible converged solution was declared optimal.
Xpress-BCL 4.8.12
  • Fixed .Net issue with garbage collector finalizing objects while native methods still need the resources they wrap
XPRL 2.8.7
  • Remove some restrictions on number of active connections to license server.

New in Release 8.3

Back to top
General
  • A Community license is now available for the FICO Xpress Optimization Suite on the Windows platform, allowing the software to be used for academic and non-production commercial purposes (capacity restrictions apply). The Community license is included in the Xpress installers for Windows.
  • Xpress Workbench is the new integrated development environment for the Xpress Optimization Suite. Workbench provides a developnent environment for standalone Mosel models and Xpress Insight apps and integrates with Insight for remote debugging.
  • Xpress IVE is deprecated. The binaries are included in this release for backwards compatiblity.
  • Xpress XAD is discontinued.
  • The mmive module is discontinued. The mmsvg module replaces the mmive function for rendering custom illustrations from Mosel.
Xpress Optimizer/NonLinear 31.01.09
  • The Xpress Python interface now allows for creating and solving nonlinear optimization problems. The modeling capabilities that were introduced with the first Python interface in Xpress 8.0 are extended to create constraints with expressions of arbitrary complexity using nonlinear operators. The interface also allows for accessing the full power of the Xpress-Nonlinear API for querying and modifying nonlinear problems.
Xpress Mosel 4.6.0 Language
  • New function 'setname(mpvar,string)'
  • New function 'newmuid' to generate a unique identifier
  • New annotation property 'strict'
  • New syntax for 'with' (equivalent to a single iteration 'forall' loop)
Native interface
  • Operator '@_' may receive now an entity with a reference count >1
  • New function 'newmuid' to generate a unique identifier
Compiler Library
  • New compiler flag '-we' to handle warnings as errors
mmjobs 2.14.0
  • New procedure 'getdsoprop' to retrieve module information
  • Support for interval timers (routines settimer, gettimer and canceltimer)
mmnl 1.6.3
  • New functions 'fmin' and 'fmax'
mmrobust 1.4.0
  • New function 'getact(robustctr)'
mmsheet 1.4.3
  • xlsx/xls/csv: selecting an entire row for writing has the same effect as using the 'grow' option (same behavious as Excel)
  • Excel driver: initialising a scalar with an empty cell now resets the variable (same behaviour as other drivers)
mmsvg 0.0.1
  • New package for creating graphs in SVG format and displaying them in a web browser or within Workbench
  • Graphing functionality includes circle, pie, polygon, polyline, xmltext objects and SVG styling for groups or individual objects
  • This package supercedes the mmive module
mmxprs 2.12.0
  • New procedure 'readsol' with an array to store the solution
  • New function 'getname(nlctr)'
S3 0.0.3
  • Added support for server-side encryption using Amazon-managed encryption keys (SSE-S3)
mosjvm 1.0.0
  • New module allowing Mosel to instantiate a Java virtual machine (Windows/Linux only)
Xpress Workbench 2.0.0
  • Xpress Workbench is the new integrated development environment for the Xpress Optimization Suite.
  • Compile, run and debug Mosel models
  • Deploy and remotely debug Xpress Insight apps.
  • Syntax highlighting, autocompletion and code folding for Mosel and VDL source files and Xpress Insight companion files.
  • Integrates with the Xpress tuner.
  • Integrates with Tableau for FICO Server for Tableau workbook authoring
Xpress Kalis 12.6.0
  • Removed kalis parameters which are not prefixed with "kalis_" (they were already deprecated)
  • Added a model "scenesalloc" in the examples to show the impact of symmetry breaking

Fixed in Release 8.3

Back to top
Xpress Optimizer 31.01.09
  • Includes all fixes applied since the initial Xpress 8.2 release with Optimizer 31.01.02 up to and including Xpress Optimizer 31.01.09. Please refer to the Xpress 8.2 patch notes for the specific fixes.
Xpress Mosel 4.6.0 Compiler Library
  • Non-empty annotation categories are now propagated in packages
  • Annotation definitions are now always published properly in packages
mmsheet 1.4.3
  • All drivers: an error is now reported when initialising a scalar with an unsufficient number of columns
Xpress NonLinear 31.01.09
  • Includes all fixes applied since the initial Xpress 8.2 release with NonLinear 31.01.02 up to and including Xpress NonLinear 31.01.09. Please refer to the Xpress 8.2 patch notes for the specific fixes.
Xpress Kalis 12.6.0
  • Fixed a bug in the subroutine "disjunctive"
  • Other minor bug fixes.
BCL 4.8.11
  • Fixed Java issue when addMIPSol is called with a null name

New in Release 8.2

Back to top
General
  • The Unix installer now supports unattended installation. Options are passed via the command-line. See the Xpress Installation Guide for more information.
Xpress-Optimizer 31.01.02
  • It is now possible to tune a set of problem instances with the console Optimizer.
    • A set of problem instances can be specified by listing them in a text file and passing this file to the tune command as "tune probset <set-filename>".
    • Tuning target will be the aggregate across the set of instances.
  • Setting TUNERTHREADS=-1 will now automatically use all available logical cores for tuning.
  • The tuner output log now includes a summary of the importance of each individual control setting from the best control set.
  • Crossover after a Barrier solve is now multi-threaded. A new control, CROSSOVERTHREADS, has been introduced to set the maximum number of threads to use during crossover.
  • A new function, XPRSgetlastbarsol, has been introduced, which can be used to retrieve the solution from the last Barrier solve, assuming it was successful. This can e.g. be used for retrieving the solution from Barrier in case the crossover phase timed out.
  • Efficiency changes to the multi-threaded MIP code:
    • Reduced the overhead for small, easy MIPs.
    • Reduced the memory usage for very large MIPs, especially those that are significantly reduced during the initial preprocessing.
Xpress-Mosel 4.4.0 mosel
  • Option '-sdir' now accepts a list of directories and may be stated several times
  • Debugger:
    • new 'breaksub' command
    • the model causing the interruption is now automatically selected
    • new command 'lsattr' to list types attributes
    • command 'print' now supports all type attributes (e.g. getsize(text))
Language
  • Loops (forall,repeat and while) can now be preceded by a label of the form 'string|identifier:'
  • 'break' and 'next' accept now an identifier or string as parameter: it is interpreted as a label for the loop
  • New constant INFINITY and functions 'isinf(real)', 'isfinite(real)'
  • New function 'isdynamic'
  • New option 'fctasproc': when it is used functions can be used as procedures (i.e. their return value is silently ignored)
  • New procedure 'asproc' to call a function and ignore its return value
  • User types (defining sets) can now be used to define array indices
Remote invocation
  • New option 'dbgbrksub'
  • New command 'lsattr'
Runtime Library
  • Default compatility convention for modules and packages is changing:
          a1.b1.c1 is compatible with a2.b2.c2 if
          (a1=a2) and ((b1<b2) or ((b1=b2) and (c2>=c1)))
    Up to this release the rule was:
          (a1=a2) and (b1=b2) and (c2>=c1)
  • New functions 'findtypeattr', 'getattr' and 'getnexttypeattr' for type attribute management
Native interface
  • New functions 'finddsofct','realtostr','hmfind','findtypeattr','getattr'
  • New service 'SVC_REQTYPS' to list type requirements
mmhttp 2.4.0
  • Support for HEAD requests (function 'httphead')
  • New function 'httppending' to get a list of requests waiting for a reply
mmjobs 2.12.0
  • New function 'waitexpired'
  • 'tmp:' can now be used as the working directory of a remote model
mmodbc 3.2.1
  • upgrade to SQLite 3.17.0
mmsheet 1.4.2
  • xlsx: handling of ranges consisting in all columns or all rows now similar to Excel
mmsystem 2.4.0
  • constructor 'text(x)' can now be used with structured entities
s3 1.0.0
  • New Mosel library for uploading/downloading objects from an Amazon S3 bucket
matlab 1.0.4
  • Added support for UTF-8 strings
Xpress-Nonlinear 31.01.02
  • Improved logic for finding initial points when none provided. New control XSLP_FINDIV indicating if initial values should automatically be determined
  • Improved bound reduction in presolve through linear and quadratic coefficients. New control XSLP_LINQUADBR indicating if bound reduction should consider linear and quadratic coefficients as well as nonlinear expressions
  • Support for variables with integer, semi-continuous or exploration type delta variables.
    • New delta types for nonlinear variables:
      • Integer delta: for variables that take values at integer multiples of a given step value
      • Semi-continuous delta: for variables that need to be changed at least by a given amount to have a measurable effect
      • Explore delta: for variables that are used in functions with zero partials at an unknown size
    • New API function XSLPchgdeltatype and Mosel function setdeltatype to mark variables as having a specific delta type
    • New control XSLP_GRIDHEURSELECT to indicate which heuristics to execute:
      • Enumeration: for small search spaces, evaluate all combinations
      • Cyclic: simple local search heuristics
      • Simulated annealing: simulated annealing enhanced local search heuristics
  • Code generation tool for parallelizing user (black box) functions in Mosel. New Mosel function 'generateUFparallel' available in the mmxnlp package
  • Extended capabilities for warm starting SLP solves using the LP barrier solver
    • Automatic fallback to the interior point solution found by barrier in case of crossover effort limits being hit
    • New control XSLP_BARSTARTOPS: allows fine tuning how barrier is applied in initial SLP iterations
    • New control XSLP_BARCROSSOVERSTART: specifies when to activate crossover; aimed at very large problem instances
    • New control XSLP_BARSTALLINGLIMIT: automatic numerical stalling fallback for barrier starts
    • New control XSLP_BARSTALLINGOBJLIMIT: automatic progress stalling fallback for barrier starts
    • New control XSLP_BARSTALLINGTOL: automatic progress stalling fallback tolerance for barrier starts

Fixed in Release 8.2

Back to top

Xpress-Mosel 4.4.0

Compiler Library
  • An issue has been resolved in the handling of 'forall' loop constants
  • Negative constants can now be used for indices in inline initialisation
  • A constant set/list can now be initialised from a record field
  • An issue has been resolved in the handling of '#line' markers in combination with empty statements in 'then' or 'else' constructs
mmjobs 2.12.0
  • Windows: an event is now always available if 'wait(t)' returns before the time limit
mmodbc 3.2.1
  • NULL data result now properly handled by 'SQLreadstring'
  • An issue has been fixed in SQLexecute when it is used to export a set
mmsystem 2.4.0
  • An issue has been fixed in the handling of comparisons of time/date/datetime when one of the operands is null
  • 'findfiles' now ignores non-existent directories in filters
  • 'findfiles' no longer includes a leading directory separator in file names of its result set
  • 'findfiles' no longer fails to retrieve subdirectories on some file systems (Linux)
matlab 1.0.4
  • Fixed non initialized error code when reading an empty set
BCL 4.8.10
  • Fixed a possible memory leak when reaching memory exhaustion
  • Improved tracking of allocated memory for .Net

New in Release 8.1

Back to top

Xpress-Optimizer 30.01.04

  • A new 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.
  • 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 crossover
Xpress-Mosel 4.2.0 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
  • Improved efficiency of memory management
  • Improved performance on writing text files in DOS format
  • Operation R:=S with R being a range and S a set of integers containing one element is now supported
  • 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
  • Verification of the syntax of annotations has been improved
  • 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)
mmhttp 2.2.0
  • 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
mmjobs 2.10.1
  • Propagate sdmax setting to remote instances
  • New procedure 'getmodprop' to retrieve model information
mmnl 1.6.2
  • Support for control parameter 'mathctrl'
mmodbc 3.2.0
  • 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
mmquad 1.2.8
  • LP format: append '/2' to quadratic obective
  • Support for control parameter 'mathctrl'
mmsheet 1.4.1
  • Upgrade to libxl 3.7.1
mmssl 1.4.0
  • Support for SSL operations with time limit (for https)
mmsystem 2.2.0
  • New function 'formattext'
mmxml 2.2.2
  • New versions of 'getnode' & 'getnodes' accepting a 'text' parameter
mmxprs 2.10.1
  • New optimisation option XPRS_TUNE to enable the tuner
Xpress-Nonlinear 30.01.04
  • 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.
Xpress-Kalis 12.4.0
  • Add parameter KALIS_SCHEDULE_ENABLE_SHAVING to control whether or not activate shaving step when scheduling
  • Fixed a bug in the tree search disjunction display in Xpress-IVE.
  • Fixed a rare bug preventing Xpress-Kalis from finding the optimal solution to certain scheduling problems.

Fixed in Release 8.1

Back to top

Xpress-Mosel 4.1

Compiler Library
  • An issue has been resolved in the processing of multi-lines annotations
  • An issue has been resolved in the processing of annotations when option 'explterm' is being used
  • 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
  • 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)
  • Statement A+=B where both A and B are ranges and A is empty no longer results in a runtime error
  • Option EP_STRIP no longer ignored (exportprob)
mmhttp 2.2.0
  • 'urlencode' now handles UTF-8 characters properly
mmjobs 2.10.1
  • An issue in the comparison to 'nullevent' has been fixed
  • Event objects are now initialised with 'nullevent'
mmodbc 3.2.0
  • A potential memory corruption has been fixed in the handling of empty results when reading sets or lists
mmsystem 2.2.0
  • A potential 'bus error' has been fixed in 'getsize(text)' (Sparc only)
mmxml 2.2.2
  • JSON reader: notation '\uxxxx' can now process unicode values >255
  • The default encoding of an XML document is now UTF-8
zlib 1.4.1
  • A potential memory corruption has been fixed in the zip file driver
BCL 4.8.9
  • Fixed the format of the eventual constant term in the objective when exporting a problem to LP file

New in Release 8.0.4

Back to top
Summary
  • The parallel MIP code has been completely rewritten to improve performance and scalability.
  • Mosel now represents all its internal strings in UTF-8 and supports character encoding conversions.
  • New Python interface for Xpress-Optimizer.
  • The Xpress interfaces to Java require a minimum of Java 6 (internal version: 1.6.0)
  • The interfaces to Visual Basic have been changed as follows:
    • Visual Basic 6 ("VB6", "classic VB") is no longer supported
    • Visual Basic for Applications ("VBA") is now only supported with the Mosel API
    • Visual Basic .NET ("VB.NET") support remains unaffected
Xpress-Optimizer 29.01.10
  • The parallel MIP code has been completely rewritten to improve performance and scalability. The MIP API and solver interaction through callbacks remains mostly unaffected.
    • The worker tasks have been decoupled from the number of running threads. The solution path followed by the MIP solver now depends only on the worker task limit and not on the number of running solver threads.
    • A new control, MAXMIPTASKS, has been introduced to manually limit the number of MIP worker tasks. The number of running threads is still given by MIPTHREADS (which is derived from THREADS on automatic setting). By setting MAXMIPTASKS to a fixed number, the MIP solver will always return the same deterministic solution independent of the number of cores on the host machine, assuming that the LP threading controls have also been set to a fixed number. To guarantee a deterministic outcome for any number of cores, the following controls should be set: MAXMIPTASKS to a positive value. BARTHREADS to a positive value FORCEPARALLELDUAL=1 CONCURRENTTHREADS to a positive value, or do not run concurrent.
    • A new control MIPTERMINATIONMETHOD determines how to complete worker tasks in case of an early termination (time limit, node limit, etc).
    • Heuristics can now be run in parallel with cutting in deterministic mode. Previously, heuristics would only be run in parallel after cutting.
  • It is now possible to create a basic solution from a not necessarily basic LP solution vector.
    • A new API function, XPRScrossoverlpsol, has been introduced to run the crossover algorithm on a user solution loaded through memory or from a file.
    • A new API function, XPRSloadlpsol, to load a solution vector from memory into the Optimizer. It will be set up as a solution without a basis, to the current LP problem in memory.
    • A new control, PREPROTECTDUAL, that can be used to specify whether the presolving of a problem with a loaded LP solution should avoid any reductions that could introduce dual infeasibilities.
  • Introduced code support for AVX2 in the Barrier solver.
    • Set CPUPLATFORM=3 to enable AVX2 code support (when supported by the host CPU).
  • Improved performance and numerical stability of crossover.
  • A new control, BARORDERTHREADS, has been introduced to set the number of concurrent threads for the sparse matrix ordering in the barrier algorithm.
  • New presolve reductions, strengthenings and reformulations for convex quadratic and conic problems.
    • A new control, PRECONEDECOMP, has been introduced to specify whether large cones should be decomposed when solving an MISOCP problem using an outer approximation method.
  • Improved implementation of zero-half cutting for MIPs.
  • The LP solution refiner can now run before postsolve to address any scaling infeasibilities. New bit option for XPRS_REFINEOPS has been added, and is enabled by default.
  • The LP solution refiner now allows target values larger then the the feasibility and optimality tolerance, to be used on the post-solved problem.
  • The effect of setting controls during the MIP search is now deterministic (if the MIP is solved in deterministic mode).
  • A new control, HEURSEARCHROOTCUTFREQ, which can be used to specify how frequently root local search heuristics should be run between rounds of cuts.
  • A new zero-objective local search heuristic to help find a first feasible solution for MIPs. Enabled by turning on bit 5 of the HEURSEARCHROOTSELECT and HEURSEARCHTREESELECT controls.
  • A new control, ADDMIPSOLHEURISTIC, to control the local search heuristic that will be applied to infeasible or partial solutions loaded with XPRSaddmipsol.
  • It is now possible to get rows and columns sorted as part of presolve. This could e.g. be used to ensure that a problem solves the same way regardless of the order in which variables and constraints have been declared.
    • A new control, PRESORT, has been introduced to specify whether to sort rows, columns or the global entity list.
    • New controls, PREPERMUTE and PREPERMUTESEED, have been introduce to allow rows, columns or the global entity list to be permuted randomly.
  • The control MPSFORMAT now defaults to free format with a value of 1.
  • The control CSTYLE no longer has any effect and will be removed from future releases.
  • The control HEURSEARCHROOTSELECT new defaults to 53 which enables two additional local search heuristics during the root node processing.
  • New Python interface for Xpress-Optimizer (requires Python 3.4 or newer and NumPy 1.1 or newer).
  • The Java interface requires a minimum of Java 6 (internal version: 1.6.0)
  • The Visual Basic interface is only supported via VB.NET
Xpress-Mosel 4.0.3 See Upgrading to Mosel 5 for details on upgrading Mosel models from 3.X to 4.0.

Mosel now represents all its internal strings in UTF-8 and supports character encoding conversions.

Remote Mosel instances can now be controled via remote queries in addition to usual XPRD/mmjobs queries. A query takes the form of a special file (to be open for reading) that is interpreted as a command: the data file returned by the instance is the result of the query. Supported commands:

  eval      evaluate an expression
  info      properties of Mosel, model/package/module
  lsloc     retrieve a list of local symbols
  lslib     list of available modules and packages
  profres   result of a profiling session
  dbglndx   mapping of line+file names in a model
  dbgbrkp   breakpoint management
  dbgstat   execution status
  dbgstlev  stack management
  dbgflndx  location of a subroutine

Language
  • New procedures 'publish' and 'unpublish' to control visibility of private and local symbols at runtime
  • New functions _() and _c() for message translation
  • New procedures write_ and writeln_ for message translation
  • Annotations mc.msgdom and mc.msgid for message translation
  • New procedure 'setioerr' to raise an IO error from the Mosel code
Mosel
  • New option '-l' to select the language
  • Debugger: new command 'lslocal' to display a list of local symbols
xprmsrv
  • The standard protocol can now be disabled by setting the tcp port to -1 (in this case the server starts only if the ssh protocol is enabled)
  • New server parameter SSH_CIPHERS (and command line option '-sc') to select which ciphers are accepted for SSH sessions
XPRNLS
  • The new 'xprnls' library implements various character encoding routines as well as message catalog management (for message translation)
  • The 'xprnls' command tool is a character encoding converter (i.e. it makes it possible to convert text files from an encoding to another) and a message catalog processor
XPRD
  • Java: file manager routines now intercept all exceptions instead of only IOExceptions
  • New function 'XPRDinstid' (C) and 'XPRDMosel.getId' (Java) to retrieve the ID of an instance (=node number)
BinDrv
  • Java version: string handling functions accept now an additional parameter for selecting the character encoding (default: UTF-8)
Java interface
  • The Java interface requires a minimum of Java 6 (internal version: 1.6.0)
  • New method to retrieve local identifiers (XPRMModel.localIdentifiers)
  • When a PrintStream is used as a text output stream via the 'mmjava:' driver and no encoding is specified, data is sent as text strings to the 'print' method (this enables Java encoding conversion).
Visual Basic interface
  • The Visual Basic interface is no longer supported by VB6, only via VBA and VB.NET
  • VBA: some functions that take or return pointers have been changed to use Variant rather than Long (in 32-bit) or LongPtr (in 64-bit)
  • VBA: The XPRM_IO_CB function can now be used to create callback-based I/O handlers for any text output, not just as an argument to XPRMsetdefstream
Compiler Library
  • All routines working with strings now expect UTF-8 strings
  • Source file encoding may be specified using the '!@encoding' annotation to be put at the beginning of the file. For instance: !@encoding:ISO-8859-15
  • New compiler option '-x' to generate a POT file from a model (message translation)
  • Verification of the syntax of annotations has been improved
Runtime Library
  • All routines working with strings now expect UTF-8 strings
  • New 'enc:' filename prefix to select encoding. By default text files are expected to be in UTF-8 and detect UTF-16 and UTF-32.
  • 'initialisations' data files can specify an encoding using the special comment '!@encoding' to be put at the beginning of the file. For instance: !@encoding:CP1252
  • New function 'XPRMdbg_getnextlocal' to enumerate local symbols during a debugging session
  • New function 'XPRMdbg_getlndx' to retrieve all lines indices at once
  • If restriction 'NoExec' is active, modules that are not located in read-only directories are now ignored
  • Mosel can now be installed under bin32/lib32/dso32 (32bit build) and bin64/lib64/dso64 (64bit build). This makes it possible to have both 32bit and 64bit distributions under the same directory tree
  • Operation R:=S with R being a range and S a set of integers containing one element is now supported
Native Interface (NI)
  • Deprecated IO routine 'IOCTRL_ERROR' no longer supported
  • IO driver routine 'IOCTRL_OPEN' now receives an additional parameter (encoding of the stream)
mmetc 1.8.5
  • Switch to xprnls for message translation
mmhttp 2.0.0
  • Consecutive requests to a given server are now processed using a single connection
  • New control parameters 'http_expire' and 'http_maxconn' to manage the pool of connections
  • Switch to UTF-8 encoding
mmjobs 2.10.0
  • Deleting the file "shmem:*" has the effect of deleting all memory files handled by 'shmem'
  • 'rmt:' driver: r/w error messages from the remote host are now displayed
  • New parameter 'defaultnode': this is the node number used by 'rmt:' when no node reference is given - switch to UTF-8 encoding
mmnl 1.6.1
  • Switch to xprnls for message translation
mmoci 1.6.0
  • Communication with the database in UTF-8
  • Option 'debug' now disabled if model is not compiled in debug mode
mmodbc 3.0.0
  • Support for ANSI (default on Posix) and UNICODE (default for Windows) ODBC interfaces
  • Interface can be selected with the 'enc:' filename prefix
  • Option 'debug' now disabled if model is not compiled in debug mode
  • New procedure SQLindices to retrieve the indices of a table
  • SQLite driver: support for ':memory:' and empty file name databases
mmquad 1.2.7
  • Switch to xprnls for message translation
mmrobust 1.2.1
  • Switch to xprnls for message translation
mmsheet 1.4.0
  • Switch to UTF-8 encoding
  • Driver 'csv': strings starting with '0' or spaces are no longer implicitly interpreted as numbers
  • Empty records are now skipped when reading a list of records
mmssl 1.2.0
  • Switch to UTF-8 encoding
mmsystem 2.0.0
  • All string operations now performed in UTF-8
  • New value -1 for 'qtype' (quoting mode) disables quoting
  • 'zip' and 'tar' routines can select the encoding used for file names (in the archive) using the 'enc:' prefix on the archive name
  • IMCI: new functions 'gettime'/'settime', 'getdate'/'setdate', 'getdatetime'/'setdatetime'
mmxml 2.2.0
  • XML documents are now encoded/decoded according to the specified encoding
  • JSON documents are now properly handled as UTF-8
  • Procedure 'getnodes' and 'getnode' no longer fail when applied to node 0 on an empty document
  • New function 'getsize(xmldoc)' to get the number of nodes of a document
  • Control parameter 'xml_keeputf' has been removed (no longer necessary)
mmxprs 2.10.0
  • Switch to UTF-8 encoding
zlib 1.4.0
  • Support for UTF-8 in file names
deploy 2.0.0
  • Switch to UTF-8 encoding
  • Support for program parameters containing non-ascii symbols
r 1.0.12
  • Added support for restricted R on FAC
Non-Linear 29.01.10
  • New default convergence mechanism for improved solution quality
    • new control XSLP_VALIDATIONTARGET_K to specify target first order optimality accuracy.
    • new control XSLP_VALIDATIONTARGET_R to specify target relative validation accuracy.
    • new values for XSLP_CONVERGENCEOPS to allow disabling / enabling the target convergence options.
    • new default value for XSLP_CONVERGENCEOPS to reflect the use of the target convergence checks.
    • the traditional SLP convergence controls now default to -1, their values are dynamically adjusted during the run. U ser set values are respected as normal and are not modified. The controls that now default to -1 are XSLP_CTOL, XSLP_ATOL_A, XSLP_ATOL_R, XSLP_MTOL_A, XSLP_MTOL_R, XSLP_ITOL_A, XSLP_ITOL_R, XSLP_STOL_A, XSLP_STOL_R, XSLP_MVTOL, XSLP_XTOL_A, XSLP_XTOL_R, XSLP_OTOL_A, XSLP_OTOL_R, XSLP_VTOL_A, XSLP_VTOL_R, XSLP_EVTOL_A, XSLP_EVTOL_R, XSLP_ECFTOL_A, XSLP_ECFTOL_R, XSLP_WTOL_A and XSLP_WTOL_R.
  • The mixed integer nonlinear solver MISLP has been reworked
    • much improved general performance.
    • the default MINLP solver now runs in parallel mode for the tree search.
    • greatly increased heuristics capability for the MINLP solver.
  • Probing algorithm based on the bound reduction algorithm to further tighten variable bounds; it works on several levels (which can be set automatically or by the user) for applying probing to different classes of variables.
  • The VB interface is no longer supported, except in VB.NET. User functions written in VB6 or VBA are still supported, provided that they do not need to call the XSLP API.
  • Upgraded Knitro to version 10.0.
BCL 4.8.8
  • Added C/C++/Java/.NET functions to iterate over constraints and constraint terms
  • Added/extended XPRBterm and XPRMqterm classes to Java and .Net to allow inspection of iterated constraint terms
  • Changed getIIS Java/.Net method to retrieve the first IIS by default instead of the IIS approximation
  • Added error code return to C++ functions that can fail on out of memory
  • The VB interface is no longer supported, except in VB.NET
  • The interface to Java requires a minimum of Java 6 (internal version: 1.6.0)
IVE 1.24.12
  • Supports Mosel UTF-8 encoding
XAD 1.2.10
  • Supports Mosel UTF-8 encoding

Fixed in Release 8.0.4

Back to top
  • A possible memory corruption in deletion of large finalised sets has been fixed
Mosel
  • Debugger: 'getsize' now reports the expected value when applied to strings produced from external types
Compiler Library
  • Redeclaration of a constant scalar no longer leads to a corrupted bim file
  • An issue has been resolved in the processing of multi-lines annotations
mmodbc 3.0.0
  • 64bit platforms: a potential memory corruption has been fixed
mmsheet 1.4.0
  • Excel driver: a possible crash on Windows 8.1 64Bit and newer has been fixed
  • xls/xlsx/csv drivers: conversion from boolean to string now valid
mmsystem 2.0.0
  • Parsetext now updates 'endparse' when used with a parse context
  • mmsystem.text driver now fails when trying to write to an unitialised object
mmxprs 2.10.0
  • Optimiser status 'MIP_LP_NOT_OPTIMAL' now interpreted as 'unfinished'
  • 'defsecurevecs' no longer ignores set of rows if a set of variables is used
  • A potential memory corruption has been fixed in getloaded{mpvars|linctrs}
  • 'savemipsol' no longer reports an error when used on a presolved problem
BCL 4.8.8
  • Fixed issue with 'getIIS' when used to access the IIS approximation
  • Fixed 'printcut' to print using problem pointer
  • Fixed error message in 'printctr'/'printidxset'
  • Fixed extra cut printing in 'xbgetcuts'
IVE 1.24.12
  • Fixed Excel issue, where model deployed to VBA would occasionally have incorrect working directory
  • Fixed issue where file might fail to laod if start and end aligned with memory boundary

Known issues in Release 8.0

Back to top
Matlab
  • When using the 'moselexec' function from the Xpress Matlab Interface, in order to correctly exchange strings containing Unicode characters between Matlab and Mosel (which now uses UTF-8 for its internal representation of text strings), the Matlab 'DefaultCharacterSet' should be set to UTF-8 too. This can be achieved by executing the Matlab command "feature('DefaultCharacterSet','UTF-8')".