Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Badania operacyjne, metody optymalizacji część 3, Notatki z Ekonomia

Notatki z ekonomii przedstawiające zagadnienia z zakresu badań operacyjnych jak optymalizacja dyskretna, metaheurystyki, metoda programowania dynamicznego.

Typologia: Notatki

2012/2013

Załadowany 13.09.2013

Osholom
Osholom 🇵🇱

4.5

(35)

304 dokumenty

Podgląd częściowego tekstu

Pobierz Badania operacyjne, metody optymalizacji część 3 i więcej Notatki w PDF z Ekonomia tylko na Docsity!

Do realizacji opisanego schematu metody podziału i ograniczeń jest konieczne skonkretyzowanie  zasady podziału  wyznaczania dolnych ograniczeń  znajdowania rozwiązania Należy zwrócić uwagę na sposób realizacji zasady wyboru podzbioru do podziału (krok 2). Zamiast sprawdzania dolnych ograniczeń wszystkich nie podzielonych podzbiorów, można ograniczyć się do podzbiorów wynikających z ostatniego podziału. Zaletą pierwszego sposobu (na ogół) jest mniejsza liczba podziałów, potrzebny jest jednak większy obszar pamięci do przechowywania informacji o wszystkich nie podzielonych podzbiorach. Drugi sposób to na ogół większa liczba podziałów lecz mniejsza zajętość pamięci. 5.3 Przykład Dany jest zbiór „m” różnych wyrobów, z których każdy może być produkowany na jednym z „m” stanowisk produkcyjnych. Każde ze stanowisk ma różną wydajność przy produkcji każdego z wyrobów. Wydajność i-tego stanowiska przy produkcji j-tego wyrobu jest równa cij, a ponadto każde ze stanowisk ma produkować dokładnie jeden wyrób i każdy z wyrobów ma być produkowany na dokładnie jednym stanowisku. Należy przydzielić wyroby do stanowisk, by łączna wydajność była maksymalizowana. Problem ten nazywa się problemem przydziału i można zapisać go formalnie w sposób następujący:

0 wprzeciwnymrazie

1 zadaniejwykonywaneprzezi-tąosobę

max

1 1 1 1 ij m j ij m i ij m i m j ijij

gdzie x

x

ogr x

z cx

Problem przydziału jest szczególnym przypadkiem problemu transportowego WYRÓB / STANOWISKO 1 2 3 4 A 2 10 9 7 B 15 4 14 8 C 13 14 16 11 D 4 15 13 9 5.4 Problem komiwojażera - Algorytm Little’a Metoda podziału i ograniczeń może być zastosowana dla rozwiązania problemu komiwojażera. Algorytm został podany przez Little’a. Zbiór rozwiązań (wierzchołek w drzewie poszukiwań) będziemy rozbijać na dwa podzbiory:  zawierający wyróżniony łuk <i,j>  nie zawierający łuku <i,j> Podział będzie dokonywany z pewną zasadą heurystyczną, opisaną poniżej. Po wykonaniu podziału liczone są kresy dolne na drodze redukcji macierzy kosztów przejść. Podzbiory rozwiązań mające wartości kresów dolnych większe lub równe długości najkrótszego dotychczas znalezionego rozwiązania będą pomijane (ograniczamy w ten sposób przestrzeń poszukiwań). Przykład: Dana jest macierz kosztów przejść „C” („ ” oznacza koszt o nieskończonej wartości):

Macierz C

Niech G^0 oznacza początkowy zbiór rozwiązań. W celu wyznaczenia kresu dolnego dla G^0 dokonujemy redukcji macierzy C  w każdym wierszu znajdujemy element minimalny i odejmujemy go od wszystkich elementów danego wiersza  ten sam proces wykonujemy dla kolumn. Po wykonaniu redukcji macierzy, w każdym wierszu i każdej kolumnie powinien znaleźć się element zerowy. Suma wielkości, które odjęliśmy (stopień redukcji macierzy R) dodawana jest do dotychczasowej wartości dolnego ograniczenia (wartość początkowa dolnego ograniczenia = 0): Macierz C^0

- 2 R=

Po redukcji: (dolne ograniczenie = 16). Kandydatami do wykonania podziału są następujące odcinki (mające w tej zredukowanej macierzy koszt równy 0): <1,2>,<2,4>,<3,2>,<4,1>,<4,3>. Wybieramy ten z nich, który posiada najwyższy optymistyczny koszt wyłączenia. Jeżeli wyłączymy odcinek <i,j>, to z miasta „i” musimy wyruszyć do miasta innego niż „j”, a do miasta „j” musimy przybyć z miasta różnego od „i”. Rozważmy dla przykładu odcinek <2,4> Jeżeli wyłączymy ten odcinek, to z miasta 2 musimy wyruszyć do miasta różnego od 4, a minimalny koszt z tym związany jest równy 1 (minimalna wartość w wierszu 2 różna od tej na pozycji 2,4). Z kolei do miasta 4 trzeba dotrzeć z miasta różnego od 2 i minimalny koszt z tym związany jest równy 1 (minimalna wartość w kolumnie 4 różna od tej na pozycji 2,4). Suma tych wartości (2) jest optymistycznym kosztem który na pewno musimy ponieść wyłączając odcinek <2,4>. Wartości tych kosztów podane są w postaci indeksów przy elementach zerowych: macier z C^0

- 2 R=1 6

W naszym wypadku aż trzy odcinki mają optymistyczny koszt wyłączenia równy 2. Arbitralnie wybieramy odcinek <2,4> tworząc zbiory marszrut G^1 i G^2 zawierające lub nie zawierające tego odcinka. Weźmy pod uwagę zbiór G^1. Tworzymy macierz C^1 usuwając z macierzy C^0 wiersz 2 i kolumnę 4 oraz przyjmując c 42 = (blokujemy drogę przeciwną). Zmodyfikowana i zredukowana macierz C^1 znajduje się poniżej: Macierz C^1

G^0 (16)

Weźmy pod uwagę zbiór G^5. Tworzymy macierz C^5 usuwając z macierzy C^2 wiersz 1 i kolumnę 4. Ponadto dokonujemy podstawienia c 41 =. Zmodyfikowana i zredukowana macierz C^5 znajduje się poniżej: macier z C^5

- 1 R=

Weźmy pod uwagę zbiór G^6. Tworzymy macierz C^6 z macierzy C^2 przyjmując c 14 =. Zmodyfikowana i zredukowana macierz C^6 znajduje się poniżej: macier z C^2

- 1 R=

Do dalszego podziału wybieramy wierzchołek o najmniejszej wartości kresu dolnego G^3. Z tablicy C^3 wynika, że tylko odcinki <1,3> oraz <4,1> mogą być rozpatrywane (zerowy koszt, maksymalna optymistyczna wartość kosztu wyłączenia ). Arbitralnie wybieramy <1,3> tworząc zbiory G^7 i G^8. Weźmy pod uwagę zbiór G^7. Tworzymy macierz C^7 usuwając z macierzy C^3 wiersz 1 i kolumnę 3. Macierz redukuje się do jednego elementu. Zmodyfikowana i zredukowana macierz C^7 znajduje się poniżej: Macierz C^7

R=

UWAGA – z tej macierzy wynika, że dołączając do wierzchołka G^7 jedyną możliwą marszrutę <4,1> otrzymujemy rozwiązanie końcowe, dla którego wartość funkcji kosztu równa się kresowi dolnemu równemu 19. Oznaczmy to rozwiązanie przez wierzchołek G^9. Weźmy pod uwagę zbiór G^8. Tworzymy macierz C^8 z macierzy C^3. Podstawiamy za c 13 =. Zmodyfikowana macierz C^8 znajduje się poniżej: UWAGA – koszt redukcji wynosi (patrz wiersz 1). Kres dolny byłby równy także. Oznacza to, że wierzchołek ten nie będzie dalej dzielony – można dowieść, że nie odpowiada mu żadna marszruta. Pomijamy więc w dalszych rozważaniach ten wierzchołek.

G^1 (16)

G^2 (18)

G^3 (19)

G^4 (21)

G^0 (16)

G^5 (19)

G^6 (19)

Macierz C^8

R =

Podział pozostałych zbiorów nie może dać rozwiązania lepszego. Otrzymane rozwiązanie jest optymalne, choć niekoniecznie jedyne. W celu stwierdzenia czy istnieją inne rozwiązania, należałoby dokonać podziału zbiorów G^5 i G^6.

G^1 (16)

G^2 (18)

G^3 (19)

G^4 (21)

G^0 (16)

G^5 (19)

G^6 (19)

G^7 (19)

G^8 (*)

G^9 (19)

metoda symulowanego wyżarzania (ang. simulated annealing) 6.3 Algorytm Tabu (ang. Tabu Search - TS) Główną cechą tego algorytmu jest możliwość wybrania rozwiązania pogarszającego wartość funkcji celu oraz wprowadzenie listy TABU. Jeżeli następuje przejście z rozwiązania x do y , to x wprowadza się na koniec listy tabu i przebywa ono przez k iteracji, gdzie k jest długością listy. Dowolne rozwiązanie z nie zostanie wybrane ponownie tak długo, jak długo przebywa ono na liście tabu. Lista tabu została wprowadzona dla uniknięcia cykli (związanych z wyjściem i powrotem do lokalnego optimum), co zmusza algorytmu do przeszukiwania nowych regionów rozwiązań. 6.4 Programy ewolucyjne 6.4.1 Wstęp Program ewolucyjny (ang. evolution program) jest to algorytm probabilistyczny w którym występuje populacja osobników P(t) = {x 1 t,...,xnt} gdzie t- numer iteracji każdy osobnik reprezentuje potencjalne rozwiązanie istnieje funkcja szacująca przystosowanie osobników (nieujemna, maksymalizowana) (ang. fitness function) w każdym kroku wybiera się najlepsze osobniki (selekcja rodziców) o największej wartości funkcji przystosowania (np. metoda ruletki) a następnie dokonuje się transformacji na wybranych osobnikach: krzyżowanie - dotyczy dwóch osobników mutacja - dotyczy jednego osobnika 6.4.2 Algorytm begin t<- 0 inicjuj P(t) oszacuj P(t) while not koniec (ocena najlepszego osobnika, iteracje, czas) do begin t<- t+ wybierz P(t) z P(t-1) transformuj P(t) oszacuj P(t) end end Algorytm genetyczny jest specjalnym przypadkiem programu ewolucyjnego: reprezentacja danych to BINARNE łańcuchy o stałej długości (chromosomy) transformacja składa się tylko z BINARNEJ mutacji i krzyżowania 6.4.3 Uwagi Stosując algorytm ewolucyjny do rozwiązania dowolnego problemu, trzeba najpierw rozwiązać następujące podproblemy: genetyczna reprezentacja rozwiązań inicjacja początkowej populacji postać funkcji dopasowania postać operatora selekcji operatory genetyczne (mutacja i krzyżowanie) wartości parametrów (rozmiar populacji, prawdopodobieństwa zastosowania operatorów) generowanie rozwiązań dopuszczalnych 6.4.4 Funkcja dopasowania Zbyt dobra definicja funkcji dopasowania (ang. fitness function) może prowadzić do zbyt szybkiej dominacji dobrych chromosomów i zmniejszenia znaczenia operatorów genetycznych (szybkie zakończenie algorytmu w otoczeniu najlepszego aktualnie chromosomu – ekstremum lokalne).

Zbyt słaba definicja może skutkować brakiem zbieżności do rozwiązania optymalnego. 6.4.5 Operator selekcji Poprawna definicja pozwala uniknąć przedwczesną zbieżność. Prawdopodobieństwo selekcji chromosomu k: i i k

f x

p fx

może być funkcją czasu (liczby iteracji):

1 i q k

f x

fx

T

p t

gdzie: T – spodziewana liczba iteracji, q – mała liczba naturalna. Ma to na celu zmniejszenie prawdopodobieństwa selekcji dobrych osobników w początkowej fazie i dopuszczenie do krzyżowania gorszych osobników, które mogą jednak prowadzić do lepszych rozwiązań. 6.4.6 Operatory genetyczne Krzyżowanie w trakcie upływu czasu staje się coraz mniej efektywne, gdyż chromosomy są coraz bardziej podobne do siebie. Można ulepszyć proces krzyżowania: wybierając miejsce do krzyżowania w miejscu, gdzie chromosomy się różnią między sobą zmieniając prawdopodobieństwo krzyżowania w zależności od urozmaicenia populacji 6.4.7 Generowanie rozwiązań dopuszczalnych Problem generowania rozwiązań dopuszczalnych można rozwiązać na dwa sposoby: generować tylko rozwiązania dopuszczalne (czasochłonne) dodawać dużą karę za brak dopuszczalności 6.4.8 Zastosowania algorytmu genetycznego Problem komiwojażera Problem komiwojażera (ang. traveling salesman problem - TSP) zdefiniowany jest następująco: komiwojażer startuje z miasta A i musi odwiedzić wszystkie pozostałe miasta dokładnie raz. Na koniec ma powrócić do miasta A. Zadaniem jest znalezienie drogi o najmniejszym koszcie. Załóżmy że mamy miasta oznaczone cyframi 1,2,3,4,5. Komiwojażer startuje z miasta 1 i musi do niego wrócić. genetyczna reprezentacja rozwiązań - wyjątkowo miasta będą kodowane nie binarnie ale liczbami całkowitoliczbowymi: (2,3,4,5). Miasto od którego zaczynamy i kończymy nie musi być kodowane inicjacja początkowej populacji - trzeba wygenerować możliwe permutacje postać funkcji dopasowania - określamy koszt odwiedzin miast w zadanej kolejności (nie zapominając o mieście będącym początkiem i końcem) operatory genetyczne (mutacja i krzyżowanie) - omijamy mutację i stosować będziemy jedynie krzyżowanie w zmienionej postaci: dane są przykładowo dwa chromosomy: (2,3,4,5,6,7,8,9,10) oraz (3,5,6,2,9,10,4,8,7) losujemy z pierwszego chromosomu fragment, który nie będzie zmieniany (2,3, 4,5,6,7 ,8,9,10) nowy chromosom będzie miał postać: (a,b,4,5,6,7,c,d,e) analizując drugi chromosom wypełnimy brakujące miejsca: a:3, (5 nie - bo występuje w kopiowanym fragmencie), (6 nie - patrz 5) b:2, c:9,d:10, (4 nie - patrz 5) e:8, (7 nie - patrz 5) wartości parametrów: rozmiar populacji – im większy rozmiar, tym lepsze wyniki (kosztem czasu) prawdopodobieństwa krzyżowania – dopasować samodzielnie Znajdowanie ekstremum funkcji

Aktualizacja T END END Funkcja celu (minimalizacja) może być funkcją energii. Przy obniżaniu temperatury nie zaleca się stosowania stałego kroku. Dokładne badania wykazały, że najlepszym rozwiązaniem jest powiązanie temperatury T z numerem iteracji n:

1 ln()

( )^0

n

Tn T

7 Metoda programowania dynamicznego (Błażewicz) 7.1 Wprowadzenie Mówiąc o programowaniu liniowym mówiliśmy o problemie programowania liniowego. Programowanie dynamiczne nie jest problemem lecz metodą rozwiązywania pewnej klasy problemów. Ponadto rozpatrywaliśmy dotychczas problemy optymalizacji statycznej, w którym kryterium optymalności jest funkcją n-zmiennych. W optymalizacji dynamicznej kryterium optymalności jest funkcjonałem a rozwiązanie - funkcjami czasu. Niniejszy rozdział opisuje opracowaną przez R. Bellmana ogólną metodę rozwiązywania pewnej klasy modeli decyzyjnych. Zakładamy, że modele te: są wieloetapowymi procesami decyzyjnymi posiadają własność Markowa 7.2 Wieloetapowe procesy decyzyjne DEFINICJA Wieloetapowy proces decyzyjny Wieloetapowy proces decyzyjny (WPD) jest to proces, którego stan na każdym etapie zależy od decyzji wybranej ze zbioru decyzji dopuszczalnych. Oznaczmy przez Sk (k=1,2,...,N) zbiór możliwych w k-tym etapie wartości zmiennej stanu (zbiór możliwych stanów). Oznacza to, że zmienna sk może przyjmować jedynie wartości ze zbioru Sk. Przez Dk (k=1,2,...,N) oznaczymy zbiór możliwych decyzji w k-tym etapie - zmienna xk może przyjmować jedynie wartości ze zbioru Dk. Wieloetapowy proces decyzyjny może zostać wyrażony następującą zależnością rekurencyjną: sk=T(sk- 1 ,xk- 1 ) (k=1,2,...,N, sk Sk, xk Dk) (6.1) Z wieloetapowym procesem decyzyjnym jest związana funkcja celu: f(s 1 , s 2 , ..., sN; x 1 ,x 2 ,..., xN) Problem, który należy rozwiązać w każdym wieloetapowym procesie decyzyjnym polega na określeniu ciągu decyzji: x 1 ,x 2 ,...,xN (xj Dj) przy których ustalona funkcja celu dla całości procesu przebiegającego w N etapach osiąga optimum. Ciąg decyzji optymalnych nazywać będziemy strategią optymalną. DEFINICJA Własność Markowa WPD ma własność Markowa jeżeli po dowolnej liczbie decyzji (k) wpływ pozostałych etapów procesu decyzyjnego na wartość funkcji celu zależy jedynie od stanu procesu po k-tym etapie i od decyzji następnych (dalszy przebieg procesu nie zależy od jego historii lecz tylko od stanu w danej chwili). Własność Markowa mają na przykład WPD z funkcją celu: z=f 1 (s 1 ,x 1 )+ f 2 (s 2 ,x 2 )+ ... + fN(sN,xN) PRZYKŁAD: Należy przetransportować ładunek z punktu A do E. Układ komunikacyjny między tymi punktami wraz odległościami przedstawiony jest na rysunku poniżej. Zadanie polega na wyborze najkrótszej trasy. B 1 A B 2 B 3

C 1

C 2

D 1

D 2

E

Otrzymujemy minimalną wartość funkcji kryterialnej z=g 1 (s 1 ) oraz optymalną decyzję x 1 . Znając si oraz xi możemy określić si+1 si+1=T(si,xi) PRZYKŁAD cd.: Wprowadźmy oznaczenia: FH oznaczać będzie najkrótszą drogę pomiędzy F i H FH=L[G] oznaczać będzie, że najkrótsza droga z F do H wynosi L i następnikiem F jest G Zadanie polega na znalezieniu najkrótszej drogi z A do E. Oznaczmy ją następująco: A-Bk-Cl-Dm-E. Z zasady optymalności Bellmana wynika, że: najkrótszą drogą z Bk do E musi być Bk-Cl-Dm-E a jeżeli to, to najkrótszą drogą z Cl-E musi być Cl-Dm-E a jeżeli to, to najkrótszą drogą z Dm do E musi być Dm-E. W oparciu o algorytm programowania dynamicznego należy: znaleźć DiE - najkrótszą drogę z Di do E (dla każdego Di) znaleźć CiE - najkrótszą drogę z Ci do E (dla każdego Ci) jako min{CiDj +DjE} znaleźć BiE - najkrótszą drogę z Bi do E (dla każdego Bi) jako min{BiCj +CjE} znaleźć AE - najkrótszą drogę z A do E jako min{ABj +BjE} Będziemy wyznaczać odległości począwszy od ostatniego etapu, przechodząc do etapu pierwszego. D 1 E = 4[E] D 2 E= 7[E] C 1 E = min{C 1 Di +DiE} = min {5+4, 1+7} = 8[D 2 ] C 2 E=min {3+4, 2+7} = 7[D1] B 1 E = min{8+8,11+7} = 16[C 1 ] B 2 E=min{3+8, 10+7}=11[C 1 ] B 3 E=min{12+8,4+7}=11[C 2 ] AE =min{4+16,6+11,7+11}=17[B 2 ] Możemy określić najkrótszą drogę z A do E idąc od początku: A - B 2 - C 1 - D 2 - E 7.4 Jednowymiarowy proces alokacji Jednowymiarowe procesy alokacji są klasą problemów, które mogą być rozwiązane za pomocą programowania dynamicznego. Przykład jednowymiarowego procesu alokacji: Pięć unikatowych maszyn należy rozdysponować pomiędzy trzy rodzaje działalności. Efekt działalności poszczególnych rodzajów w zależności od liczby przyporządkowanych im maszyn przedstawia tabela: Liczba maszyn Działalność A (3) Działalność B (2) Działalność C (1) 0 0 0 0 1 5 4 3 2 14 8 6 3 16 12 11 4 16 16 23 5 16 20 23 Alokacji maszyn należy dokonać w taki sposób, by łączny wynik był maksymalny. Formalny zapis modelu jednowymiarowego procesu alokacji: Wprowadzimy następujące oznaczenia: N - liczba działalności M - ilość dostępnego zasobu xk - liczba zasobu przydzielona do działalności k-tej fk(xk) - efekt przydzielenia xk ilości zasobu do k-tej działalności

funkcja celu: (max) N i

fi xi

1

ograniczenia: N i

xi M

1 xi >= 0 (i=1,2,...,N) W dalszej części będziemy mówić o przydzielanym do działalności zasobie. Interpretacja jednowymiarowego procesu alokacji w kontekście wieloetapowych procesów decyzyjnych może być następująca. Etap możemy zdefiniować jako przydział zasobu do danej działalności, przy czym nie jest istotna kolejność etapów. W naszym przykładzie będziemy mieli 3 etapy. Przez stan procesu (x) będziemy rozumieli wielkość zasobu, który pozostał jeszcze do rozdzielenia między pozostałe działalności. W stanie początkowym, gdzie zasobu nie przydzielono jeszcze żadnej działalności, x=M (M - dostępna ilość zasobu). Idea rozwiązania: Wprowadźmy dodatkową funkcję: N ik

qk ( x ) xk max,..., xN fi ( xi )

gdzie: N ik

xi x , xi 0 ,

Funkcja ta określa maksymalny przychód wynikający z przydziału x jednostek zasobu do działalności k .. N. Dysponując x jednostkami zasobu i przydzielając k-tej działalności xk jednostek, dla pozostałych działalności zostaje x-xk jednostek. Efekt całkowity można zapisać wzorem:

qk ( xk ) max{ fk ( xk ) qk 1 ( x xk )}

qN ( xN ) fN ( xN )

1

q 1 ( M ) max{ f ( x )} max{ z } z

N i i i Strategię optymalną wyznacza się w sposób następujący:

1 1

1

3 2

3

2 1

2 1

1 N i

xN xNM xi

x x M x x

x x M x

x xM

gdzie xioznacza ilość zasobów przydzielonych działalności i-tej

Przykład rozwiązania problemu: Rozwiążemy nasze obliczając rekurencyjnie wartość funkcji fi(s). Wyniki umieszczać będziemy w tabelce:

s q 3 (s) x 3 ( s ) q 2 (s) x 2 ( ) s q 1 (s) x 1 ( s )