WYKŁAD 2 Histria rzwju technik prgramwania. Granica pmiędzy prgramem a agentem. Cykl życia i pdstawwe elementy składwe agenta. Gdzie się kńczy prgram a gdzie zaczyna agent? Prześledźmy analgie w przykładzie: Gdzie jest granica pmiędzy zwykłym włącznikiem światła a systemem autnmicznym 1. zwykły przełącznik 2. zmierzchwy włącznik światła (z czujnikiem świetlenia) 3. zmierzchwy przełącznik światła z czujnikiem ruchu i licznikiem czasu 4. uczący się przełącznik światła z zegarem (rzpznawanie pry rku i dnia) z klasyfikacją bserwwanych biektów z zapamiętywaniem jakie biekty w jakich prach ( np wydłużenie czasu świecenia jeżeli jakiś biekt zaraz pwracał) Kiedy płaca się wprwadzić pjęcie agenta/rbta, c w ten spsób zyskujemy? Pdbne analgie mżna budwać dla prgramwania Ppatrzmy na histrię rzwju prgramwania: 1
Rzwój technlgii twrzenia prgramwania: prgramwanie sekwencyjne (sekwencje + instrukcja skku) prgramwanie strukturalne (strukturalne instrukcje: grupujące, pętle,... ) prgramwanie prceduralne (pdprgramy, prcedury, funkcje) prgramwanie mdułwe (bibliteki, mduły) prgramwanie biektwe (klasy, dziedziczenie, plimrfizm) prgramwanie agentwe ( rle, zachwania, kmunikacja, języki manipulacji danymi - KQML, systemy wiedzwe - ntlgie) Kiedy ptrzebujemy agenta a kiedy tylk prgram? Czy jest sens zbudwać funkcję zawierającą wewnątrz wywłanie tylk jednej instrukcji, Czy jest sens budwać biekt z jednym publicznym plem, bez żadnych metd? Itd. Jakie nwe elementy wprwadził prgramwanie biektwe: 1. Pla i metdy prywatne/chrnine biektu, jak pśrednia frma dstępnści pmiędzy zmiennymi glbalnymi a lkalnymi (zmienne mdułwe ale z mżliwścią zwielkrtnienia) 2. Dziedziczenie jak frma agregacji prstszych frm w bardziej złżne (pkrywanie metd jak frma mdyfikacji istniejących wzrców) 3. Plimrfizm autmatyczne i dynamiczne linkwanie (tutaj tablice metd wirtualnych a wcześniej pprzez tablice wskaźników), również dbieranie metd d biektów (analgicznie jak przeciążanie funkcji umżliwia dbieranie funkcji d parametrów) 2
A c nweg w prgramwaniu agentwym? Czeg brakuje w prgramwaniu biektwym? (chciaż jest mżliwe d wyknania w spsób bardziej pracchłnny) 1. czas - czasprzestrzeń metdy zwykłeg biektu nie są przystswane d przetwarzania równległeg np. Czy mżna uruchmić klejną metdę przed zakńczeniem pprzedniej? czy w czasie działania jednej metdy mżna uruchmić kilka innych? Róznica filzficzna: wywływanie/uruchamianie kdu versus pwierzanie/zlecanie zadania np. mgę pwierzyć/zlecić wyknanie klejneg zadania przed zakńczeniem pprzednieg 2. Cechy elementów aktywnych: przestrzeń czasu! --- biekt wyknuje funkcję / perację --- agent pełni funkcję / rlę zachwanie (behaviur) --- biekt składa się z funkcji (metd) --- agent składa się z zachwań (prcesów) 3. Knstrukcja i destrukcja rzciągnięta w czasie. Np. najpierw przygtwanie wszystkich struktur danych ptem dpier inicjwanie a dpier na samym kńcu włączenie zegara życia Np. wysłanie kmunikatu, że w niedalekiej przyszłści zamierzam zakńczyć działanie Cykl życia: wydarzenia zewnętrzne wydarzenia wewnętrzne inne rdzaje wydarzeń etapy: Nardziny (birth) Creatin (twrzenie biektów składwych) Inicjalizacja (dłączanie d usług) Main (prcess_timer), (prcess_event), (prcess_message) (send_message) Shutdwn Destructin 3
Współbieżnść działania tczenia i agenta (raz innych agentów) prcesy: percepcji, wniskwania, planwania, sterwania (czy przetwarzanie sekwencyjne czy współbieżne) Cechy wspólne wszystkich agentów: zegar-timer, bserwacja tczenia dbieranie kmunikatów, ddziaływanie na tczenie również kmunikaty Odwrócenie śrdka świata, gdzie zapadają decyzje? c znam, c chcę ukryć, czeg nie znam, jak ułatwić krzystanie z innych nieznanych elementów (pasywnych biekty!, aktywnych agenci?) Mdel działania agenta tczenie agenta (pasywne i aktywne np. inni agenci) percepcja stanu tczenia myślenie (wniskwanie / dbieranie / planwanie działań) wyknanie akcji - mdyfikacja stanu tczenia Czy te w/w prcesy są realizwane sekwencyjnie czy współbieżnie? Różnice pmiędzy Agentem a innym prgramwaniem ma sbwść (persnalized), specjalizację (custmized) jest pr-active, pdejmuje inicjatywę długi kres działania / życia, (lng-lived) autnmiczny adaptacyjny 4
Dlaczeg ptrzebujemy Sftware Agents: craz więcej zadań (cdzienneg życia) jest skmputeryzwane (cmputer-based) grmne ilści dynamicznej, nieustrukturalizwanej infrmacji craz więcej użytkwników, niewyszklnych, niewykształcnych, nieinfrmatyków! Różnice pmiędzy Sftware Agent a Expert System 1. Użytkwnik systemu: agent jest przeznaczny dla średnieg ( "naiwneg" ) użytkwnika system ekspertwy dla zaawanswaneg użytkwnika / eksperta 2. Rzwiązywane zadania: agent rzwiązuje (prste?) zadania życia cdzienneg system ekspertwy rzwiązuje specjalistyczne wyskpzimwe zadania 3. Persnalizacja / determinizm systemu: agent mże wyknywać (planwać) różne akcje dla teg sameg stanu system ekspertwy wyknuje te same akcje 4. Aktywnść i autnmia systemu: agent sam decyduje / inicjuje działanie system ekspertwy tylk pasywnie dpwiada 5. Adaptacyjnść systemu typwy agent ciągle się uczy i zmienia system eksperwy najczęściej pzstaje niezmienny (zaprgramwany) 5
Algrytmy przełączników: 1. Zwykły przełącznik: bl przycisk_wcisniety; int napięcie_na_wyjsciu; while(1) { if( przycisk_wcisniety ) napiecie_na wyjsciu = 220; else napięcie_na_wyjsciu = 0; } 2. Przełącznik zmierzchwy: flat pmiar_swiatla; flat srednia_swiatla=0 int napięcie_na_wyjsciu=0; #define wsp_sredniej 0.5 #define prg_swiatla 50 while(1) { srednia_swiatla += wsp_sredniej*(pmiar_swiatlasrednia_swiatla); if( srednia_swiatla < prg_swiatla ) napiecie_na wyjsciu = 220; else napięcie_na_wyjsciu = 0; } 6
3. Przełącznik zmierzchwy z czujnikiem ruchu i zegarem: flat pmiar_swiatla; flat pmiar_ruchu; flat srednia_swiatla=0; flat srednia_ruchu=0; int napięcie_na_wyjsciu=0; #define wsp_sred_1 0.5 #define wsp_sred_2 0.9 #define prg_swiatla 50 #define prg_ruchu 30 int licznik_czasu=0; #define kres_swiecenia 100 while(1) { srednia_swiatla += wsp_sred_1*(pmiar_swiatlasrednia_swiatla); srednia_ruchu += wsp_sred_2*(pmiar_ruchu-srednia_ruchu); //if( licznik_czasu==0 &&... )??? if( srednia_swiatla < prg_swiatla && srednia_ruchu prg_ruchu ) licznik_czasu = kres_swiecenia; if( licznik_czasu 0 ) { napiecie_na wyjsciu = 220; licznik_czasu--; } else napięcie_na_wyjsciu = 0; } 7
4. "Inteligentny" przełącznik zmierzchwy: z różnicwaniem mcy świecenia z identyfikacją pruszających się biektów (dróżnianie ruchu gałęzi, zwierząt, ludzi) z "uczeniem" - dbieraniem kresu świecenia w zależnści d natężenia, charakterystyki i częsttliw ci ruchu, d pry dnia, pry rku, temperatury tczenia itp. (np. naprawianie wieczrem samchdu przed garażem) Algrytm...??? 8