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

Retrieving data from a Mosel model

Description
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





trans.mos

(!*******************************************************
  * Mosel Example Problems                              *
  * ======================                              *
  *                                                     *
  * file trans.mos                                      *
  * ``````````````                                      *
  * Example for the use of the Mosel language           *
  * (Network problem: transport from depots to          *
  *  customers)                                         *
  *                                                     *
  * (c) 2008 Fair Isaac Corporation                     *
  *     author: S. Heipcke, 2001                        *
  *******************************************************!)    

model Transport                     ! Start a new model

uses "mmxprs"                       ! Load the optimizer
                                  
declarations
 Suppliers: set of string           ! Set of suppliers
 Customers: set of string           ! Set of customers
 COST: dynamic array(Suppliers,Customers) of real  ! Unit cost of sending from depot d
                                        ! to customer c
 AVAIL: array(Suppliers) of real    ! Availability of products
 DEMAND: array(Customers) of real   ! Demand by customers

 x: dynamic array(Suppliers,Customers) of mpvar ! Flow from supplier s to customer c
end-declarations

                                    ! Read data from file
initializations from "Models/trans.dat"
 COST AVAIL DEMAND
end-initializations

 forall(s in Suppliers, c in Customers| COST(s,c)>0)
  create(x(s,c))
 
                                    ! Objective: minimize total cost
 Min:= sum(s in Suppliers, c in Customers) COST(s,c)*x(s,c) 

 forall(s in Suppliers) L(s):= sum(c in Customers) x(s,c) <= AVAIL(s)
 forall(c in Customers) D(c):= sum(s in Suppliers) x(s,c) >= DEMAND(c) 

 minimize(Min)
  
end-model

Back to examples browserPrevious exampleNext example