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

Compilation to/from memory

Description
  • ugcompfrmem.mos, ugcompfrmem.c: Compiling a model held in memory
  • ugcompmem.mos, ugcompmem.c, ugcompmem.java, ugcompmemcs.cs: Compiling a model to memory (requires burglar2.mos, burglar.dat)
Further explanation of this example: 'Mosel User Guide', Section 17.1 Generalized file handling

ugcompmemc.zip[download all files]

Source Files

Data Files





ugcompfrmem.mos

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

   file ugcompfrmem.mos
   ````````````````````
   Compilation from memory.
   
   (c) 2014 Fair Isaac Corporation
       author: S. Heipcke, Sep. 2014
*******************************************************!)

model "Compile burglar.mos from memory"
 uses "mmjobs", "mmsystem"

!**** The source of the submodel as a multi-line string ****
 public declarations
  source_of_model=`SUBMODELSOURCE
 model Burglar
 uses 'mmxprs'
 
 declarations
  WTMAX = 102                    ! Maximum weight allowed
  ITEMS = 1..8                   ! Index range for items
  VALUE: array(ITEMS) of real    ! Value of items
  WEIGHT: array(ITEMS) of real   ! Weight of items
  take: array(ITEMS) of mpvar    ! 1 if we take item i; 0 otherwise
 end-declarations

 VALUE :: [15, 100, 90, 60, 40, 15, 10,  1]
 WEIGHT:: [ 2,  20, 20, 30, 40, 30, 60, 10]

 ! 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

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

 end-model
SUBMODELSOURCE`

 end-declarations


!**** Master model ****
 declarations
  modBurg: Model
 end-declarations

                                   ! Compile the model from memory
 if compile("", "text:source_of_model", "tmp:burglar.bim")<>0 then 
   exit(1)
 end-if
 load(modBurg, "tmp:burglar.bim")  ! Load the bim file
 run(modBurg)                      ! Start model execution
 wait                              ! Wait for model termination
 dropnextevent                     ! Ignore termination event message

end-model 



Back to examples browserPrevious exampleNext example