Zastosowania algorytmów heurystycznych do

Transkrypt

Zastosowania algorytmów heurystycznych do
Wrocław, 16.06.2009
Zastosowania algorytmów heurystycznych do
sterowania systemami autonomicznymi
Opracował:
Janusz Taterka
1. Wstęp
W systemach autonomicznych spotykamy się z zadaniami planowania działań.
Rozwiązanie polega na wyborze najlepszego (według zadanego kryterium) ze wszystkich
moŜliwych rozwiązań. Istotną rolę w procesie rozwiązywania problemu ma wybór sposobu
postępowania prowadzącego do uzyskania określonych wyników. Wśród róŜnych technik
postępowania tzw. metoda przeszukiwania jest jedną z częściej stosowanych podczas
procesu rozwiązywania zadań. Spośród czynników decydujących o zastosowaniu metody
przeszukiwania następujące dwa wydają się najwaŜniejsze:
• dla większości problemów trudno jest z góry określić ciąg czynności
prowadzących do rozwiązania. Muszą one być określone przez systematyczne
analizowanie kolejnych alternatyw;
• zaletą metod przeszukiwania jest łatwość formułowania zadań. Wymagane jest
jedynie określenie zbioru stanów rozwiązywanego problemu, zbioru operatorów
przekształcających te stany, stanu początkowego i zbioru stanów końcowych.
Rozwiązanie polega na określeniu ciągu operatorów przekształcających stan
początkowy w stan końcowy.
Algorytmiczne realizacje metod przeszukiwania nazywane są strategiami przeszukiwania.
Zbiór strategii przeszukiwania zawiera metody niewykorzystujące informacji o dziedzinie
rozwiązywanego problemu - nazywane strategiami ślepymi oraz metody ściśle
dopasowane do danego problemu, wykorzystujące informacje heurystyczne - strategie
heurystyczne.
W potocznym znaczeniu terminem heurystyka (z greckiego heuriskein - znaleźć,
odkryć) określa się praktyczną, opartą na doświadczeniu, regułę postępowania, która moŜe
znacznie uprościć lub skrócić proces rozwiązywania problemu, gdy metoda rozwiązania
nie jest znana lub jest zawiła i czasochłonna. W algorytmice heurystyką nazywa się
algorytm, który umoŜliwia znalezienie w akceptowalnym czasie przynajmniej
"dostatecznie dobrego" przybliŜonego rozwiązania problemu, choć nie gwarantuje tego we
wszystkich przypadkach. Metody heurystyczne naleŜą do podstawowych narzędzi
sztucznej inteligencji, często uŜywane są teŜ w róŜnych działach badań operacyjnych
Idea strategii heurystycznych wywodzi się z obserwacji, Ŝe dla większości
problemów przestrzeń stanów zawiera dodatkowe informacje. Koszt wyznaczenia tych
informacji jest niewielki, a pozwalają one dodatkowo klasyfikować stany i łatwiej
wybierać najlepsze kierunki przeszukiwania.
Strategie przeszukiwania przestrzeni stanów "w głąb" i "wszerz" działają "na
oślep". Główne strategie heurystyczne to A* i "najpierw najlepszy".
2. Reprezentacja głównych elementów zadania
Czynności wykonywane podczas rozwiązywania zadań moŜemy uwaŜać za
pewnego rodzaju poszukiwania lub konstruowanie obiektów o danej charakterystyce.
Rozwiązanie zadania jest często wyznaczane przez przeszukiwanie zbioru wszystkich
moŜliwych stanów, zwanego przestrzenią przeszukiwania. Kompletne przebadanie takiej
przestrzeni jest jednak mało efektywne, moŜliwe jedynie w przypadku małych przestrzeni.
W odniesieniu do przykładu opisu agenta przeszukującego sklepy prezentowanego na
wykładzie, wysoce nieefektywne lub wręcz niemoŜliwe (z punktu widzenia ograniczeń
czasowych) byłoby zapoznanie się z ofertą wszystkich dostępnych sklepów internetowych
lub tradycyjnych. Efektywną metodą rozwiązywania duŜych zadań jest generowanie
stanów za pomocą operatorów według określonych zasad i badanie ich właściwości.
Ze względu na opis zadania istotne są trzy podstawowe wymagania:
a. sposób reprezentacji kaŜdego ze stanów przestrzeni przeszukiwania, tzw. kod;
b. metody obliczeniowe umoŜliwiające wygenerowanie kodu kolejnego stanu na
podstawie kodu danego stanu, czyli operatory;
c. metody wyboru operatorów spośród zestawu moŜliwych do zastosowania, czyli
strategie sterowania.
Wśród najbardziej poŜądanych cech kodu stanów naleŜy wymienić jednoznaczność
i uwzględnienie struktury zadania. Sposób reprezentacji powinien umoŜliwiać efektywne
przekształcenia zbioru za pomocą operacji rozszczepiania. Polega ona na podziale
problemu reprezentowanego przez dany stan na podproblemy, odrzucaniu części stanów
i badaniu jedynie najbardziej obiecujących. Kolejne rozszczepienia mogą sprowadzić
problem początkowy do problemu łatwego do rozwiązania. Zaprezentowany sposób
rozwiązywania zadań jest nazywany metodą rozszczepiania i odrzucania (split-and-prune).
W dziedzinie sztucznej inteligencji z powodu duŜych rozmiarów zadań, są stosowane
analogiczne reguły postępowania, nazywane metodą generowania i testowania (generateand-test). Zamiast odrzucania stanów z pewnego zbioru, generuje się nowe stany i tylko
część z nich wykorzystuje do dalszego badania.
3. Strategie przeszukiwania grafów
Zadaniem strategii przeszukiwania jest wybór operatorów, określających gałęzie
grafu przestrzeni stanów moŜliwe do wyboru podczas rozwiązywania danego problemu.
Większość wyników teoretycznych dotyczących strategii przeszukiwania uzyskano dla
drzew, a więc szczególnego typu grafów. Parametrami charakteryzującymi przeszukiwane
grafy są: głębokość węzła, stopień rozgałęzienia węzła, stopień rozgałęzienia gałęzi.
Dla zadań polegających na wyznaczeniu drogi lub drzewa rozwiązania najbardziej
popularne są strategie iteracyjne. Konstruowanie takich strategii ma na celu w jak
największym stopniu zmniejszyć liczbę badanych węzłów oraz zoptymalizować obszar
pamięci przeznaczony na zapamiętanie stanów przejściowych. NajwaŜniejszymi kryteriami
przy porównywaniu strategii są: jakość wyznaczonego rozwiązania, koszt obliczeniowy
i obszar pamięci wymagany przez strategię.
RozróŜniamy dwie grupy strategii przeszukiwania: ślepe oraz skierowane, czyli
tzw. heurystyczne. W pierwszej grupie strategii nie wykorzystuje się informacji o zadaniu,
dzięki czemu mają one charakter uniwersalny. W drugiej grupie uwzględnia się informację
o przestrzeni stanów, operatorach i kryteriach celu.
W strategiach ślepych porządek przeszukiwania zaleŜy wyłącznie od informacji
dostarczanych przez juŜ zbadane węzły grafu i sam proces przeszukiwania. Z kolei
strategie heurystyczne umoŜliwiają w pewnej mierze uwzględnianie informacji o nie
zbadanej jeszcze części grafu. W szczególności przy wyborze najbardziej obiecujących
kierunków moŜe być przydatna wiedza o dziedzinie danego problemu oraz charakterystyce
poszukiwanych węzłów celu.
3.1. Strategia A*
Podstawowym algorytmem przeszukiwania przestrzeni stanów wykorzystującym
heurystyki jest algorytm A*. W algorytmie tym zakłada się, Ŝe dla danego problemu dana
jest pewna dodatkowa funkcja heurystyczna h działająca na zbiorze węzłów (stanów).
Wartość h(n) stanowi oszacowanie odległości węzła n do węzła docelowego, przy czym
oszacowanie to jest optymistyczne, tzn. faktyczna odległość węzła n do węzła docelowego
nie moŜe być mniejsza od h(n). Ponadto funkcja h(n) powinna być łatwa do wyliczenia.
Przyjmijmy następujące oznaczenia:
-
S - zbiór węzłów (stanów),
g(n) - odległość węzła n od węzła startowego (przez odległość rozumiemy sumę
kosztów łuków),
h(n) - funkcja heurystyczna,
h*(n) - faktyczna odległość węzła n do węzła docelowego,
f(n) = g(n)+h(n) - szacowana długość najkrótszej ścieŜki rozwiązania
przechodzącej przez węzeł n.
Zgodnie z załoŜeniem, h(n) <= h*(n) (ta waŜna własność nosi nazwę "dopuszczalności",
ang. admissibility).
Działanie algorytmu A*
Pojedynczy krok polega na rozwinięciu wybranego węzła przestrzeni stanów. W kaŜdym
kroku zbiór węzłów S dzieli się na trzy rozłączne podzbiory:
•
•
•
zbiór węzłów juŜ rozwiniętych - E,
zbiór węzłów przeznaczonych do rozwinięcia ("kontur") - C,
pozostałe, jeszcze "nieodwiedzone" węzły.
KaŜdy krok składa się z następujących czynności:
a) niech v będzie węzłem konturu (zbioru C), dla którego wartość g(n)+h(n) jest
najmniejsza,
b) jeśli v jest węzłem docelowym, zakończ działanie,
c) przenieś v ze zbioru C do zbioru E,
d) do zbioru C dodaj te wszystkie następniki węzła v, które albo nie naleŜą do E, albo
naleŜą do E, ale ścieŜka przechodząca przez v jest krótsza niŜ wcześniej znaleziona
ścieŜka (w drugim przypadku usuń taki węzeł ze zbioru E).
Funkcja heurystyczna f(w) w strategii A* jest sumą dwóch składników:
F(w)=h(w)+g(w)
WyraŜenie to oznacza, Ŝe dla danego węzła w jest wyznaczana najpierw w sposób
heurystyczny estymacja h(w) kosztu drogi łączącej węzeł w z węzłem celu. Następnie
wyznacza się dla węzła w koszt drogi łączącej węzeł początkowy p z węzłem w, co
reprezentuje składnik g(w).
Pomocą w przeszukiwaniu drzewa stanów jest równieŜ funkcja heurystyczna,
określająca jakość aktualnego węzła. Funkcja heurystyczna powinna w tym przypadku
uwzględnić w swej ocenie zarówno przybliŜoną odległość od węzła celu, koszt drogi od
węzła początkowego do węzła aktualnego, jak i złoŜoność procesu obliczeniowego. Dla
tego konkretnego algorytmu najwaŜniejsze są długość drogi w grafie oraz przybliŜona
odległość od celu. Algorytm A* z iteracyjnym pogłębianiem słuŜy do znajdowania
najlepszego istniejącego rozwiązania. Algorytm A* z iteracyjnym pogłębianiem realizuje
schemat algorytmu w głąb dla kolejnych iteracji z przyjętą wartością progu, dotyczącego
wartości funkcji heurystycznych. JeŜeli wartość funkcji heurystycznej badanego węzła jest
większa od zadanego progu, to następuje powrót. W jednej iteracji są badane wszystkie
węzły z wartością funkcji heurystycznej mniejszą od zadanego progu; w kolejnych
iteracjach algorytmu próg ten jest zwiększany. Zaletą algorytmu A* z iteracyjnym
pogłębianiem w porównaniu z tradycyjnym algorytmem A* jest zmniejszenie wymagań
dotyczących pamięci komputera.
3.2. „Najpierw najlepszy”
Strategia „najpierw najlepszy” (best-first) wykorzystuje pewną informacje
heurystyczną związaną z rozwiązywaniem problemem do zminimalizowania kosztów
przeszukiwania. W tym celu stosuje się pewną funkcję heurystyczną, która wyraŜa ocenę
węzła ze względu na następujące kryteria:
1. zbieŜność, czyli osiągnięcia celu;
2. najmniejszego kosztu drogi wyznaczonej od węzła początkowego, przez węzeł w,
do węzła końcowego;
3. najmniejszej złoŜoności obliczeniowej procesu przeszukiwania.
Do dalszego rozszerzania wybieramy „najlepszy” węzeł spośród wszystkich
węzłów rozpatrywanych do tej pory, nie zaleŜnie od ich połoŜenia w grafie. Przyjmujemy,
Ŝe węzeł najbardziej obiecujący ma najmniejsza wartość funkcji heurystycznej.
Działanie strategii „najpierw najlepszy” moŜna przedstawić na podstawie przykładu
tzw. „pięciu hetmanów”. Zadanie to polega na odpowiednim ustawieniu np. pięciu
hetmanów na szachownicy o wymiarach 5x5, przy czym Ŝaden z hetmanów nie moŜe
atakować innego. Graf w przestrzeni stanów jest generowany zaczynając od stanu
początkowego, który odpowiada pustej szachownicy.
Hetmani są umieszczani w kolejnych wierszach o numerach od 1 do 5. Węzły na
kaŜdym poziomie drzewa reprezentują moŜliwe pozycje hetmanów w kolejnych wierszach.
Do oceny aktualnej pozycji jest wykorzystywana funkcja heurystyczna f. Jej wartość moŜe
być wyznaczona w róŜny sposób, np. jest to minimalna liczba nie atakowanych pól
w wolnych wierszach (pozycja jest bardziej obiecująca, gdy liczba ta jest większa).
NajwaŜniejszą operacją, odróŜniającą strategię „najpierw najlepszy” od wcześniej
omawianych algorytmów, jest uporządkowanie listy (zawierającej węzły grafu przestrzeni
stanów z niewykorzystanymi krawędziami) według wartości funkcji heurystycznej.
Rozszerzenie węzłów jest dokonywane, podobnie jak w strategii w głąb, przez ekspansję,
czyli generowanie wszystkich potomków.
4. Wyznaczanie funkcji heurystycznych
Aby proces przeszukiwania heurystycznego mógł być efektywnie przeprowadzony
przez komputer, naleŜy opracować prostą metodę wyznaczenia funkcji heurystycznej. Jeśli
problem moŜna formalnie zapisać w postaci zadania przeszukiwania, to istnieje prosta
metoda generowania funkcji heurystycznych. Metoda polega na uproszczeniu zadania (np.
dodanie lub eliminacja operatorów) tak, by w powstałym zadaniu koszt wyznaczenia
rozwiązania był niewielki. Następnie dla zadań częściowych wykonywany jest algorytm
rozwiązujący zadanie uproszczone. Koszt wykonania algorytmu dla zadania
uproszczonego jest szukanym oszacowaniem heurystycznym.
Sposób wyznaczania funkcji heurystycznej zilustrujemy przykładem układanki
„gra w ósemkę”. Zasady tej układanki są następujące: dany jest 9-polowy kwadrat
z ośmioma płytkami; płytki moŜna przesuwać na wolne pole (z pól sąsiednich w pionie
i w poziomie); celem jest ustawienie płytek w Ŝądanej kolejności. Formalnie taką
układankę moŜna opisać za pomocą notacji rachunku predykatów.
Wystarczą trzy następujące predykaty:
Miejsce(x,y)-płytka x na miejscu y
Puste(y)- miejsce y puste
Sd(y,x)- y jest sąsiadem x
Opis aktualnego stanu układanki uzyskamy podając odpowiednie warunki dla
wszystkich płytek. Zasada przesunięcia płytki x z miejsca y na miejsce z składa się z trzech
części:
a. warunki zastosowania: miejsce (x,y)
puste (y)
sd(y,z)
b. stan do dodania:
miejsce (x,z)
puste (y)
c. stan do usunięcia:
miejsce (x,y)
puste (z)
JeŜeli z warunków wstępnych usuniemy predykaty puste oraz sd, to otrzymamy układankę,
w której płytki mogą być zamienione miejscami bez Ŝadnych ograniczeń. Z kolei jeŜeli
z warunków wstępnych usuniemy predykat puste, to otrzymamy układankę, w której płytki
mogą być zamieniane miejscami. W przypadku usunięcia predykatu sd otrzymamy
układankę, w której płytki mogą być przesuwne na wolne pole z dowolnego połoŜenia.
Rozwiązanie tych uproszczonych zadań moŜe posłuŜyć do wyznaczenia estymacji
heurystycznej stanów oryginalnej „gry w ósemkę”. Zadanie bez predykatów puste i sd
wyznacza funkcję heurystyczną, której wartością jest liczba płytek w połoŜeniu róŜnym od
docelowego. Zadanie bez predykatu puste generuje funkcje heurystyczną, której wartością
jest suma odległości w pionie i w poziomie płytek od ich docelowego połoŜenia. Zadanie
bez predykatu sd określa funkcję heurystyczną, której wartością jest suma poprzednio
opisanych odległości oraz odległości skośnej płytek od ich docelowego połoŜenia.
Przykład rozwiązywania 8-ki metodą A*
źródło:http://starbase.trincoll.edu/~ram/cpsc352/notes/heuristics.html
f(n) = g(n) + h(n)
g(n) - odległość od startu do stanu n.
h(n) - liczba elementów na złym miejscu.
Zadania rozwiązywane przez strategie przeszukiwania
Praktyczne problemy rozwiązywane przez strategie przeszukiwania moŜna podzielić na
trzy grupy: wyznaczanie drogi lub drzewa w grafie, gry dwuosobowe, problemy
spełniające zadane ograniczenia.
Wyznaczanie drogi lub drzewa rozwiązania
Jednym z podstawowych sposobów reprezentacji problemów praktycznych jest
skonstruowanie przestrzeni rozwiązania jako grafu. Węzły grafu reprezentują stany.
Krawędzie oznaczają operatory odwzorowujące jedne stany przestrzeni stanów na inne
stany tej przestrzeni. JeŜeli zadanie polega na znalezieniu ciągu operatorów
przekształcających jeden wyróŜniony stan (stan początkowy) w inny z wyróŜnionych
stanów (stan końcowy), to w odpowiadającym temu zadaniu grafie mamy do czynienia
z problemem wyznaczania drogi z węzła początkowego do węzła celu. Zadaniem strategii
przeszukiwania jest wybór operatorów – krawędzi moŜliwych dla danego stanu – węzła.
Gry dwuosobowe
Gry w dalszym ciągu stanowią doskonałą metodę badania róŜnych aspektów ludzkiej
inteligencji. Przykładowo szachy charakteryzują się stosunkowo niewielką liczbą
moŜliwych posunięć (w danym stanie gry), małym zbiorem dobrze zdefiniowanych reguł
opisujących zasady gry, pełną informacją w kaŜdym stanie gry. PowyŜsze cechy dają
moŜliwość znalezienia rozwiązania z wykorzystaniem heurystycznych strategii
przeszukiwania.
Problemy spełnienia ograniczeń
Wiele problemów praktycznych moŜna modelować następująco: zdefiniowany jest zbiór
zmiennych, zbiory wartości tych zmiennych oraz zbiory ograniczeń zmiennych. Proste
ograniczenia określają podzbiór wszystkich moŜliwych wartości zmiennej. Ograniczenia
binarne określają jakie pary wartości dwóch zmiennych są moŜliwe.
Literatura:
1. Leonard Bolc, Jerzy Cytowski „Metody przeszukiwania heurystycznego”, Warszawa
1991.
2. Wykład mgr Filipa Gralińskiego „Sztuczna Inteligencja”
http://ceti.pl/~gralinski/szi520/zajiv.html
3. Wykłady prof. Włodzisława Ducha: Szukanie heurystyczne I i II
http://www.phys.uni.torun.pl/~duch/Wyklady/AI/AI2-2.ppt
http://www.phys.uni.torun.pl/~duch/Wyklady/AI/AI2-3.ppt

Podobne dokumenty