Algorytm simplex i dualność

Podobne dokumenty
Programowanie liniowe

Programowanie liniowe

1 Podstawowe pojęcia. 1.1 Co to jest programowanie liniowe? Łukasz Kowalik, Wstęp do programowania liniowego 1

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Układy równań i nierówności liniowych

Programowanie liniowe metoda sympleks

Metoda simpleks. Gliwice

Rozdział 1 PROGRAMOWANIE LINIOWE

Wprowadzenie do badań operacyjnych - wykład 2 i 3

PROGRAMOWANIE KWADRATOWE

Teoretyczne podstawy programowania liniowego

Programowanie liniowe

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Programowanie liniowe metoda sympleks

Programowanie liniowe

Programowanie liniowe metoda sympleks

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

Programowanie liniowe. Tadeusz Trzaskalik

Elementy Modelowania Matematycznego

Rozdział 6 PROGRAMOWANIE WYPUKŁE I KWADRATOWE

BADANIA OPERACYJNE pytania kontrolne

TOZ -Techniki optymalizacji w zarządzaniu

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Układy równań liniowych. Ax = b (1)

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Programowanie liniowe

13 Układy równań liniowych

3. Macierze i Układy Równań Liniowych

Układy równań liniowych

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Wykład z równań różnicowych

5. Rozwiązywanie układów równań liniowych

Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE

Zaawansowane metody numeryczne

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

Formy kwadratowe. Mirosław Sobolewski. Wydział Matematyki, Informatyki i Mechaniki UW. 14. wykład z algebry liniowej Warszawa, styczeń 2017

Laboratorium Metod Optymalizacji

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Rozdział 1 PROGRAMOWANIE LINIOWE

Układy równań liniowych

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Rozwiązywanie układów równań liniowych metody przybliżone Materiały pomocnicze do ćwiczeń z metod numerycznych

Własności wyznacznika

Zaawansowane metody numeryczne

1 Przykładowe klasy zagadnień liniowych

A. Kasperski, M. Kulej Badania Operacyjne- programowanie liniowe 1

Ekonometria - ćwiczenia 10

ZAGADNIENIE TRANSPORTOWE(ZT)

Algebra liniowa z geometrią

Układy równań liniowych

Definicja problemu programowania matematycznego

Programowanie celowe #1

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Elementy modelowania matematycznego

ZAGADNIENIE TRANSPORTOWE (część 1)

Formy kwadratowe. Rozdział 10

R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} },

Definicja i własności wartości bezwzględnej.

Optymalizacja ciągła

BADANIA OPERACYJNE Zagadnienie transportowe

ZAGADNIENIE TRANSPORTOWE

2. Układy równań liniowych

Standardowe zadanie programowania liniowego. Gliwice 1

Zbiory wypukłe i stożki

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Wykłady z programowania liniowego

Dualność w programowaniu liniowym

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Wyk lad 7 Metoda eliminacji Gaussa. Wzory Cramera

3. Wykład Układy równań liniowych.

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Notatki do tematu Metody poszukiwania rozwiązań jednokryterialnych problemów decyzyjnych metody dla zagadnień liniowego programowania matematycznego

Elementy Modelowania Matematycznego

1 Macierz odwrotna metoda operacji elementarnych

(Dantzig G. B. (1963))

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

1 Układy równań liniowych

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

Wykład 5. Metoda eliminacji Gaussa

Zagadnienie Dualne Zadania Programowania Liniowego. Seminarium Szkoleniowe Edyta Mrówka

Otrzymaliśmy w ten sposób ograniczenie na wartości parametru m.

Badania operacyjne. te praktyczne pytania, na które inne metody dają odpowiedzi jeszcze gorsze.

Równania liniowe. Rozdział Przekształcenia liniowe. Niech X oraz Y będą dwiema niepustymi przestrzeniami wektorowymi nad ciałem

Metoda rozdzielania zmiennych

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Document: Exercise*02*-*manual /11/ :31---page1of8 INSTRUKCJA DO ĆWICZENIA NR 2

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Programowanie nieliniowe. Badania operacyjne Wykład 3 Metoda Lagrange a

PROGRAMOWANIE NIELINIOWE

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Rozwiązywanie układów równań liniowych

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

Wyk lad 9 Baza i wymiar przestrzeni liniowej

Transkrypt:

Algorytm simplex i dualność Łukasz Kowalik Instytut Informatyki, Uniwersytet Warszawski April 15, 2016 Łukasz Kowalik (UW) LP April 15, 2016 1 / 35

Przypomnienie 1 Wierzchołkiem wielościanu P nazywamy dowolny punkt x P, który jest jedynym rozwiązaniem optymalnym dla pewnej funkcji celu c. Punktem ekstremalnym wielościanu P nazywamy dowolny punkt x P, który nie jest wypukłą kombinacją dwóch innych punktów y, z P. (Przypomnijmy, że wypukła kombinacja y i z to dowolny punkt postaci λy + (1 λ)z dla pewnego λ [0, 1].) Bazowe rozwiązanie dopuszczalne (brd) PL o n zmiennych to rozwiązanie dopuszczalne x R n takie, że istnieje n liniowo niezależnych ograniczeń (w sensie wektorów współczynników przy x i, tzn. x 1 + 2x 2 1 i x 1 + 2x 2 2 są liniowo zależne), które dla x są spełnione z równością. Twierdzenie Pojęcia wierzchołka, punktu ekstremalnego i brd są równoważne. Łukasz Kowalik (UW) LP April 15, 2016 2 / 35

Przypomnienie 2 Program liniowy jest ograniczony, gdy posiada rozwiązanie optymalne. Twierdzenie Każdy ograniczony PL w postaci standardowej Ax b, x 0 ma rozwiązanie optymalne, które jest punktem ekstremalnym (czyli także brd). Wniosek Istnieje algorytm ( brutalny ), który rozwiązuje PL w postaci standardowej o n zmiennych i m ograniczeniach w czasie O( ( m n) n 3 ). Dowód: Dla każdego z ( m n) wyborów n ograniczeń wykonaj: Wybór generuje układ n równań z n niewiadomymi Rozwiąż ten układ za pomocą eliminacji Gaussa. Jeśli ma dokładnie jedno rozwiązanie x, mamy brd. Obliczamy dla niego wartość funkcji celu c T x i zapamiętujemy x jeśli jest lepsze niż dotychczas najlepsze rozwiązanie. Łukasz Kowalik (UW) LP April 15, 2016 3 / 35

Efektywne algorytmy programowania liniowego Algorytm Simplex (George Dantzig 1947). Złożoność pesymistyczna wykładnicza. Istnieją implementacje o złożoności oczekiwanej 2 O( n) poly(n). Bardzo dobrze zachowuje się na rzeczywistych danych. Powszechnie używany w praktyce Algorytm Elipsoidalny (Leonid Khachiyan 1979). czas O(n 4 L), gdzie L = długość zapisu binarnego danych (A, b, c) zaimplementowany ale niepraktyczny Algorytm punktu wewnętrznego (Narendra Karmarkar 1984). O(n 3.5 L) w praktyce porównywalny z simplexem, ale rzadko stosowany. Łukasz Kowalik (UW) LP April 15, 2016 4 / 35

Algorytm simplex Łukasz Kowalik (UW) LP April 15, 2016 5 / 35

Algorytm simplex: idea Podejście przeszukiwania lokalnego: wybierz dowolny wierzchołek dopóki jeden z sąsiednich wierzchołków jest lepszy (lub nie gorszy) przenieś się tam. Łukasz Kowalik (UW) LP April 15, 2016 6 / 35

Algorytm simplex: przejście do postaci dopełnieniowej max z max 3x 1 + x 2 + 2x 3 x 1 + x 2 + 3x 3 30 2x 1 + 2x 2 + 5x 3 24 4x 1 + x 2 + 2x 3 36 x 1, x 2, x 3 0. z = 3x 1 + x 2 + 2x 3 x 4 = 30 x 1 x 2 3x 3 x 5 = 24 2x 1 2x 2 5x 3 x 6 = 36 4x 1 x 2 2x 3 x 1, x 2, x 3, x 4, x 5, x 6 0. początkowe brd (0, 0, 0) (0, 0, 0, 30, 24, 36) Łukasz Kowalik (UW) LP April 15, 2016 7 / 35

Algorytm simplex: niezmiennik max z z = 3x 1 + x 2 + 2x 3 x 4 = 30 x 1 x 2 3x 3 x 5 = 24 2x 1 2x 2 5x 3 x 6 = 36 4x 1 x 2 2x 3 x 1, x 2, x 3, x 4, x 5, x 6 0. B = {4, 5, 6} N = {1, 2, 3} Niezmiennik Zmienne dzielą się na bazowe B = {B 1,..., B m } i niebazowe N = {N 1,..., N n } Program zawiera: równanie postaci z = v + n j=1 c jx Nj ; i = 1,..., m równanie postaci x Bi = b i + n j=1 a i,jx Nj, gdzie b i 0; i = 1,..., n + m nierówność x i 0, gdzie v, c j, b j, a i,j są stałymi. Łukasz Kowalik (UW) LP April 15, 2016 8 / 35

Algorytm simplex: niezmiennik max z z = 3x 1 + x 2 + 2x 3 x 4 = 30 x 1 x 2 3x 3 x 5 = 24 2x 1 2x 2 5x 3 x 6 = 36 4x 1 x 2 2x 3 x 1, x 2, x 3, x 4, x 5, x 6 0. B = {4, 5, 6} N = {1, 2, 3} Fakt Jeśli spełniony jest niezmiennik, to rozwiązanie (x 1,..., x n+m ) postaci { 0 gdy i N x i = gdy i = B j dla pewnego j = 1,..., n b j jest bazowym rozwiązaniem dopuszczalnym o wartości funkcji celu v. Tu: x = (0, 0, 0, 30, 24, 36). Łukasz Kowalik (UW) LP April 15, 2016 9 / 35

Algorytm simplex: powiększanie wartości funckji celu max z z = 3x 1 + x 2 + 2x 3 x 4 = 30 x 1 x 2 3x 3 x 5 = 24 2x 1 2x 2 5x 3 x 6 = 36 4x 1 x 2 2x 3 x 1, x 2, x 3, x 4, x 5, x 6 0. B = {4, 5, 6} N = {1, 2, 3} powiększając x 1 powiększamy z jak bardzo możemy powiększyć x 1? x 1 := min{ 30 1, 24 2, 36 4 } = 36 4 = 9. wówczas jedna ze zmiennych bazowych (tu: x 6 ) przyjmuje wartość 0. B := B {6} {1}, N := N {1} {6}. zmieniamy bazę: x 1 jest zmienną wchodzącą, x 6 wychodzącą. Łukasz Kowalik (UW) LP April 15, 2016 10 / 35

Wymiana bazy (pivot) Operacja wymiany bazy (ang. pivot) przebiega w dwóch krokach: 1 Rozwiąż równanie zawierające zmienną wychodzącą ze względu na zmienną wchodzącą. W tym przypadku otrzymujemy: x 1 = 9 1 4 x 2 1 2 x 3 1 4 x 6. 2 wstaw wynik zamiast x 1 z prawej strony wszystkich równań (czyli uaktualnij współczynniki przy zmiennych niebazowych i wyrazy wolne). W tym przypadku otrzymujemy: z = 27 + 1 4 x 2 + 1 2 x 3 3 4 x 6 x 1 = 9 1 4 x 2 1 2 x 3 1 4 x 6 x 4 = 21 3 4 x 2 5 2 x 3 + 1 4 x 6 x 5 = 6 3 2 x 2 4x 3 + 1 2 x 6. B = {1, 4, 5} N = {2, 3, 6} x = (9, 0, 0, 21, 6, 0) z = 27. Łukasz Kowalik (UW) LP April 15, 2016 11 / 35

Druga wymiana bazy z = 27 + 1 4 x 2 + 1 2 x 3 3 4 x 6 x 1 = 9 1 4 x 2 1 2 x 3 1 4 x 6 x 4 = 21 3 4 x 2 5 2 x 3 + 1 4 x 6 x 5 = 6 3 2 x 2 4x 3 + 1 2 x 6. Do bazy mogą wejść x 2 lub x 3. (współczynnik w f-cji celu musi być { dodatni!) } 9 Wybierzmy x 3. Wtedy x 3 := min 1, 21 5, 6 4 = 6 4 = 3 2. 2 2 x 5 wychodzi z bazy. z = 111 4 + 1 16 x 2 1 8 x 5 11 16 x 6 x 1 = 33 4 1 16 x 2 + 1 8 x 5 5 16 x 6 x 3 = 3 2 3 8 x 2 1 4 x 5 + 1 8 x 6 x 4 = 69 4 + 3 16 x 2 + 5 8 x 5 1 16 x 6. B = {1, 3, 4} N = {2, 5, 6} x = ( 33 4, 0, 3 2, 69 111 4, 0, 0) z = 4. Łukasz Kowalik (UW) LP April 15, 2016 12 / 35

Trzecia wymiana bazy z = 111 4 + 1 16 x 2 1 8 x 5 11 16 x 6 x 1 = 33 4 1 16 x 2 + 1 8 x 5 5 16 x 6 x 3 = 3 2 3 8 x 2 1 4 x 5 + 1 8 x 6 x 4 = 69 4 + 3 16 x 2 + 5 8 x 5 1 16 x 6. Do bazy może wejść tylko x 2. Uwaga: w ostatnim równaniu wsp. przed x 2 dodatni: x 4 nie będze wychodzący. Łukasz Kowalik (UW) LP April 15, 2016 13 / 35

Trzecia wymiana bazy z = 111 4 + 1 16 x 2 1 8 x 5 11 16 x 6 x 1 = 33 4 1 16 x 2 + 1 8 x 5 5 16 x 6 x 3 = 3 2 3 8 x 2 1 4 x 5 + 1 8 x 6 x 4 = 69 4 + 3 16 x 2 + 5 8 x 5 1 16 x 6. Do bazy może wejść tylko x 2. Uwaga: w ostatnim równaniu wsp. przed x 2 dodatni: x 4 nie będze wychodzący. Co by było gdyby...... gdyby istniała zmienna z dodatnim współczynnikiem w funkcji celu i nieujemnymi współczynnikami w pozostałych równaniach? Wówczas algorytm simplex zwraca komunikat PROGRAM NIEOGRANICZONY i kończy działanie. Łukasz Kowalik (UW) LP April 15, 2016 13 / 35

Trzecia wymiana bazy z = 111 4 + 1 16 x 2 1 8 x 5 11 16 x 6 x 1 = 33 4 1 16 x 2 + 1 8 x 5 5 16 x 6 x 3 = 3 2 3 8 x 2 1 4 x 5 + 1 8 x 6 x 4 = 69 4 + 3 16 x 2 + 5 8 x 5 1 16 x 6. Do bazy może wejść tylko x 2. Uwaga: w ostatnim równaniu wsp. przed x 2 dodatni: x 4 nie będze wychodzący. x 2 := min { 33 4 1 16, 3 2 3 8 x 3 wychodzi z bazy. } = 3 2 3 8 = 4. z = 28 1 6 x 3 1 6 x 5 2 3 x 6 x 1 = 8 + 1 6 x 3 + 1 6 x 5 1 3 x 6 x 2 = 4 8 3 x 3 2 3 x 5 + 1 3 x 6 x 4 = 18 1 2 x 3 + 1 2 x 5 + 0x 6. B = {1, 2, 4} N = {3, 5, 6} x = (8, 4, 0, 18, 0, 0) z = 28. Łukasz Kowalik (UW) LP April 15, 2016 13 / 35

Rozwiązanie optymalne z = 28 1 6 x 3 1 6 x 5 2 3 x 6 x 1 = 8 + 1 6 x 3 + 1 6 x 5 1 3 x 6 x 2 = 4 8 3 x 3 2 3 x 5 + 1 3 x 6 x 4 = 18 1 2 x 3 + 1 2 x 5 + 0x 6 B = {1, 2, 4} N = {3, 5, 6} x = (8, 4, 0, 18, 0, 0) z = 28. Nie możemy wymienić bazy (wszystkie współczynniki ujemne!) Wszystkie współczynniki ujemne mamy rozwiązanie optymalne! (bo dla dow. x 3, x 5, x 6 0 będzie z 28) Kolejne programy liniowe miały taki sam zbiór rozwiązań dopuszczalnych (bo są opisane równoważnymi układami równań) Łukasz Kowalik (UW) LP April 15, 2016 14 / 35

Rozwiązanie optymalne Wniosek Jeśli w pewnym kroku algorytmu simplex wszystkie współczynniki (przy zmiennych niebazowych) w funkcji celu są ujemne, to znalezione bazowe rozwiązanie dopuszczalne jest optymalnym rozwiązaniem oryginalnego programu. W naszym przypadku dostaliśmy rozwiązanie (x 1, x 2, x 3 ) = (8, 4, 0) o wartości funkcji celu 28. Łukasz Kowalik (UW) LP April 15, 2016 15 / 35

simplex: pseudokod 1 Sprowadź PL do postaci dopełnieniowej. 2 Znajdź równoważny PL taki, żeby spełniony był niezmiennik. 3 Dopóki istnieje j {1,..., n} takie, że c j > 0 (c j = współczynnik przed x Nj w aktualnej funkcji celu), 3.1. Wybierz takie j (x Nj jest zmienną wchodzącą). 3.2. Jeśli dla każdego i = 1,..., m, jest a i,j 0 (tzn. dla każdego równania współczynnik przed x Nj jest nieujemny) zwróć PROGRAM NIEOGRANICZONY. 3.3. wpp., wybierz i takie, że = min{ b i a i,j a i,j < 0} (x Bi jest zmienną b i a i,j wychodzącą). 3.4. wykonaj operację Pivot (j,i) 4 Zwróć rozwiązanie postaci: dla każdego i = 1,..., n, x i = { 0 gdy i N b j gdy i = B j dla pewnego j = 1,..., m. Łukasz Kowalik (UW) LP April 15, 2016 16 / 35

simplex: własność stopu 1 Jeśli podczas każdej operacji zamiany bazy wartość funkcji celu rośnie, algorytm zatrzyma się. 2 Ale nie musi tak być: z = 4 + 2x 1 x 2 4x 4 x 3 = 1 2 1 2 x 4 x 5 = 2x 1 + 4x 2 + 3x 4 x 6 = + x 1 3x 2 + 2x 4. z = 4 + 3x 2 x 4 x 5 x 1 = + 2x 2 + 3 2 x 4 1 2 x 5 x 3 = 1 2 1 2 x 4 x 6 = x 2 + 7 2 x 4 1 2 x 5. B = {3, 5, 6}, N = {1, 2, 4} B = {1, 3, 6}, N = {2, 4, 5}, x = (0, 0, 1 2, 0, 0, 0), z = 4 x = (0, 0, 1 2, 0, 0, 0), z = 4 x 1 wychodzi z bazy, x 5 wchodzi (nie ma innego wyjścia) baza się zmienia, x się nie zmienia. Łukasz Kowalik (UW) LP April 15, 2016 17 / 35

simplex: własność stopu Fakt Jeśli zmienne wchodzące/wychodzące są wybierane dowolnie algorytm simplex nie ma własności stopu. Twierdzenie (Reguła Blanda, 1977) Jeśli podczas wymiany bazy: spośród możliwych zmiennych wchodzących wybierana jest zmienna o najmniejszym indeksie oraz, spośród możliwych zmiennych wychodzących wybierana jest zmienna o najmniejszym indeksie to algorytm simplex kończy swoje działanie. (Nie będziemy tego dowodzić.) Łukasz Kowalik (UW) LP April 15, 2016 18 / 35

Złożoność algorytmu simplex Fakt Istnieją przykłady programów liniowych, dla których algorytm simplex działa w czasie Ω(2 n ). Mimo to, następujący problem pozostaje otwarty. (Ważny!) problem otwarty Czy istnieją reguły wyboru zmiennej wchodzącej i wychodzącej, dla których algorytm simplex działa w czasie wielomianowym? Najlepsze, co udało się uzyskać: Twierdzenie [Kalai 1992, Matousek, Sharir, Welzl 1996] Istnieją reguły dla których algorytm simplex działa w oczekiwanym czasie 2Õ( n). Łukasz Kowalik (UW) LP April 15, 2016 19 / 35

Czego brakuje?

Czego brakuje? Znajdowanie pierwszego brd 1 Chcemy znaleźć początkowe brd (inaczej: chcemy mieć PL równoważny oryginalnemu, który spełnia niezmiennik). 2 Jeśli program jest postaci max c T x, Ax b, x 0, oraz b 0 to łatwo: (0,..., 0, b 1,..., b m ). 3 Idea: w ogólnym przypadku... użyjemy algorytmu simplex! Łukasz Kowalik (UW) LP April 15, 2016 20 / 35

Znajdowanie pierwszego brd 1 Sprowadź program do postaci dopełnieniowej (P1). (Niezmiennik nie zachodzi, bo niekoniecznie b i 0.) 2 Dodaj nową zmienną x 0 i zbuduj nowy program. (P1) max 0 + c 1 x 1 +... + c n x n x n+1 = b 1 + a 11 x 1 +... + a 1n x n x n+2 = b 2 + a 21 x 1 +... + a 2n x n. x n+m = b m + a m1 x 1 +... + a mn x n i x i 0 (P2) min x 0 x n+1 = b 1 + a 11 x 1 +... + a 1n x n + x 0 x n+2 = b 2 + a 21 x 1 +... + a 2n x n + x 0.. x n+m = b m + a m1 x 1 +... + a mn x n + x 0 i x i 0 Fakt Program (P1) ma rozwiązanie dopuszczalne wtw gdy (P2) ma rozwiązanie optymalne o wartości funckcji celu 0. Łukasz Kowalik (UW) LP April 15, 2016 21 / 35

Znajdowanie pierwszego brd min x 0 x n+1 = b 1 + a 11 x 1 +... + a 1n x n + x 0 x n+2 = b 2 + a 21 x 1 +... + a 2n x n + x 0.. x n+m = b m + a m1 x 1 +... + a mn x n + x 0 i x i 0 3 Wybierz k takie, że b k = min i {b i }. Możemy założyć, że b k < 0. Usuń z bazy x k i wprowadź do bazy x 0 : min b k a k1 x 1... a kn x n + x n+k i k x n+i = b i b k + (a i1 a k1 )x 1 +... + (a in a kn )x n + x n+k x 0 = b k a k1 x 1... a kn x n + x n+k x i 0 Wówczas niezmiennik zachodzi! 4 Za pomocą algorytmu simplex znajdujemy rozwiązanie optymalne x. Łukasz Kowalik (UW) LP April 15, 2016 22 / 35

Znajdowanie pierwszego brd Mamy rozwiązanie optymalne (x0, x 1,..., x n) programu (P3): min b k a k1 x 1... a kn x n + x n+k i k x n+i = b i b k + (a i1 a k1 )x 1 +... + (a in a kn )x n + x n+k x 0 = b k a k1 x 1... a kn x n + x n+k x i 0 Jeśli x0 > 0 zwracamy informację PROGRAM SPRZECZNY Jeśli x0 = 0 oraz x 0 jest niebazowa, wystarczy z (P3) usunąć x 0. Otrzymujemy wtedy program równoważny oryginalnemu programowi (P1), który spełnia niezmiennik Jeśli x 0 bazowa to mamy równość: x 0 = 0 + j N a jx Nj. dla pewnego j mamy a j > 0 (inaczej we wszystkich rozwiązaniach dopuszczalnych x 0 = 0, sprzeczność, bo w pierwszym brd tak nie było). Zamienamy x 0 z x Nj. Łukasz Kowalik (UW) LP April 15, 2016 23 / 35

Dualność programowania liniowego Łukasz Kowalik (UW) LP April 15, 2016 24 / 35

Certyfikat optymalności Powiedzmy, że mamy pewne wartościowanie zmiennych x dla pewnego PL. Łatwo sprawdzić czy x jest dopuszczalny. Chcemy przekonać kolegę, że x jest optymalny. Albo bliski optymalności. Czy można to zrobić w prosty sposób? Łukasz Kowalik (UW) LP April 15, 2016 25 / 35

Poszukiwanie górnego ograniczenia Rozważmy następujący PL w postaci standardowej: max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 + 2x 2 + 3x 3 20 x 1, x 2, x 3 0 (x 1 = 2, x 2 = 0, x 3 = 4) jest rozw. dopuszczalnym o wartości f-cji celu 14. Ponieważ x 1, x 2, x 3 0, to 3x 1 4x 1 x 2 2x 2 2x 3 3x 3. Razem: 3x 1 x 2 + 2x 3 4x 1 + 2x 2 + 3x 3 20 Czyli c T x 20 dla dowolnego dopuszczalnego x. Łukasz Kowalik (UW) LP April 15, 2016 26 / 35

Poszukiwanie górnego ograniczenia: próba 2 max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 + 2x 2 + 3x 3 20 x 1, x 2, x 3 0 (x 1 = 2, x 2 = 0, x 3 = 4) jest rozw. dopuszczalnym o wartości f-cji celu 14. Ponieważ x 1, x 2, x 3 0, to 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 + 1 2 (4x 1 + 2x 2 + 3x 3 ) 4 + 1 2 20 = 14. Czyli c T x 14 dla dowolnego dopuszczalnego x. (x jest optymalny!) Łukasz Kowalik (UW) LP April 15, 2016 27 / 35

Poszukiwanie górnego ograniczenia: co się stało? Fartownie, pokazaliśmy: max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 + 2x 2 + 3x 3 20 x 1, x 2, x 3 0 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 + 1 2 (4x 1 + 2x 2 + 3x 3 ) 4 + 1 2 20 = 14. Co tu się działo? Szukaliśmy kombinacji liniowej nierówności y 1 (x 1 x 2 + 1 2 x 3 4) + y 2 (4x 1 + 2x 2 + 3x 3 20) t.ż. y 1, y 2 0, 3 y 1 1 + y 2 4, 1 y 1 ( 1) + y 2 2, 2 y 1 1 2 + y 2 3, y 1 4 + y 1 20 możliwie najmniejsze. To jest program liniowy! Łukasz Kowalik (UW) LP April 15, 2016 28 / 35

Program dualny program prymalny max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 + 2x 2 + 3x 3 20 x 1, x 2, x 3 0 Dla dowolnego programu w postaci standardowej: Obserwacja P1: P2: max c T x min Ax b x 0 program dualny min 4y 1 + 20y 2 y 1 + 4y 2 3 y 1 + 2y 2 1 1 2 y 1 + 3y 2 2 y 1, y 2 0. b T y A T y c y 0 Rozumując analogicznie, wychodząc od P2 dostaniemy P1. P1 jest dualny do P2. Łukasz Kowalik (UW) LP April 15, 2016 29 / 35

Słaba dualność Twierdzenie o słabej dualności Niech x i y będą dowolnymi rozwiązaniami dopuszczalnymi odpowiednio programów maxc T x, Ax b, x 0 oraz minb T y, A T x c, y 0. Wówczas c T x b T y. Proof. ( m ) c j x j a ij y i x j j oraz Stąd, i=1 n a ij x j y i b i y i j=1 i c T x = n c j x j n m a ij y i x j = m n a ij x j y i b i y i m b i y i = b T y. j=1 j=1 i=1 i=1 j=1 i=1 Łukasz Kowalik (UW) LP April 15, 2016 30 / 35

Komplementarne warunki swobody Wniosek z dowodu Niech x i y będą rozwiązaniami dopuszczalnymi odpowiednio dla zadania prymalnego i dualnego w postaci standardowej. Rozwiązania x i y są oba optymalne wtedy i tylko wtedy gdy (i) prymalne komplementarne warunki swobody dla każdego j = 1,..., n albo x j = 0 albo m i=1 a ijy i = c j. (albo x j = 0 albo j-ta nierówność programu dualnego jest spełniona z równością.) (ii) dualne komplementarne warunki swobody dla każdego i = 1,..., m albo y i = 0 albo n j=1 a ijx j = b i. (albo y i = 0 albo i-ta nierówność programu prymalnego jest spełniona z równością.) Łukasz Kowalik (UW) LP April 15, 2016 31 / 35

Gdy program nie jest standardowy: równości Tak jak poprzednio, chcemy znaleźć jak najlepsze górne ograniczenie. program prymalny max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 2x 2 3x 3 = 20 x 1, x 2, x 3 0 Teraz y 2 nie musi być nieujemny! program dualny min 4y 1 + 20y 2 y 1 + 4y 2 3 y 1 + 2y 2 1 1 2 y 1 + 3y 2 2 y 1 0. Łukasz Kowalik (UW) LP April 15, 2016 32 / 35

Gdy program nie jest standardowy: zmienne bez znaku Tak jak poprzednio, chcemy znaleźć jak najlepsze górne ograniczenie. program prymalny max 3x 1 x 2 + 2x 3 x 1 x 2 + 1 2 x 3 4 4x 1 + 2x 2 + 3x 3 = 20 x 1, x 3 0 program dualny min 4y 1 + 20y 2 y 1 + 4y 2 3 y 1 + 2y 2 = 1 1 2 y 1 + 3y 2 2 y 1 0. Chcemy x 2 ( y 1 + 2y 2 )x 2. Nierówność 1 y 1 + 2y 2 już nam tego nie implikuje. Zadowolimy się równością y 1 + 2y 2 = 1. Łukasz Kowalik (UW) LP April 15, 2016 33 / 35

Ogólne reguły tworzenia programów dualnych PRYMALNY DUALNY f. celu max c T x f.celu min b T y i-ty warunek n j=1 a ijx j b i i-ta zmienna y i 0 i-ty warunek n j=1 a ijx j = b i i-ta zmienna y i nieograniczone. j-ta zmienna x j 0 j-ty warunek m i=1 a ij c j j-ta zmienna x j nieograniczone j-ty warunek m i=1 a ij = c j (Słaba dualność dalej zachodzi!) Łukasz Kowalik (UW) LP April 15, 2016 34 / 35

Silna dualność Twierdzenie o słabej dualności można również wyrazić w następujący sposób: Corollary (słaba dualność) Jeśli z jest wartością funkcji celu rozwiązania optymalnego prymalnego minimalizacyjnego PL, natomiast w jest wartością funkcji celu rozwiązania optymalnego programu dualnego, to z w. Wynika stąd w szczególności, że gdy z = w, to rozwiązanie optymalne programu dualnego jest certyfikatem optymalności naszego rozwiązania programu prymalnego. Okazuje się, że tak jest zawsze! Theorem (silna dualność) Jeśli z jest wartością funkcji celu rozwiązania optymalnego prymalnego PL, natomiast w jest wartością funkcji celu rozwiązania optymalnego programu dualnego, to z = w. Łukasz Kowalik (UW) LP April 15, 2016 35 / 35