Modele i narzędzia optymalizacji w systemach informatycznych zarządzania



Podobne dokumenty
Schemat programowania dynamicznego (ang. dynamic programming)

Programowanie dynamiczne i algorytmy zachłanne

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

Optymalizacja. Algorytmy dokładne

Programowanie liniowe

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Programowanie nieliniowe

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

ZAGADNIENIE TRANSPORTOWE

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Wyznaczanie optymalnej trasy problem komiwojażera

Programowanie liniowe. Tadeusz Trzaskalik

Programowanie dynamiczne. Tadeusz Trzaskalik

ZAGADNIENIE TRANSPORTOWE

ZAGADNIENIE TRANSPORTOWE(ZT)

BADANIA OPERACYJNE i teoria optymalizacji. Prowadzący: dr Tomasz Pisula Katedra Metod Ilościowych

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Klasyczne zagadnienie przydziału

Ćwiczenia laboratoryjne - 7. Problem (diety) mieszanek w hutnictwie programowanie liniowe. Logistyka w Hutnictwie Ćw. L. 7

Algorytmy i struktury danych.

Programowanie sieciowe. Tadeusz Trzaskalik

WYKORZYSTANIE NARZĘDZIA Solver DO ROZWIĄZYWANIA ZAGADNIEŃ TRANSPORTOWYCH Z KRYTERIUM KOSZTÓW

Programowanie dynamiczne cz. 2

Opis przedmiotu. Karta przedmiotu - Badania operacyjne Katalog ECTS Politechniki Warszawskiej

Opis przedmiotu. Karta przedmiotu - Badania operacyjne Katalog ECTS Politechniki Warszawskiej

Opis przedmiotu: Badania operacyjne

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Elementy Modelowania Matematycznego Wykład 7 Programowanie nieliniowe i całkowitoliczbowe

Zagadnienie transportowe

Algorytmy i Struktury Danych.

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Rozdział 6 PROGRAMOWANIE WYPUKŁE I KWADRATOWE

Badania Operacyjne Ćwiczenia nr 5 (Materiały)

Politechnika Wrocławska, Wydział Informatyki i Zarządzania. Optymalizacja

ZAGADNIENIA PROGRAMOWANIA LINIOWEGO

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Rozdział 9 PROGRAMOWANIE DYNAMICZNE

Definicja problemu programowania matematycznego

Przykład wykorzystania dodatku SOLVER 1 w arkuszu Excel do rozwiązywania zadań programowania matematycznego

Algorytmy genetyczne

Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: Badania operacyjne

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Ekonometria - ćwiczenia 10

OPTYMALIZACJA W LOGISTYCE

Modele całkowitoliczbowe zagadnienia komiwojażera (TSP)

Metody Ilościowe w Socjologii

Zagadnienie transportowe (badania operacyjne) Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie

Optymalizacja. Algorytmy dokładne

OPTYMALIZACJA DYSKRETNA

Programowanie celowe #1

ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIACH WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI

Elementy Modelowania Matematycznego

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Badania operacyjne Operation research. Transport I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Temat: Algorytmy zachłanne

WŁASNOŚCI FUNKCJI. Poziom podstawowy

Temat 9. Zabłocone miasto Minimalne drzewa rozpinające

BADANIA OPERACYJNE I TEORIE OPTYMALIZACJI. Zagadnienie transportowe

Algorytmy i Struktury Danych

ZASTOSOWANIE ZASADY MAKSIMUM PONTRIAGINA DO ZAGADNIENIA

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

Procesy stochastyczne WYKŁAD 2-3. Łańcuchy Markowa. Łańcuchy Markowa to procesy "bez pamięci" w których czas i stany są zbiorami dyskretnymi.

OPTYMALIZACJA W LOGISTYCE

Projektowanie i analiza algorytmów

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Algorytmika Problemów Trudnych

Aproksymacja funkcji a regresja symboliczna

WYKORZYSTANIE NARZĘDZIA Solver DO ROZWIĄZYWANIA ZAGADNIENIA Problem przydziału

Badania operacyjne. Dr hab. inż. Adam Kasperski, prof. PWr. Pokój 509, budynek B4 Materiały do zajęć dostępne na stronie:

Modelowanie sytuacji konfliktowych, w których występują dwie antagonistyczne strony.

Rozwiązywanie zależności rekurencyjnych metodą równania charakterystycznego

ANALIZA SIECIOWA PROJEKTÓW REALIZACJI

A. Kasperski, M. Kulej, Badania operacyjne, Wykład 4, Zagadnienie transportowe1

Wielokryteriowa optymalizacja liniowa

Programowanie dynamiczne

Matematyczne Podstawy Informatyki

Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE

INSTRUKCJA DO ĆWICZENIA NR 1

PRZEWODNIK PO PRZEDMIOCIE

) a j x j b; x j binarne (j N) całkowitoliczbowe; przyjmujemy (bez straty ogólności): c j > 0, 0 <a j b (j N), P n

Programowanie dynamiczne

TEORETYCZNE PODSTAWY INFORMATYKI

Teoretyczne podstawy informatyki

Metody Optymalizacji. Wstęp. Programowanie matematyczne. Dr hab. inż. Maciej Komosiński, mgr Agnieszka Mensfelt

Spis treści WSTĘP... 9

Instytut Konstrukcji i Eksploatacji Maszyn Katedra Logistyki i Systemów Transportowych. Badania operacyjne. Dr inż.

Wykład 5. Metoda eliminacji Gaussa

Standardowe zadanie programowania liniowego. Gliwice 1

Rozwiązanie Ad 1. Model zadania jest następujący:

Iwona Konarzewska Programowanie celowe - wprowadzenie. Katedra Badań Operacyjnych UŁ

INTERPOLACJA I APROKSYMACJA FUNKCJI

Programowanie liniowe

Procesy stochastyczne WYKŁAD 2-3. Łańcuchy Markowa. Łańcuchy Markowa to procesy "bez pamięci" w których czas i stany są zbiorami dyskretnymi.

Algebra liniowa. Macierze i układy równań liniowych

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Optymalizacja procesów technologicznych przy zastosowaniu programowania liniowego

Rozdział 2: Metoda największej wiarygodności i nieliniowa metoda najmniejszych kwadratów

Badania operacyjne egzamin

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Transkrypt:

Politechnika Poznańska Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Joanna Józefowska POZNAŃ 2010/11

Spis treści Rozdział 1. Metoda programowania dynamicznego........... 5 1.1. Przykład.................................. 5 1.1.1. Analiza sytuacji decyzyjnej................... 6 1.1.2. Budowa modelu matematycznego................ 6 1.1.3. Rozwiązanie zadania decyzyjnego................ 6 1.1.. Interpretacja rozwiązania.................... 8 1.2. Metoda programowania dynamicznego................. 8 1.2.1. Ogólna metoda rozwiązania................... 9 Bibliografia.................................... 11

Rozdział 1 Metoda programowania dynamicznego Programowanie dynamiczne jest metodą rozwiązywania zadań optymalizacyjnych, które na mocy pewnych własności, można sformułować jako poszukiwanie ciągu decyzji. Metoda ta ma zastosowanie zarówno dla problemów dyskretnych, jak i ciągłych [1]. W tym rozdziale przedstawimy najprostszy typ problemów, do których można zastosować programowanie dynamiczne. Będą to problemy dyskretne z funkcją celu będącą sumą lub iloczynem. 1.1. Przykład Komiwojażer podróżujący po Dzikim Zachodzie (około 100 lat temu) miał przejechać pewna trasę pociągiem. Miał do wyboru kilka połączeń, wiodących przez różne miasta. Komiwojażerowi bardzo zależało na bezpiecznej podróży. Dowiedział się, że Towarzystwo Ubezpieczeniowe oferuje polisy ubezpieczeniowe na wypadek napadu. Na różnych odcinkach drogi koszt polisy był różny. Komiwojażer szybko doszedł do wniosku, że polisy są tańsze na bezpieczniejszych trasach, wobec tego najbezpieczniejszy przejazd, to będzie przejazd minimalizujący koszty ubezpieczenia. Graf na rys. 1.1 przedstawia możliwe do wyboru trasy przejazdu z miejsca 1 do miejsca 10. Ceny polis na trasie od punktu i do punktu j (oznaczona c ij ) są przedstawione jako wagi na łukach w grafie. 1 2 2 3 6 3 2 7 5 6 6 3 1 8 3 10 3 1 1 9 5 7 2 Rysunek 1.1. Koszty podróży komiwojażera

6 Rozdział 1. Metoda programowania dynamicznego 1.1.1. Analiza sytuacji decyzyjnej W pierwszej chwili komiwojażer postanowił wyruszyć do miasta 2, gdyż na tym odcinku koszt polisy był najmniejszy, a potem na każdym etapie wybierać kolejne miasto, do którego ubezpieczenie jest najtańsze. W ten sposób zaplanował trasę 1-2-6-9-10. Łączny koszt ubezpieczenia na tej trasie to 13$. Po chwili zastanowienia zauważył jednak, że istnieje tańsze rozwiązanie, mianowicie łączny koszt ubezpieczenia na trasie 1-3-5-8-10 wynosi 11$. Komiwojażer zaczął się zastanawiać, czy istnieje inna trasa, o jeszcze niższym koszcie ubezpieczenia. Analiza wszystkich możliwości wymagałaby obliczenia 3*3*2=18 sum po składniki, czyli wykonania 72 działań. W wypadku tak małej sieci połączeń nie stanowi to dużego problemu, gdyby jednak analiza dotyczyła np. obecnej sieci połączeń lotniczych w USA, to rozmiar problemu mógłby przekroczyć możliwości średniej klasy komputera. 1.1.2. Budowa modelu matematycznego Problem przed jakim stanął komiwojażer można modelować na kilka sposobów, np. jako problem poszukiwania najkrótszej ścieżki w grafie. Poniżej zaproponujemy nieco bardziej ogólne podejście. Nasz problem polega na minimalizacji kosztów ubezpieczenia podróży, czyli ma postać: przy ograniczeniach: zminimalizować z = c(i, j)x ij i=1 j S n+1 x ij = 1, i S n, n = 0, 1, 2, 3 x ij = x ij, n = 0, 1, 2, 3 i S n j S n+1 gdzie zmienna x ij przyjmuje wartość 1, gdy komiwojażer włącza odcinek (i, j) do trasy swojej podróży i wartość 0 w przeciwnym wypadku. Ponadto S n oznacza zbiór miast na etapie n (czyli takich, do których można dojechać z miasta 1 w n odcinkach, np. S 2 = {5, 6, 7}), a c(i, j) koszt polisy na odcinku (i, j). Otrzymaliśmy problem programowania liniowego całkowitoliczbowego. W ogólności rozwiązanie takiego problemu jest trudne. Możemy jednak wykorzystać pewne własności tego szczególnego problemu i rozwiązać go metodą programowania dynamicznego. 1.1.3. Rozwiązanie zadania decyzyjnego Komiwojażer podróżuje odcinkami. Powiemy, że komiwojażer znajduje się na n-tym etapie podróży, jeżeli pokonał już n odcinków trasy, gdzie n = 1, 2, 3,. Każda podróż składa się z odcinków - etapów. Na każdym etapie komiwojażer podejmuje decyzję, jaki będzie kolejny cel jego podróży. Niech s n oznacza numer miasta, w którym komiwojażer znalazł się na n-tym etapie podróży. Zbiór miast, do których można dotrzeć z miasta 1 pokonując n odcinków będzie zbiorem stanów na etapie n. Łatwo zauważyć, że s 0 = 1 oraz, że s = 10. Oznaczmy przez x n+1 numer miasta, do którego

1.1. Przykład 7 komiwojażer zdecydował pojechać, czyli cel podróży zaczynającej się w s n. Zatem x n+1 jest decyzją komiwojażera podjętą na etapie n. Zauważmy, że x n+1 = s n+1. Koszt polisy na odcinku (s n, x n+1 ) oznaczmy przez c(s n, x n+1 ). Zauważmy, że gdy komiwojażer znajdzie się na etapie 3, to nie ma już wyboru i musi jechać do miasta 10. Jeżeli na etapie 3 znalazł sie w mieście 8, to polisa na ostatnim odcinku będzie kosztowała 3$, a jeżeli w mieście 9, to $. Powyższą obserwację zapisano w tablicy 1.1. Tablica 1.1. Koszt decyzji na etapie n = 3 Stan s 3 Koszt decyzji f 3(s 3, 10) f3 (s 3) Decyzja x 8 3 3 10 9 10 Na etapie drugim w każdym stanie możliwe są dwie decyzje. Jednak wybór decyzji przesądza o wyborze i koszcie trasy do końca podróży. Na przykład, jeżeli komiwojażer będąc w mieście 5 wybierze podróż do miasta 8, to można obliczyć koszt podróży z 5 do 10 przez 8 jako: 1+3=. Obliczenie kosztów pozostałych decyzji na tym etapie przedstawiono w tablicy 1.2. Tablica 1.2. Koszt decyzji na etapie n = 2 Stan s 2 Koszt decyzji f2 Decyzja (s f 2) 2(s 2, 8) f 2(s 2, 9) x 3 5 8 8 6 9 7 7 9 7 6 7 6 8 Natomiast na etapie 1 komiwojażer ma do wyboru 3 decyzje. Jeżeli dokona wyboru, to z tablicy 1.2 może odczytać koszt najtańszej polisy z wybranego miasta do końca podróży. Na przykład, jeżeli z miasta 2 komiwojażer zdecyduje się jechać do miasta 5, to koszt najtańszej polisy na trasie od 2 do 10 przez 5 obliczymy jako sumę kosztu ubezpieczenia na trasie (2,5) oraz najmniejszego kosztu ubezpieczenia na trasie z miasta 5 do 10, który można odczytać z tablicy 1.2, czyli: 7+=11. Obliczenia dla pozostałych stanów i decyzji na tym etapie przedstawiono w tablicy 1.3. Tablica 1.3. Koszt decyzji na etapie n = 1 Stan s 1 Koszt decyzji f2 Decyzja (s f 1) 2(s 1, 5) f 2(s 1, 6) f 2(s 1, 7) x 2 2 11 11 12 11 5 lub 6 3 7 9 10 7 5 8 8 11 8 5 lub 6 Na etapie zero, czyli na początku podróży w mieście 1 są do wyboru 3 decyzje, ale tylko jeden stan. Koszty decyzji na tym etapie zawiera tablica 1.. Uogólniając: dla każdego miasta możemy wyznaczyć najmniejszy łączny koszt polisy na trasie rozpoczynającej się w tym mieście i kończącej w mieście 10, przy założeniu, że w mieście s n została podjęta decyzja x n+1. Koszt ten oznaczymy przez f n (s n, x n+1 ). Znajdując minimum po wszystkich miastach, do których można dotrzeć bezpośrednio z miasta s n otrzymamy najmniejszy koszt polisy na trasie prowadzącej z s n do celu podroży, który oznaczamy jako fn(s n ). Konsekwentnie, f0 (1) będzie najmniejszym kosztem polisy na całej trasie. Problem polega zatem na znalezieniu minimalnej wartości funkcji

8 Rozdział 1. Metoda programowania dynamicznego Tablica 1.. Koszt decyzji na etapie n = 0 Koszt decyzji Stan s 0 f2 Decyzja (s f 0) 2(s 0, 2) f 2(s 0, 3) f 2(s 0, ) x 1 1 13 11 11 11 3 lub przy ograniczeniach: z = f 0 (1) f n(s n ) = min x n+1 {c(s n, x n+1 ) + f n+1(x n+1 )}, n = 0, 1, 2, 3 f (10) = 0 s 0 = 1, s = 10 Problem ten można rozwiązać od końca, jak pokazano powyżej dzięki temu, że optymalna decyzja w stanie s n pozostaje optymalna niezależnie od tego, jakie decyzje poprzedziły ją na wcześniejszych etapach, pod warunkiem, że doprowadziły do stanu s n. 1.1.. Interpretacja rozwiązania Najniższy możliwy koszt podróży wynosi 11$. Można go osiągnąć na kilka sposobów. Komiwojażer może na pierwszym etapie wybrać miasto 3 lub. Jeżeli znajdzie się w mieście 3, to kolejnym odwiedzonym miastem powinno być 5 lub 6. Jeżeli wybierze, to na następnym etapie powinien sie udać do miasta 5. Na etapie 2 będąc w mieście 5 kieruje się do 8, a będąc w mieście 6 jako kolejny cel wybiera miasto 9. Otrzymujemy zatem następujące trasy: 1-3-5-8-10, 1-3-6-9-10 oraz 1--5-8-10. Na każdej z tych tras koszt polisy wynosi 11$. 1.2. Metoda programowania dynamicznego Metoda programowania dynamicznego została opracowana przez Richarda Bellmana w połowie dwudziestego wieku. Zasadniczym krokiem w skonstruowaniu algorytmu programowania liniowego jest sformułowanie funkcji rekurencyjnej, która wyraża optymalną wartość funkcji celu danego problemu jako funkcję (najczęściej sumę lub iloczyn) optymalnych wartości funkcji celu podproblemów o mniejszych rozmiarach. Procedura rozwiązania polega na znalezieniu optymalnej wartości funkcji celu całego zagadnienia przez rozwiązanie podproblemów od najmniejszego do największego. Metoda programowania dynamicznego ma zastosowanie do rozwiązywania tzw. problemów bez pamięci, spełniających własność Markowa (Własność 1.1). Własność 1.1 (Własność Markowa) Mówimy, że wieloetapowy proces decyzyjny ma własność Markowa, jeżeli po dowolnej liczbie decyzji, np. k, wpływ pozostałych etapów procesu decyzyjnego na wartość funkcji celu f zależy tylko od stanu procesu przy końcu k-tego etapu i od decyzji następnych.

1.2. Metoda programowania dynamicznego 9 Bellman sformułował własność 1.2, nazywaną zasadą optymalności Bellmana, która uzasadnia poprawność stosowania procedury rekurencyjnej do rozwiązywania problemów z własnością Markowa. Własność 1.2 (Zasada optymalności Bellmana) Dla wieloetapowego procesu decyzyjnego z własnością Markowa strategia optymalna ma tę własność, że jakikolwiek byłby stan początkowy i decyzja początkowa, pozostałe decyzje muszą tworzyć strategię optymalną z punktu widzenia stanu wynikłego z pierwszej decyzji. 1.2.1. Ogólna metoda rozwiązania Posługując się zasadą optymalności można sprowadzić zadanie znalezienia minimum funkcji N zmiennych do rozwiązania ciągu N zadań, polegających na znalezieniu minimum funkcji jednej zmiennej. Metodę programowania dynamicznego można zastosować, jeżeli spełnione są następujące założenia: problem może być podzielony na etapy, na każdym etapie wymagane jest podjęcie decyzji, z każdym etapem związana jest pewna liczba stanów, skutkiem decyzji podjętej na każdym etapie jest transformacja bieżącego stanu w stan związany z następnym etapem, w danym stanie optymalna decyzja dla pozostałych etapów jest niezależna od decyzji podjętych na poprzednich etapach. Przyjmijmy następujące oznaczenia: N - liczba stanów, s n - stan na etapie n (n = 1,..., N), x n+1 - decyzja na etapie n (n = 1,..., N), f n (s n, x n+1 ) - najlepsza wartość maksymalizowanej (minimalizowanej) funkcji celu dla podproblemu obejmującego stany s n, s n+1,..., s N, jeżeli na etapie n w stanie s n podjęto decyzję x n+1, f n(s) - maksymalna (minimalna) wartość f n (s, x n+1 ) po wszystkich możliwych wartościach x n+1 (decyzjach). Podjęcie decyzji x n+1 w stanie s n na etapie n jednoznacznie określa stan s n+1, w jakim znajdzie sie proces na etapie (n + 1). Zależności te można zilustrować graficznie (rys. 1.2). Sposób postępowania omówiono poniżej. Metoda programowania dynamicznego Krok 1. Znaleźć optymalną decyzję dla wszystkich stanów na końcowym etapie. Krok 2. Znaleźć zależność rekurencyjną opisującą optymalną decyzję dla każdego stanu na etapie n, na podstawie informacji o decyzjach optymalnych dla każdego stanu na etapie (n + 1). Krok 3. Posługując się zależnością rekurencyjną postępować od końca do początku, etap po etapie, znajdując na każdym z nich optymalną decyzję (ciąg decyzji) aż do znalezienia optymalnego ciągu decyzji dla stanu początkowego.

10 Rozdział 1. Metoda programowania dynamicznego Etap n Etap n + 1 s n+1...... s n f n(s n ) = min xn {f n (s n, x n+1 )} x n+1 x n+1 f n+1 (s n+1 ). s n+1... f n+1 (s n+1 ) Rysunek 1.2. Przejście ze stanu na etapie n do stanu na etapie n + 1

Bibliografia [1] J.G. Ecker, M. Kupferschmid. Introduction to Operations Research. John Wiley & Sons, New York, 1988.