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