Initializing help system before first use

VBA


Type: Embedding
Rating: 2 (easy-medium)
Description:
  • ugvb.xls: Compiling a model into a BIM file, then load and run it. Passing parameters to a Mosel program (requires burglar5.mos, burglar.dat, prime4.mos, ugvb.bas)
  • ugcb.xls: Redirecting Mosel output and error streams to a callback (requires burglar10.mos, burglar.dat, ugcb.bas)
File(s): burglar5.mos, burglar10.mos, prime4.mos
Data file(s): ugvb.xls, ugcb.xls, burglar.dat, ugvb.bas, burglar.dat, ugcb.bas

burglar5.mos
(!******************************************************
   Mosel User Guide Example Problems
   ================================= 

   file burglar5.mos
   `````````````````
   Same as burglar2.mos but writes solution to a file.
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2002, rev. 2006
*******************************************************!)

model Burglar5
 uses "mmxprs"

 parameters
  OUTFILE="burglar_out.txt"
 end-parameters
 
 declarations
  WTMAX = 102                    ! Maximum weight allowed
  ITEMS = {"camera", "necklace", "vase", "picture", "tv", "video", 
           "chest", "brick"}     ! Index set 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

 initializations from 'burglar.dat'
  VALUE  WEIGHT
 end-initializations

! 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 MIP-problem

! Write out the solution to a file
 fopen(OUTFILE,F_OUTPUT) 
 writeln("Solution:\n Objective: ", getobjval)
 forall(i in ITEMS)  writeln(" take(", i, "): ", getsol(take(i)))
 fclose(F_OUTPUT)
end-model

burglar10.mos
(!******************************************************
   Mosel User Guide Example Problems
   ================================= 

   file burglar10.mos
   ``````````````````
   Use of index sets.
   Same as burglar2.mos with runtime parameter FULLPATH.
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2001, rev. 2006
*******************************************************!)

model Burglar10
 uses "mmxprs"
 
 parameters
   FULLPATH = '.'
 end-parameters 
 
 declarations
  WTMAX = 102                    ! Maximum weight allowed
  ITEMS = {"camera", "necklace", "vase", "picture", "tv", "video", 
           "chest", "brick"}     ! Index set 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

 initializations from FULLPATH + '\' + 'burglar.dat'
  VALUE  WEIGHT
 end-initializations

! 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 MIP-problem

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

prime4.mos
(!******************************************************
   Mosel User Guide Example Problems
   ================================= 

   file prime4.mos 
   ```````````````
   Same as prime.mos but writes solution to a file.
 
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2002
*******************************************************!)

model Prime 

 parameters
  LIMIT=100                     ! Search for prime numbers in 2..LIMIT
  OUTFILE="prime_out.txt"
 end-parameters

 declarations
  SNumbers: set of integer      ! Set of numbers to be checked
  SPrime: set of integer        ! Set of prime numbers
 end-declarations

 SNumbers:={2..LIMIT} 
 
 fopen(OUTFILE,F_OUTPUT) 
 writeln("Prime numbers between 2 and ", LIMIT, ":")

 n:=2
 repeat
   while (not(n in SNumbers)) n+=1
   SPrime += {n}                ! n is a prime number
   i:=n
   while (i<=LIMIT) do          ! Remove n and all its multiples
     SNumbers-= {i}
     i+=n
   end-do
 until SNumbers={}    
 
 writeln(SPrime)
 writeln(" (", getsize(SPrime), " prime numbers.)")
 fclose(F_OUTPUT)
 
end-model

© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.