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 = 90 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 = 120 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ć niewię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.
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
[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.
[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
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 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.
max z = 8x 1 + 5x 2 6x 1 + 10x 2 45 9x 1 + 5x 2 45 x 1, x 2 0, x 1, x 2 całkowite x 2 5 4 3 2 (3.75,2.25) 1 0 1 2 3 4 5 x 1 Rozwiazuj ac relaksację otrzymujemy x 1 = 3.75, x 2 = 2.25, zr = 41.25.
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ść zmiennej x 1 = 3.75 nie jest całkowita. Rozpatrujemy dwa podproblemy 1 i 2 dodajac odpowiednio ograniczenia x 1 3 i x 1 4.
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 2 wartość zmiennej x 2 = 1.8 nie jest całkowita. Rozpatrujemy dwa kolejne podproblemy 3 i 4 dodajac odpowiednio ograniczenia x 2 1 i x 2 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy temu podproblemowi zamykamy.
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 podproblemie 3 wartość zmiennej x 1 = 4.44 nie jest całkowita. Rozpatrujemy więc kolejne dwa podproblemy 5 i 6 dodajac ograniczenia x 1 4 i x 1 5. W obu podproblemach otrzymujemy optymalne rozwiazanie całkowite i zamykamy wierzchołki im odpowiadajace. Zamykamy też wierzchołek 1, popnieważ w problemie odpowiadajacym temu wierzchołkowi zr = 37.5 < 40. Optymalne rozwiazanie: x 1 = 5, x 2 = 0, z = 40.
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.
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
Mieszany problem liniowy 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 bierzemy pod uwagę tylko zmienna x 1. Optymalne rozwiazanie wynosi x 1 = 1, x 2 = 3/2.
Problem plecakowy Relaksacja: 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} 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 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 Zatem bie- Wybieramy przedmioty zgodnie z nieroznac a wartościa c i /w i. rzemy całe przedmioty 1, 4, 5 i 2/7 przedmiotu 3. W optymalnym rozwiazaniu relaksacji co najwyżej jedna zmienna jest niecałkowita.
Problem plecakowy 1 0 zr = 14 5 7 (1, 0, 2, 1, 1) 7 x 3 = 0 x 3 = 1 zr = 14 1 z 2 R = 14 2 (1, 1, 0, 1, 1) (1, 0, 1, 1, 0) 2 2 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 W każdym wierzchołku wybieramy zmienna niecałkowita x i i rozpatrujemy dwa przypadki x i = 1 (bierzemy przedmiot i) oraz x i = 0 (nie bierzemy przedmiotu i). Optymalne rozwiazanie znajduje się w wierzchołku 4. Zatem bierzemy przedmioty 1, 2 i 4.