Przykłady problemów optymalizacyjnych

Podobne dokumenty
Teoria obliczeń i złożoność obliczeniowa

Wybrane podstawowe rodzaje algorytmów

PROGRAMOWANIE NIELINIOWE

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

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Algorytmika Problemów Trudnych

Optymalizacja. Wybrane algorytmy

Podstawy Informatyki. Sprawność algorytmów

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

Sieć (graf skierowany)

Optymalizacja. Przeszukiwanie lokalne

Schemat programowania dynamicznego (ang. dynamic programming)

Metody przeszukiwania

Modele całkowitoliczbowe zagadnienia komiwojażera (TSP)

Matematyczne Podstawy Informatyki

Programowanie dynamiczne cz. 2

Wykład 4. Droga i cykl Eulera i Hamiltona

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

Zaawansowane algorytmy i struktury danych

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Sieć (graf skierowany)

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Techniki optymalizacji

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Problem komiwojażera ACO. Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym.

Metody przeszukiwania lokalnego

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

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

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

Wstęp do programowania

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

etody programowania całkowitoliczboweg

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Metody Rozmyte i Algorytmy Ewolucyjne

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Przykªady problemów optymalizacji kombinatorycznej

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

Metody Programowania

Algorytmy metaheurystyczne podsumowanie

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy memetyczne (hybrydowe algorytmy ewolucyjne)

Algorytmy stochastyczne laboratorium 03

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Wyznaczanie optymalnej trasy problem komiwojażera

Programowanie liniowe metoda sympleks

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Tomasz M. Gwizdałła 2012/13

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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):

Metody optymalizacji dyskretnej. Metody przybliżone

Programowanie liniowe całkowitoliczbowe

Metody Optymalizacji: Przeszukiwanie z listą tabu

SZTUCZNA INTELIGENCJA

Zaawansowane programowanie

zadaniem programowania liniowego całkowitoliczbowego. nazywamy zadaniem programowania liniowego 0-1. Zatem, w

Programowanie dynamiczne i algorytmy zachłanne

METODY OPTYMALIZACJI. Tomasz M. Gwizdałła 2018/19

Algorytmy i struktury danych.

Wykład 10 Grafy, algorytmy grafowe

[1] E. M. Reingold, J. Nievergelt, N. Deo Algorytmy kombinatoryczne PWN, 1985.

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Digraf. 13 maja 2017

Wstęp do programowania

Metody Rozmyte i Algorytmy Ewolucyjne

Wykład 2. Poprawność algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

9. Schematy aproksymacyjne

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Kombinatoryczne problemy optymalizacyjne to problemy wyboru najlepszego rozwiązania z pewnego zbioru rozwiązań

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytm selekcji Hoare a. Łukasz Miemus

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Algorytmy genetyczne

Złożoność obliczeniowa klasycznych problemów grafowych

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Optymalizacja ciągła

PRÓBNY EGZAMIN MATURALNY

Problem skoczka szachowego i inne cykle Hamiltona na szachownicy n x n

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Algorytmy i Struktury Danych.

Programowanie liniowe

Efektywność Procedur Obliczeniowych. wykład 5

Algorytmy mrówkowe. P. Oleksyk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Złożoność algorytmów. Wstęp do Informatyki

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Algorytmy aproksymacyjne i parametryzowane

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

PRZEWODNIK PO PRZEDMIOCIE

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Wstęp do programowania

Wprowadzenie do złożoności obliczeniowej

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Zasady analizy algorytmów

Algorytmy aproksymacyjne dla problemów stochastycznych

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Podstawy programowania. Podstawy C# Przykłady algorytmów

Plan. Zakres badań teorii optymalizacji. Teoria optymalizacji. Teoria optymalizacji a badania operacyjne. Badania operacyjne i teoria optymalizacji

Transkrypt:

Przykłady problemów optymalizacyjnych NAJKRÓTSZA ŚCIEŻKA W zadanym grafie G = (V, A) wyznacz najkrótsza ścieżkę od wierzchołka s do wierzchołka t. 2 7 5 5 3 9 5 s 8 3 1 t 2 2 5 5 1 5 4

Przykłady problemów optymalizacyjnych PROBLEM KOMIWOJAŻERA Dla zadanego zbioru miast i znanych odległości między nimi wyznacz najkrótsza trasę rozpoczynajac a się i kończac a w mieście 1 i odwiedzajac a wszystkie pozostałe miasta dokładnie raz. 3 6 1 5 2 3 5 4 1 4 7 2 5 5

Przykłady problemów optymalizacyjnych PROGRAMOWANIE LINIOWE (PL) max z = c 1 x 1 + c 2 x 2 + + c n x n a 11 x 1 + a 12 x 2 + + a 1n x n b 1... a m1 x 1 + a m2 x 2 + + a mn x n b m x 1,..., x n 0 Przykład: max z = 3x 1 + 5x 2 4x 3 2x 1 + x 2 120 x 1 x 2 + x 3 300 x 1, x 2, x 3 0

Przykłady problemów optymalizacyjnych PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE max z = c 1 x 1 + c 2 x 2 + + c n x n a 11 x 1 + a 12 x 2 + + a 1n x n b 1... a m1 x 1 + a m2 x 2 + + a mn x n b m x 1,..., x n całkowite Przykład (problem plecakowy): max z = c 1 x 1 + c 2 x 2 + + c n x n w 1 x 1 + w 2 x 2 + + w n x n W x 1,..., x n {0, 1}

Przykłady problemów optymalizacyjnych ZADANIE PROGRAMOWANIA MATEMATYCZNEGO max z = f (x 1,..., x n ) g 1 (x 1,..., x n )(, =)b 1... g m (x 1,..., x 2 )(, =)b m Zadanie: Pewien element konstrukcyjny ma kształt trapezu równoramiennego. Pole przekroju elementu musi wynosić co najmniej S. Górne i boczne powierzchnie pokrywa się kosztownym materiałem. Należy określić parametry przekroju elementu aby ilość zużytego materiału była najmniejsza.

Przykłady problemów optymalizacyjnych PROBLEM SZEREGOWANIA Znajdź najkrótszy dopuszczalny harmonogram wykonywania n prac na m jednakowych maszynach, gdzie praca i musi być wykonywana przez p i jednostek czasu. Przykład: 9 prac z czasami trwania odpowiednio 1, 2, 1, 2, 1, 1, 3, 2, 6 ma być wykonanych na 3 maszynach. Częściowy porza- dek w zbiorze prac określa graf po lewej stronie. 1 2 3 4 5 6 7 8 M1 M2 1 2 4 5 M3 3 7 6 8 9 9

Definicja problemu optymalizacyjnego Każdy problem optymalizacyjny P składa się z: Zbioru danych wejściowych (instancji) D P. Zbioru dopuszczalnych rozwiazań sol(i) dla każdej I D P. Funkcji celu f określajacej koszt (zysk) dla każdego dopuszczalnego rozwiazania x sol(i). Dla zadanej instancji I D P należy znaleźć dopuszczalne rozwiazanie x sol(i), takie że: f (x ) = min f (x) x sol(i) lub f (x ) = max x sol(i) f (x)

Algorytmy Problemy optymalizacyjne Problemy optymalizacyjne rozwiazujemy za pomoca algorytmów. ALGORYTM A WE: Opis danych wejściowych WY: Opis wyniku 1: Krok elementarny 2: Krok elementarny... k: Wywołanie innego algorytmu...

Rozmiar danych wejściowych Rozmiarem danych wejściowych nazywamy liczbę bitów potrzebnych do ich zakodowania. W praktyce rozmiar ten określamy podajac liczbę elementów prostego typu występujac a w danych wejściowych. Rozmiarem wektora liczb A = [a 1,..., a n ] jest n. Rozmiar grafu G = (V, A) określamy podajac liczbę wierzchołków V i liczbę łuków A w G

Czas działania algorytmu Czasem działania algorytmu nazywamy funkcję, która przyporzadkowuje każdemu rozmiarowi danych wejściowych maksymalna liczbę kroków elementarnych wykonywanych na danych o tym rozmiarze.

Przykład algorytmu Problemy optymalizacyjne PROBLEM MAX Znajdź największa liczbę w tablicy A = [a 1,..., a n ]. MAX WE: Tablica A = [a 1,..., a n ] WY: Maksymalny element w A 1: max := a 1 2: for i := 2 to n 3: if a i > max then max := a i 4: next i 5: return max Rozmiar danych wejściowych opisuje parametr n. Dla tablicy o rozmiarze n algorytm wykonuje 3(n 1) + 2 kroki elementarne. Oszacowanie to jest zbyt dokładne ponieważ zależy od sposobu zapisu algorytmu.

Notacja asymptotyczna O Niech f (n) i g(n), n N, będa danymi funkcjami. Mówimy, że f (n) jest rzędu O(g(n)) jeżeli istnieja liczby c > 0 i n 0 N takie, że: n n0 f (n) cg(n).

Notacja asymptotyczna O Fakty: Wielomian a k n k +a k 1 n k 1 +...+a 1 n+a 0 jest rzędu O(n k ). Funkcja wykładnicza 2 n nie jest rzędu O(n k ) dla żadnego k > 1. Funkcja n! nie jest rzędu k n dla żadnego k > 1. Ciag funkcji rosnacych coraz szybciej z dokładnościa do stałego współczynnika i składników niższych rzędów: 1, log n, n, n 2, n 3,..., n k, 2 n, 3 n,..., k n, n!, n n

Przykład algorytmu Problemy optymalizacyjne Algorytm MAX działa w czasie O(n) niezależnie od implementacji i sposobu zapisu algorytmu. Zatem PROBLEM MAX może być rozwia- zany w czasie O(n) MAX WE: Tablica A = [a 1,..., a n ] WY: Maksymalny element w A 1: max := a 1 2: for i := 2 to n 3: if a i > max then max := a i 4: next i 5: return max

Problem najkrótszej ścieżki Algorytm Dijkstry WE: Graf G = (V, A), c ij, (i, j) A, s WY: Drzewo najkrótszych ścieżek z s 1: S :=, S := N 2: for all i V d(i) := 4: d(s) := 0, pred(s) := 0 3: while S < n 4: Let i S be a node for which d(i) = min{d(j) : j S} 5: S := S {i}, S := S \ {i} 6: for all j such that (i, j) A 7: if d(j) > d(i) + c ij then d(j) := d(i) + c ij, pred(j) := i 8: end for 9: end while Algorytm Dijkstry działa w czasie O(n 2 ). Zatem problem najkrótszej ścieżki może być rozwiazany w czasie O(n 2 )

Problem komiwojażera Problem komiwojażera można rozwiazać za pomoca pełnego przegladu (metoda brute force). Niech Π oznacza zbiór wszystkich możliwych tras. Brute force WE: zbiór n miast, odległości między miastami WY: Najkrótsza trasa komiwojażera π 1: π := π 1, f := f (π 1 ) 2: for all π Π {Dla wszystkich tras} 2: if f (π) < f then π := π, f := f (π) 3: next π 4: return π Algorytm musi sprawdzić O(n!) tras, zatem czas działania tego algorytmu wynosi co najmniej O(n!)

Problem komiwojażera Załóżmy, że krok elementarny wykonujemy w czasie 10 6 s. n Czas działania Brute force 10 3.6 s. 12 8 min. 15 363 godz. 18 203 lata 21 1 620 000 lat Wniosek: Algorytm jest bezużyteczny dla n > 15!

Czas działania algorytmu Załóżmy, że krok elementarny wykonujemy w czasie 10 6 s. Oszacowanie czasu działania algorytmów: Algorytm n = 10 n = 20 n = 50 n = 100 O(n) 0.00001 s. 0.00002 s. 0.00005 s. 0.0001 s. O(n 2 ) 0.0001 s. 0.0004 s. 0.025 s. 0.01 s. O(n 3 ) 0.001 s. 0.008 s. 0.125 s. 1 s. O(2 n ) 0.001 s. 1.048 s. ok. 35.7 lat ok. 10 16 lat O(n!) 3.6 s. 77 146 lat ok. 10 50 lat!! Wniosek: Tylko algorytmy O(n), O(n 2 ) i O(n 3 ) sa efektywne!

Algorytmy wielomianowe Algorytm nazywamy wielomianowym jeżeli jego czas działania jest rzędu O(n k ) dla pewnej stałej k, gdzie n oznacza rozmiar problemu. Algorytmy wielomianowe, dla których k jest niewielkie (w praktyce k = 1, 2, 3), sa algorytmami efektywnymi. Działaja szybko dla danych o dużym rozmiarze. Algorytmy ponadwielomianowe (wykładnicze) moga być nieefektywne nawet dla danych o bardzo małym rozmiarze.

Problemy łatwe i trudne Problem optymalizacyjny nazywamy łatwym obliczeniowo jeżeli może być rozwiazany za pomoca algorytmu wielomianowego. Problem jest trudny obliczeniowo jeżeli algorytm wielomianowy dla niego nie istnieje lub nie jest znany.

Programowanie liniowe Najważniejszym problemem optymalizacyjnym, który jest łatwy obliczeniowo, jest programowanie liniowe: max z = c 1 x 1 + c 2 x 2 + + c n x n a 11 x 1 + a 12 x 2 + + a 1n x n b 1... a m1 x 1 + a m2 x 2 + + a mn x n b m x 1,..., x n 0 Każdy problem, który można efektywnie zapisać jako powyższy model liniowy jest również łatwy obliczeniowo. Uwaga: algorytm sympleksowy, nie jest algorytmem wielomianowym.

Programowanie matematyczne Efektywne algorytmy istnieja dla szczególnej klasy programowania wypukłego, tj. dla problemów w których funkcja celu jest wypukła i zbiór rozwiazań dopuszczalnych jest zbiorem wypukłym (szczególnym przypadkiem jest programowanie liniowe).

Model Markowitza Problemy optymalizacyjne Inwestor chce skonstruować portfel składajacy się z akcji n spółek. Znana jest oczekiwana stopa zwrotu µ i z akcji i-tej spółki oraz współczynnik kowariancji σ ij pomiędzy stopami zwrotów dla każdej pary spółek i oraz j (jest to miara liniowej zależności liniowej między stopami zwrotu i oraz j). Inwestor chce skonstruować portfel o najmniejszym ryzyku, zapewniajacy oczekiwany zwrot L.

Model Markowitza Problemy optymalizacyjne min z = n n i=1 i=1 σ ijx i x j n µ i x i L i=1 n x i = 1 i=1 x i 0 i [n] Jest to nieliniowe zadanie programowania wypukłego, które można efektywne rozwiazać.

Problemy NP-trudne Problemy dla których algorytm wielomianowy nie jest znany (podejrzewa się, że nie istnieje) tworza klasę problemów NPtrudnych. Problemami NP-trudnymi sa, między innymi: 1 Problem komiwojażera. 2 Problem plecakowy. 3 Zadanie programowania liniowego całkowitoliczbowego. 4 Ogólne (niewypukłe) zadanie programowania kwadratowego.

Rozwiazywanie problemów NP-trudnych 1 Algorytmy dokładne Model matematyczny + solver. Algorytm podziału i ograniczeń Programowanie dynamiczne (literatura) 2 Algorytmy aproksymacyjne 3 Metaheurystyki Algorytmy ewolucyjne (literatura) Inne (literatura)

Model matematyczny dla problemu komiwojażera x ij {0, 1}, gdzie x ij = 1 jeżeli komiwojażer wybiera połaczenie od i j. Funkcja celu: min z = n n c ij x ij i=1 j=1 Komiwojażer odwiedza każde miasto dokładnie raz. n x ij = 1, j = 1,..., n i=1 n x ij = 1, i = 1,..., n j=1 Czy te ograniczenia wystarcza?

Model matematyczny dla problemu komiwojażera W wyniku możemy otrzymać rozłaczne cykle (podcykle): 7 3 x 13 = 1 x 34 = 1 x 57 = 1 x 76 = 1 1 x 21 = 1 x 42 = 1 4 5 x 65 = 1 6 2 Należy dodać ograniczenia eliminujace podcykle

Model matematyczny dla problemu komiwojażera Sposób 1: x ij S 1, S V, S, i S j S gdzie V = {1,..., n} jest zbiorem miast. Liczba dodatkowych ograniczeń jest wykładnicza.

Model matematyczny dla problemu komiwojażera Sposób 2 (sformułowanie Millera-Zemlina-Tuckera): u 1 = 1 u i u j + 1 (n 1)(1 x ij ) i, j = 2,..., n 2 u i n i = 2,..., n gdzie u i oznacza, pozycje miasta i na trasie. 3 x 13 = 1 x 34 = 1 x 57 = 1 7 u 7 x 76 = 1 1 x 21 = 1 x 42 = 1 4 5 u 5 x 65 = 1 u 6 6 2 u 5 u 7+1 0, u 7 u 6 +1 0, u 6 u 5+1 0. Dodajac stronami te nierówności otrzymujemy sprzeczność. Pokaż, że cykl Hamiltona spełnia warunki MZT.

Model matematyczny dla problemu komiwojażera Sposób 3 (model przepływowy): j V y ij j V y ji = y ij (n 1)x ij, i, j V { n 1 jeżeli i = 1 1 jeżeli i 1, i V 7 3 x 13 = 1 x 34 = 1 x 57 = 1 x 76 = 1 1 x 21 = 1 x 42 = 1 4 5 x 65 = 1 6 2 Nie można wysłać towaru z wierzchołka 1 do 5, 6 i 7 ponieważ sieć określona przez x ij = 1 nie jest spójna.

Heurystyka dla problemu komiwojażera Heurystyka najbliższego sasiada: zaczynajac od miasta 1 wybierz jako kolejne miasto najbliższe z nieodwiedzonych miast. 4 4 6 1 3 2 1 9 2 3 8 2 4 1 7 8 7 1 4 2 Trasa heurystyczna: 1 5 2 4 3 1

Heurystyka dla problemu komiwojażera Heurystyka może zwrócić dowolnie zła trasę: 1 1 1 1 0 1 1 1 0 1 K 1 1 1 1 1 1 0 1 1 1 0 1 1 1 Trasa heurystyczna: 1 5 2 4 3 1 ma koszt K. Optymalna trasa ma koszt nie większy niż 5. Liczba K może być dowolnie duża.

Algorytm podziału i ograniczeń 1 Algorytm sukcesywnie dzieli zbiór dopuszczalnych rozwiazań S 0 = sol(i) na rozłaczne podzbiory S 1, S 2, S 3,.... 2 Dla każdego podzbioru S i efektywnie oblicza: Dolne ograniczenie B(S i ) na koszt rozwiazania w S i. Dopuszczalne rozwiazanie x i S i. 3 Niech x będzie najlepszym znalezionym rozwiazaniem dopuszczalnym. Jeżeli B(S i ) f (x ), to S i nie może zawierać lepszego rozwiazania niż x i można S i odciać. 4 Algorytm kończy pracę jeżeli nie istnieje podzbiór S i, taki że B(S i ) < f (x ). Wówczas x jest rozwiazaniem optymalnym.

Algorytm Algorytm podziału podziału i ograniczeń i ograniczeń (problem min) S 0 x 0 podziel S 1 S 3 S 2 x 1 x 2 x 3 odetnij B(S 1 ) f (x ) S S 5 4 x x 5 4 podziel B(S 2 ) < f (x )......

Problem komiwojażera Problem dla 5 miast z macierza odległości: M - bardzo duża liczba. 1 2 3 4 5 1 M 132 217 164 58 2 132 M 290 201 79 3 217 290 M 113 303 4 164 201 113 M 196 5 58 79 303 196 M

Problem komiwojażera Każda trasa komiwojażera jest pewnym przyporzadkowaniem: 1 217 58 3 5 113 79 2 4 201 1 2 3 4 5 1 2 3 4 5 1 1 1 1 1 Ale nie każde przyporzadkowanie jest trasa komiwojażera: 1 3 5 2 4 1 2 3 4 5 1 2 3 4 5 1 1 1 1 1

Problem komiwojażera Koszt optymalnego przyporzadkowania jest niewiększy od kosztu optymalnej trasy komiwojażera. Rozwiazuj ac problem minimalnego przyporzadkowania otrzymujemy dolne ograniczenie na koszt optymalnej trasy komiwojażera. Minimalne przyporzadkowanie można efektywnie wyznaczyć algorytmem Węgierskim w czasie O(n 3 ). Dopuszczalna trasę można wyznaczyć za pomoca heurystyki najbliższego sasiada.

Problem komiwojażera 1 3 4 2 5 B(S 0 )=652 π 0 =(1, 5, 2, 4, 3) f (π 0 )=855 Koszt minimalnego przyporzadkowania wynosi 652. Koszt minimalnego przyporzadkowania wynosi 652. Heurystyka najbliższego sasiada daje trasę Heurystyka najbliższego sasiada daje trasę π π 0 =(1, 5, 2, 4, 3) o koszcie 855. Koszt π 0 jest co najwyżej 0 = (1, 5, 2, 4, 3) o koszcie 855. Koszt π (855 652)/652 100% =31.1% 0 jest co najwyżej (855 652)/652 większy od optimum. 100% = 31.1% większy od optimum. Minimalne przyporzadkowanie (rysunek) nie jest trasa więc musimy Minimalne dokonaćprzyporz podziałuadkowanie rozrywaj ac np: (rysunek) cykl 2-5-2. nie jest trasa więc musimy dokonać podziału rozrywajac np: cykl 2-5-2. Adam Kasperski Optymalizacja 2009/2010

Problem komiwojażera Problem komiwojażera 1 3 4 2 5 B(S 0 )=652 π 0 =(1, 5, 2, 4, 3) f (π 0 )=855 c 25 = M c 52 = M 1 5 1 3 2 3 4 4 5 2 B(S 1 )=682 π 1 =(1, 5, 2, 4, 3) f (π 1 )=855 B(S 2 )=668 π 2 =(1, 3, 4, 2, 5) f (π 2 )=668 OPTIMUM

Algorytm podziału i ograniczeń - podsumowanie 1 Algorytm może działać w czasie wykładniczym. Może również zużywać dużo pamięci do przechowywania wierzchołków drzewa podziału i ograniczeń. 2 Efektywna implementacja algorytmu wymaga dużej wiedzy i doświadczenia programistycznego. 3 Algorytm można przerwać w dowolnym momencie. Wówczas najlepsze znalezione rozwiazanie jest rozwiazaniem przybliżonym. Zazwyczaj potrafimy oszacować jak daleko od optimum to rozwiazanie się znajduje.

Sasiedztwo i ruch Problemy optymalizacyjne Sasiedztwem rozwiazania x nazywamy funkcję N, która przypisuje każdemu rozwiazaniu x pewien podzbiór dopuszczalnych rozwiazań N(x). Ruchem nazywamy przejście od rozwiazania x do innego rozwiazania z N(x). Rozwiazanie x jest minimum lokalnym względem sasiedztwa N jeżeli f (x ) f (x) dla każdego x N(x).

Sasiedztwo i ruch Problemy optymalizacyjne 1 Definicja sasiedztwa zależy od problemu i reprezentacji rozwia- zań w problemie. 2 Rozwiazania z N(x) powinny być lekko zmodyfikowanymi wersjami rozwiazania x. 3 Dla każdych dwóch rozwiazań x i y powinien istnieć ciag ruchów prowadzacych od x do y. 4 Ruch powinien być łatwy do zaimplementowania. 5 Rozmiar sasiedztwa nie powinien być wykładniczy względem rozmiaru x. 6 Lokalne minimum może być bardzo odległe od minimum globalnego.

Problem komiwojażera Rozwiazania kodujemy jako zbiory krawędzi tworzacych cykl Hamiltona. Sasiedztwo 2-opt N(π) = {π : π \ π = 2} Sasiedztwo to składa się z tras różniacych się od trasy π dokładnie dwoma krawędziami. Ruch polega na usunięciu dwóch krawędzi z trasy π i dodaniu dwóch nowych krawędzi. π = {(1, 4), (4, 6), (6, 5), (5, 2), (2, 3), (3, 1)}, π = {(1, 4), (4, 2), (2, 5), (5, 6), (6, 3), (3, 1)}

Algorytm największego spadku Algorytm NS 1: Wygeneruj rozwiązanie początkowe x 2: stop := false 3: while stop = false 4: Znajdź y N(x) o najmniejszej wartości f (y) 5: if f (y) < f (x) then x := y {Wykonaj ruch} 6: else stop := true 6: end while 7: return x Algorytm zwraca lokalne minimum względem zadanego sasiedztwa.

Zalety i wady algorytmu NS 1 Algorytm jest przeważnie szybki i prosty w implementacji. W wielu przypadkach daje dobre rozwiazania. 2 Algorytm zawsze zwraca lokalne minimum, które może być odległe od globalnego. 3 Jakość zwróconego rozwiazania silnie zależy od rozwiazania poczatkowego. Możliwe ulepszenie: uruchom algorytm wiele razy dla różnych (losowych) rozwiazań poczatkowych. 4 Algorytm przeszukuje mała część przestrzeni rozwiazań. 5 W pewnych przypadkach pełny przeglad sasiedztwa jest nieefektywny.

Symulowane wyżarzanie (problem min) 1 Rezygnuje się z przegladania całego sasiedztwa N(x) bieżacego rozwiazania x. Zamiast tego kolejne rozwiazanie y N(x) jest wybierane w sposób losowy. 2 Ruch z x do y N(x) jest wykonywany z prawdopodobieństwem: } f (x) f (y) P(x, y) = min {1, e T. Parametr T > 0 nazywamy temperatura. Jeżeli f (y) f (x), to P(x, y) = 1 i ruch z x do y jest wykonywany automatycznie. Jeżeli f (y) > f (x), to P(x, y) (0, 1). Algorytm może wiêc przejść do gorszego rozwiazania y z prawdopod. tym większym im lepsze jest rozwiazanie y i im większa jest temperatura.

Symulowane wyżarzanie (problem min) Symulowane wyżarzanie 1: Wygeneruj rozwiązanie początkowe x 2: x best := x, T := T max 3: while T T min 4: i 1 5: for i := 1 to max_iter 6: Wybierz losowo y N(x) 7: l rand[0, 1] {Wylosuj liczbę z [0,1]} 8: if l P(x, y) then x := y {Wykonaj ruch} 9: if f (x) < f (x best ) then x best := x 10: end for 11: T := T T /(T + βt ) {Obniż temperaturę} 12: end while 11: return x best Parametry T min, T max, max_iter, β należy ustalić eksperymentalnie.