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-cs: Using sets in Mosel (requires burglari.mos)
  • 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
mmexas-cs: Using arrays with index sets (requires trans.mos)
  • get indexing sets of an array
  • get array type
  • enumerate array entries in usual and transposed order
  • enumerate true array entries
mmexlst-cs: 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-cs: 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-cs: Accessing problems and solution information with Mosel (requires blend2.mos)
  • export problem to a file (MPS or LP format)
  • get problem status
  • get objective function value
  • get primal/dual solution values, and constraint activity
Further explanation of this example: 'Mosel Library Reference .NET doc'

mmexdatacs.zip[download all files]

Source Files

Data Files





burglar_rec.mos

(!******************************************************
   Mosel User Guide Example Problems
   ================================= 

   file burglar_rec.mos
   ````````````````````
   Use of records.
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, July 2006
*******************************************************!)

model "Burglar (records)"
 uses "mmxprs"
 
 public declarations
  WTMAX = 102                    ! Maximum weight allowed
  ITEMS = {"camera", "necklace", "vase", "picture", "tv", "video", 
           "chest", "brick"}     ! Index set for items
  
  I: array(ITEMS) of public record
   VALUE: real                   ! Value of items
   WEIGHT: real                  ! Weight of items
  end-record
  take: array(ITEMS) of mpvar    ! 1 if we take item i; 0 otherwise
 end-declarations

 initializations from 'Models/burglar_rec.dat'
  I
 end-initializations

! Objective: maximize total value
 MaxVal:= sum(i in ITEMS) I(i).VALUE*take(i) 

! Weight restriction
 sum(i in ITEMS) I(i).WEIGHT*take(i) <= WTMAX

! All variables are 0/1
 forall(i in ITEMS) take(i) is_binary  

 maximize(MaxVal)                 ! Solve the MIP-problem

! Print out the solution
 writeln("Solution:\n Objective: ", getobjval)
 forall(i in ITEMS)  writeln(" take(", i, "): ", getsol(take(i)))
end-model

Back to examples browserPrevious exampleNext example