280 likes | 985 Views
Programowanie dynamiczne. Opracowano na podstawie: „Badania operacyjne w przykładach i zadaniach” pod red. Karola Kukuły Wyd. Naukowe PWN „Matematyczne techniki zarządzania” pod red. Zbigniewa Łuckiego Wyd. AGH Badania operacyjne mgr inż. Piotr Betlej. Programowanie dynamiczne .
E N D
Programowanie dynamiczne Opracowano na podstawie: „Badania operacyjne w przykładach i zadaniach” pod red. Karola Kukuły Wyd. Naukowe PWN „Matematyczne techniki zarządzania” pod red. Zbigniewa Łuckiego Wyd. AGH Badania operacyjne mgr inż. Piotr Betlej
Programowanie dynamiczne • jest jedną z technik matematycznych poszukiwania rozwiązań optymalnych • określa sposób podejścia do rozwiązywania problemu niż jako pojedynczy uniwersalny algorytm.
rozwiązanie • polega na podziale zagadnienia pierwotnego na podproblemy lub etapy, a następnie na ich sekwencyjnym rozwiązywaniu, aż do znalezienia rozwiązania optymalnego. • Stosuje się przy tym, niezależnie od algorytmu, zasadę optymalności Bellmana, w myśl której optymalne rozwiązanie zagadnień z zakresu programowania dynamicznego ma tę własność, że optymalne rozwiązanie dla k-tego etapu jest jednocześnie rozwiązaniem optymalnym dla etapów k + 1, k + 2, ..., N. Tak więc optymalne rozwiązanie dla etapu pierwszego stanowi optymalne rozwiązanie dla całego problemu. • W związku z powyższą zasadą problem z zakresu programowania dynamicznego rozwiązuje się rozpoczynając od poszukiwania rozwiązania dla ostatniego etapu (N), a następnie cofając się poszukuje się rozwiązania dla etapu N-1 Uzyskane w ten sposób rozwiązanie dla etapów N-1 oraz N jest optymalne bez względu na to, w jaki sposób osiągnięto etap N- 1. Powtarzając w powyższy sposób etap po etapie dochodzimy do rozwiązania optymalnego dla pierwszego etapu, a więc i dla całego problemu.
Zadania programowania dynamicznego • zagadnienie dyliżansu, • zagadnienie finansowania inwestycji, • optymalizacja zapasów, • alokacja zasobów, czy wymiana majątku trwałego.
Zagadnienie finansowania przedsięwzięcia inwestycyjnego • Zagadnienie finansowania przedsięwzięcia inwestycyjnego można scharakteryzować jako problem alokacji określonego zasobu środków (w tym przypadku wyrażonego w jednostkach pieniężnych) pomiędzy poszczególne zadania (programy inwestycyjne), tak aby osiągnąć maksymalny efekt. • Przyjmuje się przy tym następujące założenia: • Efekt zastosowania każdego z programów inwestycyjnych nie zależy od tego, czy zostały zastosowane równocześnie inne programy inwestycyjne. • Zwrot nakładów inwestycyjnych jest mierzony w tych samych jednostkach. • Nakłady inwestycyjne są liczbami całkowitymi. • Funkcje określające związki między nakładami inwestycyjnymi a wysokością zwrotu z nakładów są niemalejące.
Przykład zagadnienia alokacji inwestycji • Przedsiębiorca Jan Rogala, posiadający kredyt inwestycyjny w wysokości 6 min złotych oraz halę produkcyjną w Rzeszowie, postanowił zainstalować nowoczesne linie piekarnicze: • francuską (F), • szwedzką (S) • oraz polską (P). • Dobowe zdolności produkcyjne pieczywa (w tonach) w zależności od wysokości nakładów inwestycyjnych przeznaczonych na zainstalowanie linii produkcyjnej danego typu, przedstawiono w poniższej tabeli: Analiza rynku wykazała, że każda z linii produkcyjnych, pozwala uzyskiwać jednakowe zyski w przeliczeniu na 1 t pieczywa. Jan Rogala musi więc w tym przypadku podjąć decyzję dotyczącą podziału kredytu pomiędzy poszczególne programy inwestycyjne, tak aby piekarnia osiągnęła maksymalną, dobową zdolność produkcyjną.
Rozwiązanie • Powyższy problem, należący do kategorii programowania dynamicznego, można rozwiązać za pomocą procedury opisanej w kilku etapach.
KROK 1. • Załóżmy, że jedynym możliwym rozwiązaniem jest zakupienie polskiej linii produkcyjnej i zadajmy sobie pytanie dotyczące uzyskanej w ten sposób dobowej zdolności produkcyjnej w zależności od zainwestowanej kwoty. • W tym przypadku, jedynym sensownym rozwiązaniem jest zainwestowanie 6 min zł w polską linię produkcyjną w celu osiągnięcia zdolności produkcyjnej 16 t pieczywa na dobę. Rezultat ten zapiszemy następująco:P(6) = 16,co oznacza, że 6 min zł zainwestowane w polską linię produkcyjną zapewnia produkcję 16 t pieczywa na dobę.
KROK 2. • Załóżmy, że dostępne są dwa typy linii produkcyjnych P oraz S i zadajmy sobie następujące pytanie: jak należy podzielić kredyt inwestycyjny pomiędzy te dwa programy, aby uzyskać maksymalną dobową zdolność produkcyjną?
W tym przypadku możliwe jest siedem wariantów podziału 6 min kredytu, które dają następujące dobowe zdolności produkcyjne:P(6) + S(0)= 16 + 0= 16,P(5) + S(l)= 15 + 5 = 20,P(4) + S(2)= 15 + 8 = 23,P(3) + S(3)= 15 + 11 =26,P(2) + S(4)= 15 + 14 = 29,P(1) + S(5)= 4+17 = 21,P(0) + S(6) = 0+18 = 18.W powyższej sytuacji należy więc zainwestować 2 min w polską linię oraz 4 min w szwedzką linię, osiągając w ten sposób 29 t pieczywa na dobę, tzn.P(2) + S(4) = 29.
KROK 3. • Spróbujmy obecnie znaleźć optymalny podział kredytu pomiędzy linię P oraz S przy malejącej kwocie nakładów inwestycyjnych: • 5 min na linie P oraz SP(5) + S(O) = 15 + 0 = 15, P(4) + S(1) = 15 + 5 = 20, P(3) + S(2) = 15 + 8 = 23, P(2) + S(3) = 15 + 11 = 26,P(1) + S(4) = 4 + 14 = 18, P(0) + S(5) = 0 + 17 = 17.W przypadku dysponowania kwotą 5 min zł na linię P oraz S należy zainwestować 2 min w linię P oraz 3 min w linię S, osiągając 26 t pieczywa dobę. Rezultat zapiszemy w następujący sposób:P(2) + S(3) = 26.
b) 4 min zł na linie P oraz SP(4) + S(0) = 15 + 0 = 15,P(3) + S(1) = 15 + 5 = 20,P(2) + S(2) = 15 + 8 = 23,P(1) + S(3) = 4 + 11 = 15,P(0) + S(4) = 0 + 14 = 14.W przypadku dysponowania kwotą 4 min zł należy zainwestować po 2 min zł w linię P oraz S:P(2) + S(2) = 23.
c) 3 min zł na linie P oraz S:P(3) + S(0) = 15 + 0 = 15. P(2) + S(1)= 15 + 5 = 20, P(1) + S(2) = 4 + 8 = 12, P(0) + S(3) = 0 + 11 = 11.W tym przypadku należy zainwestować 2 min w linię P oraz 1 min w linię S:P(2) + S(1) = 20.
d) 2 min zł na linie P oraz SP(2) + S(0) = 15 + 0 = 15,P(1) + S(1) = 4 + 5 = 9, P(0) + S(2) = 0 + 8 = 8.W tym przypadku należy zainwestować 2 min zł w linię polską (P):P(2) + S(0)= 15.
e) 1 min zł na linie P oraz SP(1) + S(0) = 4 + 0 = 4,P(0) + S(1) = 0 + 5 = 5.W tym przypadku należy zainwestować 1 min zł w linię szwedzką (S):P(0) + S(1) = 5.A zatem, w kroku 3 określiliśmy optymalne kombinacje nakładów na linie P oraz S.
KROK 4. Konsekwentnie, w kroku 4 wystarczy rozpatrzyć wszystkie kombinacje podziału 6 min zł kredytu pomiędzy linię F oraz linie P + S. Zdolności produkcyjne w zależności od nakładów kredytowych przedstawiono w poniższej tabeli:
Jak łatwo zauważyć możliwych jest siedem wariantów podziału 6 min kredytu pomiędzy linie F oraz linie P + S, dających następujące zdolności produkcyjne:F(6) + (P + S)(0) = 20 + 0 = 20, F(5) + (P + S)(1) = 15+5 = 20, F(4) + (P + S)(2) = 12 + 15 = 27, F(3) + (P + S)(3) = 12 + 20 = 32, F(2) + (P + S)(4) = 12 + 23 = 35,F(1) + (P + S)(5)= 6 + 26 = 32, F(0) + (P + S)(6) = 0 + 29 = 29.Tak więc maksymalną zdolność produkcyjną piekarni można uzyskać inwestując 2 min w linię francuską (F) oraz 4 min zł w linię P i S.
Aby uzyskać rozwiązanie ostateczne, wystarczy odszukać w kroku 3 optymalny sposób podziału tych 4 min zł pomiędzy linię P oraz S (krok 3b). W rezultacie otrzymujemy rozwiązanie: 2 min zł na linię F, 2 min zł na linię P oraz 2 min ma linię S, co zapewnia 35 t pieczywa na dobę.
Zagadnienie dyliżansu • Nazwa zagadnienia pochodzi od pewnego kupca amerykańskiego, który transportował towary ze Wschodniego Wybrzeża USA na Wybrzeże Zachodnie, używając w tym celu różnych połączeń realizowanych za pomocą dyliżansu. • Oczywiście chodziło o dobór takich połączeń, aby transport odbywał się w miarę bezpiecznie, a miarą bezpieczeństwa na danej linii były stawki pobierane przez towarzystwo ubezpieczeniowe. • Rozwiązanie problemu wymagało podzielenia całej trasy na etapy, a w każdym z etapów określenia miast etapowych oraz wszystkich możliwych połączeń pomiędzy nimi.
Przykład problemu dyliżansu Firma transportowa EuroTrans, ustalając nowe trasy przejazdu swych ciężarówek z Polski do Hiszpanii, podzieliła całą trasę na pięć etapów. W każdym z etapów wyznaczono po kilka miast, przez które przejeżdżać będą ciężarówki. Problem polega na znalezieniu najkrótszej drogi przejazdu pomiędzy Polską a Hiszpanią. Odległości drogowe pomiędzy miastami (w km) zaznaczono na poniższym rysunku:
KROK 1. Załóżmy, że ciężarówki dotarły do etapu 4. W tej sytuacji odległość od celu wynosi:d7,9 = 120 km lub d8,9 = 130 km,w zależności od tego, w którym z miast w etapie 4 zatrzymano się na postój.
KROK 2. Cofnijmy się o jeden etap. Odległość miast od celu w etapie 3 wynosi: d4,7 + d7,9 = 200 + 120 = 320, d4,8 + d8,9 = 250 + 130 = 380. Tak więc z miasta 4 do 9 należy wybrać drogę o długości d4,7,9 = 320. Podobnie: d5,7 + d7,9 = 200 + 120 = 320, d5,8 + d8,9 = 180 + 130 = 310, a więc z miasta 5 do 9 należy wybrać drogę o długości d5,8,9 = 310. Następnie: d6,7 + d7,9 = 150 + 120 = 270,d6,8 + d8,9 = 110 + 130 = 240,a więc z miasta 6 do 9 należy wybrać drogę o długości d6,8,9 = 240.
KROK 3. Powtórzmy całe postępowanie biorąc za punkt wyjścia etap 2: d2,4 + d4,9 = 150 + 320 = 470, d2,5 + d5,9 = 80 + 310 = 390, d2,6 + d6,9 = 120 + 240 = 360,a więc z miasta 2 do 9 należy wybrać drogę:2-6-8-9o długości 360 km. Podobnied3,4 + d4,9 = 150 + 320 = 470, d3,5 + d4,9 = 130 + 310 = 440, d3,6 + d4,9 = 190 + 240 = 430,a więc z miasta 3 do 9 należy wybrać drogę:3-6-8-9o długości 430 km.
KROK 4. Dotarliśmy do punktu startowego, w którym rozpatrujemy sposób dotarcia do celu z miasta 1 przez miasta 2 lub 3:d1,2 + d2,9 = 100 + 360 = 460,d1,3 + d3,9 = 80 + 430 = 510, a więc z miasta 1 do 9 należy wybrać drogę:1-2-6-8-9o długości 460 km.