(!****************************************************** Mosel Example Problems ====================== file burglar2r.mos `````````````````` Use of I/O drivers for data handling. *** Not intended to be run standalone - run from iodrvraw2.c or runburglario*.mos *** (c) 2008 Fair Isaac Corporation author: S. Heipcke, 2004, rev. Sep. 2018 *******************************************************!) model Burglar2r uses 'mmxprs' parameters IODRV='raw:' DATA='BurgData' SOL='SolTake' WTMAX = 102 ! Maximum weight allowed end-parameters declarations public 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 IODRV [VALUE,WEIGHT] as DATA 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 IODRV SOLTAKE as SOL end-initialisations end-model