Produktionswirtschaft - Gerald Senarclens de Grancy

Werbung
Produktionswirtschaft
Gerald Senarclens de Grancy
15. März 2008
Peter Greistorfer
c 2008, Peter Greistorfer und Gerald Senarclens de Grancy. Some rights
Copyright reserved.
Nach gründlicher Überlegung haben wir uns für die folgenden Copyrightbedingungen der Creative Commons entschieden: “Namensnennung - Keine kommerzielle Nutzung - Keine Bearbeitung 2.0 Österreich”
Sie dürfen:
das Werk vervielfältigen, verbreiten und öffentlich zugänglich machen
Zu den folgenden Bedingungen:
• Namensnennung: Sie müssen den Namen der Autoren in der von ihnen festgelegten Weise nennen (wodurch aber nicht der Eindruck entstehen darf, Sie oder die
Nutzung des Werkes durch Sie würden entlohnt).
• Keine kommerzielle Nutzung: Dieses Werk darf nicht für kommerzielle Zwecke
verwendet werden.
• Keine Bearbeitung: Dieses Werk darf nicht bearbeitet oder in anderer Weise
verändert werden.
Die obigen Bedingungen stammen von http://creativecommons.org/licenses/
by-nc-nd/2.0/at/, der genaue Lizenzvertrag steht unter http://creativecommons.
org/licenses/by-nc-nd/2.0/at/legalcode zur Verfügung.
Jede der vorgenannten Bedingungen kann aufgehoben werden, sofern Sie die Einwilligung der Rechteinhabers dazu erhalten. Diese Lizenz lässt die Urheberpersönlichkeitsrechte
unberührt. Die gesetzlichen Beschränkungen der Verwertungsrechte durch das Urheberrecht bleiben hiervon unberührt.
Inhaltsverzeichnis
Inhaltsverzeichnis
i
Abbildungsverzeichnis
v
1 Übersicht
1
1.1
Einführungsbeispiel: Computerterminals verbinden . . . . . . . . . . .
2 Bäume, Entfernungen und Wege
2.1
2.2
3
Minimal spannende Bäume . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.1.1
Algorithmus von Prim . . . . . . . . . . . . . . . . . . . . . . .
4
Wege und kürzeste Wege . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.1
Shortest Path Problem . . . . . . . . . . . . . . . . . . . . . . .
7
2.2.2
Longest Path Problem . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.3
FIFO-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2.4
Tripel-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . .
10
3 Das Transportproblem
3.1
3.2
1
15
Primale und Duale Transportprobleme . . . . . . . . . . . . . . . . . .
16
3.1.1
Formulierung als lineares Programm . . . . . . . . . . . . . . .
16
3.1.2
Einführungsbeispiel . . . . . . . . . . . . . . . . . . . . . . . . .
17
Eröffnungsheuristiken . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
i
3.3
3.2.1
Nordwesteckenregel . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.2.2
Spaltenminimummethode . . . . . . . . . . . . . . . . . . . . .
23
Verbesserungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.3.1
Stepping-Stone Methode . . . . . . . . . . . . . . . . . . . . . .
26
3.3.2
MODI-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4 Standortprobleme
4.1
4.2
33
Das Warehouse Location Problem . . . . . . . . . . . . . . . . . . . . .
33
4.1.1
Add-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.1.2
Miele Verfahren - Standortbestimmung in der Ebene . . . . . .
35
Überdeckungs- und Partitionsprobleme . . . . . . . . . . . . . . . . . .
36
4.2.1
Überdeckungsproblem . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.2
Partitionsproblem . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.3
Koopmans-Beckman-Problem . . . . . . . . . . . . . . . . . . .
38
5 Beispiele
39
5.1
Bäume, Entfernungen und Wege . . . . . . . . . . . . . . . . . . . . . .
39
5.2
Das Transportproblem . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.3
Standortprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
A Programmierbeispiele
67
A.1 GNU Linear Programming Kit . . . . . . . . . . . . . . . . . . . . . . .
67
A.1.1 Candy Problem . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
A.1.2 Extinguisher Problem
. . . . . . . . . . . . . . . . . . . . . . .
70
A.2 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
A.2.1 Nordwesteckenregel . . . . . . . . . . . . . . . . . . . . . . . . .
72
A.2.2 Spaltenminimummethode . . . . . . . . . . . . . . . . . . . . .
72
ii
A.2.3 Miehle Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . .
74
Literaturverzeichnis
77
Index
79
iii
iv
Abbildungsverzeichnis
2.1
Baum (ungerichteter Graph) . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2
Baum (gerichteter Graph) . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.3
Angabe: gewichteter, ungerichteter Graph . . . . . . . . . . . . . . . .
5
2.4
Lösung: minimal spannender Baum . . . . . . . . . . . . . . . . . . . .
5
2.5
Angabe: kürzester Weg Problem . . . . . . . . . . . . . . . . . . . . . .
8
2.6
Lösung: kürzester Weg . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.7
Angabe: längster Weg Problem . . . . . . . . . . . . . . . . . . . . . .
9
2.8
Lösung: längster Weg . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.9
Beispiel für kürzeste Wege . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.1
Klassisches Transportproblem . . . . . . . . . . . . . . . . . . . . . . .
16
5.1
Das Postkutschenproblem . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.2
Vladivostok nach Rostov . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.3
Gewichteter, ungerichteter Graph . . . . . . . . . . . . . . . . . . . . .
40
5.4
Gerichteter Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.5
Gerichteter Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.6
Gerichteter Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.7
Verkehrsnetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.8
Bewerteter, gerichteter Graph . . . . . . . . . . . . . . . . . . . . . . .
45
v
5.9
Verbindungsnetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.10 Zyklenfreier Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.11 Feriengebiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.12 Klassisches Transportproblem . . . . . . . . . . . . . . . . . . . . . . .
48
vi
Vorwort
Umwelt
Da dieses Skriptum in elektronischer Form vorliegt, bitten wir die Nutzer, nur jene
Teile auszudrucken, die auch wirklich verwendet werden und die Ausdrucke beidseitig
zu erledigen. Danke.
Formale Algorithmen
Wir haben uns dazu entschlossen, dass funktionierender Programmcode wegen der Praxisnaehe besser zur Illustration der Algorithmen dient. Um daher die formalen Beschreibungen der Algorithmen gut zu verstehen, ist es hilfreich über Grundkonstrukte der
Programmiersprache Python zu verfügen, die aber falls notwendig vor dem jeweiligen
Beispiel erläutert werden. Verweise zu weiterführender Literatur können Interessierte
in A.2 auf Seite 71 finden.
Um Verwirrung zu vermeiden, sind nur die zum Verständnis der Algorithmen nötigen
Teile des Codes abgebildet. Eine komplette Beispielimplementierung befindet sich jeweils in A.2 ab Seite 71, es wird aber bei den Beispielen stets gesondert darauf hingewiesen.
Korrekturen
Das Skriptum wurde mit sehr großer Sorgfalt verfaßt, dennoch kann es sein, dass sich
einige Fehler eingeschlichen haben. Wir sind für jeden Korrekturvorschlag dankbar,
egal ob es sich um inhaltliche, grammatische oder Rechtschreibfehler handelt. Wenn
Studenten der Vorlesung einen inhaltlichen oder logischen Fehler entdecken, so wird
das bei der ersten Mitteilung an [email protected] mit einem Mitarbeitspunkt belohnt.
vii
Über dieses Skriptum
Das vorliegende Skriptum wurde in der Satzsystem LATEX 2ε geschrieben. Als Editor
wurde Kile verwendet, als Desktop kam die Oberfläche KDE zum Einsatz. Die Grafiken
wurden mit dem Graphviz Toolkit erstellt. Alle der genannten Programme wurden
ausschliesslich unter dem freien Betriebssystem Linux verwendet.
viii
Kapitel 1
Übersicht
“Die Produktionswirtschaft befasst sich mit dem Management von Technologie-, Produktionsund Logistikprozessen in Unternehmen.” [Wik07b] In diesem Skriptum beschäftigen wir
uns mit Produktionswirtschaft als Teilbereich der Logistik. Logistik
• überwindet Zeit und Raum für Güter und Lebewesen
• besteht aus Transport- (Routen-), Standortplanung und Lagerhaltung
Zur Produktionswirtschaft zählen auch Maschinenbelegunsplanung, Produktionsprogrammplanung und Spezialgebiete wie die Termin- und Kapazitätsplanung. Nicht in
diesem Skriptum behandelt ist unter anderem die Entsorgungslogistik.
Die erklärten Lösungsansätze gliedern sich in optimale und heuristische Verfahren.
Erstere haben wie der Name schon sagt den Vorteil, dass sie optimale Lösungen liefern, jedoch benötigen Sie in der Regel signifikant mehr Zeit zur Berechnung (mehr
Rechenzeit auf dem Computer). Daher wird häufig auch auf heuristische Verfahren1
zurückgegriffen, da diese in der Regel viel schneller brauchbar genaue Lösungen liefern.
Welche Art von Verfahren verwendet wird hängt natürlich, neben dem Problem selbst,
davon ab, wieviel Zeit und Rechenkapazität zur Verfügung stehen (Vorgaben) und wie
hoch die Qualität der Lösung sein muss.
1.1
Einführungsbeispiel: Computerterminals verbinden
Gegeben sei ein Raster von Computerterminals, welche es miteinander zu verbinden
gilt, wobei die gesamte Kabellänge zu minimieren ist. Der hier angewendete Algorith1
Heuristische Verfahren sind Schätzverfahren
1
2
KAPITEL 1. ÜBERSICHT
mus2 lautet
1. starte mit einem beliebigen Knoten3 (hier: Terminal)
2. schließe in jedem weiteren Schritt jenen Knoten an die bisherige Lösung an, der
die kürzeste Entfernung zu ihr (zu irgendeinem ihrer Knoten) hat
3. höre auf, wenn alle Knoten in der Lösung enthalten sind
Aus der obigen Beschreibung wird ersichtlich, dass im Fall von n miteinander zu verbindenden Terminals, n − 1 Iterationen4 nötig sind. Zur Berechnung dieses Beispiels sei
an den Satz von Pythagoras erinnert, mit dem aus Ankathete und Gegenkathete die
Hypotenuse eines rechtwinkeligen Dreiecks berechnen kann. Die sicher noch bekannte
Formel dazu lautet a2 + b2 = c2 .
2
“Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift
zur Lösung eines Problems oder einer bestimmten Art von Problemen in endlich vielen Schritten.”
[Wik08a]
3
Im Englischen wird die Bezeichung “Vertex” verwendet.
4
Eine Iteration ist ein Durchlaufschritt einer Schleife oder eines Algorithmus.
Kapitel 2
Bäume, Entfernungen und Wege
Ein Baum ist in der Graphentheorie ein spezieller Graph. Je nachdem, ob die Kanten1
(Verbindungen der Knoten) des Baumes eine ausgezeichnete Richtung besitzen, lassen sich graphentheoretische Bäume unterteilen in gerichtete und ungerichtete Bäume.
Eine Kante ist die Verbindung zwischen zwei Knoten (Elementen) eines Baumes. In
Abbildung 2.1 sind die Knoten 1 bis 10 zu einem Teilbaum verbunden, 11 und 12
sind isolierte Knoten. Unter den gerichteten Graphen kann man weiters zwischen zyklischen2 und azyklischen Graphen3 unterscheiden. Weiters unterscheidet man, ob ein
Graph gewichtet4 ist oder nicht. Für mehr Informationen siehe [Wik08b].
2.1
Minimal spannende Bäume
Ein mimimal spannender Baum5 ist eine Sonderform eines ungerichteten, gewichteten
Graph. Um als mimimal spannender Baum klassfiziert zu werden, müssen alle Knoten
zu minimalen Kosten miteinander verbunden sein (das heisst, dass der Graph auch
zyklenfrei sein muss, sofern die Kosten jeder Kante größer oder gleich Null sind). Die
Abbildungen 2.3 und 2.4 auf Seite 5 zeigen einen ungerichteten, bewerteten Graphen
und den dazugehörigen minimal spannenden Baum. Praktisch relevant sind minimal
spannende Bäume bei jedem Versorgungsproblem, bei dem es darum geht, Orte oder
Objekte entweder direkt oder indirekt miteinander zu verbinden (zum Beispiel bei
Telefon- oder anderen Leitungen um die Kosten zu minimieren).
Zur Lösung dieser Klasse von Problemen haben insbesondere der Algorithmus von
1
Im Englischen bezeichnet man Kanten als “Edges”
Ein zyklischer Graph ist ein gerichteter Graph (auch Digraph genannnt), welcher Zyklen enthält
bzw. enthalten darf.
3
Ein azyklischer Graph darf keinen Zyklus (d. h. keinen geschlossenen, in Pfeilrichtung durchlaufbaren Kreis) enthalten.
4
Bei einem gewichteten Graphen sind die Kanten mit Zahlen versehen, die Kosten darstellen.
5
Englisch: minimum weight spanning tree (MST)
2
3
4
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
Teilbaum
isolierte Knoten
a
1
j
i
2
5
3
b
12
4
11
c
6
7
8
d
10
f
e
9
Abbildung
Graph)
2.1:
Baum
(ungerichteter Abbildung 2.2: Baum (gerichteter Graph)
Prim und jener von Kruskal praktische Bedeutung erlangt, von denen der erstere im
nächsten Abschnitt beschrieben ist.
2.1.1
Algorithmus von Prim
Der Einfachheit halber beschränken wir uns auf eine simplifizierte Version des Verfahrens, welche lediglich für zusammenhängende Graphen einen minimal spannenden
Baum findet. Ausgangspunkt ist also ein bewerteter, ungerichteter, zusammenhängender
Graph mit n Knoten. Gibt es mehr als eine Kante mit minimalen Kosten, so ist es für
die Optimallösung egal, welche ausgewählt wird.
Eine formelle Bescheibung des Algorithmus kann auf zwei grundsätzlich verschiedene Arten erfolgen. Die eine ist nur für Menschen bestimmt und kommt mit relativ
geringen Formvorschriften aus. Diese “simplere” Art, den Algorithmus zu beschreiben
ist bereits aus dem Einführungsbeispiel auf Seite 1 bekannt. Von sehr großer praktischer Bedeutung ist es aber, solche Probleme auch mit dem Computer lösen zu können.
Dazu muß ein Algorithmus auch in der Form einer Programmiersprache dargestellt
werden. Diese hochformelle Schreibweise ist je nach verwendeter Programmiersprache
unterschiedlich und auch der Schwierigkeitsgrad der Lesbarkeit für Menschen hängt
stark von der verwendeten Programmiersprache ab. Wir haben uns aufgrund ihrer
Einfachheit und Eleganz für die Sprache Python entschieden. Leser, die noch nie mit
einer Programmiersprache gearbeitet haben sollen von dem folgenden Beispiel nicht
abgeschreckt werden - der Einstieg in eine Programmiersprache erfolgt in der Regel
mit viel einfacheren Beispielen. Eine simplere Darstellung des Algorithmus von Prim
mit einer Programmiersprache ist aber leider (derzeit) schwer vorstellbar. Der in Folge abgedruckte Python Sourcecode ist eine leicht modifizierte Version einer Funktion
2.1. MINIMAL SPANNENDE BÄUME
7
6
2
6
4
3
5
5
2
3
4
5
2
2
3
1
5
7
6
1
6
4
3
5
5
2
3
2
1
4
5
2
2
3
1
4
1
Abbildung 2.3: Angabe: gewichteter, un- Abbildung 2.4: Lösung: minimal spannengerichteter Graph
der Baum
von Donald L. Rivest6 und hat rein demonstrativen Charakter - es ist also für die
Studierenden nicht nötig, dieses Quellcodebeispiel zu verstehen. Eine mathematisch
interessantere, aber kompliziertere Version des Algorithmus7 findet sich in [Pre03].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# Copyright (C) 2006 Ronald L. Rivest
# You may copy, modify and distribute this software according to the terms of
# the Gnu GPL (see file COPYING for details)”””
# The prim(vertices) function is a slightly modified version of
# prim(balls) taken from http://people.csail.mit.edu/rivest/mst.py
inf = float("infinity")
def prim(vertices):
"""
Find mst of set of vertices with Prim’s algorithm.
Return set of edges.
"""
if len(vertices)==0:
return []
mstEdgeList = []
v0 = vertices[0]
Q = vertices[1:]
for vertex in Q:
6
7
http://people.csail.mit.edu/rivest/mst.py
Program 16.18 http://www.brpreiss.com/books/opus7/programs/index.html
6
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
vertex.d = dist(vertex,v0)
vertex.pred = v0
while Q != []:
min d = inf
for vertex in Q:
if vertex.d < min d:
min d = vertex.d
closestVertex = vertex
Q.remove(closestVertex)
v0 = closestVertex
v1 = closestVertex.pred
mstEdgeList.append((v0,v1))
for vertex in Q:
d = dist(vertex,closestVertex)
if d<vertex.d:
vertex.d = d
vertex.pred = closestVertex
return mstEdgeList
Laufzeitanalyse
Da Laufzeit eines Programmes in der Praxis von sehr großer Bedeutung ist, sei hier
8
kurz darauf hingewiesen
.
P
O(n + n log n +
ρ(v) · log n) = O(m · log n)
v∈V
O obere Schranke (für die Laufzeit und den Speicherbedarf)
n...Einfügen
n log n...MIN entfernen
log n...p(v) anpassen
⇒ O(m log n)
[Aic02]
Speicheranalyse
O(m + n) = O(m)
[Aic02]
Alternative Beschreibung des Algorithmus
In [Gre07] findet sich eine alternative, formelle Art, den Algorithmus zu beschreiben.
8
Laufzeitanalyse ist nicht relevant für die Prüfung.
2.2. WEGE UND KÜRZESTE WEGE
7
Voraussetzung:
Ein zusammenhängender, bewerteter (ungerichteter) Graph G=[V,E,c] mit n Knoten
und den Bewertungen cij für alle [i,j]∈E; Startknoten a∈V; Felder T1,T2[1:n-1]
sowie D,R[1:n]; eine Knotenmenge IK; Iterationszähler it; Variable Z für die Summe
der Kantenbewertungen des Baumes.
Startbedingung:
it:=Z:=0; IK:=V-{a};
D[i]:=cai und R[i]:=a, ∀ i ∈ NB(a);
D[i]:=∞ sonst.
Iteration:
Bestimme den isolierten Knoten p, für den gilt: D[p]=min(D[i]|i∈ IK);
setze h:=R[p]; it:=it+1; T1[it]:=h; T2[it]:=p;
Z:=Z+D[p]; IK:=IK-{p};
for i ∈ IK do
if cpi <D[i] then begin D[i]:= cpi ; R[i]:=p end;
Abbruchbedingung:
IK=0
Ergebnis:
Die Felder T1 und T2 enthalten die Endknoten der Kanten eines minimal spannenden
Beumes von G. Z gibt den Wert des Baumes an.
2.2
Wege und kürzeste Wege
Im folgenden werden die Indizes i und j für die Zeilen und die Spalten einer m×n Matrix
verwendet. w(3, 1, 2, 5) bedeuted, dass der kürzeste Weg von 3 nach 5 über 1 und 2 geht.
Diese Klasse von Problemen geht von topologisch sortierten, gerichteten Graphen aus.
Topologisch sortiert heisst, dass alle Pfeile ihren Ursprung in einem Knoten haben,
der in der verwendeten Sortierreihenfolge vor dem Knoten kommt, in dem der Pfeil
endet. Ein solcher Graph enthält mindestens eine Quelle (einen Ursprung bzw. einen
Ausgangspunkt) und mindestens eine Senke (einen Endknoten). Optimallösungen zu
diesen Problemen sind mit der dynamischen Programmierung ermittelbar.
2.2.1
Shortest Path Problem
Auch als Shortest Route Problem bekannt. Gesucht ist dabei der kürzeste Weg von
einem Knoten zu einem anderen, also von einem Startknoten zu einem Endknoten.
Der Algorithmus zur Berechnung eines kürzesten Weges ist am besten anhand eines
Beispiels (siehe Abbildungen 2.5 und 2.6) zu erklären. Die Lösung wird dabei “von
hinten nach vorne”, also vom letzten Knoten zum ersten schrittweise berechnet.
8
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
fi
tij
n∗i
NF(i)
kürzester Weg von Knoten i zum Endknoten
Kosten zwischen zwei benachbarten Knoten i und j
der optimale Nachfolger von Knoten i
Menge der Nachfolger von Knoten i
3
1
3
2
0
4
3
2
3
7
4
4
5
5
7
6
3
4
4
1
6
1
8
7
Abbildung 2.5: Angabe: kürzester Weg
Problem
3
2
0
4
2
3
4
7
4
5
5
7
3
4
6
1
4
6
8
7
Abbildung 2.6: Lösung: kürzester Weg
Die Berechnung beginnt mit dem letzten Knoten und für jeden früheren Knoten gilt
fi =
min {tij + fj },
∀j∈NF(i)
i < #Knoten
Für unser Beispiel gilt also
f8 = 0
f7 = 6 + f8 = 6
n∗7 = 8
1 + f8 = 1
f6 = min
=1
n∗6 = 8
4 + f7 = 10
f5 = 4 + f7 = 10
n∗5 = 7


 7 + f6 = 8 
= 8 n∗4 = 6
f4 = min 3 + f7 = 9


5 + f5 = 15 2 + f4 = 10
f3 = min
= 10 n∗3 = 4
4 + f5 = 14
4 + f3 = 14
f2 = min
= 14 n∗2 = 3
7 + f5 = 17


 3 + f4 = 11 
f1 = min 0 + f3 = 10
= 10 n∗1 = 3


3 + f2 = 17
Die kosten für den kürzesten Weg betragen also f1 = 10 und der Weg verläuft über die
Knoten 3, 4 und 6.
2.2.2
Longest Path Problem
Auch als Lontest Route Problem bekannt. Es kommt in der Praxis eigentlich nur in
der Netzplantechnik9 zur Bestimmung sogenannter kritischer Pfade vor. Ein kritischer
9
“Der Begriff Netzplantechnik umfasst alle Verfahren zur Analyse, Beschreibung, Planung, Steuerung und Überwachung von Abläufen auf der Grundlage der Graphentheorie, wobei Zeit, Kosten,
2.2. WEGE UND KÜRZESTE WEGE
9
Pfad ist der längste Pfad in einem Netzplan, also jene Zeit, die das Projekt mindestens
zur Durchführung braucht.
3
1
3
2
2
4
3
2
3
7
4
4
5
5
7
6
3
4
4
6
1
1
8
7
Abbildung 2.7: Angabe: längster Weg
Problem
3
2
2
4
2
3
4
7
4
5
5
7
3
4
6
6
4
1
8
7
Abbildung 2.8: Lösung: längster Weg
fj
längster Weg von Knoten 1 zu Knoten j
tij
Kosten zwischen zwei benachbarten Knoten i und j
∗
der optimale Vorgänger von Knoten j
vj
VG(j) Menge der Vorgänger von Knoten j
Die Berechnung beginnt mit dem ersten Knoten (f1 = 0) und für jeden weiteren Knoten
gilt
fj =
max {tij + fi },
∀i∈VG(j)
j ≤ #Knoten
Für unser Beispiel aus Abbildung 2.7 gilt für den längsten Weg also
f1 = 0
f2 = 3 + f1 = 3
2 + f1 = 2
f3 = max
=7
4 + f2 = 7
3 + f1 = 3
f4 = max
=9
2 + f3 = 9


 7 + f2 = 8 
f5 = max 4 + f3 = 9
= 14


5 + f4 = 14
f6 = 7 + f4 = 16


 3 + f4 = 12 
f7 = max 4 + f5 = 18
= 20


4 + f6 = 20 6 + f6 = 22
f8 = max
= 22
1 + f7 = 21
v2∗ = 1
v3∗ = 2
v4∗ = 3
v5∗ = 4
v6∗ = 4
v7∗ = 6
v8∗ = 6
Einsatzmittel bzw. Ressourcen berücksichtigt werden können. [Ein Netzplan ist die] graphische oder
tabellarische Darstellung von Abläufen und der Abhängigkeiten. Die Netzplantechnik findet ihre Anwendung insbesondere in der Terminplanung von Projekten.” [Wik08d]
10
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
2.2.3
FIFO-Algorithmus
Optimalverfahren, dessen Resultat die kürzesten Wege von einem Knoten zu jedem
anderen Knoten sind. Dieser Algorithmus gehört zur Gruppe der Baumalgorithmen.
Das Verfahren liefert für einen gewählten Startknoten einen kürzesten Weg und dessen
Länge zu jedem erreichbaren Knoten. Ausgangspunkt ist ein bewerteter, gerichteter
Graph mit n Knoten. Das Verfahren verwendet ein Datenfeld mit n einträgen, welches
die Entfernungen zu allen Punkten vom Startknoten beinhaltet10 . Weiters wird bei
dem Verfahren für jeden Knoten gespeichert, von welchem Vorgänger aus die kürzeste
Entfernung vom Startknoten zu ihm zu erzielen ist. Nach Abschluß des Verfahrens läßt
sich mit Hilfe dieser besten Vorgänger rekursiv ein kürzester Weg zu jedem Knoten
konstruieren. Dazu geht man vom Zielknoten aus, der seinen besten Vorgänger gespeichert hat. Von diesem Vorgänger liest man dessen Vorgänger ab... das Ganze wiederholt
man, bis man beim Startknoten angekommen ist. Auf eine detaillierte Erkärung der
Funktionsweise des Algorithmus und ein zugehöriges Beispiel wird aus Zeitgründen
verzichtet.
2.2.4
Tripel-Algorithmus
Optimalverfahren, dessen Resultat die kürzesten Wege von jedem Knoten zu jedem
anderen Knoten, also alle kürzesten Wege eines Graphen G sind. Dieser Algorithmus
ist einer der wichtigsten Vertreter der Gruppe der Matrixalgorithmen. Am Besten ist
auch dieses Verfahren anhand eines Beispiels zu erklären. Betrachten wir dazu den
sehr simplem Graphen 2.9, in dem vier Knoten miteinander verbunden sind. In diesem
einfachen Fall könnte die Lösung der kürzesten Wege natürlich auch durch einfaches
“Hinsehen” gefunden werden, aber zum Verstehen des Algorithmus ist es ausreichend.
Dass für einen Graphen mit hunderten von Knoten die Lösung nicht mehr durch Hinsehen zu finden ist, durch einen Computer mit diesem Algorithmus aber noch immer
schnell lösbar ist, sollte auch klar sein.
Ausgangspunkt ist ein bewerteter, gerichteter Graph, der auch Zyklen enthalten
darf11 Zuerst sind aus dem Graphen eine Kosten- und eine Vorgängermatrix zu erstellen. Die Kostenmatrix gibt die direkten Kosten von jedem Knoten zu jedem anderen
Knoten an - das heisst, dass die Kosten ∞ sind, wenn keine direkte Verbindung zwischen zwei Knoten besteht (in diesem Fall zum Beispiel vom Knoten eins zum Knoten
vier). Der Aufbau der Matrizen ist generell so, dass der Ausgangspunkt in der Zeile
und das Ziel in der Spalte indiziert ist. Die Kosten vom ersten Knoten zum vierten
Knoten finden sich also in der ersten Zeile in der vierten Spalte. Der Aufbau der
Vorgängermatrix ist analog, jedoch sind hier die direkten Vorgänger einzutragen. Zum
Beispiel ist der Knoten direkt vor dem 3. Knoten am Weg von 1 nach 3 Knoten 1. Gibt
es keinen direkten Vorgänger, so ist 0 einzutragen (dies trifft genau für jene Felder zu,
in denen in der Kostenmatrix ∞ eingetragen ist. Die Hauptdiagonale der Kostenma10
11
Die Entfernung vom Startknoten zu ihm selbst ist stets 0.
Die Zyklen dürfen keine negativen Kosten aufweisen.
2.2. WEGE UND KÜRZESTE WEGE
11
trix ist stets 0, die Hauptdiagonale der Vorgängermatrix hat stets den Zeilen-/ und
Spaltenindex eingetragen (also 1, 2, 3,...). Sehen wir uns den ersten Schritt an
C(G) :=
Kostenmatrix vor Anwendung des Algorithmus. Es werden nur Kosten
zu den direkten Nachbarn erfasst, alle anderen Kosten sind ∞.
Ci (G) :=
Kostenmatrix nach der i-ten Iteration
D(G) :=
Distanzmatrix, die Kostenmatrix nach der letzten Iteration
V G(G) := Vorgängermatrix vor Anwendung des Algorithmus. Vorgänger ist der vorletzte Knoten auf der direkten Verbindung.
V Gi (G) := Vorgängermatrix nach der i-ten Iteration
R(G) :=
Erreichbarkeitsmatrix (reachability), die Vorgängermatrix nach der letzten Iteration
0
V1
1
2
V2
V3
3
5
1
1
V4
Abbildung 2.9: Beispiel für kürzeste Wege

0
 2
C(G) = 
 ∞
∞


1 0 ∞

0 ∞ 5 
 V G(G) = 

3 0 1 
1 ∞ 0
1
2
0
0
1
2
3
4
1
0
3
0

0
2 

3 
4
Bemerkenswert ist im obigen ersten Schritt auch die Markierung der ersten Zeile
und Spalte, die bereits Teil des Algorithmus ist. Die markierte Zeile und Spalte wird
im jeweiligen Schritt “fix” gesetzt, also nicht verändert und kann daher direkt für
den nächsten Schritt übernommen werden. Die Hauptdiagonale beider Matrizen kann
natürlich auch übernommen werden12 . Alle anderen Felder müssen nach folgendem
Muster geprüft und eventuell neu berechnet werden:
• übernimm Element cij der Kostenmatrix ohne Änderung in die nächste Iteration,
wenn es kleiner oder gleich der Summe des i-ten Elements der markierten Spalte
und des j-ten Elements der markierten Zeile ist; übernimm in diesem Fall auch
Element vgij der Vorgängermatrix ohne Änderung in die nächste Iteration
• sonst ersetze cij der Kostenmatrix mit der Summe des i-ten Elements der markierten Spalte und des j-ten Elements der markierten Zeile der Kostenmatrix und
ersetze vgij der Vorgängermatrix mit dem j-ten Element der markierten Zeile der
Vorgängermatrix
12
Der Vorgänger jedes Knoten ist per Definition auch immer der Knoten selbst und die Kosten
betragen in diesem Fall natürlich stets 0.
12
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
Konkret heisst das zum Beispiel für Element c32 = 3, dass es in den nächsten Schritt
einfach übernommen werden kann, da 3 ≤ ∞ + 1. Das korrespondierende Element vg32
der Vorgängermatrix kann also auch für den nächsten Schritt übernommen werden.
Für das Element c23 = ∞ gilt aber, da ∞ > 0 + 2 ist, dass es im nächsten Schritt den
Wert 0+2=2 annimmt. Gleichzeitig wird das Element vg23 = 0 der Vorgängermatrix
durch das j-te Element der markieren Zeile der Vorgängermatrix (in diesem Fall ist
das vg13 = 1) ersetzt.
Das funktioniert, weil es um von 2 nach drei zu kommen keine direkte Verbindung
gibt, jedoch gibt es eine Verbindung von 2 nach 1 und eine von 1 nach 3. Die Kosten
für diese indirekte Verbindung sind daher die Summe aus den Kosten von 2 nach 1 und
von 1 nach 3 (hier 2+0) und der neue direkte Vorgänger von 3 auf dem Weg von 2 nach
3 ist Knoten 1. C1 (G) und V G1 (G) stellen die Kostenmatrix und die Vorgängermatrix
nach dem ersten Schritt dar.

0
 2
C1 (G) = 
 ∞
∞


1 0 ∞

0 2 5 
 V G1 (G) = 

3 0 1 
1 ∞ 0
1
2
0
0
1
2
3
4
1
1
3
0

0
2 

3 
4
Nach der ersten Iteration werden die zweite Zeile und die zweite Spalte markiert
und das gleiche Verfahren wird angewendet. In diesem Schritt werden die drei Unendlichen Kosten ersetzt. Dass weder in der ersten noch in der zweiten Iteration in
der Kostenmatrix eine Zahl durch eine kleinere ersetzt wurde (sondern nur Unendlich
durch Zahlen), ist reiner Zufall.

0
 2
C2 (G) = 
 5
3
1
0
3
1
0
2
0
3


6

5 
 V G2 (G) = 

1 
0
1
2
2
2
1
2
3
4
1
1
3
1

2
2 

3 
4
Nach der zweiten Iteration werden für die dritte Iteration die dritte Zeile und die
dritte Spalte markiert. In dieser Iteration werden (unter anderem) c14 = 6 durch c14 =
0 + 1 = 1 und vg14 = 2 durch vg14 = 3 ersetzt. Es sollte jetzt bereits erkennbar sein,
dass der Algorithmus in jeder Iteration genau gleich funktioniert.

0
 2
C3 (G) = 
 5
3
1
0
3
1
0
2
0
3


1

3 
 V G3 (G) = 


1
0
1
2
2
2
1
2
3
4
1
1
2
1

3
3 

3 
4
Auch der vierte und in diesem Fall letzte Schritt (da es sich um eine 4 × 4 Matrix
handelt) funktioniert ident wie die vorherigen. Jede Iteration bringt die vorhandenen
Matrizen näher an die Optimallösung und die letzte Iteration hat die Optimallösung
2.2. WEGE UND KÜRZESTE WEGE
13
als Resultat. Daher werden auch neue Namen für dieses Resultat vergeben - D(G)
(distance, Distanzmatrix) und R(G) (reachability, Erreichbarkeitsmatrix). Da auch kein
weiterer Schritt erfolgt, werden auch keine Zeile und keine Spalte mehr markiert. Ist
ein Wert der Distanzmatrix ∞ und damit ein Wert der Erreichbarkeitsmatrix 0, so
bedeuted das, dass es keine Verbindung zwischen diesen Elementen gibt.
Die Kosten von jedem Element zu jedem anderen können einfach aus der Distanzmatrix abgelesen werden, die Erreichbarkeitsmatrix gibt sogar Schritt für Schritt den
gesamten optimalen Weg an. Beispielsweise ist der optimale Weg von Knoten 3 zum
Knoten 1 wie folgt abzulesen: am Weg von 3 nach 1 ist (laut Element r31 = 2 der
Erreichbarkeitsmatrix) 2 der vorletze Knoten. Daher betrachtet man nun den Weg von
3 nach 2 - hier ist 4 der vorletzte Knoten. Daher betrachtet man den Weg von 3 nach
4. Da nun der vorletzte Knoten der Knoten 3 ist, ist man fertig mit dem Weg von 3
nach 1 - dieser ist also 3 nach 4 nach 2 nach 1.

C4 (G)
D(G)
0
 2
=
 4
3
1
0
2
1
0
2
0
3


1

3 
 V G4 (G) = 


1
R(G)
0
1
2
2
2
1
2
4
4
1
1
3
1

3
3 

3 
4
Aufgrund der verhältnismässig hohen Komplexität eines korrespondierenden Computerprogramms wird hier kein Sourcecode abgedruckt.
14
KAPITEL 2. BÄUME, ENTFERNUNGEN UND WEGE
Kapitel 3
Das Transportproblem
Das Transportproblem ist eine Fragestellung aus dem Operations Research: zum Transport einheitlicher Objekte von mehreren Angebots- zu
mehreren Nachfrageorten ist ein optimaler, d.h. kostenminimaler Plan zu
finden, wobei die vorhandenen und zu liefernden Mengen an den einzelnen Standorten gegeben sowie die jeweiligen Transportkosten pro Einheit
zwischen allen Standorten bekannt sind.
Bereits 1781 formulierte Monge ein allgemeines Transportproblem mathematisch. Beim Standardfall einer bezüglich der Transportmengen linearen Kostenfunktion handelt es sich um ein Problem der linearen Optimierung, für das neben den Standardmethoden wie Simplex-Verfahren spezielle Lösungsalgorithmen existieren. Als eines der ersten Themengebiete des
Operation Research wurde das Problem schon 1939 von Kantorowitsch als
mathematisches Modell formuliert. In den 50er Jahren des 20. Jahrhunderts
entwickelten Dantzig, Charnes und Cooper, sowie Ford und Fulkerson verschiedene Lösungsalgorithmen.
Das klassische Transportproblem ohne Kapazitätsbeschränkungen auf
den Transportwegen ist ein Spezialfall des kapazitierten Transportproblems,
das für Wege Mindest- oder Höchsttransportmengen festlegt. Klassisches
und kapazitiertes Transportproblem sind wiederum Spezialfälle des (kapazitierten) Umladeproblems, bei dem es neben Angebots- und Nachfrageorten noch reine Umladeorte gibt. Ein Sonderfall des Transportproblems ist
das Zuordnungsproblem, bei dem an jedem Ort nur eine Einheit angeboten
bzw. nachgefragt wird. [Wik08g]
Abbildung 3.1 zeigt ein solches Transportproblem für drei Anbieter Ai , ∈ {1, 2, 3}
und drei Nachfrager Nj , j ∈ {1, 2, 3}. Die Kosten für den Transport von Ai nach Nj
sind durch die 3 × 3 Matrix C = cij gegeben. Die Angebots- und Nachfragemengen
werden durch ai und nj ausgedrückt.
Für das Transportproblem existiert mindestens eine (optimale) Lösung, wenn alle
Angebotsmengen, alle Nachfragemengen und alle Transportkosten größer oder gleich
15
16
KAPITEL 3. DAS TRANSPORTPROBLEM
A1
c12
A3
c32 c11 c31
N2
N1
A2
c22
c13
c33
c21
c23
N3
Abbildung 3.1: Klassisches Transportproblem
Null sind (ai ≥ 0, bj ≥ 0, cij ≥ 0∀i∀j),
Summe der Angebotsmengen gleich
P die P
der Summe der Nachfragemengen ist ( ai =
bj ) und alle Wege benutzbar sind
(cij 6= ∞ ∀i∀j).
Unter obigen Bedingungen kann jedes Transportproblem mit dem Simplex Algorithmus1 gelöst werden. In allgemeinen verwendet man aber statt dem Simplex Algorithmus eine Eröffnungsheuristik in Kombination mit einem Verbesserungsverfahren,
welche auch stets eine optimale Lösung liefern. Der Vorteil dieser Kombination liegt in
der reduzierten Rechenzeit.
3.1
Primale und Duale Transportprobleme
Wie im letzten Absatz kurz erklärt, gibt es zwei grundsätzlich unterschiedliche Arten, zu einer Lösung zu kommen, die über die Zusammenhänge zwischen primalen und
dualen Transportproblemen miteinander verbunden sind. Die primalen Algorithmen
nützen generell die Beziehungen zwischen primalen und dualen Problemen zum Auffinden einer Lösung (die Koeffizentenmatrix ist lediglich eine binäre Matrix). Die duale
Darstellung ist nötig, weil in den Abschnitten 3.3.1 und 3.3.2 beschriebenen Stepping
Stone und Modi Methoden darauf beruhen - beide sind in der Regel performanter als
der Simplex Algorithmus.
3.1.1
Formulierung als lineares Programm
Die Variablen xij stellen die Menge dar, die von Ai nach Bj transportiert werden. Die
Gesamtkosten, die es zu minimieren gilt, sind die Summe der Produkte von xij ∗ cij
2
. Gesucht ist also ein Transportplan mit minimalen Kosten, der die Beschränkungen
hinsichtlich der lieferbaren Mengen einhält und die Nachfrage an allen Nachfrageorten
(voll) erfüllt. Es folgt eine mathematische Darstellung dieses primalen Transportproblems.
1
2
siehe http://de.wikipedia.org/w/index.php?title=Simplex-Verfahren&oldid=43247648
für Abbildung 3.1 sind das x11 ∗ c11 + x12 ∗ c12 + x13 ∗ c13 + x21 ∗ c21 + ... + x32 ∗ c32 + x33 ∗ c33
3.1. PRIMALE UND DUALE TRANSPORTPROBLEME
17
minimiere die Gesamtkosten
minimiere:
m X
n
X
cij xij
i=1 j=1
unter den Nebenbedingungen
∀i :
n
X
xij = ai
j=1
∀j :
m
X
xij = nj
i=1
∀i∀j : xij ≥ 0
Die erste Nebenbedingung verlangt, dass die Angebotsmenge an jedem Angebotsort
komplett aufgebraucht wird, die zweite verlangt analog für jeden Nachfrageort, dass
die Nachfrage vollständig erfüllt werden muss. Die Transportmengen dürfen selbstverständlich nicht negativ sein, was in der dritten Nebenbedingung ausgedrückt ist.
Oft wird auch die Ganzzahligkeit der transportierten Mengen verlangt, d.h. xij ∈ N0 .
Dieses Transportproblem kann durch Einführung neuer Variablen (für jede Kapazitätsrestriktion ein ui und für jede Nachfragerestriktion ein vj ) auch als duales Transportproblem formuliert werden (der rechnerische Vorgang wird im folgenden Beispiel
erläutert).
m
n
X
X
maximiere:
ai u i +
nj vj
i=1
j=1
unter den Nebenbedingungen
∀i∀j : ui + vj ≤ cij ,
3.1.2
ui , vj ∈ R
Einführungsbeispiel
Gegeben seien die Angebotsmengen Ai = {25, 15, 10} und die Nachfragemengen Ni =
{30, 15, 5}. Die Matrix der Transportkosten C = cij ist gegeben mit


1 2 1
C= 2 1 2 
2 3 3
Darstellung der Gleichungen (Primales Problem)
minimiere:1x11 + 2x12 + 1x13 + 2x21 + 1x23 + 2x23 + 2x31 + 3x32 + 3x33

A1 : x11 + x12 + x13 = 25 
A2 : x21 + x22 + x23 = 15
Angebotsrestriktionen

A3 : x31 + x32 + x33 = 10
18
KAPITEL 3. DAS TRANSPORTPROBLEM
N1 : x11 + x21 + x31 = 30
N2 : x12 + x22 + x32 = 15
N3 : x13 + x23 + x33 = 5


Nachfragerestriktionen

∀i∀j : xij ≥ 0
Lösung in GLPK
Das obige Problem kann bequem mit dem GNU Linear Programming Kit dargestellt
und gelöst werden. Eine ausführlichere Beschreibung desselben findet sich in Abschnitt
A.1 ab Seite 67. Wie generell in der Programmierung üblich, sind Variablennamen
etc. auf Englisch geschrieben; Zeilen, die mit einem Raute-Zeichen (#) beginnen, sind
Kommentare.
/*********************************************************************
* Module name: transport-problem
* Description: Linear Program solving a transport problem
* Language: glpk
* Author: Gerald Senarclens de Grancy
* Copyright: GPL - see file COPYING
********************************************************************/
## parameters
# Suppliers
set A;
# Consumers
set N;
# capacity of supplier A in cases
param a{i in A};
# demand of consumer N in cases
param n{j in N};
# transport cost for delivery
param c{i in A, j in N};
## variables
var x{i in A, j in N}, >= 0;
## objective
minimize cost: sum{i in A, j in N} c[i,j] * x[i,j];
## constraints
supply{i in A}: sum{j in N} x[i,j] = a[i];
demand{j in N}: sum{i in A} x[i,j] = n[j];
## data
data;
set A := supplier1 supplier2 supplier3;
3.1. PRIMALE UND DUALE TRANSPORTPROBLEME
set N := customer1 customer2 customer3;
param a := supplier1 25
supplier2 15
supplier3 10;
param n := customer1 30
customer2 15
customer3 5;
param c :
customer1 customer2
supplier1
1
2
supplier2
2
1
supplier3
2
3
end;
19
customer3 :=
1
2
3;
Das obige Beispiel und die dazugehörige Lösung können, wie in Anhang A ab Seite 67
beschrieben, heruntergeladen und ausprobiert werden.
Überführung in duales Problem
Jedem primalen Problem ist ein anderes lineares Programm zugeordnet: das duale
Problem. Die engen Zusammenhänge zwischen primalen und dualen Problemen werden
sowohl beim Beweis von Sätzen der linearen Optimierung als auch bei der praktischen
Lösung linearer Programme ausgenutzt. Das duale Problem des dualen Problems ist
stets wieder das Ursprungsproblem. Siehe dazu auch [Wik07a].
Die Gleichungen aus 3.1.2 können auch in folgender Form angeschrieben werden
(wir führen gleichzeitig u1 , u2 , u3 und v1 , v2 , v3 ein). Die oberste Zeile der folgenden
Matrix enthält die Kosten cij . Die mit römischen Zahlen markierten Zeilen enthalten
die Nebenbedingungen (I bis III sind die Angebotsrestriktionen, IV bis V I sind die
Nachfragerestriktionen).
xij
1
2
1
2
1
2
2
3
3
NB x11 x12 x13 x21 x22 x23 x31 x32 x33
I
1
1
1
II
1
1
1
III
1
1
1
IV
1
1
1
V
1
1
1
VI
1
1
1
25
15
10
30
15
5
u1
u2
u3
v1
v2
v3
∀i∀j : xij ≥ 0
Die obige Darstellung kann nun einfach in ein duales Problem umgewandelt werden,
indem man die vorhandene Matrix transponiert3 wird (genaugenommen wird nur der
3
Transponieren einer Matrix, ist die Bezeichnung für das Vertauschen von Zeilen und Spalten, also
das Spiegeln an der Hauptdiagonalen
20
KAPITEL 3. DAS TRANSPORTPROBLEM
Bereich mit den 1ern transponiert).
25 15 10 30 15 5
u1 u2 u3 v1 v2 v3
1
1
1
1
1
1
1
1
1
1
1
1
1 1
1
1
1
1
≤1
≤2
≤1
≤2
≤1
≤2
≤2
≤3
≤3
ui , vj ∈ R
Auch das obige Tableux des dualen Problems könnte mit Hilfe des Simples Algorithmus
gelöst werden. Die Zielfunktion hat sich beim überführen allerdings auch zu
maximiere:Z(u, v) =
m
X
ai ∗ ui +
i=1
n
X
ni ∗ vi
j=1
geändert. Im folgenden kommen wir aber zum eigentlichen Sinn dualer Probleme der Aufteilung in eine Eröffnungsheuristik gefolgt von einem Verbesserungsverfahren wodurch eine optimale Lösung mit geringerer Rechenzeit möglich ist.
3.2
Eröffnungsheuristiken
Iterative Verfahren, die mit Hilfe einfacher Algorithmen eine zulässige Basislösung
(auch Ausgangslösung oder Startlösung genannt) für ein Transportproblem suchen.
Diese Basislösungen bestehen aus m + n − 1 Basisvariablen (BV ≥ 0)4 ; die Nichtbasisvariablen sind alle gleich 0 (N BV = 0). Diese Basislösungen können im Anschluss
Verbesserungsverfahren (siehe Abschnitt 3.3 auf Seite 25) zu einer Optimallösung aufgewertet werden. Besonders bekannte Verfahren zum Auffinden einer Basislösung sind
• die Nordwesteckenregel
• das Rangfolgeverfahren
• die Russell’sche Approximationsmethode
• die Spaltenminimummethode (auch Matrixminimumverfahren genannt)
• die Vogelsche Approximationsmethode (VAM, VAV)
4
Sind alle BV > 0, so hat man eine “normale” Basislösung, existieren auch BV = 0, spricht man
von einer degenerierten Lösung.
3.2. ERÖFFNUNGSHEURISTIKEN
21
von denen wir die Nordwesteckenregel und die Spaltenminimummethode im Folgenden
näher beschreiben werden.
3.2.1
Nordwesteckenregel
Besonders einfaches heuristisches Verfahren (Näherungsverfahren), dessen Ergebnis
darstellt, wieviel ein Lieferant an einen jeweiligen Kunden Liefert. Der Vorteil dieses Verfahrens liegt eindeutig in seiner Einfachheit und im geringen Rechenaufwand.
Das Hauptproblem ist, dass Transportkosten komplett ignoriert werden. Am Besten ist
der Algorithmus anhand des Beispiels aus Abschnitt 3.1.2 zu erklären. Gegeben seien
drei Anbieter A1 , A2 und A3 , welche drei Nachfrager B1 , B2 und B3 vollständig beliefern (die Summe der Angebotsmengen ist gleich der Summe der Nachfragemengen).
Die Angebotsmenge der Anbieter beträgt ai = {25, 15, 10}, die Nachfragenmengen sind
bj = {30, 15, 5}. Ausgangspunkt ist eine Matrix, in der nach und nach eingetragen wird,
welcher Anbieter welchen Nachfrager beliefert. Die rechte Spalte und die letzte Zeile
geben die noch nicht zugeordneten Liefer- bzw. Nachfragenmengen an.
B1 B2 B3
A1
A2
A3
bj 30 15 5
ai
25
15
10
Begonnen wird bei der manuellen Lösung links oben in der Matrix (daher der Name
des Algorithmus). A1 beliefert in diesem Fall B1 mit seinem vollen Angebot, da die
Nachfrage von B1 größer als das Angebot von A1 ist. Das verbleibende Angebot a1 von
A1 wird daher auf 0 gesetzt, die Restnachfrage b1 nach Belieferung durch die Menge
a1 = 25 von B1 auf 30 − 25 = 5.
B1
25
B2 B3
A1
A2
A3
bj 30 → 5 15
ai
25 → 0
15
10
5
Da der Vorrat von A1 bereits erschöpft ist, der Bedarf von B1 aber noch nicht voll
befriedigt ist, liefert nun A2 den Restbedarf (b1 = 5) von B1 . Man geht also Schritt für
Schritt weiter nach unten bzw. nach rechts und befüllt die Lösungsmatrix. Nach dem
nächsten Schritt sieht die Lösung also folgendermaßen aus
B1
25
5
B2 B3
A1
A2
A3
bj 5 → 0 15
5
ai
0
15 → 10
10
22
KAPITEL 3. DAS TRANSPORTPROBLEM
Weitere Zwischenschritte werden komprimiert dargestellt, da das Verfahren bereits klar
sein sollte (die Nummern über den Pfeilen geben die Reihenfolge der Schritte an). Die
Lösung sieht wie folgt aus
B1
B2
B3
ai
A1 25
0
1
A2 5
10
10 → 0
2
3
A3
5
5
10 → 5 → 0
1
2
3
bj 0 15 → 5 → 0 5 → 0
Voraussetzung für diesen Algorithmus
sind die Mengen ai und bj , sowie das Übereinstimmen
P
P
n
der Summen dieser Listen ( m
a
=
i
i
j bj ). Der Algorithmus liefert stets m + n − 1
Basisvariablen.
Der Zielfunktionswert beträgt
ZF =
3 X
3
X
xij cij = 25 ∗ 1 + 5 ∗ 2 + 10 ∗ 1 + 5 ∗ 3 + 5 ∗ 3 = 75
i=1 j=1
Formale Implementierung mit Python
wird so lange ausgeführt, bis das break statement erreicht
wird
break
bricht die innerste Schleife ab
len(sequence) gibt die Anzahl der Elemente einer Sequenz (zum Beispiel
einer Liste) zurück. len(a) würde im obigen Beispiel also 3
betragen.
while(True)
m = len(a)
n = len(b)
i = 0
j = 0
while(True)
x[i][j] = min(a[i],b[j])
a[i] = a[i] - x[i][j]
b[j] = b[i] - x[i][j]
if i==m-1 and j==n-1:
break
if a[i] == 0:
i+=1
else:
j+=1
Eine komplette Beispielimplementierung befindet sich in A.2.1 auf Seite 72.
3.2. ERÖFFNUNGSHEURISTIKEN
3.2.2
23
Spaltenminimummethode
Auch die Spaltenminimummethode ist ein heuristisches Verfahren. Sie berücksichtigt
im Gegensatz zur Nordwesteckenregel aber auch die Transportkosten und liefert dadurch bei nur geringfügig erhöhtem Rechenaufwand in der Regel viel bessere Ergebnisse. Auch sie sei am besten anhand des obigen Beispiels erklärt. Ausgangspunkt ist
diesmal die leere Matrix, jedoch sind in den Feldern die jeweiligen Transportkosten
hochgestellt eingetragen. Man beginnt bei dem Verfahren in der ersten Spalte und pro
Schritt eine Spalte nach rechts. Nachdem man bei der rechten Spalte angekommen
ist, beginnt man wieder mit der ersten Spalte, solange bis das gesamte Angebot der
gesamten Nachfrage zugeordnet ist.
A1
A2
A3
bj
B1 B2 B3 ai
1
2
1
25
2
1
2
15
2
3
3
10
30 15 5
Im ersten Schritt prüft man, welche Kosten in der ersten Spalte am geringsten sind.
Dies sind die Kosten c11 von A1 nach B1 und betragen 1. Daher wird hier die maximale
Liefermenge von 25 (Minimum aus a1 und b1 ) eingetragen und die erste Zeile markiert,
da dieser Anbieter keine Waren mehr übrig hat und daher nicht mehr berücksichtigt
werden muss.
B1
B2 B3
ai
1
2
1
(A1 )
25
25 → 0
2
1
2
A2
15
2
3
3
10
A3
bj
30 → 5 15 5
Im zweiten Schritt wird die zweite Spalte analog untersucht. Diesmal ist c22 = 1 das
Minimum. Es werden sowohl a2 als auch b2 Null. In diesem Fall darf nur die Spalte
markiert werden (damit der Algorithmus eine ausreichende Zahl an Basisvariablen
liefert).
B1
(B2 ) B3
ai
1
2
1
(A1 ) 25
0
2
1
2
A2
15 → 0
15
2
3
3
A3
10
bj
5 15 → 0 5
Im dritten Schritt wird die dritte Spalte untersucht. Da die erste Zeile schon markiert
ist, darf diese nicht miteinbezogen werden und das Minimum ist c23 = 2. Da a2 = 0
und b3 = 5 wird die zweite Zeile markiert.
B1 (B2 ) B3 ai
2
1
(A1 ) 251
0
2
1
2
(A2 )
15
0
0
2
3
3
A3
10
bj
5
0
5
24
KAPITEL 3. DAS TRANSPORTPROBLEM
Der vierte Schritt beginnt wieder mit der ersten Spalte. Da die ersten beiden Zeilen
bereits markiert sind, betragen die minimalen Kosten c31 = 2. In diesem Schritt kann
die erste Spalte markiert werden.
(B1 ) (B2 ) B3
ai
2
1
(A1 ) 251
0
2
1
2
(A2 )
15
0
0
2
3
3
A3
5
10 → 5
bj
5→0
0
5
Im fünften (und in diesem Fall letzten Schritt) untersucht man die dritte Spalte (die
zweite wird übersprungen, da sie bereits markiert ist. Auch in diesem Fall sind sowohl
a3 als auch b4 gleich Null, jedoch wird hier nur die dritte Zeile statt der dritten Spalte
markiert, da es sich um den letzten Schritt handelt (per Definition; der Algorithmus
terminiert, wenn alle Zeilen markiert sind und nur noch eine Spalte unmarkiert ist)
(A1 )
(A2 )
(A3 )
bj
(B1 ) (B2 )
B3
ai
2
1
251
0
2
1
2
15
0
0
2
3
3
5
5
5→0
0
0
5→0
Voraussetzung für diesen Algorithmus sind die Mengen ai und P
bj , die Kostenmatrix
Pn
C = cij , sowie das Übereinstimmen der Summen dieser Listen ( m
j bj ). Der
i ai =
Algorithmus liefert stets m + n − 1 Basisvariablen.
Formale Implementierung mit Python
exit()
continue
beendet das Programm
geht zum nächsten Durchlauf der innersten Schleife (bricht
also den aktuellen Durchlauf ab)
m = len(a)
n = len(b)
while(run):
for j in range(m):
if columnIsMarked(j): continue
min_index = getUnmarkedRowWithMinCost(j)
x[min_index][j] = min(a[min_index],b[j])
a[min_index] = a[min_index] - x[min_index][j]
b[j] = b[j] - x[min_index][j]
if unmarkedColumns()>=2 and b[j]==0:
markColumn(j)
if a[min_index]==0 and b[j]!=0:
markRow(min_index)
elif a[min_index]==b[j]==0 and not columnIsMarked(j):
3.3. VERBESSERUNGSVERFAHREN
25
markRow(min_index)
if allRowsMarked() and allButOneColumnsMarked():
exit()
Eine komplette Beispielimplementierung befindet sich in A.2.2 auf Seite 72.
3.3
Verbesserungsverfahren
Aus einer zulässigen Basislösung (siehe Abschnitt 3.2 auf Seite 20) kann iterativ eine
Optimallösung konstruiert werden. Die Konstruktion derselben basiert auf sogenannten
elementaren Kreisen und Opportunitätskosten5 , die auftreten, solange eine BV durch
eine N BV im Zuge der vorgestellten Verfahren ausgetauscht werden kann, um die
Transportkosten zu verringern. Mögliche Verfahren hierzu sind die
• Stepping-Stone-Methode und die
• MODI-Methode (auch Potentialmethode genannt).
Bei beiden Methoden werden iterativ durch Austausch einer Nichtbasisvariablen mit
einer Basisvariablen die Gesamtkosten verringert. Beide Methoden führen unter den auf
Seite 15 genannten Bedingungen zu einer Optimallösung, jedoch benötigt die MODIMethode im allgemeinen weniger Rechenaufwand. [Wik08g] Die Funktionsweise dieser
Verfahren beruht generell auf den Zusammenhängen zwischen primalen und dualen
Problemen (primale Algorithmen und komplementärer Schlupf).
Satz vom komplementären Schlupf
Eine zulässige Lösung x ist genau dann optimal für das primale Transportproblem,
wenn eine komplementäre, zulässige duale Lösung (u, v) existiert. Daher ist das das
Paar (u, v) komlemänter zu x wenn
xij ∗ (cij − ui − vj ) = 0 ⇔ (xij > 0 ⇒ ui + vj = cij )
daraus folgt, wenn xij eine Basisvariable (BV ) ist
xBV
ij ⇒ ui + vj = cij
und wenn xij eine Nichtbasisvariable (N BV ) ist, können sich Kosteneinsparungen ergeben
cij := cij − ui − vj
für alle i und j, deren xij N BV ist.
5
Opportunitätskosten ... sind entgangene Erlöse, die dadurch entstehen, dass vorhandene
Möglichkeiten (Opportunitäten) zur Nutzung von Ressourcen nicht [optimal] wahrgenommen
werden.[Wik08e]
26
KAPITEL 3. DAS TRANSPORTPROBLEM
3.3.1
Stepping-Stone Methode
Die Stepping-Stone-Methode wird im folgenden Anhand des Beispiels aus Abschnitt
3.1.2 auf Seite 17 mit der Basislösung aus der Nordwesteckenregel in Abschnitt 3.2.1 auf
Seite 21 erklärt. Der Zielfunktionswert dieser Basislösung war ZF = 75. Die Elemente
der Basislösung sind in der folgenden Matrix eingetragen, die hochgestellten Zahlen
sind die Werte der Kostenmatrix.
1
251 2
52 101 2
2
53 53
In jedem Schritt des Verfahrens werden alle Nichtbasisvariablen im Hinblick auf das
Kostensenkungspotential überprüft. Für jede Nichtbasisvariable xij = 0 wird dazu analysiert, wie sich die Gesamtkosten ändern würden, wenn eine Einheit des Gutes von Ai
nach Nj transportiert werden würde. Dazu wird zu jeder Zelle (i, j) einer Nichtbasisvariable xij zusammen mit einer Teilmenge der Zellen der Basisvariablen ein elementarer
Kreis bestimmt.
Elementarer Kreis
Die Zellen z1 bis zk (k ≥ 5) bilden dabei einen elementaren Kreis, wenn z1 = zk
ist6 , zwei aufeinanderfolgende Zellen zi und zi+1 in der gleichen Zeile oder Spalte des
Tableau liegen und in jeder Spalte und Zeile höchstens zwei Zellen des elementaren
Kreises sind.
Es seien die Zellen (i, o), (p, o), (p, q), · · · , (v, j) der Basisvariablen, die zusammen
mit der Zelle (i, j) der Nichtbasisvariablen xij einen elementaren Kreis beschreiben, bestimmt. Dann beschreibt cij := cij −cio +cpo −cpq +· · ·−cvj 7 die Änderung der Gesamtkosten pro zusätzlich von Ai nach Nj transportierter Einheit verbessern. Ist cij positiv,
würde dies zu einer Erhöhung der Gesamtkosten führen, ist cij gleich Null, würden sich
die Gesamtkosten nicht ändern. Um mit möglichst wenig Iterationen zur Optimallösung
BV
zu kommen wird deswegen die Nichtbasisvariable xN
mit dem kleinsten negativen
ij
cij als neue Basisvariable aufgenommen und mit der wertmässig kleinsten Basisvariable xBV
ab , deren Kosten bei der Bestimmung von cij mit negativem Faktor eingingen,
ersetzt8 . Die Nichtbasisvariable xij wird neue Basisvariable mit dem Wert von xab und
xab wird neue Nichtbasisvariable mit Wert Null. Damit die neue Basislösung zulässig
bleibt, werden die übrigen Basisvariablen des elementaren Kreises um den Wert der
ursprünglichen Basisvariable xab erhöht bzw. (wenn die zugehörigen Kosten bei der
6
Daraus folgt, dass ein elementarer Kreis mindestens vier verschiedene Zellen umfasst.
Die Durchlaufrichtung des elementaren Kreises ist dabei egal, da es sich immer um eine ungerade
Anzahl an Basisvariablen handeln muss.
8
Falls mehrere Basisvariable, die mit negativem Faktor eingingen, gleichzeitig den kleinsten Wert
haben, so wird eine beliebige von ihnen zur Nichtbasisvariable (und die neue Basislösung ist degeneriert, weil eine Basisvariable 0 wird).
7
3.3. VERBESSERUNGSVERFAHREN
27
Bestimmung von cij mit negativem Faktor eingingen) verringert. Alle anderen Variablen bleiben unverändert. Das Verfahren wird solange wiederholt, bis in einer Iteration
alle neu bestimmten cij größer oder gleich Null sind, die Gesamtkosten also nicht mehr
verringert werden können und die Lösung damit optimal ist. [Wik08f]
Erste Iteration
Für unser Beispiel heißt das
c12
c13
c23
c31
:= c12 − c11 + c21 − c22 = 2 − 1 + 2 − 1 = 2
:= c13 − c11 + c21 − c22 + c32 − c33 = 1 − 1 + 2 − 1 + 3 − 3 = 1
:= c23 − c22 + c32 − c33 = 2 − 1 + 3 − 3 = 1
:= c31 − c32 + c22 − c21 = 2 − 3 + 1 − 2 = −2
Die für die obigen Rechnungen von oben nach unten verwendeten elementaren Kreise sind im folgenden von links nach rechts durch die eingetragenen Kleinbuchstaben
(a, b, c,...) dargestellt. Der Beginn des elementaren Kreises (a) ist die Position einer
Nichtbasisvariable, alle anderen markierten Positionen (b, c, ...) sind Basisvariablen.
b 1 a2
c2 d1
2
3
1
2
3
1
b 1 2 a1
c2 d 1 2
2
e3 f 3
2
1
b 1 a2
c3 d 3
2
2
1
2
d 2 c1
a2 b 3
1
2
3
In unserem Fall ist c31 = −2 die maximal mögliche Kosteneinsparung pro Einheit. Daher wird x3 1 neue Basisvariable und als N BV wie oben beschrieben mit der wertmässig
kleinsten Basisvariable xab , deren Kosten bei der Bestimmung von cij mit negativem
Faktor eingingen, ersetzt. Da in c31 := c31 − c32 + c22 − c21 = 2 − 3 + 1 − 2 = −2 nur
c32 und c21 eingingen, kommen nur x32 und x21 zum Ersetzen in Frage. Daraus folgt,
dass ∆ = min(x32 , x21 ) = min(5, 5) = 5 - somit wird x31 = 5. Die übrigen Variablen
des elementaren Kreises werden also alle um 5 verringert beziehungsweise um 5 erhöht,
je nachdem, ob sie bei der Berechnung von c31 negativ oder positiv eingegangen sind.
Da ∆ = x32 = x21 kann frei gewählt werden, welche der beiden zur N BV wird - wir
entscheiden uns für x21 und erhalten damit die Matrix
251
2
52
2
1
1
15
03
2
53
Der neue Zielfunktionswert ist entweder durch
3 X
3
X
ZF =
xij cij = 25 ∗ 1 + 15 ∗ 1 + 5 ∗ 2 + 0 ∗ 3 + 5 ∗ 3 = 65
i=1 j=1
oder kurz durch
ZFneu = ZFalt + ∆ ∗ c31 = 75 + 5 ∗ (−2) = 65
zu berechnen. Die Kurzmethode beruht auf der Tatsache, dass c31 die Opportunitätskosten
pro zusätzlich transportierter Einheit angibt und ∆ die Anzahl der zusätzlich transportierten Einheiten darstellt. Damit ist die erste Iteration fertig und wir können mit
dem zweiten Durchlauf beginnen.
28
KAPITEL 3. DAS TRANSPORTPROBLEM
Zweite Iteration
c12
c13
c21
c23
:= c12 − c11 + c31 − c32
:= c13 − c11 + c31 − c33
:= c21 − c31 + c32 − c22
:= c23 − c22 + c32 − c33
=2−1+2−3=0
= 1 − 1 + 2 − 3 = −1
=2−2+3−1=2
=2−1+3−3=1
Die für die obigen Rechnungen von oben nach unten verwendeten elementaren Kreise
sind im folgenden wieder von links nach rechts durch die eingetragenen Kleinbuchstaben
(a, b, c,...) dargestellt.
b 1 a2
2
c
2
1
d
3
1
b1
2
a1
2
2
1
2
3
c
2
3
d
2
1
a2 d 1
22 c3
3
1
1
2
2
3
2
2
1
b 1 a2
c3 d3
In diesem Fall ist c13 = −1 die maximal mögliche Kosteneinsparung pro Einheit. Die
negativ eingehenden x sind x11 = 25 und x33 = 5. Das Minimum der beiden beträgt
∆ = min(x11 , x33 ) = min(25, 5) = 5, daher wird x33 = 5 neue N BV . Die übrigen
Variablen des elementaren Kreises werden wieder alle um 5 verringert beziehungsweise
um 5 erhöht, je nachdem, ob sie bei der Berechnung von c13 negativ oder positiv
eingegangen sind. Die neue Basislösung lautet daher
201
1
2
10
51
2
2
15
03
2
3
Der neue Zielfunktionswert beträgt
ZFneu = ZFalt + ∆ ∗ c13 = 65 + 5 ∗ (−1) = 60
Dritte Iteration
c12
c21
c23
c33
:= c12 − c11 + c31 − c32 = 2 − 1 + 2 − 3 = 0
:= c21 − c31 + c32 − c22 = 2 − 2 + 3 − 1 = 2
:= c23 − c22 + c32 − c31 + c11 − c13 = 2 − 1 + 3 − 2 + 1 − 1 = 2
:= c33 − c13 + c11 − c13 = 3 − 1 + 1 − 2 = 1
Da keine der untersuchten N BV ein negatives cij besitzt, kann die Lösung nicht mehr
weiter verbessert werden und ist damit optimal und hat den Zielfunktionswert ZF =
60.
3.3.2
MODI-Methode
Die Abkürzung MODI steht für “modifizierte Distribution”, es handelt sich bei der
MODI-Methode also um die “modifizierte Distributionsmethode”. Seltener wird sie
auch als Potentialmethode oder u-v-Methode bezeichnet. Auch dieser Algorithmus wird
3.3. VERBESSERUNGSVERFAHREN
29
im folgenden Anhand des Beispiels aus Abschnitt 3.1.2 auf Seite 17 mit der Basislösung
aus der Nordwesteckenregel in Abschnitt 3.2.1 auf Seite 21 erklärt. Der Zielfunktionswert dieser Basislösung war ZF = 75. Die Elemente der Basislösung sind in der folgenden Matrix eingetragen, die hochgestellten Zahlen sind die Werte der Kostenmatrix.
1
251 2
2
1
2
5
10
2
53 53
Die MODI-Methode verringert pro Iteration durch Austausch einer Nichtbasisvariablen mit einer Basisvariablen die Gesamtkosten. Kann keine Verbesserung mehr erzielt
werden ist eine Optimallösung gefunden.
BV
Für jede Nichtbasisvariable xN
= 0 wird dazu analysiert, wie sich die Gesamtij
kosten ändern würden, wenn eine Einheit des Gutes von Ai nach Nj transportiert
BV
werden würde. Dazu wird zu der Zelle (i, j) einer jeden Nichtbasisvariablen xN
die
ij
Kostenänderung mit cij = cij − ui − vj berechnet, wobei zuvor die u1 , · · · , um und
v1 , · · · , vn nacheinander aus den cij = ui + vj der Basisvariablen xBV
ij berechnet werden
müssen, wobei genau ein ui oder vj gleich Null gesetzt wird. Das beruht auf dem Satz
vom komplementären Schlupf aus Abschnitt 3.3 auf Seite 25.
Erste Iteration
Berechnen wir zuerst also alle ui und vj und setzen dazu v1 gleich 09 . Aus v1 = 0 und
c11 = u1 + v1 folgt u1 = 1, da c11 = 1. Alle anderen ui und vj werden auch aus dem
Zusammenhang cij = ui + vj berechnet10
c11
c21
c22
c32
c33
= u1 + v1
= u2 + v1
= u2 + v2
= u3 + v2
= u3 + v3
cij ui vj
1 1 0
2 2 0
1 2 −1
3 4 −1
3 4 −1
Bei der Berechnung von Hand empfiehlt es sich, die Werte der ui und vj mit der Tabelle
der Basisvariablen zu berechnen. Die dazu nötigen Schritte sind von links nach rechts
in den folgenden Matrizen aufgezeigt.
ui
vj
9
1
251 2
52 101 2
2
53 53
0
vj
1
251 2
52 101 2
2
53 53
0
ui
1
vj
1
251 2
52 101 2
2
53 53
0
ui
1
2
Es ist egal, welches ui oder welches vj Null gesetzt wird, aber es ist günstig eines zu wählen, in
dessen Zeile/ Spalte sich möglichst viele Basisvariablen befinden.
10
Es müssen die den Basisvariablen x11 , x21 , x22 , x32 und x33 zugeordneten c11 , c21 , c22 , c32 und c33
verwendet.
30
KAPITEL 3. DAS TRANSPORTPROBLEM
ui
ui
ui
1
1
1
251 2
1
251 2
1
251 2
1
2
1
2
1
2
1
2
2
2
2
2
2
5 10
5 10
5 10
3
3
3
3
3
3
2
2
2
5 5
5 5 4
5
5
4
vj 0 −1
vj 0 −1
vj 0 −1 −1
Mit den eben berechneten ui und vi können nun die Opportunitätskosten der einzelnen
Nichtbasisvariablen errechnet werden.
c12 := c12 − u1 − v2 = 2 − 1 − (−1) = 2
c13 := c13 − u1 − v3 = 1 − 1 − (−1) = 1
c23 := c23 − u2 − v3 = 2 − 2 − (−1) = 1
c31 := c31 − u3 − v1 = 2 − 4 − 0 = −2
Ist cij positiv, würde dies zu einer Erhöhung der Gesamtkosten führen, ist cij gleich
Null, würden sich die Gesamtkosten nicht ändern. Um mit möglichst wenig Iterationen
BV
zur Optimallösung zu kommen wird deswegen die Nichtbasisvariable xN
mit dem
ij
kleinsten negativen cij als neue Basisvariable aufgenommen.11 Zu der zugehörigen Zelle (i, j) des Transporttableaus wird dazu zusammen mit den Zellen der Basisvariablen
ein elementarer Kreis bestimmt12 . Jetzt wird wie bei der Stepping-Stone Methode entlang des elementaren Kreises alternierend von der ersten Basisvariablen xio der Wert
h subtrahiert und auf die nächste Basisvariable xpo addiert, bis die Zelle (i, j) erreicht
wird, die den Wert h erhält13 . Die Umlaufrichtung des elementaren Kreises ist (logischer Weise) egal. h ist dabei der Wert der wertmässig kleinsten Basisvariable xBV
ab
des elementaren Kreises von dem h subtrahiert werden soll14 . Diese Basisvariable xab
wird zur neuen Nichtbasisvariable und xij mit Wert h zur neuen Basisvariable. Das
Verfahren wird solange wiederholt, bis alle (in jeder Iteration neu zu bestimmenden)
cij größer oder gleich Null sind, die Gesamtkosten also nicht mehr verringert werden
können und die Lösung damit optimal ist. [Wik08c]
Unser kleinstes cij ist c31 = −2, daher wird in unserem Beispiel x31 zur neuen
Basisvariable. Der damit verbundene elementare Kreis ist
1
2
d 2 c1
a2 b 3
1
2
3
Die für h in Frage kommenden Variablen (jene, von denen h abgezogen wird) sind
x21 = 5 und x32 = 5. Daraus folgt, dass ∆ = min(x21 , x32 ) = 5. Da es in diesem Fall
egal ist, welche der beiden zur neuen Nichtbasisvariablen wird (beide haben den Wert
5), wählen wir x32 . Die neue Basislösung ist damit
1
251 2
2
1
2
0
15
2
3
5
53
11
Gibt es mehr als ein kleinstes negatives cij , so kann unter ihnen frei gewählt werden.
Siehe dazu Abschnitt 3.3.1 auf Seite 26.
13
xij hatte als N BV den Wert 0 und 0+h=h
14
Falls mehrere Basisvariable, von denen h subtrahiert wurde, gleichzeitig den kleinsten Wert haben,
so wird eine beliebige von ihnen zur Nichtbasisvariable (und die neue Basislösung ist degeneriert, weil
eine Basisvariable 0 wird).
12
3.3. VERBESSERUNGSVERFAHREN
31
Der neue Zielfunktionswert beträgt
ZFneu = ZFalt + ∆ ∗ c31 = 75 + 5 ∗ (−2) = 65
Zweite Iteration
Wir beginnen wieder mit der Bestimmung unserer ui und vj und nehmen dazu wieder
v1 = 0 an.
c11
c21
c22
c31
c33
cij ui vj
1 1 0
2 2 0
1 2 −1
2 2 0
3 2 1
= u1 + v1
= u2 + v1
= u2 + v2
= u3 + v1
= u3 + v3
Mit den eben berechneten ui und vi können wieder die Opportunitätskosten der einzelnen Nichtbasisvariablen errechnet werden.
c12
c13
c23
c32
:= c12 − u1 − v2
:= c13 − u1 − v3
:= c23 − u2 − v3
:= c32 − u3 − v2
= 2 − 1 − (−1) = 2
= 1 − 1 − 1 = −1
= 2 − 2 − 1 = −1
= 3 − 2 − (−1) = 2
Da in diesem Fall c13 = c23 = −1, wählen wir x13 als neue Basisvariable15 . Der mit x13
verbundene elementare Kreis ist
b 1 2 a1
2
c
2
1
2
3
d3
Die für h in Frage kommenden Variablen (jene, von denen h abgezogen wird) sind
x11 = 25 und x33 = 5. Daraus folgt, dass ∆ = min(x11 , x32 ) = min(25, 5) = 5. Die neue
Basislösung ist damit
201 2 51
02 151 2
3
102 3
Der neue Zielfunktionswert beträgt
ZFneu = ZFalt + ∆ ∗ c13 = 65 + 5 ∗ (−1) = 60
15
Bei der Wahl von x23 als neue BV wäre x21 = 0 in den elementaren Kreis aufgenommen worden
und weil dadurch h = 0 werden würde, wäre die Iteration umsonst.
32
KAPITEL 3. DAS TRANSPORTPROBLEM
Dritte Iteration
Es wird wieder mit der Bestimmung der ui und
angenommen.
cij
c11 = u1 + v1 1
c13 = u1 + v3 1
c21 = u2 + v1 2
c22 = u2 + v2 1
c31 = u3 + v1 2
vj begonnen und v1 = 0 wird wieder
ui vj
1 0
1 0
2 0
2 −1
2 0
Mit den berechneten ui und vi sind wieder die Opportunitätskosten der einzelnen Nichtbasisvariablen zu errechnet werden.
c12
c23
c32
c33
:= c12 − u1 − v2
:= c23 − u2 − v3
:= c32 − u3 − v2
:= c33 − u3 − v3
= 2 − 1 − (−1) = 2
=2−2−0=0
= 3 − 2 − (−1) = 2
=3−2−0=1
Da keines der errechneten cij ≤ 0 ist, kann die Basislösung aus der zweiten Iteration
nicht mehr verbessert werden und ist damit eine Optimallösung.
Kapitel 4
Standortprobleme
4.1
Das Warehouse Location Problem
Das Warehouse Location Problem (WLP) dient der Standortbestimmung in der Ebene. Dabei werden die Knoten in einem Graphen in zwei Teilmengen unterteilt - eine
Teilmenge für die Nachfrager und eine weitere für die potentiellen Anbieter (Produktionsstätten und Lager) und ist in dieser Hinsicht dem Transportproblem aus Kapitel 3
sehr ähnlich. Jedoch handelt es sich hier nur um potentielle Standorte der Anbieter - es
wird also bei diesem Problem nicht (nur) darüber entschieden, wer wen beliefert, sondern vielmehr darüber, welche Standorte aufgebaut werden. Jeder potentielle Standort
verursacht Fixkosten und hat für jeden zu beliefernden Kunden variable Kosten für die
Lieferung je Mengeneinheit. Ziel dieses Problemfeldes ist es, wenn möglich die optimale Kombination der zu errichtenden Warenhäuser und Produktionsstätten zu finden.
Dabei können natürlich auch Nebenbedingungen auftreten - zum Beispiel könnte es
vertraglich geregelt sein, dass manche Nachfrager voll beliefert werden müssen.
4.1.1
Add-Algorithmus
Dieser Algorithmus ist ein heuristisches Verfahren welches aus m Standorten mit Fixkosten fi und variablen Kosten zur Belieferung von n Kunden versucht, eine möglichst
gute Kombination von Standorten zu finden. Der Algorithmus sei am besten anhand
von folgendem Beispiel zur Belieferung von 7 Kunden durch 5 Anbieter erklärt. Der
Algorithmus geht entweder von vorläufig verbotenen oder von vorläufig einbezogenen Standorten aus und terminiert mit je einer Liste von entgültig einbezogenen und
entgültig verbotenen Standorten. Im ersten Durchgang wird lediglich die Summe aus
allen variablen Kosten jedes Anbieters und dessen Fixkosten berechnet. Dieser Anbieter wird danach in die Liste der entgültig einbezogenen Anbieter aufgenommen.
33
34
KAPITEL 4. STANDORTPROBLEME
I0V L = {1, 2, 3, 4, 5} Menge der vorläufig verbotenen Standorte
I0 = {}
Menge der entgültig verbotenen Standorte
I1 = {}
Menge der entgültig einbezogenen Standorte
P
i 1 2 3 4 5 6 7 fi
1 1 2 10 9 6 7 3 5 43
2 2 9 0 7 3 6 10 7 44
3 7 6 1 5 3 10 5 5 42
4 6 5 10 2 6 3 6 6 44
min
5 6 4 6 3 7 2 6 5 39 ←−
I0V L = {1, 2, 3, 4}
I0 = {}
I1 = {5}
Im zweiten Schritt wird ermittelt, unter Einbeziehung welchen Standorts die Kosten am
meisten gesenkt werden können. Dazu wird in den Feldern der Tabelle je die Differenz
aus den bisherigen Kosten und den Kosten der verbleibenden Standorte eingetragen.
Ist die Ersparnis negativ oder Null (wenn es also keine Ersparnis gibt), so vermerken
wir dies lediglich mit einem Minus, da in diesem Fall auf den bisherigen Standort
I1 = {5} zurückgegriffen wird, der ja auf jeden Fall erhalten bleibt. wi ist die Ersparnis
bei den variablen Kosten der einzelnen Anbieter. Die Summenspalte gibt die Differenz
aus variabler Ersparnis und zusätzlichen Fixkosten (hier negativ dargestellt, da sie die
Ersparnis verringern) an. Umso größer diese ist, desto mehr kann man sich ersparen. Ist
sie negativ, so wäre die Aufnahme des Standortes in Summe mit zusätzlichen Kosten
verbunden und er kann ausgeschlossen werden (das heißt, er wird zu I0 hinzugefügt).
Der Standort mit der größten Ersparnis wird in I1 aufgenommen. In den Spalten der
ersten beiden Nachfrager in der folgenden Tabelle sei die Rechnung dargestellt, in den
anderen lediglich die Ergebnisse.
P
1
2
3 4 5 6 7 w i fi
i
1 6 − 1 = 5 4 − 2 = 2 − − 1 − 3 11 −5 6
max
2 6 − 2 = 4 4 − 9 = − 6 − 4 − − 14 −7 7 −→ I1 = {2, 5}
3 6 − 7 = − 4 − 6 = − 5 − 4 − 1 10 −5 5
≤0
4 6 − 6 = − 4 − 5 = − − 1 1 − − 2 −6 −4 −→ I0 = {4}
I0V L = {1, 3}
Im obigen Schritt wird der zweite Anbieter fix aufgenommen, da durch ihn die größten
Ersparnisse erzielbar sind, während der vierte Anbieter fix ausgeschlossen wird, da er
zusätzliche Kosten verursachen würde (seine Ersparnis ist ≤ 0). Im nächsten Schritt
werden von den möglichen Ersparnissen der verbleibenden Anbieter die bisherigen Ersparnisse abgezogen, dadurch werden die noch erzielbaren Ersparnisse ausgerechnet.
Wenn schon im letzten Schritt keine Ersparnisse erzielbar waren, wird dies gleich mit
einem “−” dargestellt. Ist die Ersparnis kleiner als die Ersparnis des letzten Schrittes
ist, so zeigen wir zwar die Rechnung auf, das Ergebnis ist aber wieder ein “−”.
i
1
1
5−4=5
2
2−0=2
3
−
4
5
− 1−4=−
6 7
− 3
wi
6
fi
−5
P
3
−
−
5−6=−
− 4−4=−
− 1
1
−5
−4
1
max
−→ I1 = {1, 2, 5}
≤0
−→ I0 = {3, 4}
4.1. DAS WAREHOUSE LOCATION PROBLEM
35
I0V L = {}
Da I0V L = {} ist, also keine vorläufig ausgeschlossen Standorte mehr übrig bleiben,
terminiert der Algorithmus hier. Die fixen und variablen Kosten der durch den Algorithmus vorgeschlagenen Lösung kann man aus der Starttabelle lesen, indem man stets
die minimalen variablen Kosten zu jedem Nachfrager und alle Fixkosten der einbezogenen Standorte berechnet. Am besten markiert man sich dazu die jeweilig minimalen
variablen Kosten der einbezogenen Standorte, sowie deren Fixkosten.
i 1 2 3 4 5 6 7 fi
1 [1] [2] 10 9 6 7 [3] [5]
2 2 9 [0] 7 [3] 6 10 [7]
5 6 4 6 [3] 7 [2] 6 [5]
F K = 5 + 7 + 5 = 17
V K = 1 + 2 + 0 + 3 + 3 + 2 + 3 = 14
Wichtig ist, nicht zu vergessen, dass dieser Algorithmus nur eine heuristische Lösung
liefert, die daher nicht optimal sein muß.
4.1.2
Miele Verfahren - Standortbestimmung in der Ebene
Das Verfahren von Miele liefert schon nach wenigen Iterationen hinreichend genaue
Ergebnisse für viele praktische Anwendungen von Standortbestimmungen in der Ebene.
Ziel des Verfahrens ist es, einen Standort (Punkt) zu finden, dessen gewichteter Abstand
von einer Liste gegebener Punkte minimal ist. Die im Folgenden verwendeten Variablen
sind
x, y
Koordinaten des gesuchten Punktes (x0 , y 0 : Startwert, xµ , y µ : Ergebnis
der µ-ten Iteration)
uj , vj Koordinaten der gegebenen Punkte
bj
Gewichtung der gegebenen Punkte (diese sind am besten als Häufigkeit,
mit der die Strecke zum gesuchten Punkt zurückgelegt werden muss, zu
verstehen)
positive Konstante (nötige Abweichung, um eine Division durch 0 auszuschliessen, falls der Zielpunkt mit einem der gegebenen Punkte zusammenfällt)
Die mathematische Formulierung des Ziels lautet:
n
q
X
0
(4.1)
minimiere: Z (x, y) =
bj (x − uj )2 + (y − vj )2 + j=q
Wenn man den Startwert des Verfahrens “schlau” wählt ist ein vernünftiges Ergebnis
nach deutlich weniger Iterationen möglich. Es empfiehlt sich zum Beispiel die Verwendung des Schwerpunktes (die x und y Koordinaten des Startwertes werden aus den
gewichteten Mittelwerten der gegebenen Koordinaten berechnet):
Pn
Pn
b
u
j
j
j=1
j=1 bj vj
x0 = Pn
;
y 0 = Pn
(4.2)
j=1 bj
j=1 bj
36
KAPITEL 4. STANDORTPROBLEME
Die Ergebnisse µ-ten Iteration werden als Funktion der Ergebnisse der (µ-1)-ten Iteration berechnet. x1 und y 1 werden zum Beispiel aus x0 und y 0 berechnet:
Pn
j=1
xµ = Pn
j=1
Pn
j=1
y µ = Pn
j=1
√
√
√
√
bj uj
(xµ−1 −uj )2 +(y µ−1 −vj )2 +
bj
(4.3)
(xµ−1 −uj )2 +(y µ−1 −vj )2 +
bj vj
(xµ−1 −uj )2 +(y µ−1 −vj )2 +
bj
(4.4)
(xµ−1 −uj )2 +(y µ−1 −vj )2 +
Eine Beispielimplementierung dieses Algorithmus in der Programmiersprache Python
steht in A.2.3 auf Seite 74 zur Verfügung.
Beispiel
Als konkretes Beispiel verwenden wir die Punkte (1,3),(2,8),(2,10),(8,16),(10,18) mit
den Häufigkeiten 4,10,3,1,5 und = 10−5 . Das Python Programm auf Seite 74 hat für
diese Punkte folgenden Output:
$ ./miehle.py
x0 = 3.826087,
x1 = 2.639186,
x2 = 2.286822,
x3 = 2.172641,
x4 = 2.097114,
x5 = 2.050499,
x6 = 2.025191,
x7 = 2.012335,
x8 = 2.006034,
x9 = 2.003047,
4.2
y0
y1
y2
y3
y4
y5
y6
y7
y8
y9
=
=
=
=
=
=
=
=
=
=
9.913043,
9.002678,
8.582063,
8.300420,
8.146531,
8.070372,
8.033705,
8.016175,
8.007836,
8.003939,
Z’(x0,y0)
Z’(x1,y1)
Z’(x2,y2)
Z’(x3,y3)
Z’(x4,y4)
Z’(x5,y5)
Z’(x6,y6)
Z’(x7,y7)
Z’(x8,y8)
Z’(x9,y9)
=
=
=
=
=
=
=
=
=
=
120.056857
107.272731
103.972690
102.280194
101.355291
100.881988
100.648410
100.535914
100.483833
100.462483
Überdeckungs- und Partitionsprobleme
Überdeckungs- und Partitionsprobleme sind im Englischen auch als “set covering”
und “set partitioning” bekannt. Von einer Überdeckung spricht man, wenn mehrere
Mengen bei ihrer Vereinigung jedes Element einer anderen Menge mindestens einmal enthalten. Man zum Beispiel die Menge I = {1, 2, 3, 4, 5, 6} und die Mengen
Pj=1 = {1, 3, 5}, Pj=2S= {1, 2, 6} und Pj=3 = {2, 4, 6}, so ist jedes Element von I
mindestens einmal in 3j=1 Pj enthalten und Pj , j ∈ {1, 2, 3} ist eine Überdeckung von
I. Generell ist die Rede von einer Überdeckung, wenn für j ∈ {1, 2, 3, · · · , n} gilt
Pj ⊆ I
4.2. ÜBERDECKUNGS- UND PARTITIONSPROBLEME
I⊆
n
[
37
Pj
j=1
Gilt zusätzlich
Pj ∩ Pk = {} für j 6= k
so spricht man von einer Partition. In “Deutsch” ist eine Partition also das gleich
wie eine Überdeckung, nur dass zusätzlich gilt, dass kein Element von I in mehr als
einer Menge Pj vorkommen darf. Zum Beispiel sind P1 = {1, 2, 5, 6} und P2 = {3, 4}
eine Partition von I = {1, 2, 3, 4, 5, 6}. Jeder Teilmenge Pj werden
P nun Kosten cj > 0
zugeordnet. Die Gesamtkosten einer Überdeckung sind damit nj=1 cj . Nun definieren
wir
1, falls j in der Überdeckung auftritt
xj :=
0, sonst
1, falls i ∈ Pj
aij :=
0, falls i ∈
/ Pj
Damit lassen sich Überdeckungs- und Partitionsprobleme als Bool’sche Optimierungsaufgaben formulieren.
4.2.1
Überdeckungsproblem
C = cj sei der Vektor der Kosten jeder Partition Pj . X = xj sei der Vektor der
Variablen. A sei eine m × n Matrix. Es gelte
minimiere: z = C T X
unter der Nebenbedingung
Ax ≥ E
wobei E ein m-dimensionaler Vektor mit E = {1, 1, · · · , 1} ist.
4.2.2
Partitionsproblem
C = cj sei der Vektor der Kosten jeder Partition Pj . X = xj sei der Vektor der
Variablen. A sei eine m × n Matrix. Es gelte
minimiere: z = C T X
unter der Nebenbedingung
Ax = E
wobei E ein m-dimensionaler Vektor mit E = {1, 1, · · · , 1} ist.
38
4.2.3
KAPITEL 4. STANDORTPROBLEME
Koopmans-Beckman-Problem
Dieses Problem ist nach seinen Urhebern, Koopmans und Beckman benannt. Der Einfachheit halber referenzieren wir es aber mit QZOP (quadratisches Zuordnungsproblem). Es geht dabei um die Anordnung mehrerer Organisationseinheiten (OE), wobei
die Summe der pro Zeitperiode aufzuwendenden Transportkosten minimiert werden
soll.
h, i
Bezeichnung von Organisationseinheiten
j, k
verfügbare Plätze
1, wenn OE h auf Platz j angeordnet sein soll
xhj =
0, sonst
Die mathematische Formulierung des Problems lautet
minimiere: Z(x) =
p
p
p
p
X
X
X
X
h=1
i=1
i6=h
j=q
thi djk xhj xik
k=1
k6=j
unter den Nebenbedingungen
p
X
xjk = 1 h ∈ {1, 2, · · · , p}
j=1
p
X
h=1
xhj = 1 j ∈ {1, 2, · · · , p}
Kapitel 5
Beispiele
Alle Beispiele sind aus [Gre07] entnommen.
5.1
Bäume, Entfernungen und Wege
1. Finden Sie für das Postkutschenproblem in Abbildung 5.1 auf Seite 39 mittels
dynamischer Programmierung den kürzesten Weg von der Ost- (Knoten 1) zur
Westküste (Knoten 10).
2. Bestimmen Sie für das Problem in Abbildung 5.2 auf Seite 39 den kürzesten
Weg von Vladivostok (Knoten 1) nach Rostov (Knoten 13). Interpretieren Sie
5
6
7
3
3
10
9
5
8
6
3
7
7
2
3
3
1
7
8
4
1
5
7
4
3
3
1
6
1
3
8
5
13
4
5
11
3
9
9
5
2
5
5
2
5
5
9
6
2
1
3
10
7
4
1
8
7
12
5
6
4
1
3
6
3
Abbildung 5.1: Das Postkutschenproblem Abbildung 5.2: Vladivostok nach Rostov
den Graphen als Eisenbahnstreckennetz und die Pfeilbewertungen als mögliche
Erlöse zwischen den einzelnen Stationen. Welche Strecke soll der Zug befahren,
wenn die Eisenbahngesellschaft den Erlös maximieren möchte. Beantworten Sie
diese Frage durch ein Lösungsverfahren der dynamischen Programmierung.
3. Bestimmen Sie für den ungerichteten Graphen in Abbildung 5.3 auf Seite 40 einen
minimal spannenden Baum.
39
40
KAPITEL 5. BEISPIELE
4. Zwischen sieben Orten (die von 1 bis 7 durchnummeriert sind) soll ein Richtfunknetz aufgebaut werden. Die Kosten für die Installation einer Richtfunkstrecke
zwischen den Orten i und j betragen cij Geldeinheiten. Dort, wo eine direkte
Verbindung zwischen den Orten i und j nicht möglich ist, ist cij = ∞. Die Kosten sind in der folgenden Kostenmatrix mit den Elementen cij (i, j = 1, 2, ...7)
zusammengefaßt.


0 7 2 6 6 7 5
 7 0 7 7 2 8 ∞ 


 2 7 0 6 7 4 6 



6
7
6
0
8
7
9
c=


 6 2 7 8 0 8 3 


 7 8 4 7 8 0 ∞ 
5 ∞ 6 9 3 ∞ 0
(a) Bestimmen Sie ein billigstes Richtfunknetz, so dass jeder der sieben Orte
mit jedem anderen (eventuell über Zwischenorte) verbunden ist.
(b) Was ändert sich, wenn alle Kostenkoeffizienten mit der gleichen positiven
Konstanten k1 multipliziert werden oder um eine gleiche postive Konstante
k2 erhöht werden?
5. Wie lautet für den Graphen in Abbildung 5.4 auf Seite 40, der durch den FifoAlgorithmus errechnete, kürzeste Weg von Knoten 1 zu allen anderen?
7
7
8
6
4
5
6
4 10
3
2
0
5
3
3
2
1
1
Abbildung 5.3: Gewichteter, ungerichteter Graph
9
10
1
4
3
4
4
5
2
4
-1
4
3
-6
Abbildung 5.4: Gerichteter Graph
6. Wenden Sie den Tripel-Algorithmus auf den folgenden Graphen in Abbildung 5.5
auf Seite 41 an.
7. Berechnen Sie mit dem Tripel-Algorithmus Entfernungs- und Routenmatrix von
Abbildung 5.6 auf Seite 41 und geben Sie den kürzesten Weg von Knoten 1 nach
5, von 4 nach 2 und von 5 nach 4 an.
8. Die Abbildung 5.7 auf Seite 45 zeigt das vereinfachte Verkehrsnetz einer Kleinstadt. Die Knoten entsprechen Straßenkreuzungen und die Pfeile den in Pfeilrichtung zu durchfahrenden Einbahnstraßen Die Pfeilbewertungen bedeuten die
5.1. BÄUME, ENTFERNUNGEN UND WEGE
41
5
2
V1
4 3
V2
V3
5
1
1
15
1
0
7
8
V4
6
3
Abbildung 5.5: Gerichteter Graph
10
2
2
5
12
9
3
4
Abbildung 5.6: Gerichteter Graph
Länge der betreffenden Straßenverbindungen. Die Abbildung stellt einen (bewerteten) gemischten Graphen dar, der sowohl Kanten als auch Pfeile enthält. Eine
Getränkefirma möchte nun an derjenigen Straßenkreuzung ein Auslieferungslager
errichten, von der aus die Summe der Entfernungen zu allen übrigen Kreuzungen
minimal ist.
(a) Bestimmen Sie den optimalen Standort des Auslieferungslagers und geben
Sie die optimalen Auslieferungsrouten an.
(b) Sind die optimalen Auslieferungsrouten eindeutig festgelegt?
9. Bestimmen Sie einen minimal spannenden Baum für den durch die untenstehende
Kostenmatrix gegebenen ungerichteten Graphen. Startknoten ist Knoten 4.
1 2 3 4 5 6
1 0 3 ∞ ∞ 8 5
2 3 0 4 0 2 4
3 ∞ 4 0 4 6 ∞
4 ∞ 0 4 0 2 1
5 8 2 6 2 0 1
6 5 4 ∞ 1 1 0
10. Ermitteln Sie durch Rechnung einen negativen Zyklus des folgenden Graphen.
Die Kostenmatrix lautet
1
2
3
4
5
1 2 3 4 5
0 2 1 1 ∞
−1 0 7 5 −2
∞ 0 0 ∞ ∞
∞ 3 −1 0 ∞
∞ ∞ 2 4 0
42
KAPITEL 5. BEISPIELE
11. Gegeben ist die Kostenmatrix C(G) = (cij ) des bewerteten Digraphens G
1 2 3 4 5 6
2 0 ∞ ∞ 4 1 4
3 2 0 3 ∞ ∞ 3
4 3 ∞ 0 2 5 2
5 ∞ −2 3 0 6 5
6 ∞ 3 ∞ −1 0 3
7 ∞ 1 ∞ ∞ 2 0
Bestimmen Sie mit dem Fifo-Algorithmus die kürzesten Wege vom Startknoten 1
zu allen anderen Knoten. Wie lauten diese Wege und wie hoch sind die anfallenden
Kosten?
12. Karli P. ist Nachtwächter von Beruf. Als anerkanntes und bewährtes Mitglied des
hiesigen Wachdienstes sieht er sich dem folgenden Problem gegenübergestellt:
Gemäß seiner Berufung hat er auf einem Fabriksgelände 5 Kontrollpunkte besonders im Auge zu behalten. Als profunder Kenner der nächtlichen Umgebung
schätzt Karli den Zeitbedarf für seine Streifzüge zwischen den einzelnen Kontrollpunkten so ein (in Minuten bzw. ∞ dort, wo keine direkte Verbindung besteht)
1
2
3
4
5
1 2 3 4 5
0 9 4 ∞ 7
∞ 0 3 ∞ 3
12 ∞ 0 8 ∞
2 ∞ 9 0 ∞
8 8 ∞ 9 0
(a) Jeder dieser 5 Kontrollpunkte muß pro Nacht einmal inspiziert werden.
Karli ist sehr gewissenhaft und überprüft pro Inspektionsgang genau einen
Kontrollpunkt. Gleichsam als Belohnung ist es ihm dabei zur lieben Gewohnheit geworden, nach jeder Inspektion erstmal wieder zum Ausgangsort
zurückzukehren, um sich dort mit einem kleinen Schluck zu stärken. Bestimmen Sie für Karli einen optimalen Standort (jeder der 5 Kontrollpunkte
kommt in Frage, tatsächlich ergeben sich also nur 4 Kontrollrouten), der ihm
als Ausgangsort für seine nächtlichen Wanderungen dient, wenn die gesamte
Gehzeit minimiert werden soll! Wie lange ist er insgesamt unterwegs?
(b) Welche Empfehlung geben Sie Karli, was die einzelnen Routen für seine
Kontrollgänge betrifft und wie lauten diese?
(c) In besonders kalten Winternächten kann es sich ergeben, daß Karli länger
unterwegs ist. Von vornherein rechnet er dann in etwa mit dem doppeltem
Zeitbedarf auf allen Verbindungen. Was ändert sich am optimalen Standort,
den Routen und der gesamten Gehzeit?
5.1. BÄUME, ENTFERNUNGEN UND WEGE
43
13. Ein gerichteter Graph ist durch die folgende Kostenmatrix gegebenen
cij
1
2
3
4
1 2 3 4
0 8 4 2
3 0 6 2
4 1 0 ∞
6 ∞ ∞ 0
Bestimmen Sie mit dem Fifo-Algorithmus die kürzesten Wege von Startknoten 4
yu allen anderen.
14. Eine Bäckerein benötigt in den nächsten 4 Planperioden durchgehend genau eine
Knetmaschine. Zum Zeitpunkt t = 1 (Planungsbeginn) befindet sich noch keine
solche Maschine im Besitz der Bäckerei. Zu den Zeitpunkten t = 2, 3, 4 kann eine
alte Maschine verkauft werden und durch eine neue des gleichen Typs ersetzt werden. Zu t = 5 (Planungsende) ist lediglich der Verkauf der vorhandenen Maschine
vorgesehen. Der Unternehmung sind die nachfolgenden Daten bekannt
Ai
Bi
Vi
Anschaffungskosten am Beginn von Periode i
Betriebskosten der Maschine in ihrer i-ten Betriebsperiode
Verkaufswert nach i Jahren Betriebsdauer
3
4
i 1 2
Ai 75 85 100 95
Bi 5 10 15 25
Ci 60 50 35 10
Steigende Betriebskosten stehen somit fallenden Verkaufswerten gegenüber und
es gilt, die optimale Nutzungsdauer bzw. den optimalen Erneuerungszeitpunkt
der einzelnen Knetmaschine(n) festzulegen. Lösen Sie dieses Problem mit einem
Verfahren der dynamischen Programmierung und interpretieren Sie die Lösung!
15. Im Zuge der Freigabe und der damit einhergehenden Umstrukturierung des Milchmarktes machen sich auch 5 obersteirische Bergbauern Gedanken, wie sich im
Rahmen ihrer Milchproduktion Kosteneinsparnisse erzielen lassen könnten. Konkret geht es um eine Anfrage des örtlichen Milchhofes, der eine für alle Bauern
gemeinsame Milchsammelstelle einrichten möchte. Die Milchproduzenten hätten
ihre Zulieferkosten zur Sammelstelle zur Gänze selbst zu tragen, dürfen sich aber
im Gegenzug dafür den Standort derselben aussuchen. Im Laufe einer langen und
heißen Debatte einigen sich die 5 Beteiligten darauf, dass wohl nur einer ihrer
Bauernhöfe als Abgabeort in Frage käme. Um die anderen 4 nicht zu benachteiligen sollten die Gesamtzustellkosten letztlich von allen getragen werden. Da jeder
einen Traktor besitzt, dessen Ladefläche mühelos die Milchkanister aller anderen
aufnehmen kann, sind keinerlei Kapazitätsbeschränkungen zu berücksichtigen.
Das Straßennetz, das die 5 Gehöfte miteinander verbindet, kann durch die fol-
44
KAPITEL 5. BEISPIELE
gende Tabelle beschrieben werden (die Entfernungen sind in km angegeben)
km 1 2 3 4 5
1
0 ∞ 6 9 7
2 ∞ 0 5 ∞ 5
6 5 0 6 4
3
4
9 ∞ 6 0 3
5
7 5 4 3 0
Im nächsten Jahr sind 48 Arbeitswochen zu verplanen, an denen 5 mal in der
Woche der Sammelplatz anzufahren ist. Man rechnet generell mit Kosten von e
0,5 pro gefahrenem Kilometer.
Im Laufe der Diskussion kristallisieren sich 2 Parteien heraus, die die folgenden Varianten favorisieren. Die Vertreter der Variante 1 schlagen das folgende
Verkehrskonzept vor: alle, bis auf jenen Bauern, bei dem die Sammelstelle eingerichtet werden soll, fahren täglich auf der billigsten Zustellroute zur Sammelstelle. Die Vertreter der Variante zwei sind hingegen der Meinung, dass man auf
dem Weg dahin auch die Milchkanister eines oder mehrerer Nachbarn mitnehmen
könnte. Sie schlagen ein Vertriebsnetz vor, das in Summe am kürzesten ist. Das
Argument der Gegenpartei, dass dabei manch einer vielleicht - um die Kanister
eines anderen nicht Zustellenden Nachbarn aufzunehmen - einen Umweg fahren
müßte, lassen sie nicht gelten, da die Gesamtkosten am Ende der Saison sowieso
gleichmäßig auf alle aufgeteilt werden würden. Die Sperrstunde naht, der Wirt
mahnt zum Aufbruch und noch ist keine Entscheidung gefallen. Helfen Sie als
Logistikfachmann unseren Bauern, indem Sie für beide Varianten den optimalen
Standort für die Sammelstelle, die dazugehörigen Zustellrouten und schließlich
die pro Kopf und Jahr anfallenden Kosten bestimmen! Falls Sie der Meinung
sind, dass von vornherein eine Variante überlegen ist, begründen Sie Ihre Wahl
und bestimmen Sie die Lösung nur für diese!
16. Die 5 Computerterminals der Visionsoft-AG sollen auf möglichst kostengünstige
Art und Weise vernetzt werden. Die dafür verwendeten Kabel ermöglichen einen
Datenaustausch in jede beliebige Richtung zwischen zwei beliebigen sie verbindenen Terminals. Aus technischen Gründen können nicht alle Terminals direkt miteinander verbunden werden, es ist jedoch möglich, dass ein Terminal i mit einem
Terminal j über beliebig viele Zwischenterminals kommuniziert. Die möglichen
direkten Verbindungen und die entsprechenden Kabelkosten cij sind der folgenden Matrix zu entnehmen
cij 1 2 3 4 5
1 0 3 4 ∞ 6
2 3 0 ∞ 5 4
3 4 ∞ 0 5 1
4 ∞ 5 5 0 2
5 6 4 1 2 0
Berechnen Sie mit einem Verfahren Ihrer Wahl die Minimalkosten für das oben
dargestellte Problem. Wie werden die einzelnen Terminals untereinander verbunden, sodass ein uneingeschränkter Datenaustausch zwischen allen möglich ist?
5.1. BÄUME, ENTFERNUNGEN UND WEGE
45
17. Gegeben sei die folgende Kostenmatrix C = cij eines ungerichteten Graphen
cij
1
2
3
4
5
1
0
2
5
2
1
2
2
0
1
1
1
3
5
1
0
4
3
4
2
1
4
0
2
5
1
1
3
2
0
Bestimmen Sie ohne Rechnung einen minimal spannenden Baum und erkären
Sie, warum Ihre Vorgangsweise zu einer Optimallösung führt!
18. Gegeben sei der gerichtete, mit cij (für alle i, j ∈ V ) kostenbewertete Graph in
Abbildung 5.8 auf Seite 45. Ermitteln Sie mit einem Verfahren ihrer Wahl die
kürzesten, beim Startknoten a=1 beginnenden Wege zu allen anderen Knoten.
Wie lauten diese Wege und wie hoch sind ihre Kosten?
4
5
2
3
2
2
1
2
5
3
3
1
1
4
3
1
1
3
1
10
4
a=1
2
20
4
20
2
2
Abbildung 5.7: Verkehrsnetz
50
50
20
5
20 10
3
Abbildung 5.8: Bewerteter, gerichteter
Graph
19. Der in Abbildung 5.9 auf Seite 46 gegebene Graph stelle folgendes Planungsproblem dar: eine Telefongesellschaft verfügt über das durch die Struktur des
Graphen gegebene Verbindungsnetz zwischen den Orten 1 bis 7. Die Zahlen an
den Kanten sind die Betriebskosten pro Betrachtungszeitraum, wenn die entsprechende Verbindung aktiviert werden soll. Dabei wird vorausgesetzt, dass eine
aktivierte Verbindung Gespräche in beiden Richtungen ermöglicht. Ziel ist es
einen Plan zu finden, der angibt, welche Verbindungen aktiviert werden müssen,
sodass zwischen allen Orten - gegebenenfalls über Zwischenorte - eine Telefonverbindung möglich ist, wobei die Summe der insgesammt anfallenden Kosten
minimiert wird. Bestimmen Sie eine Optimallösung des Problems durch “Hinsehen”, erkären Sie Ihre Vorgangsweise in kurzen Worten und nennen Sie die
Gesamtkosten.
46
KAPITEL 5. BEISPIELE
20. Bestimmen Sie für den zyklenfreien Graphen in Abbildung 5.10, dessen Pfeile
mit Kosten bewertet sind, mittels dynamischer Optimierung einen kürzesten Weg
vom Knoten a zum Knoten h.
3
6
8
3 1
7
5
6
4
0
7
7
-3
a
5
10
8
0
1
6
2
2
5
c
3
b
Abbildung 5.9: Verbindungsnetz
4
2
d
5
e
-1
7
-2
g
5
3
4
h
f
Abbildung 5.10: Zyklenfreier Graph
21. Tramper Theodor bewohnt zur Zeit eine Waldhütte, die in Abbildung 5.11 durch
den Knoten 1 dargestellt wird. Der erholsamen Einsamkeit überdrüssig will er sich
nun durch die verschlungenen Wege abwärts zu einem der bekannten Küstenerholungsorte
8, 9 oder 10 begeben. Da Theodor sein Feriengebiet schon in- und auswendig
kennt, weiß er die einzelnen Pfade runter zum Meer auch gut zu bewerten. Je
nach Erholungswert (Umgebung, Anzahl der Wanderer, Gehzeit etc.) bewertet
er eine Verbindung umso höher, je größer jener Erholungswert ist. Bestimmen
Sie nun für Tramper Theodor jenen Pfad, der ihn aus seiner Einsamkeit an die
belebte Küste bringt, sodass der bei der Beschreitung der einzelnen Abschnitte
erzielte Erholungswert in Summe maximiert wird.
1
0.6 0.9
4
0.9
0.3
3
1.0
0.7
7
0.5
2
0.4
0.2 0.8
6
0.6
0.1
10
0.1
0.2
9
5
0.4
0.8 0.8
8
Abbildung 5.11: Feriengebiet
5.2
Das Transportproblem
1. Erfinden Sie für ein Transportproblem (TPP) mit drei Anbietern und drei Nachfragern die Angebots- und Nachfragemengen, sowie eine dazugehörige Transportkostenmatrix. Schreiben Sie alle Gleichungen, die zur Darstellung Ihres TTPs als
5.2. DAS TRANSPORTPROBLEM
47
primales Lineares Programm notwendig sind, auf. Bestimmen Sie anschließend
die entsprechende duale Formulierung.
2. In der folgenden Tabelle sind die Transportkosten zwischen drei Fertigungsstätten
(F1 , F2 und F3 ) und vier Lagerhäusern (Lj ) gegebenen
F1
F2
F3
L1
17
18
13
L2
11
20
25
L3
10
19
15
L4
12
30
27
Die Produktion A = ai = (38, 52, 30) Tonnen soll zu den Lagerhäusern transportiert werden. Ihre Kapazitäten sind B = bj = (17, 50, 10, 43) Tonnen.
(a) Bestimmen Sie mit der Nordwesteckenregel eine zulässige Ausgangslösung
und stellen Sie diese jener der Spaltenminimummethode gegenüber.
(b) Errechnen Sie für die Daten von Aufgabe 3 mit Hilfe des Stepping-StoneAlgorithmus die Optimallösung. Grundlage dafür ist die Ausgangslösung
x12 = 28, x13 = 10, x22 = 2, x24 = 30, x31 = 17 und x34 = 13.
3. Schreiben Sie in Python oder einer anderen Programmiersprache Ihrer Wahl ein
Programm mit dem Sie für größere TPPe eine zulässige Ausgangslösung bestimmen können. Dies sollte je nach Wunsch des Anwenders entweder mit der Nordwesteckenregel oder dem Spaltenminimumverfahren möglich sein.
4. Gesucht ist der optimale Transportplan für das folgende TPP: an den drei Ausgangsorten lagern die Mengen a1 = 20, a2 = 25, a3 = 40 und an den vier
Bestimmungsorten existieren Nachfragen von b1 = 10, b2 = 25, b3 = 15, b4 = 35.
Die Einheitstransportkostenmatrix ist gegeben mit
A1
A2
A3
B1 B2 B3 B4
1 8 4 7
9 0 5 7
3 6 8 1
Wie lautet die mit Hilfe der Nordwesteckenregel und der MODI-Methode errechnete Optimallösung?
5. Lösen Sie das klassische Transportproblem: die angebotenen Mengen betragen
ai = {5, 8, 7} und jene der Nachfrager sind ni = {3, 6, 6, 5}. Verwenden Sie
dafür die Nordwesteckenregel als Eröffnungsverfahren und wenden Sie danach
die MODI-Methode an.
6. Ein österreichischer Konzern, der 4 Raffinerien besitzt, wird beauftragt, 5 inländische
Märkte mit Öl zu versorgen. Die Problemdaten sind im folgenden Transportta-
48
KAPITEL 5. BEISPIELE
A1
4
5
N1
A2
5
A3
28
N2
2 4
N3
3
N4
Abbildung 5.12: Klassisches Transportproblem
bleau dargestellt (Ri = Raffinerie i, Mj = Markt j)
R1
R2
R3
R4
bj
M1 M2 M3 M4 M5
3
9
5
6
7
2
1
8 10 13
3 12 6
5
2
1
9 14 3
2
30 22 17 19 12
ai
10
25
13
33
Da das Ölangebot der inländischen Raffinerien zur Marktsättigung jedoch nicht
ausreicht, müssen die fehlenden Mengen Öl importiert werden. Die Transportkosten zu den Märkten betragen cj = {1, 10, 7, 8, 13} GE je Tonne importierten
Öls.
(a) Bestimmen Sie mittels Nordwesteckenregel und MODI-Methode den optimalen Verteilungsplan für den Konzern, falls dieser keine Importkosten zu
tragen hat. Was sagt die Optimallösung genau aus?
(b) Lösen die Aufgabe unter der Annahme, daß der Konzern für die Importkosten aufzukommen hat, mit der Spaltenminimummethode und dem MODIAlgorithmus. Interpretieren Sie die Lösung!
7. Eine Unternehmung mit der Gesamtkapazität von 170 ME fertigt ein Produkt
an den drei Fertigungsstellen F1 , F2 und F3 mit den Teilkapazitäten a1 = 60,
a2 = 80, a3 = 30 ME. Das von den Fertigungsstellen angebotene Produkt wird
von den drei Lagerhäusern L1 , L2 und L3 insgesamt in 130 ME nachgefragt. Die
Gesamtnachfrage teilt sich wie folgt auf: b1 = 30, b2 = 35 und b3 = 65 ME. Die
variablen Produktionskosten pro ME sind an den einzelnen Fertigungsstätten
unterschiedlich hoch und betragen 22 GE/ME in F1 , 20 GE/ME in F2 und 25
GE/ME in F3 . Die Transportkosten gehen aus der folgendenKostenmatrix hervor
F1
F2
F3
L1 L2
12 20
20 15
20 7
L3
15
23
10
5.2. DAS TRANSPORTPROBLEM
49
Gesucht ist der kostenminimale Produktions- und Transportplan. Bestimmen Sie
ihn unter der Annahme, dass der Überschuß keine zusätzlichen Kosten verursacht,
mit Hilfe der Spaltenminimum- und der Stepping-Stone-Methode!
8. Lösen Sie das vorherige Beispiel mit dem gleichen Rechenverfahren unter der
veränderten Bedingung, dass das Überschußangebot in einem Zwischenlager Z
gelagert werden muß. Dabei entstehen Lagerkosten in der Höhe von 6 GE/ME.
Die Transportkosten von den Fertigungsstellen 1, 2 und 3 betragen 10, 17 und 12
GE/ME.
9. Drei Anbieter stehen vier nachfragenden Produktionsstellen eines Betriebes gegenüber. Die Kapazität der Anbieter A, B und C beträgt 300, 200 und 800 ME;
die nachfragenden Stellen W, X, Y und Z benötigen 300, 350, 400 und 250 ME.
Die Transportkosten betragen
W X Y Z
2 1 4 3
3 2 5 2
1 1 3 4
A
B
C
A verkauft zu 30, B zu 25 und C zu 40 GE je Stück. Stellen Sie ein Modell
zur Ermittlung des kostenminimalen Bezuges der nachgefragten Stückzahlen auf
und berechnen Sie die Optimallösung mit der Spaltenminimum- und der MODIMethode.
10. Wie lautet die Optimallösung des folgenden Transportproblems? Gehen Sie von
der Eröffnungslösung x32 = x51 = x52 = 5; x12 = x22 = x44 = 10; x33 = 15 und
x24 = 30 aus. Verwenden Sie den MODI-Algorithmus, wobei Sie zur Bestimmung
der Dualvariablenwerte immer mit u1 beginnen. Die Einheitstransportkosten von
Anbieter Ai zu Nachfrager Bj sind
A1
A2
A3
A4
A5
B1 B2 B3 B4
3 2 2 5
1 6 9 3
8 4 3 7
2 3 5 1
1 4 8 7
11. Bestimmen Sie mit einem Verfahren Ihrer Wahl die Optimallösung des durch die
folgende Kostenmatrix gegebenen Zuordnungsproblems
cij
1
2
3
4
1
6
4
3
6
2
4
3
1
5
3
5
7
4
1
4
4
8
3
6
50
KAPITEL 5. BEISPIELE
12. Gegeben sind die Einheitstransportkosten von Produktionsstelle Pi zu Nachfrager
Nj
N1 N2 N3 N4 N5
P1 4
7
2
7
3
2
1
6
5
P2 9
P3 6
4
3
2
2
3
4
1
4
P4 3
An variablen Zustellkosten von allen Produktionsstätten zu den Nachfragern 1 bis
3 sind jeweils 3 GE zu berücksichtigen (N4 und N5 haben auf Grund der Liefervereinbarungen die Kosten der Zustellung selbst zu tragen). Die Produktionskosten
betragen allgemein 10 GE pro Stück. Die Angebotsmengen sind durch den Vektor
(30, 20, 10, 40) gegeben und die Nachfragemengen sind durch (10, 30, 30, 20, 10)
gegeben.
(a) Wie lautet die durch die Spaltenminimummethode errechnete Ausgangslösung
für dieses Transportproblem? Welche Besonderheit läßt sich aus ihr erkennen?
(b) Rechnen Sie eine Iteration des MODI-Algorithmus! Haben Sie die Optimallösung erreicht? Wenn ja, wie lautet diese und wie hoch sind die Gesamtkosten des Transportplans?
(c) Geben Sie eine andere zulässige Basislösung - falls möglich eine optimale an! Was ändert sich an der Versorgungsstruktur und den Gesamtkosten?
13. Als Abteilungsleiter der Produktionsmaschinen GmbH & Co KG sehen Sie sich
dem folgenden Problem gegenübergestellt: in der Werkzeughalle befinden sich 4
vom Typ her identische Maschinen M1 , M2 , M3 und M4 . Es kann jeder der einlangenden Aufträge auch auf jeder dieser Maschinen zur Gänze erledigt werden,
jedoch unterscheiden sich die Bearbeitungszeiten in Abhängigkeit vom Nutzungsalter der verwendeten Maschine. Die Bearbeitungszeiten (in h) der momentan
abzuarbeitenden Aufträge A1 , A2 , A3 und A4 auf den einzelnen Maschinen sind
der folgenden Matrix zu entnehmen
M1
M2
M3
M4
A1 A2 A3 A4
4 6 3 8
9 4 2 7
2 5 7 5
3 5 9 1
Um eine gleichmäßige Auslastung der Produktionsmaschinen zu gewährleisten,
soll jede Maschine in Betrieb genommen werden. Die Teilung eines Auftrages auf
mehrere Maschinen ist aus technischen Gründen nicht möglich. Nach wie vielen
Stunden sind alle 4 Aufträge gefertigt? Bestimmen Sie eine Optimallösung!
14. Die Produktionsfirma Huber verfügt über die Standorte S1 , S2 und S3 , die derzeit
mit den Kapazitäten 1500, 1200 und 1900 betrieben werden. Diese Standorte
versorgen die Nachfrager N1 , N2 und N3 , welche in der nächsten zu betrachtenden
Periode das einzige von Huber erzeugte Produkt H in den Mengen 1000, 13000
5.2. DAS TRANSPORTPROBLEM
51
und 1100 nachfragen werden. Die von Huber zu tragenden Zustellkosten pro Stück
H sind der folgenden Tabelle zu entnehmen
S1
S2
S3
N1 N2 N3
3
7
4
5
4
6
7
5
4
Gemäß dem Plan der Logistikabteilung von Huber soll das Überschußangebot,
da kein Standort unter seiner gegenwärtigen Kapazität betrieben werden soll,
für spätere Perioden zwischengelagert werden. Die entsprechenden Lagerkosten
ci , für die in Si (i ∈ {1, 2, 3}) erzeugten Einheiten H betragen 5, 8 bzw. 6 GE
pro Stück H. Allerdings besteht die Möglichkeit einer vollkommenen Betriebsniederlegung an einem der Standorte, jedoch nur unter der Voraussetzung, und
dies ist ein Zugeständnis Hubers an seine Kundschaft, dass die Gesamtnachfrage
weiterhin gedeckt werden kann. In diesem Fall soll nichts zwischengelagert werden, jedoch wären von Huber die Kosten der Betriebsniederlegung zu tragen. Wie
hoch dürften diese Kosten bei optimalem Zustellplan maximal sein, sodass die
Lagerfariante auszuschließen ist?
15. Der für den heutigen Tag aktuelle Zustellplan der Verteilungs-AG ist der folgenden Liste zu entnehmen. Insgesamt sind 6 Fahrten zu erledigen, die dabei zu
befördernden Mengen sind
1. von Produktionsort A zu Nachfrager N1
2. von Produktionsort B zu Nachfrager N2
3. von Produktionsort B zu Nachfrager N3
4. von Produktionsort C zu Nachfrager N3
5. von Produktionsort D zu Nachfrager N3
6. von Produktionsort D zu Nachfrager N4
10
10
10
10
10
10
Stück
Stück
Stück
Stück
Stück
Stück
Die Logistikabteilung der Verteilungs-AG bittet Sie nun diesen Zustellplan zu
überprüfen. Er wird als zulässig in dem Sinne bezeichnet, dass die Lager aller
Produktionsorte geleert werden und der Bedarf eines jeden Nachfragers gedeckt
ist. Die zu berücksichtigenden Einheitstransportkosten cij sind der folgenden Matrix zu entnehmen
cij N1 N2 N3 N4
A 2
6
4
5
B 9
4
5
6
C 7
7
3
4
D 1
5
6
2
Da sämtliche Zustellkosten (Fixkosten sind keine zu berücksichtigen) von der
Firma zu tragen sind, werden Sie nun damit beauftragt gegebenenfalls einen
besseren Zustellplan zu bestimmen. Ist der vorliegende Zustellplan ein kostenminimaler oder nicht? Wenn ja, erklären Sie warum; wenn nein, bestimmen Sie
einen besseren.
52
KAPITEL 5. BEISPIELE
16. Die Alpha-Produktions-AG fertigt in drei Produktionsbereichen B1 , B2 und B3
das Produkt Alpha. Die Kapazitäten der Fertigungsanlagen betragen in der Betrachtungsperiode 20, 10 bzw. 30 Einheiten. Die Gesamtproduktion, die derzeit
aus technischen Gründen nicht verringert werden kann, wird den drei Nachfragern
N1 , N2 und N3 mit den Nachfragemengen 15, 35 und 5 auf Kosten der AlphaProduktions-AG zugestellt. Die Einheitstransportkosten ci j sind der folgenden
Matrix zu entnehmen
cij N1 N2 N3
B1 3
4
4
3
4
B2 5
B3 4
5
5
Darüberhinaus sind für dieses Transportproblem in B1 , B2 und B3 variable Produktionskosten von 5, 4 bzw. 3 GE zu berücksichtigen. Das Überschußangebot
kann in einer fabrikseigenen Lagerhalle H zu einheitlichen Lagerkosten von 1
GE pro Stück Alpha gelagert werden. Die Überfühung des Überschusses von B1 ,
B2 und B3 nach H kostet pro Stück 3, 4 bzw. 2 GE. Bestimmen Sie mit der
Spaltenminimummethode und dem MODI-Verfahren eine Optimallösung dieses
Transportproblems.
17. Die Feinbein-Konstruktions GmbH & Co KG erzeugt das Produkt F. In der vergangenen Planungsperiode wurden auf den 3 Märkten insgesamt 58k Stück F
abgesetzt (k steht für 1000). Das entsprach genau der Gesamtkapazität der Unternehmung. Aufgrund der außerordentlichen Beliebtheit erwartet man sich für
die nächste Planperiode jedoch eine deutlich steigenden Nachfrage. Man rechnet
nunmehr auf den Märkten M1 , M2 und M3 mit 30k, 19k und 29k Stück Nachfrage. Die Feinbein-Konstruktions GmbH & Co KG möchte nun alle Anstrengungen
unternehmen, auch diesen neuen Anforderungen gerecht zu werden und erwägt
für die Kapazitätsaufstockung die unten beschriebenen Varianten. Beiden Varianten gemeinsam ist die folgende Ausgangssituation: die Produktionsanlagen
befinden sich bereits im Besitz der Gesellschaft und müssen nur mehr aufgestellt
werden - die Kosten dafür können vernachlässigt werden. Allerdings müssen neue
Maschinenhallen angemietet werden. Bisher wurden an den 3 Fertigungsstellen
F1 , F2 und F3 mit variablen Stückkosten von 10, 10 und 8 e pro Stück insgesamt
22k, 16k und 20k Stück F produziert und zu den Märkten mit den folgenden
Transportkosten pro Stück transportiert
cij M1 M2 M3
F1 7
6
3
F2 2
5
7
F3 2
8
6
An der kosten- und mengenmäßigen Vertriebsstruktur der alten Fertigungsstellen
wird sich auch für die veränderte Nachfrage nichts ändern. Variante 1 sieht eine
neue Produktionsstätte P in einer größeren, bereits in Betracht gezogenen, Maschinenhalle vor. Durch die größere Anlage könnten hier die variablen Stückkosten
auf 6 e gesenkt werden. Die Transportkosten zu M1 , M2 und M3 würden 10, 6
und 6 e betragen. An Miete wären dafür in der nächsten Planperiode 17.000 e
5.2. DAS TRANSPORTPROBLEM
53
anzusetzen. In Variante 2 steht die Anmietung von zwei kleineren Maschinenhallen für die neuen Produktionsstätten P1 und P2 zur Diskussion. Die kleineren
Anlagen würden jedoch nur zu 8 e pro Stück F produzieren können. Dies gilt für
P1 und P2 . Allerdings würden sich im Vergleich zu Variante 1 die für P1 und P2
wiederum identischen Transportkosten um die Hälfte zu M1 und M3 , sowie um
zwei Drittel zu M2 verringern lassen. In diesem Fall würden die beiden Anlagen
den zusätzlichen, neuen Bedarf jeweils zur Hälfte decken. Die Mietverhandlungen für diese beiden Objekte stehen jedoch noch aus. Die Logistikabteilung der
Feinbein GmbH & Co KG betraut Sie mit der Aufgabe, zu bestimmen, wieviel
in der nächsten Planperiode insgesamt für die beiden kleineren Maschinenhallen
an Miete bezahlt werden kann, wenn der Variante 2 der Vorzug gegeben werden
soll. Wie lautet der für diesen Fall optimale Transportplan, wenn die insgesamt
anfallenden Produktions- und Transportkosten minimiert werden sollen?
18. Ein Produzent verfügt über die 3 Fertigungsanlagen A1 , A2 und A3 . Auf diesen Anlagen können in dem zu betrachtenden Zeitraum 30, 80 bzw. 40 Stück
des Produktes X erzeugt werden. Die Nachfrage N1 , N2 und N3 beträgt 40, 30
und 20 Stück. Neben den variablen Produktionskosten von 6, 8 und 5 GE bei
den Anlagen A1 , A2 und A3 fallen für den Produzenten auf Grund vertraglicher
Verpflichtungen mit den drei Nachfragern die folgenden Einheitstransportkosten
an
cij N1 N2 N3
A1 3
7
4
A2 4
5
2
7
6
A3 5
Um die von der Gewerkschaft geforderte Vollbeschäftigung zu gewährleisten werden alle Produktionsanlagen mit Maximalkapazität betrieben. Zur Aufnahme des
Überschußangebotes werden in der Firmenleitung zwei Varianten diskutiert. Die
erste Variante wäre die Lagerung der Überproduktion am fabrikseigenen Gelände
in einer Lagerhalle L1 . Dabei würden variable Lagerkosten von 3, 2 bzw. 6 für
ein Stück X von Anlage A1 , A2 bzw. A3 anfallen. Die zweite Variante wäre, eine für diesen Zweck geeignete Lagerhalle L2 außerhalb des Geländes zu mieten.
In diesem Fall wären an Lagerkosten nur fixe Mietkosten anzusetzen. Die reinen
Transportkosten für die Überproduktion können in beiden Varianten wegen der
räumlichen Nähe aller Gebäude vernachlässigt werden. Beide Lagerhallen bieten
ausreichend Platz. Wie hoch darf die Miete für Lagerhalle L2 maximal sein, damit die zweite Variante von Vorteil ist? Zur Beantwortung dieser Frage sind zwei
Transportprobleme zu lösen. Verwenden Sie dazu die Spaltenminimummethode
und das MODI-Verfahren!
19. Die Anlagenbau-AG (ABAG) fertigt an den 3 Produktionsstätten A1 , A2 und
A3 . Im Betrachtungszeitraum werden hier 20, 35 und 25 Stück einer Papierpresse
PP erzeugt. Die variablen Produktionskosten belaufen sich dabei auf 13, 8 und
10 GE. Di momentag in der Branche gegebene nachfrage bei den Kunden N1 , N2
und N3 beträgt 23, 24 und 18 Einheiten PP.
Aufgrund gewerkschaftlicher Verpflichtungen kann im Moment die Produktion
nicht der Nachfrage angepaßt werden. Daher hat man sich entschlossen, das
54
KAPITEL 5. BEISPIELE
Überschußangebot so wie es den Produktionsstätten verrechnet werden soll, nämlich
zu 20% in A1 und jeweils 40% in A2 und A3 zu lagern. Die entsprechenden Lagerkosten bei A1 , A2 bzw. A3 belaufen sich auf 6, 4 und 7 GE. Weiters ist durch
vertragliche Verpflichtungen vorgesehen, dass N2 minderstens die Hälfte seines
Bedarfs durch A2 gedeckt bekommt und dass N3 mindestens ein Drittel seines
Bedarfs von A3 bezieht.
Die direkten - von ABAG zu tragenden - Transportkosten zwischen Anbieter und
Nachfrager können der folgenden Tabelle entnommen werden
cij N1 N2 N3
A1 4
7
6
A2 8
4
5
A3 5
9
8
Die ABAG ist nun daran interessiert, einen Transportplan zu bestimmen, der
die Summe aller anfallenden Kosten, also Lager-, Produktions- und Zustellkosten
minimiert. Bestimmen Sie eine nicht notwendigerweise optimale Lösung dieses
Problems und interpretieren Sie die Lösung!
5.3
Standortprobleme
1. (a) Ermitteln Sie für das WLP in der untenstehenden Tabelle alle Gleichungen,
die zur Darstellung des Problems in disaggregierter Form notwendig sind!
(b) Lösen Sie das WLP mit dem Add-Algorithmus.
(c) Bestimmen Sie die aggregierte Form des WLPs und durch Zuhilfenahme
von GLPK die Optimallösung dieses WLPs. Gehen Sie dabei davon aus,
dass jeder potentielle Standort höchstens zwei Kunden versorgen kann.
A1
A2
A3
A4
A5
B1 B2 B3 B4 B5 fi
2 8 3 4 4 13
6 7 8 12 2 3
5 1 9 1 6 11
8 7 4 1 6 5
4 10 10 9 4 7
2. Berechnen Sie mit dem Add-Algorithmus eine Lösung für das folgende WLP
A1
A2
A3
A4
A5
A6
A7
A8
B1 B2 B3 B4 fi
5 1 3 6 9
2 2 8 3 7
7 4 9 1 6
4 2 5 3 8
1 4 2 9 5
8 5 1 4 4
6 2 7 2 6
1 3 7 5 7
5.3. STANDORTPROBLEME
55
3. Lösen Sie das folgende WLP mit dem Add-Algorithmus. Welche Besonderheit
besitzt die Lösung?
A1
A2
A3
A4
A5
B1 B2 B3 B4 B5 B6 B7 fi
1 2 9 9 6 8 3 4
4 9 0 7 3 6 9 5
8 6 1 5 4 9 4 5
6 5 7 6 6 3 5 7
5 4 2 8 6 7 5 4
4. Gegeben sind die Koordinaten (uj , vj ), j ∈ {1, 2, 3, 4} von Kundenorten: (3,1),
(8,3), (7,6) und (4,5). Der Bedarfsvektor B = bj , j ∈ {1, 2, 3, 4} lautet: (25, 15,
20, 10). Rechnen Sie, auf zwei Nachkommastellen genau, die erste Iteration des
Standardverfahrens von Miehle ( = 0) und bestimmen Sie den Zielfunktionswert.
5. Eine Speditionsfirma lagert Mehlcontainer in einem Depot in der Nähe der Eisenbahnstation. Der Inhalt eines jeden Containers (10 Tonnen) wird von der Huber
KG an die 4 Einzelkunden zugestellt. Um die Transportkosten zu senken plant
die Unternehmung nun ein Lagerhaus zu erbauen. Die j ∈ {1, 2, 3, 4} Kundenorte
sind durch die Koordinaten (1,9), (2,5), (6,5) und (7,10) gegeben, deren Bedarf
50,10, 30 und 20 Tonnen beträgt. Die Koordinaten des Depots sind (15,2). An
Transportkosten vom Depot zum Lagerhaus fallen 20 GE pro LE und Container
an. Der Transport einer Tonne Mehl vom Lagerhaus zu einem der Kunden kostet
8 GE pro LE. Finden sie mit dem Miehle-Standardverfahren, durch Rechnen der
ersten Iteration, einen Standort für das neu zu erbauende Lagerhaus. Wie hoch
sind die Gesamtkosten?
6. Programmieren Sie den (modifizierten) Miehle-Algorithmus zur Lösung stetiger Standortprobleme mit Python oder einer anderen Programmiersprache Ihrer
Wahl.
7. Lösen Sie das folgende Warehouse-Location-Problem mit den Add-Algorithmus
(S?i bzw. fj bezeichnen die potentialen Standorte bzw. deren Fixkosten und Bj
die Nachfrager)
B1 B2 B3 B4 B5 fi
S1 3 5 1 5 9 6
S2 7 2 6 2 2 8
S3 1 4 8 2 5 5
S4 8 5 6 4 1 3
S5 3 3 4 6 9 4
8. Zwei Punkte sind genau einen Kilometer voneinander entfernt. Punkt 1 wird
mit b1 = 2 und Punkt 2 mit b2 = 3 gewichtet. Wieviele Meter von Punkt 1
entfernt ist ein optimaler Standort S zu errichten? Beantworten Sie diese Frage
indem Sie eine Iteration des Standort-Miehleverfahrens rechnen. Wie hoch ist der
Zielwertfunktion dieses Problems?
56
KAPITEL 5. BEISPIELE
9. Der Herbst zieht ins Land, die Tage werden kürzer und die Nächte kühl und
feucht. Hamster Heinrich plant den optimalen Standort für seinen unterirdischen
Winterbau. Während des ganzen Sommers schon hat er Vorräte für diese harte
Zeit gesammelt und an insgesamt drei Stellen vergraben. Diese Verstecke haben
folgende Koordinaten (in Metern): das Getreide lagert bei der alten Eiche (8,4),
ein Vorrat an Obst unter dem Holunderstrauch (1,3) und das Gemüse letztlich hat
Heinrich neben dem Garteneingang (5,9) verscharrt. Von allem ist ausreichend
vorhanden. Heinrich ist ernährungsbewusst und kombiniert sein tägliches Menü
aus 8 HBT (Hamsterbackentaschen) Getreide, 4 HBT Obst und 3 HBT Gemüse.
Wo nun soll er für seinen Winterbau zu graben beginnen, wenn er die tägliche
Laufarbeit - pro “Beschaffungsausgang” kann er naturgemäß höchstens 2 HBT
transportieren - minimieren will? Welche Strecke hat Heinrich insgesamt pro Tag
zurückzulegen? Beantworten Sie diese Fragen durch Rechnen einer Iteration des
Standard-Miehle-Verfahrens!
10. Die eben gegründete Zuckerbäcker-Productions-AG-Österreich erwägt den Bau
von höchstens 3 inländischen Produktionsstätten. Geplant ist die Erzeugung von
Schokoladespezialpralinen. Ein Marktforschungsinstitut hat für die 3 zu beliefernden Konsumzonen Kj , j ∈ {1, 2, 3} einen Bedarf an Schokoladespezialpralinen
von 276.000, 132.000 und 192.000 Stk./Jahr erhoben. Die für den Betrachtungszeitraum von einem Monat anfallenden, anteiligen Errichtungskosten der Produktionsstätten Pi (i ∈ {1, 2, 3} betragen 80.000, 50.000 und 70.000 GE, während
die variablen Stückkosten 3, 2 bzw. 4 GE betragen. Die Maximalkapazitäten sind
37.000, 28.000 und 25.000 Stk./Monat. Die Transportkosten (GE/Stk.) zwischen
den Produktionsstätten Pi und den Konsumzonen Kj sind in der folgenden Matrix angeben
cij K1 K2 K3
P1 4
8
3
P2 7
5
2
P3 1
9
6
Das Ziel der jungen Unternehmung ist es, die im Betrachtungszeitraum anfallenden Gesamtkosten zu minimieren und daher zu entscheiden, wie viele und welche
Produktionsstätten erbaut werden. Darüberhinaus sollen die optimalen Lieferbeziehungen und Transportmengen festgelegt werden. Erstellen Sie zur Lösung des
Problems ein Lineares Programm, erklären Sie die von Ihnen verwendete Problemformulierung bzw. deren Variabeln und Gleichungen und lösen Sie es mit
GLPK.
5.3. STANDORTPROBLEME
57
11. Gegeben sei die folgende Matrix A = (aij )
i\j
1
2
3
4
5
6
7
1
0
0
1
0
1
1
1
2
1
0
0
0
1
0
1
3
1
0
0
0
1
0
1
4
1
1
1
0
0
0
1
5
0
0
0
1
0
0
1
6
0
0
1
0
1
0
0
7
1
1
1
0
0
1
0
8
1
1
0
0
1
1
0
9
1
0
1
0
1
0
1
Der Kostenvektor lautet c = (3, 8, 12, 3, 7, 10, 4, 9, 8, )T . Bestimmen Sie (falls
möglich) mit Hilfe der Reduktionsregeln eine heuristische Lösung des entsprechenden Überdeckungs- und Partitionsproblems.
12. Der Brandschutzbeauftragte Florian F. wird mit der folgenden Aufgabe bedacht:
Der ihm zur Überwachung zugeteilte Bürobereich umfasst die 10 Büroräume B1 ,
B2 , ..., B10 . Innerhalb des Bürobereichs sind insgesamt 6 mögliche Standorte für
die Feuerlöschgeräte F1 , F2 , ..., F6 vorgesehen. Die folgende Matrix D = (dij ) gibt
die Entfernungen (in Meter) der einzelnen Büroräume von diesen Standorten an:
dij
B1
B2
B3
B4
B5
B6
B7
B8
B9
B1 0
F1
30
25
5
10
10
10
5
5
40
10
F2
10
10
50
45
20
50
20
20
10
40
F3
60
55
25
35
35
40
10
45
50
45
F4
45
20
35
5
65
30
60
25
40
20
F5
20
40
30
55
15
35
25
35
30
5
F6
10
70
65
10
30
20
40
40
40
5
Die Kosten der Aufstellung eines Feuerlöschers betragen c = (15, 5, 10, 5, 20, 5)T .
Bestimmen Sie für Florian die minimalen Gesamtkosten der Installation, wenn
Sicherheitsvorgaben die Aufstellung eines Feuerlöschers innerhalb von 30 Metern
eines jeden Büroraumes vorschreiben! Verwenden Sie dazu GLPK! Welche Feuerlöscher werden installiert?
13. Bestimmen Sie eine Lösung des durch die folgende Matrix A = (aij ) gegeben Überdeckungs- und Partitionsproblems, wenn alle Kosten cj = 10, j ∈
{1, 2, 3, 4, 5, 6} betragen. Interpretieren Sie die Lösung bzw. die Zielfunktion dieses Problems!
i\j 1 2 3 4 5 6
1 1 0 1 0 0 1
2 0 1 0 1 0 0
3 1 0 1 1 1 1
4 0 1 0 0 0 0
5 1 0 0 0 1 1
58
KAPITEL 5. BEISPIELE
14. Bestimmen Sie mit der Umlaufmethode eine Lösung des folgenden QZOPs (die
linke Tabelle gibt die Entfernungen djk , die rechte die Transportintensitäten thi
an)
von \ bis A
B C D
E
A
0 130 70 60 160
140 0 80 150 80
B
C
70 70 0 90 90
70 150 80 0 160
D
E
150 70 90 170 0
von \ bis
1
2
3
4
5
1
0
4
1
2
2
2
3
0
6
8
2
3 4 5
5 0 4
2 10 3
0 5 10
4 0 3
7 5 1
15. (nach Domschke 1985, S.175) Hamster Heinrich hat ein Problem! Er möchte in
Zukunft die Vorräte in seinem Vorratslager so anordnen, daß die Lauferei für die
Zusammenstellung seines täglichen Menüs minimiert wird. Sie sollten ihm dabei
behilflich sein. Dazu müssen Sie folgendes wissen:
Heinrichs Lieblingsspeise sind Weizenkörner, aber auch Kukuruz und Haselnusskerne mag er gern. Er ergänzt sein Menü täglich mit etwas Frischem (Karotten,
Salat oder Obst). Den Speiseplan einer Woche zeigt folgende Tabelle
Montag
Weizen, Salat
Dienstag
Kukuruz, Karotten
Mittwoch
Weizen, Obst
Donnerstag Hasselnuß, Karotten
Freitag
Weizen, Salat
Samstag
Kukuruz, Obst
Sonntag
Weizen, Salat, Obst
Heinrich holt die Speisen für sein Menü stets durch einmaliges Aufsuchen des
Vorratsraumes, der aus den 6 Lagerplätzen A,B,C,D,E,F besteht. Am Sonntag
pflegt er den Weizen zuerst, danach den Salat und zum Schluß das Obst in seinem
Korb zu geben. Die symmetrischen Entfernungen der Plätze vom Eingang sowie
voneinander zeigt die folgende Tabelle
Ein A
Ein − 5
A
−
B
C
D
E
B
3
2
−
C D E
5 3 1
4 2 4
2 4 2
− 6 4
− 2
−
F
3
6
4
2
4
2
Wie soll Heinrich die Plätze belegen, wenn er das obengenannte Ziel verfolgt und
bei diesbezüglich gleichgünstigen Plätzen Karotten, Salat und Obst lieber auf
den kühleren Plätzen B oder D lagert?
16. Der Bahnhof einer österreichischen Stadt besteht aus den 5 Bahnsteigen B1 , B2 ,
B3 , B4 , B5 . Zeitig in der Früh am Beginn eines jeden Tages muß auf jedem
5.3. STANDORTPROBLEME
59
Bahnsteig eine Lokomotive (Lok) bereitstehen. Über nacht sind alle Loks in den
5 Lokschuppen L1 , L2 , L3 , L4 , L5 unterzubringen. Jeder dieser Lokschuppen kann
bis zu 5 Loks aufnehmen. Die Zeit (in Minuten), in der eine Lok vom Lokschuppen
Li zum Bahnsteig Bj , i, j ∈ {1, 2, 3, 4, 5} rangiert werden kann, ist der folgenden
Matrix T := (tij ) zu entnehmen
tij B1 B2 B3 B4 B5
L1 5 7 2 8 2
L2 2 2 6 7 4
L3 2 5 2 6 6
L4 4 8 1 3 4
L5 1 3 5 5 6
Die Bahnhofsleitung steht nun vor dem Problem, die täglich in der Früh anfallende Gesamtbereitstellungszeit möglichst kurz zu halten. Diese setzt sich zusammen aus den Rangierzeiten und den Servicezeiten: wegen unterschiedlicher
örtlicher Gegebenheiten sind bei den Lokschuppen L2 und L4 jeweils 5 Minuten
und bei den restlichen jeweils 3 Minuten an Servicezeit für das Aufsperren und
Öffnen der Tore und einige sonstige Servicearbeiten des Bedienungspersonals einzuberechnen, bis die erste - und jede weitere - Lok den Lokschuppen in Richtung
Bahnsteige verlassen kann. Um die Annahmen zu vereinfachen, kann davon ausgegangen werden, dass sich mehrere Loks in einem Lokschuppen gegenseitig nicht
behindern, d.h. sie können ihn gegebenenfalls gleichzeitig verlassen.
(a) Welche Empfehlungen geben Sie - auf Grund einer Berechnung - für die
nächtliche Unterbringung der insgesamt 5 vorhandenen Loks; wie hoch ist
die Gesamtbereitstellungszeit? Interpretieren Sie Ihre Lösung!
(b) Bestimmen Sie mit Hilfe von GLPK eine Optimallösung für das Problem!
17. Gegeben sie das folgende unkapazitierte Warehouse-Location-Problem: cij seien
die Kosten der Bedienung von Nachfrager Bj durch Anbieter Aj , die Fixkosten
des potentiellen Standortes i seien durch Fi beschrieben
cij B1 B2 B3 B4 B5 Fi
A1 8 3 2 8 2 7
A2 7 2 6 6 7 7
A3 2 2 6 3 6 6
A4 3 8 7 3 5 5
A5 4 6 2 7 4 8
A6 6 8 1 4 8 6
A7 9 3 3 5 5 3
(a) Die Standorte 3, 6 und 7 werden nun eröffnet. Versuchen Sei diese Lösung
mit dem Node-Partitionierung-Verfahren zu verbessern!
(b) Bestimmen Sie mit Hilfe von GLPK eine Optimallösung für das Problem
und analysieren Sie das Ergebnis im Vergleich zur vorgeschlagenen Lösung!
60
KAPITEL 5. BEISPIELE
18. Gegeben sei die Matrix U := (uij ), die den Nutzen einer benachbarten Anordnung
zwischen den Organisationseinheiten i und j beschreibt
uij 1 2 3 4 5 6
1 − 3 2 7 1 6
2 3 − 8 4 2 5
3 2 8 − 4 3 1
4 7 4 4 − 6 3
5 1 2 3 6 − 8
6 6 5 1 3 8 −
(a) Bestimmen Sie für dieses Layout-Problem einen Deltaeder, die Menge aller
Außen- und Innendreiecke und den Zielfunktionswert.
(b) Entwerfen Sie ein layout, in dem Knoten 1 die Umwelt repräsentiert.
19. Der steirische Fahrradhersteller Friedrich F. verfügt über eine Produktionsstätte
in Graz. Von hier versorgt er die vier Großräume Knittelfeld (K), Mürzzuschlag
(M), Bad Aussee (B) und Graz (G) selbst. An diesen vier Orten sollen nun firmeneigene Vertriebsstellen eröffnet werden - an jedem höchstens eine - um die
Kosten für den steirischen Vertrieb, der bislang von einem externen Transportunternehmen übernommen wurde, zu senken. Der Bedarf und die geplanten Lagerkapazitäten in der zu betrachtenden Zeitperiode sowie die Errichtungskosten
für die Vertriebsstellen sind der folgende Tabellen zu entnehmen
Kapazität in Stück Bedarf in Stück Errichtungskosten in (in 1000e)
K
6000
2000
150
M
3000
1000
130
B
4000
2000
190
7000
3000
210
G
Friedrich F. stellt die von den Kunden (es handlet sich ausschließlich um Katalogkunden) bestellten Fahrräder frei Haus zu. Diese Versandkosten (in e) bertragen
pro Fahrrad
cij K M B G
K 1
3 1.5 6
M 2.5 3
4 7.5
B 3 2.5 2 3.5
G 7.5 6
5
3
Für der Transport in der Graz produzierten Fahrräder zu den Vertriebsstellen
sind keine Kosten anzusetzen, sie können direkt über unterschiedliche Verkaufspreise abgegolten werden. Erstellen Sie alle Gleichungen eines entsprechenden
Linearen Programms mit dem entschieden werden kann, in welchen Orten ein
Vertriebsstelle eröffnet werden soll, wenn die Zielsetzung die Minimierung der
insgesamt anfallenden Kosten ist. Erklären Sie alle von Ihnen verwendeten Symbole. Lösen Sie abschließend das Problem mit Hilfe von GLPK und interpretieren
Sie die Lösung!
5.3. STANDORTPROBLEME
61
20. Die Daten eines unkapazitierten Warehouse-Location-Problems sind mit den Kosten cij , den Kosten der Bedienung von Nachfrager Bj durch Anbieter Ai , und
durch die Fixkosten Fi der potentiellen Standorte i gegeben
cij B1 B2 B3 B4 B5 Fi
A1 5 6 2 6 4 8
A2 3 2 3 5 5 6
A3 7 3 3 8 3 7
A4 4 3 8 3 4 5
A5 4 5 6 6 7 7
Nun werden die Standorte 1, 2 und 3 eröffnet. Berechnen Sie, durch Rechnen einer
Iteration des Node-Partitioning-Verfahrens, die möglichen Kosteneinsparungen,
die sich gegebenenfalls durch eine andere Lösung ergeben.
21. Entlang einer 200 km langen Straße sind bei Kilometer 50, 100, 130 und 180 die
4 Nachfrager B1 , B2 , B3 und B4 lokalisiert; ihr Bedarf beträgt 30, 10, 20 bzw.
40 Stück eines von der Firma Liefer-GesmbH zuzustellenden Gutes. Um eine kostengünstige Zustellstrategie zu entwickeln, plant die Liefer-GesmbH entlang der
erwähnten Straße zwei Auslieferungslager zu errichten. Lager L1 wird eine Kapazität von 60 Stück und Lager L2 von 40 Stück aufweisen. Die Transportkosten
pro Längen- und Mengeneinheit sind der folgenden Tabelle zu entnehmen
cij B1 B2 B3 B4
L1 4 4 3 6
L2 3 5 7 2
Wo sollen nun diese Lager errichtet werden und welche Kunden sind ihnen jeweils zuzuordnen, sodaß die gesamten Transportkosten möglichst gering sind?
Beantworten Sie dazu an Hand einer Iteration des heuristischen TransportationLocation-Verfahrens von Cooper die folgenden Fragen
(a) Gehen Sie von einer Startlösung aus, in der Lager 1 bei Kilometer 120 und
Lager 2 bei Kilometer 150 errichtet wird. Welche Nachfrager werden mit welchen Mengen von Lager 1 versorgt, wenn die Kapazität von Lager 2 jeweils
zur Hälfte für B1 und B4 genützt wird? Wie hoch sind die Gesamtkosten
dieser Startlösung?
(b) Berechnen Sie nunmehr die der Startlösung entsprechende verbesserte Position entweder von Lager 1 oder von Lager 2!
22. Das folgende durch die Entfernungsmatrix D := (dij ) und die Intensitätsmatrix
T := (tij ) gegebene quadratische Zuordnungsproblem ist mit der Methode der
Sukzessiven Einbeziehung zu lösen. Die Auswahl der noch freien Plätze bzw.
Organisationseinheiten (OE) erfolgt lexikographisch; im Startschritt wird OE1
auf Platz A gesetzt. Berechnen Sie aber nicht die vollständige Lösung, sondern nur
eine Teillösung, und zwar jene in der OE1 , OE2 und OE3 möglichst kostengünstig
62
KAPITEL 5. BEISPIELE
angeordnet sind.
dij A B C
A 0 40 60
B 30 0 10
C 80 30 0
D 60 90 70
D
20
50
20
0
tij
1
2
3
4
1
0
8
3
9
2
7
0
4
1
3
2
5
0
6
4
4
6
3
0
23. Die Werkzeugerzeugungs-AG, WAG, produziert derzeit auf den Maschinen M1
bis M4 und erwägt auf Grund der anhaltenden Hochkonjunktur mit weiteren 3
Anlagen, also M5 bis M7 , ihre Kapazität aufzustocken. Für die neuen Anlagen
stehen die Plätze P1 , P2 , P3 und P4 zur Verfügung. Die räumliche Situation (die
Entfernungen in Meter) der betreffenden Maschinenhalle kann durch die folgende
Matrix veranschaulicht werden
P1 P2 P3 P 4
5 7 5 5
6 4 6 5
4 6 3 8
3 5 6 8
M1
M2
M3
M4
Die Werkzeugproduktion macht es erforderlich, dass die teilweise fertiggestellten
Produkte zwischen bestehenden und neuen Maschinen ausgetauscht werden. Die
Anzahl dieser Transporte beträgt:
M1
M2
M3
M4
M1 M2 M3
1
4
5
6
2
3
4
6
3
4
6
3
Die dadurch entstehenden Kosten cij (pro Meter) für einen Transport zwischen
einer Maschine Mi , i ∈ {1, 2, 3, 4} und einer Maschine Mj , j ∈ {5, 6, 7} sind
lediglich von Mi abhängig
Cij
M1 M2 M3 M4
1
4
5
4
Bestimmen Sie einen möglichst kostengünstigen Aufstellungsplan für die neuen
Aggregate. Wo werden diese aufgestellt und wie hoch sind die Gesamtkosten?
24. Der Chef einer Logistikabteilung, Herr Leopold, hat folgendes Problem: seine
Firma will insgesamt bis zu 5 Vertriebsplätze Vi , i ∈ {1, 2, 3, 4, 5} eröffnen, von
denen die 5 Nachfrager Nj , j ∈ {1, 2, 3, 4, 5} versorgt werden sollen. Da jeder
Vertriebsplatz in der Lage ist, die Gesamtnachfrage zu decken, müssen keine Kapazitätsrestriktionen berücksichtigt werden. In der folgenden Tabelle hat Leopold
die Kosten für eine Lieferung der Nachfrage des Kunden Nj durch den Vertrieb
5.3. STANDORTPROBLEME
63
Vi eingetragen
V1
V2
V3
V4
V5
N1 N2 N3 N4 N5
6
7
5
6
5
4
4
6
5
5
3
5
1
8
7
3
4
1
9
5
8
7
6
6
5
An Kosten für die Eröffnung eines Vertriebes an der Stelle i wären 6, 5, 4, 6 und 5
(für i=1,2,3,4,5) anzusetzen. Bestimmen Sie einen Zustellplan, der angibt welcher
Kunde von welchem Vertrieb versorgt wird. Gehen Sie dabei auf die folgenden
Fragen ein
(a) Wie lautet der mit einem heuristischen Verfahren bestimmte Zustellplan
und wie hoch sind die Gesamtkosten für Leopolds Firma?
(b) Läßt sich die in eben ermittelte Lösung mit den vorhandenen Informationen auf Optimalität hin untersuchen? Begründen Sie warum diese Lösung
optimal beziehungsweise nicht optimal ist!
(c) Leopold erfährt in letzter Sekunde, dass sich die Fixkosten des Vertriebes 4
doch noch senken ließen. Ab welchem Betrag würden sich gegenüber dem
bisherigen Zustellplan Einsparungen ergeben? Erklären Sie warum!
25. Gegeben sei das folgende Standortproblem: in der folgenden Matrix bezeichnen
P1 , P2 , P3 und P4 mögliche Standorte, die die Nachfrager N1 , N2 , N3 und N4
versorgen können und mit cij sind die Kosten beschrieben, die auftreten, wenn
der Bedarf von Nachfrager Nj ausschließlich vom Standort Pi gedeckt wird
P1
P2
P3
P4
N1 N2 N3 N4
6
3
9
5
9
9
1
6
5
4
9
6
4
8
5
6
Wird ein Standort Pi eröffnet, so fallen Errichtungskosten Fi , i ∈ {1, 2, 3, 4} in
der Höhe von 4, 2, 3 und 3 an. Beantworten Sie die folgenden Fragen unter der
Annahme, dass alle anfallenden Kosten minimiert werden sollen und unter der
Bedingung, dass die Gesamtnachfrage erfüllt werden muss.
(a) Bestimmen Sie für diese Problemstellung, unter der Annahme, dass jeder
Standort höchstens 2 Nachfrager versorgen kann, die Zielfunktion sowie die
notwendigen Gleichungen eines Linearen Programms und erklären Sie alle
von Ihnen verwendeten Symbole und Abkürzungen.
(b) Lösen Sie das Problem, unter der Annahme, dass jeder Standort beliebig
viele Nachfrager versorgen kann, mit einem heuristischen Verfahren und geben Sie die Struktur der Lösung sowie die ihr entsprechenden Gesamtkosten
an.
64
KAPITEL 5. BEISPIELE
(c) Läßt sich die eben errechnete Lösung verbessern? Wenn ja, um wieviel?
Begründen Sie Ihre Aussage.
26. Tischler Theobald hat sich eines graphentheoretischen Verfahrens bedient, um
die Maschinen in seiner Schreinerhalle neu anzuordenen. Und zwar so, dass der
durch die einzelnen Nachbarschaften gegebene Nutzen in Summe möglichst groß
ist. Theobald, Modernem stets aufgeschlossen, hat bereits das fertige Layout
gemäß seinen Berechnungen auf ein Platt Papier gezeichnet und will sich eben
an die Arbeit machen, seine Maschinen neu anzuordnen. Dabei hat er entdeckt,
dass er in der Aufregung wohl besagte Skizze verloren hat. Zum Glück findet er
nach einiger Zeit noch seine Berechnungen. In der letzten Zeile des zerschlissenen
Blattes ist da noch folgendes auszumachen
∆ = {σ135 , σ136 , σ146 , σ148 , σ158 , σ235 , σ237 , σ258 , σ278 , σ368 , σ378 , σ468 }
Meister Theobald weiß noch, dass der Index 2 die 5 mal 5 Meter große Schreinerhalle selbst repräsentierte und kennt natürlich nachwievor noch die Grundfläche
aller seiner Maschinen, die er umzustellen gedenkt: je 1 m2 für die Maschinen 4
und 6, je 2 m2 für Maschinen 1 und 5, 6 m2 für Maschine 8, 5 m2 für Maschine
3 und letztlich 8 m2 für Maschine 7. Alle Maschinen sind so flexibel aufgebaut,
dass sie in jeweils ein Quadratmeter große Stücke zerlegt und anschließend wieder
beliebig zusammengebaut werden können. Bei allen Maßangaben hat Theobald
natürlich den Platzbedarf für sich, also zum Gehen und Arbeiten, bereits einberechnet. Helfen Sie ihm sein Layout zu rekonstruieren, wobei Sie Ihrer Konstruktion das Außendreieck σ237 zu Grunde legen.
27. Gegeben sei ein quadratisches Zuordnungsproblem mit 5 Organisationseinheiten
(OE), die auf 5 Plätze verteilt werden sollen. Im Startschritt wird OE1 auf den
Platz A gesetzt, die Auswahl der noch freien Plätze bzw. OE erfolgt lexikographisch. Zeigen Sie alle 30 Zuordnungsvarianten auf, die in Abhängigkeit von
den 4 einzelnen Iterationen des Lösungsverfahrens der Sukzessiven Einbeziehung
berücksichtigt werden. Unterstellen Sie dabei den folgenden Rechenverlauf: am
Ende der ersten Iteration wird OE2 auf Platz C gesetzt, in der zweiten Iteration
verdrängt OE3 die OE1 , welche auf D angeordnet wird und in Iteration drei wird
der Platz B von OE4 eingenommen.
28. Zwei Nachfrageorte, N1 und N2 , die von der Speditionsfirma Hurtig & Hilfreich
beliefert werden, sind 13 Kilometer voneinander entfernt und durch genau eine
Straße miteinander verbunden, an welcher Herr Hurtig plant, ein Auslieferungslager zu errichten. Im Betrachtungszeitraum sind von dort 5 Fahrten zu N1 und
3 Fahrten zu N2 erforderlich. Pro gefahrenem Kilometer sind 7 Geldeinheiten anzusetzen. Zeigen Sie nun, Ihres Zeichens Logistikleiter(in) bei Hurtig & Hilfreich,
wieviele Geldeinheiten mindestens einzusparen sind, wenn das Auslieferungslager nicht an dem durch die Schwerpunktkoordinaten gegebenen Punkt besagter
Straße - Herrn Hilfreichs Lösungsvorschlag - errichtet wird.
29. Distributionsvariante I: Eisverkäufer Engelbert unterhält zur Zeit in Graz die
Eissalons E1 , E2 , E3 und E4 . Im Rahmen einer Geschäftserweiterung plant Engelbert nun den Straßenverkauf, und somit in der Innenstadt die Verkaufsstände
5.3. STANDORTPROBLEME
65
V1 , V2 und V3 zu errichten. Auf Grund seiner guten Verbindungen zum örtlichen
Magistrat hat man ihm zur Errichtung seiner Verkaufsstände sogar 4 mögliche
Standorte, nämlich S1 , S2 , S3 und S4 , angeboten. Er fertigt eine Skizze an, ermittelt die folgenden Entfernungen (in km) und fährt im Zuge der angestrebten
Gesamtfinanzplanung auch die derzeitig anfallenden Fixkosten FEi seiner Eissalons an (in 1.000 epro Betrachtungszeitraum)
E1
E2
E3
E4
S1 S2 S3 S4 FEi
3 6 5 6
5
6 2 3 5
1
7 6 3 1
2
4 3 8 7
1
Die Eisproduktion ist seit jeher schon unterschiedlich auf alle Salons aufgeteilt gewesen. Die gesamten Transportkosten für die von den Salons an die Verkaufsstände
gemäß einer Markterhebung zuzustellenden Mengen sind der folgenden Tabelle
zu entnehmen (in epro km und Betrachtungszeitraum). FV i beschreibt analog
zu oben die Fixkosten für die Verkaufsstände:
E1 E2 E3 E4 FV i
V1 1 3 2 7
3
1
V2 2 5 4 5
V3 5 6 1 3
2
(a) Bestimmen Sie einen möglichst kostengünstigen Aufstellungsplan, wenn Engelbert keinen Eissalon schließen und alle Verkaufsstände eröffnen will. Wo
werden die Verkaufsstände errichtet und wie hoch sind die Gesamtkosten?
(b) Distributionsvariante II: Engelberts Logistiküberlegungen beinhalten auch
folgende Idee: er überlegt, auf den Straßenverkauf vollständig zu verzichten.
Seine Kunden sollen sich schon selbst in einen seiner Eissalons bemühen,
dafür will er aber im Gegenzug die Kunden aller 4 (ehemals als mögliche
Straßenverkaufsstandorte vorgesehenen) Absatzbereiche bedienen. Engelbert
geht davon aus, dass er, unter Einhaltung seiner sich selbstlos auferlegten Restriktion der vollen Nachfragebefriedigung, nicht alle Eissalons weiterführen
muss. Welche Eissalons sollen nun in Zukunft geöffnet bleiben, wenn keiner
seiner Kunden mehr als 5 Kilometer von zumindest einem seiner Betriebe entfernt sein soll? Bestimmen Sie nach Möglichkeit eine kostenminimale
Lösung für die weitere Betriebsführung und erklären Sie warum Ihre Vorgangsweise zu einer bzw. keiner Optimallösung geführt hat!
(c) Distributionsvariante III: In der vorweihnachtlichen Aufregung ist Engelbert ein Fehler unterlaufen: in der Entfernungsmatrix hat er versehentlich
Kosten (in 1.000 epro Betrachtungszeitraum) eingetragen. Und zwar an der
Stelle Ei /Sj jene, die für ihn anfallen, wenn Eissalon i zur Gänze den Bedarf
aller Kunden des Absatzbereichs j deckt. Wiederum soll auf den Straßenverkauf verzichtet werden und es müssen nicht alle Salons weitergeführt
werden. Welche Betriebe sind bei voller Bedarfsbefriedigung und möglichst
kostengünstiger Verteilungsstruktur aufrechtzuhalten? Wie setzen sich die
von Engelbert zu tragenden Kosten zusammen?
66
KAPITEL 5. BEISPIELE
Anhang A
Programmierbeispiele
Alle abgedruckten Beispiele stehen (eventuell aktualisiert) auch auf https://85.124.
230.179/~gerald/uni/pws/ zur Verfügung und können gerne als Ausgangspunkt eigener Experimente verwendet werden. Um zu programmieren ist stets ein Texteditor
nötig. In Windows ist bereits das notepad1 enthalten, jedoch ist es einer der schlechtesten Programmiereditoren. Wir empfehlen Notepad++, eine sehr gute Open Source
Alternative, die auf http://notepad-plus.sourceforge.net frei zur Verfügung steht.
A.1
GNU Linear Programming Kit
The GLPK (GNU Linear Programming Kit) package is intended for
solving large-scale linear programming (LP), mixed integer programming
(MIP), and other related problems. It is a set of routines written in ANSI
C and organized in the form of a callable library.
GLPK supports the GNU MathProg language, which is a subset of the AMPL language. The GLPK package includes the following main components:
• Revised simplex method
• Primal-dual interior point method
• Branch-and-bound method
• Translator for GNU MathProg
• Application program interface (API)
• Stand-alone LP/MIP solver
[Fou06]
1
Das notepad ist im deutschsprachigen Raum auch als “Editor” bekannt.
67
68
ANHANG A. PROGRAMMIERBEISPIELE
Im professionellen Bereich wird zur Lösung der im Kurs besprochenen Probleme häufig
AMPL2 verwendet. Die dafür nötigen Solver wie zum Beispiel CPLEX sind jedoch
sehr teuer. GLPK verwendet GMPL3 , eine für unsere (und viele andere Probleme)
vollkommend ausreichende Teilmenge von AMPL. Der große Vorteil von GLPK ist,
dass es Open Source Software ist und damit frei verwendet werden kann (auch die
kommerzielle Verwendung ist frei). Weiters steht es für verschiedene Betriebssysteme
wie MS Windows und Linux zur Verfügung.
Ein Tutorial in GLPK sowie eine vollständige Anleitung und ein Referenzhandbuch
stehen auf https://85.124.230.179/~gerald/uni/pws/manuals/ zur Verfügung. Der
Sourcecode von GLPK kann von einem Mirror der TU Wien4 heruntergeladen werden.
Eine kompilierte Version für die Verwendung unter Microsoft Windows stellt die Oakland University5 zur Verfügung. Die Installation unter Linux, zum Beispiel Debian
oder Ubuntu ist natürlich (für Kenner) viel Einfacher als unter Windows
sudo apt-get install glpk
Sobald man eine Modelldatei erstellt hat, kann diese mit folgendem Befehl gelöst werden
glpsol -m modelldatei.mod -o loesungsdatei.txt
wobei “modelldatei.mod” natürlich durch den Namen Ihrer Modelldatei zu ersetzen
ist und “loesungsdatei.txt” durch einen frei wählbaren Namen ersetzbar ist. Um den
Befehl glpsol unter Windows verwenden zu können, lesen Sie bitte im oben erwähnten
Tutorial nach; eine Linux manpage von GLPK steht online auch für Windowsbenutzer
zur Verfügung6 . Unter Linux sind nach der Installation wie gewohnt keine weiteren
Einstellungen nötig. Viel Freude beim experimentieren!
A.1.1
1
2
3
4
5
6
7
Candy Problem
/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ Module name: candy problem
∗ Description: Linear Program solving a candy problem :)
∗ Language: glpk
∗ Author: Gerald Senarclens de Grancy, Rita Stueckler, Aniko Tobi
∗ Copyright: GPL see file COPYING
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
2
AMPL - “A Mathematical Programming Language”
GMPL - “GNU Mathematical Programming Language”
4
ftp://gd.tuwien.ac.at/gnu/gnusrc/glpk
5
http://personalwebs.oakland.edu/~echeng/mor342.html
6
http://www.penguin-soft.com/penguin/man/1/glpsol.html
3
A.1. GNU LINEAR PROGRAMMING KIT
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
69
###################################################
# Sets and Parameters
###################################################
# Production plants
set P;
# Consumers
set K;
# capacity of plant p in cases
param b{p in P};
# demand of consumer k in cases
param d{k in K};
# variable cost for production and delivery
param c{p in P, k in K};
# fixed cost per plant
param f{p in P};
###################################################
# Variables
###################################################
# shipping quantities
var x{p in P, k in K}, integer, >= 0;
# plant construction
var y{p in P}, binary;
###################################################
# Objective
###################################################
# The objective needs a name, in this case ’cost’
minimize cost: sum{p in P, k in K} c[p,k] ∗ x[p,k] + sum{p in P} f[p] ∗ y[p];
###################################################
# Constraints
###################################################
s.t. demand{k in K}: sum{p in P} x[p,k] = d[k];
s.t. supply{p in P}: sum{k in K} x[p,k] <= b[p];
s.t. fixed{p in P}: y[p] >= (sum{k in K} x[p,k]) / b[p];
###################################################
# Data
###################################################
data;
set P := plant1 plant2 plant3;
set K := customer1 customer2 customer3;
param b := plant1 444000
plant2 336000
plant3 300000;
param d := customer1 276000
customer2 132000
70
ANHANG A. PROGRAMMIERBEISPIELE
57
customer3 192000;
58 param ccustomer1
:
customer2 customer3 :=
59
plant1 711 6
60
plant2 97
4
61
plant3 513 10;
62 param f := plant1 960000
63
plant2 600000
64
plant3 840000;
65 end;
A.1.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Extinguisher Problem
/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ Module name: extinguisher problem
∗ Description: Linear Program solving a location problem
∗ Language: glpk
∗ Author: Rita Stueckler, Tobi Aniko, Senarclens de Grancy Gerald
∗ Copyright: GPL
see file COPYING
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
#######################
# Sets and Parameters #
#######################
# office rooms
set O;
# possible locations for extinguishers
set L;
# fixed cost for each location
param c{l in L};
# reachability matrix
param r{o in O, l in L};
#############
# Variables #
#############
# installation of extinguisher
var y{l in L}, binary;
#############
# Objective #
#############
# the goal is to minimize the cost
minimize cost: sum{l in L} c[l] ∗ y[l];
###############
# Constraints #
A.2. PYTHON
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
71
###############
# we need at least one extinguisher for each office
demand{o in O}: sum{l in L} y[l] ∗ r[o,l] >= 1;
########
# Data #
########
data;
set O := office1 office2 office3 office4 office5 office6 office7 office8 office9 office10;
set L := extinguisher1 extinguisher2 extinguisher3 extinguisher4 extinguisher5 extinguisher6;
param c := extinguisher1 15
extinguisher2 5
extinguisher3 10
extinguisher4 5
extinguisher5 20
extinguisher6 5;
param r : extinguisher1 extinguisher2 extinguisher3 extinguisher4 extinguisher5 extinguisher6 :=
office1 1
1
0
0
1
1
office2 1
1
0
1
0
0
office3 1
0
1
0
1
0
office4 1
0
0
1
0
1
office5 1
1
0
0
1
1
office6 1
0
0
1
0
1
office7 1
1
1
0
1
0
office8 1
1
0
1
0
0
office9 0
1
0
0
1
0
office10 1
0
0
1
1
1;
end;
A.2
Python
Auch die Programmiersprache Python7 ist plattformunabhängig und steht (auch für
kommerzielle) Nutzung kostenfrei (weil Open Source) zur Verfügung. Es ist auch ausreichend Dokumentation in mehreren Sprachen vorhanden ist, unter anderem auch einige
Unterlagen für jene, die noch nie programmiert haben8 .
Die angefügten Python Beispiele erheben nicht den Anspruch “sauber” programmiert zu sein. Sie zeigen jedoch sehr schön, wie man schnell und dennoch elegant einige
der im Skriptum gezeigten Algorithmen in einer sehr einfachen frei Verfügbaren und
Plattformunabhängigen Sprache implementieren kann.
7
8
http://www.python.org/
http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
72
A.2.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Nordwesteckenregel
#!/usr/bin/env python
# Copyright (c) 2007 Gerald Senarclens de Grancy
# You may copy, modify and distribute this software according to the terms of
# the Gnu GPL (see file COPYING for details)”””
# sample data
a = [25,15,10]
b = [30,15,5]
x = []
m = len(a)
n = len(b)
# initialize the array x
for i in range(m):
x.append([])
for j in range(n):
x[i].append(’ ’)
i=0
j=0
while(True):
x[i][j] = min(a[i],b[j])
a[i] = a[i] x[i][j]
b[j] = b[i] x[i][j]
if i==m 1 and j==n 1:
break
if a[i] == 0:
i+=1
else:
j+=1
# print the result to the screen (with a leading linebreak
print
for i in range(m):
print x[i]
A.2.2
1
2
3
4
5
6
ANHANG A. PROGRAMMIERBEISPIELE
Spaltenminimummethode
#!/usr/bin/env python
# Copyright (c) 2007 Gerald Senarclens de Grancy
# You may copy, modify and distribute this software according to the terms of
# the Gnu GPL (see file COPYING for details)”””
# sample data
A.2. PYTHON
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
a = [25,15,10]
b = [30,15,5]
# c is an array of columns (this is easier when comparing the cost in
# each column)
c = [[1,2,2],[2,1,3],[1,2,3]]
x = []
# m is the number of rows
m = len(a)
# n is the number of columns
n = len(b)
# initialize the array x
for i in range(m):
x.append([])
for j in range(n):
x[i].append(0)
# initialize lists of marked rows and columns
# 0 means unmarked, 1 means marked
marked columns=[]
marked rows=[]
for i in range(m):
marked rows.append(0)
for j in range(n):
marked columns.append(0)
def unmarkedColumns():
return marked columns.count(0)
def markColumn(j):
marked columns[j] = 1
def columnIsMarked(j):
return marked columns[j]
def markRow(i):
marked rows[i] = 1
def rowIsMarked(i):
return marked rows[i]
def allRowsMarked():
if marked rows.count(0)==0:
return True
def allButOneColumnsMarked():
if marked columns.count(0)==1:
return True
def getUnmarkedRowWithMinCost(j):
possibilities = []
for elem in range(m):
if marked rows[elem] == 1:
possibilities.append("marked")
else:
possibilities.append(c[j][elem])
return possibilities.index(min(possibilities))
73
74
ANHANG A. PROGRAMMIERBEISPIELE
56
57 while(True):
58
for j in range(m):
59
if columnIsMarked(j): continue
60
min index = getUnmarkedRowWithMinCost(j)
61
x[min index][j] = min(a[min index],b[j])
62
a[min index] = a[min index] x[min index][j]
63
b[j] = b[j] x[min index][j]
64
if unmarkedColumns()>=2 and b[j]==0:
65
markColumn(j)
66
if a[min index]==0 and b[j]!=0:
67
markRow(min index)
68
elif a[min index]==b[j]==0 and not columnIsMarked(j):
69
markRow(min index)
70
if allRowsMarked() and allButOneColumnsMarked():
71
# print the result to the screen
72
for i in range(m):
73
print x[i]
74
exit()
75
A.2.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Miehle Algorithmus
#!/usr/bin/env python
# Copyright (c) 2007 Gerald Senarclens de Grancy
# You may copy, modify and distribute this software according to the terms of
# the Gnu GPL (see file COPYING for details)”””
from math import ∗
###################################################
## data and options
###################################################
epsilon = 10 ∗∗ ( 5)
iterations = 9
## the coordinates are two dimensional, the third figure is the weight
## following the schema (u,v,b)
points = ((1,3,4),(2,8,10),(2,10,3),(8,16,1),(10,18,5))
###################################################
## calculation
###################################################
u=0
v=1
b=2
## calculate the base solution
A.2. PYTHON
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
75
sum ub = 0.0
sum vb = 0.0
sum b = 0.0
for point in points:
sum ub += point[u]∗point[b]
sum vb += point[v]∗point[b]
sum b += point[b]
x0 = sum ub/sum b
y0 = sum vb/sum b
solution = 0.0
for point in points:
solution += point[b] ∗ sqrt((x0 point[u])∗∗2 + (y0 point[v])∗∗2 + epsilon)
print "x0 = %f, y0 = %f, Z’(x0,y0) = %f" % (x0,y0,solution)
## iterations
x old = x0
y old = y0
for iteration in range(iterations+1)[1:]:
x numerator = 0.0
y numerator = 0.0
denominator = 0.0
for point in points:
x numerator += (point[b]∗point[u]/sqrt((x old point[u])∗∗2 + (y old point[v])∗∗2 + epsilon))
denominator += (point[b]/sqrt((x old point[u])∗∗2 + (y old point[v])∗∗2 + epsilon))
y numerator += (point[b]∗point[v]/sqrt((x old point[u])∗∗2 + (y old point[v])∗∗2 + epsilon))
x = x numerator / denominator
y = y numerator / denominator
solution = 0.0
for point in points:
solution += point[b] ∗ sqrt((x point[u])∗∗2 + (y point[v])∗∗2 + epsilon)
print "x%d = %f, y%d = %f, Z’(x%d,y%d) = %f" % (iteration,x,iteration,y,iteration,iteration,solution)
x old = x
y old = y
76
ANHANG A. PROGRAMMIERBEISPIELE
Literaturverzeichnis
[Aic02]
Oswin Aichholzer. Entwurf und Analyse von Algorithmen. Technische
Universität Graz, 2002. http://fmysql.tu-graz.ac.at/~igi/Skript/
NoFrame/index.html [Online; Stand 27. Februar 2008].
[Fou06]
Free Software Foundation. GLPK (GNU Linear Programming Kit). GNU
Project, 11 2006. http://www.gnu.org/software/glpk/#introduction
[Online; Stand 11. Jänner 2008.
[Gre07]
Peter Greistorfer. Unterlagen zu den Lehrveranstaltungen Produktionswirtschaft. Universität Graz, 2007.
[Pre03]
Bruno R. Preiss. Data Structures and Algorithms with Object-Oriented Design Patterns in Python. Bruno R. Preiss, P.Eng., 2003. http://www.
brpreiss.com/books/opus7/ [Online; Stand 27. Februar 2008].
[Wik07a] Wikipedia.
Lineare optimierung — wikipedia, die freie enzyklopädie, 2007. http://de.wikipedia.org/w/index.php?title=Lineare_
Optimierung&oldid=40156343 [Online; Stand 6. März 2008].
[Wik07b] Wikipedia.
Produktionswirtschaft — wikipedia, die freie enzyklopädie, 2007.
http://de.wikipedia.org/w/index.php?title=
Produktionswirtschaft&oldid=39134282 [Online; Stand 25. November 2007].
[Wik08a] Wikipedia. Algorithmus — wikipedia, die freie enzyklopädie, 2008. http://
de.wikipedia.org/w/index.php?title=Algorithmus&oldid=41923750
[Online; Stand 3. Februar 2008].
[Wik08b] Wikipedia.
Graph (graphentheorie) — wikipedia, die freie enzyklopädie, 2008. http://de.wikipedia.org/w/index.php?title=Graph_
%28Graphentheorie%29&oldid=41105452 [Online; Stand 4. Februar 2008].
[Wik08c] Wikipedia. Modi-methode — wikipedia, die freie enzyklopädie, 2008.
http://de.wikipedia.org/w/index.php?title=MODI-Methode&oldid=
43455964 [Online; Stand 8. März 2008].
[Wik08d] Wikipedia. Netzplantechnik — wikipedia, die freie enzyklopädie, 2008. http:
//de.wikipedia.org/w/index.php?title=Netzplantechnik&oldid=
42434345 [Online; Stand 2. März 2008].
77
78
LITERATURVERZEICHNIS
[Wik08e] Wikipedia. Opportunitätskosten — wikipedia, die freie enzyklopädie,
2008. http://de.wikipedia.org/w/index.php?title=Opportunit%C3%
A4tskosten&oldid=43070274 [Online; Stand 6. März 2008].
[Wik08f] Wikipedia.
Stepping-stone-methode — wikipedia, die freie enzyklopädie, 2008.
http://de.wikipedia.org/w/index.php?title=
Stepping-Stone-Methode&oldid=43375606 [Online; Stand 6. März
2008].
[Wik08g] Wikipedia.
Transportproblem — wikipedia, die freie enzyklopädie, 2008.
http://de.wikipedia.org/w/index.php?title=
Transportproblem&oldid=42985148 [Online; Stand 4. März 2008].
Index
Überdeckungsproblem, 36
Ausgangslösung, siehe Basislösung
azyklischer Graph, 3
Bäume, 3
Basislösung, 20
Computerterminals, 1
Digraph, 3
Edge, siehe Kante
elementarer Kreis, 26
Entfernungen, 3
Eröffnungsheuristik, 20
FIFO-Algorithmus, 10
Partitionsproblem, 36
Prim, siehe Algorithmus von Prim
Programmierbeispiele, 67
Python, 36, 47, 55
quadratisches Zuordnungsproblem, siehe KoopmansBeckman-Problem
QZOP, siehe Koopmans-Beckman-Problem
set covering, siehe Überdeckungsproblem
set partitioning, siehe Partitionsproblem
Shortest Path Problem, 7
Spaltenminimummethode, 23
Startlösung, siehe Basislösung
Stepping-Stone Methode, 26
Tripel-Algorithmus, 10
Vertex, siehe Knoten
gerichteter Graph, siehe Digraph
GLPK, 54, 56, 57, 59, 60, 67
Warehouse Location Problem, 33
GNU Linear Programming Kit, siehe GL- Wege, 3
PK
WLP, siehe Warehouse Location Problem
Iterationen, 2
zyklischer Graph, 3
Kante, 3
Knoten, 2
Koopmans-Beckman-Problem, 38
Logistik, 1
Longest Path Problem, 8
minimal spannende Bäume, 3
MODI-Methode, 28
modifizierte Distributionsmethode, siehe MODIMethode
MST, 3
Nordwesteckenregel, 21
79
Herunterladen