FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Retrieving data from a Mosel model

mmexset.c: Using sets in Mosel (requires burglari.bim)
  • retrieve a set by its model name
  • get the set size
  • get first and last set element
  • get the name or index of a set element
mmexarr.c: Using arrays in Mosel (requires trans.bim)
  • compare index tuples
  • retrieve an array by its model name
  • get array size and number of dimensions
  • get indices of first and last array entries
  • get (value of) array entries
  • check whether an index tuple lies in the range of an array
mmexas.c: Using arrays with index sets (requires trans.bim)
  • get indexing sets of an array
  • get array type
  • enumerate array entries in usual and transposed order
  • enumerate true array entries
mmexlst.c: Using lists in Mosel (requires euler.mos and euler.dat)
  • retrieve a list by its model name
  • get the list size
  • enumerate the list elements
  • get value of list element
mmexrec.c: Using records in Mosel (requires burglar_rec.mos and burglar_rec.dat)
  • retrieve an array of records (user type) by its model name
  • retrieve the record field information (field name, type, and number)
  • enumerate the array of records
  • for each array entry (record) get the value of all its fields
mmexprob.c: Accessing problems and solution information with Mosel (requires blend2.bim)
  • export problem to a file (MPS or LP format)
  • get problem status
  • get objective function value
  • get primal/dual solution values, and constraint activity
Note that these examples require the provided mos files to be pre-compiled.

Further explanation of this example: 'Mosel Library Reference Manual', Section 1.2 Post processing interface

Source Files

Data Files


  * Mosel Example Problems                              *
  * ======================                              *
  *                                                     *
  * file blend2.mos                                     *
  * ```````````````                                     *
  * Example for the use of the Mosel language           *
  * (Blending problem from XPRESS-MP User Guide)        *
  *                                                     *
  * Data given in the model.                            *
  *                                                     *
  * (c) 2008 Fair Isaac Corporation                     *
  *     author: S. Heipcke, 2001                        *

model Blend                    ! Start a new model

uses "mmxprs"                  ! Load the optimizer library

public declarations
 ROres = 1..2                  ! Range of Ores
 REV = 125                     ! Unit revenue of product
 MINGRADE = 4                  ! Min permitted grade of product
 MAXGRADE = 5                  ! Max permitted grade of product
 COST: array(ROres) of real    ! Unit cost of ores
 AVAIL: array(ROres) of real   ! Availability of ores
 GRADE: array(ROres) of real   ! Grade of ores (measured per unit of mass)

 x: array(ROres) of mpvar      ! Quantities of ores used
 LoGrade: linctr

 COST  :: [85.00, 93.00]
 AVAIL :: [60.00, 45.00]
 GRADE :: [2.1, 6.3]
                               ! Objective: maximize total profit
 Profit:= sum(o in ROres) (REV-COST(o))* x(o)  

                               ! Lower and upper bounds on ore quality
 LoGrade:= sum(o in ROres) (GRADE(o)-MINGRADE) * x(o) >= 0
 UpGrade:= sum(o in ROres) (MAXGRADE-GRADE(o)) * x(o) >= 0 

                               ! Set upper bounds on variables
 forall(o in ROres) x(o) <= AVAIL(o)

 maximize(Profit)              ! Solve the LP-problem

Back to examples browserPrevious exampleNext example