Javascript Menu by Deluxe-Menu.com
[Home]
[Client Area]
English Japanese
RELEASE NOTES - July 2008

Release notes for Xpress-MP 2008A.
Release notes for Xpress-MP 2007B.2
Release notes for Xpress-MP 2007B.1
Release notes for Xpress-MP 2007B.
Release notes for Xpress-MP 2007A.
Release notes for Xpress-MP 2006B.
Release notes for Xpress-MP 2006A.
Release notes for Xpress-MP 2005B.
Release notes for Xpress-MP 2005A.


For those users upgrading from an earlier 2004 release please see the
release notes for releases 2004A-2004D also.




New in Release 2008A


Licensing ( XPRL 2.4.3 )
  • A crash on Windows when running xpserver with the "-bg" option ( most commonly indirectly using the runlmgr script ) has been fixed.
  • Reduced initialisation overhead associated with use of distributed licenses. Average time overhead for license check-out and release has been reduced by 50%.
Xpress-Optimizer 19.00.00
  • Problems with quadratic constraints can now be solved with the barrier algorithm. The convexity of quadratic constraints and quadratic objective functions are checked automatically. The checking can be turned off with the IFCHECKCONVEXITY control.
  • The parallel MIP is now run in deterministic mode by default. The parallel MIP can also be run in non-deterministic mode by setting the DETERMINISTIC control to 0.
  • Multiple MIP solutions can now be stored. It is now possible to enumerate and select from the N-best MIP solutions. See the Multiple Solution Enumerator section of the Multiple Solution Pool reference manual for more details.
  • A new preintnode calback has been added so that MIP solutions can be rejected by the user.
  • The primal algorithm has been improved and is now 40% faster on our LP benchmark test set and 20% faster on our large LP benchmark test set.
  • The dual algorithm has been improved and is now 22% faster on our LP benchmark test set and 45% faster on our large LP benchmark test set.
  • The MIP performance has been improved and is now 40% faster on our MIP benchmark test set
  • Improvements to the Quadratic Primal algorithm to avoid cycling problems
  • New functions in this version ( see reference manal for more information ):
    • XPRS_ge_getlasterror
    • XPRS_ge_setcbmsghandler
    • XPRS_nml_addnames
    • XPRS_nml_copynames
    • XPRS_nml_create
    • XPRS_nml_destroy
    • XPRS_nml_findname
    • XPRS_nml_getlasterror
    • XPRS_nml_getmaxnamelen
    • XPRS_nml_getnamecount
    • XPRS_nml_getnames
    • XPRS_nml_removenames
    • XPRS_nml_setcbmsghandler
    • XPRSaddqmatrix
    • XPRSchgqrowcoeff
    • XPRSgetcbnlpevaluate
    • XPRSgetcbnlpgradient
    • XPRSgetcbnlphessian
    • XPRSgetcbpreintsol
    • XPRSgetnamelistobject
    • XPRSgetobjecttypename
    • XPRSgetqrowcoeff
    • XPRSgetqrowqmatrix
    • XPRSgetqrowqmatrixtriplets
    • XPRSgetqrows
    • XPRSinitializenlphessian
    • XPRSinitializenlphessian_indexpairs
    • XPRSloadbranchdirs
    • XPRSloadqcqp
    • XPRSlpoptimize
    • XPRSmipoptimize
    • XPRSresetnlp
    • XPRSsetcbnlpevaluate
    • XPRSsetcbnlpgradient
    • XPRSsetcbnlphessian
    • XPRSsetcbpreintsol
  • New controls in this version:
    • CROSSOVERDRP
    • CUTFACTOR
    • DETERMINISTIC
    • DUALSTRATEGY
    • EIGENVALUETOL
    • EXTRAQCELEMENTS
    • EXTRAQCROWS
    • FORCEOUTPUT
    • IFCHECKCONVEXITY
    • PREPROBING
    • PRIMALOPS
    • PRIMALUNSHIFT
    • TEMPBOUNDS
  • New attributes in this version:
    • QCELEMS
    • QCONSTRAINTS
    • NLPHESSIANELEMS
    • CURRMIPCUTOFF
    • STOPSTATUS
  • Optimizer .NET interface. The following changes mean the 2008A interface is not backwards compatible.
    • BarOrder and DefaultAlg properties of the XPRSprob object are now enumerations rather than integer values.
    • The following parameters of the 'Estimate' callback are now passed 'ref' instead of 'out': iglsel, iprio, degbest, degworst, curval, ifupx, nglinf, degsum, nbr The following parameters of the 'ChgBranch' callback are now passed 'ref' instead of 'out': entity, up, estdeg
    • The following parameters of the 'ChgNode' callback are now passed 'ref' instead of 'out': nodnum
    • When passing a 'null' array of cut indexes as a parameter, it needs to be explicitly typed as a cut array, ie "(Cut[])null"
Xpress-Mosel 2.4.0

See docs/mosel/upgrade.pdf for details on upgrading Mosel models from 1.6.x to 2.4.0 compatibility.

Mosel Language
  • new aggregate operator 'array' to create an array locally to an expression. The operator can be used whenever a reference to an array is expected.
         For instance:
          declarations
           x:array(1..10) of mpvar
          end-declarations
          ...
          initialisations to "mydata.txt"
           evaluation of array(i in 1..10) x(i).sol as "mylabel"
          end-initialisations
          ...
          myproc(array(i in 1..10|i mod 2=0) i)
    
Runtime Library
  • new function 'findtypecode' to get the code of a type
  • error "string too long in conversion" is no longer fatal
Compiler Library
  • new compiler option '-wi' to display a warning each time a symbol is implicitly declared
Java Interface
  • new function 'XPRMModel.findTypeCode' to get the code of a type
Native Interface
  • new function 'findtypecode' to get the code of a type
  • the function 'newref' creates an object if the reference is NULL
Module mmjava 1.0.3
  • the 'java' IO driver now supports the 'delete' operation: it corresponds to a call to 'unbind' in the Java code This allows to release Java objects in the Mosel code as soon as they are no longer required. Example:
    Java code:
          xprm.bind("mydata",data)
    Mosel code:
          initialisations from 'jraw:'
           A as "mydata"
          end-initialisations
          fdelete("java:mydata")
New Module mmnl 1.0.0
  • This module defines the necessay operators to describe non linear problems and publishes an extensive API allowing to interface Mosel to non-linear solvers.
Module mmodbc 2.0.0
  • parameter 'SQLcolsize' is no longer limited to 1024
  • new versions of SQLread* and SQLexecute taking as the second argument a list of values to be used as parameters for the SQL query - this allows to generate input queries with parameters. For instance:
    s:=SQLreadstring("select style from shirts where id=?",[2])
    SQLexecute("select * from shirts where id=? and style=?",[2,"dress"],shirts)
  • new function SQLparam(x) with 'x' being an integer, a real or a string. This routine can be used in parameter lists go specify input/output parameters:
        SQLexecute("{?=call myfunc}",[SQLparam(0)])
    The value passed to the function indicates the type of the parameter and the returned value (after the query has been executed) can be retrieved with one of the functions SQLgetiparam(i),SQLgetrparam(i) or SQLgetsparam(i) where 'i' is the order number of the parameter.
        rts:=SQLgetiparam(1)
Module mmquad 1.2.5
  • improved handling of sums of quadratic terms
Module mmxprs 1.8.0
  • support for QCQP and NL objectives (relies on mmnl)
  • quadratic objectives can now be expressed using 'mmnl' (instead of mmquad)
  • new functions 'isiisvalid' and 'resetiis'
  • 'getiis' now uses the new Optimiser functions and gives access to more detailed information
  • 'getiis' and 'getinfeas' now reset the sets they receive
  • new callback 'PREINTSOL' with associated routines 'rejectintsol' and 'setcbcutoff'
  • 'writedirs' now lists delayed rows
  • new directive type BR (XPRS_BR)
  • the prenode callback now requires a boolean function with no argument (instead of an integer function with 1 integer argument)
  • faster interruption of the optimiser after an error occurred in a callback
Xpress-BCL 4.0.0
  • BCL now supports QCQP, that is, constraints now accept quadratic terms. The handling of constraint terms has been completely rewritten, in particular resulting in a considerable gain in speed for handling large quadratic expressions.
  • Functions for handling quadratic objective functions like "setqobj", "printqobj", "delqobj" have been removed. Quadratic objectives are now defined as a constraint (XPRBctr) using the new functions "setqterm", "addqterm", "delqterm" for handling quadratic terms in constraints. To print the complete objective function there now is the function "printobj".
  • In the object-oriented interfaces "XPRBlinExp" and "XPRBquadExp" have been replaced by a single class "XPRBexpr", and instead of "XPRBlinRel" there now is "XPRBrelation".
    • C++ programs using the old objects remain fully compatible.
    • Java raises "deprecated" warnings but old programs continue to work, with some few exceptions:
            XPRBlinExp l;
            XPRBvar x;
            ... (create the variable)
            l = x.mul(2);
          needs to be changed to
            l = new XPRBlinExp(x.mul(2));
    • In C# programs the old class names need to be replaced by the new ones.
Xpress-IVE 1.19.00
  • Added the infeasibility repair capability to the Optimizer dialog.
  • Added the ability to visualize the N best/previous MIP solutions for any MIP problem.
  • The Optimizer function can now load solution files as well as directives files before solving.
Xpress-Application Developer 1.1.4
  • Added an XADcreatetab() overload to allow a user-ordered list of tabs.
  • Added an XADchoosefile() overload which allows setting an initial directory.
  • Added events XAD_EVENT_MOUSE_LEFTDBLCLK and XAD_EVENT_MOUSE_RIGHTDBLCLK.
Xpress-SLP 1.41
  • Initial value formula functions.
  • New Mosel and "unknown function" token types, MOSELFRM, XSLP_UNKNOWN.
  • Formula Evaluation callback.
  • XSLPgetstringptr, for returning a pointer to an XSLP string.
  • Constant functions are now evaluated.
  • The HASCALCIV status for calculation of initial value functions of a variable.
Xpress-Tuner 1.1.0
  • Added multithreading capabilities to take advantage of extra CPUs/cores.
  • Added the ability to clone tuning methods.
  • Added several focused tuning methods (e.g. focus on root node)
  • Improved default tuning methods by adding new Xpress-Optimizer controls as basic strategies.
  • Improved disk usage for storing runs and run logs.
  • Directives files and solution files can now be used in the Tuner.
Xpress-Kalis 2008.1
  • Xpress-Kalis extensions: an interface/mechanism that gives the user the possibility to create their own CP constraints and branching schemes for the Mosel language (implemented on the library level).




Fixed in Release 2008A


Licensing ( XPRL 2.4.3 )
  • Fixed issue relating to unexpectedly-long adapter names
  • Fixed failure when restrictive umask set
Xpress-Optimizer 19.00.00
  • XPRSgetinfeas no longer changes the solution when it contains superbasic variables.
  • The L2 cache size of 3MB and 6MB core 2 Intel chips are now detected automatically.
  • The stack space required for the MIP search has been reduced.
  • A problem with starting from singular bases has been fixed.
Xpress-Mosel 2.4.0

Runtime Library
  • wrint[ln] no longer uses '{}' around range set values
Compiler Library
  • the compiler no longer crashes after having reported error 115
Module system 1.8.4
  • a problem that could induce memory corruption has been fixed in the routine resizing 'text' objects
Module mmxprs 1.8.0
  • a potential memory corruption in parallel MIP if callbacks are called while a callback is being executed has been fixed
Xpress-IVE 1.19.00
  • Fixed a number of behaviors in the Xpress-Kalis dashboard.
  • The 'mmive' module now has the same version as IVE.
  • The student version of IVE will display an appropriate notice.
  • Extremely long licensing error messages are no longer truncated.
  • The module wizard will generate Mosel 2.x+ compliant function prototypes.
  • The module list dialog will correctly interpret list arguments when displaying the contents of a module.
  • IVE will no longer crash when attempting to visualize the Objective of an empty problem.
  • IVE will no longer crash when displaying 'deep' identifiers (e.g. array of records containing arrays of records).
  • IVE will no longer crash when opening extremely large files. Note that opening files larger than 50MB in the IVE editor will require significant amounts of memory and will lead to a performance hit upon loading.
Xpress-SLP 1.41
  • XSLPparseformula will now return error codes correctly
Xpress-Tuner 1.1.0
  • Tuner no longer shows 0% gap for incomplete runs.
  • "Reduce time to gap" is now applied correctly in all cases.
  • Many other minor fixes.




Fixed in Release 2007B.2


Licensing ( XPRL 2.4.1 )
  • Fixed crash when failing to checkout license with lots of hostids.
  • Fixed runlmgr.bat return code.
Xpress-Optimizer 18.10.10
  • The status of non-basic fixed variables are only changed to make them optimal when the problem is optimal.
  • Returning of names now works correctly when the problem is in a presolved state.
  • The efficiency of loading cuts has been improved.
  • Dual values for quadratic problems are now postsolved correctly.
  • The efficiency of the network solver has been improved.
  • Running out of memory in the heuristics is handled better.
  • Priorities and branching directives are now handled correctly.
  • Loading a MIP solution no longer changes the LP status.
  • The crossover control can now be set to 3 to avoid certain numerical problems in the barrier crossover.
  • A problem with getting sensitivity analysis with "XPRSrhssa" and "XPRSobjsa" has been fixed.
  • A problem with copying a dualized array has been fixed.
  • A problem with writing out solution reports for very large problems has been fixed.
  • A problem with heuristics handling delayed rows has been fixed.
  • A problem with presolve dual fixing binaries has been fixed.
  • A problem with presolve detecting a problem to be infeasible has been fixed.
  • A problem with postsolving infeasible duplicate columns has been fixed.
  • Barrier performance on AIX Power-based machines has been improved.
Xpress-Mosel 2.4.0

Runtime Library
  • the aggregate operator 'max' no longer returns 0 when applied to a collection of negative reals.
Compiler Library
  • a problem has been fixed in the handling of the 'include' statement when the included file does not end with a newline character.
  • the construct 'if(cond,v1,v2)' now works if v1/v2 are sets or lists.
Java Interface
  • a problem in the processing of initialisation from arrays of objects has been corrected.
  • finalisation of XPRM objects after a license error is now properly handled.
Module mmodbc
  • a workaround for a bug in the Access driver under Vista has been implemented in order to enable SQLupdate.
  • initialisation of arrays using noindex working again for the Excel IO driver.
Module mmsystem
  • a problem that could induce memory corruption has been fixed in the routine resizing 'text' objects.
  • 'qsort' no longer fails when sorting a collection of strings containing empty strings.
Module mmxprs
  • mmxprs: problems with no constraint can now be loaded when 'loadnames' is true.
Xpress-BCL 3.0.8
  • "toString" methods for linExp, linRel, and quadExp in Java.
  • "finalize" methods of "XPRB" and "XPRBprob" (Java) are now public to enable the user to force release of the license.
Xpress-SLP 1.40
  • "XSLPgetstringptr" added.
  • Make sure XSLP_UNCONVERGED is set to unknown, -1, value before each opt.
  • Missing "XSLPgetslpsol" prototype added to xslp.h file.
  • Extend analytic derivative loop count to allow many multiple starts for one variable.
  • Mosel "SLPsave(as)" added for easy output of problem. For use in support queries.




Fixed in Release 2007B.1


Licensing ( XPRL 2.3.6 )
  • Improved handling of hardware virtualised by Microsoft Virtual PC/Virtual Server.
Xpress-Optimizer 18.10.04
  • A problem with presolve not detecting infeasible linearly dependant rows has been fixed.
  • A problem with dual infeasible free variables when optimizing with dual simplex has been fixed.
  • A problem with primal cycling has been fixed.
  • The efficiency of the delayed row handling has been improved.
  • The efficiency of the branching has been improved when setting SBITERLIMIT to 0.
  • The LP reader can now handle Mosel exported files with names containing spaces which are enclosed in brackets.
  • A problem which could cause parallel MIP to not be threadsafe has been fixed.
  • XPRSgetlasterror now returns more informative messages when readprob fails.
  • Improved performance when adding many names singularly.
  • A problem with certain types of models within parallel MIP has been fixed.
  • A problem with spare rows/columns has been fixed.
Xpress-Mosel 2.2.1

Runtime Library
  • 'exportprob' adds the 'OBJSENSE' section in MPS files when EP_MAX is used.
  • 'exportprob' now generates names according to the 'strip' option even if names are already available.
  • A problem with the handling of line termination on Windows has been fixed.
Compiler Library
  • Module types used in packages are now always public.
Module mmoci
  • Parameter OCIcolsize is no longer limited to 1024.
Module mmodbc
  • Parameter 'SQLcolsize' is no longer limited to 1024.
  • Excel IO driver: select the "used range" when specifying a sheet name only (used to select [A1:A1]).
  • Excel IO driver: it is now possible to select columns in a range using names (with 'skiph') or column numbers.
  • Excel driver: cannot initialise 1 cell of an array from a single Excel cell.
Module mmquad
  • mmquad: Added support for OBJSENSE tag in MPS files.
  • mmquad: New procedure exportprob(string,qobj) (<=> exportprob(0,string,qobj) ).
Module mmxprs
    New procedure 'defdelayedrows'. New procedure writeprob(string,string,string) to save both matrix and directives via the optimiser functions.
Xpress-BCL 3.0.6
  • Replacement of deprecated Optimizer IIS functions.
Xpress-XAD 1.1.3
  • New XAD_EVENT_MOUSE_LEFTDBLCLK and XAD_EVENT_MOUSE_RIGHTDBLCLK added.
  • Better downscaling algorithm results in improved image quality when shrinking images.
Xpress-SLP 1.38
  • XSLP_UNCONVERGED now returns -1 prior to the beginning of the solve.




New in Release 2007B


Xpress-Tuner 1.0.0 BETA
Xpress-Optimizer 18.10.00
  • The MIP code has been significantly improved to give a large increase in performance over 2007A on our benchmark test set.
  • The diving heuristic has been rewritten to improve speed and performance.
  • The heuristics now give better solutions for MIQP problems.
  • It is no longer necessary to reserve space for cuts before loading or building a MIP problem.
  • The MPS reader now recognises the OBJSENSE and OBJNAME sections.
  • SOS sets can now contain variables with negative lower bounds.
  • XPRSreadbasis and XPRSwritebasis can now handle super basic variables The stability of the barrier algorithm has been improved
  • The IIS functionality has been rewritten. There is a new IIS console function and the following new XPRS functions:
    XPRSgetiisdata
    XPRSiiswrite
    XPRSiisall
    XPRSiisnext
    XPRSiisclear
    XPRSiisisolations
    XPRSiisstatus

    Please see the documentation for more information.
  • A new utility for repairing infeasibility has been added. This can be accessed by calling the REPAIRINFEAS console function or by calling the XPRSrepairinfeas XPRSrepairweightedinfeas functions.
  • Variable names are no longer required to have a fixed length and all calls to the XPRSgetnames function should be replaced by calls to the new XPRSgetnamelist function. XPRSgetnames will be removed in future releases.
  • A new XPRSwritedirs function has been added which writes out the directives that are currently loaded into the problem.
  • The XPRSpresolvecut function has been replaced by the XPRSpresolverow function which will presolve rows when eliminations have been performed by the presolve.
  • A MIP solution can now be written out to an ASCII file and read back in with the XPRSwriteslxsol and XPRSreadslxsol functions. Corresponding console functions also exist.
  • Delayed rows can now be loaded with the XPRSloaddelayedrows function. Delayed rows need not be redundant at a MIP solution and violated delayed rows will always be checked for before declaring a solution to be MIP feasible. Model cuts which must be satisified at any MIP solution can still be loaded with the XPRSloadmodelcuts function
  • The following new controls have been added:
    ROOTPRESOLVE
    HEURSEARCHEFFORT
    HEURSEARCHTREESELECT
    HEURSEARCHROOTSELECT
    HEURSEARCHFREQ
    CUTSELECT
    TREECUTSELECT
    PENALTYVALUE

    Please see the documentation for more information.
Xpress-Mosel 2.2.0

See docs/mosel/upgrade.pdf for details on upgrading Mosel models from 1.6.x to 2.2.0 compatibility.

Mosel Language
  • New construct 'evaluation of ' to be used in 'initialisations' block for saving expressions. For instance:
    initialisations to "mydata.txt"
    evaluation of i+j*x.sol as "mylabel"
    end-initialisations
  • It is now possible to select the fields of a record that must be saved or read in an 'initialisations' block:
    ta:record
      i,j,k:integer
    end-record
    a:ta
    initialisations from "mydata.txt"
      a(j)          ! read only field 'j'
    end-initialisations
  • Data files and records: the [] must be used only if there are more than 1 field.
Compiler Library
  • New parser parameter "model_version".
  • Functions returning arrays can now be used as subroutine parameters.
Runtime Library
  • Windows: text files are now output with CR+LF line termination.
Native Interface
  • When applied to an array of external objects, 'setarrvalstr' initialises the cell calling 'dsotypfromstr'.
mmodbc 1.10.0
  • Support for external types (ODBC+excel).
  • Support for records (ODBC+excel).
  • Support for lists containing several types.
  • IO driver odbc: better handling of scalars when saving data.
  • IO driver odbc: new options 'colsize' and 'bufsize'.
mmsystem 1.8.2
  • New format '%N' for date conversion: month name as stated in the 'monthnames' control parameter.
mmoci 1.0.0
  • mmoci is the Mosel interface to Oracle databases. It uses OCI (Oracle Call Interface) for its operations.
Xpress-BCL 3.0.5
  • Extensive C++ documentation.
  • C++: Some new overloaded methods; 'print' method for linExp, linRel, quadExp.
Xpress-Application Developer 1.1.3
  • The canvas object can now be used without creating an interactive application. Just call XADcreatecanvas(id,WIDTH,HEIGHT), paint anything in the canvas and then use XADsavescreenshot() to save the result as a .PNG, .JPG, .BMP or .GIF format. This feature can be used in a web server to automatically generate graphics from Mosel. Check out the example "400automatic.mos" in the XAD examples folder.
  • XADmultilistsetcolname() can now be used to set column alignment.
  • The multilist object now allows rows selection.
Xpress-SLP 1.36
    Formulae for delayed constraints are now accepted in SLPDATA procedures.
  • Checking of MIP solutions for integer feasibility has been improved.
  • The calculation of analytic derivatives when the derivative is zero has been changed to match that used for numerical derivatives.




Fixed in Release 2007B


Licensing ( XPRL 2.3.3 )
  • Improved detection of hostids on HPUX.
Xpress-Optimizer 18.10.00
  • XPRSrange can now be called after XPRSobjsa.
  • The barrier iteration count is now reset when the simplex algorithms are started.
  • A problem with generating clique cuts in the tree has been fixed.
  • A problem with changing global variables into continuous variables has been fixed.
  • The MAXCUTTIME control now stops the cutting phase correctly.
  • A problem with copy problems which have model cuts has been fixed.
  • A problem with deleting columns that are SOS members has been fixed.
  • A problem with deleting columns that have quadratic objective coefficients has been fixed.
  • XPRSfixglobal will now not fix semi-continuous, partial integers and SOS members if they are not at a fixed bound in the MIP solution.
  • A problem with scaling in the XPRSbtran function has been fixed.
Xpress-Mosel 2.2.0

Compiler Library
  • Reals in constant lists with different types were not properly handled.
  • Sparc 64bit: constant strings in packages were not properly handled.
Runtime Library
  • 'write[ln]' no longer fails when trying to display an uninitialised record.
Native Interface
  • 'setfieldval' now works with all supported types.
Xpress-BCL 3.0.5
  • Corrected problem in 'delterm' when trying to remove a non-existing term.
  • Corrected problem with 0-valued coefficients in setTerm for quadExp.
  • C++: Corrected definition of getRangeL and getRangeU (was inverted).
  • Output printing: Added printing of constant objective term in "printprob". Corrected error when printing empty SOS. Correct printing of constants in Java version of XPRBlinExp.print.
Xpress-IVE 1.18.05
  • Fixed "Error adding node..." messages when running with MIPTHREADS>=2.
  • Other minor fixes.
Xpress-SLP 1.36
  • Functions which take rows as arguments are now correctly handled.
  • An error in which tolerances on individual variables could be corrupted has been corrected.
  • An error in which an incorrect solution was obtained during the MIP search has been corrected.
  • XSLPloadxvs now correctly returns a value.
  • The objective function name is now correctly output in writeprob when using scrambled output names.


New in Release 2007A


Licensing ( XPRL 2.2.7 )
  • New distributed license technology 'xpserver' included instead of 'lmgrd'
  • No need to install separated "Distributed License Attachment" for type_3 or type_4 licenses.
  • New tool 'xplicstat' to summarise current license usage
  • License file extension change to .xpr. The .ini legacy extension is still supported
Xpress-Optimizer 18.00.01
  • Presolve has been complete rewritten and is faster, especially for large models, and does more reductions.
  • Improved tightening for mixed integer models: gets better solutions and solves faster.
  • Dualization: so LP optimizers much faster on models with far more rows than columns.
  • Dual Simplex Improvements: to models where hard to get dual feasible.
  • Objective function scaling: greater robustness to some numerical problems.
  • Network Simplex: advanced feasible start.
  • MIR cut generation improved: smaller gaps or faster solve times for mixed integer problems.
  • Multiple solution storage: for users of the API.
Xpress-Mosel 2.0.0

See docs/mosel/upgrade.pdf for details on upgrading Mosel models from 1.6.x to 2.0.0 compatibility.

Mosel Language

Packages
  • Mosel models can now be compiled in parts: 'packages' are libraries written in the Model language that can be used in their binary form (bim file) just like modules (i.e. using the 'uses' statement).
    Example:
    File 'tangent.mos':
     package tangent
      public function tan(x:real):real
       returned:=sin(x)/cos(x)
      end-function
     end-package
    
    File 'mymod.mos' (requires 'tangent.bim'):
     model 'mymod'
     uses 'tangent'
     writeln(tan(1.5))
    end-model
  • new directive 'import': it can be used as a replacement for 'uses' for importing packages when compiling a package
  • new block 'requirements' allowed in packages only: requirements are symbols (variables+procedures/functions) used by the package but not defined locally. The corresponding definitions must appear in the model using the package or in another used package.
Lists
  • the new structure 'list' replaces tuples. It is now possible to declare and manipulate ordered collections of objects of a given type. Lists can be concatenated using the '+' operator; the aggregate operator 'sum' can also be used with lists
    declarations
     L=[1,2,3,4]
     LA: list of real
    end-declarations
    LL:=L+[5,6,7]+sum(i in 8..10) [i]
    Like for sets, lists keep references to the objects they contain but order of elements in lists are guaranteed (this order is defined by construction) and a given value may be stored several times in a list. However, a list cannot be used to index an array.
  • aggregate operators now accept lists as source of values for their indices For instance:
    forall(j in ['lundi','mardi','mercredi'])
     writeln(j)
  • new functions 'cuthead','cuttail','findfirst','findlast','gethead', 'gettail', 'getreverse' and procedures 'splithead', 'splittail' for list manipulation
  • 'getlast','getfirst' and 'getsize' can be applied to lists
Records
  • new structure 'record': with a record it is now possible to declare a type that encapsulates several objects:
    declarations
     complex= record
               im,re:real
              end-record
     C:complex
     lC:list of complex
    end-declarations
User-defined Type
  • user types can now be declared as an alias to a complex type. For instance:
    declarations
     myset=set of integer
     S:myset       ! <=> S:set of integer
  • any structured type (array,set,list or record) can now be used as an elementary type. For instance:
    declarations
     A:array(range) of array(1..10) of integer
     B:array(range) of set of integer
     S:set of set of real
  • user defined functions can now return any type including structured types like arrays, sets or lists.
  • improved handling of sets of external types:
    • constant sets can be initialized with objects directly (only possible with references previously):
      S:={complex(1)}
    • in a routine, a set can include local objects (which are not released after the routine terminates):
      procedure tutu
       c:=complex(1)
       S+={c}
      end-procedure
IO Operations and Data Initializations
  • initialization blocks can now be used to save/initialize any kind of sets (it was limited to sets of basic types)
  • initial index values are now indicated when executing 'initializations to' on an array indexed by ranges (it used to give no index information) For instance, saving the array 't:array(1..3) of integer' now produces "t:[(1) 0 0 0]" instead of "t:[0 0 0]"
  • it is now possible to open the same file several times
  • support for lists and records has been added to 'initializations' blocks
  • 'raw' IO driver can be used with list and records as long as they do not include structured types (e.g. it is not possible to use the 'raw' driver on a record including arrays)
Syntax
  • new suffix notation for get* and set* routines: get(x) can be written x. (e.g. getsol(x) <=> x.sol) set(x,v) can be written x.:=v (e.g. settype(c,CT_EQ) <=> c.type:=CT_EQ)
  • due to the introduction of lists, the assignment operator ':=' can no longer be used to initialize arrays. For instance, the following statement is now an error if 'a' is not a list:
    a:=[1,2,3]
  • new initialization operator '::'. It can be used to initialize arrays,lists and sets from lists
  • my_array :: [1,2,3] my_set :: [1,2,3] my_array2:: (1..3,['a','b']) [1,2,3,4,5,6]
  • parameters are now always public (use of 'public' qualifier in this section is now a syntax error)
  • all statements of a declaration block is public if the 'public' qualifier prefixes the block (e.g. 'public declarations')
  • new compiler directive 'version' to specify the version number of the file (this info is stored in the BIM file)
Constraints
  • direct assignment between constraints now preserves constraint type for instance:
    C:=x+y>=2
    D:=C
    implies a duplicate constraint in the problem
  • the constraint 'is_integer' no longer sets an upper bound on the variable (was: MAX_INT)
  • constraints generated for function parameters are not added to the problem automatically any more. Such constraints are posted to the problem if used as a statement (this used to be a no operation) or reassigned. For instance, assuming the following call:
    myproc(x+y>=5)       ! this constraint is not stored
    ...
    procedure myproc(c:linctr)
     c                   ! this adds the constraint to the problem
     c+=10               ! same effect (after addition of a constant)
  • new overloaded versions of exportprob: exportprob; exportprob(string); exportprob(integer,string); exportprob(string,linctr)
  • local mpvar are now deleted if not used at the end of the routine where they are declared
  • new matrix generator not depending on memory configuration for column ordering (=>a given model gives always the same matrix)
Miscellaneous
  • control parameter 'parser_date' uses now standard format YYYY-MM-DD
  • new control parameters 'parser_UTCdate','parser_UTCtime','UTC'
  • new functions 'currentdate','currenttime','timestamp'
  • new function 'getfname' that returns the file name associated to a stream
  • 'getfirst' and 'getlast' now produce an error when applied to an empty range
  • new procedure 'delcell' to delete a cell (or all cells) of a dynamic array
  • when a static array is implicitly created dynamic and all its indexing sets are not empty, all possible entries are automatically created (up to now, this was the case only for 'mpvar' arrays)
  • comparisons for sets of reals are done using the zero tolerance of the vima (used to be without tolerance)
  • 'create' can now be applied to any type of array
Module mmjobs 0.0.5
  • default streams of submodels are now initialised with the default streams of their father
  • writing empty data in a "shmem:" file now clears the file
Module mmodbc 1.7.1
  • new IO driver 'excel' to access directly Excel files via initialisations blocks. For instance:
    initialisations from 'mmodbc.excel:mydata.xls'
     a as "[sheet1$a1:d11]"
     b as "myrange"
    end-initialisations
Module mmsystem 1.7.0
  • new types 'date','time','datetime' with support for assignment, comparison and +/- (to evaluate durations)
  • functions for date/time manipulation: get/set{date,time,year,month,day, hour,minute,second,msec}, isvalid,getweekday,getasnumber
  • new control parameters 'datefmt','timefmt','datetimefmt'
  • new procedure 'sleep'
  • new functions 'getfsize','getftime'
  • new type 'text' with support for assignment, addition, subtraction and comparison; this type can be combined with strings and conversion are defined for all types supporting string conversion
  • new functions for text manipulation: textfmt,copytext,cuttext,deltext, pastetext,inserttext,findtext,getchar,setchar,readtextline,parseint, parsereal,parseextn,getsize
  • new control parameters 'sys_fillchar','sys_endparse'
  • new IMCI functions (for text type): gettxtsize, gettxtbuf, txtresize
  • support for lists in qsort
  • Windows: system functions are now implemented using the win32 API
Module mmxprs 1.6.0
  • improved support for Optimiser rel17 (solution file no longer required)
  • support for callbacks 'mipthread' and 'destroymt'
  • callbacks can now be used when parallel MIP is in use
  • new control parameters 'xprs_mipthreadid'
  • new value 4 for colorder (random ordering)
  • one can now select columns or rows when getting iis by passing an empty set ({}) as the corresponding argument to 'getiis'
  • new procedures 'defsecurevecs','unloadprob','savemipsol','stopoptimize'
  • new function 'loadmipsol'
  • new type 'basis' (supports assignment)
  • new procedures 'setbstat' and 'resetbasis'
  • new function 'getbstat'
  • procedure 'savebasis' and 'loadbasis' now work on object 'basis'
  • 'delbasis' has been removed
Module mmxslp 1.7.0
  • xslp_colorder can now be set to 4 (random order).
Mosel Compiler
  • public symbols are preserved even if they are not used in the model
  • empty constant lists and sets are now accepted as routine arguments
  • results of integer constant operations are converted to real in case of overflow
  • simplification of some basic Boolean expressions (e.g. 't=true' => 't')
  • constant sets of basic types (integer, real, boolean and string) are now automatically identified and named when their content is known at compile time:
    • each constant set is created once only (e.g. array(1..5,1..5) used to imply the creation of 2 sets)
    • 'exists' optimisation can be applied when constant sets are not explicitly named. For instance, the following loop: forall(i in 1..5|exists(A(i))) ... assuming "A: dynamic array(1..5)" is now optimised
    • the identification still works when mixing up named and unnamed constant sets (i.e. the compiler "sees" that the set 'R=1..5' is the same as "1..5")
  • a warning is now displayed when a version number (package or module) is truncated
Mosel console
  • support for records and arrays of arrays in the expression evaluator
  • if the model is compiled with debug information, the 'symbol' command displays the default value of parameters
  • package requirements are now listed when dumping the symbol table of a model (command 'symbols')
  • version number and used packages/modules are now displayed when getting information about a model (command 'list')
  • private symbols of packages compiled without '-s' can be accessed using 'pkgname~symbol' (in a 'print' command for instance)
Mosel Libraries
  • new functions 'time','date2jdn','jdn2date'
  • new function 'gettypeprop' to retrieve properties of a type (USR+DSO)
  • function 'gettypename' deprecated by 'gettypeprop'
  • new function 'getnextreq' for listing requirements of a package
  • new function 'getnextdep' for listing modules and packages used by a model (=dependencies)
  • new function 'getmodprop' to retrieve properties of a model
  • new function 'getdsoprop' to retrieve properties of a module
  • the default value of each parameter 'P' is now stored as '=P' in the dictionary
  • Windows: all file operations are now implemented using the win32 API (they used to rely on the C library)
  • Windows: the 'sysfd' driver now expects a file handle (as returned by the OS function CreateFile) as its parameter. However, the special values 0,1 and 2 remain the default input, output and error streams
  • the Java interface has been revised in order to support the new features of the Mosel language
  • function 'getmodinfo' deprecated: use 'getmodprop' instead
  • function 'getdsoinfo' deprecated: use 'getdsoprop' instead
  • deprecated functions 'setstdin','setstdout','setstderr' have been removed
Native Interface
  • Mosel now maintains a reference counting on the objects it manipulates:
    • for best performance modules should provide reference counting for the types they publish
    • module functions can now save references to objects securely
  • new functions 'newref'/'delref' for reference count handling
  • new functions 'getlistsize','getlisttype','getnextlistelt', 'getprevlistelt','addellist','insellist','resetlist' for lists
  • new function 'resetset' for clearing a set
  • new function 'getnextfield','getfieldval','setfieldval' for records
  • new functions 'time','date2jdn','jdn2date'
  • new functions 'dsotyptostr','dsotypfromstr','copyval'
  • when an 'integer' argument is provided for a native function defined for both 'linctr' and 'real', the version for 'real' is selected (it used to depend on the order)
  • native functions can now have a variable number of arguments: this is indicated by the last character of the signature that must be '*'. In this case the remaining arguments are passed to the function as a list (NB: as opposed to sets and arrays, lists can store different types)
  • new type function 'copy' in type definition (used in implicit assignments)
  • new type property: DTYP_RFCNT (type implements reference counting)
  • functions 'create' and 'delete' receive an extra parameter: the type order number as an integer
  • service 'reset' receives an extra parameter: the version requested as an integer
  • function for creating an instance of a new type now takes an extra parameter (void *)
Xpress-IVE 1.18.1
  • Added an expression evaluator to the debug watch window. The evaluator is also invoked when hovering the mouse over a portion of selected text
  • Mosel records and user types are fully supported in all display modes (tooltip, tree, text view)
  • The "mmive" module has two new functions: IVEdrawrectangle() and IVEdrawellipse()
  • The IVE editor corrects scoping according to language rules (do..end-do, etc.)
  • Improved editor navigation by allowing jumps at the same scope level
  • IVE now displays the procedure/function currently being edited. This is especially useful for long subroutine definitions.
  • The code completion feature now works with identifiers of type record
  • The optimize matrix file dialog is now streamlined, allowing for simpler out-of-box operation
  • Tooltips in the IVE editor now display type icons if possible
Xpress-SLP 1.31
  • Element ranges are now included in the report from the XSLPscaling function.
Xpress-Kalis 2007.1
  • New decision variable type 'cpfloatvar' for continuous (real-valued) variables
  • New constraint relations
    • nonlinear arithmetic constraints over discrete and continuous variables
    • 'cycle' constraint (for TSP-type problems / cyclic scheduling)
    • 'cumulative' constraint (resource-constrained scheduling with renewable resources)
    • 'producer_consumer' constraint (resource-constrained scheduling with non-renewable resources)
  • New modeling objects 'cptask' and 'cpresource' for a simplified formulation of scheduling and planning problems with resource constraints
  • A solver for scheduling-type problems (started with 'cp_schedule')
  • Additional predefined search heuristics and branching schemes, particularly for sequencing and scheduling


Fixed in Release 2007A


Xpress-Optimizer 18.00.01
  • A problem with calling presolve after adding columns has been fixed
  • A problem with writing out a basis for a MIP problem has been fixed
  • A problem with solving a MIP when all rows have been removed by presolve has been fixed
  • A problem with the presolve hitting the student version size restrictions has been fixed
  • Setting the default directive on a non-integer entity no longer gives a warning
  • If a solution is loaded by a user in a callback function, MIPSTATUS is now updated correctly to inidcate that a solution has been found
  • A problem with adding sets after deleting all sets has been fixed.
  • A problem with writing out a basis to file when the problem is in a presolved state has been fixed
  • A problem with adding user cuts has been fixed
  • A problem with Valgrind reporting spurious warnings on Linux has been fixed
  • A problem with refactorizing dense matrices has been fixed
  • More file handles can now be open by user applications when using the subroutine library on 32-bit Solaris machines
  • All callbacks are now mutexed when running the parallel MIP. The mutexing can be prevented by setting MUTEXCALLBACKS to 0.
  • Cut generation has been improved for some mixed integer models.
  • The performance of the diving heuristic has been improved.
  • The separate callback is now called correctly when running the parallel MIP.
  • The MIQP search will now stop if a node is found to be unsolvable.
  • A problem with restarting the parallel MIP when no cuts have been generated at the top node has been fixed.
  • A problem with presolving MIQP problems has been fixed.
Xpress-Mosel 2.0.0

Module mmxslp 1.7.0
  • An error with nonlinear objectives which could result in a program crash has been corrected.
  • A minor correction to the determining rows (DR) handling of the SLPDATA function has been corrected.
  • Mpvars which are created but then not included in the generated problem are now ignored. Previously a spurious error message about Column -1 out of range could be produced by some functions.
Xpress-IVE 1.18.1
  • Improved caret handling after using code completion on complex structures (e.g. forall (...) do)
  • Array views are now automatically updated while debugging
  • Handling of task/resource popups in Kalis is more user friendly now.
  • Resource creation/utilization charts are more user friendly now.
Xpress-BCL 3.0.3
  • Correct use of "fgets" function pointer in "xbreadlinecb"
  • C++/Java: correct handling of linExp and quadExp with constant terms
  • Change to memory management to prevent problems with finalization order in Java.
XPRESS-SLP 1.31
  • XVs used within XVs are now handled correctly. Previously an embedded XV was only expanded if used in a formula within an XV.
  • Messages longer than 1023 characters are now truncated. Previously any such messages would overflow and could cause an unexpected error.
  • Any errors in the matrix revision during SLP iterations are now trapped and the optimization is stopped. Previously errors were not recognized, and optimization continued with an incorrect matrix.
  • Incorrect IV records in the SLPDATA section of an extended MPS format matrix are now faulted. Previously a missing field on such a record could cause a program error.
  • An error in the handling of the SLP global save file has been corrected. Previously it was possible under certain circumstances for a user file to be overwritten.
  • An error in the handling of analytic derivatives, in which signs could be reversed in separable formulae, has been corrected.
XPRESS-XAD 1.1.2
  • The multilist object now automatically aligns text to the left and numbers to the right
  • Drawing large cached images is now an order of magnitude faster


New in Release 2006B


Xpress-Optimizer 17.10.04
  • A network simplex optimizer has been added which can be called by passing the n flag to minim or maxim
  • Node re-optimization has been made more stable
  • Cache size detection now works for Intel Conroe machines
  • Node presolving has been improved for mixed integer problems
  • Heuristics have been improved for set covering/partitioning problems
  • Presolve has been improved for certain problems
  • Cutting has been improved for dense problems
  • XPRSwriteomni now reads the solution from memory
  • Three new controls have been added SBESTIMATE, HEURSEARCHFREQ and HEURDIVESPEEDUP
  • Presolve has been improved to make the presolved problem more stable
Xpress-Mosel 1.6.3


Module mmxprs 1.4.5
  • new procedure 'getinfeas'
Module mmxslp 1.6.5
  • the SLP interp() function can now be used directly in Mosel in a formula for a gexp or a constraint, or for direct interpolation of a value.
  • a real array can now be used in place of an XV where the XV consists entirely of values (no variables, formulae or names).
  • SLPloadprob can now be called with any type of gexp. Previously, only linear or quadratic objectives were supported.
  • SLPminimize and SLPmaximize can now be called without a preceding SLPloadprob. The objective function is provided as an argument to the procedure.
  • Additional flags "n" (use nonlinear solver even if objective is quadratic) and "g" (perform SLPglobal after the linear optimization) are now accepted by SLPmaximize and SLPminimize.
  • New procedures setinitval, clearinitvals and copysoltoinit have been provided.
  • setintcontrol and related functions can now take a parameter name as well as a value.
  • Error messages can now be printed to the same stream as information messages (previously they were in separate streams and could appear out of order).
Xpress-BCL 3.0.2
  • BCL .NET interface with C# examples
  • New flag 'n' for network simplex optimization.
Xpress-IVE 1.17.12
  • Added support for the network simplex algorithm in the Optimizer dialog.
  • Matrix visualization now includes scaling information (in a separate tab).
  • The sketch view of the matrix can now be exported to HMTL by right clicking in the sketch view.
  • The module list dialog displays any errors encountered while loading Mosel modules.
  • A new Gantt chart/statistics dashboard is available for users of Xpress-Kalis.
  • Xpress-Kalis types are now recognized as such by IVE.
Xpress-SLP 1.28


Console
  • The console command file xslp.cmm can now include version-specific commands for both Xpress-SLP and the Optimizer (previously, only Optimizer commands could be version-specific).
  • New console command types (masked and "unsupported in this version") are included.
  • Command definitions of the form "int *int1" as well as "int* int1" are now accepted.
Library
  • Additional scaling options (every n iterations, or every n iterations after barrier) have been included.
  • New function XSLPsetdefaultcontrol resets a single control to its default value.
  • New functions XSLPgetparam and XSLPsetparam accept parameters by name.
Xpress-SP 1.3.5
  • Users can set the stage of a splinctr using the function spsetstage().


Fixed in Release 2006B


Xpress-Optimizer 17.10.04
  • XPRScopycontrols no longer copies PROBNAME and MATRIXNAME
  • A problem with tightening coefficients for integer variables has been fixed
  • Fixglobal now reverts to a slack basis to avoid basic MIP variables
  • Problem with XPRSgetscaledinfeas has been fixed
  • MAXTIME is observed correctly if exceeded during the heuristics
  • An invalid SOS member in an MPS file no longer causes all other SOS members on the same line to be skipped
  • The maximum line length for LP files has been increased to 2048
  • Model cuts are no longer used to derive bound redundancy during presolve
  • A problem with functions using the factorization after XPRSwritebasis has been fixed
  • A problem with running out of factorization space in the dual simplex has been fixed
  • The BACKTRACK control is observed correctly when NODESELECTION is set to 4
  • A problem with tidying up after the parallel MIP search has completed has been fixed
  • OBJVAL is now returned correctly when obtained from a MIP callback function
  • A problem when all spare rows are used up by XPRSaddrows has been fixed
  • Empty rows and columns can now be added with XPRSaddrows and XPRSaddcols
  • A problem with resizing in the tree search when MIPLOG is set to 1 or 2 has been fixed
  • Optimization will now stop if presolve runs out of memory
Xpress-Mosel 1.6.3


Compiler Library
  • included files terminating with a line ending with '!' (and no end of line) are now properly handled
  • 'elif' statements are now properly recorded in the debug information of the bim file
Runtime Library
  • the expression '|exists(a(i)) and exists(b(i))' no longer accepts invalid indices when the loop is optimised and 'b' is empty
  • under certain conditions a model may fail to start after an IO error occurred during a preceding run
  • a potential memory corruption has been fixed in the set finalizer
  • a potential memory corruption has been fixed in the 'mem' IO driver
Module mmodbc 1.6.3
  • a potential memory corruption has been fixed on Windows 64bit
Module mmxprs 1.4.5
  • a data corruption has been fixed in the presolving of user cuts
Module mmxslp 1.6.5
  • SLPsetcallback with an empty name now clears the corresponding callback function.
  • An unidentified name in SLPcalluserfunc is now trapped and faulted.
  • An XV containing mpvars is now correctly handled by SLPloadprob. Previously, the first load worked correctly but subsequent loads in the same program execution could store incorrect references.
  • An xvitem formula X+C where X is a variable and C is a constant is now correctly passed to the optimizer. Previously, the constant term was lost. This error appeared in release 2006A after some efficiency improvements, and is not in earlier releases.
Xpress-BCL 3.0.2
  • Replace calls to deprecated Optimizer functions.
Xpress-IVE 1.17.12
  • Warnings from unlicensed Mosel modules are no longer displayed at startup.
  • In some cases, error messages displayed by user modules upon unloading would cause IVE to hang. This has been fixed.
  • Zero length arrows drawn using IVEdrawarrow no longer appear as a line to infinity.
  • All Xpress-Optimizer control parameters are now available in the Optimizer dialog.
  • The IVE editor no longer inadvertently switches to regexp searching after examining a Mosel array.
Xpress-SLP 1.28


Console
  • Overflow of the memory for storing commands is now detected and the program stops.
Library
  • If the barrier optimization is unfinished, then primal simplex will be used to continue the optimization (previously, this only happened if the problem was quadratic).
  • Step bound estimates have been revised so that the estimate is not reduced if the movement increases but the direction changes.
  • The error message output when an index is out of range has been improved and now includes the type of item as well as the index.
  • Step bounds are now relaxed or fixed as appropriate when XSLPglobal is called without a preceding relaxed optimization (previously, any bound settings were retained from whatever had gone before).
  • Step bound status is now saved with information about integer solutions (previously, some bounds were incorrectly restored at the optimal node).
  • MIP solutions obtained by non-LP methods (e.g. heuristics) during MISLP are now obtained correctly (previously, if a heuristic solution was found during MISLP the solution was not recovered).
  • If optimization stops when the extended convergence continuation test fails, the better of the current and saved solutions will be restored (previously, the saved solution was always restored).
  • The test for the best extended convergence continuation solution has been corrected (previously it was possible for a later and better solution to be ignored).
  • Single-valued user functions can now be used with the return array argument (previously this combination could cause the program to crash).
  • All columns in the QUADOBJ section are now checked for existence in the COLUMNS section during XSLPwriteprob and SLPexportprob (previously, only the first column in each record was checked properly).
Xpress-SP 1.3.5
  • Bug fixes related to generation of SMPS format files.
  • Problem is reset when spsetstages() is called more than once.


New in Release 2006A


Xpress-Optimizer 17.01.00
  • The solution file is no longer created automatically. The solution file has to be created manually with the XPRSwritebinsol function and can be re-loaded into memory with the XPRSreadbinsol function.
  • The Xpress console has been re-written. Changes and improvements include:
    • Tab completion.
    • Improved help with the 'help' command.
    • Dynamically linked to the Optimizer library.
    • Cannot specify the problem name as the first line of an input file passed to the optimizer with the @filename command line syntax. Use "probname=" instead.
    • Access to the shell commands of the host operating system e.g cd, dir.
    • Implemented as a TCL shell ( new dependency on tcl84.dll for Windows platforms )
  • The parallel MIP code will now generate in-tree cuts. The new SHAREMATRIX control can be set to 1 to produce the behaviour of the old code.
  • A new XPRSpostsolve function has been added which allows MIPs and LPs in a presolve state to be returned to their original unpresolved state.
  • A new XPRSgetmipsol function has been added which allows the primal values of the last found MIP solution to be obtained. It is no longer necessary to use the integer solution callback when the solution file is turned off.
  • A new XPRSgetlpsol function has been added which allows primal and dual values for the current LP solution in memory to be obtained. The old XPRSgetsol which used to read from memory and from the solution file is now obsolete and should be replaced with calls to XPRSgetlpsol.
  • A new XPRSloadmipsol function has been added which allows a previously found MIP solution to be loaded into Xpress.
  • A new XPRSinterrupt function has been added which can be called from an Xpress callback function to stop the optimization process
  • A new XPRSgetcoef function has been added which allows the value of a single matrix coefficient to be obtained
  • The cut manager has been changed to work with the parallel code. As a result all XPRS functions which return a list of cuts now return a list of pointers to XPRScut structures.
  • Xpress can now handle unbounded integers and will no longer bound them by the size of the maximum integer
  • The barrier algorithm has been improved for some large problems
  • The speed of the factorization has been improved giving improved performance for the primal and dual algorithms
  • The presolve has been improved giving better performance for some MIP problems
  • The heuristics have been improved giving better solutions on some problems. A feasibility pump heuristic has also been added which can be activated by setting HEURSELECT to 127
  • The diving heuristics now work on MIQP problems
  • The XPRS_IIS attribute has been renamed to XPRS_NUMIIS
  • A XPRS_DUALIZE control has been added which allows the problem to be dualized when solving with the barrier algorithm
  • The XPRSgetbasis and XPRSloadbasis functions now have a status of 3 to indicate that a variable is super-basic.
  • The MIP performance has been improved with an average 20% speed improvement on our benchmark test set
  • The controls CPKEEPALLCUTS, CPMAXCUTS, CPMAXELEMS and REL10STYLE have been removed.
  • The control OLDNAMES is no longer supported
  • The attribute OBJFIXED has been removed
  • A new XPRSsetdefaultcontrol function has been added which can be used to set a single control back to its default value.
  • New XPRSaddsets and XPRSdelsets functions have been added which allow special ordered sets to be added and deleted. New controls EXTRASETS and EXTRASETELEMS have been added together with new attributes SPARESETS and SPARESETELEMS.
  • XPRSwriteprtsol/WRITEPRTSOL now takes additional arguments specifying filename and flags
Xpress-Mosel 1.6.2


Java interface
  • new constructor 'XPRM(String:dsopath)' to define the default dsopath before Mosel initialisation
.NET interface
  • xprmdn-helper.dll no longer required; new xprmdn-c-helper.dll needed instead
Module mmsystem 1.6.1
  • new 'setenv' procedure: environment variables set using this procedure can be accessed using 'getenv' and are available to processes started via 'openpipe' or 'system'
  • the implementation of the IO driver has been improved on Windows
  • the procedure 'system' now handles properly the output and error streams of the started program
  • this module publishes an IMCI (inter-module communication interface ) including functions setenv,getenv and system
Module mmxprs 1.4.4
  • support for Optimizer 17.0
  • control parameter 'xprs_iis' renamed 'xprs_numiis'
  • new control parameter 'xprs_dualize'
  • control parameters cpkeepallcuts, cpmaxcuts, cpmaxelems, objfixed and rel10style have been removed
Module mmxslp 1.6.0
  • SLPvalidate procedure for validating an SLP solution
  • SLPsetuserfuncaddress now accepts a string of hexadecimal characters for the address
  • Some common arithmetic operations within formulae (such as "+0" or "*1") are identified and simplified
Module mmodbc 1.6.2
  • a message is now displayed when 'SQLDisconnect' is called and SQLdebug is enabled
Xpress-BCL 3.0.1
  • New matrix generator (the order of columns now is fixed by default, setcolorder may still be used to switch to a different ordering).
  • New Java interface replacing error handling in C by Java exceptions. BCL Java now needs to be initialized explicitly by creating a new instance of XPRB before any problem is created. The XPRBprob(String name) constructor is replaced by method XPRB.newProb(String name). Certain methods (mainly set...) that previously returned 'int' now are of type 'void'. Furthermore, the Xpress-Optimizer problem can now be accessed directly. The following change is required for existing BCL Java programs to work with this version:
    
      Initialization with previous versions:
          XPRBprob prob;
          prob = new XPRBprob("myproblem");
    
      Initialization now:
          XPRB bcl;
          XPRBprob prob;
    
          bcl = new XPRB();
          prob = bcl.newProb("myproblem");
      
  • Summary of changes to the Java interface:
    • new classes XPRBlicense, XPRBerror, XPRBlicenseError, and XPRBcut
    • removed XPRB.init(), replaced by constructor XPRB()
    • replaced constructor XPRBprob(String name) by XPRB.newProb(String name)
    • new XPRB/XPRBprob method setOutputStream for handling of output streams
    • return type changed from int to void: XPRB: setMsgLevel, setRealFmt, setColOrder XPRBctr: setType, setRange, setModCut, setTerm, addTerm, delTerm XPRBprob: setMsgLevel, setRealFmt, setColOrder, setObj, loadBasis, setSense, exportProb, writeDir, loadMat, solve, minim, maxim, sync, setDictionarySize XPRBsos: setDir, addElement, delElement XPRBvar: setType, setUB, setLB, setLim, fix, setDir
    • new XPRBprob methods getXPRSprob, setCutMode, newCut, addCuts, reset
    • new XPRBctr method getAct
    • new XPRBlinExp methods getSol, setTerm, delTerm
    • new XPRBquadExp methods setTerm, delTerm
  • Details of new functionality of the Java interface:
    • Redirection of output streams (XPRB/XPRBprob method setOutputStream), see example Java/UGExpl/xbexpl3.java.
    • The Java interface now also handles OEM licensing (new class XPRBlicense).
    • Direct access to the Xpress-Optimizer problem from BCL Java: accessed via XPRBprob.getXPRSprob(); the Xpress-Optimizer Java needs to be initialized with XPRS.init() before the Optimizer problem is accessed. See examples Java/UGExpl/xbcontr1.java and xbcontr2.java. The methods for setting and getting Optimizer parameters from BCL are deprecated.
    • The garbage collector is now started automatically if BCL (not the Optimizer!) runs out of memory; with multiple problem runs forcing garbage collection may still be necessary to clear up the Optimizer problem, or alternatively, use XPRBprob.reset().
    • New method XPRBlinExp.getSol() (Java only), new methods setTerm/delTerm for linExp and quadExp (in C++ and Java)
  • Documentation of the cut functionality in C and addition of the corresponding functionality in C++ and Java. Cuts have the type XPRBcut (in C++ and Java class XPRBcut), that is similar to XPRBctr but does not have a name. Instead, the user may set an integer classification value. Cuts are not stored in the BCL problem, they are immediately sent to the Optimizer problem when XPRBaddcuts (XPRBprob.addCuts) is called.
  • New function XPRBgetact (C++/Java: XPRBctr.getAct()) to retrieve the activity value of a linear constraint.
  • Function XPRBresetprob (C++/Java method XPRBprob.reset) to free solution information and delete the Optimizer problem
  • New examples:
    • Goal Programming: */AdvExpl/xbgoalobj.*
    • Using the cut functions: */AdvExpl/xbelsc.* and */UGExpl/xbcutex.*
    • Accessing Xpress-Optimizer from Java: Java/UGExpl/xbcontr*.java
    • Java initialization, error handling, output stream redirection: Java/UGExpl/xbexpl3.java
Xpress-IVE 1.17.04
  • XP look and feel in Windows XP
  • Table-based view for Mosel arrays with enhanced search capabilities
  • Save or copy to clipboard in CSV format, for Excel, etc.
  • IVE editor can save an HTML version with color syntax preserved, for any known file type
  • A new sorted list of entities complements the existing entity tree
  • Quick access history of most recently examined entities
  • Maintains history of locations where editing took place, allowing navigation between 'hotspots' in the Mosel model
  • Right click in editor to quickly find all occurrences of a word
  • New models start off with a template
  • Warning from Mosel modules are shown at startup
  • Load and examine matrices without starting the Optimizer
  • Displays properties for types in Mosel modules
Xpress-SP 1.3.2
  • Xpress-SP is now integrated into the XpressMP suite.
  • Xpress-SP is a Stochastic Programming tool for solving optimization problems involving uncertainty. Xpress-SP can be used to model and solve problems occuring in Supply Chain Management, Energy, Finance, Transportation, etc., by building uncertainty into the optimization problem in order to hedge against future variability. By assimilating uncertainty into the optimization process, Xpress-SP enables superior management of resources by eliminating the overhead costs of conservative planning, reducing penalties for unmet targets, and achieving higher service levels and profits.
  • Two stage and multi-stage stochastic mixed integer linear programs.
  • Chance constraints.
  • Non-linear random expressions and break functions.
  • Independent and joint distributions.
  • Automatic and user-defined scenario trees.
  • Aggregation and deletion of scenarios.
  • Full integration with Xpress-IVE for visualization, analysis and debugging.
  • Evaluation of stochastic entities in the scenario tree.
  • Distribution function plotting for user defined expressions.
  • Functions for extracting instance of problem in a scenario or at a node in a scenario tree.
  • Functions for exporting stochastic problem in SMPS format and other formats.
Xpress-SLP 1.23
  • New function XSLPsaveas which saves to named .svf and .svx.
  • New integer attribute XSLP_DELTAS which has the number of delta vectors created in the augmentation.
  • New function XSLPgetptrattribute which returns the address (reference) for some of the SLP problem pointers.
  • A new method of calculating analytic derivatives is included which can be very much faster than the previous method (or numerical derivatives) for some common types of formula.
  • User-definable precision with the "p" flag is now accepted in XSLPwriteprob.
  • Memory control parameters can now be accessed in formulae by using the internal function PARAM.
  • New integer control parameter XSLP_SAVEALL allows repeated saving of the problem as a matrix+basis or as a save file at each SLP iteration.
  • By default, the problem is now rescaled before the second SLP iteration as well as the first, to reduce problems with poor initial estimates.
  • Optimizer controls and attributes can now be set or accessed through the corresponding XSLPxxxxxxcontrol and XSLPxxxxxxattribute functions.
Xpress-XAD 1.1.0
  • Take a screenshot or quickly print any XAD window by selecting the option from its system menu (Alt+Spacebar).
  • Take a screenshot of any XAD object from Mosel using XADsavescreenshot().
  • New objects: droplist, tree, scroll bars.
  • New function automatically generates ids for objects: XADid().
  • Canvas can draw elliptical pie charts, chords and arcs.
  • Multilists are sortable by clicking on the column name. No coding is necessary.
  • Virtual multilists use callbacks to retrieve cell data. Good for large and or/dynamic lists.
  • Windows can have menus. See XADwindowaddmenu().
  • XADchoosefile() now supports file extensions.
  • Canvas supports antialiasing to smooth text and graphics appearance("xad_highquality").
  • In high quality mode, canvas supports transparency levels for any drawing primitive ("xad_transparency").
  • Many other minor improvements.


Fixed in Release 2006A


Xpress-Optimizer 17.01.00
  • The java interface library javaxprs.dll (or libjavaxprs.so) can now only be used with corresponding xprs.jar
  • The java interface now correctly copies callbacks from master XPRSprob objects onto slave XPRSprobs created by multithreading optimizer.
  • The .NET interface no longer fails if you set a callback then set the same callback to something else
Xpress-Mosel 1.6.2

Compiler Library
  • unary constraints applied to set members are now properly compiled
Runtime Library
  • on AIX, Mosel can now read bim files coming from architectures with different byte ordering
  • large negative numbers are now properly interpreted in initialisation blocks
  • on "Big Endian" architectures (e.g. Sparc, rs6000) values of dynamic arrays of Booleans are now properly stored
Java interface
  • an error causing an application failure when the XPRM object is finalized before the last XPRMModel object has been fixed
  • 'null' used as the parameter string is now properly handled
Module mmodbc 1.6.2
  • mmodbc functions now check the validity of their input parameters
  • SQLupdate now ignores undefined dynamic array entries
  • positioned updates/deletes now complete even if some rows cannot be found
Xpress-BCL 3.0.0
  • New meaning of values for msglevel in XPRBsetmsglevel (C++/Java: XPRB/XPRBprob method setMsgLevel):
    0 no output, as before
    1 only print errors (no other Optimizer output)
    2 print errors and warnings (no other Optimizer output)
    3 errors and warnings + Optimizer log (new default value)
    4 all output
  • Correct memory management for Java.
  • Correct default values for pseudo costs in MIP directives.
  • It is now possible to work with several instances of XPRB under Java.
Xpress-IVE 1.17.04
  • Debugger steps in and out of included files correctly
  • IVE is now large address aware
  • Stopping Mosel and the Optimizer is now quick and effective
  • When printing, an extra page is no longer appended
  • Other minor fixes.
Xpress-SLP 1.23
  • NULL is now accepted for unwanted arguments in XSLPgetversion, XSLPgetcoef and XSLPpreparseformula.
  • XSLPcopycontrols and XSLPcopycallbacks both identify where the new and old problem are the same, and produce an error message.
  • XSLPscaling can now be used on a linear problem without augmentation.
  • A second attempt to perform augmentation through XSLPconstruct is no longer an error. The message is now a warning and execution will continue.
  • Error messages from the OLE interface to user functions (principally Excel spreadsheets and macros) now include the error code from OLE.
  • XSLP_VALIDATIONINDEX_A and XSLP_VALIDATIONINDEX_R are now regarded as double attributes and not controls. For compatibility with earlier versions, XSLPgetdblcontrol will still return the correct results.
  • XSLPgetintcontrol will return the current value of the memory allocation if called with a memory control parameter (instead of returning the initial value).
  • XSLPrevise now accepts bounds of type FR
  • A memory leak in MISLP has been fixed. Previously, if an integer solution was found that was not the best, some memory was incorrectly retained.
Xpress-XAD 1.1.0
  • Wrong parameters / uninitialized objects no longer cause crashes


New in Release 2005B


Xpress-Mosel 1.6.1

Compiler Library
  • a breakpoint marker is now inserted before the condition of 'repeat' and 'while' loops: this enables profiling of conditions in these loops
Module mmxprs 1.4.3
  • 'setcallback' now supports the 'cutlog callback'
  • deprecated callback 'topcutmgr' has been removed
Xpress-IVE 1.16.20

  • Enhanced conditional breakpoints in IVE debugger.
Xpress-SLP 1.21

  • XSLPcalluserfunc now checks that all the arguments required by the function have been supplied and produces an error if there are incompatibilities.
Module mmxslp 1.4.1
  • SLPcalluserfunc arguments can now be arrays with arbitrary types of index set. Previously only ranges of the form 1..n were accepted.
  • User function type "M" (multi-valued) is now accepted in SLPDATA functions.


Fixed in Release 2005B


Xpress-Optimizer 16.10.02
  • Inaccurate reduced costs are handled better in primal
  • Unbounded semi-continuous variables are handled in this version
  • A problem with cut scaling has been fixed
  • A problem with resizing during factorizing has been fixed
  • The correct MIP status is returned if the LP solve is interrupted
  • Empty rows are now ignored when deciding whether to call heuristics
  • A problem with loading directives from file for a problem built in memory has been fixed
  • A problem with user added cuts has been fixed
  • Solution path stability has been improved under Linux
  • A 2GB limit on the barrier factorization size has been removed
  • The stability of the solution of QP problems with the barrier has been improved
  • A problem with zero size factorizations in the barrier has been fixed
  • A problem with presolving semi-continuous variables has been fixed
  • A problem with re-optimizing with barrier in the tree search has been fixed
.NET interface
  • Removed obsolete MaxSlave control
Java interface
  • XPRSprob no longer declared final and now has extra constructor functions.
Xpress-Mosel 1.6.0

Compiler library
  • a problem has been fixed in the compilation of subroutine calls
  • constant set definition of type 'S=T' does not finalise any more the original set (i.e. for the constant 'S=T', T remains unchanged)
Runtime library
  • 'in' operator is now correct even if applied to a range set including MAX_INT
  • the module manager controls now whether module version numbers are not overflowing
Profiler
  • the profiler now computes properly the time spent in conditions of repeat/while loops
Java interface
  • classes XPRMArrayOfBooleans and XPRMSetOfBooleans are not missing any more in xprm.jar
Module mmxprs 1.4.3
  • a potential crash when an empty string is passed to a function expecting a file name has been fixed
  • a problem has been fixed in the management of basis when constraints or variables are removed between save and load of a basis
  • the default value for pseudo costs in directives is now the value of the control parameter XPRS_PSEUDOCOST (was 0)
  • trying to modify the optimizer problem from a callback now implies an error
Module mmodbc 1.6.1
  • a potential problem in the computation of buffer sizes on 64bit platforms has been fixed
Module mmjobs 1.0.1
  • terminating a model with a call to 'run' does not lead to a crash any more
.NET interface 1.0.3
  • OEM Licensing functions now correctly declared static, so it's possible to call them.
  • Better handling of licensing errors
  • Model parameters now return 'true' for IsReadable and IsWriteable properties
  • No longer crashes when accessing IoDriver.Module property for IO drivers that aren't supplied by modules.
  • XPRM.IODrivers property now works as expected.
  • Gives better compilation errors when compiling a Mosel source file.
  • More effecient garbage-collection when model is explicitely disposed
Xpress-IVE 1.16.20

  • Optimizer dialog is laid out correctly regardless of font size.
  • Better error reporting when setting strategies in Optimizer dialog.
  • Syntax errors are now always correctly matched with files.
  • Fixed debugger functionality with respect to included files.
  • All editor properties are now saved
  • Multiple other fixes and updates
Xpress-SLP 1.21

  • Derivatives provided by an Excel spreadsheet user function are now recovered and stored in the correct order. Previously they were transposed and did not work correctly if the function was also multi-valued.
  • The callback set by XSLPsetcbslpdestroy is now called whenever an SLP problem is destroyed. Previously it was only called if user functions were defined.
  • User-specified multi-valued functions are now recognized as such. Previously only functions identified as multi-valued by the system were accepted.
  • Multi-valued functions called by XSLPcalluserfunc now return the correct values. Previously some values could be lost, and occasional memory corruption could occur.
  • Functions called by XSLPcalluserfunc could receive incorrect arguments if not all possible arguments were required. This has now been corrected, and function declarations of the form "DOUBLE,INTEGER,,,,DOUBLE" now work correctly.
Module mmxslp 1.4.1
  • SLP solution functions can now access a purely linear problem. Previously, zeroes were returned unless the problem had some SLP component.
  • A memory leak from assignments to xvitems has been corrected.
  • Intermittent memory corruption during SLPloadprob has been corrected.
  • Multi-valued functions called from SLPcalluserfunc now return the correct number of results.
  • Calculation of space required for multi-dimensional XVs has been corrected. Previously an XV requiring more than 1000 entries could cause a crash.


New in Release 2005A


Xpress-Optimizer 16.01.02
  • The dual pricing algorithm has been improved. For some difficult LP problems this has resulted in an order of magnitude speed improvement.
  • The speed and stability of the simplex factorization has been improved.
  • The barrier algorithm now requires less memory.
  • The cut generation has been improved.
Java Interface
  • StringHolder/IntHolder/DoubleHolder classes now implement toString()
Xpress-Mosel 1.6.0

This release introduces the Mosel debugger interface: it makes possible execution of a Mosel model statement after statement and gives access to the value of local symbols. The command line interpreter provides now a proper debugger built on this interface. In addition to the debugger the command 'display' has been replaced by the command 'print': this is an expression evaluator. For instance it can handle something like:

print round(getsol(x(1,1)))+getact(C1)

Mosel Console
  • 'delete' command renamed 'unload'
  • 'display' command replaced by 'print': this new command supports arithmetic (on reals) and logical expressions.
    Function supported are: getparam, ceil, floor, round, abs, getsol, getsize, getrcost, getdual, getslack, getact.
    Some functions can be applied to arrays, for instance with 'x' being an array of mpvar:
    • print x : displays address values of each variable of x
    • print getsol(x) : displays solution values of variables in x
    • print getrcost(x) : displays reduced cost of variables in x
    Output of this command is compatible with the data file format of Mosel and can be appended to a file using operator '>>' (e.g. print getsol(x) >> mysol.txt )
  • command 'compile': new option '-G' to include tracing information in the bim file
  • new command 'option' to change options 'realfmt' and 'zerotol': their use is similar to the corresponding Vima parameters.
    The first one is now used as the format to display real numbers. The second one is employed in comparison between numbers when evaluating an expression, it is also used to check whether a value is to be considered as 0 when displaying numbers.
  • new command 'debug' to start execution of the model from the debugger. This command requires that the model has been compiled with option '-G'. In this mode, the command line interpreter accepts a different set of commands:
    • bcondition bk [cond]: Set (or unset) a condition on the specified breakpoint.
    • break [fctname]|[line [file]]: Set a breakpoint at the specified location.
    • breakpoints: List all breakpoints.
    • continue: Continue execution.
    • delete [bkn]: Delete specified breakpoint (0 for all).
    • display expression: Store an expression to be displayed at each interruption.
    • down [nblevel]: Go down in the stack (nblevel times).
    • exportprob [-pms] [filename [objective]]: Show the last generated matrix.
    • info symbol: Symbol information.
    • list [[start] nblines]: List 10 lines from the current location.
    • next [line [file]]: Continue to next statement (skiping function calls) or to teh specified location.
    • option name [[=]value]: View or change interpreter options
    • print expression: Display the value of a given expression.
    • quit: Terminate the debug session.
    • step: Continue to next statement (including in function calls).
    • undisplay [disp]: Remove from display list the provided line or all lines.
    • up [nblevel]: Go up in the stack (nblevel times).
    • where: Display call stack.
  • new command 'profile' to profile execution of a model (compiled with -G) When run with a model which source file is 'm.mos', after execution this command generates 'm.mos.prof'. In front of each line of the model is reported: number of times the line has been executed, how much time has been spent (or percentage of total time is option -p is used) on the statement and elapsed time before the statement was last executed
  • parameters passed to 'run', 'exec', 'system' and 'debug' do not need any more to be quoted if they contain spaces
Runtime Library
  • ** New .NET interface
  • new IO driver 'null': no ouput for writing and empty file for reading
  • new IO driver 'tee': to duplicate an output stream (e.g. the following file opens log1, log2 and send a copy to the console: 'tee:log1&log2&')
  • mem IO driver used with named blocks now accepts an initial amount of memory (e.g. "mem:tutu/2048")
  • new set finalisation mechanism that improves efficiency of access of set elements (used for instance when saving a dynamic array)
  • read errors (when using 'readln' for instance) are not displayed any more if the file is open in silent mode
  • generated names (for exportprob or loadnames for instance) now include local names available when the procedure is executed (model must have been compiled with -G). Local symbols hiding global symbols are prefixed by character '~'
  • new functions of the debugger API: dbg_runmod, dbg_getnblndx, dbg_getlocation, dbg_findproclndx, dbg_setstacklev, dbg_clearbrkp
  • 'getdsoparam' returns ViMa parameter values (like 'realfmt') if the library pointer is NULL (it used to fail in this case)
  • 'getnextdsoparam' returns ViMa parameters (like 'realfmt') if the library pointer is NULL (it used to fail in this case)
  • 'findident' returns local symbols when used from the debugger
  • modification of the ViMa in order to not duplicate the execution context of a module during execution
Compiler Library
  • ** New .NET interface
  • new option '-G' to include tracing information in the bim file
  • preprocessor directive ``#[line] n filename'' now supported by the parser. Thanks to this facility, a model preprocessed by the C preprocessor or m4 for instance can be passed directly to the Mosel compiler without loosing source location in error messages.
  • new procedure `assert(cond)' for debugging: if the condition `cond' is false, the execution terminates with an error message. Unless compiler option `keepassert' is used, these statements are automatically removed when no debugging option is in use (-g or -G).
  • new parser parameters that are evaluated at compile time and can be accessed using 'getparam': parser_line (the line being parsed), parser_file (name of file being parsed), parser_date (current date), parser_time (current time), parser_version (Mosel version)
  • simplification of some basic Boolean expressions (e.g. 't=true' => 't')
  • results of integer constant operations are converted to real in case of overflow
Java Interface
  • debugger API has been added
  • XPRM.license(int,string) deprecated: use XPRM.license(string) instead
Examples
  • new examples mmcover.java and mmcover.c: use of the debugger interface to implement a basic source coverage test tool
Native Interface
  • new service 'on exit' called when execution of the model terminates
Module mmetc 1.4.2
  • improve performance on output of sparse arrays
Module mmjobs version 1.0.0 (new module)

This module defines types Model and Event with which one can load several models from a model then run them concurrently. Synchronization mechanisms can be implemented using the provided event scheme and special IO drivers for data transfer through memory.

Module mmodbc 1.6.0
  • support for Windows 64
  • under Posix systems, can use either iODBC or unixODBC: the driver manager is now loaded at run time
  • improved performance on output of sparse arrays
Module mmsystem 1.6.0
  • new IO driver 'pipe' to use output/input of an external program as a stream
  • new procedure 'openpipe' to connect input and output streams to an external program
  • 'gettime' returns now elapsed time since the initialisation of the module (~start of execution)
  • under Posix systems, 'gettime' returns now an elapsed time (used to be CPU time)
Module mmxprs 1.4.2
  • parameter XPRS_MAXSLAVES renamed XPRS_MIPTHREADS
  • added control parameters XPRS_HEURDIVESTRATEGY, XPRS_HEURSELECT
  • remove duplicate definition of maxiis
  • 'initglobal' now called before initial LP (was: before global)


Xpress-IVE 1.16.0
  • Full Mosel debugger and profiler functionality with logging capability.
  • Support for parallel MIP.
  • Deployment wizard now works with VB.NET and C# in addition to C, Java, Visual Basic.
  • Clicking on a variable name in the column view shows its corresponding rows.
  • Color printing from the IVE editor is supported.


Xpress-SLP 1.20

  • XSLPgetversion returns the major and minor version numbers without needing to create a problem
  • New convergence test ("extended convergence continuation tolerance") to terminate optimization if no improvement is detected after convergence on extended criteria.
  • Memory areas can be dimensioned directly by using new memory control variables.
  • New function XSLPuprintmemory to report memory sizes and corresponding control variables.
  • New bit settings for XSLP_CASCADE to reset values of SLP variables which are part of a quadratic objective.
  • New option to use analytic derivatives where available instead of using numeric derivatives throughout.
  • Initial step bounds of infinity (1.0E20) are now allowed, which prevent step bounds being applied to the delta.
  • "mps" is now accepted as a default extension for extended MPS format matrix files.
Mosel module mmxslp 1.3.9
  • The settype procedure now works with genctrs. gettype now works with genctrs even if the problem has not yet been loaded.
  • gexp([array of] xvitem) is now available so that an XV can be included directly in a formula.
  • Memory areas can be dimensioned directly by using new memory control variables.
  • Single and multi-dimensional XVs can now be described in a uniform way (previously, single XVs were addressed by name and multi-dimensional XVs were addressed using the first xvitem in the array; now all can be addressed using the first xvitem).


Xpress-Application Developer 1.0.0
  • Xpress Application Developer (XAD) is an new extension of the Xpress-Mosel modeling and programming language. Xpress Application Developer extends the functionality of Mosel with a set of functions and procedures for creating standard user interfaces. As a result, Mosel can be used as a modeling and programming language for complete optimization application development, from the mathematical representation of a problem to developing the user interface.



Fixed in Release 2005A


Xpress-Optimizer 16.01.02
  • Calling XPRSgetsol from a callback during parallel MIP is now threadsafe.
  • A problem with MIP presolve has been fixed.
  • A problem with presolving bases has been fixed.
Java Interface
  • Should no longer crash when error conditions are encountered.
  • add/destroy MIP-thread callbacks now more reliable.
  • updated XPRSconstants for latest optimizer release.


Xpress-Mosel 1.6.0


Runtime Library
  • raw driver removes the first character of labels if this is not an alphabetic symbol
  • assignments of type 'T:=[true,false,...]' do not produce a general error any more
  • a problem has been fixed in the handling of sets (64bit only)
  • using 'fdelete' on a block of memory obtained from the 'mem:' driver does not corrupt memory any more
Compiler Library
  • statement 'write("")' is now ignored (instead of producing invalid code)
  • a problem has been fixed in the handling of constant conditions in sums
  • tuples used as function parameter are now properly handled
Java Interface
  • a problem has been fixed in the handling of OEM licenses in Java
VB Interface
  • Now trims trailing spaces from OEM licence pathname (facilitates use of fixed-length strings)
Module mmquad 1.2.2
  • a problem in the qexp cloner has been fixed
Module mmjava 1.0.1
  • 'jraw' does not remove the first character of labels any more


Xpress-IVE 1.16.0
  • Fixed crash related to matrix display.
  • Heuristic solutions including those found during cut generation are shown on the MIP search graphs.
  • Special ordered sets are named in the BB tree.
  • The Objective function is shown in the row view.
  • Tooltips are shown for two minutes instead of a few seconds.


Xpress-SLP 1.20

  • XSLP_OBJTOL_A and XSLP_OBJTOL_R have been renamed to XSLP_XTOL_A and XSLP_XTOL_R for consistency with other objective function tolerance tests. The old names will continue to work for the time being.
  • Changes have been made to the initial settings for MISLP so that the root node does not repeat the earlier optimization.
  • The positive and negative constituents of the XSLP_ITOL test have been re-defined based on the sign of the contribution (element * column activity) rather than the sign of the element alone.
  • XSLP_STOL tests are now carried out only when the marginal value of the constraint is less than XSLP_TOLMV.
  • Text format of XSLPwriteprob now handles empty rows, ranges and infinite lower bounds correctly. A quadratic objective is written out in its true form (not as the Q matrix). Coefficients written out using scientific format no longer have the leading digit removed.
  • SLP presolve has been rewritten. It is faster and corrects some errors in the earlier version.
Mosel module mmxslp 1.3.9
  • A genctr referenced in an SLPDATA statement but not defined in the matrix (uninitialized or hidden) is now ignored.
  • getname(genctr) now returns the correct result (previously it returned an adjacent name).
  • Excess zeroes in a formula are now removed.
  • The constant term in a quadratic objective is now accessed correctly.
  • The first row in the matrix can now be defined as an enforced constraint or determining row.
  • An error in which a function of a named gexp (e.g. F(gexp1)) overwrote the gexp has been corrected.
  • A memory leak when generating a matrix containing multi-dimensional XVs has been corrected.


Related Topics
Download software
[Home] [Contact] [Client Area] [Search] [Sitemap] [Links] [Printer Friendly]
  © 2008 Fair Isaac Corporation. All rights reserved.