Initializing help system before first use

Xpress Release Notes

New in Release 9.5

Release 9.5 introduces new object-oriented C++ interfaces for the Xpress solver.
  • The new C++ interface allows user to formulate problems in an object-oriented manner, using features such as lambda functions and containers.
  • It provides a new XpressProblem class and related functions for ease of model building. Since XpressProblem is a subclass of XPRSprob it also gives developers direct access to the matrix-oriented C++ interface.
  • The C++ interface complements the existing .NET and Java object-oriented to provide a consistent API across all three programming languages. These interfaces provide an alternative for current FICO Xpress BCL users, and guidance is available from FICO to help transition existing applications.

Xpress Optimizer 44.01.01

  • New functions XPRSgetcallbacksolution, XPRSgetcallbackslacks, XPRSgetcallbackduals, and XPRSgetcallbackredcosts. These functions can be used for retrieving the context-specific solution for any problem type and any callback where a solution is available. The solution returned in the affected callbacks are:
    • bariteration: Barrier iteration solution
    • chgbranchobject, nodelpsolved, optnode: Node relaxation solution
    • intsol, slpintsol: New incumbent solution
    • preintsol: Candidate incumbent solution
    • slpcascadeend, slpcascadestart, slpiterend, slpiterstart, slpitervar, slppreupdatelinearization: SLP iteration solution.
    The new function should be used instead of XPRSgetlpsol to retrieve a solution within a callback. This includes obtaining the new incumbent solution in the preintsol and intsol callbacks, and obtaining the node relaxation solution in the optnode, nodelpsolved and chgbranchobject callbacks. The corresponding presolved solution can be obtained using the new XPRSgetcallbackpresolvesolution, XPRSgetcallbackpresolveslacks, XPRSgetcallbackpresolveduals and XPRSgetcallbackpresolveredcosts functions.
  • XPRSgetmipsol, XPRSgetnlpsol, XPRSgetmipsolval and XPRSgetlpsolval are now deprecated. Use XPRSgetsolution, XPRSgetcallbacksolution and related functions instead.
  • Performance improvements:
    • Dual sparsification: New presolve technique to improve sparsity by column-based elimination.
    • New knapsack cover lifting procedure which uses super-additive lifting.
    • Perform additional coefficient tightening for models with big-M's.
    • Better handling of lower bound for integral objectives in objective propagation.
    • Improved sorting procedures throughout the solver.
    • New starting point heuristics have been added to the barrier algorithm when BARSTART = 1 is set.
  • Minor changes:
    • New functions, XPRSsparsebtran and XPRSsparseftran, which allows sparsity in the input and output vectors to be handled efficiently. These provide the same transformation as the dense XPRSbtran and XPRSftran.
    • The new function XPRSiisprint can be used to print an IIS in the log.
    • Improved numerical handling of cutting planes to improve numerical stability of some challenging models.
    • Improved our compression routines, resulting in a notable speedup of save file generation by 30% on some platforms.
    • Functions XPRSrepairweightedinfeas() and XPRSrepairweightedinfeasbounds() will now check if the provided arrays are NULL and raise an error if so.

Xpress Nonlinear 44.01.01

  • Knitro has been upgraded to its latest version of 14.1.
  • Necessary reformulations (such as adding an equalscolumn) will now be restored at the end of the solve even if nonlinear presolve is off. This behaviour is affected by the NLPPOSTSOLVE control, which, if disabled, will keep the problem in a solving state at the end of the solve.
  • Solution infeasibilities are now listed in the log at the end of a solve. They are also available through the attributes MAXABSPRIMALINFEAS, MAXRELPRIMALINFEAS and MAXMIPINFEAS.
  • XPRSfixglobals can now also be called after global or postsolved MISLP solves to fix all MIP entities according to their values in the (nonlinear) solution.
  • Performance improvements:
    • Improved performance of heuristics within multi-threaded MISLP.
  • Minor changes:
    • Tokens with invalid indices will be rejected earlier and values for tokens that do not require a value (e.g., brackets) will be ignored.
    • NOFORMULADOMAINIV is deprecated.
    • The following functions have been deprecated for a while. They will now raise a deprecation warning when used: XPRSslpadddfs, XPRSslpaddtolsets, XPRSslpaddvars, XPRSslpchgdf, XPRSslpchgtolset, XPRSslpdeltolsets, XPRSslpdelvars, XPRSslpgetdf, XPRSslpgettolset, XPRSslploaddfs, XPRSslploadtolsets, XPRSslploadvars, XSLPadddfs, XSLPaddtolsets, XSLPaddvars, XSLPchgccoef, XSLPchgdf, XSLPchgformulastring, XSLPchgtolset, XSLPdeltolsets, XSLPdelvars, XSLPgetbanner, XSLPgetccoef, XSLPgetdf, XSLPgetformulastring, XSLPgettolset, XSLPloaddfs, XSLPloadtolsets, XSLPloadvars, XSLPremaxim, XSLPreminim
    • The nonlinear tuner will no longer try settings that keep non-convex quadratics in the XPRS problem, like bits 1 and 3 of the NLPREFORMULATE control and NLPPRESOLVE=0.
    • The TIMELIMIT control is now also forwarded to Knitro and both TIMELIMIT and XSLP_MAXTIME include both the presolve and Knitro time.
    • Improved the reading of .lp files with a large number of nonlinear expressions.
    • The maximum number of rows and columns when solving quadratic problems with the community license has been reduced from 5000 to 200.

Xpress Global 44.01.01

  • XPRSaddmipsol is now supported for global solves.
  • Performance improvements:
    • Improved computation of spatial branching point
    • General efficiency improvements

Xpress Interfaces 44.01.01

  • Java, .NET
    • Functions XpressProblem.getSolution(), .getDuals(), .getSlacks(), .getRedCosts(), as well as Variable.getSolution(), Variable.getRedCost(), Inequality.getDual(), Inequality.getSlack() will now all raise an exception in case the queried information is not available.
    • Hashing of multi-dimensional map keys for dimensions larger than 2 now works correctly.
    • In the object based APIs some methods were shuffled and some argument types were generalized to super classes. No code changes should be required but you may have to recompile your application, especially if you used reflection on the object based API.
    • Function XPRSprob.createBranchObjectFromGlobal() was marked deprecated. It will be removed in a future release.
    • The MultipleKnapsack example was split into two examples: MultipleKnapsack_Arrays and MultipleKnapsack_Collections.
    • The PolygonModeling.cs example file was renamed to PolygonObjects.cs to match the name of the class and the corresponding example in Java.
  • Python:
    • Using deprecated functionality now causes a warning to be emitted. Warnings can be disabled with warnings.simplefilter or warnings.filterwarnings; see the documentation for more information.
    • New deprecations: creating unlinked variables, sharing unlinked variables between several problems, passing variables or constraints objects to the API while in a callback or presolved, problem.getObjVal, accessing the constraint body via constraint.body.
    • New function constraint.getBody can be used to get an expression representing the left-hand side of a constraint.
    • Functions problem.getSlack, problem.getDual and problem.getRCost have been renamed to problem.getSlacks, problem.getDuals and problem.getRedCosts.
    • The problem.getSolution, problem.getSlacks, problem.getDuals and problem.getRedCosts functions now behave consistently with XPRSgetsolution, XPRSgetslacks, XPRSgetduals and XPRSgetredcosts.
    • The xpress.Dot operator now supports SciPy matrices of type int32, int64, float32 and float64 in CSR and CSC format.
  • In R, the xprs_getsolution function is now deprecated. Instead, use getsolution, which can now be called with just a problem argument, along with getslacks, getduals and getredcosts.
  • The Matlab interfaces for Xpress (Solver and Mosel) are now available for macOS on Apple Silicon M-series processors.
  • The C and Java example programs can now be run more easily, with "make all.run".

Xpress Kalis 13.4.0

  • Performance improvement to define idle time resources (function 'updateDurationWithIdleTimes').
  • New parameter 'kalis_max_min_bound_consistency' to control the propagation level of maximum/minimum constraints.
  • New parameter 'kalis_task_variables_domain_type' to control the domain representation of task variables.

    Using a bound domain only can improve performance on problems where constructive approaches are used (e.g. earliest start time heuristic).

  • Performance improvement for collecting solution values (function 'getsol').

Xpress Mosel 6.8.0

Language

  • New annotation property 'noimplicit'.

mmsystem 2.14.1

  • 'untar' and 'tarlist' now ignore extended tar flag 'g' instead of failing.

advmod

  • The package advmod is now deprecated and will be removed in a future release. Please see section Logical constructs of the MIP formulations whitepaper on how to rewrite logical expressions with indicator constraints.

deploy 3.2.1

  • Executables produced from a model not using 'deploy' may now have their parameters set via the command line.

hadoop 0.0.3 (Linux platforms only)

moseltest 0.10.1

  • Added parallel execution of tests:
    • New parameters NBW, ASYNCOUT, LOGWKR, XSRVLOG.
    • New tags 'after', 'sync'.
  • Added selection of tests by labels:
    • New parameters SKIPLABELS, ONLYLABELS.
    • New tag 'labels'.
  • Added optional coloured display with default report format (new parameter COLOR).
  • Coverage report for Jenkins in Cobertura format (enabled with bit 2/value 4 for COVREP).
  • This tool is now included with the Xpress binaries in the release build. It also remains available from the Mosel open source repository.

Xpress Workbench 3.14

  • macOS: Workbench now ships in both the Intel and ARM editions of the Xpress installer
    • Workbench binary components, unlike the Xpress libraries, are still built to target Intel Macs, and run on ARM Macs via Apple's Rosetta2 emulation.
  • Allow arguments for custom Python environment in Compile Options.
    • Also allows for the executable Path to be to Conda instead, and the arguments to specify a Conda environment.
    • Can also use "$CONDA_EXE" (without quotes) to use CONDA_EXE environment variable (if present). as the executable path instead of hard-coding a particular path.
  • Support for Insight 4 is removed.
    • This also means that logging in to an Insight server is now done via the OS credentials manager, rather than via username & password.
  • DMP: switched from miniconda to micromamba; should not affect experience of configuring an environment with the environment.yaml file, but the resulting console output may differ from previous version.
    • Known issue: the current micromamba release may issue a spurious warning about a missing "root prefix" option, and the defaulting to the user's home directory; this can be ignored.
  • Insight pane has new Manage Connections dialog for more information about Insight connection (replaces the Unlink menu item).
  • Profiler now supports Python as well as Mosel models.
    • Uses the yappi Python library.
    • Unlike Mosel profiler (which puts out a .prof file for each source file), generates a single .prof file with links to the given source file.
  • Updated View Designer to support latest features of VDL 5 in Xpress Insight 5.12.
  • Added the "Shelf modify" action to View Designer
  • Updated VDL templates to specify VDL version 5.6

Fixed in Release 9.5

Xpress Optimizer 44.01.01

  • Fixed handling of infeasible start solutions in LNS heuristic.
  • Fixed numerical issue in MIR tightening.
  • Fixed an issue where incorrect rows were reported as a reason for infeasibility during presolve.
  • Fixed an issue with wrongly calculated solution infeasibilities when solving with PRESOLVE=0
  • All fixes from Xpress 9.4.3 (Optimizer 43.01.04).

Xpress Nonlinear 44.01.01

  • Fixed an issue where the SLP optnode callback was never thrown.
  • Fixed an issue where single-threaded MISLP solves were not postsolved correctly.
  • Fixed a performance issue in the nonlinear data structures that could impact large nonlinear problems
  • All fixes from Xpress 9.4.3 (Optimizer 43.01.04).

Xpress Interfaces 44.01.01

  • All fixes from Xpress 9.4.3 (Optimizer 43.01.04).

Xpress Global 44.01.01

  • All fixes from Xpress 9.4.3 (Optimizer 43.01.04).

Xpress BCL 44.01.01

  • All fixes from Xpress 9.4.3 (Optimizer 43.01.04).

Xpress Mosel 6.8.0

mmxnlp 34.5.3

  • 'getparam' now works with Knitro parameters, such as 'xktr_param_opttol'.
  • Knitro parameters are now also available via the 'xprs_knitro_param' prefixes.
  • Fixed an error that occurred when a multi-objective problem has 'nlctr' objectives but they are all linear.

Fixed in Release 9.4.3

Xpress Optimizer 43.01.04

  • Fixed an issue that could result in MIP callbacks being fired from a different thread than the main thread when setting CALLBACKFROMMASTERTHREAD=1 and THREADS=1.
  • Fixed an issue with presolving of MIPs with indicator constraints that could result in invalid tightenings.
  • Fixed an issue when setting OBJSCALEFACTOR for MIQPs that could result in a sub-optimal solution being returned.
  • In multi-objective problems, the beforeobjective and afterobjective callbacks are now fired for empty objectives with non-zero weight. Objectives with zero weight are considered disabled and will continue to be skipped.

Xpress Nonlinear 43.01.04

  • The TIMELIMIT control is now also forwarded to Knitro and both TIMELIMIT and XSLP_MAXTIME include both the presolve and Knitro time.
  • Fixed a potential crash on nonlinear problems with binary rows with only a few repeating coefficients (where the configuration presolver would have been applied).
  • Fixed an issue with reading in .lp files with nonlinear coefficients like y * { x ^ 2 } <= 1 .
  • Fixed an issue that could lead to a wrong value for the objective transfer column when the objective coefficient was not +1.
  • Fixed an issue with the TIME attribute not including all of nonlinear presolve.

Xpress Interfaces 43.01.04 (Python, R, Matlab, .NET, Java)

  • Fixed an issue that caused API calls that change nonlinear formulas to be recorded incorrectly when API recording is enabled.
  • In Java and C# object based API any object information is now correctly dropped if the problem is reloaded via readProb() or loadLp() and friends. Previously, that information was not dropped which could lead to stale information being present.

Fixed in Release 9.4.2

Xpress Optimizer 43.01.03

  • Fixed an issue where a wrong solution could be returned by XPRSgetlpsol in a preintsol callback fired before the initial LP relaxation has been solved.
  • Improved the numerical handling when presolving MIPs with very poorly scaled coefficients.
  • Fixed a deadlock that could occur when querying attribute values from callbacks.
  • Fixed an issue in the barrier algorithm which could cause a crash.
  • Fixed an issue where the LP relaxation solution was not available after a MIP solve that was completely presolved away.
  • Fixed an issue in the mod2 presolver.
  • Fixed a numerics issue in a presolver that can lead to wrong results.
  • Improved numerical handling with large bound values.
  • Fixed issue with restarts in component presolver.
  • Improved error message when a duplicate name error occurs.

Xpress Nonlinear 43.01.03

  • Fixed an issue on problems with non-convex quadratic objective and pre-existing objective transfer row that could lead to wrong results.

Xpress Global 43.01.03

  • Fixed a potential crash on problems with complementarity constraints.
  • Fixed an incorrect NLP-status for global solves that were stopped prematurely.

Xpress Interfaces 43.01.03 (Python, R, Matlab, .NET, Java)

  • Fixed a crash when calling XPRS.license(int) from Java and .NET.
  • In Python, fixed some issues with problem.getcutlist. It will now correctly return the list of loaded cuts and return the number of cuts.
  • In Python, problem.getSolution now raises an error after interrupting a MIP solve before a solution is found.
  • On Intel platforms, the Python interface requires OpenMP 2024.1 or earlier, due to an incompatibility in 2024.2.
  • Fixed a performance regression in vectorised operations, including xpress.Dot.
  • Fixed handling of duplicate terms in XpressProblem.setObjective() in case a LinTermList or a QuadTermList where passed.

Xpress Mosel 6.6.1

mmodbc 3.12.2

  • 'SQLdataframe' now updates parameter 'SQLrowxfr'.

mmsheet 1.14.1

  • I/O drivers csv/xls/xlsx now accept to process a 1-line range when reading with option 'skiph'.

mmxprs 4.4.2

  • Constant part of objective sometimes had the wrong sign when formulated with 'mmquad'.
  • Errors are no longer printed when 'writeprob' is called from a callback.

dmp 1.5.1

  • Fixed an issue with the 'name' attribute being set to the wrong value by 'dmpinitcomp' in Insight 5.

Fixed in Release 9.4.1

Xpress Optimizer 43.01.02

  • With numerical emphasis activated (i.e. with the NUMERICALEMPHASIS control set to any value greater than 0), a more careful numerical handling of cutting planes is applied to improve the numerical stability of some pathological models.
  • Fixed numerical issue in presolve reduction that can lead to incorrect results on extreme inputs
  • Fixed an issue in the crossover which could cause a crash.

Xpress Nonlinear 43.01.02

  • Fixed a potential issue when reading in problems with an explicit equalscolumn from .lp-files.
  • Fixed an issue where validationindices in the convergence callbacks could reflect a heuristic instead of the iteration solution.

Xpress Interfaces 43.01.02 (Python, R, Matlab, .NET, Java)

  • The Xpress solver libraries have been moved out of the main Python package (xpress) into a dependency package (xpresslibs). There are no changes to the installation procedure: the xpresslibs package will be downloaded and installed automatically by Pip and Conda.
  • In Conda environments, the Xpress solver libraries are now installed into the shared library folder: \Library\bin on Windows, /lib on macOS and Linux.

Xpress Mosel 6.6.1

Compiler Library

  • An issue has been fixed in the handling of procedure reference types coming from packages.

Xpress Workbench 3.13.1

  • Fixed issue where --prod command-line option was not correctly surfaced in xpwinsightcmd.

New in Release 9.4

Release 9.4 introduces new object-oriented .NET and Java interfaces for the Xpress solver. The Python API of the solver has also seen major updates; it now supports variables that are linked to the problem.

Xpress Optimizer 43.01.01
  • A new, first-order hybrid gradient algorithm is provided for linear optimization problems. It is activated by setting BARALG=4, and controlled by the new controls BARHGOPS, BARHGEXTRAPOLATE, and BARHGMAXRESTARTS.
  • AVX2 instructions are now enabled by default if supported by the hardware. Note that this can lead to path changes between CPUs with and without AVX2 intructions. The old, path-consistent default is available by setting CPUPLATFORM=-1.
  • MIP performance improvements:
    • Cutting plane separation features a new separator for multi-commodity flow structures. A new control MCFCUTSTRATEGY was introduced to determine whether MCF cuts are applied.
    • A new fix-propagate-repair heuristic runs parallel to the root cut loop for combinatorial problems where finding a feasible solution seems challenging.
    • The heuremphasis mode now uses a new background heuristic that solves a MIP without dual techniques.
    • The branching strategy now involves a score based on the efficacy of Gomory cuts.
    • A more aggressive branching strategy will be used after restarts.
    • Non-binding cuts are considered to be re-used after restarts.
    • The node selection strategy was improved.
    • Conflict constraints are handled more efficiently than before, in particular for large search trees and many parallel threads.
    • Presolving applies an additional step to remove dominated columns.
  • Many consolidation changes concerning callbacks:
    • The preintsol callback, set by XPRSaddcbpreintsol(), now offers the same flexibility as the optnode callback for MIP solves. The following is possible when the preintsol callback is fired on a node solution (soltype = 0):
      • Bounds can be tightened (using XPRSchgbounds()).
      • Cutting planes can be added or removed.
      • Branching candidates can be loaded.
      • New MIP solutions can be added (using XPRSaddmipsol()).
      Any such action that changes the node problem will cause the node relaxation to be resolved, which can lead to further branching. When the preintsol callback is fired for a heuristic or a user solution (soltypes 1 or 2), tightening of the problem is not possible.
    • XPRSgetsolution(), XPRSgetslacks(), XPRSgetduals() and XPRSgetredcosts() can now be called to fetch the incumbent solution during the following callbacks: optnode, prenode, infnode, intsol, preintsol, newnode, chgbranchobject, nodelpsolved, slpcascadeend, slpcascadestart, slpcascadevar, slpcascadevarfail, slpintsol, slpiterend, slpiterstart, slpitervar, slpdrcol, nlpcoefevalerror, slppreupdatelinearization.
    • Nonzero return values from the callback function passed to XPRSstrongbranchcb() are now treated as an error.
    • XPRSaddmipsol() can now be called the preintsol and intsol callbacks. XPRSaddmipsol() can also be called from the prenode or nodelpsolved callbacks, but the added solutions will be queued for later processing.
  • New error codes:
    • Error code 1143 indicates that the solver would have to convert a 64bit integer to a 32bit integer, but the value is too large to be represented as a 32bit integer.
    • Error code 1144 indicates when there is a decreasing value in an array of offsets that should be non-decreasing.
    • Error code 1145 indicates an illegal argument detected by Xpress.
    • Error code 1146 indicates an attempt to delete a column that is still referenced by a piecewise linear constraint.
    • Error code 1147 indicates an attempt to delete a column that is still referenced by a general constraint.
    • Warning numbers 951 and 952 can no longer be triggered and were removed.
    • Functions XPRSaddpwlcons(), XPRScalcsolinfo(), XPRSaddgencons() now return error 1143 for some invalid input.
    • Functions XPRSgetrows() and XPRSgetcols() will now raise error 1143 if there are more nonzeros than can be represented by a 32bit integer.
    • The following functions were never intended to be called on a problem in a solving state and will now trigger an error 902 if done so: XPRSaddcols(), XPRSaddgencons(), XPRSaddnames(), XPRSaddobj(), XPRSaddpwlcons(), XPRSaddqmatrix(), XPRSaddrows(), XPRSaddsetnames(), XPRSaddsets(), XPRSchgcoltype(), XPRSchgglblimit(), XPRSchgobjn(), XPRSdelcols(), XPRSdelgencons(), XPRSdelindicators(), XPRSdelobj(), XPRSdelpwlcons(), XPRSdelqmatrix(), XPRSdelrows(), XPRSdelsets(), XPRSestimaterowdualranges(), XPRSgetgencons(), XPRSgetindicators(), XPRSloadbranchdirs(), XPRSloaddelayedrows(), XPRSloaddirs(), XPRSloadmipsol(), XPRSloadmodelcuts(), XPRSloadsecurevecs(), XPRSreadbasis(), XPRSreadbinsol(), XPRSreaddirs(), XPRSresetnames(), XPRSscale(), XPRSsetdefaults(), XPRSsetindicators(), XPRSsetobjdblcontrol(), XPRSsetobjintcontrol(), XPRSsetprobname().
  • Minor changes:
    • The BACKGROUNDSELECT control supports additional features that are selected by bits 1, 2, 3.
    • Function XPRSchgbounds() no longer snaps bounds in [XPRS_MINUSINFINITY, 0.5*XPRS_MINUSINFINITY] to XPRS_MINUSINFINITY and [0.5*XPRS_PLUSINFINITY,XPRS_PLUSINFINITY] to XPRS_PLUSINFINITY.
    • Function XPRSloadlpsol now accepts NULL for all array elements, which will invalidate the current solution without loading a new one.
    • XPRSgetsolution() and XPRSgetredcosts() now validate the column index arguments against INPUTCOLS, and XPRSgetslacks() and XPRSgetduals() validate the row index arguments against INPUTROWS. These new attributes hold the original dimensions of the problem before nonlinear transformations. Previously these functions could be used to query solution values for rows/columns added by nonlinear transformations: this functionality is still available by calling XPRSgetnlpsolution().
    • MIPRELCUTOFF is now relative to the incumbent solution whose cutoff is adjusted rather than to the root LP.
    • It is now possible to query resultant from XPRSgetgencons as well as colind and resultant from XPRSgetpwlcons() without needing to set maxcols/maxpoints to a nonzero value.
    • New control HEURSEARCHCOPYCONTROLS to determine whether user-set controls should be copied into local search sub-problems.
    • The NETCUTS control is now deprecated and without function. Consider using MCFCUTSTRATEGY for a control with similar scope.
    • Default value of ELIMFILLIN control changed to 7.
    • XPRSloadmipsol() can no longer be called from within a callback during a MIP solve. XPRSaddmipsol() should be used instead.
    • CPUsets on containers are now detected automatically (when built with the --cpuset-cpus option).
    • The values for constants XPRS_OUTPUTLOG_ERRORS_AND_WARNINGS and XPRS_OUTPUTLOG_ERRORS were changed from 2 to 3 and from 3 to 4, respectively. This change applies to all Xpress APIs.
    • When writing LP files, the Optimizer now always writes an objective function name. If no name is set, then "__OBJ___" is used.
    • XPRSaddcuts() now saves all added cuts to the user cut pool. Previously, such cuts were only saved to the cut pool at the end of a node solve.
    • Improved performance of XPRSchgcoltype() for models with SOS constraints.
    • Decomposition search on quadratic problems has been disabled. By default, disconnected components in quadratic MIPs are not solved separately anymore. The old behavior can be restored by setting MIPCOMPONENTS=1.
Xpress Nonlinear 43.01.01
  • Upgrade to Knitro 14.0.
  • MIP-in-SLP will now also perform a nonlinear presolve.
  • XPRS_IFUN_LOG has been deprecated as the identical XPRS_IFUN_LOG10 should be used instead.
  • The nonlinear log now lists the number of occurrences of the different internal functions (sqrt, log, exp, ...) when reading and presolving a problem.
  • Minor changes:
    • The type of the following SLP controls were changed to attributes: OPTTIME, ERRORCOSTS, VALIDATIONINDEX_A, VALIDATIONINDEX_R, OBJVAL. Using them as control is deprecated and will trigger an error in a future version of Xpress.
    • Trying to delete a row with attached coefficients/formulas will now also delete those coefficients/formulas instead of raising an error.
    • Trying to delete a column with attached coefficients/formulas will now replace the column with the constant zero in all those coefficients/formulas instead of raising an error. An exception are columns that are referenced as input in PWL formulas. Such columns cannot be deleted as that would render the PWL formula invalid (constant values are not allowed as input for PWL formulas).
    • Issues while reading in a nonlinear problem will now leave the error code at whatever issue caused the original failure rather than overwriting them with the generic E-12192 "no problem or solution read".
Xpress Global 43.01.01
  • Global Solver Performance improvements:
    • Retuned the default number of outer approximation cuts as well as the frequency with which they are added in the tree
    • Added special outer approximation cuts for trigonometric and odd power functions.
    • Adjusted branching point computation, in particular for trigonometric functions.
    • Added effort limits when running SLP as a heuristic within the Global solver.
    • Refactored and retuned the usage of MILP-heuristics within the Global solver.
  • New control GLOBALLSHEURSTRATEGY that determines how frequently a local solver is run when encountering solution candidates that are integer and feasible for the linear relaxation but infeasible for the nonlinear constraints.
  • New control GLOBALNUMINITNLPCUTS for the number of tangent cuts added to the initial relaxation at the root.
  • New controls GLOBALNLPCUTS and GLOBALTREENLPCUTS that determine the number of cut rounds for outer approximation and convexification cuts for global solves at the root and in the tree, respectively.

Xpress Solver Interfaces 43.01.01 (Python, R, Matlab, .NET, Java)

Java, .NET:
  • New object-oriented .NET and Java interfaces for the Xpress solver are now available in addition to the matrix-oriented interfaces.
    • The new interfaces provide the XpressProblem class and related functions that enable modelling of mathematical problems in an object-oriented manner.
    • Since XpressProblem is a subclass of XPRSprob it also gives developers direct access to the matrix-oriented APIs.
    • All Xpress solver features are available through the new APIs, including, for example, general constraints, multi-objective solving, formulating and solving of general nonlinear problems.
Python:
  • New Python API to create variables that are linked to the problem, such that when their properties are modified, the Optimizer problem is updated. It is advised to update existing models to use the new API:
    • Instead of calling xpress.var(properties) and then adding the resulting variable to the problem with problem.addVariable(myvar), call problem.addVariable(properties) directly.
    • Instead of calling xpress.vars(indices, properties) and then adding the resulting dictionary or array of variables to the problem with problem.addVariable(myvars), call problem.addVariables(indices, properties) directly.
    • Instead of calling xpress.sos(properties) and then adding the resulting SOS to the problem with problem.addSOS(mysos), call problem.addSOS(properties) directly.
  • New rhsrange argument in the Python constraint constructor, which (along with the rhs argument) provides an alternative way to construct range constraints.
  • New type, rhs and rhsrange properties on Python constraint objects, which correspond to the type of the constraint (e.g., xpress.leq), the right-hand side of the constraint (as returned by XPRSgetrhs) and the right-hand side range (as returned by XPRSgetrhsrange).
  • Python warnings related to the license are now emitted using the Python warnings module. These warnings can be disabled by calling: warnings.simplefilter('ignore', xpress.LicenseWarning)
  • Python 3.7 is no longer supported since it has reached its end of life.
  • The problem.loadproblem() and problem.read() Python functions now create linked objects by default. The behavior of 9.3 and earlier can be restored by passing the argument unlinked=True.
Minor changes:
  • The XSLP.NET assembly and all its functionality are deprecated. Use the API that is available via XPRSprob and the Xpress.NET assembly.
  • The following deprecated functions were removed in all APIs (including C):
    • the sepnode callback
    • the estimate callback
    • XPRSstorebounds
    • XPRSsetbranchbounds
    • XPRSsetbranchcuts
    Use the chgbranchobject callback and branching objects to customize branching. In Java, the XPRSbounds class was removed since it was only used in the removed API.
Xpress BCL 43.01.01 (Python, R, Matlab, .NET, Java
  • There is a new class XPRBexprContext that simplifies the cleanup of XPRBexpr instances.
  • BCL no longer forbids using equations in indicator constraints, delayed rows, or model cuts.
  • Minor changes:
    • The function XPRBdelprob_jprobdelxp() was removed.
    • The disjbranch example was removed.
  • The new object-oriented .NET and Java solver interfaces introduced with this release provide an alternative for current FICO Xpress BCL .NET and Java users and we provide guidance for an easy transition.
Xpress Kalis 13.3.1
  • Additional propagation for cross-resources start-based duration: When multiple discrete resources are requiring a task, some being optional, some not, the propagation now shares information between resources' cumulative constraints.

Xpress Mosel 6.6.0

Language
  • New function 'iniobuffer'.
  • Operators 'min' and 'max' can now be applied to native types (with dedicated support).
mosel
  • New option '-f' for command 'examine' to select directly a BIM file.
Compiler Library
  • Expressions 'x^2' and 'x^3' are now rewritten as 'x*x' and 'x*x*x' (the latter are faster to execute).
Runtime Library
  • Array assignment is now possible between arrays of different internal representations (e.g. dynamic to static).
  • Posix: a model waiting for input from the console can now be interrupted.
Native Interface
  • New function 'getstreambuffer'.
  • New native type functions @2 and @3 to enable support for min/max operators.
mmjobs 2.22.6
  • mempipe driver: new option 'nonblock'.
mmsheet 1.14.0
  • New option 'dataframe' for xls, xlsx and csv drivers.
mmsystem 2.14.0
  • 'tar' format now supports files larger than 8Gb.
  • New function 'getchar(text)' (equivalent to 'getchar(text,1)').
  • The types 'time', 'date', 'datetime' and 'text' now support 'min' and 'max' operators.
mmxprs 4.4.0
  • New function 'getname(logctr)'
  • New function 'getindictype(logctr)'
python3.2.1.8
  • Added Pandas 2 support.
  • Added Python 3.12 support.
  • Removed Python 3.5 and 3.6 support.

Xpress Workbench 3.13

  • View Designer:
    • Updated View Designer to support VDL 5.4, new views will specify VDL 5.4 as the required minimum version.
    • View Designer: Added the VDL Action, FICO Drive Open.
  • DMP: can filter list of Xpress Insight servers to those in the current solution.
  • xpwinsightcmd: added --prod option for publishing projects to production.
  • More friendly reporting of non-OK HTTP responses on first contact with Insight server.
  • New Compile Option dialog entry allowing configuration of Python as a per-project setting.

Fixed in Release 9.4

Xpress Optimizer 43.01.01
  • Fixed the type of the soltype argument for the preintsol callback in several APIs to consistently be int.
  • Function XPRSdelcols() will now fail if deletion of a column is requested that is still referenced by a piecewise linear or general constraint.
  • The following functions now check for NULL arguments to protect against abnormal terminations: XPRSgetindicators(), XPRSgetrows()/XPRSgetrows64(), XPRSgetcols()/XPRSgetcols64(), XPRSgetqrowqmatrix(), XPRSgetmqobj()/ XPRSgetmqobj64(), XPRSgetmipentities()/XPRSgetmipentities64(), XPRSgetqrowqmatrixtriplets().
  • Escaping of some characters in LP files was fixed. See the LP file specification in the manual for characters that need escaping.
  • Fixed a crash that would occur if a PWL was specified with two identical points.
  • Fixed a bug in symmetry detection in models with SOSs.
  • Fixed an issue in presolving that could lead to nonintegral solution values for integer columns.
  • Fixed a corner case inside a heuristic that could result in a crash.
  • Fixed a memory issue in concurrent LP logging.
  • Fixed an issue due to outdated solution information involving multiple HEURTHREADS.
  • Fixed a potential race condition inside concurrent MIP solves.
  • Fixed an issue with termination checks during symmetry detection.
  • Fixed an issue with parallel root heuristics that could cause a crash on out-of-memory.
  • Added a further stability check to presolve variable eliminations to avoid some numerical issues.
  • Fixed an issue in the mod2 presolve reduction that can sometimes lead to incorrect results.
  • Fixed an inefficiency in the QCQP solver.
  • Fixed an issue where constant objectives in .lp files ended up with the wrong sign.
  • Fixed a crash in the IIS algorithm.
  • Fixed potential crash on out-of-memory.
  • Fixed an issue primal simplex within a MIP solve that could result in solutions with a wrong objective for numerically challenging problems.
  • Function XPRSloadlpsol now accepts NULL for all array elements, which will invalidate the current solution without loading a new one.
Xpress Nonlinear 43.01.01
  • Multiple formulas in the same row of an .lp file are now added together instead of overwriting each other.
  • Fixed an issue with MIP-in-SLP for problems with non-convex quadratics but without any formulas.
  • Fixed a problem where the TIMELIMIT control was not correctly applied during nonlinear solves.
  • Fixed an issue with quadratic problems where all non-convexities involved fixed columns.
Xpress Solver Interfaces 43.01.01 (Python, R, Matlab, .NET, Java)
  • Several attribute/control definitions that refer to internal attributes/controls were removed from all APIs.
  • In Python, attempting to create a binary variable with a negative lower bound or an upper bound greater than one now raises an exception.
  • The __dict__ property of variable and constraint objects in Python is now populated correctly.
  • Fixed a bug in problem.loadproblem() where the previous variable and constraint objects were not deleted before loading the new problem.
  • Fixed a bug in Python chgbranchobject callbacks, which could cause a memory leak or a crash.
  • Fixed a crash in Python when a non-contiguous integer Pandas Series was passed to xpress.vars()
  • Added a workaround for a known memory leak in NumPy: https://github.com/numpy/numpy/issues/25949
Xpress BCL 43.01.01 (Python, R, Matlab, .NET, Java)
  • Fixed use-after-delete in XPRBprob destructor in Java.
Xpress Kalis 13.3.1
  • Fixed missing propagation in incremental propagation of the cumulative constraint. This was happening on a very particular instance when diving in the search tree.

Xpress Mosel 6.6.0

mosel

  • Debugger: displaying a loop index over a constant set no longer produces error messages.

Compiler Library

  • An issue has been fixed in the processing of private record types of imported packages that could cause errors when loading the model.

Runtime Library

  • A potential deadlock has been fixed in the handling of remote files.

mmsheet 1.14.0

  • xls/xlsx drivers: the default range (for "[]") no longer includes an additional row and column.

mmxprs 4.4.0

  • After calling 'fixmipentities' the problem is no longer handled as a MIP.

New in Release 9.3

Xpress is now supported on Redhat Enterprise Linux 9.

Xpress Mosel 6.4.4

mmetc 3.2.0
  • New IO driver 'ascii85:' for binary-to-text encoding.
mmssl 1.8.1
  • mmssl will now accept to run with openssl 3.1 (but a warning is displayed to indicate that the library does not have the expected version).

Fixed in Release 9.3

Xpress Optimizer 42.01.05
  • Fixed an issue with presolving of semi-continuous variables that could lead to incorrect results.
  • Fixed an issue that could lead to memory corruption if XPRSaddmipsol is called in the intsol or preintsol callbacks while the initial solutions loaded by XPRSaddmipsol are being processed.
  • Fixed numerical issue in presolve reduction that can sometimes lead to incorrect results.
  • Fixed an issue in a presolve reduction that can sometimes lead to incorrect results.
  • Fixed a crash in XPRSreadprob when reading an LP file with an NLP data section.
  • Fixed a crash when solving problems where the objective has non-unit weight.
  • Input errors in XPRSaddpwlcons and XPRSaddgencons will now leave the problem in a consistent state.
  • Fixed and issue with partial integers that have an unbounded integer range.
  • Fixed behavior of bit #6 and #7 of controls CUTSELECT and TREECUTSELECT to allow disabling the separation of MIR cuts and Lifted cover cuts.
  • Fixed an issue in the clique domination presolve reduction that can lead to incorrect results.
  • Fixed a problem where time limits were not handled correctly while checking convexity if solving with XPRSoptimize.
  • Stability improvements to the infeasibility repair procedure.
Xpress Nonlinear 42.01.05
  • Fixed a potential crash when encountering numerical difficulties while solving an LP or convex QCQP through nlpoptimize.
  • Fixed an issue where reading in a new problem with non-convex quadratics given as [] blocks in an .lp-file or as quadratics rather than formulas in an .mps-file did not properly reset a previous nonlinear solve.
Xpress Global 42.01.05
  • Fixed a potential crash at the end of presolve during global solves.
Xpress Interfaces 42.01.05 (Python, R, Matlab, .NET, Java)
  • When creating integer or binary variables in Python, the bounds are rounded in the resulting variable object using the same rules as when variable bounds are modified using the Optimizer C API.
  • When adding binary variables to a problem in Python, non-default values for the lower or upper bound are now correctly applied.
  • Fixed a crash when deleting special ordered sets from Python.
  • In Python, the correct error message is now shown when an invalid index is passed to problem.delVariable or problem.delConstraint.
  • Fixed a crash when a 1d numeric NumPy array is passed to problem.addConstraint and several other API functions.
  • Fixed a problem where the first/last arguments of problem.getVariable, problem.getConstraint and problem.getSOS were sometimes ignored.
  • Fixed "wrong arguments" error when calling problem.addcoefs or problem.loadcoefs.
Xpress BCL 42.01.05
  • BCL no longer forbids using equations in indicator constraints, delayed rows, or model cuts.
  • In Java there is now a function XPRB.disableFinalizers() that can be used to explicitly prevent finalizers for BCL classes to call into native code. This can be used to work around crashes at application shutdown.

Xpress Mosel 6.4.4

Compiler Library
  • Printing format "%y" and "%j" now support "#" modifier (to force inclusion of a decimal point).
mmreflect 1.4.1
  • 'callproclsa'/'callfunclsa' now handle properly an argument of type 'list of any.
mmxml 2.4.3
  • 'xmlparse' and 'jsonparse' no longer report out of range error messages when accessing missing entries in the function table.
Xpress Workbench 3.12
  • Fixed the Known Issues with viewing Python debug data mentioned in Workbench 3.11.
  • (DMP only): no longer incorrectly listing Insight 5 staging servers as candidates for app publishing
  • Fixed issue where Workbench could not connect to Insight because of IPv4/IPv6 conflicts.
    Note: Users who had updated their Insight application.properties file to work around this issue by changing the server.address property from 127.0.0.1 to ::1 should now change it back.
  • Fixed issue where Workbench could not connect to Insight if the latter was using Single Sign-On
Xpress Workbench 3.11
  • (Desktop) Fixed issue where building an app zip file could silently fail if the file could not be saved in the desired location. Now any error is reported to the user.
  • Fixed issue where Mosel code-folding failed to correctly handle subroutine declarations in requirements blocs.

New in Release 9.2.5

Xpress Solver and Xpress Mosel are now available for Apply Silicon M-series processors, on MacOS 11.0 (Big Sur) or later.

Fixed in Release 9.2.5

Xpress Optimizer 42.01.04
  • Fixed a performance issue in XPRSaddcols and XPRSchgobj
Xpress Interfaces (Python, R, Matlab, .NET, Java)
  • Fixed a problem in which XPRSprob.addSets() would incorrectly raise an "array too short error" in Java.

Xpress Mosel 6.4.3

Runtime Library
  • Printing format "%y" and "%j" now support "#" modifier (to force inclusion of a decimal point).
mmodbc 3.12.1
  • SQLite driver: column type no longer systematically reported as textual when the first row of a result set for this column is an empty cell.

Fixed in Release 9.2.4

Xpress Optimizer 42.01.03
  • Calling XPRSchgobj on a problem in a presolved or solving state will now result in an error.
  • Fixed an issue where delayed rows or model cuts were not restored properly if a MIP is declared infeasible during presolve.
  • Fixed a potential memory corruption when using HEURDIVESTRATEGY=11 or 12.
  • Fixed a potential memory leak.
  • Fixed an error with handling semi-continuous columns.
  • Fixed an issue causing wrong RLT cuts on models with indicators that are activated with value 0.

Xpress Interfaces 42.01.03 (Python, R, Matlab, .NET, Java)

  • Functions to query solution information (value, slack, reduced cost, dual) for single items were fixed in the Java and C# APIs.
  • Fixed a potential race condition in BCL cleanup in .NET.
  • Fixed a potential double-deletion/crash in cleanup in BCL Java.
  • Fixed a Python error when adding a large number of variables to a problem.
  • Python functions now raise a MemoryError when they fail to allocate memory.
  • Python 3.7 is no longer supported since it has reached end of life.

New in Release 9.2.3

This release is incremental to Release 9.2.2, it does not include updates from 9.2.1.

Xpress Mosel 6.4.2

mmsystem 2.12.4
  • Posix: 'getsysstat' now returns a negative value when the process run via 'system' has terminated because of a signal.
  • 'sysinfo' can now also report the PID of the process running the instance (tag SYS_PID).
mmxprs 4.2.1
  • 'getvar(logctr)' can now be used to retrieve the variable of an indicator constraint.
  • 'logctr' representing indicators now support names generation.

Fixed in Release 9.2.3

Xpress Optimizer 42.01.02
  • Fixed an issue with presolving of partially defined user solutions.
  • Fixed a memory leak on Windows when solving MIPs.
  • Fixed a small issue in the mod2 presolver module potentially leading to wrong optimal solutions.
  • Fixed a potential crash when parsing floating point numbers.
  • Fixed a bug when XPRSchgobjn is used to modify existing objective coefficients.
  • Fixed a bug related to scaling in IIS.

Xpress Nonlinear 42.01.02

  • Fixed an issue with nonlinear indicators with exactly one linear nonzero.

Xpress Global 42.01.02

  • Fixed an issue in presolve for problems with both convex quadratics/SOCPs and non-convex quadratics or general nonlinearities.
Xpress Interfaces 42.01.02(Python, R, Matlab, .NET, Java)
  • Fixed an issue where an error message was displayed when problem.getSolution was called from a Python callback.
  • Fixed an issue where the Python interface advised the user to pass a path to xpress.init when the path was already being passed.

Xpress Mosel 6.4.2

Compiler Library
  • Valid redefinitions of types are no longer rejected.
Runtime Library
  • An issue has been fixed in the bim loader (it could cause a runtime error E-1004 under certain conditions).
mmnl 2.6.2
  • A potential memory leak has been fixed when 'setname(nlctr)' is used.
mmxnlp 34.5.1
  • An issue has been fixed in the generation of names of nonlinear constraints.
Licensing (xprl) 3.2.7
  • The encrypted licensing of version 3.3.0 is not available in this release.

Fixed in Release 9.2.2

This release is incremental to Release 9.2.0, it does not include updates from 9.2.1.

Xpress Mosel 6.4.1

Runtime Library
  • Converting a union to its textual representation no longer produces "(null)" when the union contains an empty string.
  • A workaround for a compatibility issue of some XI4 apps compiled with previous releases of Xpress has been implemented.
XPRD
  • A potential memory leak has been fixed in 'XPRDdisconnect'.
Licensing (xprl) 3.2.7
  • The encrypted licensing of version 3.3.0 is not available in this release.

New in Release 9.2.1

Licensing (xprl) 3.3.0

  • License server connections are encrypted with TLS, if OpenSSL libraries are available.

New in Release 9.2

Back to top

Major Change for Nonlinear Problems

Xpress Global is now the default solver (if licensed) for nonlinear problems. As a result, non-convex problems will be solved to global optimality. However, if a (faster) local solve is desired or if dual values are needed for continuous nonlinear problems, you can set the control XPRS_NLPSOLVER to 1 to get the problem solved by Xpress Nonlinear (if licensed). For more details, please refer to the Xpress Global Userguide.

Xpress Optimizer 42.01.01

  • XPRSoptimize now solves non-convex quadratic problems to global optimality by default. This functionality is enabled for all users who are licensed to use the MIP solver.

  • MIP Performance improvements:
    • Improved usage of conflict scores in branching.
    • Improved work limits in the separation of MIR cuts and Strong Chvatal-Gomory cuts.
    • Improved branching strategies on MIP models with highly degenerate objective function.
    • New pre-LP primal heuristic Shift-and-propagate to find an initial feasible solution. This heuristic combines an iterative search algorithm with bound propagation and the solution to a small remaining LP on continuous variables. This heuristic is off by default but can be enabled with a new control, HEURSHIFTPROP, or when setting HEUREMPHASIS=2.
    • Performance improvements to the propagation algorithm for conflict constraints during the MIP tree search.
    • New cutting planes, based on Reformulation Linearization Techniques (RLT) have been added. A new control RLTCUTS is available to turn the separation of these cutting planes on or off.
  • Minor improvements:
    • The range of control FEASIBILITYJUMP was extended. See the documentation for more details.
    • New controls BACKGROUNDMAXTHREADS, BACKGROUNDSELECT, HEURSEARCHBACKGROUNDSELECT to control how many threads run in parallel to the root cut loop and what is executed on those threads.
    • The LP reader now accepts non-ascii characters (characters with their highest bit set) in names (as the MPS reader always did). Consequently, the LP reader will no longer issue warning or error messages about non-ascii characters.
    • There is a new function XPRSgetversionnumbers() that returns the major, minor, and build number of the Optimizer version.
    • There are new preprocessor defines XPVERSION_MAJOR, XPVERSION_MINOR, XPVERSION_BUILD, XPVERSION_FULL that give, respectively, the major, the minor, the build and the full number of the optimizer version (the existing XPVERSION macro gives the number of the major version). These constants are also exported to Java and C#. These APIs now also provide constants Version, VersionMajor, VersionMinor, VersionBuild and VersionFull with the same meaning.
    • Function XPRSgetversion() is now allowed to be called without XPRSinit(). Moreover, this function now returns error 1057 if a NULL pointer is passed.
    • There is a new constant XPRS_MAXMESSAGELENGTH (currently 512) that specifies the maximum length of a message that may be passed into a callback registered with XPRSaddcbmessage() (or its wrapper in other APIs).
    • Library libxprb.so/libxprb.dylib/xprb.lib/xprb.dll is no longer shipped. This library did not contain any functionality and was provided for backward compatibility only. All BCL functionality is provided through the Optimizer library.
    • Library libxslp.so/libxslp.dylib/xslp.lib/xslp.dll is no longer shipped. This library did not contain any functionality and was provided for backward compatibility only. All SLP functionality is provided through the Optimizer library.
    • Functions XPRSstorebounds(), XPRSsetbranchbounds(), and XPRSsetbranchcuts() are marked deprecated and will be removed in a future release. They can only be used from a callback installed via XPRSaddcbsepnode(), which is already marked as deprecated. Branching objects (ref. XPRS_bo_create()) should be used instead for specifying custom branching entities.
    • XPRS functions now correctly return error code 1057 (rather than 32) if they have an XPRSprob argument and that argument is NULL.
    • The objcoef argument for function XPRSaddcols() and XPRSaddcols64() can now be NULL. In that case all newly created columns will have objective coefficient 0 (zero).
    • The lb argument function XPRSaddcols() and XPRSaddcols64() can now be NULL. In that case all newly created columns will have lower bound 0 (zero).
    • The ub argument function XPRSaddcols() and XPRSaddcols64() can now be NULL. In that case all newly created columns will have an infinite upper bound (XPRS_PLUSINFINITY).
    • Functions XPRSloadlp(), XPRSloadlp64(), XPRSloadqp(), XPRSloadqp64(), XPRSloadqcqp(), XPRSloadqcqp64(), XPRSloadmip(), XPRSloadmip64(), XPRSloadmiqp(), XPRSloadmiqp64(), XPRSloadmiqcqp(), XPRSloadmiqcqp64() now support NULL for the following arguments:
      obj NULL means: all variables have linear objective coefficient 0
      lb NULL means: all variables have lower bound 0.
      ub NULL means: all variables have an infinite upper bound.
      Note that NULL is not supported for arguments that specify a quadratic objective. Instead, use the non-qp versions of these functions to avoid loading a quadratic objective.
    • XPRSreadprob() (and its wrappers in all APIs) will now reset the problem to empty and the objective sense to "minimize" if any error occurs in that function.
    • New function XPRStuneprobsetfile() runs the tuner on a set of problems whose filenames are provided in a text file.
    • Function XPRSgetnames() is marked deprecated and will be removed in a future release. XPRSgetnamelist() should be used instead.
    • New functions XPRSnlpgetformulastr() and XPRSslpgetcoefstr() can be used to query the length of a nonlinear formula string without passing a buffer.
    • Functions XPRSnlpgetformulastring(), XPRSnlpchgformulastring(), XPRSslpgetccoef() and XPRSslpchgccoef() are marked as deprecated and will be removed in a future release. New functions XPRSnlpgetformulastr(), XPRSnlpchgformulastr(), XPRSslpgetcoefstr(), and XPRSslpchgcoefstr() should be used instead. The functions XPRSnlpgetformulastr() and XPRSslpgetcoefstr() can also be used to query the length of a nonlinear formula string without passing a buffer.
    • Registering or removing a callback of type cutmgr, chgnode, chgbranch estimate, or sepnode will now issue a deprecation warning if the compiler is configured to emit this kind of warnings. These warnings also exist in the Java and C# APIs now.
    • The enumeration values XPRS_HEURSTRATEGY_* for the removed control HEURSTRATEGY were marked deprecated. They will be removed in a future release.

Xpress Global 42.01.01

  • The 0/1 control XPRS_GLOBALSOLVE has been replaced by a -1/1/2 control XPRS_NLPSOLVER.
  • It is now possible to continue global solves after, e.g., hitting a node limit.
  • New controls GLOBALSPATIALBRANCHCUTTINGEFFORT and GLOBALSPATIALBRANCHPROPAGATIONEFFORT for controling the effort spent on propagating/cutting on nonlinearities when evaluating branching entities during a global solve.
  • Performance improvements:
    • New cutting planes, based on Reformulation Linearization Techniques (RLT), are now separated for nonconvex bilinear terms. A new control RLTCUTS is available to turn the separation of these cutting planes on or off.
    • Significant performance improvements for the parallel behaviour of Xpress Global.
    • Improvements to the handling of bilinear terms with fixed right-hand side.
    • General performance improvements to various bookkeeping tasks.
  • Current limitations: Some advanced functionalities of the FICO Xpress Optimizer are presently not available in FICO Xpress Global. This comprises: XPRScalcobjective XPRScalcreducedcosts XPRScalcslacks XPRScalcsolinfo XPRSgetinfeas XPRSgetlpsol XPRSgetlpsolval XPRSgetmipsol XPRSgetmipsolval XPRSgetpresolvemap XPRSgetscaledinfeas XPRSloadmipsol XPRSpostsolvesol XPRSpresolvecut XPRSpresolverow

Xpress Nonlinear 42.01.01

  • Continued Nonlinear solves will now print a solution summary at the end.
  • XPRSoptimize will now continue nonlinear solves when possible. (XPRSnlpoptimize keeps the old behaviour of restarting unless the -c flag was given)
  • Minor changes:
    • Unbounded problems with feasible initial point solved through Knitro will now return NLP status unbounded rather than feasible, and similarly the status will be unsolved if Knitro failed to solve the problem, even if the initial point was feasible, which can still be queried through the NLPSOLSTATUS.
    • Nonlinear problems that were transformed into MIPs are now postsolved if infeasible.

Xpress Solver Interfaces 42.01.01 (Python, R, Matlab, .NET, Java)

  • The R interface now supports non-linear modeling and solving. User functions and multi-starts are not supported yet at the moment.
  • Minor changes:
    • SLP and NLP attributes are now available in Java and C# in the same way as XPRS attributes.
    • Names in the Python API are no longer limited to ~150 characters. Also names created in xpress.vars() are no longer limited to 2500 characters.
    • The obsolete function getiis has been removed from all APIs.
    • The `jobdata` argument to multistarts in the Java and C# API is no longer of type `long` but is now of type `Object`/`object`. This allows for passing arbitrary data as job data.
    • In Python, problems with nonlinear, piecewise linear or general constraints that were transformed into MIPs are now postsolved if infeasible.
    • The example benders_decomp.py was fixed.
    • In Python, new constants were added to the xpress package that reflect the corresponding stop statuses in the library:
      xpress.stop_genericerror XPRS_STOP_GENERICERROR
      xpress.stop_memoryerror XPRS_STOP_MEMORYERROR
      xpress.stop_solvecomplete XPRS_STOP_SOLVECOMPLETE
      xpress.stop_licenselost XPRS_STOP_LICENSELOST
      xpress.stop_numericalerror XPRS_STOP_NUMERICALERROR
      These constants were missing from previous versions.
    • Any functionality corresponding to C library functions XPRSstorebounds(), XPRSsetbranchbounds(), and XPRSsetbranchcuts() is deprecated and will be removed in a future release. Use branch objects to explicitly control branching.
    • In the Python function problem.loadcuts(), the argument coltype has been renamed to cuttype.
    • A number of functions with "internal" or "package" access restrictions were removed from the C# and Java APIs.
    • The following functions were added to the Python interface: problem.getnames(), problem.nlpgetformula(), problem.nlpgetformulastr(), problem.slpgetcoefstr(), problem.nlpsetinitval(), problem.tuneprobsetfile().
    • XPRSinit() and XPRSfree() are now available in matlab as xprsinit() and xprsfree().

Xpress Mosel 6.4.0

Language

  • New compiler directives !@mc.version.[compatible|atleast|since|deprecated] for advanced handling of versions for packages.
  • Records can now be declared in the requirements section (no need to declare their fields).
  • New function 'getchar[s]' that returns the Unicode character code of the first character of a string.

mosel

  • When examining a record, private fields are now displayed in parentheses.
  • The minimum compatibility version is now displayed when examining modules and packages.

xprmsrv

  • Upgrade to openssl 3.0.8 and libssh 0.10.5.

Compiler Library

  • Compilation of set (and list) operators '-' and '*' has been revised in order to avoid systematic duplication of the operands.
  • Generation of subroutine signatures is no longer limited to 512 bytes.
  • The compiler can now detect duplicate entries in a 'case' statement (this is reported as an error).
  • Under certain conditions 'case' statements are optimized.

Runtime Library

  • New property PROP_COMPAT for 'getmodprop' and 'getdsoprop'.

Native Interface

  • New service SRV_COMPAT to define the minimum compatibility version (as an alternative to service SRV_CHKVER).
  • New property PROP_COMPAT for 'getmodprop' and 'getdsoprop'.

mmjobs 2.22.4

  • Subroutines 'getmodprop[num]' and 'getdsoprop[num]' support the new property PROP_COMPAT.

mmnl 2.6.1

  • API update for multiple objectives.

mmodbc 3.12.0

  • Upgrade to SQLite 3.42.0.

mmreflect 1.4.0

  • New subroutines 'delcell' and 'exists' supporting iterators and list of array indices.

mmssl 1.8.0

  • Upgrade to openssl 3.0.8.

mmxnlp 34.5.0

  • Transfer rows are now automatically created for multi-objective problems with nonlinear objectives.

mmxprs 4.2.0

  • Multi-objective minimise/minimize, maximise/maximize, loadprob routines now also accept nlctr arguments.
  • New 'getiis' routines supporting nonlinear and indicator constraints.

dmp 1.5.0

  • Can now be used within Insight 5 apps running on DMP.
  • Function 'dmpinitmanager' can optionally be passed a lifecycle environment string (Insight 5 apps only).
  • New function 'getdmpcompurl' returns the URL of the current component instance.
  • New function 'getdmpauthfunc' returns a function pointer that can be passed to 'dmpiniturl' to authorize requests to DMP lifecycles with solution credentials (Insight 5 apps only).
  • Function 'getdmplifecycleenv' now takes an optional argument, to allow conversion from environment names returned by DMP services (e.g. 'root') into constants used in the DMP module (e.g. DMP_ENV_DESIGN).

executor 1.2.0

  • Can now be used within Insight 5 apps running on DMP.

mosjvm 1.2.4

  • Added support for Java 17.

s3 0.2.0

  • Can now be used within Insight 5 apps running on DMP.
  • Added new s3bucket type attributes 'timestamp', 'ttl' and 'refreshfunc'.

math 1.0.0

  • New type 'int64' to represent 64-bit integer numbers.

Xpress Workbench 3.10

  • DMP
    • When logged into an Insight server, Workbench will compile Mosel using the version of mminsight suitable for that server (Insight v4 or v5).
      • If you switch to an Insight server with a different version (e.g. upgrading from v4 to v5), then you may have to do a Full Publish the first time, in order to rebuild against the correct mminsight.
    • Support for Mosel apps to optionally configure dependencies via Conda, Pip, and Renv
      • The preconfigured R environment in previous versions of Workbench has been removed in favour of users specifying their own choice of R and other libraries via this mechanism.
      • As with Python apps, users can configure via files in their 'model_resources' folder: 'environment.yml' for Conda, 'requirements.txt' for Pip, and now also 'DESCRIPTION' for Renv.
      • Desktop users still have to configure their environment outside of Workbench.
    • Switching for Path-Based Routing (from Host-Based)
      • This means multiple components will now have the same URL domain name, but different paths.
      • This change means that the usual process of upgrading from earlier versions is not supported. Instead, users will need to create a new component and navigate to its Backup Archive page to restore the project backups from the original component.
  • Desktop:
    • updated to Node.js v18.
  • File upload limit raised from 100MB to 300MB to come into line with Xpress Insight.
  • Python apps can now be debugged locally on Workbench, they do not have to be published to Insight first.
    • You do not need to manually include the 'debugpy' library in your Conda/Pip settings.

Fixed in Release 9.2

Back to top

Xpress Optimizer 42.01.01

  • Fixed a problem in the default selection of heuristic diving strategies.
  • Fixed a problem with the checktime callback and XPRSrepairinfeas(). The callback was ignored but now is correctly invoked.
  • Fixed a problem with IIS computation on models that contain non-linear expressions or general constraints.
  • Fixed XPRSnlpgetformula() and XPRSslpgetcoefformula() so that they return the correct array sizes needed to hold the formula when null arrays are provided.
  • Fixed a bug in XPRSgetindex(), which returned 0 when a user function or internal function was not found. The function now returns -1, as documented.
  • Fixed problems when handling more than one user-provided MIP solution which could cause a crash.
  • All fixes from Xpress 9.1.2 (Optimizer 41.01.08).

Xpress Global 42.01.01

  • All fixes from Xpress 9.1.2 (Global 41.01.08).

Xpress Nonlinear 42.01.01

  • All fixes from Xpress 9.1.2 (Nonlinear 41.01.08).

Xpress Solver Interfaces 42.01.01 (Python, R, Matlab, .NET, Java)

  • In Java and C# function XPRSprob.SlpCascadeNLimit() is now correctly called XPRSprob.SlpChgCascadeNLimit()
  • Fixed an out of memory problem in C# and Java for problems that contain very long names or a lot of elements with names.
  • The itervar callback in the Python API was fixed. Previously, any value returned by the callback was converted to 0 or -1. Now the returned value is forwarded to the solver as is.
  • All fixes from Xpress 9.1.2 (Interfaces 41.01.08).

Xpress BCL 42.01.01

Xpress Mosel 6.4.0

mosel

  • Model parameters on the command line stated as P='P2=1,P3=2' are now properly passed to the program.
  • The profiler no longer truncates very long lines in its reports.

Compiler Library

  • The identifier of a namespace can now be used to name a record field.
  • Private record types are no longer implicitly public when they include public fields.

mmodbc 3.12.0

  • SQLdataframe no longer generates invalid column names when SQLbufsize exceeds 31.

dmp 1.5.0

  • Fixed an issue copying a dmpresource that was initialized with a function pointer returning authorization headers.

Xpress Workbench 3.10

  • Intermittent issue where the normal conclusion of a scenario debug would result in the scenario being canceled.

Fixed in Release 9.1.2

Back to top

Xpress Mosel 6.2.2

dmp 1.4.0

  • Due to a compatibility issue, the updated version of the dmp module included with Xpress 9.1.1 has been withdrawn. This fix will now be included in Xpress 9.2.0.

Fixed in Release 9.1.1

Back to top

Xpress Optimizer 41.01.08

  • MIP presolving should no longer create semi-continuous variables with a semi-continuous lower bound less than FEASTOL.
  • Fixed an issue with presolving of MIPs that could result in invalid constraints being created.
  • Fixed an issue when timing out during MIP presolving.
  • Fixed an issue when setting heurthreads!=0 that prevented a local search heuristic from terminating when a problem is solved to completion.
  • Fixed an issue with deleting indicator rows.
  • Fixed an issue for binary quadratic equality constraints.

Xpress Nonlinear 41.01.08

  • Fixed an issue with permuting nonlinear problems.
  • Fixed an issue with copying problems in a presolved state.
  • Fixed an issue where problems with some non-convex binary quadratic and some general non-convex quadratic constraints were incorrectly declared convex.

Xpress Solver Interfaces 41.01.08 (Python, R, Matlab, .NET, Java)

  • Added support for Python 3.11.
  • In Python, fixed a library conflict which could cause an error on Windows: OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

Xpress Mosel 6.2.2

dmp 1.4.1

  • Fixed an issue copying a dmpresource that was initialized with a function pointer returning authorization headers.

python3 2.1.7

  • Added Python 3.11 support.
  • Removed Python 3.7 support.

New in Release 9.1

Back to top

Xpress Kalis 13.3.0

  • Improve filtering strength on tasks' start, duration and end variables whenever they can be assigned to (multiple) alternative resources.

Xpress Mosel 6.2.2

mmsystem 2.12.3
  • Windows: improved efficiency of driver 'text:' when writing very large files.
mmxprs 4.0.2
  • The control parameter XPRS_MAXCUTTIME is now a real.
  • The callback PREINTSOL now takes an integer as its first parameter.
Xpress Workbench 3.9
  • Updated to Node v16.
  • View Designer
    • Added support for the Datagrid, Datagrid Column and Pivot Table components.
  • DMP: Added support for building, publishing and remotely debugging Insight apps written in Python.
    • Supports Insight v5 only.
    • Requires a Conda configuration file environment.yml to be present in model_resources folder. (A default file is provided on app upload if needed.)

Fixed in Release 9.1

Xpress Optimizer 41.01.07
  • Fixed a conversion error in the memory manager causing allocations over 4GB to be wrongly accounted
  • Fixed a numerical issue with indicator constraints in sub-MIPs
  • Fixed a problem where XPRSgetlicerrmsg would return an empty string if the license file did not contain a token authorizing the Optimizer
Xpress Solver Interfaces 41.01.07 (Python, R, Matlab, .NET, Java)
  • In Python, nonlinear problems no longer have an additional variable added to the problem (the "equals" column).
  • Fixed a problem in the Python interface which could cause xpress.Sum to return incorrect results and could cause numpy.prod to crash when applied to Xpress expressions.
  • In Python, problem.getiisdata now returns SOS entities as integers instead of incorrectly mapping them to constraint objects.
Xpress Kalis 13.3.0
  • Fixed a bug related to optional tasks.
  • get_start_based_duration now returns the value.

Xpress Mosel 6.2.2

Compiler Library
  • In subroutine parameters: the compiler now accepts empty sets where a set of external types is expected.
Native Interface
  • 'tostring' applied to a NULL union now returns '?' instead of '(nil)'.
mmetc 2.6.1
  • 'diskdata': option 'dataframe;skiph;csv(#2+)' no longer causes a program failure.
mmoci 1.12.2
  • Sending an undefined union now always results in an empty cell in the database.
mmodbc 3.10.3
  • Sending an undefined union now always results in an empty cell in the database.

Known issues in Release 9.1

Xpress Workbench 3.9
  • Communication between Workbench and Insight may fail if sent via intermediaries (e.g. web proxies) that produce HTTP headers that are not strictly correct.
    • For security reasons, the new version of Node used by Xpress Workbench imposes stricter checking on HTTP messages than before.
    • In particular: servers that produce HTTP headers with plain LF ("\n") separators rather than the officially correct CRLF ("\r\n") will be rejected. Neither Xpress Insight nor Mosel's mmhttp module have this problem, but some user infrastructure might. In this case, users should update or reconfigure their system in order produce well-formed HTTP headers.

New in Release 9.0.2

Back to top

Xpress Mosel 6.2.1

Language
  • The efficiency of 'delcell' has been improved
mmetc 2.6.0
  • New diskdata option 'typedcsv'
mmhttp 3.8.0
  • New version of 'jsonread' with 3 parameters that can load a json document into a 1-dimensional array indexed by strings
  • New option 'HTTP_INDENT' for 'jsonwrite' to produce a formatted .json file.
  • New control parameter 'http_jtab' to define the tabulation used by jsonwrite+HTTP_INDENT.
mmsheet 1.12.1
  • Upgrade to libxl 4.0.3 with support ofr aarch64 platform.
mmxprs 4.0.1
  • Support for NODELPSOLVED callback.
Xpress Workbench 3.8
  • View Designer
    • Added Tableau Parameter component, this enables you to add one or more Tableau Parmeters to a Tableau component.
    • Added Tableau Export and Tableau Clear Global Filters actions, these enable you to trigger the respective actions against a specified Tableau visualization.
    • Added the VDL version information, version since, to each VDL component and attribute as tooltips. A component will be shown as in error if it is used within a VDL file that is older than the component version. The attributes panel will also show an error if any attributes are shown that are newer than the VDL file.
  • This release introduces a beta of remote debugging for Python-based Insight apps.
    • Debugging Python files or Insight apps locally in Workbench is disabled, and will be added in a future release.
    • Requires Xpress Insight 5.5+, and Python modules xpressinsight 1.5.0+, debugpy 1.6.5+
    • Debugger pane supports Watch expressions, navigation through call stack, Variable inspection and breakpoints.
    • Hovering over a Python entity shows a preview of data and provides a link to inspect data in a separate static text view.
    • Conditional breakpoints are supported.
    • An input field above the Output pane allows users to enter arbitrary expressions which are evaluated and printed to Output pane.
    • Known limitations:
      • The debugging inspection tools do not currently support full traversal of object hierarchies.
        • Objects like pandas DataFrames have a default textual representation showing the data in a tabular format.
      • Data can be viewed as static text, in contrast to Mosel's live Inspect In Table option.
      • As with Mosel, does not support editing of the source during debugging.
    • Known issues:
      • Only single-thread debugging is currently supported.
        • e.g., debugging the sklearn module's multithreaded cross_validate method may lead to the debug process freezing
      • If the user, incorrectly, debugs a scenario in an execution mode that requires the scenario to have input data to loaded (e.g. RUN), and the input data is not loaded, the error message informing them of the need for the scenario to be loaded may not appear.
      • If a breakpoint is set exactly as the debug is starting, it may not appear in the UI even though it is in effect. (Causing a redraw in any way will show the breakpoint.)
      • Very rarely, the variables view of the current stack frame may, on loading, not clear out its previous contents first.

Fixed in Release 9.0.2

Xpress Optimizer 41.01.03
  • Fixed an issue where the built-in tuner aborted too early when using the new TIMELIMIT control.
  • Fixed an issue where the OBJNAME attribute was no longer being populated.
  • Fixed several memory issues that could cause crashes.
Xpress Nonlinear 41.01.03
  • Improved handling of 0/0 in automatic differentation.
  • Fixed a crash when writing a problem with a nonlinear objective to an LP or MPS file.

Xpress Mosel 6.2.1

Compiler Library
  • Cloning an array type no longer causes a compilation error.
Runtime Library
  • A potential memory corruption has been fixed in the initialisation of arrays of sets/lists of records ('initialisations from').
  • An issue has been fixed in the conversion of an empty list to a set.
  • A potential memory corruption has been fixed in 'initialisations' blocks when handling very large nested record structures.
mmetc 2.6.0
  • 'diskdata' now sets properly the type of a union when reading a Boolean.
mmhttp 3.8.0
  • A potential memory corruption has been fixed in 'httpreply'.
  • 'jsonwrite' now ouputs properly special characters (such as '\n').
mmxml 2.4.2
  • 'jsonsave' now ouputs properly special characters (such as '\n').
Xpress Workbench 3.8
  • Fixed occasional issue where, on completing debug of scenario LOAD, scenario would not have input data.

Fixed in Release 9.0.1

Back to top
Xpress Optimizer 41.01.02
  • Fixed a crash resulting from all the quadratic variables being linearized, leading to an unexpected condition.
  • Fixed an issue with root parallel heuristics that could result in an endless loop of restarting root cutting and heuristics.
  • Fixed a crash in an advanced MIP reduction in presolve when the matrix grew
Xpress Nonlinear 41.01.02
  • Fixed an incorrect logging message for initial points given to Knitro.

New in Release 9.0

Back to top

Xpress Optimizer 41.01.01

  • MIP Performance improvements:
    • Dynamic adjustment of the reliability threshold for pseudo cost updates. By default, strong branching is performed only on infeasible MIP entities whose pseudo costs is considered unreliable. The threshold used to determine if a pseudo cost is reliable is now dynamically adjusted during the solve, to favor a better control of the computational effort spent in strong branching.
    • Improved branching strategies on MIP models with highly degenerate objective function.
    • Separation of Strong Chvatal-Gomory cuts. The separation of Strong Chvatal-Gomory cutting planes has been introduced. The separation of these cuts can be disabled through the controls CUTSELECT and TREECUTSELECT.
    • Separation of Farkas cuts. The separation of cutting planes from Farkas infeasibility proofs has been introduced. The separation of these cuts can be disabled through the controls CUTSELECT and TREECUTSELECT.
    • A new heuristic was introduced to run at the root node parallel to the cut loop. Solutions found by this heuristic are marked by the letter 'P' in the log. This heuristic is called "feasibility jump" and can be controlled with the FEASIBILITYJUMP control (0=off, 1=on (default)).
    • The new configuration presolver attempts to reformulate binary rows with very few coefficients. The presolver drops each applicable original row in favor of a tighter formulation with new binary variables and rows modeling the choice between extremal feasible configurations of the original variables. This presolver is enabled by default. It can be disabled setting the new control PRECONFIGURATION=0.
  • Added support for multi-objective optimization:
    • It is now possible to specify multiple objectives for any problem type supported by the Optimizer, such as linear, quadratic, general nonlinear optimization, and their respective mixed-integer versions.
    • Objectives can be blended using linear weights, solved in lexicographical order by specifying priorities, or any combination of the two.
    • For each objective, a user can specify various parameters when fixing the objective for lexicographical optimization: a lexicographical priority, blending weights, and an absolute and relative tolerance.
    • All solver attributes can be queried for each objective solved.
    • For further detail, refer to section 5.12 Multi-Objective Optimization of the FICO Xpress Optimizer Reference Manual.
  • User-provided MIP solutions are now accepted immediately after presolve. The usersolnotify callback will be invoked with the NODEDEPTH attribute set to 0 (previously it was 1), and the CURRENTNODE attribute set to 1.
  • Extended the effect of NUMERICALEMPHASIS to some bound tightening reductions. This can help to avoid wrong answers in case of numerically challenging problems.
  • A new control CHECKINPUTDATA makes Xpress check input data for invalid values when supplied through the API. This checks for example for NANs in floating point arrays. It also checks for INF values in arrays where those values make no sense. The default value for the control is 1 (on). Set to 0 to disable the checks.
  • A new callback has been introduced for MIPs, set by XPRSaddcbnodelpsolved. It is fired after the LP relaxation of a branch-and-bound node is solved for the first time, including the initial root LP relaxation.
  • Modifying a node problem during a MIP solution in any other callback than prenode, nodelpsolved, cutmgr or optnode will result in an error.
  • The MAXCUTTIME, MAXSTALLTIME and TUNERMAXTIME controls now have type double (was integer). They can still be accessed with routines that access integer controls. Values will be rounded/truncated appropriately in this case.
  • The TIME and MIPSOLTIME attributes now have type double (was integer). They can still be queried with routines that access integer attributes. Values will be rounded/truncated appropriately in this case.
  • New double controls TIMELIMIT and SOLTIMELIMIT. TIMELIMIT is an absolute limit on execution time (akin to negative values of MAXTIME), whereas SOLTIMELIMIT is a soft limit that only applies when a MIP solution has been found (akin to positive values of MAXTIME).
  • New double control REPAIRINFEASTIMELIMIT. Imposes a time limit for the repairinfeas procedure and will replace REPAIRINFEASMAXTIME.
  • MAXTIME and REPAIRINFEASMAXTIME are deprecated.
  • Removed deprecated controls: CSTYLE, EXTRAPRESOLVE, EXTRAQCELEMENTS, EXTRAQCROWS, GLOBALFILEBIAS, HEURSTRATEGY, LINELENGTH, LPTHREADS, PERTURB, TUNERROOTALG.
  • Renamed controls and attributes:
    • GLOBALFILE[SIZE,USAGE,LOGINTERVAL] is now TREEFILE[SIZE,USAGE,LOGINTERVAL].
    • MAXGLOBALFILESIZE is now MAXTREEFILESIZE.
  • Renamed API functions:
    • XPRSfixglobals() is now XPRSfixmipentities().
    • XPRSgetglobal() is now XPRSgetmipentities().
    • XPRSloadqcqpglobal() is now XPRSloadmiqcqp().
    • XPRSloadqglobal() is now XPRSloadmiqp().
    • XPRSloadglobal() is now XPRSloadmip().
    • XPRS[add,remove]cbgloballog() is now XPRS[add,remove]cbmiplog().
  • Removed deprecated API functions: XPRSglobal() and XPRSinitglobal()
  • XPRSgetsol() has been deprecated.
Xpress Nonlinear 41.01.01
  • Updated to Knitro 13.1. Knitro is no longer available for rhel6.
  • XSLPitemname() now returns "EOF" for XSLP_EOF rather than not modifying the passed string buffer.
  • XSLPitemname() now returns an error when called with XSLP_DEL and an invalid delimiter id.
  • XSLPitemname() now returns an error when called with XSLP_OP and an invalid operator id.
  • XSLPitemname() now returns an error when called with XSLP_FUN and an invalid user function id.
  • XSLPitemname() now returns an error when called with XSLP_IFUN and an invalid internal function id.
  • XSLP_POSTSOLVE now defaults to -1: Perform postsolve automatically unless a work limit was hit.
  • Removed XSLPglobal, which is superseded by XSLPnlpoptimize with the -g flag.
  • The constants for namespaces changed. The values are now:
    • XPRS_NAMES_USERFUNC = 6
    • XPRS_NAMES_INTERNALFUNC = 7
    • XPRS_NAMES_USERFUNCNOCASE = 8
    • XPRS_NAMES_INTERNALFUNCNOCASE = 9. Previously, the number started at 5.
  • XPRSnlpcopycontrols() now also copies Knitro and convergence controls.
  • The new attribute XPRS_NLPOPTTIME allows for querying the total time spent in a nonlinear solve.
Xpress Global 41.01.01
  • A beta version of a new global solver functionality is available as part of this release.
  • Please see the new "FICO Xpress Optimizer: Global Solver User Guide" for more details.
Xpress Solver Interfaces 41.01.01 (Python, R, Matlab, .NET, Java)
  • Several convenience functions were added to the XPRSprob classes in Java and .NET. These functions make it easier to inspect the model, query solutions, change the model, etc. The newly added function are (some have a number of overloads):
    • addCol() adds a single column
    • contVar() creates a single continuous variable
    • intVar() creates a single integer variable
    • binVar() creates a single binary variable
    • varArray(), contVarArray(), intVarArray(), binVarArray() create an array of variables
    • varMap(), contVarMap(), intVarMap(), binVarMap() create a map of variables (indexed by values from a collection)
    • addRow() adds a single row
    • addCut() adds a single cut
    • setObjective() changes the objective function for all variables
    • clearObjective() clears the objective function
    • chgLB(), chgUB(), chgBounds() change the bounds of a single variable
    • getRowName(), getColumnName(), getSetName(), getPWLName(), getGenConsName() retrieve the name of individual constraints, there are also overloads that retrieve the names of multiple constraints in a range and return them as an array.

    You can look at the TSP.java and TSP.cs examples to see some of these in action.

  • A new example TSP.cs was added. This example illustrates model building, various callbacks, as well as injection of (partial) feasible solutions.
  • Some functions that have been deprecated for a long time have been marked as such in the Java and C# APIs. They will now generate a compiler warning when used (and the warning is enabled).
  • Fixed a problem in which exceptions in Java callbacks may have been swallowed. Exceptions from callbacks are now always forwarded to the user. If the exception raised in a callback is an instance of XPRSexception or XPRSprobException (or any of their sub-classes) then the exception is forwarded as is. Otherwise it is wrapped into an XPRSexception and the caller will have to extract the actual exception via getCause().
  • Documentation for enumerations and enumeration values in .NET was improved.
  • The event API for callbacks was removed from .NET. Callbacks can no longer be registered with events but must be registered using functions like AddMessageListener(). The explicit functions to add/remove callbacks are more flexible since they also allow specifying the priority of callbacks.
  • The XSLP specific event mechanism for callbacks was marked deprecated. Use functions like AddSlpNodeCallback() to add callbacks.
  • The AMPL-Xpress driver has been updated to version 20220112.
  • Renamed API functions (Java/.NET):
    • fixGlobals() is now fixMIPEntities().
    • getGlobal() is now getMIPEntities().
    • getGlobalEntities() is now getDiscreteCols().
    • getGlobalSets() is now getSets().
    • loadQCQPGlobal() is now loadMIQCQP().
    • loadQGlobal() is now loadMIQP().
    • loadGlobal() is now loadMIP().
    • addGlobalLogListener() is now addMIPLogListener().
    • removeGlobalLogListener() is now removeMIPLogListener().
    • XPRSglobalogListener.XPRSgloballogEvent() is now XPRSMIPLogListener.XPRSmipLogEvent.
  • Renamed Classes (Java/.NET):
    • XPRSgloballogListener is now XPRSMIPLogListener.
  • Removed deprecated Java/.NET API functions global() and initGlobal().
  • Removed deprecated getHeurStrategy and heurStrategy() function from Java, BCL and other interfaces. Please use getHeurEmphasis and heurEmphasis(), respectively.
  • Renamed Python API functions:
    • fixglobals() is now fixmipentities().
    • getglobal() is now getmipentities().
    • [add,remove]cbgloballog() is now [add,remove]cbmiplog().
  • Removed deprecated Java API functions global() and initGlobal().
  • API functions in R have been renamed according to the function name changes in the C API.
  • In XSLPnet, symbolic constants MMX_MIN and MMX_MAX are deprecated. Use MATH_MIN and MATH_MAX instead. Similarly, constant LOG is now deprecated and you should use NLPLOG instead.
Xpress BCL 41.01.01
  • The BCL version number is now the same as the Optimizer version and thus follows the same naming scheme. This also means that the names for which symbolic links to the xprb library are created now follow the Optimizer's versioning scheme. The xprb library itself is deprecated: all C-level BCL functions are included in the xprs library, so that library should be used instead. The xprb library will be removed in a future release.
  • In C#, the functionality provided by BCL.XPRBprob.AddDelVarCallback(), BCL.XPRBprob.DelVarCallbacks, BCL.XPRBprob.RemoveDelVarCallback(), and BCL.XPRBDelVarCallback was marked deprecated and will be removed in a future release. There is no replacement for this since that callback was only invoked when a BCL problem was deleted, i.e., when all variables are deleted anyway.
  • In C, the functionality provided by XPRBdefcbdelvar() was marked deprecated and will be removed in a future release. There is no replacement for this since that callback was only invoked when a BCL problem was deleted, i.e., when all variables are deleted anyway.
  • The behavior of XPRBsetrange() was changed for infinite bounds:
    • if low <= -infinity and up >= infinity an N constraint is constructed
    • if low <= -infinity and up < infinity an L constraint is constructed
    • if low > -infinity and up >= infinity a G constraint is constructed
Xpress Kalis 13.2.3
  • Support for Xpress 9.0
  • Parameter KALIS_RELAX_GLOBAL has been renamed to KALIS_RELAX_MIP (retro-compatibility is ensured).

Xpress Mosel 6.2

Language

  • The effect of procedure 'setname' now applies independently of compiler options.
  • New version of 'setname' for arrays.
  • New one-line syntax for 'if' statement: if condition: statement
  • Arrays indexed by constant texts can now be directly indexed by strings (e.g. A('a') can be used in addition to A(text('a')) ).
  • The clone operator can now be applied to array/list/set types supporting assignment.

Mosel

  • New compiler option '-wu' to report public unused symbols (in addition to private unused symbols).
  • Profiler: more than 127 source files can now be handled during a profiling run.

Compiler

  • The compiler now reports private unused symbols as warnings.
  • Documentation generation now supports unions and subroutine references.
  • Type description in error messages has been improved.

Runtime Library

  • The logic of automatic unloading of modules has been revised in order to avoid situations where a module is unloaded and then reloaded immediately.
  • Windows support for long path names.

Native Interface

  • New function 'gettypeid' to retrieve the type ID of a set/list/array/union.
  • New function 'hmenum' to enumerate elements of a hashmap.
  • New function 'setentname' to associate a name with an entity.
  • New type property XPRM_DTYP_NAMED to declare a native type supporting name association (and dedicated behaviour of the 'create' function).

deploy 3.0.0

  • The module can now access the arguments of the 'mosel' command following the marker '--' (e.g. mosel mymodel -- arg1 arg2)
  • New procedure 'shiftargv'.
  • New I/O driver 'skiphead'.

mmhttp 3.6.1

  • HTTP server: response headers now use CRLF as line termination.
  • Windows support for long path names.

mmjobs 2.22.3

  • getstatus(Mosel) now returns -3 if the instance reported an error while disconnecting.
  • Windows support for long path names.

mmnl 2.6.0

  • API update for Mosel 6.2.

mmreflect 1.2.0

  • New subroutines 'getallfields', 'getfieldname', 'getfieldtype', 'findfield', 'getfieldval', 'setfieldval' for accessing record fields.

mmsheet 1.12.0

  • New options for I/O drivers xls/xlsx: 'skiperrcell;inf=;minf=;nan='

mmsystem 2.12.2

  • Improved handling of UTF8 characters in regular expressions ('.' can now match a non-ascii symbol).
  • Windows support for long path names.

mmxprs 4.0.0

  • New function 'getmatstat'.
  • New control parameter 'xprs_usechecktime' (to use the callback checktime to interrupt a solving procedure).
  • Support for optimisation with multiple objectives:
    • new versions of: minimise/minimize, maximise/maximize, loadprob
    • new routines: 'getobjintattr', 'getobjrealattr'
    • new type: 'objconfig'
    • new routines for accessing 'objconfig': get|setpriority, get|setweight, get|getabstol, get|setreltol

dmp 1.4.0

  • New overload of dmpiniturl procedure will take a function pointer that returns authorization headers.

python3 2.1.5

  • Added Python 3.10 support.

Xpress Workbench 3.7

  • View Designer
    • Upgraded to VDL version 5.0 for all new VDL files created from a template or the quick start app.
    • Support for VDL 4.8 files remains for existing VDL views.
    • Added Tableau component, which enables you to configure one or more Tableau visualizations within your view.
    • VDL actions for data manipulation is available from the Palette.
  • Tableau Workbooks
    • Tableau Workbooks: once published to an Insight 5 server, Tableau Workbooks are no longer synched between Workbench, Insight, and Tableau. A Full Publish to an existing Insight 5 app will now remove any Workbooks that are no longer present in Workbench.
  • Insight Companion Files
    • Insight Companion files created from File menu or via the Views control on the Insight pane will now be written for Insight 5 apps. There are comments in the newly-created Companion file, advising users of earlier versions of Insight of the changes they will need to make in order to downgrade.
  • When launching a Mosel process, PATH and related environment variables have the relevant location for the Xpress installation applied to the start, so they take precedence over any others that may be in the environment variable already. (Previously, the Xpress installation folders would not be added to the start of the path if they were present already.)
  • Updated several 3rd-party dependencies.

Fixed in Release 9.0

Xpress Optimizer 41.01.01

  • Fixed a problem in which the multi-threaded RINS heuristic at the root node may have used more threads than intended.
  • All fixes from Xpress 8.14.3 (Optimizer 40.01.03).

Xpress Nonlinear 41.01.01

  • All fixes from Xpress 8.14.3 (Nonlinear 40.01.03).

Xpress Solver Interfaces 41.01.01 (Python, MathLab, .NET, and Java)

  • All fixes from Xpress 8.14.3 (Interfaces 40.01.03).

Xpress BCL 41.01.01

  • All fixes from Xpress 8.14.3 (BCL 40.01.03).

Xpress Kalis 13.2.3

  • Solution query when using the two phases scheduling procedure no longer crashes.

Xpress Mosel 6.2

Compiler Library

  • An issue has been fixed in the handling of array dereferencing using sets of constants.
  • Importation of packages defining subroutine references on local subroutines no longer produces invalid code.

Runtime Library

  • An issue has been fixed in the handling of locally defined decision variables.
  • A potential failure when exiting the program has been fixed.

Remote Invocation

  • A potential memory corruption has been fixed in the conversion of very large real numbers to their textual representation.

Xpress Workbench 3.7

  • (Desktop, macOS) The long path name issue referred to in the 3.6.2 section of these notes has been ameliorated; it now only affects *extremely* long paths that will not fit on the command-lines of some executables.
  • Fixed: (Desktop) Issue when opening multiple projects at once would fail due to network ports not being available.

New in Release 8.14.2

Back to top

Xpress Solver 8.14.2 (40.01.03)

Xpress Optimizer

  • Fixed an issue in presolve that could introduce small constraint violations.
  • Fixed an issue in presolve for mixed-integer quadratic problems.
  • Fixed an issue where some messages from the nonlinear solver were not sent to the optimizer message callback.
  • Fixed an issue in the console optimizer where upper case commands incorrectly processed escape characters in their arguments.

Xpress Nonlinear

  • Fixed an issue where terms could incorrectly be dropped when nonlinear presolve was disabled.
  • XSLPcopyprob no longer copies controls or callbacks, as documented.

    To copy controls and callbacks, use XSLPcopycontrols and XSLPcopycallbacks, respectively, after copying the problem.

    Note that XSLPcopycontrols will not copy convergence criteria or Knitro controls. These should be set manually.

Xpress Interfaces (Python, R, Matlab, .NET, Java)

  • [Python] The Nonlinear callback function 'preupdatelinearization' is now available through Python.
  • [Python] Nonlinear user functions can now return derivatives on demand. The optional argument 'derivatives' to xpress.user() can now take one of the values: "never", "always" or "ondemand".
  • [Python] Fixed an issue where problems created using problem.copy() could crash when solved, due to callbacks being copied incorrectly.
  • [Python] Performance improvements which reduce the time taken to create large numbers of variables.

New in Release 8.14.1

Back to top

Xpress Solver 8.14.1 (40.01.02)

Xpress Optimizer
  • Fixed an issue where the Optimizer could crash when tuning a continuous problem with historical tuner data.
  • In case a callback returns a non-zero error code, the remaining callbacks of the same type with smaller priority will no longer be called. This only affects use cases where multiple callbacks of the same type are registered.
  • Fixed an issue with piecewise-linear constraints when presolve was off and the first/last breakpoint was inside the bound interval of the input variable which could lead to incorrect results.
  • Fixed an issue with convex/concave piecewise-linear functions in combination with other pieciewise-linear functions with fixed outcome that could lead to incorrect results.
  • Fixed an issue in presolve for mixed-integer quadratic problems.
Xpress Nonlinear
  • Fixed an issue where empty rows and columns were dropped and not correctly postsolved when presolve was off in case XSLP_PRESOLVELEVEL was full.
  • Fixed an issue where solutions were incorrectly deemed infeasible when XSLP_PRESOLVELEVEL was below full.
  • Fixed an issue where having 35 or more distinct user functions could lead to an error about piecewise-linear functions.
  • Fixed an issue where some information from the previous solve was lost when calling XSLPmaxim with the c/continue flag.
  • Fixed an issue where solutions might have incorrectly been rejected due to an incorrect objective computed from an objective transfer row.
  • The return values of the drcol, itervar and construct callbacks are no longer incorrectly interpreted as error codes.
  • Fixed an issue where the KEEPBEST bit of XSLP_FILTER was not correctly obeyed.
  • Fixed an issue with computing derivatives for Knitro.
  • Fixed an issue in postsolve that could lead to failures.
Xpress Interfaces (Python, R, Matlab, .NET, Java)
  • [Python] Fix a deadlock when repairing infeasibilities.
Xpress BCL
  • The behavior of XPRBsetrange() was changed for infinite bounds:
    • if low<=-infinity and up>=infinity an N constraint is constructed
    • if low<=-infinity and up<infinity an L constraint is constructed
    • if low>-infinity and up>=infinity a G constraint is constructed

New in Release 8.14

Back to top
Xpress Optimizer 40.01.01
  • MIP Performance improvements:
    • Improved separation of Mixed Integer Rounding (MIR) cuts in the tree. The new default value of control TREECUTSELECT is -1, which turns on row aggregation for separating MIR cuts also in the tree.
    • Improved selection of cutting planes based on orthogonality measures.
    • Some subMIP heuristics at the root node now solve the subMIPs using multiple threads (if control settings allow multiple threads).
    • More advanced MIP presolve operations.
  • Improved reformulations of MIN/MAX general constraints with two elements.
  • It is now possible to tune with starting solutions when tuning MIPs.
  • Improved crash heuristic for dual simplex, with more options in the CRASH control.
  • Improved parallel performance of the crossover algorithm.
  • Improved sparse matrix-vector multiplication selection method in dual crossover.
  • Primal simplex used much less in concurrent solve of the initial LP relaxation.
  • The confined primal integral can now be set as a tuner target (TUNERTARGET=10). This comes with two new attributes and one new control:
    • attribute OBSERVEDPRIMALINTEGRAL gives the primal integral w.r.t. the incumbent solution of the current run
    • attribute CPISCALEFACTOR represents the scaling factor used for the computation of the primal integral
    • control CPIALPHA allows setting the exponential decay for the confined primal integral (default: 1, no decay)
  • New attribute RESTARTS that returns the number of restarts performed. As opposed to TREERESTARTS, this attribute not only counts the number of times the B&B tree is reset to the root node, but also includes the number of times presolve is repeated at the root node.
  • The CORESDETECTED attribute now also reflects container-imposed limits if Xpress runs in a container. It depends on the value of IGNORECONTAINERCPULIMIT.
  • On Unix operating systems, the DT_SONAME field of the shared library changed from libxprs.so.xx.yy to libxprs.so.xx, i.e., only the major version number is now in the internal library name. Changes in the ABI that are not backward compatible are indicated by a change in this major version number.
  • There is a new symbolic link libxprs.so.xx for the shared library.
  • On Windows the memory allocation strategy was changed to reduce the overhead in heavily multi-threaded solves. Larger memory blocks are now allocated on a separate heap. By default, blocks larger than 16 KB are allocated on that separate heap. The minimal size of these blocks can be controlled by setting the environment variable XPRESS_HEAP_THRESHOLD, which specifies the size of those blocks in bytes. The separate allocation can be disabled by setting this variable to 0x7fffffffffffffff. Details about why this strategy improves performance can be found in this discussion: https://developercommunity.visualstudio.com/t/mallocfree-dramatic-performance-slowdown/552439.
  • On Windows it is now possible to use a separate heap per problem. This is controlled by environment variable XPRESS_PROBLEM_HEAP. The value of that variable is interpreted as a bit field as follows:
    • bit 0-1: Type of heap1. We only create a heap1 if this is non-zero or we create a heap2. If this value is >1 we create a low-fragmentation heap, otherwise a default heap.
    • bit 2-3: Type of heap2. If this is non-zero then we create two heaps. If bit0-1 are zero in this case then heap1 will be a heap with default settings. If this value is >1 we create a low-fragmentation heap, otherwise a default heap.

    If we create two heaps then blocks larger than threshold are allocated from heap2, other blocks are allocated from heap1. If we only create one heap then all blocks are allocated from that heap. The default is to use the global heap for all problems.

  • The namelist API (XPRSnamelist) was deprecated and will be removed in a future release.
Back to top

Xpress Solver Interfaces 40.01.01 (Python, R, Matlab, .NET, Java)

  • [Python] Support for Python 3.10.
  • [Python] Importing the module no longer consumes a license.
  • [Python] xpress.init() now accepts a path to the license file.
  • [Python] Support for the "with" statement when initializing the module and creating problems.
  • [Python] Fixed an issue where Xpress objects could only be combined with Pandas series using arithmetic operators (+, -, *, /, etc.) when the Pandas series was on the left-hand side of the expression.
  • [Python] xpress.And(), xpress.Or(), xpress.min() and xpress.max() now accept lists/NumPy arrays/Pandas series.
  • [Python] The xpress.dot() function now supports NumPy arrays of float16, int8, int16. The function should also run slightly faster than before now.
  • [Python] Added problem.setOutputEnabled() so that writing messages to the default Python output stream can be controlled per problem.
  • [Python] Fixed an issue that occasionally caused Python to crash on exit.
  • [Python] Fixed an error that occurred when problem.getcols() was called from a MIP node callback while the problem contained cuts.
  • [Python] Xpress packages now declare the correct dependency on NumPy.
  • [Python] Fixed a problem preventing the Xpress Compute Interface from working on macOS.
  • [Python] On Unix systems the Xpress Python API no longer depends on libxprs.so.xx.yy but only on libxprs.so.xx. So the name of the library included in the Python API is now libxprs.so.xx.
  • [Python] Attributes and controls can now be specified by id for functions setControl(), getControl(), getAttrib().
  • [R] Three new examples showcasing basis handling, IIS detection, and tuning from the Xpress R interface.
  • [Matlab] Matlab warning and error messages are now more verbose and have a slightly different format. The message now contains a more specific error code and error message.
  • [Java] The Java class XPRS now implements the AutoCloseable interface. With that the lifetime of licenses can be controlled using try-with-resources:
    try (XPRS license = new XPRS()) {
        ...
      }
    This will correctly release the license if the block is exited, even if the block is exited via an exception.
  • [.NET] The .NET class XPRS can now implements the IDisposable interface and can be instantiated. With this, the lifetime of a license can be controlled explicitly:
    using (XPRS xprs = new XPRS()) {
        ... // use Xpress here
      } // license is released here (even in case of exception)
  • [.NET] The .NET class XPRSprob now has an additional constructor XPRSprob(string path) that implicitly calls XPRS.Init(path) and arranges for a call to XPRS.Free() in Dispose() or Destroy(). With this, it is easy to write programs that use only one single problem and handle native resources properly:
    using (XPRSprob prob = new XPRSprob(...)) {
        ... // use the Xpress optimizer here
      } // native resources automatically released here
  • [.NET] The option to add callbacks as event listeners was deprecated and will be removed in a future release.
  • [Java/.NET] The namelist API (XPRSnamelist) was deprecated in Java and .NET and will be removed in a future release.
Back to top

Xpress BCL 4.14.0

  • The .NET class XPRB now implements IDisposable and can be instantiated. Lifetime of BCL native resources can now be controlled via:
    using (XPRB bcl = new XPRB()) {
        ... // use BCL here
      } // native resources automatically released here
  • The Java classes XPRB and XPRBprob now implement the AutoCloseable interface so that their lifetime can be handled using try-with-resources. As a consequence, the finalize() method in both classes was deprecated in favor of the newly introduced close() method. The recommended way of using these two classes is now:
     try (XPRB bcl = new XPRB();
        XPRBprob prob = bcl.newProb("Problem Name")) {
        ...
      }
    This will correctly release any native resources once they are no longer needed. In case you also need to allocate an Xpress Optimizer license, the recommended way of doing that is:
    try (XPRB bcl = new XPRB();
        XPRBprob prob = bcl.newProb("Problem Name");
          XPRS license = new XPRS()) {
         ...
      }
  • The Java class XPRBprob now has a new constructor XPRBprob(String). This constructor implicitly creates a new XPRB instance and arranges for releasing that instance in the newly created problem's close function. With this, the usual way:
    try (XPRB bcl = new XPRB();
        XPRBprob prob = bcl.newProb("Problem Name")) {
         ...
      }
    can be abbreviated to:
    try (XPRBprob prob = new XPRBprob("Problem Name")) {
         ...
      }
    in case only a single problem instance is needed.
  • XPRB.getTime() is now deprecated. Use System.currentTimeMillis() to get the current system time in milliseconds.
  • The following Java classes in com.dashoptimization now implement the AutoCloseable interface as well:
    • XPRBexpr
    • XPRBbasis

      and by means of inheritance the following implement that interface now as well

    • XPRBlinRel
    • XPRBrelation
  • Fixed some assignment operators that did not return a reference to the object.
  • Performance of C++ operators was improved. This introduces a new class XPRBqterm that represents a quadratic term. Additionally, the operator that multiplies two XPRBvar instances now returns an XPRBqterm rather than an XPRBexpr instance. This is a breaking API and ABI change! If your code relies on the old return type then you can define the preprocessor XPRB_LEGACY_OPERATORS to get that back.
  • C++ classes XPRBvar, XPRBterm, XPRBqterm, XPRBexpr now have a toString() method that returns a std::string representation of the instance. This requires inclusion of the header file from xprb_cpp.h. This feature can be disabled by defining XPRB_NO_TOSTRING.
  • Some missing operator overloads were added to the C++ interface, most notably division of expressions, terms, variables by a constant.
Back to top

Xpress Kalis 13.2.0

'TaskSerializer' is now able to guide branching with assignment variables:
  • When solving a scheduling problem, it can be useful to guide the search using a branching heuristic tailored with problem data. If the problem has alternative resources (i.e. a task can be performed by any resource from of a set of resources), it is now possible to guide the search by selecting to which resource the task is going to be assigned.
  • See 'KTaskSerializer' object in C++/Python/Java APIs and 'task_serialize' function in the Kalis Mosel module.

Xpress Mosel 6.0

Language
  • Untyped lists: a list can now contain entities of different types (it is implicitly declared as list of any) and the compiler may perform the required conversion depending on the required types for an operation.
  • A subroutine can be defined as taking variable number of arguments (exposed as a list of any).
  • It is no longer required to name a subroutine argument (but an anonymous argument cannot be accessed by the body of the routine).
  • Arrays of arrays can now be accessed using the syntax aname(ndx1)(ndx2) (the syntax aname(ndx1,ndx2) remains valid).
  • The operator 'is' can be used to identify both type and structure of entities stored in unions (e.g. un is set of integer).
  • Local symbols of a 'with' block are no longer restricted to scalars.
  • 'with' block: new syntax P(X,Y,Z)=A to associate an array 'A' to a local symbol 'P' with its indexing sets (X,Y,Z).
  • Sets, lists and arrays held in a union can now be accessed using the syntax 'un.struct' or 'un.struct.type' (e.g. un.range or un.set.real).
  • Arrays and lists held in a union 'un' can be dereferenced using the syntax 'un.array(indices).type' or'un.list(index).type'.
  • 'delcell' and 'exists' support the notation 'un.array(indices).type' (but loop optimisation does not apply when using 'exists' with this form).
  • New function 'getnbdim' to get the number of dimensions of an array.
  • It is now possible to declare an array type or an array member of a record without naming its indexing sets (e.g. array(range) of integer).
  • Each instance of such a type will use a private set for indexation that will be released/reset at the same time as the array itself.
  • Array types can now use anonymous index sets. New syntax A.index(i) to refer to the ith index set of an array 'A'.
  • New syntax A.index(i).t to refer to the ith index set of an array 'A' as a set of 't' ('t' can be 'range' to identify a range set).
  • New procedure 'dumpcallstack' to display the current call stack.
  • 'dumpcallstack' is automatically called when an assertion fails.
  • When an assertion message starts with '.' or ':' it will be prefixed by the file location if the assertion fails.
  • A variable can now refer to a subroutine, e.g. myfct:function(integer,real):boolean.
  • A type can now refer to a subroutine, e.g. typroc=procedure(string).
  • A function can now return a routine reference.
  • The operator 'is' used with 'procedure' or 'function' identifies a union containing a routine.
  • The operator 'is' used with 'record' identifies a union containing an instance of a record type.
  • New function 'isdefined'.
  • New unary operator '->' (in words: 'reference to'), e.g. ->myvariable:
    • applied to a subroutine it returns a reference to the routine (instead of calling it).
    • applied to a variable of a referenced type or a global variable of a basic type it returns a reference to its value.
    • applied to an expression enclosed in parenthesis (e.g. ->(time(SYS_NOW))) it returns a reference to the value of the expression (if its type can be referenced).
  • A reference generated by the '->' operator can be:
    • assigned to a compatible subroutine variable.
    • assigned to a compatible union – in this case the union variable becomes an alias to the referenced entity.
  • 'setparam' now displays a warning when an invalid setting is ignored.
  • New syntax (type_name) to create local instances of referenced types.
  • The control parameter 'realfmt' supports 2 new format types 'y' and 'j' (e.g. "%j") that are conservative (i.e. parsing the generated text will restore the original real number without loss of accuracy).
Back to top
Compiler Library
  • Documentation generation now handles requirements.

Runtime Library

  • New type properties 'TPROP_NBELT' and 'TPROP_SIGN' (cf 'gettypeprop').
  • New environment variable 'MOSEL_TMP' to specify the temporary directory for Mosel.
Runtime Library (.NET)
  • XPRMProcedure.Type property no longer contains procedure return type; use XPRMProcedure.ReturnType property instead.
  • XPRMProcedure is no longer a subclass of XPRMTypedIdentifier.
Native Interface
  • New native type property 'DTYP_ANDX' to declare an indexer type.
  • New service 'SRV_ARRIND' (to implement array indexers).
  • New function 'getarrindices' to access an indexer from a DSO.
  • New functions 'isdefined', 'getifunvalue'.
  • New function signature tags 'F' and 'f' (for subroutine references).
  • New function 'XPRMdbg_findprocblklndx' (returns both start&end index).
  • Function 'XPRMdbg_findproclndx' is now deprecated.
  • 'realtostr' supports the new format types 'y' and 'j'.
Remote invocation
  • Additional array 'varsopt' for commands 'info' and 'lsloc'.
moseldoc 1.10.0
  • Handling of 'doc' annotations for requirements.
  • Support for MathJax LaTeX markup in Maths formulas.
mmhttp 3.6.0
  • New procedure 'jsonread'.
  • New version of 'jsonwrite' with additional argument.
Back to top
mmreflect 1.0.0
  • New type 'iterator' to enumerate cells of arrays.
  • New routines 'inititer', 'nextcell', 'getindices', 'setindices' and 'getstatus'.
  • 'callfunc'/'callproc' now also accept a subroutine reference or a union.
  • New routines 'callproclsa'/'callfunclsa' (list of arguments).
  • New routines 'getarrval'/'setarrval'.
  • New functions 'getnbargs', 'getrettype', 'getsignature' (subroutine properties).
  • New function 'testtype'.
  • New type 'reflecterror' for error handling.
mmsystem 2.12.0
  • 'qsort' now accepts subroutine references for the comparator function.
  • Parameter 'sys_qtype' takes new value 3 for JSON quoting convention.
  • New version of 'system' generating the command line from a list of arguments.
mmxml 2.4.0
  • 'xmlparse' and 'jsonparse': support for subroutine references.
mmxprs 3.6.0
  • 'setcallback' now supports subroutine references.
  • 'fixglobal' now takes an integer flag instead of a Boolean.
  • New version of 'resetsol' to remove individual variables from an mpsol object.
mosjvm 1.2.3
  • Code requiring the defineClass runtime permission can now be executed in restricted mode.
python3 2.1.4
  • Added RHEL 8 support.
r 1.1.4
  • Support for linking with R v4.1.
kalis 13.2.0
  • New version of 'task_serialize' to guide branching with resource assignment variables.
  • It is now possible to specify callbacks and custom branching methods with subroutine references (operator '->').
  • New function 'getindex' to retrieve the index of a variable, task, or resource.
Back to top
Xpress Workbench 3.6
  • Support for Mosel 6
  • Support for publishing to, and debugging on, Xpress Insight 5.
  • Support for Microsoft Edge browser (Microsoft Internet Explorer is no longer supported).
  • Support for VDL 4.8.
  • Updated VDL examples to version 4.8.
  • View Designer
    • Support for opening and editing VDL include files, i.e. VDL files that are used to include in VDL views and do not contain the vdl-page element.
    • Added VDL Include component.
    • Added VDL Progress Bar component.
    • Added VDL Spinner component.
    • Added VDL Job Message action.
    • Update VDL Chart Series to include new Entity X attribute.
    • Updated the Schema Explorer to identify progress entities and allow filtering of entities by type.

Fixed in Release 8.14

Xpress Optimizer 40.01.01

  • All fixes from Xpress 8.13.5 (Optimizer 39.01.06).
Xpress Nonlinear 40.01.01
  • All fixes from Xpress 8.13.5 (Nonlinear 39.01.06).
Xpress Solver Interfaces 40.01.01 (Python, R, Matlab, .NET, Java)
  • All fixes from Xpress 8.13.5 (Interfaces 39.01.06).
Xpress Kalis 13.2.0
  • Fix parallel bug when using 'group_serializer' and custom branching functions.
Back to top

Xpress Mosel 6.0

Compiler Library
  • Resetting a union is now working as documented.
mosel
  • Profiler: an issue has been fixed in the way how timing for subroutines is accounted for.

mmetc 2.4.2
  • 'diskdata' now reports when reading of a file stopped due to an I/O error.
  • A potential memory corruption has been fixed in 'diskdata'.
Xpress Workbench 3.6
  • Fixed issue where sometimes abruptly terminating an Insight debugging session can leave the job on the Execution Worker (instead of cancelled).
Back to top

Fixed in Release 8.13.5

Xpress Optimizer 39.01.06
  • Fixed an issue with concurrent decomposition search for MIPs with indicators that could result in a wrong solution.
  • Fixed a race condition for MIQPs with indicators that could result in non-deterministic behavior.
  • XPRSfixglobals without rounding should no longer impose a lower bound greater than the semi-continuous lower bound for semi-continuous variables.
  • Fixed an issue with branching when there are duplicate indicators.
  • Fixed an issue with the tuner aborting without setting an error code.
  • Fixed error handling of XPRSstrongbranch in case of invalid user input.
  • Fixed compression error when writing large save files.
  • Fixed an uninitialized memory read in presolve.
  • Fixed an issue arising from applying XPRScopyprob to an optimally solved problem for analysis functions (such as XPRSstrongbranch).
Xpress Nonlinear 39.01.06
  • Fixed an issue with eliminations not checking for integrality that could lead to fractional solutions being returned.
  • Fixed a potential memory corruption when computing the Hessian of min/max operators.
  • Added missing exported symbols to the library. The following symbols were not supported but are now:
    • XSLPwriteamplsol
    • XSLPreadamplsol
    • XSLPgetstringattrib
    • XSLPgetstringcontrol
    • XSLPsetinitval
    • XSLPsetdetrow
Back to top

Fixed in Release 8.13.4

Xpress Optimizer 39.01.5
  • Fixed an issue with symmetry probing that could result in memory corruption.
  • Fixed an issue with MIP tree restart for problems with indicators that could lead to a crash.
  • Fixed an issue with MIQP containing indicators that could result in a wrong solution being returned.
  • Fixed a problem with setting XPRS_COMPUTE when the same environment variable is set.
  • Fixed a performance problem in the clique lifting module of the MILP presolver.
  • Fixed a problem where an incorrect message about non-convexity could be printed for a quadratic problem instead of an out-of-memory.
  • Fixed a data initialization after restoring an LP from a save file.
  • Correctly identify situations in which XPRSstrongbranch is not applicable.
Xpress Nonlinear 39.01.05
  • Fixed a problem with incorrectly reporting a globally optimal solution as a local one.
  • Fixed a problem with XSLPgetrowstatus not reporting enforced status.
  • Fixed a potential memory corruption in XSLPgetslpsol.
Xpress Solver Interfaces 39.01.05 (Python, R, Matlab, .NET, Java)
  • [Python] Fixed a problem where the Xpress module would fail to load in certain versions of Python on macOS due to hardened runtime settings.

New in Release 8.13.3

Back to top
Xpress Workbench 3.5.2
  • Browser support policy

    Microsoft has announced that Internet Explorer 11 will be officially retired by June 15, 2022. For upcoming releases, Xpress Insight 4.X will drop support for IE11. Going forward, Xpress Insight 4 and Xpress Insight 5 will support Chrome, Firefox and Microsoft Edge.

Xpress Mosel 5.8.2

dmp 1.3.2
  • When retrying a failed request, there is no longer a delay before the first retry.
  • The default value of the dmp_max_retries parameter has changed from 8 to 9.

executor 1.1.1

  • When retrying a failed request, there is no longer a delay before the first retry.
  • The default value of the executor_max_retries parameter has changed from 8 to 9.

mosjvm 1.2.2

  • Improved exception message when Java file access is blocked by Mosel security restrictions.

s3 0.1.2

  • When retrying a failed request, there is no longer a delay before the first retry.
  • The default value of the s3_max_retries parameter has changed from 8 to 9.
Back to top

Fixed in Release 8.13.3

Xpress Optimizer 39.01.4
  • Fixed a potential memory leak for MIQCPs.
  • Fixed an issue in the interplay of outer approximation for MIQCPs and indicators.
Xpress Kalis 13.1.1
  • Fixed an issue in the cumulative constraint when the assignment variable is null.

Xpress Mosel 5.8.2

Runtime Library
  • A potential memory corruption has been fixed in the handling of unions.
  • An issue that could cause a crash has been resolved in the debugger interface.
kalis 13.1.1
  • Fixed an issue with linear constraints when RHS and LHS are constants.
  • Fixed a compatibility issue in callback handling.
xreflect 1.0.3
  • Fixed an issue converting a basic value to a string when it contains a real.

New in Release 8.13.2

Back to top

New *BETA* AArch64 port of Xpress Optimizer , Xpress Nonlinear and Xpress Mosel, supporting ARMv8-A on Linux (such as Graviton2 instances on Amazon Web Services)

  • This beta does not include the follow Xpress Mosel modules: hadoop.dso, mmsheet.dso
  • The Python interface for Xpress Optimizer and Xpress Nonlinear will be made available on PyPI.org and anaconda.org at a later date.

Xpress Optimizer 39.01.03

  • Fixed an issue with general integer variables bounded away from zero appearing in SOS constraints that could lead to wrong results.
  • Fixed an issue with auto-cutting when solving multiple MIPs in a row.
  • Fixed an issue when solving MIQP problems with crossover enabled.

New in Release 8.13.1

Back to top

Xpress Optimizer 39.01.02

  • Fixed an issue with IIS and presolve=-1 for general constraints that could lead to crashes in case of bound conflicts.
  • Fixed an issue with presolve eliminations on problems with very small coefficients that could lead to numerical instability.
  • Fixed an issue with Barrier crossover that could result in a subsequent primal simplex solve returning a suboptimal solution.
  • Fixed an issue with MIP presolving that could result in rows with a clique cover incorrectly being dropped.

Xpress Nonlinear 39.01.02

  • Fixed a problem that could cause a crash in Knitro.
  • Fixed a problem with mixing indicators or general constraints with nonlinear problems, which could produce incorrect solutions.

Xpress Solver Interfaces 39.01.02 (Python, R, Matlab, .NET, Java)

  • [Python] Fixed a problem where the Python module could hang when solving many problems simultaneously.

Xpress Mosel 5.8.1 Runtime Library

  • NI function 'findident' no longer returns an invalid pointer when the requested symbol is a parameter of type 'boolean'.
  • An issue has been fixed in the parsing of invalid unicode sequences.

mmhttp 3.4.1

  • 'jsonwrite'/'httpreplyjson': support for unions and constants of native types.

mmjobs 2.22.1

  • IO driver 'rmt:' now limits the maximum buffer size to 63k (as 64k is not supported by the underlying protocol).

mmreflect 0.0.3

  • 'findident' now reports correct values when applied to model parameters.

mmxml 2.2.9

  • JSON reader: on Windows improved efficiency of reading of huge items.

Xpress Workbench 3.5.1

Trimmed excessively verbose logging

New in Release 8.13

Back to top
Xpress Optimizer
  • MIP Performance improvements:
    • The Optimizer now uses an ML module to decide whether to use in-tree cutting. A new control AUTOCUTTING has been introduced to allow this to be deactivated.
    • Improved separation of Mixed Integer Rounding (MIR) cuts.
    • Improved cut activation and deactivation strategies
    • Improved application of strong branching during the tree search.
    • More information carried through a MIP restart.
    • The 'R' local search heuristic will now be called more frequently in the early phase of a MIP solve.
  • Improved crossover performance after a Barrier solve through automatic objective perturbation. A new control, BAROBJPERTURB, has been introduced to control this behavior.
  • Improved Barrier performance for large problems on CPUs that support AVX2 (requires setting CPUPLATFORM=-2).
  • Changed internal handling of indicators for better interaction with heuristics, propagation and other code parts.
  • Indicator constraints are now allowed to be quadratic.
  • Additional presolve reductions when forming the dual of an LP.
  • Added support for reading and writing compressed files using external tools
    • Supported formats: zip, tar, tgz, bz2, 7z, xz, lz4, Z.
    • The PATH environment variable must contain the path to the necessary command line tool.
    • Support for gz files is built in and does not require an external tool.
  • A problem created by XPRScreateprob() can now be used directly. It is no longer required to first call one of the XPRSload* variants to create an empty problem before adding rows or columns to it.
  • New API functions XPRSclearrowflags() and XPRSgetrowflags() for clearing and retrieving special row information, respectively.
  • In the examples directory, all model files are now gathered in the data/ subdirectory. Examples were modified to pick up the files from there.
  • New flag option 's' to XPRSwriteprtsol and console command printsol to include sensitivity analysis report for an lp solution when a basis is available.
  • New control MAXSTALLTIME to limit how long the search continues after the last solution has been found
  • New attribute MIPSOLTIME returns the time at which the current incumbent was found
  • Deprecated functions are now tagged in xprs.h such that some compilers (e.g. gcc) will issue a warning when a deprecated function is used.
  • Compatible with version 5.2 of the Insight Compute Interface. Cannot be used with any earlier versions.
Xpress Nonlinear 39.01.01
  • Significantly improved mixed integer nonlinear (MISLP) performance due to improvements to the nonlinear presolve.
  • Improved nonlinear solver (SLP) performance due to improved stability on hard quadratic nonlinear problems.
  • Upgraded to Knitro 12.4.
  • XSLP_MIPDEFAULTALG now defaults to 1 (dual simplex).
Xpress Solver Interfaces 39.01.01 (Python, R, Matlab, .NET, Java)
  • [Python] Fixed a performance problem in xpress.problem.delConstraint(): removal of a subset of constraints could result in a quadratic algorithm. This no longer happens, removal of constraints only takes linear time now.
  • [Python] The "xpress.range" keyword, which was used in the "xpress.constraint" class, has now been superseded by "xpress.rng". This is in order not to obscure the built-in "range" function when importing the Xpress module with a "from xpress import *".
  • [Python] Errors that occur in callback functions are now raised when the solve terminates.
  • [R] Extended Vignette and many additional application examples for the Xpress R interface.
  • [Matlab] Indicators, piecewise linear and general constraints can now be used from the Matlab interface through the old SOS argument (now mipstructs) that has been extended to allow for further constraint types.
  • The API recorder can now also be activated by the means of setting the environment variable 'XPRS_CALLLOG' and the recording file redirected to the file indicated by environment variable 'XPRS_CALLLOG_PATH'.
Xpress BCL 4.11.0
  • Some C++ code examples were changes so that the XPRSprob is no longer a global variable but is instead defined locally in a function.
Xpress Kalis 13.1.0
  • The C++, Java, and Python library APIs of Xpress Kalis are now included in the Xpress distribution.
Xpress Mosel 5.8
  • Language
    • New control parameter 'txtztol' to disable the use of 'zerotol' when displaying real numbers.
  • Compiler Library
    • Improved accuracy of floating point number parser.
    • The text ',doc' is added to the system comment when option '-D' is used.
  • Runtime Library
    • Improved performance of sets operations '*' and '-'.
  • Native Interface
    • New subroutines 'memalloc' and 'memfree'.
  • xprmsrv Library
    • New testing mode via option '-tm #' (execution stops after the # seconds of inactivity).
  • mmetc 2.4.1
    • Improved accuracy of floating point number parser.
  • mmhttp 3.4.0
    • Support for PATCH requests (function 'httppatch').
    • New function 'httpreqconstat' to test the connection status of a request.
  • mmjobs 2.22.0
    • It is now possible to delete a file remotely in the temporary directory, e.g. fdelete("rmt:tmp:toto")
    • Subroutines 'getannotations' and 'getannidents' without a model reference have been moved to 'mmreflect'.
  • mmnl 2.4.2
    • IMCI update for mmxprs.
  • mmreflect 0.0.2
    • New routines 'getannotations' and 'getannidents' (moved from 'mmjobs').
    • New routines 'getallidents' and 'getallparams'.
  • mmsheet 1.10.1
    • Improved accuracy of floating point number parser.
    • Upgrade to libxl 3.9.4
  • mmssl 1.6.2
    • Support for mmhttp function 'httpreqconstat'.
  • mmxprs 3.4.0
    • Function 'indicator' can now be used with non-linear constraints.
  • dmp 1.3.0
    • New attribute 'instances' on the 'dmpcomponent' type allows models to read meta-data about component instances (available within Insight apps only).
    • New function 'getinstance' for finding specific instance of a dmpcomponent (Insight apps only).
Xpress Workbench 3.xx
  • Jump To Definition and the Outline pane now support Mosel include files

Fixed in Release 8.13

Back to top
Xpress Optimizer 39.01.01
  • All fixes from Xpress 8.12.4 (Optimizer 38.01.05).
Xpress Nonlinear 39.01.01
  • All fixes from Xpress 8.12.4 (Nonlinear 38.01.05).
Xpress Solver Interfaces 39.01.01 (Python, R, Matlab, .NET, Java
  • [Python] Fixed reference counting error when copying NumPy arrays containing Xpress objects.
  • [Python] Fixed an issue which prevented Knitro libraries from being loaded on Linux.
  • [Python] Corrected the return values of problem.getcoefformula and problem.getccoef.
  • [Python] Fixed an issue where data passed to getgencons and getpwlcons was not correctly passed to the Optimizer.
  • All fixes from Xpress 8.12.4 (Interfaces 38.01.05).
Xpress Kalis 13.1.0
  • Improved error message when using the 'setdomain' routine of the Xpress Kalis Mosel module with an upper bound value that is larger than the lower bound value.
Xpress Mosel 5.8
  • Compiler Library
    • An issue has been fixed in the compilation of inline record initialisation.
  • mmhttp 3.4.0
    • 'jsonwrite'/'httpreplyjson' now quote text strings as necessary.
  • mmodbc 3.10.2
    • mmsqlite ODBC driver: an issue has been fixed in the handling of non-ascii data.
  • mmsheet 1.10.1
    • csv driver: options 'dsep', 'true' and 'false' are no longer ignored when option 'alltxt' is used.
  • mmsystem 2.10.2
    • Posix: 'getfstat' now takes into account additional groups of the user for establishing access rights.
  • mmxml 2.2.8
    • JSON writer: all control characters are now quoted in text strings.

Fixed in Release 8.12.4

Back to top

Xpress Optimizer 38.01.05

  • Fixed a performance issue in the GCD detection of continuous columns.
  • Fixed a bug in the LP reader which could lead to files with fixed columns not being read.
  • Special Ordered Sets will now be considered properly when detecting disconnected components for the concurrent component solve.
  • Fixed the single-line problem definition in the Python interface where the maximization sense was not read.
  • Fixed an issue in presolving that could lead to wrong row substitutions on numerically cumbersome instances.
  • Fixed an issue with scaling of quadratic problems that could result in very large scale factors if the problem contains very small coefficients.
  • Fixed a further synchronization issue in parallel MIP that could result in a too high best bound being reported at the end of a solve.
  • Fixed an issue in big-M presolving that could cause incorrect matrix coefficients.
  • Fixed an issue with attention level prediction.
  • Fixed an issue that could prevent heuristics from finding solutions in presence of very small matrix coefficients.
  • Fixed an issue where the "No IP reductions" flag of PRESOLVEOPS would not be respected.
  • Fixed an issue with the interaction of dual reductions and variable eliminations.
  • Fixed an issue with parallel root heuristics.
  • New flag option 's' to XPRSwriteprtsol and console command printsol to include sensitivity analysis report for an lp solution when a basis is available.

Xpress Solver Interfaces 38.01.05 (Python, R, Matlab, .NET, Java)

  • [R] Fixed the cutoff value returned from the preintsol callback in the tsp.R example and the subtour detection algorithm in get_subtour.
  • [R] Robustified convenience function xprs_loadproblemdata against wrong/missing user input.
  • [Python] Errors that occur in callback functions are raised when the solve terminates.
  • [Python] Fixed reference counting error when copying NumPy arrays containing Xpress objects.
  • [Python] Fixed an issue which prevented Knitro libraries from being loaded on Linux.
  • [Python] Corrected the return values of problem.getcoefformula and problem.getccoef.
  • [Python] Fixed an incorrect construction of the quotient of a function to a variable.
Xpress Mosel 5.6.2
  • Runtime Library
    • A potential memory corruption has been fixed in the handing of records when used in conjunction with model cloning.
    • An issue in the management of combined problems has been fixed.
    • A potential stack corruption has been fixed in the bim loader.
  • Mosel
    • Profiler: an issue has been fixed in the way timings for subroutines is accounted.
    • Debugger: test of equality now supported for textual and boolean values.
    • On Windows an issue has been fixed in the handling of message printing.
  • mmnl 2.4.1
    • Constraints without any variable no longer cause a program failure.
  • mmxprs 3.2.1
    • A potential memory corruption has been fixed in 'loadbasis'.
  • mmodbc 3.10.2
    • mmsqlite: an issue has been fixed in the handling of non-ascii data.
  • mmxml 2.2.7
    • A dedicated error message is now reported in case too many nodes are requested (instead of 'out of memory').

Fixed in Release 8.12.3

Back to top
Xpress Optimizer 38.01.04
  • Fixed a synchronization issue with concurrent MIP solves that could result in memory corruption.
  • Fixed a synchronization issue in parallel MIP that could result in a too high best bound being reported at the end of a solve.
  • Fixed an issue with global bound tightening for MIPs that could result in a slight bound inconsistency.
  • Fixed a performance issue in duplicate column detection.
  • Fixed an issue with partial user solutions for quadratic problems.
  • Ensure that securevecs are respected when presolving quadratic constraints.
  • IISall will now return multiple IISs if they exists, for MIP problems that are LP infeasible.
  • Fixed a problem that could cause a crash if multiple parallel first time XPRSinit calls are made in the same process.
  • Fixed a problem in which an IIS search timing out would return an error code.
Xpress Solver Interfaces 38.01.04 (Python, R, Matlab, .NET, Java)
  • Fixed an issue in the R interface where xprs_addcol/xprs_newcol ignored bounds on binary variables.

New in Release 8.12.2

Back to top
  • Xpress Optimizer 38.01.03
    • Added new control XPRS_COMPUTELOG which will control when the run log is fetched from remote solves
  • Xpress Nonlinear 38.01.03
    • Upgraded to Knitro 12.4.0.
  • Xpress Mosel 5.6.1
    • mosel
      • Debugger/profiler: when looking for source files the debugger now tries to find the name without path (when the complete name cannot be located).
    • mmoci 1.12.1
      • Inserting an undefined union results now in a NULL-data entry in the DB.
    • mmodbc 3.10.1
      • New procedure SQLdataframe.
      • Inserting an undefined union results now in a NULL-data entry in the DB.
    • mmreflect 0.0.1
      • A new module to ease working with reflection in the Mosel language.
    • mmsystem 2.10.1
      • formattext now supports list of unions.

Fixed in Release 8.12.2

Back to top
Xpress Optimizer 38.01.03
  • Fixed an issue with a MIP local search heuristic.
  • Fixed an issue that could prevent changed controls from being synchronized during a parallel MIP solve.
  • Fixed an issue where REFACTOR was not set automatically to 0 for MIPs if the initial LP relaxation was solved with zero simplex iterations.
  • Fixed treatment of a corner case when adding columns to an empty problem.
  • Improved numerical accuracy in some cases when calculating tighter big-M coefficients in the MIP presolver.
  • Additional numerical stability checks added before tightening right-hand sides in the MIP presolver.
  • Fixed an issue with the solution refiner that could cause memory corruption in a subsequent dual simplex solve.
  • Fixed an issue where rows with very small coefficients could lead to infeasibility.
Xpress Mosel 5.6.1
  • Runtime Library
    • Multi-line strings no longer cause initialisation failures in skipped records.
  • mmnl 2.4.1
    • Constraints without any variable no longer cause a program failure.
  • mmxprs 3.2.1
    • A potential memory corruption has been fixed in 'loadbasis'.

New in Release 8.12.1

Back to top
Xpress Solver Interfaces 38.01.02 (Python, R, Matlab, C#, Java)
  • The xpress.expression object type of the Python interface is now exposed to the user for type hinting purposes.
  • Indicators, piecewise linear and general constraints can now be used from the Matlab interface through the old SOS argument (now mipstructs) that has been extended to allow for further constraint types.
  • Optimizer, BCL and Mosel .NET interfaces are now distributed as 'NuGet' packages in the 'lib/nuget/' directory, dual-targetting .NET Standard 2.0 and .NET Framework 3.5, and can be used on Linux as well as Windows. For legacy reasons, the .NET Framework 3.5-targetted DLLs are still distributed in the 'bin' directory.

Fixed in Release 8.12.1

Back to top
Xpress Optimizer 38.01.02
  • Fixed an issue with the disconnected component MIP search that could result in a ctrl-c event being ignored.
  • Fixed an issue with termination during post-presolve MIP initializations that could leave the solver in an inconsistent state.
  • Fixed the over reporting of memory usage for a concurrent MIP component solve.
  • Fixed an issue in which an IIS search timing out could incorrectly report the problem to be feasible.
  • The analytic center presolver for MIPs should now check against the time limit.
  • Fixed an issue which resulted in incorrect solution by the barrier algorithm in certain situations.
Xpress Solver Interfaces 38.01.02 (Python, R, Matlab, C#, Java)
  • Fixed a reference counting issue that could cause Python to crash.
  • Fixed a performance problem in xpress.problem.delConstraint(): removal of a subset of constraints could result in a quadratic algorithm. This no longer happens, removal of constraints only takes linear time now.
  • Fixed a problem with xpress.problem.addrows() and xpress.problem.addcols() with explicit None arguments.

New in Release 8.12

Back to top
  • Xpress Optimizer 38.01.01
    • Improved MIP performance, through improved logic for
      • deciding the branching strategy
      • separation of Mixed Integer Rounding cuts
      • handling of cliques
    • It is now possible to activate a special heuristic solve mode for MIPs, which emphasizes finding new solutions.
      • A new control, HEUREMPHASIS, has been introduced for enabling this special mode with emphasis on running heuristics.
      • It is possible to switch between default and heuristic emphasis mode during a MIP solve.
      • HEUREMPHASIS replaces the now obsolete HEURSTRATEGY control.
    • Improved sifting algorithm when used with Barrier.
      • It is now possible to use Barrier without crossover in the sifting algorithm. If SIFTSWITCH is set to a non-negative number and CROSSOVER=0 then Barrier without crossover will be used for the entire sifting algorithm and the final solution is returned without a basis.
      • It is now possible to warm-start Barrier between sifting iterations by setting BARSTART=-1.
      • New control, SIFTPASSES, to tune the selection of dual infeasible columns.
      • More options added to the SIFTING control to allow for better control of the algorithm.
    • Improved numerical stability of the Barrier algorithm.
    • Added support for writing compressed files.
      • For now, only the gzip (extension .gz) compression format is supported.
      • By default, the file format and compression method is inferred from the file extension.
      • For those functions that accept flags when reading or writing files, two new flags have been introduced:
        • The 'z' flag can be used for specifying compression.
        • The 'v' flag can be used for specifying that the filename should be used verbatim, that is, without appending an extension.
    • It is now possible to apply Iterative Refinement to Barrier solutions, as part of a Barrier solve.
      • A new control, BARREFITER, has been introduced to control the refinement iterations.
    • New XPRSbndsa API to provide traditional sensitivity analysis for variable bounds.
    • Automatically escape illegal characters in .lp, .mps, .bss and .slx files.
      • A new control, ESCAPENAMES, has been introduced to control behavior.
    • XPRSwriteslxsol will now write slacks for a MIP solution, when requested.
    • Extended piecewise-linear/general constraint preprocessing to detect further cases that allow for a convex reformulation through additional postsolving.
    • New example tsp.c that illustrates separating constraints from callbacks.
    • On Linux and Solaris the binaries (library and optimizer) now have their RUNPATH set to the install location of the product (by means of the $ORIGIN special item). This allows using them without having to specify LD_LIBRARY_PATH. If specified, LD_LIBRARY_PATH still takes precedence.
    • Dynamic switching between local solves and remote solves using the Insight Compute Interface.
      • A new control, COMPUTE, has been introduce for switching.
    • New functions, XPRS_ge_getcomputeallowed and XPRS_ge_setcomputeallowed, to control whether the solver is allowed to use the Insight Compute Interface.
    • This release requires at least version 5.2 of the Insight Compute Interface.
    • Minor changes:
      • A new control, INPUTTOL, has been introduced as a tolerance for dropping small coefficients when loading a problem in memory or reading a problem from file. This was previously controlled by MATRIXTOL.
      • A new control, MIPRESTARTFACTOR, has been introduced to allow the trigger for a tree restart to be fine-tuned.
      • A new control, NETSTALLLIMIT, has been introduced for specifying the stalling limit of the network simplex algorithm.
      • A new control, PREFOLDING, has been introduced to control LP folding during MIP presolve.
      • A new control, SERIALIZEPREINTSOL, when set to 1, will ensure that the preintsol callback is always fired in a deterministic order during a multi-threaded MIP solve.
      • A new option, 2, has been added to the DETERMINISTIC control. This allows a concurrent LP solve to be opportunistic.
      • The controls TREEPRESOLVE and TREEPRESOLVE_KEEPBASIS have been removed.
      • The default value of MIPPRESOLVE has changed from -257 to -1, which enables enables symmetry reductions during node presolve.
      • The function XPRSgoal, which executed goal programming instructions from a file, has been removed.
      • All fixes from Xpress 8.11.3 (Optimizer 37.01.04).
  • Xpress Nonlinear 38.01.01
    • Significant MINLP performance improvements due to improved nonlinear presolver.
    • Improved performance on instances with very large separable nonlinear expressions due to imroved automatic differentiation.
    • Improved multistart logging.
    • Multistart now uses the nonlinear primal integral for tie braking.
    • XSLP messages are now by default routed through the XPRS message callback. Use control XSLP_ECHOXPRSMESSAGES for compatibility purposes.
    • The multimapdelta userfunction now supports automatic differentiation (previosly only symbolic was supported).
    • The nonlinear API will no longer refer to the XSLP_VAR token, but always use XSLP_COL instead. Inputs may still use XSLP_VAR for compatiblity.
    • Minor changes:
      • The XSLP_DRCOLTOL control now defaults to 1e-6.
      • All fixes from Xpress 8.11.3 (Nonlinear 37.01.04).
  • Xpress BCL 4.10.5 (Optimizer 38.01.01)
    • The range functions will no longer create temporary files.
  • Xpress Solver Interfaces 38.01.01 (Python, R, Matlab, C#, Java)
    • Added support for Python 3.9; dropped support for Python 2.7 and 3.5.
    • XSLP.NET now supports user functions.
    • All C code examples are now also available in Java, this includes the new tsp.c example.
    • There is now an R interface to the optimizer. The interface provides direct access to all functions of the C callable library (including callbacks) as well as a convenience layer that simplifies modeling in R.
    • The Java API has been improved. In addition to adding a lot of convenience functions, the XPRSprob class now derives from the AutoCloseable interface. This way it can be used in try-with-resources. Also, instantiating XPRSprob now implies a call to XPRS.init().
    • Parameter names in all APIs were streamlined to match exactly those in the C API. As a consequence, named arguments in Python changed. Old names are still accepted but are deprecated.
  • Xpress Mosel 5.6.0
    Language
    • Union types: an entity can now be associated to a collection of types. A symbol of this kind can be assigned a value of any of the specified types. The definition of a "union" is of the form: type1 or type2 [... or typei]
    • The special type 'any' is a union type accepting anything.
    • New operator 'is', 'is not' to check union properties (e.g. u is integer).
    • New functions 'gettypeid', 'getstruct' and 'geteltype' to retrieve the properties of the data stored in a union.
    • New notation "typename.id" (e.g. integer.id) to retrieve the ID of a type.
    • New 'initfrom/to' marker '?' ("nil value") for text and 'bin:' driver.
    • Function 'versionnum'/'versionstr' can now return the version of Xpress.
    mosel
    • The version of Xpress is now reported in the banner.
    xprmsrv
    • The version of Xpress is now reported in the banner.
    Compiler Library
    • New compiler option '-na' to disable assertions with debug info.
    • Loops of the form 'forall(i in L.reverse)' are now optimised.
    Runtime Library
    • New structure 'STR_UNION'.
    • New functions 'getnextuncomptype', 'getuntype', 'getuntypeid', 'getunvalue'.
    • 'getversions' can now return the version of Xpress.
    Native Interface
    • New subroutine signature code 'u' for "union".
    • New functions 'getnextuncomptype', 'getuntype', 'getuntypeid', 'getunvalue', 'setunvalue', 'unionwrap', 'isuncompat', 'resetunion', 'getuntypeself'.
    • Function 'findident' requires now an additional parameter.
    • 'getversions' can now return the version of Xpress.
    • 'dsotypfromstr' now returns 2 if the type does not support the feature.
    • 'dsotyptostr' now returns -2 if the type does not support the feature.
    moseldoc
    • The version of Xpress is now reported in the banner.
    • New annotation 'doc.deprecated' to tag deprecated entities.
    mmetc 2.4.0
    • Support for union types.
    • I/O driver 'diskdata': new option 'cols' to select columns.
    mmhttp 3.2.0
    • New version of 'httpreply' with a status code.
    • A 'User-Agent' header line is now included in all requests.
    mmjobs 2.20.0
    • New implememtation of 'mempipe' with a buffer, support for remote write access via 'rmt:'
    • New function 'pipenotify' to monitor a memory pipe
    • New function 'pipeflush' to clear a pipe
    mmoci 1.12.0
    • Support for union types.
    mmodbc 3.10.0
    • Support for union types.
    mmsheet 1.10.0
    • Support for union types.
    mmssl 1.6.1
    • mmssl command: the version of Xpress is now reported in the banner.
    mmsystem 2.10.0
    • 'text' type now supports constant definition.
    • New version of 'readtextline' with a size limit.
    • New IMCI function 'getcsttxtbuf'.
    mmxprs 3.2.0
    • New procedure 'getmatcoeff' to get the coefficients of the matrix loaded into the optimiser.
    • New procedure 'getscale' to compute scaling statistics of the matrix.
    • New callback 'checktime'.
    • New routines 'getcomputeallowed', 'setcomputeallowed'.
    python3 2.1.2
    • Internal refactoring related to new 'constant text' type.
    dmp 1.2.0
    • New function ‘getdmpcomponents’ that returns a list of DMP components in the solution.
    • New type ‘dmpcomponent’.
    • Support accessing DMP components that use path-based routing.
    • HTTP 503 responses will be retried by default.
    executor 1.1.0
    • Allow configuration of new configuration settings added in Xpress Executor 3.0.6
    • HTTP 503 responses will be retried by default.
    mosjvm 1.2.0
    • jvmobject type has new attributes for reading/writing value as any primitive Java type.
  • Xpress Workbench 3.4
    • Added support for Mosel union types and 'any', and the new 'is' keyword.
    • Support for DMP on-premise.
    • Added Profiler pane to display profiling data for current Mosel source file.
    • Support for 'Jump To Definition' of selected variable in Mosel source.
    • (FAC) Better cleaning up of zombie processes.
    • Support for connecting to Xpress Insight when prevented by OS proxy settings.
    • Improved support for documentation of built-in Mosel API in tooltips.

Fixed in Release 8.12

Back to top

  • Xpress Mosel 5.6.0
    mosjvm 1.2.0
    • Fixed: An issue calling public methods of non-public classes.
    • Fixed: An issue that could cause a crash when calling an instance method under the NoExec security restriction.
    xreflect 1.0.2
    • Fixed an issue transforming a basicvalue to a string.
  • Xpress Kalis 13.0.2
    • Fixed an issue when using group serializer with probing level.
  • Xpress Workbench 3.4
    • Fixed: interference with Git operations when editing files in a checked-out repo.
    • Fixed: Mosel snippets always inserted with indentation of 2 spaces, regardless of editor indent settings.
    • Fixed: incorrect code folding on subroutines declared 'forward public'.
    • Fixed: (FAC) initial debugger connection can timeout waiting for Insight's Execution Worker provisioning.

New in Release 8.11.1

Back to top

Xpress Mosel moduless3 0.1.0

  • Allow access to solution revision bucket when running within Insight 4.55+/Executor 3.0.6+
  • Introduced new s3solutiondata function as recommended way to request solution data bucket from s3init

dmp 1.1.1

  • Allow access to additional DMP Manager endpoints relating to solution revisions, when running within Insight 4.55+/Executor 3.0.6+
  • Allow access to additional DMP WebService endpoints for requesting Swagger spec and function error log, when running within Insight 4.55+/Executor 3.0.6+

Fixed in Release 8.11.1

Back to top
Xpress Optimizer 37.01.02
  • XPRS_PRIMALOPS is now accessible from .NET.
  • A new control NETSTALLLIMIT has been introduced for specifying the stalling limit of the network simplex algorithm.
  • When attempting to restore an incompatible saved state file, the Optimizer will now issue an error instead of crashing.
  • Fixed a potential crash in symmetry reductions.
  • Fixed an issue where maxmemoryhard would not have been taken into account when setting the tree memory target.
  • Fixed a potential issue with quadratic strong branching.
  • Stop fractionality reduction when primal simplex is cycling
  • Fixed an issue that could lead to wrong results for semi-continuous and partial integer variables in specific structures.
  • Fixed a performance issue with using primal simplex to clean up after network simplex.
  • Fixed an issue with running parallel heuristics during the branch-and-bound tree search.
  • Fixed an issue with the parallel component solver that could result in a non-optimal solution being returned.
  • New control SERIALIZEPREINTSOL that, when set to 1, will ensure that the preintsol callback is always fired in a deterministic order during a multi-threaded MIP solve.
  • New control COMPUTEJOBPRIORITY for setting priority of Insight Compute jobs (Insight 5.1+ only)
  • Fixed an issue that could cause optimization functions to not return when a remote job was cancelled on the Insight Compute server.
  • Changed behavior so optimizations will not fail when the Insight Compute server does not signal run log completion.
  • XPRS_PRIMALOPS is now accessible from .NET.
  • A new control NETSTALLLIMIT has been introduced for specifying the stalling limit of the network simplex algorithm.
  • Fixed an issue with the parallel component solver that could result in wrong bounds.
Xpress Nonlinear 37.01.02
  • Fixed an issue related to retrieving solutions to non-convex quadratic problems after nonlinear post-solve.
Xpress Mosel 5.4.1
Compiler Library
  • Line counter is no longer corrupted when using '\' as the last character of a line of a text string.
mmsystem 2.8.2
  • Posix: 'system' to interrupt its subprocess even when it ignores SIGTERM.
  • Negative values are now properly handled by datetime(v).
mmodbc 3.8.2
  • New SQLite function donullifspecial.
R 1.1.03
  • support for linking with R v4.x.
  • workaround for R v4.x issue with UTF8 in/out sequences incorrectly added in embedded mode.
Xpress Kalis 13.0.1
  • Added propagation algorithm choice in 'cumulative' constraint.
  • Fixed an issue when using 'cumulative' constraint without the scheduling objects (tasks and resources).

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

Back to top 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

Back to top 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.

Known Issues in Release 8.6

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')".

© 2001-2024 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.