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