Blog Post

FICO® Xpress Optimization Blog
2 MIN READ

FICO® Xpress 8.12 Mosel – April 2021

FICO's avatar
FICO
Community Manager
5 years ago

Xpress Mosel is the premier algebraic modeling and programming language. Its best-in-class functionality enables operations researchers, and modeling experts to rapidly develop and deploy optimization solutions that solve complex, real-world business problems. It provides an easy-to-learn, robust way to interact with solver engines, and tightly integrates with Xpress Insight to deploy models into powerful, business user-friendly applications. 

With this release, we provide several performance improvements for advanced tasks related to optimization modelling and reading of CSV files. 

Key features for Xpress 8.12 Mosel include support of union types and in particular a new predefined type ‘any’. 

Union types provide a new way of declaring Mosel entities. A union is a container capable of holding an object of one of a predefined set of types. This can be useful when reading and storing input data of a-priori unknown type. It can also be helpful for advanced programming tasks involving retrieval of information from another Mosel model without prior knowledge of its structure/data model.

  • An entity can now be declared as a collection of types using the ‘or’ operator. For example, ‘myentity: integer or real’ yields an entity either of type real or integer. To store an integer value, one can write ‘myentity := 99’, and use it in arithmetic expressions such as ‘newentity := myentity.integer-1’  

  • The type ‘any’ has been added to the built-in Mosel types and is the union of any Mosel type. Via ‘myarray: array(range) of any’ an array holding entities of any Mosel type is declared. 

  • To retrieve the properties of the data stored in a union, new functions and operators have been added and all spreadsheet and database I/O drivers including the diskdata functionality have been extended to support union types. 

Display of version number: When running Mosel, the Xpress version number is now reported in the banner and can be programmatically retrieved via functions ‘versionstr’ and ‘versionnum’ and in the Native Interface and library APIs via ‘getversions’. 

Enhanced remote access in mmjobs: to ease handling of memory pipes new functionality for monitoring and clearing memory pipes has been added. The  mempipe I/O driver now supports remote write access via ‘rmt:’.  

Support for constant native types had been added recently and has now been extended to type ‘text’, such that sets of type ‘constant text’ can now be used for indexing arrays.  

More details can be found in the Xpress 8.12 release notes. 

Updated 5 years ago
Version 3.0
No CommentsBe the first to comment