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

Release notes for Xpress-MP 2007B.
Release notes for Xpress-MP 2007A.





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
Related Topics
Release Notes 2006B, 2006A
Release Notes 2005B, 2005A
Download software
[Home] [Contact] [Client Area] [Search] [Sitemap] [Links] [Printer Friendly]
  © 2008 Fair Isaac Corporation. All rights reserved.