Sensitivitätsanalyse von LP
Transcription
Sensitivitätsanalyse von LP
Sensitivitätsanalyse in der Linearen Optimierung Bei der Sensitivitätsanalyse werden i. allg. Größen des Ausgangsproblems variiert, und es wird untersucht, welche Wirkung eine derartige Modifikation auf die Lösung eines Problems besitzt. Man kann diese Frage auch etwas anders stellen: • In welchem Maße kann man eine Größe ändern, ohne daß sich die Änderung auf die wesentlichen Eigenschaften der Lösung auswirkt? Da man in einem Problem i.d.R. nicht alle Daten gleichzeitig modifizieren kann, wird nur eine Größe unter Konstanthaltung aller anderen („ceteris paribus“) geändert und die Frage gestellt: • In welchem Bereich kann die betreffende Größe variiert werden, ohne daß damit die Lösung ihre Gültigkeit verliert? Unter „gültig“ werden hier die qualitativen Merkmale einer Lösung verstanden und nicht die quantitativen. Das heißt, eine Lösung unterscheidet sich qualitativ (strukturell) erst dann von einer anderen, wenn mindestens eine Pivotoperation nötig ist, um Zulässigkeit und/oder Optimalität wieder herzustellen, wenn sie durch die Änderung verloren ging. Diese in LP-Software-Systemen i.allg. als RANGE bezeichnete Prozedur wird stets unter Konstanthaltung aller übrigen Daten bezüglich eines Koeffizienten durchgeführt. Besondere Bedeutung kommt hierbei den sog. Randkoeffizienten eines LP-Modells zu, d.h. den Koeffizienten der Rechten Seite und der Zielfunktion. Da in der rein algorithmischen Behandlung jedoch alle Zeilen und Spalten gleich behandelbar sind, läßt sich die Analyse im Prinzip auf jeden anderen Koeffizienten ausweiten. Allerdings unterscheiden sich die Ränder von den übrigen Zeilen und Spalten dadurch, daß sie nie Pivotzeile bzw. Pivotspalte werden, so daß sie nicht „bewegt“ werden. Die Sensitivitätsanalyse ist dann für die Zeilen und Spalten komplizierter, die während des Lösungsprozesses von der Basis in die Nichtbasis wechseln. Wir diskutieren in der Hauptsache die Sensitivitätsanalyse der „Rechten Seite (RS)“ (Abschnitt 1) und der „Zielfunktion (ZF)“ (Abschnitt 2). Beides wird i.d.R. auch zusammen mit LP-Software angeboten. Um den Schwankungsbereich eines Koeffizienten bestimmen zu können, werden stets sowohl der Ausgangszustand als auch die Optimallösung des betreffenden Problems benötigt. Wir gehen im folgenden von den in Tab. 1a und b dargestellten Bezeichnungen aus. Max xj xs RS Max xj xr RS z dj ds z0 z dj* dr* z0* xr arj ars br xs asj* asr* bs* xi aij ais bi xi aij* air * bi* Tab. 1a: Ausgangszustand Tab. 1b: Optimalzustand Die vier in den Tableaus benutzten Variablen x i, x r, x j und x s stehen stellvertretend für ganze Mengen von Variablen mit folgenden Eigenschaften: xi ist eine logische Basisvariable, d.h. eine ursprüngliche Schlupfvariable, die auch in der Optimallösung noch Basisvariable (BV) ist. 2 Sensitivitätsanalyse in LP x r ist eine logische Basisvariable, d.h. entweder eine Schlupfvariable oder eine künstliche Variable, die im Optimalzustand Nichtbasisvariable (NBV) ist. xj ist eine Entscheidungsvariable, d.h. eine ursprüngliche Strukturvariable, Aktivitätenvariable etc., die im Optimalzustand noch NBV ist. x s ist eine Entscheidungsvariable, die im Optimalzustand als BV erscheint. Für die Randkoeffizienten (bi, br, dj, ds) werden die Schwankungsbereiche dadurch bestimmt, daß man zu der betreffenden Größe einen zunächst variablen Wert δ addiert (bzw. subtrahiert) und die Änderung auf die Optimallösung berechnet. Sodann wird gefragt, wie groß die Wirkung maximal sein darf, ohne daß sie eine Iteration notwendig macht. Auf diese Weise wird für jede der betrachteten vier Größen ein Intervall berechnet, dessen Grenzen diejenigen Werte darstellen, deren Unter- bzw. Überschreitung einen Basiswechsel erfordern. Wir werden diese Grenzwerte als Iterationsgrenzen bezeichnen. Zusammen mit diesen Werten wird i.allg. festgelegt, welche Aktivität bzw. welche Variable von der nächsten notwendigen Iteration betroffen ist, d.h. welche Variable ggfs. die Basis verläßt oder in sie aufgenommen wird. Die untere bzw. obere Iterationsgrenze wird nachfolgend durch die Hochindizes (u) bzw. (o) gekennzeichnet, während die variierte Größe unterstrichen ist. 1 Sensitivitätsanalyse der Rechten Seite Im Hinblick auf die Koeffizienten der Rechten Seite wird gefragt, in welchen Bereichen bi bzw. br schwanken können, bevor eine Iteration ausgelöst wird. Dabei ist zu unterscheiden, ob die ursprüngliche Basisvariable in der Optimallösung noch immer Basisvariable (x i) ist oder nicht (x r). Fall 1.1: Sensitivitätsanalyse der Koeffizienten bi Eine ursprüngliche Basisvariable x i ist noch in der Basis und hat den Wert x i = bi*. Die Variable x i kann als Schlupfvariable angesehen werden und der Wert bi* als „Restkapazität“. Der Faktor i ist also nicht knapp, sondern kann im Gegenteil um bi* konsequenzlos im Angebot verringert werden: δ u = bi* Verringert man bi noch mehr, wird x i die Basis verlassen. Bei einer Vergrößerung von bi wird die Restkapazität bi entsprechend größer. Das heißt, die Obergrenze ist unendlich. Der gesamte Schwankungsbereich beträgt also: δ u = bi*: x i verläßt die Basis ⇐ bi − δ u ≤ b% i < ∞ (keine Änderung) 3 Sensitivitätsanalyse in LP Fall 1.2: Sensitivitätsanalyse der Koeffizienten br Als NBV ist x r gleich null, d.h. der entsprechende Faktor r ist knapp. Würde man x r = δ erzwingen, so würde sich dies laut Tab. 1b auf die Rechte Seite wie folgt auswirken: xr = δ RS(δ) dr * asr * a * ir → z0 * −δ ⋅ d r * bs * −δ ⋅ asr * b * −δ ⋅ a * i ir Mit δ > 0 würde Restkapazität geschaffen, d.h. das ursprüngliche Angebot verringert (→ Untergrenze u). Für δ < 0 würde (fiktive) Restkapazität beseitigt, d.h. das Angebot im Ausgangszustand vergrößert (→ Obergrenze o). Somit stellt sich die Frage, wann in beiden Fällen der erste Koeffizient der Rechten Seite gleich null wird: (u) δ > 0: bi * bp * air * > 0 = >0 min i air * a pr * u δ = ∞ ,falls air * ≤ 0 ∀i Es wird angenommen, daß sich das Minimum in der Spalte mit x p als BV ergäbe. (o) δ < 0: bi * bq * air * < 0 = <0 max i a * a * ir qr δo = −∞ ,falls air * ≥ 0 ∀i Es wird angenommen, daß sich das Maximum in der Spalte mit x q als BV ergäbe. Zusammengefaßt ergibt sich das Intervall: x p verläßt die Basis ⇐ br − δ u ≤ b% r ≤ br − δ o ⇒ Die Rechenregeln sind nachstehend algorithmisch zusammengefaßt: x q verläßt die Basis 4 Sensitivitätsanalyse in LP Sensitivitätsanalyse der Rechten Seite b Input: Simplex-Tableau eines Maximierungsproblems der optimalen Lösung zur Basis B Output: Schwankungsbereiche für alle Koeffizienten des Vektors b Markierung: Größen des Optimaltableaus sind mit Stern (*), die variierten Größen durch Unterstrich gekennzeichnet. Methode: Die Sensitivitätsanalyse untersucht Wertänderungen der logischen Variablen, d.h. der ursprünglichen Basisvariablen (Schlupfvariablen und künstliche Variablen). Schritt 1: Logische Variablen in der Basis: x i mit i∈B x i ← bi - δ u ≤ b% i < ∞ Schritt 2: Logische Variablen als NBV: x r mit r∈N 2.1 Berechne bi * bp * air * > 0 = min i air * u a pr * δ = ∞ , falls air * ≤ 0 ∀ i Der minimale (positive) Quotient ergebe sich in der Zeile p. bi * bq * air* < 0 = max i air * o a qr * δ = −∞ , falls air * ≥ 0 ∀ i Der maximale (negative) Quotient ergebe sich in der Zeile q. 2.2 Als Schwankungsbereich ergibt sich: x p ⇐ br − δ u ≤ b% r ≤ br − δ o ⇒ x q Algorithmus 1: Sensitivitätsanalyse der Rechten Seite 5 Sensitivitätsanalyse in LP Beispiel: Im folgenden sind für ein Problem das Ausgangs- und das Optimaltableau gegeben: Max x1 x2 x3 RS z 400 −780 −1.250 0 xR 32 42 20 1.300 xT −10 15 25 1.000 xM 8 8 5 300 Tab. 2: Ausgangstableau Max xM x2 xT RS z 10 20 48 51.000 xR −4 10 0 100 x3 1 4 250 44 x1 1 10 − 150 10 Tab. 3a: 25 5 1 2 8 Var r bi* air* Optimaltableau Tab. 3b: xM xT −25 (o) ∞ 1.100 1.375 (u) 100 (u) −500 (o) Quotiententableau Das Ergebnis der Sensitivitätsanalyse ist für alle Koeffizienten der RS in der nachstehenden Tab. 4 zusammengefaßt: xp bi − δ u Var. i RS bi bi −δ o xq Fall xR 1.200 xR 1.300 ∞ − (1,1) x3 −375 xT 1.000 1.500 x1 (1,2) x1 200 xM 300 325 xR (1,2) Tab. 4: Zusammenfassung der Ergebnisse der Sensitivitätsanalyse der Rechten Seite Die Sensitivitätsanalyse der Koeffizienten bi läßt sich geometrisch eindrucksvoll erklären. Variiert man den absoluten Wert (= Rechte Seite bi) einer Nebenbedingung, so verschiebt man diese parallel. Qualitativ ändert sich nichts an der Lösung, so lange von der Verschiebung kein Eckpunkt betroffen ist, der nicht auf der Nebenbedingung liegt. Das bedeutet z.B. in Abb. 1, daß die Nebenbedingung (i) in dem Korridor zwischen der Lage (u → unterer Iterationswert) und (o → oberer Iterationswert) bewegt werden kann, ohne die Eckpunkte 1 und 2 zu tangieren. Da die Eckpunkte 3, 4 und 5 auf der Nebenbedingung (i) liegen, verschieben sich diese mit. 6 Sensitivitätsanalyse in LP x2 8 7 1 6 3 5 4 3 4 P 2 (o) 1 2 1 2 3 4 5 6 7 8 9 10 11 12 5 13 14 15 (u) 16 x1 17 (i) {or1ab401.pre} Abb. 1: Sensitivitätsanalyse von Rechter Seite bi An der unteren Iterationsgrenze wird der Eckpunkt 2 erreicht. Unterschreitet man ihn, so muß die zur Ordinate gehörende Schlupfvariable aus der Basis eliminiert werden. An der oberen Iterationsgrenze wird der Eckpunkt 1 erreicht. Bei einer darüber hinausgehenden Vergrößerung von bi stellt die Nebenbedingung (i) keine Beschränkung mehr dar. Ihre Schlupfvariable x i wird daher größer null werden und damit Basisvariable. 7 2 Sensitivitätsanalyse in LP Sensitivitätsanalyse der Zielfunktion Wie zuvor sollen nun die Bewertungsgrößen der Zielfunktion bezüglich ihrer Wirkung auf die Optimallösung analysiert werden. Dabei kommt es - wie im übrigen fast immer, wenn mit der Zielfunktion argumentiert wird - zu einem Sprachproblem, das mit dem (umgekehrten) Vorzeichen der Zielfunktionskoeffizienten im Tableau zusammenhängt. Dadurch wird ein positiver Bewertungskoeffizient im Tableau negativ und eine obere Schranke desselben ergäbe sich im Tableau als untere Schranke. In diesem Sinne ist genau die Sensitivitätsanalyse betroffen, bei der ja derartige Schranken gesucht sind. Wir unterscheiden daher im weiteren zwischen dem Zielzeilenkoeffizient (ZZK) dj, der im Tableau erscheint, und dem Zielfunktionskoeffizient (ZFK) cj, der im Sinne des Zielkriteriums interpretiert wird. Bei der Sensitivitätsanalyse der Zielzeilenkoeffizienten fragen wir: • In welchem Bereich darf δ in dem Ausdruck d% j = dj + δ schwanken, ohne die Lösung strukturell zu beeinflussen? Gesucht sind also die oberen und unteren Schranken für den Änderungsbetrag δ, bei deren Über- bzw. Unterschreitung eine Iteration ausgelöst wird. Auch in diesem Abschnitt muß man zwei Fälle unterscheiden, je nachdem, ob die betreffende Strukturvariable x j im Optimalzustand Nichtbasisvariable (NBV → und damit x j = 0) ist oder Basisvariable (BV → und damit i.allg. x j > 0) ist. Zusätzlich kann man die Sensitivitätsanalyse auf ursprüngliche Schlupfvariablen ausdehnen, die im Optimalzustand größer null sind. Dies läßt eine interessante Interpretation zu. Fall 2.1: Sensitivitätsanalyse der Zielfunktionskoeffizienten dj Die Aktivität j wird im Optimalzustand nicht genutzt, weil der ZZK dj um den Betrag dj* > 0, d.h. den reduzierten Kosten, zu groß ist. Verringert man den ZZK um dj*, d.h. auf dj − dj*, so wird im Optimalzustand in der Spalte j der ZZK gleich null werden, d.h. eine mehrdeutige Lösung anzeigen. Eine Änderung darüber hinaus ergibt einen negativen Zielzeilenkoeffizient, der eine Iteration auslöst. Bei jeder Vergrößerung von dj würde der Zielzeilenkoeffizient dj* nur umso größer werden, so daß hieraus kein Einfluß auf die Lösungsstruktur resultiert. Zusammengefasst: δ u = dj*: x j geht in die Basis ⇐ dj − δ u = dj − dj* ≤ d% j < ∞ (keine Änderung!) Fall 2.2: Sensitivitätsanalyse der Zielfunktionskoeffizienten ds Das Auftreten der Strukturvariablen x s in der Basis bedeutet, daß die Aktivität s auf entsprechendem Niveau x s = bs* > 0 genutzt wird. Eine Änderung des Zielzeilenkoeffizienten ds um δ auf d%s = ds + δ bedeutet für δ > 0 eine Vergrößerung des ZZK (= eine Verkleinerung des ZFK!) und für δ < 0 eine Verkleinerung des ZZK (= eine Vergrößerung des ZFK!). 8 Sensitivitätsanalyse in LP Max xj xr RS z dj* + δ⋅asj* dr* + δ⋅asr* z0 + δ⋅br* xs asj* asr* br* Tab. 5: Änderung der Zielfunktion • Welchen Wert kann δ annehmen, bis der erste modifizierte ZZK in Tab. 5 gleich Null sein wird? Für δ < 0 wird der ZZK kleiner, d.h. man berechnet die Untergrenze δ u der Änderung; dann kann nur für positive Koeffizienten asj* > 0 einer der ZZK gleich Null werden: d j * +δ ⋅ asj * = 0 → δ = dj* asj * >0 für asj * > 0 Der kleinste derartige Quotient zeigt an, um welchen Betrag der zugehörige ZZK maximal verkleinert werden kann, bevor eine Iteration notwendig wird. (u) δ > 0: d * c * min j asj * > 0 = v > 0 j asj * asv * du = ∞ , falls asj * ≤ 0 ∀j Es wird angenommen, daß sich das Minimum in der Spalte mit x v als NBV ergibt. Für δ > 0 wird der ZZK größer, d.h. man berechnet die Obergrenze δ o der Änderung; dann kann nur für negative Koeffizienten asj* < 0 einer der ZZK gleich Null werden: (o) δ < 0: d * d * max j asj * < 0 = w < 0 j asj * asw * do = −∞ , falls asj * ≥ 0 ∀j Es wird angenommen, daß sich das Maximum in der Spalte mit x w als NBV ergibt. Für die Zielzeilenkoeffizienten ds ergibt sich damit folgender Schwankungsbereich: x v geht in die Basis ⇐ ds + δ u ≤ d%s ≤ ds + δ o ⇒ x w geht in die Basis Im Fall 2.2 kann man noch eine sehr informative Sonderbetrachtung anschließen. Eine logische Basisvariable ist entweder eine künstliche Variable oder eine Schlupfvariable. Als künstliche Variable darf sie im Optimalzustand nicht BV sein. Eine Schlupfvariable kann jedoch sowohl NBV (eines knappen Faktors → Fall 1.2) als auch BV sein. Letzteres bedeutet, daß von dem betreffenden Faktor ein Restschlupf existiert. 9 Sensitivitätsanalyse in LP Eine Schlupfvariable x i unterscheidet sich von einer Strukturvariable hauptsächlich dadurch, daß der Zielfunktionskoeffizient anfangs gleich Null ist. In den folgenden beiden Fällen könnte man sich vorstellen, daß der Schlupf in einem Maximierungsproblem anders als mit null bewertet ist: q Einen positiven ZFK (ci > 0) könnte man als Erlös interpretieren mit der Idee, den Rest in jedem Fall zu dem Preis ci > 0 absetzen zu können. q Einen negativen ZFK (ci < 0) könnte man als Kosten ansehen, die proportional zur Restmenge entstehen, wie z.B. Lagerkosten. Für eine Schlupfvariable in der optimalen Basis kann man nun durch die Sensitivitätsanalyse ermitteln, in welchem Bereich (zwischen minimalen Kosten und maximalem Erlös) die Bewertung des Restfaktors schwanken kann, ohne die Lösungsstruktur zu ändern. Dazu wendet man auf Zeilen i mit x i > 0 die Abweichungsanalyse wie für Strukturvariablen in der Basis an. Die untere (δ u) bzw. obere Iterationsgrenze ( δ o) bestimmen dann den Schwankungsbereich: x v geht in die Basis ⇐ δ u ≤ d%i ≤ δ o ⇒ x w geht in die Basis Die Rechenregeln sind nachstehend algorithmisch zusammengefaßt: 10 Sensitivitätsanalyse in LP Sens itivitätsanalyse der Zielfunktion dT Input: Simplex-Tableau eines Maximierungsproblems der optimalen Lösung zur Basis B Output: Schwankungsbereiche für alle Koeffizienten des Vektors dT Markierung: Größen des Optimaltableaus sind mit Stern (*), die variierten Größen durch Unterstrich gekennzeichnet. Methode: Die Sensitivitätsanalyse untersucht Wertänderungen der Strukturvariablen, d.h. der ursprünglichen Nichtbasisvariablen (Entscheidungsvariablen) und der Schlupfvariablen, die in der Basis bleiben. Schritt 1: Strukturvariable als NBV: x j mit j∈N δ u = dj*: x j geht in die Basis ⇐ dj − δ u = dj − dj* ≤ d% j < ∞ Schritt 2: Strukturvariable in der Basis: x s mit s∈B 2.1 Berechne d * c * min j asj * > 0 = v > 0 j asj * asv * du = ∞ , falls asj * ≤ 0 ∀j Der minimale positive Quotient ergebe sich in der Spalte v. d * d * max j asj * < 0 = w < 0 j asj * asw * do = −∞ , falls asj * ≥ 0 ∀j Der minimale negative Quotient ergebe sich in der Spalte w. 2.2 Als Schwankungsbereich ergibt sich: xv ⇐ Schritt 3: Logische Variable in der Basis: x i mit i∈B 3.1 Berechne nach den Regeln 2.1 δ u und δ o für Zeile i: 3.2 Als Schwankungsbereich für die Bewertung des „Schlupfs“ ergibt sich: xv ⇐ Algorithmus 2: Sensitivitätsanalyse der Zielfunktion 11 Sensitivitätsanalyse in LP Beispiel: Das Beispiel des vorausgegangenen Abschnitts soll auch hier zur Illustration dienen. Max xM x2 xT RS z 10 20 48 51.000 xR −4 10 0 100 x3 1 250 44 x1 1 10 − 150 10 Tab. 6: 25 4 1 5 2 8 Optimaltableau cj * Var j aij * xR −2,5 (o) x3 x1 Tab. 7: 2 (u) ∞ 250 25 (u) 1.500 100 40 (u) −2.400 (o) Quotiententableau Die Sensitivitätsanalyse der Zielfunktionskoeffizienten (ZFK) ergibt also: xv dj + δ u Var j dj dj + δ o xw x2 −440 x1 −400 2.000 xT − −∞ x2 780 800 x2 x2 1.225 x3 1.250 ∞ − x2 −2 xR 0 Tab. 8: 2,5 xM Zusammenfassung der Ergebnisse der Sensitivitätsanalyse der Zielfunktion Auch zur Zielfunktionsanalyse gibt es eine sehr anschauliche geometrische Deutung. Modifikation eines Zielfunktionskoeffizienten −cj heißt in jedem Fall, die Neigung der Zielhyperebene in entsprechender Koordinatenrichtung zu ändern; man also dreht die Zielebene um den optimalen Punkt. An der zweidimensionalen Abb. 2 kann man die Wirkung einer Drehung besonders deutlich erkennen. Die Zielfunktion kann um den optimalen Punkt 4 gedreht werden, bis sie parallel zu einer den Optimalpunkt bestimmenden Nebenbedingungen verläuft. Dann hat man den Fall mehrdeutiger Lösungen erreicht. Kippt man die Zielfunktion weiter, d.h. über die Punkte 2 bzw. 3 hinaus, so ändert sich der Optimalpunkt in einen dieser Eckpunkte, was eine Iteration auslösen würde. 12 Sensitivitätsanalyse in LP x2 8 7 1 6 3 5 4 P 3 2 4 1 2 1 2 3 4 5 6 7 8 9 10 11 12 5 13 14 15 16 {or1ab402.pre} Abb. 2: Sensitivitätsanalyse der Zielfunktion 17 x1