Informatyka Systemów Autonomicznych

Transkrypt

Informatyka Systemów Autonomicznych
Grzegorz Bartoszek 148326
Informatyka Systemów
Autonomicznych
„Systemy informatyczne działające w świecie statycznym,
quasi-statycznym i dynamicznym”
Prowadzący: dr inż. Marek Piasecki
1.Wstęp
Systemy komputerowe odgrywają bardzo dużą rolę w wielu dziedzinach we współczesnym
świecie. Co raz większa liczba czynności jest automatyzowana lub też wspomagana przez
komputery. W zależności od funkcji danego programu lub systemu komputerowego różne jest jego
otoczenie. Poprzez pojęcie otoczenia lub środowiska rozumiemy dane jakie docierają do danego
systemu, i na które musi on reagować, lub na podstawie których musi on uzyskać określony wynik
swojej pracy. Rodzaj otoczenia decyduje też o tym jaki wpływ może mieć na nie program
komputerowy. Środowisko w jakim działa system informatyczny w istotny sposób wpływa na
wymagania stawiane wobec tego systemu oraz na sposób jego tworzenia.
Środowisko statyczne
Można wyróżnić kilka sposobów klasyfikacji środowisk, w których działają programy
komputerowe. Środowisko statyczne to takie, w którym jedyne zmiany zachodzą na skutek działań
wykonanych przez nasz program. Nie ma żadnych ingerencji z zewnątrz. Środowisko takie często
może być także deterministyczne, tzn. znając jego stan w danej chwili można określić jego stany w
przyszłości. Środowisko takie gwarantuje stuprocentową pewność co do przetwarzanych
informacji.
Środowisko dynamiczne
Przeciwieństwem środowiska statycznego jest środowisko dynamiczne. Niezależnie od
działania danego systemu informatycznego zachodzą w nim nieustanne zmienny. Wobec takiego
świata możemy użyć określenie „niedeterministyczny” - nie możemy przewidzieć stanu w jakim
znajdzie się świat w przyszłości na podstawie bieżących obserwacji. Środowisko takie generuje
niepewność pozyskiwanych z niego informacji. System informatyczny działający w takim
otoczeniu musi być na te niepewności przygotowany.
Środowisko quasi-statyczne
Wymienione wyżej przypadki to przypadki skrajne. W rzeczywistości można zdefiniować
również środowiska pośrednie, które łączą w sobie cechy świata statycznego i dynamicznego. W
środowisku quasi-statycznym zmiany zachodzące niezależnie od działającego w nim systemu są
niewielkie lub też bardzo powolne. Dzięki temu z pozoru statyczny świat może generować
niepewność co do uzyskanych na jego temat danych. Z drugiej strony świat dynamiczny w
pewnych okolicznościach może być rozpatrywany jako świat statyczny.
2.Wybrane przykłady systemów komputerowych działających w
różnych rodzajach środowisk
Systemy bazodanowe
Dobrym przykładem programu działającego w świecie statycznym są wszelkiego rodzaju
aplikacje bazodanowe: programy 'magazynowe', kartoteki, programy biblioteczne, programy
bankowe. Twórca takiego programu już na etapie projektowania aplikacji ma dostęp do wszelkich
niezbędnych mu informacji:
•
•
•
Dane, na których będzie operował dany program są precyzyjnie określone.
Znane są oczekiwania co do efektów działania danego programu.
Znane są ograniczenia czasowe i wydajnościowe.
Dzięki wyżej wymienionym łatwo jest zaprojektować odpowiednie algorytmy przetwarzające
dane. Z poprawność informacji wprowadzanych do takiego systemu odpowiadają z reguły jego
użytkownicy (dane te mogą być dodatkowo weryfikowane) przez co z perspektywy systemu można
je uznać za pewne. Systemy tego typu mają też dosyć często dosyć ograniczoną funkcjonalność,
skupioną wokół konkretnego zastosowania danej aplikacji. Działanie tego typu programów jest w
pełni deterministyczne – mamy do dyspozycji konkretną liczbę operacji nad konkretnym zbiorem
danych, a operacje te wykonują się w sposób pewny i możemy przewidzieć ich efekt.
Szachy
Szczególnym „podgatunkiem” programów komputerowych, które w wyrazisty sposób
obrazują zagadnienie dynamiki otoczenia są wszelkiego rodzaju gry komputerowe oraz
zaimplementowana w nich sztuczna inteligencja. Klasycznym przykładem są szachy – gra w pełni
deterministyczna, w której gracz dysponuje pełną informacją na temat aktualnej sytuacji w grze. W
przypadku tej gry możemy mówić o quasi-statyczności świata gry, ponieważ mimo wyżej
wymienionych faktów, zachodzą w nim zmiany zależne nie tylko od gracza ale także od jego
przeciwnika. Z drugiej strony na pewno nie można środowiska, w którym toczy się mecz szachowy
nazwać dynamicznym.
Historia pojedynków szachowych pomiędzy człowiekiem a komputerem jest bardzo długa:
•
•
•
•
•
Charles Babbage rozważał możliwość nauczenia swojej niedokończonej maszyny
„Analitical Engine” gry w szachy (1846 r.)
Teoretyczna podstawa pod szachową „sztuczną inteligencję”, algorytm min-max, pojawiła
się w latach 40 XX w.
1958 r. - pierwszy program grający w szachy.
W 1983 r. pierwszy program komputerowy osiągnął poziom mistrza szachowego.
1997 r. Deep Blue wygrywa z Garym Kasparovem
Podstawa programów grających w szachy jest algorytm min-max, którego idea opiera się na
maksymalizowaniu zysków i minimalizowaniu strat. W przypadku szachów algorytm min-max
używany jest podczas analizowania możliwych posunięć. W najprostszym przypadku tworzone jest
drzewo możliwych ruchów, które następnie są oceniane i wybierany jest najlepszy. Ponieważ w
chwili obecnej nie istnieje komputer który byłby w stanie przeanalizować wszystkie możliwe ruchy
w relatywnie krótkim czasie, istnieją różne bardzo zaawansowane techniki pozwalające ograniczać
drzewo przeszukiwań oraz określać, które ruchy są korzystne, a które nie. Jednak świat, w którym
toczy się pojedynek szachowy jest w gruncie rzeczy statyczny i deterministyczny, dlatego główna
idea tworzenia programów szachowych jest stosunkowo prosta: należy jak największą moc
obliczeniową skupić na tym aby przeanalizować więcej możliwych posunięć niż przeciwnik.
Poker
Kolejnym o wiele ciekawszym i nieco młodszym przykładem gry jest bijąca w ostatnich
latach rekordy popularności odmiana pokera „Texas Hold'em”. Ta pochodząca ze Stanów
Zjednoczonych gra karciana zdobyła ogromną popularność na całym świecie między innymi za
sprawą wielu serwisów internetowych umożliwiających grę online. Fakt, że można grać w pokera
przez internet w sposób niemal anonimowy, kusi aby spróbować stworzyć program komputerowy
grający w pokera (tzw. poker-bot), który automatycznie generowałby zyski (oczywiście jest to
niedozwolone i nielegalne). Popularne stają się także zwykłe gry komputerowe poruszające tą
tematykę. O tym, że temat pokerowej sztucznej inteligencji jest ciekawy, świadczy również to, że
na amerykańskim University of Alberta istnieje specjalny zespół naukowców zajmujący się tym
zagadnieniem. Organizowane są również turnieje w których rywalizują ze sobą pokerowe programy
komputerowe.
W „Texas Hold'em” każdy z graczy dostaje dwie karty, oprócz których na stół wykładane
jest jeszcze pięć kart wspólnych dla wszystkich graczy (wszyscy je widzą). W międzyczasie
odbywają się trzy rundy licytacji. Na końcu każdy gracz ma do dyspozycji dwie swoje karty i pięć
wspólnych dla wszystkich. Spośród tych siedmiu kart wybiera najlepszy możliwy pięciokartowy
układ, i w przypadku gdy jest on lepszy niż układy przeciwników – wygrywa pule. Szczegółowe
zasady znaleźć można w internecie – są one stosunkowo proste. Natomiast jeśli chodzi o dynamikę
świata gry sytuacja jest trochę bardziej skomplikowana niż to miało miejsce w przypadku szachów.
W dalszym ciągu nie mamy tu do czynienia z w pełni dynamicznym światem gry, jednak posiadane
przez nas informacje są niepewne a gra jest niedeterministyczna.
Poker jest to tzw. gra z niepełną informacją:
•
•
•
•
•
•
•
•
•
Część kart jest wspólna dla wszystkich graczy
W każdej chwili możemy stwierdzić jaki jest najwyższy możliwy układ
Wiemy jaki my mamy układ
Znamy ilość kart w talii
Możemy obliczyć prawdopodobieństwo, że kolejna wyłożona karta da nam wygraną.
Znamy też ilość przeciwników i ilość posiadanych przez nich żetonów.
Działania wykonywane przez graczy są jawne.
Nie znamy tylko kart posiadanych przez przeciwników.
Specyfika gry wymaga aby na wszelkie sposoby starać się wprowadzić przeciwnika w błąd.
Tak więc wiedza gracza na temat świata gry jest połowiczna. Wszystkie te czynniki (i wiele innych)
należy brać pod uwagę przy projektowaniu pokerowej sztucznej inteligencji. Program pokerowy
powinien radzić sobie z następującymi zagadnieniami:
•
•
•
•
•
Prawdopodobieństwo
Ocena ryzyka
„Zwodzenie przeciwników”
Gromadzenie informacji o przeciwnikach (opponent modelling)
Różne rodzaje strategii
Pewne podstawowe wartości pomagające podjąć decyzje mogą zostać po prostu wyliczone. Jednak
gra oparta jedynie na rachunku prawdopodobieństwa staje się przewidywalna. Dodatkowo program
pokerowy powinien gromadzić informacje dotyczące przeciwników tak aby można było
przewidzieć ich zagrania na podstawie ich dotychczasowej gry.
Program „Poki” Stworzony przez pracowników Uniwersytetu Alberta jest jednym z
najlepszych (najlepszym?) programów grających w pokera. Wykorzystuje on bardzo zaawansowane
algorytmy uczące, np. statystyczną analizę zachowań graczy czy też sieci neuronowe. Podobnie jak
w przypadku szachów odbywały się pojedynki zawodowych pokerzystów i wspomnianego
programu. Póki co zakończone remisem.
Gry komputerowe czasu rzeczywistego
Najpowszechniejszą gałąź przemysłu elektronicznej rozrywki stanowią gry komputerowe,
których akcja rozgrywa się w czasie rzeczywistym. Mogą to być np. wszelkiego rodzaju
trójwymiarowe strzelaniny czy też strategie czasu rzeczywistego. W tego typu grach mamy do
czynienie z w pełni dynamicznym światem, w którym odbywa się rozgrywka. W każdej chwili w
środowisku gry znajduje się wiele jednostek/postaci realizujących zadania wynikających ze
specyfiki gry. Komputerowy przeciwnik musi w każdej chwili reagować na działania jego ludzkich
lub komputerowych oponentów. Zmiany te są niedeterministyczne, nie można ich przewidzieć.
Zagadnienie sztucznej inteligencji we współczesnych grach jest bardzo skomplikowane. Istniej
szeroka gama różnego rodzaju algorytmów mających zastosowanie w tej dziedzinie. Podstawowe
mechanizmy to:
•
•
•
Automaty stanów
Systemy wieloagentowe
Algorytmy grafowe
Jednym z przykładowych algorytmów mających zastosowanie w grach jest algorytm stadny.
Jego działanie dotyczy grupy agentów działających w świecie gry. Algorytm stadny po raz pierwszy
został przedstawiony w 1987 r. roku przez Craiga Reynoldsa. Reynolds zaproponował w swoim
artykule trzy zasady, które po połączeniu umożliwiały grupie agentów realistyczne zbiorowe
zachowanie przypominające zachowania ławicy ryb, roju pszczół albo stada ptaków. Te trzy zasady
Reynolds nazwał sterowaniem zachowaniem, a są nimi:
•
•
•
rozdzielczość – sterowanie zapobiegające tworzeniu tłumu w jednym miejscu, które polega
na tym, że agenci muszą zachowywać pewną odległość od siebie,
wyrównywanie – sterowanie dające możliwość agentowi zmiany kierunki prędkości swego
przemieszczania, dzięki czemu agent może dostosowywać te parametry do innych agentów
przebywających w jego pobliżu,spójność – sterowanie odpowiedzialne za zbieranie się
agentów przebywających
blisko siebie w lokalne grupy.
Z czasem Reynolds dodał czwartą zasadę, którą określił mianem „unikania”. Jej zadaniem jest
sterowanie zapobiegające zderzeniom agentów z przeszkodami. Między poszczególnymi cyklami
(uaktualnieniami) – po których agenci za każdym razem sprawdzają środowisko, w jakim w danej
chwili przebywają.
Kolejnym powszechnym rozwiązaniem stosowanym w grach są automaty stanów
skończonych. Już w grach z lat 90. technika ta była wykorzystywana do kontrolowania agentów,
ale i w najnowszych produkcjach automaty stanów skończonych są używane do sterowania AI gry.
Również w większości gier typu cRPG automaty skończone wykorzystuje się do sterowania
dialogami gracza z agentami. Stanowią one także w wielu grach podstawę zarządzania światem,
przechowują stan gry, przetwarzają polecenia od gracza lub zarządzają stanem obiektu. Automat
stanów skończonych zbudowany jest z pewnej ściśle określonej liczby stanów znajdujących się w
danej przestrzeni rozwiązań. Gdy pojawia się nowe zdarzenie, następuje przejście w inny stan.
Prowadzi to do sytuacji pozwalającej podjąć jedno lub kilka różnych działań.
Określenie najlepszej drogi poruszania z punktu A do B na mapie to problem pojawiający
się w większości gier komputerowych. Na bazie techniki AI rozwiązującej to zagadnienie często
tworzone są bardzo skomplikowane i złożone zachowania, takie jak planowanie strategiczne czy
poruszanie się jednostek w formacjach. Sztandarowym rozwiązaniem dla tego problemu jest
heurystyczny algorytm A*. Algorytm ten podczas określania trasy nie szuka drogi „na ślepo”, ale
szacuje najlepszy kierunek eksploracji.
Internet
Sieć internet jest potężnym medium a także ogromnym dynamicznym środowiskiem, w
którym działają setki tysięcy różnego rodzaju systemów informatycznych realizujących powierzone
im zadania. Jednym z takich systemów jest największa (i prawdopodobnie najlepsza) wyszukiwarka
Google. Aby możliwe było wyszukiwanie w internecie treści przy jej pomocy, musi ona posiadać
informacja na temat stron internetowych. Treść tych stron i ich dostępność ulega nieustannym
zmianom a ich ilość jest ogromna.
Proces gromadzenia informacji na temat stron internetowych nazywany jest indeksowaniem.
W przypadku Google zajmuje się tym program nazywany Googlebot. Program ten przegląda strony
internetowe w ogromnym tempie (w praktyce wiele stron jednocześnie) i gromadzi informacje na
temat ich zawartości.
Algorytmy przeszukujące sieć internet muszą radzić sobie z wieloma problemami. Część
tych problemów wynika z dynamiki środowiska, w którym pracują. Mogą to być np. nie działające
linki. Kolejnym problemem są ludzie, którzy próbują oszukać mechanizmy wyszukujące w celu
umieszczenia swoich stron na wysokich pozycjach list wyszukiwania. Google zawiera wiele
mechanizmów mających na celu eliminowanie tego typu oszustw.
3.Podsumowanie
Środowisko w jakim ma działać dany system informatyczny wywiera istotny wpływ na
sposób jego tworzenia oraz jego ostateczny kształt. Twórca może mieć, w zależności od danego
otoczenie, pełną lub częściową informację na temat danych przetwarzanych przez program. Musi
brać pod uwagę wszystkie sytuacje, w które mogą wyniknąć, jednak nie zawsze da się je
przewidzieć. W zależności od danego środowiska działanie programu może polegać na prostym
przetworzeniu danych przy pomocy zaprojektowanego algorytmu lub też na reagowaniu na
nieprzewidywalne zdarzenia, o których system ma niepełną i niepewną wiedzę
4.Literatura
•
•
•
•
•
•
Materiały dydaktyczne: http://marek.piasecki.staff.iiar.pwr.wroc.pl/dydaktyka/
Wikipedia: www.wikipedia.pl
Włodzisław Duch „Gry i programy oparte na szukaniu”
Krzysztof Wardziński: „Przegląd algorytmów sztucznej inteligencji stosowanych w grach
komputerowych” http://www.hc.amu.edu.pl/numery/5/wardzinski.pdf
„The Challenge of Poker” http://poker.cs.ualberta.ca/papers/Papers/AIJ02.pdf
„How Google Works”: http://www.googleguide.com/google_works.html

Podobne dokumenty