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

Documents pareils