• Keine Ergebnisse gefunden

Perlen der Informatik II Sommersemester 2010

N/A
N/A
Protected

Academic year: 2022

Aktie "Perlen der Informatik II Sommersemester 2010"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universit¨at M¨unchen SS 2010 Institut f¨ur Informatik

Prof. Dr. H.-J. Bungartz Prof. Dr. T. Huckle Kristof Unterweger

Perlen der Informatik II

Sommersemester 2010 L¨ osung 5

Lineare Programmierung und der Simplex-Algorithmus

In der Linearen Programmierung bzw. Linearen Optimierung spielt der Simplex-Algorithmus eine entscheidende und interessante Rolle. In diesem Aufgabenblatt werden wir uns mit linearen Programmen im Allgemeinen und dem Simplex-Algorithmus zur L¨osung sel- biger im Speziellen besch¨aftigen.

Aufgabe 1: Lineare Programmierung

1.1 Standard- und Schlupfform

Gegeben sei folgendes lineares Programm:

minimiere −2x1+x2 −2x3 unter den Nebenbedingungen x1+x3 = 4

2x1−x2 ≥0 x ≥0

(2)

• Uberf¨¨ uhre dieses Programm in die Standard- und in die Schlupfform.

• Angenommen man hat ein lineares Programm mit n Variablen und m Nebenbe- dingungen. Wie viele Variablen und Nebenbedingungen k¨onnen maximal in der Standardform auftreten? Wie viele in der Schlupfform?

L¨osung:

Standardform:

maximiere 2x1−x2+ 2x3

x1+x03−x003−4≥0

−x1−x03+x003+ 4 ≥0 2x1−x2 ≥0

x1, x2, x03, x003 ≥0 Schlupfform:

maximiere 2x1−x2+ 2x3 x1+x03−x003−4 = s1

−x1−x03+x003+ 4 =s2

2x1−x2 =s3

x1, x2, x03, x003, s1, s2, s3 ≥0

Standardform: Wenn f¨ur allem Variablen keine Nichtnegativit¨atsbedingungen angegeben sind, dann werden bei der ¨Uberf¨uhrung in die Standardform m weitere Variablen und 2m weitere Nebenbedingungen (Nichtnegativit¨atsbed.) eingef¨uhrt.

Eine Gleichungsnebenbedingungen wird in zwei Ungleichungsnebenbed. umgewandelt.

Sollten alle n Nebenbed. Gleichungsnebenbed. sein, f¨uhrt das zu n weiteren Nebenbedin- gungen.

Insgesamt kann es also zu2mVariablen und 2n+ 2mNebenbedingungen kommen, wobei von letzteren 2m Nichtnegativit¨atsbed. sind.

(3)

Schlupfform: F¨ur jede Nebenbedingung in der Standardform, die keine Nichtnegativit¨atsbed.

ist, wird eine weitere Variable und daf¨ur eine weitere Nichtnegativit¨atsbedingung an- gelegt. Insgesamt kann es also zu 2n+ 2m Variablen sowie 4n+ 2m Nebenbedingungen kommen, davon 2n+ 2m Nichtnegativit¨atsbed.

1.2 L¨ osbarkeit

Wir haben gesehen, dass Probleme in der Linearen Programmierung durch Ungle- ichungen eingeschr¨ankt werden. In vielen F¨allen bildet sich dadurch ein endlicher L¨osungsraum, der durch die Ungleichungen beschr¨ankt wird. Tats¨achlich kann es allerd- ings auch zu F¨allen kommen, in denen die Ungleichungen keinen endlichen L¨osungsraum erzeugen.

• Zeige dass folgende Nebenbedingungen zu einem nicht-l¨osbaren linearen Programm f¨uhren:

x1+x2 ≤2

−2x1−2x2 ≤ −10 x1, x2 ≥0

L¨osung: Stellen wir die ersten beiden Nebenbedingungen nach x1 um, erhalten wir

x1 ≤2−x2 x1 ≥5−x2

damit k¨onnen wir die Reihenfolge 5−x2 ≤x1 ≤2−x2

aufstellen, was zu 5−x2 ≤2−x2

f¨uhrt. Addieren wir x2, erhalten wir den Wiederspruch 5≤2.

• Zeige, dass folgende Nebenbedingungen zu einem unbeschr¨ankten linearen Pro-

(4)

−2x1+x2 ≤ −1 x1−2x2 ≤ −2 x1, x2 ≥0

• Finde eine Zielfunktion, so dass es trotz unbeschr¨anktem L¨osungsraum eine endliche L¨osung f¨ur das lineare Programm gibt.

L¨osung: Diesmal stellen wir die Ungleichungen nach x2 um:

x2 ≤2x1−1 x2x21 + 1

Wenn wir die beiden Ungleichungen zusammenfassen ergibt sich:

x1

2 + 1≤x2 ≤2x1−1 und damit

x1

2 + 1≤2x1−1 x1 ≤4x1−4 x143

Damit sind die Nebenbedingungen f¨ur allex143 und einx2 aus dem sich dann ergeben- den Bereich x21 + 1≤x2 ≤2x1−1 erf¨ullt.

Nachdem die Ungleichungen schon nach x2 aufgel¨ost wurden, kann man sie einfach als Geraden zeichnen:

(5)

Hier zeigen die roten Linien die Ungleichungen, w¨ahrend der blaue Bereich den g¨ultigen L¨osungsraum f¨ur das lineare Programm darstellt. Beispielsweise vervollst¨andigt die Ziel- funktion maximiere−x1, bei der die Isogewinngeraden parallel zurx2-Achse liegen, das lineare Programm, womit dies sein Optimum im Schnittpunkt der beiden Geraden, bei (43,53) hat.

1.3 K¨ urzeste-Pfad-Suche

Zur Berechnung von k¨urzesten Pfaden in Graphen gibt es eine Vielzahl von Algorithmen.

Interessanterweise l¨asst sich dieses Problem auch als lineares Programm ausdr¨ucken.

Hierzu betrachten wir den Bellman-Ford-Algorithmus:

1 Bellman−Ford (G, w, s ) 2 i n i t i a l i s i e r e ( s )

3 f o r i =1 b i s |V[G ]| − 1 :

4 f u e r a l l e Kanten ( u , v ) aus E [G ] : 5 r e l a x i e r e ( u , v , w)

6 f u e r a l l e Kanten ( u , v ) aus E [G ] : 7 f a l l s d [ v ] > d [ u ] + w( u , v ) : 8 r e t u r n f a l s e

9 r e t u r n t r u e

In diesem St¨uck Pseudocode bezeichnetwdie Gewichtungsfunktion, die den Kanten des Graphen ein Gewicht zuweist. G ist der Graph selber, wobei V[G] die Knoten und E[G]

die Kanten von G liefert. s ist der Startknoten, von dem aus gesucht werden soll. d[v]

wiederum beschreibt die Pfadl¨ange vom Startknoten bis zum Knoten v.

Betrachten wir folgenden gerichteten Graphen:

0

1

2

(6)

In diesem Graphen sind alle Kanten mit 1 gewichtet und es soll der k¨urzeste Weg zwischen Knoten 0 und 2 gefunden werden. Fangen wir mit den Nebenbedingungen an.

Zeile 7 des Bellman-Ford-Algorithmus bietet daf¨ur einen guten Ansatz. Existieren keine negativen Kreise im Graphen, muss f¨ur jede Kante (u, v) gelten, dass die Differenz der Pfadl¨angen bis u bzw. v sich h¨ochstens um das Gewicht der Kante (u, v) unterscheiden darf. Andernfalls g¨abe es ja einen k¨urzeren Pfad zu einem der beiden Knoten.

Wenn wir f¨ur jede Kante vonGeine Ungleichungsnebenbedingung aus Zeile 7 herleiten, welche Variablen ben¨otigen wir dann? Welche zus¨atzliche (Un-)Gleichungsnebenbedingung(en) ben¨otigen wir?

L¨ose das resultierende Lineare Programm f¨ur den oben gezeigten Graphen graphisch.

Wie muss die Zielfunktion definiert werden, damit das richtige Ergebnis erzielt wird?

L¨osung: Die Ungleichung d[v] ≤ d[u] +w(u, v) f¨ur jede Kante l¨asst sich als Ungle- ichungsnebenbedingung verwenden, wenn f¨ur jeden Knoten v aus G die Variable d[v]

eingef¨uhrt wird. Damit ergibt sich der Ansatz f¨ur ein lineares Programm:

d[v]≤d[u] +w(u, v) f¨ur jede Kante (u, v) aus G d[v]≥0 f¨ur jeden Knoten v aus G

Damit ist der Verlauf der Pfadkosten im Graph definiert. Um den Anfangspunkt f¨ur diesen Verlauf festzulegen, setzen wir die Kosten f¨ur den Startknoten s ein und verwen- den diesen als weitere Nebenbedingung: d[s] = 0

Prinzipiell ist d[t], wenn t der Zielknoten ist, am Anfang von Bellman-Ford unendlich.

Am Ende entspricht er genau der L¨ange des k¨urzesten Pfades. F¨ur unser Problem heißt das, dass wir im Unendlichen f¨ur d[2] beginnen und uns nach und nach dem Ursprung n¨ahern. Das entspr¨ache einer Parallelen zur d[1]-Achse, die nach und nach Richtung d[1]-Achse gezogen wird. Das gesuchte Ergebnis ist der erste zul¨assige Punkt des linearen Programms, den wir treffen.

Die Zielfunktion basiert also nur auf d[2]und muss interessanter Weise maximiert wer- den, um den h¨ochsten zul¨assigen Punkt im L¨osungsbereich zu finden.

Das entg¨ultige Programm sind demnach folgendermaßen aus:

maximiere d[s]

d[v]≤d[u] +w(u, v) f¨ur jede Kante (u, v) aus G d[v]≥0 f¨ur jeden Knoten v aus G

d[s] = 0

(7)

Der L¨osungsbereich des Programms sieht folgendermaßen aus:

Aufgabe 2: Simplex-Algorithmus

Zum Berechnen von optimalen L¨osungen kann, wie gesagt, der Simplexalgorithmus ver- wendet werden. Dieser l¨auft entlang von Kanten des Simplex, der durch die Nebenbe- dingungen bestimmt wird und sucht in den Ecken nach der optimalen L¨osung f¨ur das Optimierungsproblem.

2.1 Komplexit¨ at

Der Simplexalgorithmus ist ein interessanter Fall, da er unser normales Verst¨andnis von Algorithmenkomplexit¨at etwas zuwider l¨auft. Da der Simplex jede Ecke nur ein Mal besuchen kann – ansonsten w¨urde er, da er deterministisch ist, immer wieder durch diese Ecke laufen, man sagt der Algorithmus ”kreiselt” – kann man die Laufzeit nach oben hin durch die Anzahl an Ecken des Simplex absch¨atzen.

• Uberlege, wie in der Schlupfform eine Ecke dargestellt wird.¨

• Nimm an, dass ein Lineares Programm vorliegt, dass in Standardform n Vari-

(8)

gleichungen hat. Bestimme daf¨ur die obere Schranke f¨ur die Anzahl an Ecken.

(Hinweis: Benutze Stirlings Formel n!∈ O(nn)).

L¨osung: Eine Ecke des Simplex wird durch eine Reihe von Hyperebenen definiert. Be- trachten wir den Eckpunkt in Schlupfform, stellen wir fest, dass einige Schlupfvariablen (die, die zu den Hyperebenen geh¨oren, die die Ecke bilden) null sein m¨ussen.

Wir k¨onnen folglich eine Teilmenge der Schlupfvariablen ausw¨ahlen, um eine Ecke zu bilden. Nehmen wir an bei n Ungleichungen und damit n Schlupfvariablen bilden genau

n

2 Schlupfvariablen eine Ecke. Dann ergibt sich eine Gesamtzahl von n

n 2

!

Ecken. Dies wiederum l¨asst sich ¨uber Stirlings Formel absch¨atzen zu n

n 2

!

= n!

n

2!n2! ≈ nn

(n2)n2(n2)n2 = nn

(n2)n = nn

nn 2n

= 2n

2.2 Kreiseln

Wie oben beschrieben, kann es beim Simplexalgorithmus vorkommen, dass er immer wieder die selbe Eckenfolge durchl¨auft, ohne zu terminieren. Da dies nat¨urlich nicht w¨unschenswert ist, wurden verschiedene Vorgehensweisen entwickelt, um dieses Verhal- ten zu verhindern.

• Wie k¨onnte mit der oben berechneten Schranke f¨ur die Anzahl an Ecken festgestellt werden, ob der Algorithmus kreiselt?

• Falls festgestellt wurde, dass sich der Algorithmus in einem Zustand befindet, in dem er immer wieder die selbe Eckenfolge durchl¨auft, was k¨onnte man tun, um daraus eine vern¨unftige L¨osung zu bestimmen? ¨Uberlege, was auf die Zielfunk- tionswerte der durchlaufenen Ecken zutreffen muss, damit der Algorithmus entlang dieser Ecken kreiselt?

• Der Simplexalgorithmus hat ¨Ahnlichkeiten mit dem Gaußschen Eliminationsver- fahren. Kann man daraus auf ein weiteres Verfahren schließen, das das Kreiseln unterbindet?

(9)

L¨osung: Sobald der Algorithmus mehr Ecken durchl¨auft als die obige Schranke angibt, muss er zwangsl¨aufig kreiseln. In diesem Fall kann es sein, dass der Algorithmus in jeder Ecke keine andere M¨oglichkeit hat, als in diesem Zyklus weiterzulaufen. Dann sind allerdings alle L¨osungen in diesem Zyklus optimale L¨osungen f¨ur das lineare Programm.

Gibt es hingegen eine Ecke in der es dem Algorithmus m¨oglich ist anders weiterzu- laufen, dann muss man ihn zwingen diesen Weg zu w¨ahlen. Das kann man beispiel- sweise machen, in dem man bereits durchlaufene Kanten markiert und im Zweifel nicht- markierte Kanten verfolgt.

Aus dem Gaußschen Eliminationsverfahren ergibt sich ein ¨ahnliches Vorgehen. Hier wird versucht sukkzessive Variablen zu eliminieren. D.h. eine Variable, die bereits eli- miniert wurde, wird nicht wieder angetastet. Meistens geschieht dies, indem man die Variablen durchnummeriert und sie mit steigendem Index betrachtet. Die Variablen in unseren linearen Programmen sind auch bereits durchnummeriert. L¨osen wir das System auch immer nach einer Variable auf, die vorher noch nicht betrachtet wurde, kann das Ph¨anomen ”kreiseln” von vornherein ausgeschlossen werden, da der Algorithmus eine bereits besuchte Ecke nicht wieder besuchen kann.

Referenzen

ÄHNLICHE DOKUMENTE