knapsack.gms : Binary Knapsack Problem

Description

Basic form of the knapsack problem: Given a set of potential items i
to put into a knapsack of weight capacity c. Each item has a profit p
and a weight w. The task is to select a subset of the items which
maximizes the total utility of the selection while not exceeding
the weight limit c of the knapsack.

Hans Kellerer, Ulrich Pferschy, David Pisinger. Knapsack Problems.
Springer-Verlag Berlin Heidelberg 2004. Page 3.

Keywords: mixed integer linear programming, combinatorial optimization


Small Model of Type : MIP


Category : GAMS Model library


Main file : knapsack.gms

$title Binary knapsack problem (KNAPSACK,SEQ=436)

$onText
Basic form of the knapsack problem: Given a set of potential items i
to put into a knapsack of weight capacity c. Each item has a profit p
and a weight w. The task is to select a subset of the items which
maximizes the total utility of the selection while not exceeding
the weight limit c of the knapsack.

Hans Kellerer, Ulrich Pferschy, David Pisinger. Knapsack Problems.
Springer-Verlag Berlin Heidelberg 2004. Page 3.

Keywords: mixed integer linear programming, combinatorial optimization
$offText

set i 'items';
parameters
    p(i) 'profits'
    w(i) 'weights'
    c 'capacity';

free variable z 'objective';
binary variable x 'choice';

equations cap_restr, utility;
cap_restr .. sum(i, w(i)*x(i)) =l= c;
utility .. z =e= sum(i, p(i)*x(i));

z.lo = 0;

model knapsack /all/;

* Example instance
set i /i1*i10/;
c = 269;

table data
    p  w
i1  55 95
i2  10  4
i3  47 60
i4   5 32
i5   4 23
i6  50 72
i7   8 80
i8  61 62
i9  85 65
i10 87 46;

p(i) = data(i,'p');
w(i) = data(i,'w');

solve knapsack using mip max z;