| |||||||||||||||||||||||||||||||||||||
Introductory examples Description
Further explanation of this example: 'Applications of optimization with Xpress-MP', Introductory examples (Chapters 1 to 5) of the book 'Applications of optimization with Xpress-MP'
Source Files By clicking on a file name, a preview is opened at the bottom of this page. Data Files burglar1.mos (!****************************************************** Mosel Example Problems ====================== file burglar1.mos ````````````````` Knapsack problem A burglar considers eight items that have different values and weights. He wants to take a group of items that maximizes the total value while the total weight is not more than the maximum 'WTMAX' he can carry. This IP model represents the so-called knapsack problem where binary decision variable 'take(i)' takes value 1 if item 'i' is taken; 0 otherwise. (c) 2008 Fair Isaac Corporation author: R.C. Daniel, Jul. 2002 *******************************************************!) model "Burglar 1" uses "mmxprs" declarations ITEMS = 1..8 ! Index range for items WTMAX = 102 ! Maximum weight allowed 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 ! Item: 1 2 3 4 5 6 7 8 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 MIP-problem ! Print out the solution writeln("Solution:\n Objective: ", getobjval) forall(i in ITEMS) writeln(" take(", i, "): ", getsol(take(i))) end-model | |||||||||||||||||||||||||||||||||||||
© Copyright 2023 Fair Isaac Corporation. |