Przykład Algorytm Ralph Gomory Inne przykłady Badania operacyjne Instytut Informatyki Przykład Algorytm Ralph Gomory Inne przykłady Zadanie Producent dwóch typów szynobusów planuje produkcję na najbliższy miesiąc. Każdy z szynobusów przynosi taki sam zysk, ale wymagają do produkcji różnych zasobów. Zapotrzebowanie na zasoby oraz ich dostępność przedstawiono w Tablicy. Zasób I Zasób II Typ A 4 2 Typ B 5 dostępna ilość zasobu 20 6 Znaleźć optymalny plan produkcji szynobusów.
Model dyskretny zmaksymalizować z = x + x 2 () 2x + x 2 6 (2) 4x + 5x 2 20 () x, x 2 0 (4) x, x 2 Z (5) Postać standardowa zmaksymalizować z = x + x 2 (6) 2x + x 2 + s = 6 (7) 4x + 5x 2 + s 2 = 20 (8) x, x 2 0 (9) x, x 2 Z (0) i B c x x 2 s s 2 RHS s 0 2 0 6 2 s 2 0 4 5 0 20 0 0 0
Rozwiązanie i B c x x 2 s s 2 RHS x 0 5 6 6 5 2 x 2 0 2 8 0 0 6 6 Dyskretne programowanie liniowe x 2 x
Dyskretne programowanie liniowe i B c x x 2 s s 2 RHS x 0 5 6 6 5 2 x 2 0 2 8 0 0 6 6 0 x + x 2 + ( + ) s + x 2 2 s + s 2 = 8 ( 0 + ) s 2 = 2 + 2 () (2) s + s 2 = 2 + (2 x 2 + s ) () Dyskretne programowanie liniowe 0 x + x 2 + x 2 2 s + s 2 = 8 ( + ) ( s + 0 + ) s 2 = 2 + 2 s + s 2 = 2 + (2 x 2 + s ) s + s 2 2 s + s 2 2 (4) s + s 2 s + a = 2 (5)
Dyskretne programowanie liniowe Twierdzenie Niech IL oraz IR będą dowolnymi liczbami naturalnymi, f ściśle dodatnim ułamkiem a F sumą ściśle dodatnich ułamków takich, że IL + F = IR + f Wtedy IL IR oraz F f. Dowód. Niech (IL, IR, f, F ) będzie dowolną czwórką spełniającą założenia twierdzenia. Ponieważ IL oraz IR są liczbami naturalnymi, F jest sumą ściśle dodatnich ułamków a f jest ściśle dodatnim ułamkiem, to musi zachodzić F f. Jeżeli bowiem F < to F = f, a jeżeli F > to F > f. Ponieważ f jest ułamkiem, a IL oraz IR są liczbami naturalnymi, to F nie może być całkowite, w szczególności nie może być równe. Zatem z IL + F = IR + f wynika, że IL IR. Jest oczywiste, że gdy F < to IL = IR oraz gdy F > to IL < IR. Dyskretne programowanie liniowe zmaksymalizować x + x 2 + M a (6) przy ograniczeniach x + 5 s 6 s 6 2 = 5 (7) x 2 2 s + s 2 = 8 (8) s + s 2 s + a = 2 (9) i B c x x 2 s s 2 s a RHS x 0 0 2 x 2 0 0 6 0 0 5 8 a M 0 0 2 4 0 0 M M 6 M 0 4
Dyskretne programowanie liniowe i B c x x 2 s s 2 s RHS x 0 0 6 2 2 x 2 0 0 2 s 2 0 0 0 2 4 0 0 0 0 6 4 Odcięcie s + s 2 2 (20) 2x + x 2 + s = 6 (2) 4x + 5x 2 + s 2 = 20 (22) (6 2x x 2 ) + (20 4x 5x 2 ) 2 (2) 26 6x 6x 2 2 (24) x + x 2 4 (25)
Dyskretne programowanie liniowe x 2 x Algorytm Gomory ego krok Rozwiąż metodą sympleks zadanie PL bez uwzględniania warunku dyskretności zmiennych. krok 2 Jeżeli rozwiązanie uzyskane w wyniku ostatniego zastosowania metody sympleks jest całkowitoliczbowe, to jest ono rozwiązaniem wyjściowego zadania całkowitoliczbowego programowania liniowego; w przeciwnym razie przejdź do kroku. krok Wyeliminuj wszystkie zmienne sztuczne (bazowe i niebazowe) z równań wynikających z ostatniej tablicy sympleksowej, po czym wybierz zmienną x k, która ma wartość ułamkową w ostatnim rozwiązaniu.
Algorytm Gomory ego krok 4 W układzie równań wynikającym z ostatniej tablicy sympleks jeden ze współczynników przy x k, powiedzmy w l-tym równaniu jest równy, a pozostałe są równe zero. Zastąp współczynniki i stałą w l-tym równaniu ich częściami ułamkowymi. krok 5 Dodaj do każdego ujemnego ułamka wynikającego z kroku 4. Zapisz otrzymane równanie jako ograniczenie nierównościowe ze znakiem. Algorytm Gomory ego krok 6 Odejmij zmienną osłabiającą i dodaj zmienną sztuczną do zmodyfikowanego l-tego ograniczenia w celu sprowadzenia go do równania. Dołącz to równanie na koniec układu równań wynikającego z ostatniej tablicy sympleks i przydziel nowej zmiennej sztucznej dowolnie duży współczynnik w funkcji celu. Uaktualnij wiersz wskaźnikowy tablicy sympleks. krok 7 Wykonaj dodatkowe iteracje metody sympleks dla nowego układu równań utworzonego w kroku 6. Po uzyskaniu rozwiązania przejdź do kroku 2. http://www.ms.unimelb.edu.au/ moshe/620-62/gomory/
Ralph Gomory (born 7 May 929) an American applied mathematician and executive. Gomory worked at IBM as a researcher and later as an executive. During that time, his research led to the creation of new areas of applied mathematics. He graduated from George School in Newtown, PA in 946. He received his B.A. from Williams College in 950, studied at Cambridge University, and received his Ph.D. in mathematics from Princeton University in 954. While serving in the Navy (954-957), Gomory described his method he shifted his focus to applied mathematics in operations in a very short paper entitled research. Among his mathematical achievements were Outline of an algorithm for founding contributions to the field of integer programming, integer solutions to linear an active area of research to this day. In December 2007 programs, Bull. American Gomory retired and became Professor at Stern School of Math. Society, 64, 275-278, Business, New York University. 958. Problem plecakowy W kolejce do serwera oczekuje 8 zadań obliczeniowych, które bezwzględnie trzeba zakończyć w ciągu godziny. Za niewykonanie zadania należy zapłacić karę zleceniodawcy. Czasy realizacji oraz kary za niewykonanie poszczególnych zadań zawarto w tablicy. Które zadania należy wykonać, aby zminimalizować całkowitą karę? zadanie Z Z2 Z Z4 Z5 Z6 Z7 Z8 czas [min] 6 8 20 28 5 25 9 kara [tys.zł] 6 5 9 0 2 9 8 x i = { gdy zadanie i zostanie wykonane 0 w przeciwnym razie (26)
Problem plecakowy zadanie Z Z2 Z Z4 Z5 Z6 Z7 Z8 czas [min] 6 8 20 28 5 25 9 kara [tys.zł] 6 5 9 0 2 9 8 x i = { gdy zadanie i zostanie wykonane 0 w przeciwnym razie (27) zmin. 6( x ) + 5( x 2 ) + 9( x ) + 0( x 4 ) + (28) ( x 5 ) + 2( x 6 ) + 9( x 7 ) + 8( x 8 ) (29) p.o. 6x + 8x 2 + x + 20x 4 + 28x 5 + 5x 6 + 25x 7 + 9x 8 60 (0) x i {0, }, i =,..., 8 () Problem plecakowy x i = { gdy zadanie i zostanie wykonane 0 w przeciwnym razie (2) zmin. 6( x ) + 5( x 2 ) + 9( x ) + 0( x 4 ) + () ( x 5 ) + 2( x 6 ) + 9( x 7 ) + 8( x 8 ) (4) p.o. 6x + 8x 2 + x + 20x 4 + 28x 5 + 5x 6 + 25x 7 + 9x 8 60 (5) x i {0, }, i =,..., 8 (6) zmaks. 6x + 5x 2 + 9x + 0x 4 + x 5 + 2x 6 + 9x 7 + 8x 8 (7) p.o. 6x + 8x 2 + x + 20x 4 + 28x 5 + 5x 6 + 25x 7 + 9x 8 60 (8) x i {0, }, i =,..., 8 (9)
Problem plecakowy Dany jest skończony zbiór elementów A = {a, a 2,..., a n }, z których każdy ma całkowitoliczbową wagę w i i wartość v i oraz całkowitoliczbową pojemność plecaka b. Które elementy należy włożyć do plecaka, aby nie przekraczając jego pojemności zmaksymalizować wartość zapakowanych elementów? x i = { gdy element i zostanie zapakowany 0 w przeciwnym razie (40) zmaksymalizować przy ograniczeniach n i= v ix i (4) n i= w ix i b (42) x i {0, }, i =,..., n (4) Problem jest NP-trudny w zwykłym sensie. Problem transportowy Firma produkująca nawozy sztuczne ma trzy zakłady produkcyjne zlokalizowane w Kluczborku, Białymstoku i Pile. Kwartalna produkcja poszczególnych zakładów wynosi odpowiednio: 5000 kg, 6000 kg, i 2500 kg. Firma ma cztery centra dystrybucji, zlokalizowane w Lublinie, Elblągu, Łodzi i Opolu. Przewidywany popyt na nawozy w poszczególnych centrach dystrybucji wynosi odpowiednio: 6000 kg, 4000 kg, 2000 kg oraz 500 kg. Jednostkowe koszty transportu (w zł/kg) z każdego zakładu do poszczególnych centrów dystrybucji podano w tablicy. Lublin Elbląg Łódź Opole Kluczbork 2 7 6 Białystok 7 5 2 Piła 2 5 4 5
Problem transportowy x ij ilość towaru przewieziona od dostawcy i do odbiorcy j zminimalizować x + 2x 2 + 7x + 6x 4 + 7x 2 + 5x 22 + 2x 2 + x 24 + 2x + 5x 2 + 4x + 5x 4 (44) przy ograniczeniach x + x 2 + x + x 4 5000 (45) x 2 + x 22 + x 2 + x 24 6000 (46) x + x 2 + x + x 4 2500 (47) x + x 2 + x 6000 (48) x 2 + x 22 + x 2 4000 (49) x + x 2 + x 2000 (50) x 4 + x 24 + x 4 500 (5) x ij 0, i =, 2,, j =, 2,, 4 (52) x ij Z, i =, 2,, j =, 2,, 4 (5) Problem transportowy Mamy m dostawców, których możliwości wysyłki wynoszą a i, i =,... m i n odbiorców, których zapotrzebowania wynoszą b j, j =,... n. Koszt przesłania jednostkowej porcji towaru od dostawcy i do odbiorcy j wynosi c ij. Wyznaczyć plan przewozów minimalizujący całkowite koszty. zminimalizować przy ograniczeniach n i= m j= c ijx ij (54) n j= x ij a i, i =,..., m (55) m i= x ij b j, j =,..., n (56) x ij 0, i =,..., m, j =,..., n (57) x ij Z, i =,..., m, j =,..., n (58) Istnieje algorytm wielomianowy o złożoności O(n ) znajdujący optymalne rozwiązanie problemu.
Problem przydziału Firma zatrudniła do sprzątania po remoncie pracowników: Armonda, Francine, i Herberta. Jeden z nich musi posprzątać łazienkę, drugi umyć podłogi, a trzeci umyć okna, ale każdy z nich otrzymuje inne wynagrodzenie za te same czynności (tablica). Należy tak rodzielić zadania między pracowników, aby zminimalizować całkowity koszt sprzątania. Armond Francine Herbert łazienka 2 podłogi 2 okna 2 Problem przydziału x ij = { pracownik i wykonuje zadanie j 0 w przeciwnym razie zmin. 2x + x 2 + x + x 2 + 2x 22 + x 2 + x + x 2 + 2x (59) p.o. x + x 2 + x = (60) x 2 + x 22 + x 2 = (6) x + x 2 + x = (62) x + x 2 + x = (6) x 2 + x 22 + x 2 = (64) x + x 2 + x = (65) x ij {0, }, i =,..., m, j =,..., n (66)
Problem przydziału Mamy n pracowników (maszyn, procesorów) i n zadań do wykonania. Koszt (czas) wykonania zadania i przez pracownika j wynosi c ij. Przydzielić zadania do pracowników w taki sposób, aby całkowity koszt wykonania wszystkich zadań był minimalny. zminimalizować przy ograniczeniach n i= m j= c ijx ij (67) n j= x ij, i =,..., m (68) m i= x ij, j =,..., n (69) x ij {0, }, i =,..., m, j =,..., n (70) Istnieje algorytm wielomianowy o złożoności O(log 2 (n)) znajdujący optymalne rozwiązanie problemu.