Sformułowanie problemu Zastosowania 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 apple x i apple 1ix i całkowite dla każdej zmiennej x i, co krótko oznaczamy jako x i 2{0, 1}.
Problem rozkroju Sformułowanie problemu Zastosowania Tartak posiada standardowe deski o szerokości 10 cali. Otrzymał zamówienie na 90 desek o szerokości 4 cale, 175 desek o szerokości 3 cale i 120 desek o szerokości 2 cali. 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 Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: x i - liczba standardowych desek ciętych i-tym sposobem y 1, y 2, y 3 - liczba desek 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 [deski 4-calowe] 2x 2 + x 3 + 3x 5 + 2x 6 + x 7 y 2 = 175 [deski 3-calowe] x 1 + x 3 + 3x 4 + 2x 6 + 3x 7 + 5x 8 y 3 = 120 [deski 2-calowe] x 1,...,x 8, y 1, y 2, y 3 0 i całkowite. Optymalne rozwiazanie: x 1 = 24, x 2 = 42, x 6 = 45, x 7 = 2, y 2 = 1i całkowity odpad wynosi 5 cali.
Sformułowanie problemu Zastosowania 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.
Sformułowanie problemu Zastosowania 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 = 0i minimalna liczba autobusów wynosi 26.
Problem plecakowy Sformułowanie problemu Zastosowania 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 Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: 1 jeżeli przedmiot i jest zabrany x i =, i = 1,...,7. 0 w przeciwnym wypadku 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 apple 15 x i 2{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 Sformułowanie problemu Zastosowania 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 Sformułowanie problemu Zastosowania 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 2{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 Sformułowanie problemu Zastosowania 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 apple 1 [ (1 ^ 6)] 3 Jeżeli zabierze przedmiot 3, to chce również zabrać przedmiot 4: x 3 apple x 4 [3 ) 4] 4 Chce zabrać albo przedmiot 5 albo przedmiot 6 (ale nie oba): x 5 + x 6 = 1 [5 6] Ponieważ x i 2{0, 1}, więc możemy identyfikować 1 z prawda a 0 z fałszem.
Sformułowanie problemu Zastosowania 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 apple 6000 [Stal] 30x 1 + 25x 2 + 40x 3 apple 60000 [Praca] x 1, x 2, x 3 0 i całkowite
Sformułowanie problemu Zastosowania 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 apple 0 lub x 1 1000. Modelujemy to w następujacy sposób: x 1 apple My 1 1000 x 1 apple M(1 y 1 ) gdzie y 1 2{0, 1} i M jest duża stała (nie jest zmienna!).
Sformułowanie problemu Zastosowania 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 apple 100. lub równoważnie: x 1 apple 500 lub x 2 apple 100 (x 1 500 apple 0 lub x 2 100 apple 0) Modelujemy to w następujacy sposób: gdzie M duża stała a y 2 2{0, 1} x 3 500 apple My 2 x 2 100 apple M(1 y 2 )
Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje W ogólnym przypadku chcemy zamodelować alternatywę ograniczeń: f (x 1,...,x n) apple 0 _ g(x 1,...,x n) apple 0 Chcemy zapewnić, żeby przynajmniej jedno z dwóch ograniczeń było spełnione. Wprowadzamy dodatkowa zmienna binarna y 2{0, 1} i dodajemy do modelu następujace ograniczenia: f (x 1,...,x n) apple My g(x 1,...,x n) apple M(1 y) (1) gdzie M jest dostatecznie duża liczba taka, że warunki f (x 1,...,x n) apple M i g(x 1,...,x n) apple M sa prawdziwe dla wszystkich wartości zmiennych.
Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje Implikację f (x 1,...,x n) > 0 ) g(x 1,...,x n) apple 0. zastępujemy równoważnym logicznie warunkiem: f (x 1,...,x n) apple 0 _ g(x 1,...,x n) apple 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) apple 0 _ g(x 1,...,x n) apple 0,
Sformułowanie problemu Zastosowania Zastosowanie - problem Job Shop Zadany jest zbiór prac J = {J 1, J 2,...,J n }. Każda praca J i składa się z operacji O i1, O i2,...o ini, które musza być wykonywane w kolejności: O i1! O i2!!o ini Każda operacja O ij musi być wykonywana na zadanej maszynie ze zbioru maszyn {M 1,...,M m } i czas jej wykonania wynosi p ij. Należy wyznaczyć harmonogram o najkrótszym czasie wykonania wszystkich prac.
Przykład Programowanie liniowe całkowitoliczbowe Sformułowanie problemu Zastosowania Operacja Czas trwania Maszyna O 11 3 M 1 O 12 2 M 2 O 13 2 M 3 O 21 2 M 2 O 22 1 M 1 O 31 4 M 1 O 32 2 M 2 O 33 3 M 3 M1 M2 M3 O 11 O 21 O 31 O22 O 12 O 32 O 13 O 33 Przykładowy harmonogram o długości 12.
Model dla problemu Job Shop Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne 2 Funkcja celu S ij - czas rozpoczęcie operacji O ij na odpowiedniej maszynie. min z = C 3 Ograniczenia S ij S ij 1 + p ij 1 dla każdej operacji O ij, j > 1. S ij S kl + p kl _ S kl S ij + p ij dla każdej pary operacji O ij, O kl wykonywanych na tej samej maszynie C S ij + p ij dla każdej operacji O ij Model liniowy otrzymujemy przekształcajac ograniczenia dyzjunkcyjne.
Sformułowanie problemu Zastosowania 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.
Sformułowanie problemu Zastosowania Modelowanie iloczynu zmiennych 0-1 1 Zmienne decyzyjne: 1 jeżeli magazyn jest w miejscu i x i = 0 w przeciwnym wypadku 2 Funkcja celu:, i = 1,...,5. 3 Ograniczenia: max z = Pojemność = 120x 1 + 200x 2 + 180x 3 + 150x 4 + 300x 5 12x 1 x 2 apple 10 [Odległość między 1 i 2] 3x 1 x 3 apple 10 [Odległość między 1 i 3]... x i 2{0, 1}, i = 1,...,5. Ograniczenia nie sa liniowe!
Sformułowanie problemu Zastosowania Modelowanie iloczynu zmiennych 0-1 Ograniczenie 12x 1 x 2 apple 10 nie jest liniowe. Zmieniamy je na liniowe wprowadzajac zmienna y 12 2{0, 1} i zastępujac ograniczeniami: 12y 12 apple 10 y 12 apple x 1 y 12 apple x 2 y 12 x 1 + x 2 1
Maksymalny przekrój Sformułowanie problemu Zastosowania Zadany jest graf G =(V, A). Wyznacz podział zbioru wierzchołków V na dwa zbiory V 1 i V 2 tak aby liczba krawędzi prowadzacych z V 1 do V 2 była maksymalna.
Maksymalny przekrój Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: 1 jeżeli i 2 V1 x i =, i = 1,..., V. 0 jeżeli i 2 V 2 2 Funkcja celu: min z = 3 Ograniczenia: X {i,j}2e (x i x j ) 2 x i 2{0, 1}, i = 1,..., V. Cel przekształcamy korzystajac z faktu, że dla zmiennych binarnych zachodzi: (x i x j ) 2 = xi 2 2x i x j + xj 2 = x i 2x i x j + x j i stosujemy metodę dla iloczynu zmiennych binarnych.
Algorytm płaszczyzn odcinajacych [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 płaszczyzn odcinajacych [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
Algorytm płaszczyzn odcinajacych 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 Algorytm płaszczyzn odcinajacych 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.
Algorytm płaszczyzn odcinajacych max z = 8x 1 + 5x 2 6x 1 + 10x 2 apple 45 9x 1 + 5x 2 apple 45 x 1, x 2 0, x 1, x 2 całkowite b 5 4 3 2 (3.75,2.25) 1 0 1 2 3 4 5 a Rozwiazuj ac relaksację otrzymujemy x 1 = 3.75, x 2 = 2.25, zr = 41.25.
Algorytm płaszczyzn odcinajacych x 1 apple 3 0 x 1 1 = 3, x 2 = 2.7 2 zr = 37.5 x 1 = 3.75, x 2 = 2.25 zr = 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 apple 3ix 1 4.
Algorytm płaszczyzn odcinajacych x 1 apple 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 apple 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 apple 1 i x 2 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy temu podproblemowi zamykamy.
Algorytm płaszczyzn odcinajacych x 1 apple 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 apple 1 x 2 2 x 3 1 = 4.44, x 2 = 1 4 zr = 40.55 x 1 apple 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 apple 4i x 1 5. W obu podproblemach otrzymujemy optymalne rozwiazanie całkowite i zamykamy wierzchołki im odpowiadajace. Zamykamy też wierzchołek 1, ponieważ w problemie odpowiadajacym temu wierzchołkowi zr = 37.5 < 40. Optymalne rozwiazanie: xadam 1 = Kasperski 5, x 2 = 0, z Badania = 40. operacyjne (INS) 2015/2016
Algorytm płaszczyzn odcinajacych 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.
Algorytm płaszczyzn odcinajacych 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 apple 8 x 1 + x 2 apple 3 x 1, x 2 0, x 1 całkowite
Algorytm płaszczyzn odcinajacych Mieszany problem liniowy całkowitoliczbowy x 1 apple 0 0 x 1 = 0, x 2 = 3 zr = 3 x 1 = 2/3, x 2 = 7/3 zr = 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 Algorytm płaszczyzn odcinajacych Relaksacja: max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 apple 15, x 1,..,x 5 2{0, 1} max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 apple 15, 0 apple x i apple 1, i = 1,...,5
Problem plecakowy Algorytm płaszczyzn odcinajacych 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.
Problem plecakowy Algorytm płaszczyzn odcinajacych 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 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.
Odcięcie Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych Odcięciem nazywamy dodatkowe ograniczenie dodane do zadania programowania liniowego, które: 1 sprawia, że bieżace niecałkowite rozwiazanie optymalne staje się niedopuszczalne; 2 nie usuwa żadnego rozwiazania całkowitoliczbowego ze zbioru dopuszczalnych rozwiazań. Idea algorytmu płaszczyzn odcinajacych polega na kolejnym dodawania kolejnych odcięć do modelu, dopóki otrzymane rozwiazanie optymalne nie jest całkowitoliczbowe.
Ilustracja algorytmu Algorytm płaszczyzn odcinajacych
Generowanie odcięć Algorytm płaszczyzn odcinajacych W optymalnej tablicy sympleksowej wybieramy zmienna bazowa x i, która jest niecałkowita. Oznaczmy prze N zbiór indeksów zmiennych niebazowych. Wówczas z optymalnej tablicy odczytujemy: x i + X aij 0 x j = ˆb i (2) j2n Niech [a] oznacza największa liczbę całkowita, niewiększa niż a. Wówczas: x i + X j2n[a 0 ij ]x j apple ˆb i (3) Każdy wektor całkowitoliczbowy, który spełnia (2) spełnia również (3). Zatem dla rozwiazań całkowitoliczbowych zachodzi x i + X j2n[a 0 ij ]x j apple [ˆb i ] (4) Po zbilansowaniu: x i + X j2n[a 0 ij ]x j + u i =[ˆb i ] (5) Odcięcie otrzymujemy odejmujac (2) od (5).
Generowanie odcięć Algorytm płaszczyzn odcinajacych Jeżeli a 0 ij =[a 0 ij]+f ij, ˆb i =[ˆb i ]+g i i g i > 0, to odcięcie ma postać: X f ij x j + u i = j2n g i 1 Wszystkie rozwiazania całkowitoliczbowe wyjściowego modelu spełniaja odcięcie. 2 Bieżace rozwiazanie optymalne nie spełnia odcięcia, ponieważ podsatwiajać x j = 0 dla j 2 N otrzymamy u i = g i < 0. Odcięcie dodajemy do modelu i stosujemy dualny algorytm sympleksowy aby przywrócić dopuszczalność rozwiazania.
Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych max z = 5x 1 + 6x 2 10x 1 + 3x 2 apple 52 2x 1 + 3x 2 apple 18 x 1, x 2 0, całk. x 1 x 2 s 1 s 2 1 15 z 0 0 8 8 1 1 x 1 1 0 8 8 x 2 0 1 1 12 5 12 161 4 17 4 19 6 Zmienna bazowa x 1 = 17 jest niecałkowita. Zatem generujemy odcięcie na 4 podstawie wiersza tablicy, który odpowiada x 1 : 1 8 s 1 7 8 s 2 + u 1 = 1 4
Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych Rozwiazujemy problem stosujac dualny algorytm sympleksowy: x 1 x 2 s 1 s 2 u 1 1 15 z 0 0 0 8 8 1 1 x 1 1 0 0 8 8 1 5 x 2 0 1 0 12 12 1 7 u 1 0 0 1 8 8 161 4 17 4 19 6 1 4 x 1 x 2 s 1 s 2 u 1 z 0 0 0 1 1 40 x 1 1 0 0 1 1 4 2 10 x 2 0 1 0 1 3 3 s 1 0 0 1 7 8 2 Zmienna bazowa x 2 = 10 jest niecałkowita. Zatem generujemy odcięcie na podstawie 3 wiersza tablicy, który odpowiada x 2 : 0s 2 1 3 u 1 + u 2 = 1 3
Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych u 1 x 1 x 2 s 1 s 2 u 1 u 2 z 0 0 0 1 1 0 40 x 1 1 0 0 1 1 0 4 2 10 x 2 0 1 0 1 0 3 3 s 1 0 0 1 7 8 0 2 u 2 0 0 0 0 1 u 2 1 3 x 1 x 2 s 1 s 2 u 1 u 2 z 0 0 0 1 0 3 39 x 1 1 0 0 1 0 3 3 x 2 0 1 0 1 0 2 4 s 1 0 0 1 7 0 24 10 u 1 0 0 0 0 1 3 1 Rozwiazanie jest całkowitoliczbowe, zatem algorytm kończy pracę. 1 3
Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych 1 8 s 1 Podstawiamy s 1 = 52 10x 1 3x 2 i s 2 = 18 2x 1 3x 2. Odcięcie 7 s 8 2 + u 1 = 1 ma postać x 1 4 1 + x 2 apple 22/3; odcięcie 0s 2 u 3 1 + u 2 = 1 ma 3 postać x 1 + x 2 apple 7.
Uwagi końcowe Algorytm płaszczyzn odcinajacych 1 W praktyce algorytm płaszczyzn odcinajacych jest mniej efektywny niż algorytm podziału i ograniczeń. 2 Nowoczesne solvery stosuja metodę podziału i ograniczeń połaczon a z metoda płaszczyzn odcinajacych. Taki zaawansowany algorytm nazywamy algorytmem branch and cut.