Programowanie liniowe całkowitoliczbowe Jeżeli w zadaniu programowania liniowego pewne (lub wszystkie) zmienne musza przyjmować wartości całkowite, to takie zadanie nazywamy zadaniem programowania liniowego całkowitoliczbowego. Jeżeli wszystkie zmienne musza przyjmować wartości 0 lub 1, to zadanie nazywamy zadaniem programowania liniowego 0-1. Zatem, w każdym takim zadaniu występuja ograniczenia postaci 0 x i 1 i x i całkowite dla każdej zmiennej x i, co krótko oznaczamy jako x i {0, 1}.
Problem rozkroju Tartak posiada standardowe deski o szerokości 10 cali. Otrzymał zamówienie na 90 desek o szerokości 2 cale, 175 desek o szerokości 3 cale i 120 desek o szerokości 4 cale. Tartak chce wyznaczyć taki plan realizacji zamówienia, który zminimalizuje łaczny odpad wyrażony w calach. Możliwe sposoby cięcia deski 10 calowej podane sa w poniższej tabeli: Sposób deski 4-calowe deski 3-calowe deski 2-calowe Odpad 1 2 0 1 0 2 1 2 0 0 3 1 1 1 1 4 1 0 3 0 5 0 3 0 1 6 0 2 2 0 7 0 1 3 1 8 0 0 5 0
Problem rozkroju 1 Zmienne decyzyjne: x i - liczba standardowych desek ciętych i-tym sposobem y 1, y 2, y 3 - liczba desesk 4, 3 i 2-calowych wyprodukowanych ponad zamówienie 2 Funkcja celu: 3 Ograniczenia: min z = Całkowity odpad= x 3 + x 5 + x 7 + 4y 1 + 3y 2 + 2y 3 2x 1 + x 2 + x 3 + x 4 y 1 = 120 2x 2 + x 3 + 3x 5 + 2x 6 + x 7 y 2 = 175 x 1 + x 3 + 3x 4 + 2x 6 + 3x 7 + 5x 8 y 3 = 90 x 1,..., x 8, y 1, y 2, y 3 0 i całkowite. [deski 4-calowe] [deski 3-calowe] [deski 2-calowe] Optymalne rozwiazanie: x 1 = 24, x 2 = 42, x 6 = 45, x 7 = 2, y 2 = 1 i całkowity odpad wynosi 5 cali.
Planowanie komunikacji miejskiej [Taha 2008] Progress City planuje usprawnienie komunikacji miejskiej. Przeprowadzono badania, z których wynika że minimalna liczba potrzebnych autobusów zmienia się w ciagu dnia. W kolejnych, 4-godzinnych oknach czasowych, jest ona pokazana na poniższym rysunku. Każdy autobus rozpoczyna pracę na poczatku czterogodzinnego okna czasowego i pracuje bez przerwy przez kolejne 8 godzin. Celem jest wyznaczenie minimalnej liczby autobusów, które spełnia zapotrzebowanie komunikacyjne mieszkańców.
Planowanie komunikacji miejskiej [Taha 2008] 1 Zmienne decyzyjne: x i - liczba autobusów zaczynajacych pracę o 00:01, 4:01, 8:01, 12:01, 16:01, 20:01. 2 Funkcja celu: 3 Ograniczenia: min z = Liczba autobusów= x 1 + x 2 + x 3 + x 4 + x 5 + x 6 x 1 + x 6 4 [0:01-4:00] x 1 + x 2 8 [4:01-8:00] x 2 + x 3 10 [8:01-12:00] x 3 + x 4 7 [12:01-16:00] x 4 + x 5 12 [16:01-20:00] x 5 + x 6 4 [20:01-24:00] x 1,..., x 6 0 i całkowite. Optymalne rozwiazanie: x 1 = 4, x 2 = 4, x 3 = 6, x 4 = 8, x 5 = 4, x 6 = 0 i minimalna liczba autobusów wynosi 26.
Problem plecakowy Jan zamierza wybrać się na wycieczkę. Rozważa zapakowanie do plecaka siedmiu przedmiotów. Każdy z nich ma określona wagę i wartość. Niestety pojemność plecaka Jana jest ograniczona i można do niego załadować przedmioty o wadze nie większej niż 15. Które przedmioty Jan powinien zabrać? Przedmiot Waga Wartość 1 5 8 2 2 3 3 7 10 4 1 1 5 6 9 6 8 11 7 2 2
Problem plecakowy 1 Zmienne decyzyjne: x i = { 1 jeżeli przedmiot i jest zabrany 0 w przeciwnym wypadku, i = 1,..., 7. 2 Funkcja celu: max z = Wartość= 8x 1 + 3x 2 + 10x 3 + x 4 + 9x 5 + 11x 6 + 2x 7 3 Ograniczenia: 5x 1 + 2x 2 + 7x 3 + x 4 + 6x 5 + 8x 6 + 2x 7 15 x i {0, 1}, i = 1,..., 7. [Poj. plecaka] Optymalne rozwiazanie: x 1 = 1, x 2 = 1, x 6 = 1, czyli Jan powinien zabrać przedmioty 1, 2 i 6. Wartość plecaka wyniesie wówczas 22.
Problem lokalizacji W pewnym regionie znajduje się pięć miast. Władze regionu chca wybudować w miastach posterunki straży pożarnej tak aby czas dojazdu straży pożarnej do każdego miasta nie przekraczał 15 minut. Czasy przejazdu między miastami (w minutach) sa podane w poniższej tabeli. Miasto 1 Miasto 2 Miasto 3 Miasto 4 Miasto 5 Miasto 6 Miasto 1 0 10 20 30 30 20 Miasto 2 0 25 35 20 10 Miasto 3 0 15 30 20 Miasto 4 0 15 25 Miasto 5 0 14 Miasto 6 0 W których miastach należy wybudować posterunki straży pożarnej aby liczba tych posterunków była najmniejsza?
Problem lokalizacji 1 Zmienne decyzyjne: { 1 jeżeli P.S. jest zbudowany w mieście i x i = 0 w przeciwnym wypadku 2 Funkcja celu:, i = 1,..., 6. 3 Ograniczenia: min z = Liczba posterunków= x 1 + x 2 + x 3 + x 4 + x 5 + x 6 x 1 + x 2 1 [Miasto 1] x 1 + x 2 + x 6 1 [Miasto 2] x 3 + x 4 1 [Miasto 3] x 3 + x 4 + x 5 1 [Miasto 4] x 4 + x 5 + x 6 1 [Miasto 5] x 2 + x 5 + x 6 1 [Miasto 6] x i {0, 1}, i = 1,..., 6. Optymalne rozwiazanie: x 2 = 1, x 4 = 1, czyli należy wybudować posterunki w miastach 2 i 4.
Warunki logiczne Rozpatrzmy ponownie problem plecakowy (Slajd 6) i załóżmy, że Jan ma następujace dodatkowe wymagania: 1 Chce zabrać przedmiot 1 lub 5: x 1 + x 5 1 [1 5] 2 Nie chce zabrać jednocześnie przedmiotów 1 i 6: x 1 + x 6 1 [ (1 5)] 3 Jeżeli zabierze przedmiot 3, to chce również zabrać przedmiot 4: x 3 x 4 [4 3] 4 Chce zabrać albo przedmiot 5 albo przedmiot 6 (ale nie oba): x 5 + x 6 = 1 [5 6] Ponieważ x i {0, 1}, więc możemy identyfikować 1 z prawda a 0 z fałszem.
Ograniczenia dyzjunkcyjne i implikacje Firma DA wytwarza trzy typy samochodów: kompaktowe, średnie i duże. Wymagane zasoby oraz zyski jednostkowe ze sprzedaży sa podane w poniższej tabeli: Kompaktowy Średni Duży Wymagana stal (t./jedn.) 1.5 3 5 Nakład pracy (godz./jedn.) 30 25 40 Zysk ($/jedn.) 2000 3000 4000 Dostępnych jest 6000 ton stali i 60000 godzin pracy. Firma DA chce zmaksymalizować zysk. Model jest następujacy: max z = 2000x 1 + 3000x 2 + 4000x 3 1.5x 1 + 3x 2 + 5x 3 6000 [Stal] 30x 1 + 25x 2 + 40x 3 60000 [Praca] x 1, x 2, x 3 0 i całkowite
Ograniczenia dyzjunkcyjne i implikacje Jeżeli DA uruchomi produkcję samochodów kompaktowych, to co najmniej 1000 sztuk tych samochodów musi być produkowanych. Ograniczenie jest następujace: x 1 > 0 x 1 1000. lub równoważnie: x 1 0 lub x 1 1000. Modelujemy to w następujacy sposób: x 1 My 1 1000 x 1 M(1 y 1 ) gdzie y 1 {0, 1} i M jest duża stała (nie jest zmienna!).
Ograniczenia dyzjunkcyjne i implikacje Jeżeli liczba produkowanych dużych samochodów jest większa niż 500, to produkcja średnich samochodów musi być nie większa niż 100 Ograniczenie jest następujace: x 3 > 500 x 2 100. lub równoważnie: x 1 500 lub x 2 100 (x 1 500 0 lub x 2 100 0) Modelujemy to w następujacy sposób: gdzie M duża stała a y 2 {0, 1} x 3 500 My 2 x 2 100 M(1 y 2 )
Ograniczenia dyzjunkcyjne i implikacje W ogólnym przypadku chcemy zamodelować alternatywę ograniczeń: f (x 1,..., x n) 0 g(x 1,..., x n) 0 Chcemy zapewnić, żeby przynajmniej jedno z dwóch ograniczeń było spełnione. Wprowadzamy dodatkowa zmienna binarna y {0, 1} i dodajemy do modelu następujace ograniczenia: f (x 1,..., x n) My g(x 1,..., x n) M(1 y) (1) gdzie M jest dostatecznie duża liczba taka, że warunki f (x 1,..., x n) M i g(x 1,..., x n) M sa prawdziwe dla wszystkich wartości zmiennych decyzyjnych.
Ograniczenia dyzjunkcyjne i implikacje Implikację f (x 1,..., x n) > 0 g(x 1,..., x n) 0. zastępujemy równoważnym logicznie warunkiem: f (x 1,..., x n) 0 g(x 1,..., x n) 0. Implikację f (x 1,..., x n) > 0 g(x 1,..., x n) 0 zastępujemy równoważnym logicznie warunkiem: f (x 1,..., x n) 0 g(x 1,..., x n) 0,
Modelowanie iloczynu zmiennych 0-1 Fabryka rozważa 5 miejsc w celu lokalizacji nowych magazynów. W miejscach tych można wybudować magazyny o pojemnościach odpowiednio 120, 200, 180, 150 i 300. Odległości pomiędzy każda para miejsc sa podane w poniższej tabeli: 1 2 3 4 5 1 0 12 3 9 20 2 0 9 2 12 3 0 6 8 4 9 11 5 0 Fabryka chce zbudować 3 magazyny o maksymalnej sumarycznej pojemności. Magazyny powinny być tak ulokowane aby odległość pomiędzy każda para magazynów była niewiększa niż 10.
Modelowanie iloczynu zmiennych 0-1 1 Zmienne decyzyjne: x i = { 1 jeżeli magazyn jest w miejscu i 0 w przeciwnym wypadku, i = 1,..., 5. 2 Funkcja celu: 3 Ograniczenia: max z = Pojemność = 120x 1 + 200x 2 + 180x 3 + 150x 4 + 300x 5 12x 1 x 2 10 [Odległość między 1 i 2] 3x 1 x 3 10 [Odległość między 1 i 3]... x i {0, 1}, i = 1,..., 5. Ograniczenia nie sa liniowe!
Modelowanie iloczynu zmiennych 0-1 Ograniczenie 12x 1 x 2 10 nie jest liniowe. Zmieniamy je na liniowe wprowadzajac zmienna y 12 {0, 1} i zastępujac ograniczeniami: 12y 12 10 y 12 x 1 y 12 x 2 y 12 x 1 + x 2 1
Metody naiwne Metody naiwne Algorytm podziału i ograniczeń [Algorytm 1.] Usuń warunki całkowitoliczbowości. Rozwiaż model algorytmem sympleksowym i zaokraglij wyniki do najbliższej liczby całkowitej. 3 x 2 2.5 2 1.5 max z = 21x1 + 12x2 7x1 + 4x2 < 13 x1, x2 > 0, integer 1 0.5 0 0.5 1.0 1.5 2.0 x 1 Optymalnym rozwiazaniem jest (13/7, 0). Zaokraglaj ac do (1, 0) otrzymujemy rozwiazanie nieoptymalne. Zaokraglaj ac do (2, 0) otrzymujemy rozwiazanie niedopuszczalne.
Metody naiwne Metody naiwne Algorytm podziału i ograniczeń [Algorytm 2.] Wygeneruj wszystkie rozwiazania dopuszczalne i wybierz najlepsze z nich. Problem plecakowy ze zmiennymi binarnymi x 1,..., x n posiada nie więcej niż 2 n dopuszczalnych rozwiazań. Przypuśćmy, że jedno rozwiazanie można sprawdzić w czasie 10 6 sekundy. Jak długo potrwaja obliczenia? n 10 6 2 n 10 0.0001 s. 20 1.048 s. 50 35.7 lat 100 10 16 lat
Metody naiwne Metody naiwne Algorytm podziału i ograniczeń Zadanie programowania liniowego całkowitoliczbowego jest dużo trudniejsze do rozwiazania niż zwykłe zadanie programowania liniowego. Do chwili obecnej nie jest znany szybki algorytm dla tej klasy problemów i uważa się, że taki algorytm nie istnieje. Do rozwiazania zadania programowania liniowego całkowitoliczbowego powszechnie stosuje się algorytm podziału i ograniczeń, który można traktować jako znacznie ulepszona wersję metody pełnego przegladu.
Liniowa relaksacja Metody naiwne Algorytm podziału i ograniczeń Jeżeli usuniemy ograniczenia na całkowitość zmiennych w problemie P, to otrzymamy zadanie programowania liniowego, które nazywamy relaksacja P. Dla problemu maksymalizacji, optymalna wartość funkcji celu relaksacji jest górnym ograniczeniem na wartość funkcji celu optymalnego rozwiazania P. 3 x 2 2.5 P: max z = 21x 1 + 12x2 7x 1 + 4x 2 < 13 x1, x2 > 0, integer 2 1.5 relaxation of P: max z = 21x1 + 12x2 7x 1 + 4x 2 < 13 x1, x2 > 0 1 0.5 0 0.5 1.0 1.5 2.0 x 1 Optymalnym rozwiazaniem P jest (0, 3), z = 36. Optymalnym rozwiazaniem relaksacji P jest (13/7, 0), z R = 39.
Programowanie Programowanie liniowe liniowe całkowitoliczbowe całkowitoliczbowe Rozwi Rozwi azywanie azywanie modeli modeli całkowitoliczbowych całkowitoliczbowych Algorytm podziału i ograniczeń Metody Metody naiwne naiwne Algorytm Algorytm podziału podziału i i ograniczeń ograniczeń x 1 3 0 x 1 1 = 3, x 2 = 2.7 2 zr = 37.5 x 1 = 3.75, x 2 = 2.25 z R = 41.25 x 1 4 x 1 = 4, x 2 = 1.8 z R = 41 5 4 3 (3,2.7) 2 1 1 0 1 2 3 4 2 (4,1.8) 5 Wartość Wartośćzmiennej zmiennejx x nie jest dwa podproblemy 1 = 3.75 nie jest całkowita. Rozpatrujemy dwa podproblemy 1 i i 2 dodaj dodaj ac ac odpowiednio ograniczenia x 1 3ix 1 4. 1 3 i x 1 4. Adam Kasperski Badania operacyjne 2012/2013
Programowanie liniowe liniowe całkowitoliczbowe Metody Metody naiwne naiwne Rozwi Rozwi azywanie azywanie modeli modeli całkowitoliczbowych Algorytm Algorytm podziału podziału i iograniczeń Algorytm podziałui i ograniczeń x 1 3 0 x 1 = 3.75, x 2 = 2.25 z R = 41.25 x 1 4 x x 1 = 4, x 2 = 1.8 1 1 = 3, x 2 = 2.7 2 z zr R = 37.5 = 41 x 2 1 x 2 2 x 3 1 = 4.44, x 2 = 1 4 zr = 40.55 sprzeczny W podproblemie W podproblemie 2 wartość 2 wartośćzmiennejx zmiennej x 2 = 1.8niejestcałkowita. Rozpatrujemy 2 = 1.8 nie jest całkowita. Rozpatrujemy dwa dwa kolejne kolejne podproblemy podproblemy 3 i 3 4 i 4 dodaj dodaj ac ac odpowiednio odpowiednio ograniczenia ograniczenia x x 2 1i 2 1 i x x 2 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy 2 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy temu temu podproblemowi podproblemowi zamykamy. zamykamy. Adam Adam Kasperski Kasperski Badania Badania operacyjne 2014/2015 2012/2013
Programowanie Programowanie liniowe liniowe całkowitoliczbowe całkowitoliczbowe Metody Metody naiwne naiwne Rozwi Rozwi azywanie azywanie modeli modeli całkowitoliczbowych całkowitoliczbowych Algorytm Algorytm podziału podziału i ograniczeń iograniczeń Algorytm podziałui i ograniczeń x 1 3 0 x 1 = 3.75, x 2 = 2.25 z R = 41.25 x 1 4 x x 1 = 4, x 2 = 1.8 1 1 = 3, x 2 = 2.7 2 z zr R = 37.5 = 41 x 2 1 x 2 2 x 3 1 = 4.44, x 2 = 1 4 zr = 40.55 x 1 4 x 1 5 x 5 1 = 4, x 2 = 1 x 6 1 = 5, x 2 = 0 zr = 37 zr = 40 sprzeczny W W podproblemie podproblemie 3 wartość 3 wartość zmiennej zmiennejx x 1 = 4.44 nie jest całkowita. Rozpatrujemy 1 = 4.44 nie jest całkowita. Rozpatrujemy więc więc kolejne kolejne dwa dwa podproblemy podproblemy 5 i 5 6 i dodaj 6 dodaj ac ac ograniczenia ograniczenia x x 1 4i 1 4 i x x 1 5. W obu podproblemach otrzymujemy optymalne rozwiazanie całkowite 1 5. W obu podproblemach otrzymujemy optymalne rozwiazanie całkowite izamykamywierzchołki im odpowiadajace. Zamykamy też wierzchołek 1, popnieważ w problemie odpowiadajacym temu wierzchołkowi zr 1, po- i zamykamy wierzchołki im odpowiadajace. Zamykamy też wierzchołek = 37.5 < 40. nieważ w problemie odpowiadajacym temu wierzchołkowi zr = 37.5 < 40. Optymalne rozwiazanie: x 1 = 5, x 2 = 0, z = 40. Optymalne rozwiazanie: x 1 = 5, x 2 = 0, z = 40. Adam Adam Kasperski Kasperski Badania Badania operacyjne operacyjne 2014/2015 2012/2013
Algorytm podziału i ograniczeń Metody naiwne Algorytm podziału i ograniczeń 1 Algorytm konstruuje binarne drzewo przeszukiwania. W każdym wierzchołku tego drzewa rozwiazywane jest zadanie programowania liniowego. 2 Istnieje kilka metod wyboru kolejnego wierzchołka do podziału. Jedna z najbardziej popularnych jest wybór wierzchołka z największa wartościa zr. 3 Wierzchołek drzewa zamykamy jeżeli: 1 rozwiazanie otrzymane w tym wierzchołku jest całkowitoliczbowe; 2 problem odpowiadajacy temu wierzchołkowi jest sprzeczny; 3 wartość funkcji celu optymalnego rozwiazania w tym wierzchołku jest niewiększa niż wartość funkcji celu dla pewnego znanego rozwiazania dopuszczalnego. 4 Jeżeli wszystkie wierzchołki sa zamknięte, to najlepsze znalezione rozwiazanie całkowitoliczbowe jest optymalne.
Metody naiwne Algorytm podziału i ograniczeń Mieszany problem liniowy całkowitoliczbowy Jeżeli w zadaniu programowania liniowego tylko niektóre zmienne musza być całkowite, to zadanie takie nazywamy mieszanym zadaniem programowania liniowego całkowitoliczbowego. max z = 2x 1 + x 2 5x 1 + 2x 2 8 x 1 + x 2 3 x 1, x 2 0, x 1 całkowite
Programowanie Programowanie liniowe całkowitoliczbowe liniowe całkowitoliczbowe Metody naiwnemetody naiwne Rozwiazywanie Rozwi modeli azywanie całkowitoliczbowych modeli całkowitoliczbowych Algorytm podziału Algorytm i ograniczeń podziału iograniczeń Mieszany Mieszany problem problem liniowy liniowy całkowitoliczbowy całkowitoliczbowy x 1 0 0 x 1 = 0, x 2 = 3 zr = 3 x 1 = 2/3, x 2 = 7/3 z R = 11 x 1 1 1 2 x 1 = 1, x 2 = 3/2 z R = 7/2 Przy podziale Przy bierzemy podziale bierzemy pod uwagę pod tylko uwagę zmienn tylko a x zmienna x 1. Optymalne rozwiazan 1. Optymalne rozwiazanie wynosi x wynosi x 1 = 1, x 2 = 3/2. 1 = 1, x 2 = 3/2. Adam Kasperski Adam Kasperski Badania operacyjne Badania 2014/2015 operacyjne 2012/2013
Problem plecakowy Metody naiwne Algorytm podziału i ograniczeń max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 15, x 1,.., x 5 {0, 1} Relaksacja: max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 15, 0 x i 1, i = 1,..., 5
Problem plecakowy Metody naiwne Algorytm podziału i ograniczeń Relaksacja może być efektywnie rozwiazana za pomoca algorytmu zachłannego: i c i w i c i /w i 1 5 5 1 2 3 4 3/4 3 6 7 6/7 4 6 6 1 5 2 2 1 Wybieramy przedmioty zgodnie z nieroznac a wartościa c i /w i. Zatem bierzemy całe przedmioty 1, 4, 5 i 2/7 przedmiotu 3. W optymalnym rozwiazaniu relaksacji co najwyżej jedna zmienna jest niecałkowita.
Rozwi Programowanie azywanie modeli liniowe całkowitoliczbowych całkowitoliczbowe Problem Problem plecakowy Metody naiwne Metody Algorytm naiwne podziału i ograniczeń Algorytm podziału iograniczeń zr = 14 1 z 2 R = 14 1 2 (1, 1, 0, 1, 1) (1, 0, 1, 1, 0) 2 2 0 zr = 14 5 7 (1, 0, 2, 1, 1) 7 x 3 = 0 x 3 = 1 x 2 = 0 x 2 = 1 x 4 = 0 x 4 = 1 zr = 13 zr = 14 zr = 13 3 z 4 R = 14 3 4 5 6 (1, 0, 0, 1, 1) (1, 1, 0, 1, 0) (1, 1, 1, 0, 1) ( 2, 0, 1, 1, 0) 4 5 Wkażdym wierzchołku wybieramy zmienna niecałkowita x i i rozpatrujemy dwa W przypadki każdym wierzchołku x i = 1(bierzemyprzedmioti) wybieramy zmienn orazx a niecałkowit i = 0 (nie bierzemy a x i i rozpatrujemy przedmiotu dwa przypadki i). Optymalne x i = 1 rozwi (bierzemy azanie znajduje przedmiot się i) w oraz wierzchołku x i = 04. (nie Zatem bierzemy bierzemy przedmiotu przedmioty i). Optymalne 1, 2 i 4. rozwiazanie znajduje się w wierzchołku 4. Zatem bierzemy przedmioty 1, 2 i 4. Adam Kasperski Badania operacyjne 2012/2013