Combinatorial optimization: Knapsack problem 2

Aus Operations-Research-Wiki
Wechseln zu: Navigation, Suche

The Knapsack-problem is an optimization problem, where a quantity of objects with corresponding weights and benefits is given. The aim is to choose a subset of these objects such that the total weight doesn't exceed a given threshold and the total benefit is maximal. This Problem is also called "backpack-problem" since it results from an example in which a hiker has to pack his backpack. He has to answer the question: how can I fill the 50 liter space of the backpack to get an optimal benefit.

Definition and formulation

An instance of the Knapsack-problem consists of an index-set Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): I = \{ 1, \ldots, k \}

of  objects, weights Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): a_i \in \mathbb{R}
and benefits Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): c_i \in \mathbb{R}
for each object Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): i \in I
and a maximum weight Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): b \in \mathbb{R}

. An optimal solution of that instance is an subset Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): I' \subseteq I

with Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \sum_{i \in I'} a_i \leq b
and Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \sum_{i \in I'} c_i
maximal.

The problem can be formulated as a Binary Linear Program as follows:

Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \begin{alignat}{3} \max & \sum_{i \in I} x_i \cdot c_i & \\ \mathrm{s.t.} & \sum_{i \in I} x_i \cdot a_i \leq b &\\ & x_i \in \{ 0, 1\} & \forall i \in I \end{alignat}


Replacing the binary conditions Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_i \in \{0,1\}

with the weaker conditions Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.):  0 \leq x_i \leq 1 

, one gets the "relaxed" or "fractional knapsack problem".

Example

A woman wants to go on vacation. But now she has to overcome a serious problem, because the airline prescribe a maximum weight of 25 kg (b = 25 kg)for her luggage (the worst that can happen to a woman). She has the choice between six different items which she can pack. Each object has a special benefit c_i for the woman and a weight a_i. What items should be selected by her to have the maximum benefit without exceeding the maximum weight of 25 kg?

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Solution methods

To apply the different methods a ranking must be formed first.

For this purpose, a quotient is formed from the benefit c_i and the weight a_i. Afterwards, the values are sorted according to the size.

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Ordered list:

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

This list is the basis for all applicable methods.


Kolesar

The goal is to obtain an integer solution. One begins with the object of rank 1, then rank 2 and so on and sets the variable equal 1 or 0. The items can be taken as long as the maximum weight of 25 kg is reached. This means that the last possible item mostly can't be taken completely. The solution with the higher objective function value is branched. If the objective function value is less than the value that provides the best integer solution, this solution is not branched.

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Greenberg & Hegerich

In this method, one starts with the non-integer variable and set this variable equal 0 and 1 respectively to look for a better solution. This should be continued until an optimal solution is found. The procedure is identical to the first presented method.

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Cascading Tree

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Dynamic Programming

Complexity