Optimierung I

Werbung
Optimierung I
Sommersemester 2017
Dr. Dominique Andres
Übungsblatt 10
(Abgabe: 13. Juni 2017)
Hausaufgabe 53.
Finden Sie systematisch (!) reelle nichtnegative Zahlen x1 , x2 , x3 , x4 ≥ 0 mit
2x1 + x2 − x3 − x4 = 1
−x1 − 2x2 − x3 + 2x4 = 1
x1
+ x3 + x4 = 2.
(!) Das Raten einer Lösung oder Rechenwege mit unsystematischen Gauss-Jordan-Schritten,
bei denen Sie durch glückliches Rechnen“ zufällig auf eine Lösung kommen, sind keine ak”
zeptablen Lösungswege für diese Aufgabe.
[8 Punkte]
Hausaufgabe 54.
Betrachten Sie das Ungleichungssystem
x1
−x1 − x2
x1 + x2 + x3
x1 − x2
x3
x1
x2
≤
≤
≤
≥
≥
≥
≥
1
1
3
1
1
0
0.
(U)
(a) Bestimmen Sie eine Lösung von (U) mit Phase I des Simplexalgorithmus.
(b) Bestimmen Sie die Lösungsmenge von (U) mittels elementarer Rechnungen.
[7 + 5 = 12 Punkte]
Hausaufgabe 55.
Betrachten Sie folgende Aussagen bzgl. eines linearen Programms (LP):
(A) (LP) hat mehr als eine Optimallösung.
(B) Bei der Lösung von (LP) mit dem Simplexalgorithmus sind im letzten (=optimalen)
Tableau die reduzierten Kosten zu mindestens einer Nichtbasisvariablen gleich 0.
Zeigen Sie:
(a) (A) =⇒ (B)
(b) (B) =⇒ (A)“ ist i.a. nicht richtig.
”
Hinweis zu (b): Geben Sie ein Gegenbeispiel an.
[10 + 5 = 15 Punkte]
1
Hausaufgabe 56.
Betrachten Sie das lineare Programm
min −2x1 + x2 − x3 − x4
unter
x1
+ x3 + x4
x1 − x2 − x3 + x4
x1 + x2
− x4
x1 , x2 , x3 , x4
≤
≤
≤
≥
2
2
1
0.
(P)
(a) Geben Sie das dazu duale Programm (D) an.
(b) Lösen Sie das primale Programm (P) mit dem Simplexalgorithmus und lesen Sie eine Optimallösung x∗ von (P) und eine Optimallösung y ∗ von (D) aus dem optimalen
Tableau ab (falls (P) und (D) Optimallösungen besitzen).
(c) Verifizieren Sie, dass die optimalen Zielfunktionswerte von (P) und (D) übereinstimmen
und dass x∗ und y ∗ die Bedingungen aus dem Satz vom komplementären Schlupf erfüllen.
[2 + 10 + 3 = 15 Punkte]
In den folgenden drei Übungsserien ist jeweils zusätzlich eine Programmieraufgabe enthalten.
Die Programmieraufgaben bauen aufeinander auf. Ziel ist es letztendlich, den Zwei-PhasenSimplexalgorithmus zu programmieren. Als Vorbereitung dazu dient die folgende Aufgabe.
Zusatz-Hausaufgabe 57∗ .
(Abgabe: 20. Juni 2017)
(a) Programmieren Sie eine Funktion, der ein Tableau und ein Indexpaar (i, j) übergeben
wird, die einen Gauss-Jordan-Schritt (mit Pivotelement ai,j 6= 0) auf dem Tableau
durchführt (und eine Fehlermeldung ausgibt, wenn ai,j = 0 ist).
Benutzen Sie eine Programmiersprache Ihrer Wahl (nach Möglichkeit eine gängige).
Dokumentieren Sie Ihren Quellcode mit hilfreichen Kommentaren, insbesondere falls Sie
nicht eine gängige Programmiersprache wie z.B. C, C++, JAVA, Python oder MATLAB
benutzen. (Falls Sie MATLAB oder ein anderes Computeralgebrapaket benutzen, nutzen
Sie bitte keine vordefinierten Funktionen zu Matrizenoperationen.)
(b) Schreiben Sie eine Funktion, die ein Tableau einliest (entweder durch Bildschirmeingabe
oder aus einer Datei).
(c) Schreiben Sie eine Funktion, die ein Tableau in übersichtlicher Darstellung entweder auf
dem Bildschirm ausgibt oder in eine Datei schreibt.
(d) Schreiben Sie ein Test-Hauptprogramm, welches die Funktionen aus (b), (a) und (c)
aufruft.
!!! Bitte drucken Sie Ihren Quellcode aus und geben ihn (1.) am Abgabetermin mit Ihren
Übungen ab und senden Sie mir (2.) bis zum Abgabetermin die Quellcodedatei zusätzlich per
Email ([email protected]). Bitte senden Sie mir nur Dateien, die ohne Fehlermeldungen compilieren und lauffähig sind.
[10 + 2 + 2 + 1 = 15 Zusatzpunkte]
2
Herunterladen