RELNOTES - March 2005
Release notes for Xpress-MP 2004D - all platforms.
NOTE: Release notes for 2003-2003G are available from here.
Users of older 2003 releases should check the above notes for
a description of improvements made in subsequent 2003 releases
in addition to those listed below.
Contents
--------
New in this release
Release 2004D
1) Xpress-Optimizer 15.30.09
2) Xpress-BCL 2.6.4
Release 2004C
1) Xpress-Optimizer 15.25
2) Xpress-Mosel 1.4.1
2.1) Runtime library
2.2) Java interface
2.3) mmjava module 1.0.0
2.4) mmsystem module 1.4.1
2.5) mmxprs module 1.4.1
3) Xpress-BCL 2.6.2
4) Licensing
Release 2004B
1) Xpress-Optimizer 15.20
2) Xpress-Mosel 1.4.0
2.1) Mosel Console
2.2) Language
2.3) Compiler Library
2.4) Runtime Library
2.5) Native Interface
2.6) mmetc 1.4.0
2.7) mmodbc 1.4.0
2.8) mmquad 1.2.0
2.9) mmsystem 1.4.0
2.10) mmxprs 1.4.0
2.11) mmxslp 1.3.6
3) Xpress-IVE 1.15.01
4) Xpress-SLP 1.17
Release 2004A
1)Xpress-Optimizer 15.10
2)Xpress-BCL 2.6.0
3) Xpress-Mosel 1.2.5
3.1) Compiler Library
3.2) mmxprs module 1.2.4
4) Licensing
Fixed in this release
Release 2004D
1) Xpress-Optimizer 15.30.09
2) Xpress-BCL 2.6.4
3) Xpress-Mosel
3.1) mmxslp module 1.3.8
Release 2004C
1) Xpress-Optimizer 15.25
2) Xpress-Mosel 1.4.1
2.1) Runtime library
2.2)_Compiler library
2.3) mmetc module 1.4.1
2.4) mmxslp module 1.3.7
2.5) mmquad module 1.2.1
3) Xpress-IVE 1.15.04
4) Xpress-BCL 2.6.2
5) Xpress-SLP 1.18
Release 2004B
1) Xpress-Optimizer 15.20
2) Xpress-Mosel 1.4.0
2.1) Language
2.2) mmodbc 1.4.0
2.3) mmxprs 1.4.0
2.4) mmxslp 1.3.6
3) Xpress-IVE 1.15.01
4) Xpress-SLP 1.17
Release 2004A
1)Xpress-Optimizer 15.10
2)Xpress-BCL 2.6.0
3) Xpress-Mosel 1.2.5
3.1) Runtime Library
3.2) mmodbc module 1.2.1
3.3) mmxslp 1.2.2
3.4) Mod2Mos program 1.0.4
4) Xpress-SLP 1.15
5) Licensing
Unresolved in this release
Release 2004C
1) mmxslp module
New in this release
-------------------
-------------------
Release 2004D
-------------
1) Xpress-Optimizer 15.30.09
- The MIP code can now be run in parallel on multiprocessor
machines.
- A diving heuristic is now used to find MIP solutions.
- The barrier crossover has been improved on unstable problems.
- The presolve has been improved to make it faster and improve
the strengthening of the LP relaxation.
- A new XPRSgetmqobj function has been added for getting
multiple quadratic objective coefficients.
- New functions XPRSsetcbmipthread and XPRSsetcbdestroymt have
been added which define callbacks for the parallel MIP.
- A new integer control MIPTHREADS has been added for
controlling the number of parallel MIP threads.
- A new integer control HEURDIVESTRATEGY has been added for
controlling the diving heuristic.
- A new integer problem attribute MIPTHREADID has been added for
returning the thread ID of each MIP thread.
- The MIP log has been changed to give more information.
- The time taken to read large LP files has been reduced.
2) Xpress-BCL 2.6.4
- Retrieving IIS from Xpress-Optimizer (C and Java).
- New Optimizer parameters HEURDIVESTRATEGY, HEURSELECT;
parameter MAXSLAVE renamed to MIPTHREADS.
- Documentation: new example showing error handling with Java
Release 2004C
-------------
1) Xpress-Optimizer 15.25
- Optimizer Java interface for Unix platforms has not been
included on this CD as it is undergoing a revision.
- The barrier code is now 5% faster on average on our benchmark
LP test set
- Dual is now more stable on numerically difficult problems
where the reduced costs cannot be calculated accurately
2) Xpress-Mosel 1.4.1
2.1) Runtime library
- extension of 'raw' driver for Java support
- when defining the default output stream with 'setdefstream',
using F_OUTPUT|F_LINBUF (instead of F_OUTPUT) enables line
buffering on the stream (by default it is enabled only if
the stream is a terminal)
2.2) Java interface
- the Java interface has been entirely rewritten and now
offers the same functionlity as the C interface. Moreover it
allows exchange of data between Java and Mosel through
objects using 'initialisations' blocks as well as mapping of
Mosel streams to Java streams. This interface relies on a
new module (mmjava) and requires Java 1.4.
2.3) mmjava module 1.0.0
- This new module defines IO drivers 'java' and 'jraw' to be
used when Mosel is called from Java. Note that the module
cannot be used from outside of Java.
2.4) mmsystem module 1.4.1
- procedures 'fcopy' and 'fmove' now accept a directory as
destination file name (if both file names are using the
default driver)
2.5) mmxprs module 1.4.1
- new function 'getsensrng' for getting sensitivity ranges for
objective and RHS function coefficients
- added constants XPRS_ALG_*, XPRS_BAR_*, XPRS_LP_*,
XPRS_MIP_*, XPRS_OTH
- added control parameter XPRS_SBTHREADS
- handling of new LPSTATUS value (UNSOLVED)
3) Xpress-BCL 2.6.2
- New problem status value XPRB_LP_UNSOLVED
- BCL Java: definition of new constants
4) Licensing
- The name of the license manager log file has been changed to
xpress.log. Under Windows it will now be generated in the
folder pointed to by your TEMP environment variable, and under
UNIX in /var/tmp.
Release 2004B
-------------
1) Xpress-Optimizer 15.20
- Flow path inequalities are now generated for fixed charge
network flow structures
- Objective function and RHS Sensitivity functions (XPRSobjsa
and XPRSrhssa) have been added
- A getversion function (XPRSgetversion) has been added which
writes the current version number to a character string
- A new LPSTATUS of UNSOLVED has been added which is set
whenever a QP problem cannot be solved because it is not
semi-definite
- The efficiency of the dual has been improved when
re-optimizing long thin MIP problems
- The efficiency of strong branching has been improved
- Strong branching can now be run in parallel on multi-processor
machines
- Convergence of primal QP has been improved
2) Xpress-Mosel 1.4.0
[NOTE] See 'upgrading1_4.pdf' in /docs/mosel for guidelines on
upgrading from Mosel 1.2.x to 1.4.0
2.1) Mosel Console
- command `examine' now also displays IO drivers provided by
the module
- new command 'lsdrvs' to display available IO drivers
- command 'compile' accepts a destination file name for the bim
file as the 3rd parameter
- command 'exportprob' now displays a warning when no problem
is defined
- new command 'setstream' to set default streams
(input,output,error)
- commands 'examine' and 'symbols' now sort their output (use
option
'-u' for unsorted output)
- exit status is now:
0: normal termination
1: unrecoverable error
2: execution interrupted (ctrl-C, compilation failed...)
3: licence error
4: out of memory error
if 'run' or 'exec' is the last command performed, the
value returned is the one provided via `exit' in the model
(by default this is 0).
2.2) Language
- IO drivers:
- ':filename' : access 'filename' with OS functions (same as
before)
- 'sysfd:OS_fd': use 'OS_fd' (an integer) with OS functions
- 'cb:callbackPtr[/param]': call the function provided in
place of a file
- 'mem:addr/size[/&actualsize]': use the memory block
starting at 'addr' of size `size' as a file
- 'mem:name': allocate memory dynamically, 'name' can be
used to access the memory block again later from the
model and from the library interface
- 'raw:': used as 'initialisations from/to' filename. Each
label is interpreted as a file and data is exchanged in
binary form instead of text form (useful when combined
with 'mem' driver)
- 'initialisations from/to' blocks do not stop processing after
failure if 'ioctrl' is set to true - control parameter
'iostatus' has to be checked in this case
- after 'initialisations from', control parameter 'nbread'
reports now number of successful record read (instead of
total number of values)
- new control parameter 'readcnt': when it is 'true',
'initialisations from' blocks keep track of number of
records per label
- function 'getreadcnt(string)' returns number of records read
for given label during last 'initialisations from' block
(control parameter 'readcnt' must be set before the
block)
- 'include' compiler directive does not add file name
extension any more
- 'include' compiler directive expands environment variable
names in file names (e.g. include
"${MOSEL}/Examples/Modeling/chess.mos")
- string 'TRUE' is now accepted as the 'true' value in data
files and string conversions
- new options for 'fopen': 'F_LINBUF' (output line buffered),
'F_SILENT' (does not display error message on
open/close/read/write errors)
- assignments of type "r:={1}" and operations of type
"r:=r+{1}" and "r:=r-{1}" where 'r' is a range are now valid
(no need to express the single element set as a range e.g.
1..1)
- operators '+=' and '-=' are now supported for ranges as long
as the resulting set is still a range
- new 'range(s)' converter to translate a set of integers 's'
into a range (e.g. range({10,2,80,3}) gives {2..80})
- 'is_free' is now a constraint type that can be changed via
'settype'
- 'getsize' is now defined for linear constraints: it returns
the number of terms in the constraint (the constant term is
not counted)
2.3) Compiler Library
- 'compmod' function does not add filename extension (".mos")
to source file any more. Option 'e' has also been
removed.
- compiler expands now environment variable names in file
names it opens (see "Language" above)
- support for aggregate operators based on operators using 2
types (e.g. "sum() x" where "x+x->y" with type(x)<>type(y) )
2.4) Runtime Library
- 'closefile' selects the file that was active before the the
file being closed (was: the last open file before the file
being closed).
- in function 'loadmod', if model name is "*", a unique name
is automatically generated
- new function 'setdefstream(model,stream_code,extn_filename)'
replaces functions 'setstdin','setstdout' and 'setstderr'
(these functions are still available but deprecated).
- new function 'getnextiodrv(prev,name,module,info)' to
enumerate available drivers
- a warning is now displayed when one try to initialise an
unknown module control parameter via the runmod
function (e.g. "run mmxprs.mistake=1")
- when a version conflict is detected for a module (loading of
bim file), the error message now displays full version
information (up to now only the major release number was
displayed)
- 'exportprob' returns RT_ERROR if no problem is defined (for
instance if called before model execution) and RT_IOERR when
an error occured during writing of the file
- when exporting to MPS, change SC (SI) to continuous
(integer) if the lower bound is not 0
- improved handling of the `exists' function
- empty linear constraints are not ignored any more:
- anonymous constraints are ignored if valid (e.g. 0=0) and
produce an execution error if infeasible (e.g. 0>=1)
- named constraints are sent to the optimiser
empty type-constraints (like `is_integer') and SOS are
still ignored.
2.5) Native Interface
- function 'callproc' returns now RT_OK on success (instead of
2)
- 'exportprob' returns RT_ERROR if no problem is defined (for
instance if called before model execution) and RT_IOERR when
an error occured during writing of the file
- new function 'chkinterrupt' to check for termination from
within an NI function
- the 'reset' function of a module receives now a context
instead of a model pointer. Macro 'XPRM_GETMOD(ctx)' may be
used to retrieve the model associated to a given
context
- now functions 'dispmsg' and 'getelsetval' require a context
as their first argument
- new functions 'fgetinfo', 'fread', 'fwrite','fremove',
'fmove','fcopy'
- 'fclose' now returns an integer (0=success)
- functions 'dispmsg' and 'printf' now accept format '%r' to
display real values according to 'realfmt'
- new macros
XPRM_F_ERROR,XPRM_F_LINBUF,XPRM_F_INIT,XPRM_F_SILENT to be
used with 'fopen' and/or in iodrvs implementations
- 'tostring' function is now called again with a larger buffer
if space reserved is not big enough
- operators 'is_*' can now be overloaded for external types
2.6) mmetc 1.4.0
- switch to the DSO format of Mosel 1.4.x (error messages are
sent to model error stream)
- 'diskdata' uses now file handling functions of Mosel;
extended file names can be used for this procedure
- new IO driver 'diskdata' that supports 'initialisations'
blocks.
Statements of the form:
diskdata(ETC_IN+ETC_SPARSE,'data.csv', myArray)
can now be written:
initialisations from 'diskdata:sparse'
myArray as 'data.csv'
end-initialisations
2.7) mmodbc 1.4.0
- switch to the DSO format of Mosel 1.4.x (error messages are
sent to model error stream)
- SQLverbose is now 'true' by default
- new extended syntax:
- SQLconnect tries to build the connection string when it
receives only a file name as its parameter. For instance:
"tutu.xls" can be used in place of "DSN=Excel Files;
DBQ=tutu.xls"
- in output queries parameters '?' may be replaced by '?#'
where '#' is the parameter number (i.e. order of
parameters can be controled). This is especially useful
when writing 'update' queries. For instance: "update
mytable set datacol=?2 where ndxcol=?1"
- new control parameter 'SQLextn' (Boolean, default=true) to
enable/disable handling of extended syntax (see above)
- new control parameter 'SQLdebug' (Boolean, default=false):
when it is set to 'true', 'SQLverbose' is also enabled and
each SQL query sent to ODBC is displayed to the error
stream
- new IO driver 'odbc' that supports 'initialisations' blocks.
Statements of the form:
SQLconnect("tutu.mdb")
SQLexecute("select * from T",T)
SQLdisconnect
can now be written:
initialisations from 'odbc:tutu.mdb'
T
end-initialisations
2.8) mmquad 1.2.0
- switch to the DSO format of Mosel 1.3.3 (error messages are
sent to model error stream)
- new function 'getqexpsol' in C interface
- on POSIX systems, the environment variable TMPDIR is used
to establish the location of the temporary directory (this
is '/tmp' by default).
2.9) mmsystem 1.4.0
- switch to the DSO format of Mosel 1.4.x (error messages are
sent to model error stream)
- procedures 'fdelete' and 'fmove' now work on extended file
names
- new procedures 'fcopy','qsort'
2.10) mmxprs 1.4.0
- switch to the DSO format of Mosel 1.4.x (error messages are
sent to model error stream)
- 'setmodcut' now accepts temporary constraints and ignore
empty constraints (i.e. no term)
- synchronise with change of behaviour of 'callproc' (in
callbacks)
- new procedure 'command' to execute Optimizer commands
directly
- 'writedirs' now uses realfmt for displaying real values
- setlb/up produces an error if the optimiser function fails
- new functions 'fixglobal', 'getrange(type,var)' and
'getrange(type,ctr)'
for sensitivity analysis
- added control parameters xprs_lnpbest, xprs_lnpiterlimit,
xprs_branchchoice, xprs_sbselect
- procedures 'writebasis','readbasis','writeprob','writedirs'
and 'readdirs' do not add file name extensions any more and
support extended file names
- procedure 'savestate' now takes an extended file name as
parameter (where to save the state) and does not terminate
program any more
- new function 'getname(mpvar|linctr)' to get the name of the
object that is used in matrix files (the function works only
for objects part of the problem)
- cuts are now presolved before being added to the
cutpool/matrix
- new function 'isintegral(mpvar|set of mpvar)' to check
whether the current solution of a variable is integral
according to the settings of the optimiser
- before loading the problem, change SC (SI) to continuous
(integer) if the lower bound is not 0
- empty cuts (i.e. at most 1 constant term) are not ignored
any more but sent to the optimiser
- partial support for callback `chgbranch'
- new procedure `setucbdata' (to be called from the
`chgbranch' callback)
- control parameters xprs_cblog and xprs_problem are now
strings
- the variable name which bounds are inconsistent is displayed
if the error is detected during loading of the matrix
(verbose has to be true)
2.11) mmxslp 1.3.6
- SLP callbacks written in C or C++ can now be called from
Mosel/Xpress-SLP.
- A quadratic objective function is now accepted for SLP or
MISLP. The objective is provided in a gexp which is used as
the parameter for SLPloadprob. The barrier optimizer is
used for all SLP iterations.
- Error messages are now sent to the error stream instead of
the main message stream.
- Temporary files are now written to the system temporary
directory instead of to the current directory.
- xvitem arrays can now be any type of array, instead of
having to be dimensioned by a range set
- XV arrays (multi-dimensional xvitem arrays) are now
possible.
- New functions to obtain SLP variable status, stepbound,
convergence status and history information.
3) Xpress-IVE 1.15.01
- Integrated optimizer performance tuning aid for the "Optimize
from matrix" feature.
- 11 modeling wizards.
- 32 state of the art Mosel models.
- Further improved matrix, problem and solution visualization.
The new Sketch view.
- Significantly improved code completion: CTRL+Space, followed
by open ( in Mosel editor.
- New syntax highlighting with support for Mosel keywords AND
module-defined keywords.
- Mouse-over information tips offer much richer information on
identifiers.
- The "Text View" window now has a persistent memory of the last
50 viewed texts.
- Color printing and printing to non-default printers.
- Automatically recognizes the file type opened in the editor
(C/Basic/Java/Pascal/HTML/XML).
- NEOS submission tool for students.
- Stochastic modeling dashboard
- CP(scheduling) dashboard
4)_Xpress-SLP 1.17
- A new section for double attributes has been added. This now
includes the following items previously listed as "controls":
XSLP_OBJSENSE, XSLP_OPTTIME, XSLP_ERRORCOSTS, XSLP_OBJVAL For
compatibility, they can be referenced as either controls or
attributes.
- Controls XSLP_ERRORCOST and XSLP_DELTACOST are no longer reset
by the program when SLP iterations take place. Instead, the
new values are in the attributes XSLP_CURRENTERRORCOST and
XSLP_CURRENTDELTACOST
- New functions for supplying problem data to user functions.
- Evaluation of user functions can be controlled using the
"ExeType" parameter for the function. Options include
re-evaluation depending on amount of change in argument
values, and single- or two-sided numerical derivatives.
- User functions now have access to the problem data and to a
set of "function objects", some of which can be shared between
user functions.
- New XSLPcalluserfunc allows functions to be called directly
from applications or other functions.
- Additional callbacks for MISLP. Also "slpdestroy" callback
when a problem is destroyed.
- MISLP callbacks optnode, prenode and slpnode now terminate the
node if the callback returns a nonzero value.
- New XSLP_MAXTIME control to stop SLP or MISLP after a set time.
- New XSLP_SCALE to control scaling during SLP optimization.
- New "t" (text) option for XSLPwriteprob to produce output in
an LP-like format.
- Quadratic objectives are accepted in SLP and MISLP. The
barrier optimizer will be used for all SLP iterations.
- Additional messages reporting convergence status have been
introduced.
- Integers passed to Excel & VB are now Long
Release 2004A
-------------
1) Xpress-Optimizer 15.10
- .NET interface to Xpress-Optimizer
- A new Set covering/packing heuristic has been added
- Gziped MPS and LP files can be read with the extensions mat.z,
mps.z and lp.z
- Primal unshifting has been improved
- Creating multiple problems is now more efficient
- Duplicate column detection is now more efficient
- Stronger cuts are now generated for semi-integer variables
2) Xpress-BCL 2.6.0
- Significant speed up through new memory manager
- New functions XPRBgetctrrng(ctr,rngtype) and
XPRBgetvarrng(var,rmgtype)
(BCL C++/Java: XPRBctr.getRNG(rngtype) and
XPRBvar.getRNG(rngtype)) to get ranging information
(rngtype=XPRB_UPACT/LOACT/UUP/UDN/UCOST/LCOST last two for
variables only)
- New function XPRBsetrealfmt(prob,fmt) to set up format for
printing numbers (BCL C++/Java: XPRB.setRealFmt(fmt) and
XPRBprob.setRealFmt(fmt))
- New function XPRBwritedir(fname) to save directives into a
file (BCL C++/Java: XPRBprob.writeDir(fname))
- New function XPRBsync(prob,synctype) to synchronize BCL
(solution information or problem definition) with the
Optimizer (BCL C++/Java: XPRBprob.sync(synctype))
- The solution access functions (XPRBgetsol, XPRBgetdual, etc.)
can now also be used in Optimizer callbacks.
- BCL C++/Java: improved handling of operations involving linear
expressions
- BCL C/C++/VB: define constants XPRB_LP_OPTIMAL etc. (LP
status) and XPRB_MIP_NOT_LOADED etc. (MIP status); BCL Java:
constants are defined in class XPRB (XPRB:LP_OPTIMAL etc.)
- BCL C++: several additional overloaded versions of "newVar"
3) Xpress-Mosel 1.2.5
3.1) Compiler Library
- loop optimization on 'exists' now performed on conditions
with more than 1 'and'
3.2) mmxprs module 1.2.4
- added control parameters xprs_lnpbest, xprs_lnpiterlimit,
xprs_branchchoice, xprs_sbselect
4) Licensing
- Allow spaces in license file path.
- More descriptive error messages.
Fixed in this release
---------------------
---------------------
Release 2004D
-------------
1) Xpress-Optimizer 15.30.09
- A problem with incorrect postsolve of dual values for
duplicate columns has been fixed.
- It is no longer necessary to allow space for user cuts.
- A problem with reading incorrectly formatted LP files has been
fixed.
- Some problems with solving MIP nodes with the barrier with
crossover turned off have been fixed.
- A problem with MIP preprocessing of implied GUB structures has
been fixed.
- A problem with postsolving problems after MIPABSCUTOFF has
been set has been fixed.
- A problem with using a highly singular starting basis has been
fixed.
- A problem with handling very large negative reduced costs in
dual has been fixed.
- A problem with running heuristics on big endian machines has
been fixed.
- A problem with generating cuts for semi-continuous and partial
integer variables has been fixed.
2) Xpress-BCL 2.6.4
- Correct documentation of Java method setObj.
- Definition of constraints may now contain several constant
terms.
- Modification to types for Windows 64-bit.
3) Xpress-Mosel
3.1) mmxslp module 1.3.8
- An error which could cause a crash due to shortage of
memory when assigning large numbers of expressions to named
gexp or genctr objects has been corrected.
Release 2004C
-------------
1) Xpress-Optimizer 15.25
- IIS can no longer be called on a problem which has been
presolved
- Compressed gz files can now be read on 64-bit machines
- A barrier problem when crossover has been turned off and the
dual problem has been solved has been fixed
- A work around has been implemented for a SUN compiler problem
causing a crash in the dual algorithm
- The MAXCUTTIME control now stops the cut generation correctly
- A problem with presolving SOS2 sets has been fixed
- XPRSloadqprob can now be called with no quadratic elements
- MIP status is now set correctly if the problem is solved at
the top node
- Cache size is now determined correctly for AMD processors
- The -o flag now works for writeprob
- A problem with the heuristics for Set covering type problems
has been fixed
- A Crash in OMNIOUT has been fixed
- A problem with cycling in primal has been fixed
- A problem with the barrier code when presolve has been turned
off has been fixed
- A problem with MIP presolve resulting from the supply of a
non-optimal basis has been fixed
- The code will now continue when the cut pool runs out of space
- RScopyprob now works if all quadratic elements have been zeroed
- problem with handling singular bases has been fixed
- The global log return value will now stop a MIP search if set
at a node at which a solution has been found
- The lower bound on an continuous variable is no longer set to
zero when it is turned into an integer variable
- A problem with presolving semi-continuous quadratic variables
has been fixed
- A problem with postsolve producing invalid bases for
infeasible problems which contain fixed basic variables has
been fixed
2) Xpress-Mosel 1.4.1
2.1) Runtime Library
- a potential memory corruption has been fixed in the handling
of linear terms
- 'getnextarrtruentry' does not skip defined entries any more
when the provided indices do not correspond to an existing
entry
- a possible lock up has been fixed when the reader is
reaching an end of file while parsing a string
- Module reference count is now correct when using a module IO
driver to handle an error stream
- string "TRUE" is now accepted to initialise model parameters
- 'getnextdsotype' does not alter any more its 4th argument
when it returns NULL
2.2) Compiler Library
- when used through IVE, compiler does not crash any more on
some syntax errors
2.3) mmetc module 1.4.1
- a minor problem has been fixed in 'diskdata' when used for
output
2.4) mmxslp module 1.3.7
- TOLSET items are now correctly identified by the SLPDATA
function.
2.5) mmquad module 1.2.1
- a potential invalid memory access has been fixed
3) Xpress-IVE 1.15.04
- Barrier crossover no longer confuses the Stats pane display.
- Mosel editor tooltips adjust to the current subroutine name.
- Matrix row view no longer removes minus sign from the first
coefficient.
4) Xpress-BCL 2.6.2
- Make handling of bases and variable arrays 64-bit safe
5) Xpress-SLP 1.18
- Console commands with too many tokens (fields) are now
trapped. Any additional fields are ignored.
- A user function which returns multiple values using its own
array is now thread safe.
- Coefficients which have been input as separate constant and
formula items are now correctly combined
- If barrier solving a QP problem terminates as "unfinished",
then primal will be called to continue the optimization
- Records in the COLUMNS and BOUNDS sections of an extended MPS
matrix are identified as invalid if they do not have enough
fields.
- File names for XSLPreadprob or the console equivalent can now
have any extension and the default .mat is no longer
assumed.
- Specific tolerances on variables in the SLPDATA section of
extended MPS format files are now handled correctly on input
and output (previously, some were scrambled)
Release 2004B
-------------
1) Xpress-Optimizer 15.20
- QP solutions are now read correctly from memory
- Binary variables now have their lower bounds set to zero if
they have previously been set to negative values
- Efficiency of singleton column removal in presolve has been
improved
- Efficiency of aggregated cuts has been improved
- Primal pivot rejection and primal termination has been improved
- Stalling when re-optimization MIP nodes with primal has been
fixed
- The size limits for restricted size versions are now not
exceeded when allowing spare rows and elements for MIP
problems
- Semi-continuous integers are now presolved correctly when the
semi-continuous lower bound is redundant.
- Incorrect heuristic solutions are no longer returned when
integers have non-zero lower bounds
2) Xpress-Mosel 1.4.0
2.1) Language
- named 'is_free' constraints are now properly handled
2.2) mmodbc 1.4.0
- failures in 'insert' statements are now always detected
2.3) mmxprs 1.4.0
- 'setmodcut' does not accept unbounded constraints any more
2.4) mmxslp 1.3.6
- User function types VB and COM are now available
- User function "ExeType" handling has been updated and
corrected.
- Optimizer callbacks are now activated, as well as SLP
callbacks.
- Files created in SLPglobal are now deleted when the other
problem files are deleted.
- Use of SLPglobal without a preceding call to optimize, or to
optimize without a previous call to SLPloadprob now produce
an error message and the program stops
- There is now more rigorous checking of memory allocation
errors.
- Some potentially large arrays have been re-designed to
reduce the memory requirements significantly for large
models.
3) Xpress-IVE 1.15.01
- Fixed problem with Windows 98 crash at startup.
- MIP progress graphs are now updated at the end of a run.
- Fixed some matrix visualization issues.
- Some error messages contained invalid characters. This was
fixed.
- Tabs are now supported in the Output window.
- Printing now works with non-default printers.
4)_Xpress-SLP 1.17
- User functions which return multiple values using an array
supplied as an argument should be declared as "double", not
"double *". The manual has been corrected to include this.
Also, Xpress-SLP will try to trap a bad declaration of this
type.
- Cascading calculations have been corrected for coefficients
which are placed in the "equals column".
- A user-supplied cascaded value is checked and saved in the
same way as a system-generated one.
- An error whereby an empty formula could return a nonzero value
has been corrected.
- An attempt to read a non-existent file using XSLPreadprob now
returns the correct error message and error code.
- Blank lines in XSLPreadprob no longer cause reading of the
current section to terminate.
- The number of user function calls during convergence checking
has been reduced.
- Changes to optimizer control settings between a call to
XSLPmaxim or XSLPminim and XSLPglobal are now recognised.
- Errors caused by using minimum augmentation have been
corrected.
- Function prototypes in header file xslp.h have been modified
to remove unnecessary "const" keywords.
- MISLP identification of potential integer solutions has been
corrected. Node termination criteria are not
- applied to re-optimization of potential optimal nodes.
- Step bounds are re-initialized when XSLP_MIPRELAXSTEPBOUNDS is
set (previously, any existing value continued to be used,
which could result in premature termination)
- XSLP_MIPCUTOFF tests have been corrected. New counter
XSLP_MIPCUTOFFCOUNT has been introduced.
- XSLP_MIPOCOUNT tests are only applied when step bounding is
active, or when at least XSLP_SBSTART SLP iterations have
taken place.
- The default MISLP algorithm setting has been changed from 21
to 17 (step bounds are not relaxed after initial SLP before
starting global)
- MIPWITHINSLP now includes a final SLP optimization after the
values of the global entities are determined
- Tests for convergence on extended criteria have been tightened
up to avoid falsely declaring convergence.
- Feasibility at the point of linearization is now checked to
avoid premature convergence on extended criteria when the
initial linearization is poor. Note: this may increase the
number of SLP iterations on some models without
significantly improving the result. Possible remedies are to
set XSLP_ECFCHECK to 0 (which will revert to the earlier
algorithm) or increase tolerances XSLP_ECFTOL_A and
XSLP_ECFTOL_R (from the default of 0.01 up to about 0.1)
- XSLPwriteprob now puts all columns related to global entities
into the COLUMNS section even if they have no explicit
coefficients.
- Variables marked as converged in the itervar callback are no
longer incorrectly included in the unconverged total;
variables which are marked as unconverged in the itervar
callback are now included in the unconverged total
- XSLPloadxvs and XSLPaddxvs now corrently handle empty XVs
- The order of calculation of partial derivatives has been
changed to avoid deletion of some small intermediate values
Release 2004A
-------------
1) Xpress-Optimizer 15.10
- Long names are now printed in full for the limiting process in
the range report files produced by writerange and
writeprtrange
- Node numbers and Parent node numbers are now returned
correctly in MIP callbacks
- Conflicting bounds are now checked for if user branching
is being performed
- Bases can now be read from file if the problem has been loaded
from memory
- A problem with optimizing the top node with barrier and
optimizing the tree nodes with primal has been fixed
- A problem with generating cuts from range rows with fractional
ranges has been fixed
- A problem with infeasibilities remaining after postsolve has
been fixed.
- A problem with presolving matrices containing small matrix
values has been fixed
- Sign of dual values are now correct for QP problems
- An error in the infeasibility trace has been fixed
- Free variables detected to be bounded by presolve are handled
correctly
- Memory leaks in freeing up the tree search have been fixed
- A postsolve problem with dual fixed variables has been fixed
- A numerical problem in cut generation has been fixed
- MIPADDCUTOFF can now be set to 0.0
- SOSREFTOL is now a relative tolerence and has a default value
of 1.0e-6
- Precision of barrier algorithm has been improved
- Quadratic objective functions are unscaled correctly
- Looping in user branching has been fixed
- Duplicate columns are now postsolved correctly
- In LP file format Generals now have a default upper bound of
MAXINT
- NODENUMBER and NODEPARENT are now set correctly when obtained
from the Integer Solution callback
- The QP primal simplex algorithm is used if a QP algorithm is
solved with the dual algorithm
- Semi-continuous bounds are picked up correctly when calling
XPRSloadglobal()
- A message saying a solution has been found when MIPABSCUTOFF
has been set is no longer printed
- MIP presolve now works correctly when a starting basis
prevents the removal of fixed columns by presolve
- A basis can now be read from file when the problem has been
loaded from memory
- A problem with postsolving problems with free rows has been
fixed
- A problem with presolve running out of memory has been fixed
- Omniout now works after calling global
- The solution can no longer be obtained from memory after the
global search has completed
- Correct lift and project cuts are now generated when a range
row has a non-integer lower bound
- A problem with detecting that continuous variables are integer
has been fixed
- Barrier controls now have unique numerical identifiers
starting with the number 5
- Signs of reduced costs are now correct if small
infeasibilities arise after postsolve
2) Xpress-BCL 2.6.0
- If no problem name is provided, BCL creates a unique name
including the full path to the temporary directory so that
Xpress-Optimizer creates its working files in the temporary
directory.
- Problems without constraints are now accepted (a problem must
have at least one variable and one non-zero objective
coefficient or a constraint).
- Working files of Xpress-Optimizer are now deleted when the
problem is released.
- Limits of semi continuous (integer) variables are now
preprocessed to avoid confusion with lower bounds. Exported
matrices include this preprocessing.
- Return value of XPRBgetsense now corresponds to the values
printed in the documentation.
- BCL Java: XPRBlinExp now prints out correctly.
3) Xpress-Mosel 1.2.5
3.1) Runtime Library
- operator '<' (resp. '>') is now implemented as 'not >='
(resp. 'not <=') in order to take into account zero
tolerances applied to equality comparisons
3.2) mmodbc module 1.2.1
- now initialises range sets
3.3) mmxslp module 1.2.2
- Corrected handling of genctr constraints if SLPloadprob()
is called more than once.
- Improved identification of items which have changed before
a second SLPloadprob().
- Improved handling of memory allocation errors
3.4) Mod2Mos program 1.0.4
- options '-in' not ignored any more
4) Xpress-SLP 1.1.5
- Corrected handling of end-of-line characters in extended
MPS matrix files to allow transfer of files between
platforms.
5) Licensing
- Some users were getting an error message "Your host ID
does not seem to be authentic", when no such error had
occurred. This has now been corrected.
Unresolved in this release
--------------------------
--------------------------
Release 2004C
-------------
1) mmxslp module
- The mmxslp module is not yet supported on 64bit Solaris
platforms
Dash Optimization