1.2 Primaler Simplex Algorithmus

Werbung
Inhaltsverzeichnis
Inhaltsverzeichnis _______________________________________________________ 1
1. Lineare Optimierung - Simplex-Verfahren __________________________________ 2
1.1 Prüfbedingungen für notwendige Optimierungsschritte ______________________ 2
1.2 Primaler Simplex Algorithmus _________________________________________ 2
1.3 Dualer Simplex-Algorthmus ___________________________________________ 5
1.4 3-Phasen-Methode __________________________________________________ 6
1.5 3 Phasen Sensitivitätsanalyse _________________________________________ 9
2. Transportalgorithmen _________________________________________________ 12
2.1 Nordweststreckenregel ______________________________________________ 12
2.2 Matrixminimum/ Zeilenminimum ______________________________________ 13
2.3 Vogelsche Approximationsmethode ____________________________________ 14
2.4 Modiverfahren/ iterative Verbesserung/ Stepping Stone ____________________ 15
3. Tourenplanung ______________________________________________________ 17
3.1 Saving-P-Verfahren ________________________________________________ 17
3.2 Verbesserungsverfahren: einfache 2-OPT-Regel __________________________ 18
4. Zuschnittsoptimierung_________________________________________________ 19
4.1 Zuschnittsoptimierung ______________________________________________ 19
5. Ganzzahlige Opt./ Schnittebenenverf./ Gomory _____________________________ 20
Vergleich der Verfahren ________________________________________________ 21
6. Fertigungsablaufsteuerung _____________________________________________ 21
Johnson-Regel für 2 Maschinen __________________________________________ 21
7. Genetische Algorithmen _______________________________________________ 24
7.1 Allgemein ________________________________________________________ 24
7.2 Kreuzungen – Varianten _____________________________________________ 26
7.3 Weitere Beispiele/ Tourenprobleme/ Rundreiseproblem ____________________ 26
7.3.1 PMX Verfahren _________________________________________________ 26
7.3.2 OX Verfahren __________________________________________________ 27
7.3.3 Cycle Crossover-Operator ________________________________________ 27
7.3.4 ERX – Edge Recombination Crossover _______________________________ 28
7.3.5 Ergänzung ____________________________________________________ 28
8. Nichtlineare Optimierung_______________________________________________ 29
8.1 Quadratische Optimierung – Wolfe ____________________________________ 29
8.2 Gradientenverfahren – Rosen ________________________________________ 30
8.3 Schnittebenenverfahren – Kelley ______________________________________ 31
9. Warteschlangen ______________________________________________________ 33
9.1 Markov-Prozesse/ Markov-Ketten _____________________________________ 33
10. Übersicht welches Verfahren wofür? _____________________________________ 34
Seite 1
1. Lineare Optimierung - Simplex-Verfahren
1.1 Prüfbedingungen für notwendige Optimierungsschritte
primaler Optmierungsschritt:
 Elemente der Zielfunktion:
- wenn Elemente > 0 vorhanden
- kein Element > 0 in Zielfunktion  optimale Lösung wurde gefunden
- gibt es weitere Elemente = 0 in Zielfunktion, gibt es weitere Lösungen
dualer Optimierungsschritt:
 rechte Seite betrachten
- wenn 1 oder mehrere Elemente der r. Seite < 0
- gibt es kein Element in der Pivotzeile <= 0, dann existiert keine Lösung
keine Lösung, wenn:
 kein Element in der Pivotzeile <= 0, dann existiert keine Lösung
 alle Elemente der Pivotspalte (außer Zielfkt.) <= 0  es existiert keine Lösung
1.2 Primaler Simplex Algorithmus
Bsp. maximiere x1+ 3/2 x2
x1 + x2 <= 3
x1+2x2<=4
x >= 0
Graphische Lösung:
Der Ausgangspunkt für die Berechnung ist der Ursprung des Koordinatensystems.
Durch Paralellverschiebung der Isogewinngeraden schräg nach oben, erhält man immer
höhere Gewinne.
Da der zulässige Bereich beschränkt ist, muss man die Paralellverschiebung in einem
Eckpunkt beenden.
Aufgabenstellung: Produktionsplan
Produkt 1 Gewinn: 2 T€
Produkt 2 Gewinn: 2,2 T€
 Zur Herstellung stehen Maschine A und B zur Verfügung:
Maschine A: 100 h/ Woche
Maschine B: 80 h/ Woche
Produkt 1: A 1h und B 2h
Produkt 2: A 2h und B 1h
Rohmaterial: R 16kg S 20kg  Produkt 1
R 15kg S 16kg  Produkt 2
 pro Woche stehen zur Verfügung R 960kg und S 1200kg
ges. Produktionsprogramm mit größten Gewinn
Seite 2
1. Schritt: Gleichungen aufstellen
Gewinn: 2x1+2,2x2 maximieren  Gewinn muss maximiert werden
A: 1x1 + 2x2 <= 100
B: 2x1 + 1x2 <= 80
16x1 + 15x2 <=960
20x1 + 16x2 <= 1200
x >= 0  es kann keine negative Produktanzahl geben
2. Schritt: primaler Optimierungsschritt
- wenn Elemente der Zielfunktion > 0 vorhanden
- ist kein Element > 0 in der Zielfunktion vorhanden, dann wurde optimale Lsg. gefunden
- gibt es Elemente = 0 in der Zielfunktion, so gibt es weitere Lösungen
a)  Werte ins Tableau übertragen:
x3
x4
x5
x6
Zielfkt.
d.Hilfsf.
x1
1
2
16
20
2
x2
2
1
15
16
2,2
r.Seite
100
80
960
1200
0
p.Hilfsf.
50
80
64
75
b) Pivotspalte: = Maximum in der Zielfunktion
c) primales Hilfsfeld berechnen bei Werten > 0  p.Hilfsfeld = Elemente rechte Seite
Elemente Pivotspalte
d) gibt es kein Element der Pivotspalte > 0, dann existiert keine Lösung!
e) Suche das Minimum im Hilfsfeld  liefert Pivotzeile
f) Pivotelement wird durch 1/ Pivotelement ersetzt
(Pivotelement = Element das sich als Schnittpkt. von PZeile und PSpalte ergibt)
g) alle anderen Werte der Pivotzeile, werden durch den ursprüngl. Wert des
Pivotelements dividiert (hier :2)
 nicht der Wert des primales Hilfsfeldes!
h) alle anderen Elemente der PSpalte werden durch den negierten ursprünglichen Wert
des Pivotelements dividiert (hier :-2)
i) alle anderen Elemente des Simplex-Tablaus werden nach der Rechteckregel ersetzt
 rechnet man mit den alten Werten: Element - Element der PZeile x Element PSpalte
Pivotelement
 rechnet man mit den neuen Werten: Element + Element der PZeile x Element PSpalte
Pivotelement
j) Tausche anschließend Variablen von Pivotspalte und Pzeile
Seite 3
 es ergibt sich folgendes Tableau:
x2
x4
x5
x6
Zielfkt.
d.Hilfsf.
x1
o,5
1,5
8,5
12
0,9
x3
0,5
-0,5
-7,5
-8
-1,1
r.Seite
50
30
210
400
-110
p.Hilfsf.
100
20
24,71
33,33
3. Schritt: neuer Optimierungsschritt?
a)  neuer Optimierungsschritt, wenn Elemente in der Zielfunktion > 0
- wenn kein Element > 0 in Zielfunktion vorhanden, wurde optimale Lsg. gefunden
- wenn Elemente = 0 in Zielfunktion, gibt es weitere Lösungen
 Elemente in Zielfunktion > 0  daher erneuter Optimierungsschritt
b) Suche Maximum in der Zielfunktion  Pivotspalte
c) primales Hilfsfeld berechnen, wenn Elemente > 0
d) Suche Minimum bei primalem Hilfsfeld  Pivotzeile
e) Pivotelement ersetzen durch 1/ Pivotelement  1/ 1,5 = 0,67
f) alle anderen Werte der Pivotzeile, werden durch den ursprüngl. Wert des Pivotelements
dividiert (hier : 1,5)
 nicht der Wert des primales Hilfsfeldes!
g) alle anderen Elemente der PSpalte werden durch den negierten ursprünglichen Wert
des Pivotelements dividiert (hier :-1,5)
h) alle anderen Elemente werden nach Rechteckregel ersetzt
i) Tauschen der Spaltenbezeichnungen für PSpalte und PZeile
ergibt folgendes Tableau:
x2
x1
x5
x6
Zielfkt.
d.Hilfsf.
x4
-0,33
0,67
-5,67
-8
-0,6
x3
0,67
0,33
4,67
-4
-0,8
r.Seite
50
20
40
160
-128
p.Hilfsf.
j) Prüfen ob weiterer Optimierungsschritt notwendig ist
 da alle Elemente < 0 in der Zielfunktion, ist kein weiterer notwendig
Ergebnis: Das Maximum wurde berechnet. Die optimale Lösung lautet -128
x3 und x4 sind die Maschinen, dh. der Gewinn beträgt 128 T€, dafür müssen 40 Produkte
der Sorte 2 (x1) und 20 der Sorte 1 (x2) pro Woche hergestellt werden.
Seite 4
1.3 Dualer Simplex-Algorthmus
Beispiel:
100x1 + 200x2 + 300x3  maximieren (d.h. -100x1 – 200x2 – 300x3  minimieren)
-4x1 – 2x2 – 3x3 <= -4
-3x1 – 4x2 – 5x3 <= -5
x >= 0
1. Schritt: auf Optimierungsschritt prüfen!
a) Werte in Tableau übertragen
Prüfe ob dualer oder primaler Optimierungsschritt notwendig ist!
 da 1 oder mehr Elemente der rechten Seite < 0  dualer Schritt ist notwendig
x4
x5
Zielfkt.
d.Hilfsf.
x1
-4
-3
100
-25
x2
-2
-4
200
-100
x3
-3
-5
300
-100
r.Seite
-4
5
0
p.Hilfsf.
b) Suche das Minimum der rechten Seite  liefert Pivotzeile
c) Berechne das duale Hilfsfeld  duales Hilfsfeld = Elemente der Zielfunktion
Elemente der Pivotzeile
!!! Gibt es kein Element in der Pivotzeile < 0, dann existiert keine Lösung.
d) Suche das Minimum unter den Werten des dualen Hilfsfeldes  Pivotspalte
e) Pivotelement wird durch 1/ Pivotelement ersetzt (hier -0,33)
f) alle anderen Elemente der Pivotzeile werden durch den ursprünglichen Wert des
Pivotelements dividiert (-3)
g) alle anderen Elemente der Pivotspalte werden durch den negierten ursprünglichen
Wert des Pivotelements dividiert (+3)
! nicht die Elemente des d.Hilfsf.
h) alle anderen Elemente werden nach der Rechteckregel ersetzt (nicht d.Hilfsf.)
 rechnet man mit den alten Werten: Element - Element der PZeile x Element PSpalte
Pivotelement
 rechnet man mit den neuen Werten: Element + Element der PZeile x Element PSpalte
Pivotelement
i) anschließend Tauschen der Variablen in der Zeilen bzw. Spaltenbezeichnung
Seite 5
 es ergibt sich folgendes Tableau:
x3
x5
Zielfkt.
d.Hilfsf.
x1
1,33
3,67
-300
x2
0,67
-0,67
0
x4
-0,33
-1,67
100
r.Seite
1,33
11,67
-400
p.Hilfsf.
j) Prüfung ob dualer oder primaler Optmierungsschritt notwendig ist
 alle Elemente der Pivotspalte <= 0  es existiert keine Lösung
1.4 3-Phasen-Methode
Verwendung: wenn 1 Wert der rechten Seite negativ ist und/ oder
Gleichheitsbedingungen vorkommen
maximiere 2x1 + x2 + 3x3
unter den Restriktionen:
3x1 + 2x2 <= 6
x1 + 2x3 >= 4
x1 + x2 + x3 = 10
x >= 10
 -x1 - 2x3 <= - 4
1. Phase: Prüfen ob Gleichheitsbedingungen zu behandeln sind
a) Werte in Tableau einsetzen
x3
x4
x5
Zielfkt.
d. Hilfsf.
x1
3
-1
1
2
x2
2
0
1
1
x3
0
-2
1
3
r.Seite
6
-4
10
0
p.Hilfsf.
b) Gleichheitsnebenbedingung liefert die Pivotzeile
c) Element der Pivotzeile was nicht Null ist  Pivotspalte
d) Pivotelement durch 1/ Pivotelement ersetzen (1/1)
e) alle anderen Elemente der Pivotzeile werden durch den ursprünglichen Wert des
Pivotelements dividiert
f) alle anderen Elemente der Pivotspalte werden durch den ursprünglichen negativen
Wert des Pivotelements dividiert
g) alle anderen Elemente des Simplex werden nach der Rechteckregel ersetzt
 rechnet man mit den alten Werten: Element - Element der PZeile x Element PSpalte
Pivotelement
 rechnet man mit den neuen Werten: Element + Element der PZeile x Element PSpalte
Pivotelement
Seite 6
i)
Tausche die Bezeichnung von Pivotspalte und –zeile
ergibt dann folgendes Tableau:
x4
x5
x1
Zielfkt.
d. Hilfsf.
x6
-3
+1
1
-2
x2
-1
1
1
-1
x3
-3
-1
1
1
r.Seite
-24
6
10
-20
p.Hilfsf.
j) Streiche nun die Pivotspalte aus dem Tableau
h) Prüfe ob weitere Gleichheitsbedingungen vorhanden sind, oder ob primaler
Optimierungsschritt notwendig
 es ist ein dualer Schritt notwendig, da ein oder mehrere Elemente der r.Seite > 0 sind
2. Schritt: dualer Optimierungsschritt
a) Suche das Minimum der rechten Seite  liefert Pivotzeile
b) Berechne nach duale Hilfsfeld, wenn Elemente der Pivotzeile < 0 sind
duales Hilfsfeld = Elemente der Zielfkt.
Elemente Pivotzeile
 gibt es kein Element der Pivotzeile < 0, dann existiert keine Lösung
x3
x5
x1
Zielfkt.
d. Hilfsf.
x2
-1
1
1
-1
1
x4
-3
-1
1
1
-0,33
r.Seite
-24
6
10
-20
p.Hilfsf.
c) unter den berechneten Werten des d. Hilfsfeldes such man das Minimum  Pspalte
d) Pivotelement wird durch 1/ Pivotelement ersetzt
e) alle andern Elemente der Pivotzeile werden durch den ursprüngl. Wert des
Pivotelements dividiert
f) alle anderen Elemente der Pivotspalte werden durch den negierten ursprünglichen Wert
des Pivotelements dividiert
g) alle übrigen Werte werden nach der Rechteckregel ersetzt
 rechnet man mit den neuen Werten: Element + Element der PZeile x Element PSpalte
Pivotelement
h) Tausche nun die Variablen von Pivotspalte und –zeile miteinander
Seite 7
es ergibt sich folg. Tableau:
x3
x5
x1
Zielfkt.
d. Hilfsf.
x2
0,33
1,33
0,67
-1,33
x4
-0,33
-0,33
0,33
0,33
r.Seite
8
14
2
-28
p.Hilfsf.
i) Prüfe nun, ob ein primaler oder dualer Optimierungsschritt notwendig ist
 primaler Schritt ist notwendig, da 1 oder mehrere Elemente in der Zielfunktion > 0
Phase 3: Primaler Optmierungsschritt
a) Suche Maximum in der Zielfunktion  Pivotspalte
c) primales Hilfsfeld berechnen, wenn Elemente der Pivotspalte > 0 sind
p.Hilfsfeld = Elemente rechte Seite
Elemente Pivotspalte
d) Suche Minimum bei primalem Hilfsfeld  Pivotzeile
e) Pivotelement ersetzen durch 1/ Pivotelement  1/ 1,5 = 0,67
f) alle anderen Werte der Pivotzeile, werden durch den ursprüngl. Wert des Pivotelements
dividiert (hier : 0,33)
 nicht der Wert des primales Hilfsfeldes!
g) alle anderen Elemente der PSpalte werden durch den negierten ursprünglichen Wert
des Pivotelements dividiert (hier :-0,33)
h) alle anderen Elemente werden nach Rechteckregel ersetzt
i) Tauschen der Spaltenbezeichnungen für PSpalte und PZeile
ergibt folgendes Tableau:
x3
x5
x1
Zielfkt.
d. Hilfsf.
x2
1
2
2
-2
x4
1
1
3
-1
r.Seite
10
16
6
-30
p.Hilfsf.
6
j) Prüfen ob weiterer Optimierungsschritt notwendig ist
 nein, da Elemente in Zielfkt. nicht > 0 sind, ist das optimale Ergebnis gefunden
 Maximum wurde berechnet  optimale Lösung = - 30
Seite 8
1.5 3 Phasen Sensitivitätsanalyse
x1 – x2 maximieren
x1 + x2 <= 5
x1 + 2x2 <= 3
x >= 0
x1
1
1
1
x3
x4
Zielfkt.
d.Hilfsf.
x2
1
2
1
r.Seite
5
3
0
p.Hilfsf.
 ganz normal 3-Phasen-Methode durchführen
Sensitivitätsanalyse:
1. Mögl. Hinzufügen einer Nebenbedingung
 dem vollständig berechneten Simplex-Tableau wird nun eine neue Nebenbedingung
hinzugefügt
 um das Hinzufügen einer NB darstellen zu können, muss man anstatt des verkürzten
Tableaus, das ausführliche Tableau angezeigt werden
 vollständige Darstellung des Simplex Tableaus:
x3
1
0
0
x3
x1
Zielfkt.
d.Hilfsf.
x1
0
1
0
x4
-1
1
-1
x2
-1
2
-3
r.Seite
2
3
-3
p.Hilfsf.
 Hinzufügen der NB:
x3
x1
x5
Zielfkt.
d.Hilfsf.
x3
1
0
0
0
x1
0
1
2
0
x5
0
0
1
0
x4
-1
1
0
-1
2. Mögl. Ändern der Zielfunktion
Seite 9
x2
-1
2
1
-3
r.Seite
2
3
3
-3
p.Hilfsf.
Seite 10
Seite 11
2. Transportalgorithmen
 in Firmen produzieren a(i) Mengeneinheiten eines Produktes n
 n-Verbraucher benötigen b(j) Mengeneinheiten
 Transportkosten sind unterschiedlich
 gesucht: Transportmengen die minimale Transportkosten verursachen
Voraussetzungen: gesamte Produktionsmenge = gesamte Verbrauchsmenge
2.1 Nordweststreckenregel
-
die linke obere Ecke einer Matrix, die die gesuchten Transportmengen x(i,j) enthält,
wird als Nordweststrecke bezeichnet
zur Bestimmung der Anfangslösung wird die Matrix von West nach Ost fortlaufend
beginnend mit der Nordweststrecke, soweit wie möglich belegt
Bsp.
4 Produktionsstätten mit 27, 35, 43 und 29
4 Verbraucher mit 33, 39, 25 und 37
 Produktionsmengen = Verbrauchsmengen
 deshalb ist weder ein Scheinerzeuger, noch ein Scheinverbraucher einzuführen
Transportkosten:
P1
P2
V1
1
5
V2
5
1
1. Schritt: Finden einer Ausgangslösung
 die Verteilung beginnt mit der Nordweststrecke (P1,V1)
2. Schritt: Suchen der kleinsten Transportkosten
V1
V2
Prod.menge
P1
1
0
1
P2
0
1
1
Verbr.menge
1
1
3. Schritt: Zuordnen
-
P1, V1  Verbraucher V1 benötigt 1 Einheit, Produzent 1 kann 1 Einheit
liefern, dieser Wert wird eingetragen, P1 kann nichts weiter liefern und wird
daher 0
P1, V2  V2 benötigt 1 Einheit, P1 kann aber nichts mehr liefern daher 0
P2, V1  V1 benötigt keine weiteren Einheiten mehr, daher 0 usw.
P1
P2
Verbr.menge
V1
1
0
0
V2
0
1
0
Prod.menge
0
0
Die Gesamtkosten betragen: 1*1 +1*1 = 2
Seite 12
2.2 Matrixminimum/ Zeilenminimum
Bsp.
Produktionsmengen: 27, 35, 4 und 29
Verbrauchsmengen: 33, 39, 25 und 37
Transportkosten:
P1
P2
P3
P4
V1
28
17
21
16
V2
46
58
42
25
V3
64
54
30
43
V4
11
21
14
34
1. Schritt: die Verteilung beginnt bei den geringsten Transportkosten, anschließend
werden immer die nächst kleinsten Transportkosten beachtet
 kleinste Kosten bei P1, V4
 V4 benötigt 37 Einheiten
 P1 kann 27 liefern, dieser Wert wird eingetragen
 v4 benötigt nun noch 10 Einheiten
2. Schritt: die nächst kleineren Transportkosten suchen
 bei P3/ V4  V4 benötigt noch 10 Einheiten
 P3 kann 10 Einheiten liefern, 10 wird eingetragen
 P3 kann nun noch 33 Einheiten liefern
3. Schritt: nächst kleinere Transportkosten, sind 16 analog
ergibt: Gesamtkosten = (27*11)+(4*17)+(31*58)+(8*42)+(25*30)+(10*14)+(29*14)
P1
P2
P3
P4
Verbr.mengen
V1
0
4
0
29
0
V2
0
31
8
0
0
V3
0
0
25
0
0
V4
27
0
10
0
0
Prod.mengen
0
0
0
0
Seite 13
2.3 Vogelsche Approximationsmethode
P1
P2
P3
P4
Bedarf
Differenz
V1
28
17
21
16
33
1
0
33
0
0
V2
46
58
42
25
39
17
0
0
10
29
V3
64 0
54 0
30 25
43 0
25
13
V4
11 27
21 2
14 8
34 0
37 10
37
Prod.
27 0
35
43
29
Differenz
17
4
7
9
1. Schritt: Differenz berechnen
 Differenz berechnet sich aus kleinsten Wert der Zeile oder Spalte zum
nächstkleineren Wert der Zeile oder Spalte
2. Schritt: in der Zeile/ Spalte mit der größten Differenz wird das Feld mit dem
kleinsten c(i,k) aufgesucht und maximal belegt
 bei gleichen Differenzen wird die Zeile/ Spalte mit dem kleinstem c(i,k)
aufgesucht und maximal belegt
 gibt es mehrere kleinste c(i,k)s, wird das Element gewählt, dem die
größte Transportmenge zugeordnet werden kann
 gibt es auch gleiche Transportmengen, so wird ein beliebiges Element
ausgewählt
hier:



max Differenz ist 17, kleinstes Element der Spalte ist 11
P1 kann 27 Einheiten anbieten, V4 braucht 37 Einheiten
somit werden dem Verbraucher 4 27 Einheiten zugeordnet
P1 kann nun gestrichen werden
3. Schritt: Werte aktualisieren
 Bedarf und Produktsmenge neu ausrechnen
 Differenzen neu berechnen
 weiter mit Schritt 2, solange bis alle Felder neu belegt
( im Bsp. hier das Ergebnis 2907)
Seite 14
2.4 Modiverfahren/ iterative Verbesserung/ Stepping Stone
 man untersucht nach und nach 0-Einträge im Tableau und ersetzt sie gegf.
durch positive Werte und erzeugt dadurch an einer anderen Stelle eine 0
 zur Ergebnisoptimierung
P1
P2
P3
P4
V1
0 28
4 17
0 21
29 16
v1= -2
V2
0 46
31 58
8 42
0 25
v2= 39
V3
0 64
0 54
25 30
0 43
v3= 27
V4
27 11
0 21
10 14
0 34
v4= 11
u1=0
u2=19
u3=3
u4=18
1. Schritt: Berechnen der Hilfswerte u(i) und v(j)
u(i)+v(j)=d(i,j)
wichtig ist, dass man zum Berechnen nicht die Variablen nehmen kann, die den
Wert Null (unbelegte Felder) haben.
erster V-Wert wurde gefunden bei P1/v4
v(4)=c(1,4)-u(1)=11-0=11
u(3)=c(3,4)-v(4)=14-11=3
v(2)=c(3,2)-u(3)=42-3=39
v(3)=c(3,3)-u(3)=30-3=27
u(2)=c(2,2)-v(2)=58-39=19
v(1)=c(2,1)-u(2)=17-19=-2
u(4)=c(4,1)-v(1)=16-(-2)=18
2. Schritt: Berechne die ok(i,j) für die unbelegten Felder (NBV) die Werte
ok(i,j)=c(i,j)-u(i)-v(j)
sind alle ok(I,j) >= 0, so wurde die optimale Lösung gefunden und das Verfahren würde
beendet werden
ok(1,1)=c(1,1)-u(1)-v(1)=28-0-(-2)=30
ok(1,2)=c(1,2)-u(1)-v(2)=46-0-39=7
ok(1,3)=c(1,3)-u(1)-v(3)=64-0-27=37
ok(2,3)=c(2,3)-u(2)-v(3)=54-19-27=8
ok(2,4)=c(2,4)-u(2)-v(4)=21-19-11=-9
ok(3,1)=c(3,1)-u(3)-v(1)=21-3-(-2)=20
ok(4,2)=c(4,2)-u(4)-v(2)=25-18-39=-32
ok(4,3)=c(4,3)-u(4)-v(3)=43-18-27=-2
ok(4,4)=c(4,4)-u(4)-v(4)=34-18-11=5
 es muss quasi immer eine Berechnung durchgeführt warden, wenn die Werte = 0 sind
Seite 15
3. Schritt: Suche das Minimum der OK-Werte
kleinster Wert ist -32
Die entsprechende NBV wird als BV angesehen und ist im Tableau zu kennzeichnen
 Das Minimum der ok-Werte liegt bei P4/V2
 die Optimallösung wurde noch nicht gefunden, weiterer Optimierungsschritt notw.
P1
P2
P3
P4
V1
0 28
4 17
0 21
29 16
v1= -2
V2
0 46
31 58
8 42
0 25
v2= 39
V3
0 64
0 54
25 30
0 43
v3= 27
V4
27 11
0 21
10 14
0 34
v4= 11
u1=0
u2=19
u3=3
u4=18
4. Schritt: Streichen aller Zeilen und Spalten mit nur einer BV
5. Schritt: Suche eine Wegkette
 das erste Element der Wegkette ist immer das markierte Element
 Suche abwechselnd Zeilen- und spaltenweise eine ungestrichene BV
-
es wurde ein Zeilennachfolger gefunden, an Position P4/V1
es wurde ein Spaltennachfolger gefunden, an Position P2/V1
es wurde ein Zeilennachfolger gefunden, an Position P2/V2
 die momentane Verschiebungsmenge beträgt 29 (Minimum der grün
markierten Werte)
6. Schritt: Werte ändern um den Betrag der Verschiebungsmenge
V1
V2
V3
V4
P1
0 28
0 46
0 64
27 11
u1=0
P2
4+29 17
31-29 58
0 54
0 21
u2=19
P3
0 21
8 42
25 30
10 14
u3=3
P4
29-29 16
0+29 25
0 43
0 34
u4=18
v1= -2
v2= 39
v3= 27
v4= 11
Algorithmus beginnt so lange von neuem, bis kein Austausch mehr nötig ist.
weiter also bei Schritt 1, bis alle ok(i,j) >=0 sind
(in diesem Bsp. hier, wird der Algorithmus noch 1x durchgeführt, die Gesamtkosten
betragen dann 2907)
Entartungen beim Modi-Verfahren:
 es sind nicht genügend BV vorhanden
- in diesem Fall sind einige NBV (Elemente mit Wert 0) als BV anzusehen
Folgende Regeln bei der Realisierung beachten:
- wurde kein negativer ok-Wert gefunden, könnnte evtl. bei anderer Belegung
einer gefunden werden (viele Belegungen prüfen)
- gleiches gilt auch bei einer Verschiebungsmenge von „0“
Seite 16
3. Tourenplanung
3.1 Saving-P-Verfahren
Bsp. Firma muss Waren an ihre Kunden liefern
- Waren werden in mehreren Depots gelagert
- Waren sollen kostengünstig verteilt werden
- möglichst wenige Touren und wenig Personal
Einschränkungen dabei:
- Ware lagert an einem Ort
- n Kunden sind zu beliefern
- Symmetrische Entfernungen sind bekannt
- Kapazität der Fahrzeuge ist einheitlich
- Kunden werden nur 1x beliefert
 6 Kunden sollen beliefert werden/ max Tourdauer 200/ max Liefermenge 115
Entf.zum Depot
Liefermenge
Entf. zu Kd.
1
2
3
4
5
1
23
33
1. Schritt: Pendeltouren berechnen
Tour 1:
0-1-0
Menge: 33
2:
0-2-0
24
3:
0-3-0
33
4:
0-4-0
53
5:
0-5-0
36
6:
0-6-0
27
2
32
24
33
3
43
33
30
24
4
35
53
23
43
32
5
37
36
26
39
27
31
6
29
27
45
33
40
31
26
Dauer: 46
64
86
70
74
58
2. Schritt: Saving Werte berechnen s(i,j)=dp(i)+dp(j)-d(i,j)
s(1,2)=dp(1)+dp(2)-d(1,2)=23+32-33=22
s(1,3)=23+43-30=6
s(1,4)=23+35-23=35
s(1,5)=23+37-26=34
s(1,6)=23+29-45=7
s(2,3)=32+43-24=51
s(2,4)=24
s(2,5)=30
s(2,6)=28
s(3,4)=46
s(3,5)=53
s(3,6)=32
s(4,5)=41
s(4,6)=33
s(5,6)=40
Seite 17
3. Schritt: Saving Werte absteigend sortieren (also mit größten beginnen)
s(3,5)=53
s(2,3)=51
s(3,4)=46
s(4,5)=41
s(5,6)=40
s(1,3)=36
usw. …
4. Schritt: Touren versuchen zusammen zu fassen
unter den Bedingungen:
1. i und j gehören verschiedenen Touren an
2. i und j sind in ihren bisherigen Touren Endknoten
3. Q wird nicht überschritten
4. T wird nicht überschritten
s(3,5)=53
 3 und 5 zusammenfassen (bisher verschiedene Touren, sind beides
Endknoten, Q und T werden nicht überschritten)
Tour
0-1-0
0-2-0
0-3-5-0
0-4-0
0-6-0
1:
2:
3:
4:
6:
Menge: 33
24
69
53
27
Dauer: 46
64
107
70
58
s(2,3)=51
 2 und 3 zusammenfassen
Menge: 24 + 69 = 93
Dauer: 64 + 107 – 51 = 120  (Tour 0-2-0) + (Tour 0-3-5-0) – s(2,3)
Tour
0-1-0
0-2-3-5-0
0-4-0
0-6-0
1:
2:
4:
6:
Menge: 33
93
53
27
Dauer: 46
120
70
58
 zusammenlegen so fortsetzen bis alle s-Werte abgearbeitet und keine weiteren
Zusammenlegungen mehr möglich sind
(Lösung hier: 0-1-4-6-0 Menge 113 und Dauer 106 und 0-2-3-5-0 Menge 93 und Dauer
120)
3.2 Verbesserungsverfahren: einfache 2-OPT-Regel
Man vergleicht eine geg. Tour mit einer leicht geänderten Tour und wählt von beiden die
bessere aus.
Änderung erfolgt dabei so, dass zwei in der Tour benachbarte Orte (Ecken) vertauscht
werden.
Bsp.
3-5-7-6-2-1 verglichen mit 3-7-5-6-2-1
Seite 18
4. Zuschnittsoptimierung
4.1 Zuschnittsoptimierung
Bsp. Schreinerei soll Regale erstellen
Leisten a 2m
Regale:
60 x a 1,20m
120 x a 1,70m
150 x a 0,3 m warden benötigt
Leisten-Varianten/ Schnittvarianten
1,20
1
1
0
0
0
 60
0,70
1
0
2
1
0
 120
0,30
0
2
2
4
6
 150
Variante
1
2
3
4
5
1x1 + 1x2 >= 60
1x1 + 2x3 + 1x4 >= 120
2x2 + 2x3 + 4x4 + 6x5 >= 150
x1 + x2 + x3 + x4 + x5  minimieren
x >= 0
 dieses Problem kann jetzt mit der dualen Simplexmethode gelöst werden
Seite 19
5. Ganzzahlige Opt./ Schnittebenenverf./ Gomory
Bsp: 1x1 + 1x2  maximieren
mit 2x1 +x2 <= 4
x1 + 2x2 <= 3
x1 >= 0 und x2 >= 0
x3
x4
Zielfkt.
d. Hilfsf.
x1
2
1
1
x2
1
2
1
r.Seite
4
3
0
p.Hilfsf.
1. primalen Schritt durchführen
x3
x2
r.Seite
p.Hilfsf.
x1
0,5
0,5 2
2
x4
-0,5
1,5 1
3
Zielfkt.
-0,5
0,5 -2
d. Hilfsf.
2. primalen Schritt durchführen
x3
x4
r.Seite
p.Hilfsf.
x1
0,67
-0,33
1,67
4
x2
-0,33 0,67
0,67
0,67
Zielfkt.
-0,33 -0,33
-2,33
d. Hilfsf.
Das Ergebnis der Optimierung ist nicht ganzzahlig  mit Gomory Verfahren wir eine
ganzzahlige Lösung berechnet!
Gomory-Verfahren:
 besitzen ganzzahlige Basisvariablen noch einen nicht ganzzahligen Wert, so führe für
die Variable mit dem kleinsten Index, der noch nicht behandelt wurde, eine neue Zeile
ins Simplex-Tableau ein und führe weitere Austauschschritte durch
x3
x4
r.Seite
p.Hilfsf.
x1
0,67
-0,33
1,67
x2
-0,33
0,67
0,67
x1*
-0,67
-0,67 -0,67
Zielfkt.
-0,33
-0,33
-2,33
d. Hilfsf.
c1*,3= -(0,67-0) = -0,67 (-0, da das nächstkleinere Ganze)
c1*,4= -(-0,33-(-1)) = -0,67
c*= -(1,67-1) = -0,67
 dualen Schritt durchgeführt
x3
x4
r.Seite
p.Hilfsf.
x1
1
-1
1
x2
-0,5
1
1
x3
-1,5
1
1
Zielfkt.
-0,5
0
-2
d. Hilfsf.
0.5
0,5
 das ganzzahlige Maximum wurde berechnet, die optimale Lösung lautet -2
Seite 20
Vergleich der Verfahren
Zufallsverfahren
- leicht implementierbar
- benötigen wenig Speicherplatz
- liefern in kurzer Zeit brauchbare Ergebnisse
- garantieren aber nicht dafür, dass das die optimale
Lösung ist
 Einsatz dort wo man rasch gute Lösungen benötigt
- für techn. Probleme in der Regel nicht, oder nur bedingt
geeignet
Gomory
 falls seine Voraussetzungen erfüllt sind, in kurzer Zeit
exakte, optimale Ergebnisse
- können leicht Rundungsfehler auftreten
- Implementierung einfach
- Speicherbedarf gering
Banch und Bound Verfahren
- liefert exakte, optimale Ergebnisse
- Rechenzeit ist jedoch größtenteils recht groß
- nicht gut geeignet für kurzfristig notwendige Ergebnisse
 ideal für techn. Probleme, wo´s nicht auf die
Rechenzeit ankommt
- Implementierung einfach
- Speicherbedarf immens hoch
6. Fertigungsablaufsteuerung
Bsp. Möbelherstellung in einer Möbelfabrik
 Möbel durchlaufen mehrere Abteilungen
 Reihenfolge der Abteilungen ist vorgeg.
 Bearbietungszeiten sind bekannt
Johnson-Regel für 2 Maschinen
AuftragsNR
M1
M2
nach FIFO:
AuftragsNr
Anf M1
Ende M1
Anf M2
Ende M2
1
2
3
4
5
6
7
8
9
10
Summe
5
6
9
3
7
7
9
5
4
2
3
3
5
5
10
4
6
2
8
10
66
47
6
34
37
37
40
7
37
42
42
47
8
42
52
52
56
1
0
5
5
11
2
5
14
14
17
3
14
21
21
28
4
21
30
30
35
5
30
34
35
37
Seite 21
9
52
58
58
60
10
58
66
66
76
 Maschinenbelegung ohne Optimierung: Gesamtlaufzeit von 76 Zeiteinheiten
Berechnung der Reihenfolge nach Johnson
1. Das Minimum der Bearbeitungszeiten ist 2, u.a. für Auftrag 9  so wird Auftrag 9
auf den letzten freien Platz der Reihenfolge gesetzt (da M2-Wert, M1-Werte
werden auf den ersten freien Platz gesetzt)
 R = Reihenfolge ( - - - - - - - - - 9)
2. Ebenso Auftrag 5 hat ein Minimum von 2 (auch M2-Wert)
 R = Reihenfolge ( - - - - - - - - 5 9)
3. Das Minimum der Bearbeitungszeit ist 3 für Auftrag 6 an Maschine M2
 R = Reihenfolge ( - - - - - - - 6 5 9)
usw. ergibt:
 R = Reihenfolge ( 1 10 3 4 7 8 2 6 5 9)
Anfangs- und Endzeiten der Bearbeitung der einzelnen Aufträge auf den einz. Maschinen,
bei berechneter Reihenfolge:
AuftragsNr
Anf M1
Ende M1
Anf M2
Ende M2
1
0
5
5
11
10
5
13
13
23
3
13
20
23
30
4
20
29
30
35
7
29
34
35
40
8
34
44
44
48
M1 steht insgesamt 68 – 66 = 2
M2 steht insgesamt 68 – 47 = 21 Zeiteinheiten
Gesamtlaufzeit von 68 Zeiteinheiten
Seite 22
2
44
53
53
56
6
53
56
56
59
5
56
60
60
62
9
60
66
66
68
Bsp 2:
Auftrag
M1
M2
1
28
39
2
41
27
3
26
35
4
36
11
5
21
15
Summe
152
127
Reihenfolge 1..2..3 (FIFO = First In First Out)
AuftragNr
Anf M1
Ende M1
Anf M2
Ende M2
1
0
28
28
67
2
28
69
69
96
3
69
95
96
131
4
95
131
131
142
5
131
152
152
167
 ohne Optimierung so 167 Zeiteinheiten
Maschinenbelegung nach Johnson
Minimum von M1  bekommen den ersten Platz in der Reihe
Minimum von M2  bekommen letzten Platz in der Reihe
ist ein Auftrag zugeordnet wurden, wird er nicht weiter betrachtet
1. Minimum der Bearbeitungszeiten ist 11  Auftrag
Reihe R = Reihenfolge = ( - - - - 4)
2. Minimum der Bearbeitungszeiten ist 15  Auftrag
Platz in der Reihe R = Reihenfolge = ( - - - 5 4)
3. Minimum der Bearbeitungszeiten ist 26  Auftrag
Platz in der Reihe R = Reihenfolge = ( 3 - - 5 4)
4. Minimum der Bearbeitungszeiten ist 27  Auftrag
Platz in der Reihe R = Reihenfolge = ( 3 - 2 5 4)
5. Minimum der Bearbeitungszeiten ist 28  Auftrag
Platz in der Reihe R = Reihenfolge = ( 3 1 2 5 4)
AuftragNr
Anf M1
Ende M1
Anf M2
Ende M2
3
0
26
26
61
1
26
54
61
100
2
54
95
100
127
4 bekommt letzten Platz der
5 bekommt den letzten freien
3 bekommt den ersten freien
2 bekommt den letzten freien
1 bekommt den letzten freien
5
95
116
127
142
4
116
152
152
163
 diese Reihenfolge ergibt eine Gesamtlaufzeit von 163 Zeiteinheiten (man spart 4)
 M1 steht insgesamt 163- 152 = 11 Zeiteinheiten
 M2 steht insgesamt 163- 127 = 36 Zeiteinheiten
Seite 23
7. Genetische Algorithmen
7.1 Allgemein
Bsp. gesucht ist das ganzzahlige Maximum der Fkt.
f(x)=2x
Lösung:
1. man erstellt zunächst eine zufällige Anfangspopulation von 6 Individuen
- jedes Individuum besteht aus 8 Bit (= 8 Gene)
- liefert der Zufallsgenerator eine Zahl zw. 0 und 0,5, so setzt man ein Bit auf 1
ansonsten auf 0
- 8 Bit stellen eine Binärzahl dar, mit Einsetzen dieser Zahl (dezimal) in die
Funktion f, ergibt sich die Fitness des Individuums
- die genetische Codierung, der Bitstring wird GENOTYP genannt
- die zur Berechnung der Fitness notwendige Dezimalzahl, wird als Phänotyp
bezeichnet
ein Zufallszahlengenerator liefere z.B. die folgenden in 0 und 1 gleichverteilten
Zufallszahlen:
Individuum
Genotyp
Phänotyp
1
01101110
110
2
01000011
67
3
11101110
238
4
01000101
69
5
11110101
245
6
01100000
96
Gesamtfitness 1650
Fitness
220
134
476
138
490
192
2. man erzeugt eine Nachfolgepopulation P` durch
a) eine Mutation mit einem zufällig ausgewählten Individuum
b) eine Kreuzung mit den besten Individuuen
c) drei Rekobinationen (Selektion)
a) Mutation  zufällig wird Zeile 2 ausgewählt
Wertigkeit
8
7
6
5
4
3
2
1
Altes Bit
0
1
0
0
0
0
1
1
Zufallszahl
0,59
0,9
0,39
0,6
0,05
0,55
0,31
0,95
Neues Bit
0
1
0
0
1
0
1
1
 ist die Zufallszahl kleiner 0,3 wird das alte Bit geändert, ansonsten bleibt
es unverändert
Seite 24
die neue Population P’ lautet:
Individuum
1
Genotyp
01001011
Phänotyp
75
Fitness
150
b) Kreuzung  es werden Zeile 5 und 3 gewählt (größte Fitness)
Indiv1
(Zeile 5)
1
1
1
1
0
1
0
1
Indiv2
(Zeile 3)
1
1
1
0
1
1
1
0
Zufallszahl
Indiv1’
Indiv2’
1
1
0,39
1
0,39
1
0
1
0
1
Phänotyp
238
245
Fitness
476
490
 die neuen Elemente werden in die Bevölkerung übernommen
Individuum
1
2
3
1
1
1
0
1
1
1
0
Genotyp
01001011
11101110
11110101
Phänotyp
75
238
245
Fitness
150
476
490
Gesamtfitness: 1116
c) Selektion/ Reproduktion
- man wählt frei ein Element aus der alten Bevölkerung aus
- Phänotyp von Indiv. 6 ist 96, die Fitness 192
- neues Element wird in die Bevölkerung übernommen (genau so, wie es auch in
der alten Bevölkerung ist)
fehlen noch 2 neue Individuen, über a), b) oder c) erzeugen
Hinweis:
Genetische Algorithmen führen nicht zu "der" Lösung, sondern oft nur zu einer Lösung,
die "gut" oder "gut genug" ist. Grund dafür ist z.B., dass es keinen allgemeingültigen
Algorithmus gibt, der zum Ziel führt. Man müsste also alle Möglichkeiten aufschreiben
und die jeweilige Fitness bestimmen. Dies ist aber wegen der immensen Zahl der
Möglichkeiten nicht realistisch durchführbar (lange Rechenzeit). Alternative: man wendet
ein Verfahren an, das in jedem Schritt eine immer bessere Lösung liefert. Oft ist es so,
dass die ersten Schritte eine nennenswerte Verbesserung bringen, die weiteren Schritte
aber nur eine geringe Verbesserung. Was tut man dann? Ja klar, man hört auf, wenn es
sich nicht mehr groß rentiert, weiter zu machen, z.B. "wenn sich die Fitness im Verlauf
von 3-5 Generationen nicht mehr ändert".
Seite 25
7.2 Kreuzungen – Varianten
Einfache Kreuzung
(Single-Point-Cross-Over)
- die besten Indiv. sollen gekreuzt warden, damit ihre guten
Eigenschaften an die Kinder weitergegeben warden, da das
Maximum einer Funktion gesuct wird, kreuzt man die Indiv.
mit der größten Fitness
- es wird eine Kreuzungsstelle gesucht (s.o)
Mehrpunkt-Cross-Over
(Multi-Point-Cross-Over)
- es warden die Indiv. an mehreren Stellen gekreuzt
Schablonen-Cross-Over
- gemäß einer zufällig erstellten Schablone, werden die Bits
der Kinder gesetzt
- jede 1 der Schablone wählt ein Bit aus Elter 1 und jede 0
ein Bit aus Elter 2 und umgekehrt
Intermediäre Kreuzung
- das Kind ergibt sich aus den jeweiligen Mittelwerten der
Elter, d.h. (x1+y1/2, x2+y2/2, x3+y3/2 … usw.)
- es gibt mehr als 2 Elter z.B. 3
- per Zufallszahlengenerator wird bestimmt, welche
Komponente aus welchem Elter übernommen werden soll
(z.B. liegt die Zufallszahl zw. 0 und 0,33 dann aus Elter 1,
zw. 0,33 und 0,66 dann aus Elter 2 usw.)
Multikreuzung
7.3 Weitere Beispiele/ Tourenprobleme/ Rundreiseproblem
7.3.1 PMX Verfahren
Tourdaten:
Elter 1:
Elter 2:
1-2-3-4- 5 -6-7-8-9-10
3-6-7-1-10-2-4-9-5-8
1. Teiltour wird auf das Kind übertragen
2. Städte aus Elter 2 übernehmen, welche
 durch Teiltour nicht überdeckt
 und noch nicht in Kind 1 vorhanden
Elter 1:
Elter 2:
Kind:
1
3
3
2
6
3
7
4 5
6
1 10 2
1 5
6
7 8 9
4 9 5
7 9
10
8
8
3. die noch fehlenden Städte werden gemäß ihrer Reihenfolge aus Elter 2
beim Kind eingetragen
Elter 1:
Elter 2:
Kind:
1
3
3
2
6
10
3
7
2
4
1
1
5
10
5
Seite 26
6
2
6
7
4
7
8
9
9
9
5
4
10
8
8
7.3.2 OX Verfahren
Elter 1:
Elter 2:
1
3
2
6
3
7
4
1
5
10
6
2
7
4
8
9
9
5
10
8
1. per Zufallsgenerator wählt man aus Elter 1 eine Teiltour aus
2. Teiltour wird aufs Kind übertragen
3. Am Ende werden die noch fehlenden Städte gemäß ihrer Reihenfolge aus Elter 2 beim
Kind eingetragen
Elter 1:
Elter 2:
1
3
2
6
3
7
4
1
5
10
6
2
7
4
8
9
9
5
10
8
Kind:
3
1
10
2
4
6
7
8
9
5
7.3.3 Cycle Crossover-Operator
Elter 1:
Elter 2:
3
5
5
1
7
4
2
7
1
3
4
6
6
2
Bilde 2 Kinder, wenn aus Elter 1 der Kreis ab Pos. 4 gebildet wird.
1. wähle ein Gen aus einem Elter und ermittle das passende Gegenstück im zweiten Elter
2. Suche dieses Gen wiederum in E1 und führe das solange fort, bis sich ein Kreis
gebildet hat
 die Gene, die im Kreis vorhanden sind, werden von den Eltern übernommen
 die restlichen Gene werden von dem zweiten Elternteil übernommen
Kind 1:
Kind 2:
5
3
1
5
7
4
2
7
3
1
4
6
6
2
d.h. Positionen die gleich mit den Eltern sind, bleiben, die anderen werden einfach
getauscht
Seite 27
7.3.4 ERX – Edge Recombination Crossover
Elter 1:
Elter 2:
1
3
2
6
3
7
1. Schritt: Kantenliste
Stadt x ist verbunden
1
2
3
4
5
6
7
8
9
10
4
1
5
10
6
2
7
4
8
9
9
5
10
8
erstellen
mit den Städten
10 – 2 – 7
1 – 3 - 10 – 4
2–4–8–6
3 – 5 – 2- 9
4 – 6 – 9- 8
5–7–3
6–8–1
7-9–5–3
8 – 10 – 4 – 5
9–1-2
2. zufällig wird eine Anfangsstadt bestimmt: Stadt 8, als Nachfolgestadt wird die Stadt
mit den wenigsten Verbindungen gesucht
3. aus gleich guten Verbindungen wird hier eine Stadt zufällig gewählt (Alternative: die
Stadt mit dem kleinsten Index)
4. bereits besuchte Städte werden entfernt (ganze Zeile und auch in denen Zeilen, wo sie
als Verbindung aufgeführt sind
Kind
8
7
1
10
2
3
6
5
9
4
7.3.5 Ergänzung
 für die Mutation verwendet man z.B. die 2-OPT-Regel
- sagt aus: das man alle Kombinationen für einen Tausch zweier in einer Tour
benachbarten Orte untersuchen soll
1. Einfacher Tausch:  man wählt zufällig zwei benachbarte Orte und tauscht diese aus
Bsp: man tauscht 2 und 9
 aus 5-6-0-1-2-9-8-7-3-4 wird 5-6-0-1-9-2-8-7-3-4
2. Erweiterter Tausch:  man wählt zufällig zwei Orte und tauscht diese aus
Bsp. man tauscht die 2 und die 3
 aus 5-6-0-1-2-9-8-7-3-4 wird aus 5-6-0-1-3-9-8-7-2-4
3. Optimierter Tausch:
 man ermittelt mehrere Tauschpaare, z.B. 3 nach der Regel erweiterter Tausch und
wählt dann für die Mutation dasjenige Paar aus, dass die größte Verbesserung bietet
4. Kantentausch:
 man wählt 2 beliebige Kanten aus, invertiert das Teilstück zw. dem Endort der ersten
Kante und dem Anfangsort der zweiten Kante und verbindet den Anfangsort er ersten
Kante mit dem Anfangsort der zweiten Kante mit dem Endort der zweiten Kante
Bsp: 6-1-2-5-7-3-4-8  Kanten 1-2 und 3-4 sollen getauscht werden
 6-1-3-7-5-2-4-8
Seite 28
8. Nichtlineare Optimierung
8.1 Quadratische Optimierung – Wolfe
Kreis mit Mittelpunkt innerhalb des Restriktionsbereichs
(x1-1)2+(x2-1)2  minimieren
x1+x2 <= 5
Der Mittelpunkt des Kreises M(1/1) liegt unterhalb der Geraden, die den
Restriktionsbereich abgrenzt, somit liegt im Restriktionsbereich der Mittelpunkt
minimiere (x1-1)2+(x2-1)2 oder x12 – 2x1 + x22
unter den Restriktionen x1 + x2 <=5 und x >= 5
1. Umwandlung in Matritzenschreibweise
man erhält dadurch den Koeffizientenausgleich
100
D=
010
000
A=(111)
C=(-2 -2 0)
xo =
0
0
5
p=
-2
-2
0
2. Einsetzen in Matrix B
- die Matrizen D, A und p setzt man zusammen mit der Einheitsmatrix E in die Matrix B
ein und baut diese wiefolgt auf:
B=
B=
A
-2D
0
E
0
-AT
0
p
NBV
1
-2
0
0
NBV
1
0
-2
0
BV
1
0
0
0
BV
0
1
0
0
BV
0
0
1
0
NBV
0
0
0
1
BV
0
-1
-1
-1
NBV
0
-2
-2
0
aus den NBV ergibt sich B’ und aus den BV die die B0
B0=
und
1
0
0
0
0
1
0
0
 0= B0-1 * B’
0
0
1
0
0
-1
-1
-1

B’=
0=
1
-2
0
0
Seite 29
1
-2
0
0
1
0
-2
0
0
0
0
1
1
0
-2
0
0
-1
-1
-1
0
-2
-2
0
0
-2
-2
0
3. Berechnung:
Nun setzt man  0 und die rechte Seite im Simplex Tableau ein und führt übliche Simplex
Schritte aus.
Im ersten Schritt ist immer  zu BV zu machen.
In weiteren Schritten ist darauf zu achten, dass xi und vi nicht gleichzeitig Basisvariable
BV sein dürfen.
x1
x2
x3

x3
v1
v2
u
0
-2
0
0
0
1
0
-2
0
0
0
-1
-1
-1
0
0
-2
-2
0
-1
5
-2
-2
0
0
4. Es werden solange Simplex Schritte durchgeführt, bis die optimale Lösung gefunden
wird
( die optimale Lösung wurde gefunden Sie entspricht dem mittelpunkt des Kreises
x1=1 und x2=1)
8.2 Gradientenverfahren – Rosen
= Methode des stärksten Abstiegs/ method of steepest descent
Berechnen Sie den nächsten Iterationspunkt (x(1)) ausgehend von x(0)=(1,1)
Maximiere –x12 + 8x1 –x22 + 8x2
unter x1 + 2x2 <= 20
Geben Sie dazu noch die Gerade an, auf der der nächste Iterationspunkt x(2) ermittelt
wird, falls überhaupt ein weiterer Iterationspunkt errechnet wird.
Lösung: für den Gradienten von f gilt: grad f = (-2x1 + 8; -2x2 + 8)T
Startpunkt (1,1)
1. Schritt: Startpunkt in die angeg. Funktion einsetzen
 f(1,1) in –x12 + 8x1 –x22 + 8x2 = 14
 (1,1) ist nicht optimal, da grad f(1,1) = (6,6)T
2. Schritt: Nebenbedingung prüfen
 Punkt (1,1) einsetzen
 Nebenbedingung ist erfüllt, da <20, deshalb ist es ein innerer Punkt
3. Schritt: deswegen Gerade berechnen
 x2 = mx1+ b
 Steigung der Geraden 6/6 siehe grad f = 1
1=1*1+b
b=0
 somit hat die Gerade die Form: x2 = 1*x1+0
4. Schritt: f ableiten und in die Gerade einsetzen
 f`= -2x1 + 8 – (1x1+0) + 8
 0 = -2x1 + 8 – (1x1+0) + 8
 x1 = 4
 einsetzen in f: x2= 4
Seite 30
5. Schritt: Ergebnis:
 f (4,4) = 32
 4,4 ist optimal, da grad f(4,4) = (0,0)T
8.3 Schnittebenenverfahren – Kelley
minimiere 2x1 + 3x2
unter x12 - 8x1 + x22 – 2x2 <= -1
x12 <= 2x2
x >= 0
1. Umwandlung der Nebenbedingungen, da gefordert g(x) <= 0
x12 - 8x1 + x22 – 2x2 <= -1
(x1-4)2 + (x2-1)2 <= -1+16+1
g1(x)= (x1-4)2 + (x2-1)2 – 16
g2(x)= x12 - 2x2
2. Berechnen des Gradienten
 ist quasi die Ableitung von g1(x) und g2(x)
grad (g1(x)) = 2(x1-4), 2(x2-1)T
grad (g2(x)) = (2x1, -2)T
3. Bestimmen der Anfangsmenge M1
M1 ergibt sich aus der Nebenbedingung: g1(x)= (x1-4)2 + (x2-1)2 – 16
 beschreibt eine Menge von Punkten, die innerhalb/ auf dem Rand des Kreises mit dem
Mittelpunkt (4,1) liegen
M1 = {x| x1<=8, x2<=5, x1>=0 und x2>=0}
 die Punke ergeben sich durch die Kreisgleichung/ Phytagoras  x2 + y2 = r2
d.h. bei (x1-4)2 + (x2-1)2 = 16  r2 = 16 und r=4
 das kleinste Rechteck, das den Kreis enthält ist demnach bei x1=8 und x2=5
 gehe aus vom Mittelpunkt (4,1) + 4 = (8,5)
4. Gleichungssystem lösen mit Simplex Algorithmus
2x1 + 3x2  minimieren, dh. -2x1-3x2  maximieren unter
x1<=8, x2 <= 5 und x >= 0
x3
x4
Zielfkt.
x1
1
0
-2
x2
0
1
-3
r.Seite
8
5
0
 die Werte der Zielfkt. <0  optimale Lösung wurde gefunden, die Lösung lautet: x1=0
und x2=0
Seite 31
5. Fkt.werte der Restriktionen an der Stelle x1=(0,0)T
g1(x1)=1 und g2(x1)=0
 Wert ist positiv und liegt nicht Nahe 0
 deshalb wurde noch keine Lösung und auch keine Näherungslösung gefunden
6. daher Berechnung von M2
mit Index j0=1
(Wert 0,0 in grad g1(x))
grad g1(x1)=(-8,-2)T
 neue Nebenbedingung:
1+ ((x1,x2)-(0,0))(-8,-2)T<=0
d.h. -8x1-2x2 <=-1
daraus ergibt sich: M2 = {x| x1<=8, x2<=5, -8x1-2x2 <=-1, x1>=0 und x2>=0}
7. Simplex lösen
2x1 + 3x2  minimieren
x1<=8, x2<=5, -8x1-2x2 <=-1 und x>=0
x1
x3
1
x4
0
x5
-8
Zielfkt.
-2
d.Hilfsf. 0,25
(dualer Schritt,
x3
x4
x1
Zielfkt.
d.Hilfsf.
x5
1/8
0
-1/8
-0,25
0,25
x2
r.Seite
0
8
1
5
-2
-1
-3
0
1,5 0
da 1 od. mehr Elemente der rechten Seite < 0)
x2
-0,25
1
0,25
-2,5
1,5
r.Seite
7,88
5
0,125
0,25
Maximum wurde berechnet  0,25
Dieses Tableau ist optimal, die Lösung lautet x1=1/8 und x2=0
8. Fkt.werte der Restriktionen an der Stelle x2= (1/8, 0)
g1(x2)=0,02
und
g2(x2)=0,02
 beide Werte sind positiv und liege nahe bei 0
 man könnte aufhören, wenn die Genauigkeit ausreicht
 im anderen Fall, muss die Menge M3 berechnet werden
Seite 32
9. Warteschlangen
9.1 Markov-Prozesse/ Markov-Ketten
Bsp. Reinigungsmittel (Anzahl der Zustände 4)
Übergangswahrscheinlichkeit:
von Zustand/zu
1
2
3
4
1
0,75
0,4
0,1
0,2
2
0,1
0,2
0,2
0,2
3
0,05
0,1
0,4
0,3
4
0,1
0,3
0,3
0,3
1. Schritt Aufstellen des Gleichungssystems:
 aus den Übergangswahrscheinlichkeiten wird ein lineares Gleichungssystem aufgebaut,
aus dem anschließend der stationäre Zustand berechnet wird
x1
x2
x3
x1
=
=
=
+
0,75 x1 + 0,4 x2 + 0,1x3 + 0,2 x4
0,1 x1 + 0,2 x2 + 0,2 x3 + 0,2 x4
0,05 x1 + 0,1 x2 + 0,4 x3 + 0,3 x4
x2 + x3 + x4 = 1
2. Schritt: Berechnung des Gleichungssystems
 für die Berechnung wird das lineare Gleichungssystem umgewandelt
 anschließend kann es mit den Verfahren zur Lösung von linearen Gleichungssystemen
berechnet werden
-0,25x1 + 0,4x2 + 0,1x3 + 0,2xx4=0
0,1x1 – 0,8x2 + 0,2x3 + 0,2x4 = 0
0,05x1 + 0,1x2 – 0,6x3 + 0,3x4 = 0
1x1 + 1x2 + 1x3 + 1x4 = 1
3. für den stationären Zustand ergibt sich nachfolgendes Ergebnis:
Zustand1
Zustand2
Zustand3
Zustand4
=
=
=
=
0,475
0,153
0,167
0,205
Seite 33
10. Übersicht welches Verfahren wofür?
Lineares Optimierungsproblem  Simplexverfahren
Transportproblem  Vogelsche. Methode, Modiverfahren
M/M/1/1 Kundenanzahl  Warteschlangen Theorie, Simulation
Fertigungsablaufsteuerung  Johnson Regel
Ganzzahlige Optimierung  Branch and Bound, Gomoryverfahren
Tourenplanung  Savingverfahren, Sweepverfahren
Seite 34
Herunterladen