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

Burglar - In-memory data exchange between Mosel models

Description
  • runburglar.mos, burglar.mos - compile/load/run another model
  • runburglario.mos, burglar2r.mos - data exchange between models in memory using bin format
  • runburglarior.mos, burglar2r.mos - data exchange between models in memory using raw format
  • runburglardistr.mos, burglar2m.mos - data exchange between models in memory on the local host, combining 'bin:', 'rmt:', 'shmem:'
  • runburglardistr2.mos, burglar2m.mos - data exchange between models in memory on the remote Mosel instance, combining 'bin:', 'rmt:', 'shmem:'
  • runburglarmem.mos - compiling a model source from memory
Further explanation of this example: Whitepaper 'Generalized file handling in Mosel', Sections 6 Exchange of information with embedded models, 7 bin: using Mosel's binary format


Source Files





burglar2m.mos

(!******************************************************
   Mosel Example Problems
   ====================== 

   file burglar2m.mos
   ``````````````````
   Use of I/O drivers for data handling.

   *** Not intended to be run standalone - run from burgbindata.*  ***
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2004,rev. Apr. 2013
*******************************************************!)

model Burglar2r
 uses 'mmxprs'

 parameters
  DATA='bin:burgdatabin'
  SOL='bin:resdatabin'
  WTMAX = 102                    ! Maximum weight allowed
 end-parameters

 declarations
  ITEMS: set of string           ! Index set for items
  VALUE: array(ITEMS) of real    ! Value of items
  WEIGHT: array(ITEMS) of real   ! Weight of items
  SOLTAKE: array(ITEMS) of real  ! Solution values
 end-declarations

 initialisations from DATA
  [VALUE, WEIGHT] as "BurgData"
 end-initialisations

 declarations
  take: array(ITEMS) of mpvar    ! 1 if we take item i; 0 otherwise
 end-declarations

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

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

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

 maximize(MaxVal)                ! Solve the problem

! Solution output
 forall(i in ITEMS) SOLTAKE(i):= getsol(take(i))

 writeln("Solution:\n Objective: ", getobjval)
 writeln(SOLTAKE) 

 initialisations to SOL
  SOLTAKE as "SolTake"
  evaluation of getobjval as "Objective"
 end-initialisations

end-model

Back to examples browserPrevious example