Skripta Nova

  • Upload
    ww

  • View
    427

  • Download
    1

Embed Size (px)

Citation preview

Univerzitet u Novom Sadu Fakultet tehnikih nauka Odsek za elektrotehniku i raunarstvo Institut za raunarstvo i automatiku Zora Konjovi, ore Obradovi Zbirka zadataka iz predmetaRaunarska inteligencija Novi Sad, mart 2003 Sadraj 1.UVOD................................................................................................................3 2.REPREZENTACIJA ZNANJA......................................................................5 2.1.PREDIKATSKA LOGIKA...............................................................................5 2.1.1.Teorijska osnova...............................................................................5 2.1.2.Softwerske tehnike ............................................................................5 2.1.3.Primeri i zadaci za vebu ...............................................................12 2.2.NEURONSKE MREE .................................................................................23 2.2.1.Opti model neuralnih mrea .........................................................23 2.2.2.Klasifikacija neuronskih mrea ......................................................28 2.2.3.Algoritmi za obuavanje neuronskih mrea ...................................29 2.3.FUZZY LOGIKA.........................................................................................45 2.3.1.Fuzzy skupovi .................................................................................45 2.3.2.Reprezentacija znanja primenom fuzzy skupova ............................47 2.3.3.Zakljuivanje u fuzzy logici ............................................................47 2.3.4.Reavanje problema primenom fuzzy logike...................................48 3.TEHNIKE RASUIVANJA.........................................................................55 3.1.PRETRAIVANJE.......................................................................................55 3.1.1.Enumerativni algoritmi i optimizacioni algoritmi ..........................57 3.1.2.Genetski algoritmi ..........................................................................75 3.2.DEDUKCIJA ..............................................................................................75 3.2.1.Izraunavanje odgovora u predikatskoj logici ...............................75 4.INTELIGENTNI AGENTI ...........................................................................85 4.1.ROBOCODE...............................................................................................87 4.1.1.Osnovni delovi ROBOCODE okruenja.........................................87 4.1.2.Robocode API.................................................................................89 5.LITERATURA...............................................................................................97 Predgovor I Uvod 1. Uvod Redosled: (22) Predikatska logikauvodsintaksa lista stablo graf majmun i banana izraunavanje odgovora u Predikatskoj logici(stablo pretraivanja) (12) Pretrage uvod prvi u dubinu, prvi u irinu iterativni prvi u irinu, bidirekciona pretraga A* primeri: slagalica, lavirint, skaka, majmun i banana (6) Genetski algoritmi uvodprimer: odreivanja minimuma funkcije odreivanje maksimuma funkcije (10) Neuronske mree uvodnajprostiji oblik (pseudo kompetitivno obuavanje) generalisano delta praviloprimeri: prepoznavanje slova, 7 segmentni displej, funkcija, crna kutija, automat prelaza stanja (6) Fuzzy logika uvod inverzno klatno fuzzy pretraivanje 3 Reprezentacija znanja 2. Reprezentacija znanja 2.1.Predikatska logika 2.1.1.Teorijska osnova 2.1.2.Softwerske tehnike PROLOG (PROgraming in LOGic) je programski jezik kojim je mogue opisatiireitiodreenproblemnanainopisanpredikatskom logikom. Bazaznanjajeosnovazaizvoenjezakljuakaisastojiseod injenicaipravilakojipredstavljajustrukturuukojojfiguriu relacije.Naprimerbazaznanjaoporodinimvezamagrafiki predstavljena na slici 2.1. Slika 2.1 Primer rodbinskih veza programski se opisuje na sledei nain: otac(ivan, toma). otac(toma, petar). otac(petar, marko). otac(petar, jasna). 5 Reprezentacija znanja majka(mara, toma). majka(nina, marko). majka(nina, jasna). Program 2.1 Roditeljske veze Prethodnoopisanprimerpredstavljareprezentacijuznanjauobliku skupainjenica.injenicesugradivnielementisvakebazeznanjai uvek predstavljaju taan iskaz, opisuju se na sledei nain: predikat(Arg1, Arg2, Arg3, ...) GdepredikatpredstavljaimerelacijekojapovezujeobjekteArg1, Arg2,Arg3,....Predikatmoedaimaproizvoljnomnogo argumenata. Uprogramu2.1vezaizmeuobjekataivanitomejeotaciitase: IvanjeotacTomi.Poredkonstantiatosuuovomprimeruivani toma mogue je koristiti i promenljive. Na primer,stariji(adam, X). voli(X, X). Program 2.2. Primer korienja promenljivih Uovomprimeruprvominjenicomreenojedajeadamstarijiod bilo koga a drugom da svako voli samog sebe. Znaikorienjeminjenicaumogunostismodanajednostavan nainpredstavimoznanjeoposmatranomproblemu.Naravnocilj ovakvereprezentacijejedaporedopisaposmatranogsistema budemoumogunostidaizvodimoodreenezakljuke.Naprimer, Ko je tomin otac? ili Od koga je stariji adam?.ovekporedskupainjenicauzakljuivanjubarataiodreenim skupompravila.Naprimer,akojeivantominotac,ondajetoma ivanovo dete, odnosno iz relacije otac moe se izvesti relacija dete: dete(X, Y):-otac(Y, X). dete(X, Y):-majka(Y, X). Program 2.3 Primer definisanja pravila Drugimreimapravilopredstavljaspecijalnurelacijukojapovezuje zakljuak i pretpostavku. Na primer: pravilo(zakljuak, pretpostavka). UPROLOG-usezbogpreglednijegpisanjaumestouobiajenog naina pisanja (kao relacija), pravila definiu na specijalan nain: 6 Reprezentacija znanja zakljuak :- pretpostavka. Pravilaseinterpretirajutakotoseproveritanostpretpostavkea potom na osnovu nje izvodi se zakljuak ili moe da se kae da ako je tana pretpostavka onda je taan i zakljuak. UPROLOG-usenaravnopravannainmogukoristidvanaina zapisa infiksan i postfiksan.Kodinfiksnognainazapisa(a)relacijasenavodiizmeuobjekata. Samimtiminfiksannainmoguejekoristitisamourelacijama izmeu dva objekta. Postfiksnim nainom zapisa(b) prvo navodimo relaciju pa potom objekte. a) ivan otac toma.b) otac(ivan, toma).InfiksnerelacijemorajuseposebnonavestikakobiihPROLOG prevodilac mogao interpretirati. Primerom 2.4definisano je pravilo roditelj koji kae X je Y-u roditelj ako je X Y-u majka pored ovoga takoe vai pravilo X je Y-u roditelj ako je X Y-u otac.roditelj(X, Y):- majka(X, Y). roditelj(X, Y):- otac(X, Y). Program 2.4 Primer pravila Drugim reima ova dva pravila mogu da se opiu jednim koji kae X je Y-u roditelj ako je X Y-u majka ili je X Y-u otac. U PROLOG-u se to opisuje na sledei nain: roditelj(X, Y):- majka(X, Y); otac(X, Y). Program 2.5 Kombinacija vie injenica u jednom pravilu U ovom iskazu ; predstavlja logiki operator ILI. U sluaju da pravilo u delu pretpostavke sadri dve injenice koje istovremeno moraju da budu zadovoljene one se razdvajaju znakom , koji predstavlja logiki operator I. Na primer,deda(X, Y):- otac(X, Z), roditelj(Z, Y). sestra(X, Y):- roditelj(O, X), majka(O, Y), pol(Y, z), razliiti(X, Y). predak(X, Y):- roditelj(X, Y). predak(X, Y):- roditelj(X, Z), roditelj(Z, Y). 7 Reprezentacija znanja predak(X, Y):- roditelj(X,Z),roditelj(Z,W), roditelj(W,X). Program 2.6 Logiki operator I Uprethodnimprimerimapokazanajesituacijaukojojdefiniemo pravilokombinacijomviedrugihpravila.Takoejemogue definisati pravilo i rekurzivno: predak(X, Y):-roditelj(X, Y). predak(X, Y):-roditelj(X, Z), predak(Z, Y). Program 2.7 Rekurzivna pravila Ciljeviiliupitisuporedinjenicaipravilaveomavaandeo programskojjezikaPROLOG.Sammehanizamzaizraunavanje odgovora bie obraen u posebnom poglavlju. Postoje dve vrste upita: upiti koji kao odgovor imaju Ko? ili ta? i upiti koji odgovaraju na pitanje Da li?. Ciljeviiliupitipostavljajuseuposebnomprozoruitonasledei nain: ?-elementi_upita. Recimo pitanje Markov otac? u PROLOG-u bismo napisali: ?-otac(X, marko). X=toma ili pitanje Da li je Toma Markov otac? napisali bismo ovako: ?-otac(toma, marko). Yes Odgovor No u PROLOG-u se interpretira kao nemogunost donoenja pozitivnogzakljuka.Odnosno,pomoutrenutnebazeznanja interpreter nije u mogunosti da izvede pozitivan zakljuak. Kao odgovor na postavljano pitanje mogue je dobiti i vie odgovora, recimo na pitanje: ?-otac(X, _). Dobiemo odgovor: X=ivan ->; X=toma ->; X=petar ->; No Gde No znai Nema vie pozitivnih odgovora!. 8 Reprezentacija znanja Sintaksa programskog jezika PROLOG Naslici2.2prikazanajepodelasvihelemenataprogramskogjezika PROLOG. Slika 2.2 Podela osnovnih elemenata PROLOG-a Atom je svaki niz simbola, cifara i _ koji poinje malim slovom, ili je tonizposebnihznakovailijetobilokojinizznakovakojisenalazi unutar navodnika. Brojevisunizcifarakojipoinjepredznakominerazlikujuse posebno celi brojevi od realnih. promenljive su neke veliine koje se tokom izvravanja menjaju. One se imenuju nizom znakova koji poinje velikim slovom ili specijalnim znakom_.Specijalansluajje_promenljivakojapredstavlja takozvanu anonimnu promenljivu, odnosno vrednost ove promenljive nam nije od interesa. Strukturajesloentermkojiseformiravezivanjemnekoliko jednostavnijih termova. Funktor je atom koji objedinjuje strukturu u jedinstvenucelinu.Struktureserazlikujupoimenuibroju argumenata. Specijalansluajstrukturejelistakojasezbogestogkorienjai opisujenaposebannain.Poredlistiveomakorisnastrukturaje binarno stablo. Liste Listajestrukturakojajeilipraznailisesastojiodglaveirepa. Praznalistaopisujesenasledeinain:[].Glavairepseulisti odvajaju simbolom | ([g|[]]). U nastavku je dato nekoliko predikata kojimseopisujuosnovneoperacijesalistama.Vrloestoselista 9 Reprezentacija znanja prikazuje kao [a, b, 1, 2, c, d], gde je a glava liste, a lista [b, 1, 2, c, d] je rep liste. a) Predikat kojim se proverava da li je neka struktura lista. lista([]). lista(G|R):-lista(R). b) Predikat kojim se proverava da li se neki element nalazi u listi. element(X, [X|_]). element(X, [Y|R]):-element(X, R). c) Spajanje dve liste pripoji([], X, X). pripoji([X|R], Y, [X|Z]):-pripoji(R, Y, Z). d) Obrtanje liste obrni([], []). obrni([X|Xr], Y):-obrni(Xr, Yr), pripoji(Yr, [X], Y). obrni1(L, OL):-obrni(L, [], OL). obrni([], OL, OL). obrni([G|R], S, OL):-obrni(R, [G|S], OL). ) Brisanje elemenata iz liste. (Prvog u listi.) brisi(X, [X|R], R). brisi(X, [Y|R], [Y|R1]):-brisi(X, R, R1). f) Dodavanje elementa u listu ubaci(X, L, VL):-brisi(X, VL, L). g) Permutacija elemenata liste i sortiranje permutacija([], []). permutacija([X|L], P):-permutacija(L, L1), ubaci(X, L1, P). uredjena([X]). uredjena([X, Y|R]):-X=Consult....Nakonegajeneophodnopronai datoteku na nain standardan Windows okruenju. 4.Noviprogrampiemo takotoprvoizabiramo opciju'File->New...',i nakontogauinternom editoruunosimoinjenice ipravila.Poredovog nainamogueje programnaisatiisnimiti bilokojimstandardnim editoromtekstualnih datoteka,utomsluaju datotekaseotvara pozivanjemakcijeFile->Edit....Internieditorporedstandardnihoperacijasatekstualnim datotekama omoguava: - automatsku proveru sintaksne ispravnosti - prikaz kljunih izraza u razliitim bojama 14 Reprezentacija znanja - osveavanje interne memorije PROLOG interpretera (Ctrl+c Ctrl+b) 5.Usluajudaseprogramuitanuinternojmemorijimenjabilo internim editorom bilo klasinim editorima neophodno je ponovno ga uitati u radnu memoriju interpretera 'File Reload modified files'6.Prviprogramkojiseunosijemodelporodinog stabla.prikazan na slici 2.4. Slika 2.4 Model porodinog stabla Pounoenjuinjenica,snimitedatotekuusvojdirektorijum, ekstenzijadatotekebitrebaladabude.pliosveiteinternu memorijuPROLOGinterpretera(File->Consult..iliakostekoristili interni editor Ctrl+c Ctrl+b).7.Akojesveuredu(programsintaksnoispravaninalaziseu internojmemoriji)uglavnomprozorumoetedaponetesa unoenjem upita. Za probu, upitajte 'Ko je kome otac?' i 'Ko je kome majka?' 8.Vratiteseueditorskiprozorotkucajtepredikatezaroditeljei sestru.Snimiteprogramiosveiteradnumemorijuinterpretera. Isprobajte kako rade predikati roditelj i sestra. Po ugledu na predikat sestra napiite predikat koji proverava da li je osoba Xbrat osobi Y. 9. Napiite predikat predak1: predak1(X, Y):- roditelj(X, Y). predak1(X, Y):- roditelj(X, Z), predak1(Y, Y). Naosnovuovogpredikatanapiitepredikatepredak2(ukojemje zamenjenredosledprveidrugeklauzule),predak3(ukojemje izmenjenredosledciljevaudrugojklauzuli)ipredak4(ukojemje 15 Reprezentacija znanja izmenjen redosled i ciljeva i klauzula). Isprobajte ove predikate. Kako se ponaaju? 11.Proiriteporodinostablotakodadobijetevezeujak,tetka, bratodujakaisestraodstrica.Dopunitepravilapravilimakojie proveravati pomenute veze. 12.Snimite program! Veba 2. Rad sa listama 1. Napiite predikat koji proverava da li je data struktura lista. 2. Napiite predikat koji proverava da li se dati element nalazi u listi. 3. Napiite predikat koji spaja dve liste. 4. Proverite predikate koje ste napisali npr.?- lista([a, s, d, f, g, h]). ili?-element(s, [a, s, d, f, g]). 5. Napiite predikate koji obru listu i briu element iz liste. Brisanje elementaizlisteuraditinaobanaina,pomoupredikatapripojii bez njega. 6.Proveritekorektnostnapisanihpredikatapostavljanjem odgovarajuih upita u glavnom prozoru. 7. Snimite program! 8.Napiiteprogramzasortiranjebrojevapomoupermutacijei sortiranje Quick sort algoritmom. 9. Proverite napisane programe. 10. Snimite program! Veba 3. Rad sa binarnim stablom Poredosnovnesloenijestrukturepodataka,liste,postojiisloenija strukturabinarnostablo.Unastavkujedatpregledosnovnih operacija nad ovakvom strukturom. 1.Binarno stablo se (podseanjaradi) definie ovako: 16 Reprezentacija znanja a.Prazno binarno stablo je atom p b.Binarnostablojestrukturakojasesastojiod: Elementa, levog i desnog podstabla. 2.Naosnovuovedefinicijenapiitepredikat(b_stablo(X))koji proverava da li promenljiva X ima strukturu binarnog stabla. Koristite rekurziju. 3.X je element binarnog stabla ako je: a.X isto to i Element u strukturi ili b.X je element levog podstabla ili c.X je element desnog podstabla 4.Napiite predikat(element_s(X, S) ) koji proverava da li je X element binarnog stabla S.5.Implementirajtepredikate(uvrsti_s(X,S,D))zadodavanje elementa u binarno stablo koje je ureeno tako da se u levom podstablu nalaze elementi koji su strogo manji od Element-a. X je element koji se dodaje, S je stablo u koje se dodaje aD je stablo koje se dobije kao rezultat. 6.Implementirajtepredikate(brisi_s(X,S,D))zabrisanje elementa X iz binarnog stabla S a da posle brisanja dobijeno stablo D ostane ureeno. 7.Implementirajtepredikat(sortiraj(Lista,Rez)kojiza sortiranjekoristikonverzijulisteuureenobinarnostabloi konverziju iz stabla u listu. 8.Napiite predikat (listovi_s(X, S)) koji pronalazi elemente X binarnogstablaSkojisulistovi(nemajunidesnonilevo podstablo)9.Napiitepredikat(spoji_s(X, Y, Z))kojispajadvabinarna stablaXiYtakodarezultujuebinarnostabloZbude ureeno. 10. Razmisliteipokuajtedaopietestablosaproizvoljnim brojemneposrednihpotomaka.Kodbinarnogstablapostoje dva.Recimo,strukturadirektorijumakodfilesistema organizovanajekaoneureeno(nepostojimatematika formulapokojojrasporeujemoelementeu 17 Reprezentacija znanja poddirektorijume(podstabla)).Akovamjejasnokakobi izgledalatakvastrukturapokuajedanapietepredikateza proveravanje da li je data struktura stablo, proveravanje da li sezadatielementnalaziustablu,dodavanjeelementau odgovarajue podstablo,brisanje elementa i brisanje itavog podstabla. Veba 6. Rad sa grafovima Zadatak:Zadatjeneorijentisangraf.Smestitirelevantnepodatkeo grafuubazuznanjaPROLOG-a.Napisatipredikatkojipronalazii ispisujeputizmeudvezadatetakeugrafu.Modifikovatipodatke za sluaj da prelazak iz jedne u drugu taku u grafu ima neku cenu.Zaovakvepodatke,promenitiprogramtakoda,uzpronalaenje puta, sraunava i cenu puta izmeu dve take. abcdfge abcdfge41221124 Slika 2.5 Diskusija:Podatkeografusmestitiubazupodatakatakoda reavanje sledeeg zadatka bude olakano. Za zapisivanje podataka moemo odabrati vie razliitih strategija. Moemo pohraniti podatke otakama,granamailiobapodatka.Potokasnijizadatakzahteva odnasdapronaemoputizmeudvetakenagrafu,mudrojeda zapiemopodatkeovezamaizmeutaaka.Ovaodlukanam olakavaikasnijumodifikacijuubacivanjecena.Podatke,dakle, moemo zapisati ovako: veza(a,b). toznaidapostojivezaizmeutaakaaib.Sledeiproblemkoji treba razmotriti je injenica da je graf neorijentisan, to znai da ako 18 Reprezentacija znanja moemodadoemoodtakeadob,ondamoemoiodtakebdo taea.Ovajproblemmoemoreititakotoemoubacitidodatne injenice tipa: veza(b,a). Meutimelegantnijereenjejedanapiemododatnipredikatkoji glasi ovako: povezani(X, Y):-veza(X,Y);veza(Y,X). predji1(Cilj, Cilj, Put, Put). predji1(Start,Cilj,Put,Predjeno):-povezani(Start,X), predji1(X, Cilj, Put, [X|Predjeno]). Predikatkojipozivapredji1iomoguujeprikazivanjerezultata izgleda ovako: put(Start, Cilj, Put):-predji1(Start, Cilj, Put, [Start]). Akoprobateovajprogramnanekolikoprimera,moeteutvrditida program povremeno upada u beskonanu petlju. Ova neugodnost se moe reiti tako to emo, pre rekurzivnog poziva, proveriti da li smo veprolikroztakukojusmopronalipredikatompovezani.Taj podcilj glasi (predikat element napiite sami): not element(X, Predjeno). Naovajnainmoemodapreemosveputeveizmeudvezadate take. Meutim, putevi kojepronalazi ovakav program obrnuti su u odnosunazadatetake(takesuporeaneodciljnedopoetne take).Dabisedobioputkojinijeobrnut,moguesudvareenja. Jednopodrazumevaubacivanjepredikataobrni(kojiobrezatatu listu)napogodnomesto,adrugijeelegantnijeipokuajtedaga pronaete. Ovako smo reili prvi deo zadatka. Drugi deo zadatka zahteva da proirite podatke o grafu cenama. To je mogue postii ovakvim klauzulama: veza(a,b,4). Naosnovuovogprimera,modifikujtepredikatpovezani,ipredikate kojitraeputizmeutaaka.Voditeraunaotomedajepotrebno zadati i novu promenjljivu ukojoj e biti smetena cena puta izmeu dve take. 19 Reprezentacija znanja Veba 5 Diferenciranje matematikih izraza ZADATAK: Napisati predikate u programskom jeziku PROLOG, koji, -Nalaze prvi izvod funkcije f(x) -Nalazediferencijalfunkcijekojazavisiodjedneilivie promenljivih po zadatoj promenljivoj. DISKUSIJA:Diferenciranjematematikihizrazajeproblemkojise izuzetnolakoreavakoricenjemPROLOG-a,najviezahvaljujuci jakoj podrci simbolikoj obradi. Prviizvodielementarnihmatematikihizrazalakosenalaze koricenjemtabele(tosutzv.tabliniizvodi).UPROLOG-uovakvu tabelu moemo vrlo jednostavno implementirati . Na primer, izvod od sin(g(x))jeg'(x)cos(g(x)).UPROLOGuseovarelacijamoenapisati ovako: izvod(sin(U), Du*cos(U)):-izvod (U, Du). Vidimo da se radi o rekurzivnoj relaciji koja kao prvi argument prima funkcijukojutrebadiferencirati,akaodrugiargumentvraaprvi izvod te funkcije. Kao to moete da primetite, odmah smo primenili kombinacijutablinogizvodaiformulezanalaenjeprvogizvoda sloenefunkcie,itakosmoobezbedilidanampredikatautomatski radisasloenimfunkcijama.Takoe,valjaprimetitidajeklauzula kojusmogorenavelitipianprimerleverekurzije.Zatojepotrebno definisati i terminalni uslov. Postoje dva sluaja u kojima se direktno nalazi prvi izvod. To su izvod od promenljive x na prvi stepen, koji je 1,iizvodkonstante,kojije0.EkvivalentiovihiskazauPROLOGu glase: izvod(x, 1). izvod(N, 0):-integer(N). Da bi mogli da traimo izvode polinoma potrebno je na odgovarajui naindefinisatioperacijustepenovanja.Zaoperatorstepenovanja odabiramo simbol ^. :-op(200, yfx,^). Izvod stepenovane promenljive tada izgleda ovako : izvod(U^N, N*U^N1*Du):-integer(N), not N=0, N1 is N-1, izvod(U, Du). 20 Reprezentacija znanja Postojejoiformulezaraunanjeizvodazbira,razlike,proizvodai kolinika funkcija. Klauzula za izvod zbira izgleda ovako: izvod(U+V, Du+Dv):-izvod(U, Du), izvod(V, Dv). Saminapiiteklauzulekojenedostaju.Obratitepanjunaizvod funkcije sa negativnim predznakom.Sadanapiitepredikatkoji,poredfunkcijekojutrebadiferenciratii promenljive u koju se smeta prvi izvod, prima i promenljivu po kojoj trebadiferenciratifunkciju.dif(F,Fprim,Prom).Ovajpredikat trebadafunkcijuviepromenljivihizdiferencirapozadatoj promenljivoj. Isprobajte predikat. Sigurno ste primetili da je rezultat rada ovih predikata funkcija koja jesteprviizvod,alidatauoblikukojinijepogodanzaljudsko koricenje . Veba 6. 'Majmun i banana' ZADATAK:Napisatiprogramkojimsereavaproblem'Majmuni banana'.Majmuntrebadauprostorijipronaenainkakodase doepa banane koja se nalazi okaena naUprostorijipostojestrimestanakojimanestomoyedasenalazi: vrata, sredina, prozor.REENJE:Predikattrebadaimanekolikologikihcelinauokviru istog predikata. Prvalogikacelinasuklauzulekojeopisujuterminalniuslovza rekurziju. Ove klauzule treba da reaguju na sledee situacije: pojavu atomauizrazu,pojavuraunskeoperacijemnoenjanulomi stepenovanjaizrazanulominapojavudvabrojaizmeukojihstoji operator.Ovisluajevipredstavljajukrajjednogciklusa uprocavanja. Primeri.sr(A, A):-atomic(A), !. % Atomska vrednostsr(A*0, 0):-!. sr(A+B, C):-integer(A), integer(B), C is A+B, !. Obratitepanjunainjenicudamatematikeoperacijekojesu komutativne,nemorajubitikomutativnekadauzpomoPROLOGa analizirate izraz. Sledea celina su klauzule koje deluju kada naiemo na deo izraza u komepostojimogunostuproavanja,alijepotrebnoidalje 21 Reprezentacija znanja eventualnouproavanje.Nekeodovihsituacijasumnoenje jedinicom,sabiranjesanulom,kaoistepenovanjejedinicom, sabiranje sa nulom, kao i stepenovanje jedinicom.sr(A+0, A1):-sr(A, A1). sr(0-A, -A1):-sr(A, A1). Treagrupaklauzulajetudaomoguidalju analizuiuproavanje izraza.Oveklauzuledelujunadeloveizrazaizmeukojihsu operatori. Primeri: sr(A*B, A1*B1):-sr(A, A1), sr(B, B1). sr(A+B, A1+B1):-sr(A, A1), sr(B, B1). Program sastavljen po ovim uputstvima bi trebalo da bude u stanju da uprosti neke specijalne sluajeve izraza. Meutim, posle nekoliko testova, utvrdiete da program ne reaguje na neke prilino oigledne situacije.OvakvoponaanjejeuslovljenonainomnakojiPROLOG formirastablopretraivanja.Zatojepotrebnoponovitiuproavanje nekolikoputa.Ovuidejumoemodarealizujemofiksnimbrojem poziva predikata sr. Drugi nain je rekurzivno pozivanje predikata sr sve dok ne dobijemo dva puta isti rezultat.sredi(X, Y):-sr(X, Y1), X \=Y1, sredi(Y1, Y), !. sredi(X, X):-sr(X, X), !. Primetiete da ni ovako napisan program nije u stanju da uprosti sve mogue izraze. Meutim, ovaj program se moe iskoristiti kao osnova za razvijanje komplikovanijih algoritama za uproavanje izraza. 22 Reprezentacija znanja 2.2.Neuronske mree 2.2.1.Opti model neuralnih mrea NasliciXXprikazanajegraamotornogneuronaizprednjegroga kimenemodine.Neuronjeosnovnastrukturnaifunkcionalna jedinicaivanogtkiva.Podpojmomvetakaneuronskamrea podrazumevamo matematiki, fiziki ili raunarski model strukture i aktivnosti ivanih tkiva, odnosno mozga. Neuronske mree koriste se za istraivanje i reprodukovanje ljudskih nervnihaktivnosti kaotosu prepoznavanjei obradagovorai slike, motorne aktivnosti, uenje, pamenje itd. irokjespektarproblemakojisereavajukorienjemneuronskih mrea (na primer, kombinatorna optimizacija, prepoznavanje oblika, asocijativne memorije itd.). Slika XXX Graa motornog neurona Postojivelikbrojklasaneuronskihmreaodkojihsvakaimasvoje specifinosti.Poredvelikerazliitostipostojeiosobinekojesu zajednike za sve tipove neuronskih mrea. 23 Reprezentacija znanja Svaku neuronsku mreu karakterie osam glavnih parametara: 1.Skup procesnih elemenata (vorovi). 2.Stanje aktivacije. 3.Izlazna funkcija za svaki vor. 4.Struktura povezanosti izmeu vorova. 5.Pravilo propagacije signala kroz mreu. 6.Aktivaciona funkcija. 7.Algoritam obuavanja. 8.Okolina u kojoj sistem treba funkcionie. Skup procesnih elemenata Dabismoformiralimodelneuronskemreeprvikorakjeda definiemo skup vorova i ta oni predstavljaju. Postoje dva pristupa. U prvom (jedan vor jedan koncept) vor predstavlja neki objekat kao tojeslovo,reilikoncept.Udrugom(distribuiranipristup)vor predstavlja samo jedno obeleje nekog objekta a kompletan objekata predstavljen je celinom mree. Distribuirani pristup se ee koristi. U neuronskoj mrei nema supervizora koji nadgleda i kontrolie rad celine,postojesamorelativnojednostavniprocesnielementikoji obavljaju jednostavne zadatke. Celokupan zadatak vora je da primi signale sa ulaza (teinski izlazi susednih vorova) i da na osnovu njih generiuizlaznisignal.Nasliciprikazanjemodelneuronakao procesnog elementa. W1jWijUiaktivacijaU1Ij Slika Model neurona kao procesnog elementa Tipianmodelneuronskihmreasadritritipavorova:ulazne, izlazneiskrivene.Funkcijepojedinihvorovaodgovarajunjihovom nazivu.Takoulaznivorovisluedaprimesignaleizokolinei distribuirajuihuunutranjostmree.Skrivenivorovitesignale preuzimaju,procesirajuihiprenosedoizlaznihvorovakojiih konanopredajuokolini(izlaz).Skrivenivorovinemajuvezus 24 Reprezentacija znanja okolinom,semindirektnoprekoulaznihizlaznihvorova.Procesni elementibieoznaenisaui,i=1,N,N-brojprocesnihelemenata mree. Stanje aktivacije Stanjeaktivacijeai(t)predstavljastanjei-togprocesnogelementau trenutkutiodgovarastanjujezgraneurona.Stanjevoramoeda poprimivrednostizdefinisanogskupa(npr.skuppozitivnihrealnih brojeva). Izlazna funkcija Svakomprocesnomelementuu pridruujeseizlaznafunkcijakoju realizujeaksonikojapreslikavastanjeaktivacijeutrenutkut u izlaznisignal.Uveinimodelaneuralnihmreatafunkcijaje f(x)=x.Izlaznafunkcijakoristisezamodeliranjenekihogranienja recimonegativnevrednostidastavina0avrednostiveeod maksimalnedapostavinamaksimum.Takvefunkcijezovuse "rampa funkcije" : i) (t oi( ) ( ) ( ) = x h x x fgde je: prag aktivacije h Hevisajdova funkcija. Struktura povezanosti vorovikodsvihtipovaneuralnihmreameusobnosupovezani brojnimvezamakojeodgovarajusinapsama.Brojistrukturaveza jedansuodnajznaajnijihelemenataneuralnemree.Topologije raznih neuralnih mrea odreene su ba ovom osobinom. Svaka veza sadriodreenuteinu( )kojajenosilacznanjaipredstavlja jainu veze izmeu voraui. Kad signal prelazi iz jednog vora u drugi obino se mnoi teinom grane (veze) i tako utie na stanje aktivacijeodredinogvora.Tateinasemoepodeavatitokom vremena.Promenavrednostiteinavezanazivaseobuavanje. jiwj iujiw25 Reprezentacija znanja Obuavanjemoradaseobavljatakodamreanakonmodifikacije daje bolje rezultate od neobuene mree. Moguisurazninainiopisaveza.Jedanodnainajedase informacijeovezamaorganizujuumatricunxngdejenukupan broj vorova. Ako je vrednost teine vea od nula tada se takva veza naziva excitirajua. Takve veze poveavaju nivo aktivacije voru u koji ulaze.Uprotivnom,akojevrednostmanjaodnulatadaseveza nazivainhibirajuaismanjujenivoaktivacijeodredinogvora. Postojeneuralnemree(npr.Hopfield-ova)kodkojihjetamatrica simetrina ili je trougaona (najei sluaj). Pravilo propagacije signala kroz mreu Pravilopropagacijesignalakrozmreupredstavljanainkojimse vrikombinacijaizlaznihvrednostivorovaitakogenerieulazu vor.Kodneuronagarealizujudendriti.Pravilopropagacijeje najee jednostavnonet woi jijj i= +gde je vrednost ulaza u i-ti vor inet bias i-tog vora i koristi se kod obuavanja iPostojeikomplikovanijapravilapropagacijeionazaviseodtipai zadatka koji se reava uz pomoneuralne mree. Aktivaciona funkcija Funkcijaaktivacijepredstavljazakonpokojemsemenjavrednost stanja aktivacije j-tog vora i ima sledei oblik: ( )) ), 1 ( ( ) ( t net t a F t aj j j j =Funkcija perikaryon-a moe da se posmatra kao funkcija aktivacije. Uoptemsluajutojefunkcijakojazavisiodprethodnogstanja aktivacijekaoiodtrenutnogulazauvor.Funkcijajenajee deterministikaiakomoedabudeistohastika.Trinajeatipa aktivacionih funkcija su: 26 Reprezentacija znanja step_funkcija ( ) hx A bA b xA b x, , ,,,=+ + < semi-linearna funkcija ( ) > < < + (1, 2) 123 456 78 66 Tehnike rasuivanja Bidirekciona pretraga Strategija: Krenutisareavanjemzadatkaalgoritmomprviuirinuili iterativni prvi u dubinu. Istovremenorazvijatireenjekorienjempretrageprviu irinu ili iterativni prvi u dubinu. Ako se jedan od listova iz jednog stabla poklopi sa jednim od listovadrugogtraenoreenjejeputanjaodzadatkado zajednikogstanjailihipotezeiputanjaodtogstanjado reenja. Ova vrsta pretrage grafiki je prikazana na slici Slika Bidirekciona pretraga Programskoreenjeimplementiranojenaprimeruslagalice3x3 odnosno kao proirenje klase State: public class State { .... public static State searchBiDirectional(State state) { State finalState = finalState(); Hashtable statesA = new Hashtable(); Hashtable statesB = new Hashtable(); boolean solved = false; Vector nodesA = new Vector(); Vector nodesB = new Vector(); 67 Tehnike rasuivanja nodesA.add(state); nodesB.add(finalState); String hashCodeA = state.toHash(); statesA.put(hashCodeA, state); String hashCodeB = finalState.toHash(); statesB.put(hashCodeB, finalState); while((counter (2, 2) 123 456 7 8 (0, 2) -> (1, 2) 123 456 78 (0, 1) -> (0, 2) 123 69 Tehnike rasuivanja 56 478 ---- SOLVED---- counter:7 123 456 78 (1, 2) -> (2, 2) 123 456 7 8 (0, 2) -> (1, 2) 123 456 78 (0, 1) -> (0, 2) 123 56 478 Optimizacioni algoritmi (A*) Usluajudaelimoizvritipretraguutojemoguemanjekoraka moramouprostoruvestimetriku.Odnosno,svakostanjebiutom sluajubiloopisanovrednoudefinisaneheuristikefunkcije.Ta vrednostbinaprimergovorilakolikojetranutnostanjedalekood reenja. Naovajnainupretraziseprioritetdajestanjimakojasublie traenomreenjuatimeseznaajnosmanjujebrojoperacija potrebnih za nalaenje reenja. Vrlo esto heuristike funkcije predstavljaju samo predvianje a ne i stvarno stanje, tako da izbor i kvalitet heuristike funkcije vrlo esto odreuje i kvalitet i brzinu pronalaenja reenja. StrategijaA*algoritmajedaseuvekispitujehipotezakojaima minimalnuvrednostdefinisaneheuristikefunkcije.Putanjaod zadatka do reenja je i u ovom sluaju minimalna ali je broj koraka kojim je dobijeno reenje manji nego kod pretraivanja prvi u irinu. Programsko reenje je implementirano na primeru slagalice 3x3 kao i uprethodnimsluajevima.KlasaStateproirenajeheuristikom funkcijom koja vraa broj ploica koji se nalazi na svojem mestu. public class State { ..... public int heuristicFunction() { int retVal = 0; 70 Tehnike rasuivanja for(int i=0; i (1, 1) 123 56 478 (0, 2) -> (0, 1) 123 456 78 (1, 2) -> (0, 2) 123 456 7 8 (2, 2) -> (1, 2) 123 456 78 Za potrebe sortiranja implementirana je klasa StateComparator: import java.util.*; import java.util.Comparator; import java.lang.Comparable; public class StateComparator implements Comparator { public int compare(Object a, Object b) { int retVal = 0; State stateA = (State)a; State stateB = (State)b; int fA = stateA.heuristicFunction(); int fB = stateB.heuristicFunction(); if(fAfB) { retVal=-1; } return retVal; } } A glavni program u ovom sluaju je: public static void main(String args[]) { State s = initialState(); System.out.println(s); counter = 0; State solution = searchAStar(s); if(solution!=null) { System.out.println("---- Solution ----"); System.out.println("counter:"+counter); solution.showPath(); } else { System.out.println("---- ***** ----"); 72 Tehnike rasuivanja } } Zadaci za vebu 1.Napisatiprogramkojimseodreujepostupakzareavanje slagalice4x4.Programskiimplementiratialgoritmeprviu dubinu,prviuirinu,iterativniprviudubinu,bidirekcionii A*.Ureenjutrebadasenalazipoetnostanje,krajnje stanje, sve akcije koje od poetnog vode ka krajnjem stanju i broj koraka koji su obavljeni da bi se dobilo reenje. 2.AkojelavirintopisanslikomXXXX.Napisatiprogramkojim sepronalazi najkrai put izmeu ulaza i izlaza. 3.NapisatiprogramkojipronalazipoloajeNdamana ahovskoj tabli dimenzije NxN, takve da se bilo koja dama ne nalazi na putanji ostalih dama.4.Ako su gradovi povezani putnom mreom prikazanom na slici XXXXY odrediti a.Listugradovakojisenalazenanajkraojputanji izmeu grada A i grada Z. b.Putanjukojombisetrabalokretatidaseobiusvi gradovi i pree najkrai put. 73 Tehnike rasuivanja 41 Slika XXXs 5.Napisati program kojim se odreuju potezi koje ahista treba da obavi da bi skaka sa pozicije B2 preao na poziciju F2. Slika74 Tehnike rasuivanja 3.1.2.Genetski algoritmi 3.2.Dedukcija 3.2.1.Izraunavanje odgovora u predikatskoj logici Izraunavanjeodgovoraupredikatskojlogiciizvodisekorienjem dva mehanizma: 1.Ujedinjavanje 2.Rezolucija Ovim mehanizmima kreira se stablo pretraivanja.Ujedinjavanje je proces menjanja dva terma sa ciljem da se ti termovi uine identini.Supstitucija:Supstituciomilizamenomnazivamokonaanskup parova oblika za koje vai sledee:S t X=i.X se javlja samo u jednom paru izSii.PromenjljiveX nema sa desne strane znaka=S A*S je term koji se dobije tako to se u termu izvri supstitucija .APrimer: Akojetermdrug(X,Y).asupstitucija: A =1S {X=pera,Y=mika} tada jedrug(pera, mika).: *1S A75 Tehnike rasuivanja =2S { X=brat(ana), Y=otac(ana) } : *2S A drug(brat(ana), otac(ana)). Supstitucija=aS2{X=pera,X=mika}nijedobrazatotose promenljivaXpojavljujedvapara.Takoesupstitucija {X=marko, Y=X } nije dobra zato to se promenljiva X nalazi i sa leve i sa desne strane znaka =. =bS2Instanca: Termje instanca termaA B ako postoji takva supstitucija tako da vaiS S B* A = . Primer: : B p(X):-q(X), r(X,Y).=3S { X=a, Y=b } 3* S B A = : Ap(a):-q(a), r(a,b). Ujedinjivost: Dva terma su ujedinjiva ako imaju zajedniku instancu S B S A C * * = = Primer: : Ap(a, Y). : Bp(X, b). 3 3* * S B S A C = = ;: Cp(a, b). Ujedinitelj: Supstitucija naziva se ujedinitelj.SNajoptijiujedinitelj:Supstitucijakojatadvatermaujedinjujetako da u njima ostane najvei mogui broj promenljivih. Primer: : Ap(X, Y, a). : Bp(Z, voli(pera, vino), a). =4S { X=Z, Y=voli(pera, vino) } 76 Tehnike rasuivanja =5S { X=3, Z=3, Y=voli(pera, vino) } 4Sje optiji od 5SVarijanta:VarijantanekogtermaAjeinstancatestrukturekojaje dobijena primenom supstitucije koja sadri samo promenljive. Primer: p(X):-q(X), r(X). P(Y):-q(Y), r(Y). p(K):-q(K), r(K). =6S { X=Y } =7S { X=K } Proces ujedinjavanja dva terma: 1.Dvestrukturesuujedinjiveakoimajuistefunktoreiakosu svi argumenti jedne ujedinjive sa argumentima druge. 2.Ako su termoviikonstante onda su ujedinjivi samo ako su identini. 1A2A3.Akojetermpromenljivaproizvoljantermonda ujedinjavanjeuspevaakosepromenljivanepojavljujeu termu.Priujedinjavanjusapromenljiva poprima vrednost terma. Ako je obrnuto isto vai. 1A2A11A2A2A A1A2APrimeri: drug(a, b). drugar(a, b). Dve strukture nisu ujedinjive zato to nemaju uste funktore. drug(a, b). drug(a, b, c). Dve strukture nisu ujedinjive zato to nemaju isti broj argumenata. brz(X). brz(pas(X)). 77 Tehnike rasuivanja Ove dve nisu ujedinjive zato to argumenti X i pas(X) nisu ujedinjivi. Meutim,ujedinjavanjejemogueizvritiizmeuprveklauzulei varijante druge (preimenovanje promenljivih). brz(X). brz(pas(Y)). Mehanizam redukovanja cilja (resolucija) Procedurarezolviranjasesvodinapojednostavljivanjezadatogcilja korienjem ujedinjavanja sve dok ne dobijemo prazan cilj. Primer: (k1) p(X, Y):-q(X), r(X, Y). (k2) p(d, 4). (k3) q(a). (k4) q(b). (k5) q(c). (k6) r(a, 1). (k7) r(a, 2). (k8) r(c, 3). Proces redukovanja cilja ?-p(X, Y) grafiki je prikazan na slici 2.XX. 78 Tehnike rasuivanja Slika 2.XX Grafiki prikazan proces redukovanja cilja Stablo pretraivanja: 1.Koren stabla je polazni cilj C. 2.Nekajeciljaoblika?-C1,C2,...,Cn.vorstabla pretraivanjainekajeC1pozitivanpodciljtadatajvorima po jednog potomka za svaku klauzulu oblika G:-T1,...,Tq. za kojusustruktureC1iGujedinjive.Tadapotomakcilja?-C1, C2, ..., Cn. izgleda?-( T1,...,Tq, C2, ..., Cn)*S Gde je S najoptiji ujedinitelj struktura C1 i G. Ujedinjiveklauzuletraeseodozgopremadoljaislevana desno. 3.Neka je cilj ?-C1, C2, ..., Cn. vor stabla pretraivanja ali je C1oblikaC1=not(C1* ).AkociljimaC1* konanostablo pretraivanjasagranomuspehatadacelivornema 79 Tehnike rasuivanja potomaka. Meutim, ako C1* ima konano stablo pretraivanja ali bez grane uspeha onda je potomak cilj ?-C2, ..., Cn

4.Potomak koji nema ni jednog elementa naziva se prazan cilj [] voruspehajevorkojisadriprazancilj.Granastablakoje zavravajunavoruuspehanazivajusegraneuspeha.vorkoji sadrineprazanciljanemapotomakanazivasevorneuspeha. Grana neuspeha je grana koja zavrava na voru neuspeha. Primer 1: (k1) p(X, Y):-q(X), r(X, Y). (k2) p(d, 4). (k3) q(a). (k4) q(b). (k5) q(c). (k6) r(a, 1). (k7) r(a, 2). (k8) r(c, 3). Akojezadatacilj?-P(X,Y)ondajeodgovarajuestablo pretraivanja prikazano na slici 2.X1. 80 Tehnike rasuivanja ?-p(X, Y).?-q(X),r(X, Y).?-r(a, Y) ?-r(b, Y) ?-r(c, Y)[][] [] [](k1)(k2)(k3) (k4) (k5)(k6)(k7)(k8)S1={X=a}S2={Y=1}S3={X=b}S4={Y=2}S5={X=c}S6={Y=3}S7={X=d, Y=4}Odgovor:X=d, Y=4Odgovor:X=c, Y=3Odgovor:X=a, Y=2Odgovor:X=1, Y=1vorneuspeha!(1)(2)(3)(4) (5)(6) (7)(8)(9) Slika 2.X1 Primer 2: Zaprikazanoporodinostablonapisatiskupinjenicaipravilakoji opisuju vezu roditelj (r) i vezu predak (p). Nakon toga nacrtati stablo pretraivanja koje se formira kako bi se izraunao odgovor na pitanje Kome je ivan preda?. Renje 1: (k1) r(ivan, toma). (k2) r(mara, toma). (k3) r(toma, petar). (k4,1) p(X, Y):-r(X,Y). (k5,1) p(X, Y):-r(X,Z), P(Z, Y). Za cilj ?-predak(ivan, X). generie se sledee stablo pretraivanja: 81 Tehnike rasuivanja Slika 2.X1 Stablo pretraivanja za primer 2 reenje 1 Dobijeniodgovoriredom:X=toma,X=petar,inakontogadvavora neuspeha. Reenje 2: Razlika izmeu ovog i prethodnog reenja je u tome to je zamenjen redosled klauzula k4 i k5- (k1) r(ivan, toma). (k2) r(mara, toma). (k3) r(toma, petar). (k4,2) p(X, Y):-r(X,Z), P(Z, Y). (k5,2) p(X, Y):-r(X,Y). Sad za isti upit dobijamo drugaije stablo pretraivanja: 82 Tehnike rasuivanja ?-p(ivan, X).S1={X=X1, Y=Y1}Odgovor:X=petarOdgovor:X=toma(1)k4,2*S1: p(X1,Y1):-r(X1, Y1).S2={X1=X}?-r(ivan, X).S6={X=toma}?-[].(k1)?-r(ivan, Z), p(Z, X).k5,2*S1: p(X1,Y1):-r(X1, Z),p(Z,Y1).(k5,2*S1)*S2S3={Z=toma}(k1)?-p(toma, X).(k4,2*S1)*S2?-r(toma, X).S4={X=petar}?-[].(k3)?-r(toma, Z),p(Z, X).S5={Z=petar}?-p(petar, X).(k3)?-r(petar, X).vorneuspeha!?-r(petar, Z),p(Z, X).vorneuspeha!(2)(3)(4)(5)(6) (7)(8)(9)(10)(11)(11)(k5,2*S1)*S2(k4,2*S1)*S2(k4,2*S1)*S2(k5,2*S1)*S2 Slika Stablo pretraivanja za reenje 2 Uovomsluajuprvosegeneriudvavoraneuspehaapotom X=petar i X=toma. Ako se paljivo pogleda drugo stablo pretraivanja je u ogledalu preslikano prvo stablo. Reenje 3: (k1) r(ivan, toma). (k2) r(mara, toma). (k3) r(toma, petar). (k5,3) p(X, Y):-r(X,Y). (k4,3) p(X, Y):-p(Z,Y), r(X, Y). Stablopretraivanjazatreisluajnamdajedvadobrareenja, beskonano mnogo vorova neuspeha i jednu beskonanu granu. 83 Tehnike rasuivanja ?-p(ivan, X).(k4,3*S1)*S2S1={X=X1, Y=Y1}Odgovor:X=toma(1)k4,3*S1: p(X1,Y1):-r(X1, Y1).S2={X1=X}?-r(ivan, X).S3={X=toma}?-[].(k1)?-p(Z, X),r(ivan,Z).k5,3*S1: p(X1,Y1):-r(X1, Z),p(Z,Y1).(k5,3*S1)*S2(k4,3)?-r(Z, X),r(ivan,Z).?-r(ivan, ivan).?-r(ivan, mara).S6={Z=toma, X=petar}vorneuspeha!vorneuspeha!(2)(3)(4)(5)(6)(7)(10)(12)S4={Z=ivan, X=toma}(k1)S5={Z=mara, X=toma}(k2)?-r(ivan, toma). (8)(k3)?-[].(k1)(9)?-p(Z1, X),r(Z, Z1),r(ivan, Z).Odgovor:X=petar(k5,3*S1)*S2?-r(Z1, X),r(Z,Z1),r(ivan, Z).(k4,3)(11)S7={Z1=ivan, X=toma}?-r(Z,ivan),r(ivan, Z).(k1)vorneuspeha!S8={Z1=mara, X=toma}(12) ?-r(Z,mara),r(ivan, Z).vorneuspeha!S9={Z1=toma, X=petar}(k3)?-r(Z,toma),r(ivan, Z). (13)vorneuspeha!(k2)..... Slika 2.XX Stablo pretraivanja sa beskonanom granom Moemouoitidajemehanizamrezolviranjaprvodoaodotanih reenjapaondaupaoubeskonanoproirivanjezadatogciljaa samim tim i do beskonane grane. Po analogiji izmeu prvog i drugog sluajakadsmozamenomredosledaklauzuladobilistablo pretraivanjakojejeuogledalupreslikanostabloizprvogsluaja, lako je zakljuiti da bismo u sluaju zamene redosleda klauzula k4,3 i k4,5 odmah upali u beskonano proirivanje cilja. Zatojepreporukadaseprvonavodeklauzulekojepredstavljaju zavretakrekurzijeidaseprvoreavajujednostavnijipodciljevia potomkomplikovaniji.Potosepotomcivoragradereavanjem podciljevaslevanadesnopoeljnojejednostavnijeciljevesmetati sa leva a komplikovanije sa desna. 84 Inteligentni agenti 4. Inteligentni agenti Agent kao koncept definie se na mnogo naina. Meutim, skoro sve definicijeopisujuagentekaoobjektekojimogudavideokolinu, objekteidrugeagenteprekosvojihsenzora.Mogudakomuniciraju sadrugimobjektimailiagentimauokolini.Posedujuosobinu pokretljivostiiobaveznoimajuciljkojitrebadaispune.Ponekad nekolikoagenataimajuzajednikizadatakpajeneophodnoda postojinjihovameusobnakoordinacija.Takoe,agentimoguda buduosposobljenizareavanjeodreenogzadatkailiproblema,i tada oni predstavljaju servis koji ostali agenti mogu da koriste kako bi reili svoj zadatak. Prethodnomdefinicijomobuhvaenjeveomavelikbrojrazliitih ureajaiprogramskihpaketa.Udaljemraduograniiemosena agentekojiporedprethodnihosobinaposedujuiodreenu inteligenciju.Naime,agentdabiispuniozadaticiljmoradadonosi odluke.Agentikojiteodlukedonosenanainopisantehnikama raunarske inteligencije nazivaju se inteligentni agenti.Zapotrebemodeliranjaiimplementacijeagenatapojedinecelinese odvajaju u module (modul za kretanje, modul za odluivanje, modul zakomunikaciju,modulzaizvravanjeakcija,senzoriitd.).U programskoj implementaciji inteligentnih agenata koristi se nekoliko disciplina:objektnoorijentisanomodeliranje,raunarska inteligencija,modeliranjekonkurentnogponaanja,modeliranje protokola za komunikaciju itd. Slika 4.1 Okolina sa dva agenta i jednim objektom Naslici4.1 prikazanajejedna okolina(iliprostor)ukojojsenalaze dva agenta i jedan objekat. Zadatak agenta 1 moe da bude sledei: 85 Inteligentni agenti Pronaiobjekat1iodnesigaagentu2.Agent2trebadasauva objekat 1 i da ga kasnije na zahtev brzo pronae. Karakteristinastrukturainteligentnogagentaprikazanajenaslici 4.2. Slika 4.2 Karakteristina struktura inteligentnog agenta Kategorizacija agenata u odnosu na bazu znanja: Agentikojiimajuugraenubazuznanjainemogudaue- Odlukesedonosesamonaosnovusopstvenebazeznanja koja se definie po kreiranju agenta i vremenom se ne menja. Agentikojimogudaue-Bazaznanjasestalnoproiruje znanjem koje se preuzima iz okoline.Kategorizacija agenata u odnosu na svrhu postojanja: Agenti koji postoje da bi obavili zadatak. Usluniagentipostojekaoservisiiekajudoknekidrugi agenti ne zatrae njihovu uslugu. Konceptinteligentnihagenatatrenutnojeurazvoju.Samrazvojse kreeunekolikopravacaisastojiseuimplementacijistandardai okruenjazapodrkuagentorijentisanomprogramiranjui izvravanju. Zakoordinacijurazvojainteligentnihagenataosnovanaje organizacija Foundation for Intelligent Physical Agents skraeno (FIPA http://www.fipa.org).Jedanodzadatakaovefondacijeje prikupljanjeiobjavljivanjespecifikacijaistandardaizoblasti inteligentnih agenata. 86 Inteligentni agenti FIPAspecifikacijesukolekcijestandardakojimaseopisujenain povezivanja i koordinacije raznolikih agentskih struktura. Paralelnosadefinisanjemspecifikacijamnogekompanijerazvijaju sopstvena okruenja za podrku agent orijentisanom programiranju. TakojenaprimerIBMT.J.WatsonResearchCenteristraivaki centarpokrenuoprojekatkojimserazvijaokruenjeABLE(Agent BuildingandLearningEnvironment),JAF(TheJavaAgent Framework)jeprojekatMASlaboratorije (http://mas.cs.umass.edu/),kojimjetakoeimplementirano okruenjezarazvojinteligentnihagenata.Poredovadvavrloozbilja projektaIBMalphaWorksjepokrenuoiprojekatROBOCODE (http://robocode.alphaworks.ibm.com/home/home.html),kojimje moguenajednostavannainkreiratiagenteipratitinjihovo ponaanje u okruenju u kojem se nalaze.U nastavku e biti opisano ROBOCODE okruenje. 4.1.Robocode Robocode projekat je razvijen u edukativne svrhe i njegova namena je dasenaatraktivnomprimerupromovierazvojagentorijentisanog programiranja u programskom jeziku Java.Samookruenjejezamiljenokaovirtuelnobojnopoljeukojemse takmieinteligentniagenti(tenkovi).Takmienjepredstavlja simulacijumeusobnogponaanjavieimplementiranihagenataili timova.OsnovnefunkcijekaoiobjektidefinisanisuuROBOCODE API-ju.Samojezgromoguejeproirivatiraznimtehnikamaza odluivanje.4.1.1.Osnovni delovi ROBOCODE okruenja Robocodesedistribuirauoblikuizvrne.jardatotekepodnazivom robocode-setup.jar.Prilikominstalacijeneophodnojedana raunarubudeinstaliranaverzijaJava-e1.3ilivie.Potrebnojeda seodgovorinapitanjegdeebitiinstaliranRobocodeidaliese koristijikeszakompajliranje(IBM-ovaverzijaJavakompajlera). Nakoninstalacije,okruenjejespremnozapokretanjeizvravanjem datoteke robocode.bat.87 Inteligentni agenti Slika 4.3 Osnovni prozor ROBOCODE okruenja Crnideoprozorapredstavljabojnopoljenakojemseizvrava simulacija.Deoaplikacijenamenjenkreiranjuimodifikacijiagenatanazivase Robot Editor i prikazan je slikom 4.4. Slika 4.4 Robot Editor 88 Inteligentni agenti Pokretanje simulacije obavlja se kreiranjem nove bitke (Battle->New). Za opis simulacije, odnosno bitke potrebno je izabrati koji sve roboti uestvuju u takmienju i koliko rundi e trajati takmienje. Slika 4.5 Prozor za opis simulacije Popokretanjubitke(StartBattle),robotisekreirajunasluajnim pozicijama. Jedna runda traje sve dok na bojnom polju ne ostane ili jedanrobotilijednaekipa.Zavremeizvravanja,robotiunutar jednog tima mogu da razmenjuju poruke.4.1.2.Robocode API U ovom poglavlju opisan je skup klasa Robocode API-ja. Na slici 4.6 prikazan je dijagram osnovnih klasa.DabisekreiraointeligentniagentpotrebnojenasleditiklasuRobot ili klasu AdvancedRobot i redefinisati metodu run. Prilikom pokretanja simulacije,runmetodeagenata,kojiuestvujuutakmienju, izvravaju se u odvojenim procesima.Svaki robot ima funkcije kojima upravlja kretanjem, i opremljen je sa radarom (senzor za osmatranje okoline) i topom. 89 Inteligentni agenti WinEvent_AdvancedRadiansRobot_AdvancedRobot_RobotAdvancedRobotBulletBulletHitBulletEventBulletHitEventBulletMissedEventConditionCustomEventDeathEventinterfaceDroidEventGunTurnCompleteConditionHitByBulletEventHitRobotEventHitWallEventMessageEventMoveCompleteConditionRadarTurnCompleteConditionRobocodeRobocodeFileOutputStreamRobocodeFileWriterRobotRobotDeathEventScannedRobotEventSkippedTurnEventTeamRobotTurnCompleteCondition+robot+robot+robot+robot+bullet+hitBullet+bullet+bullet+condition+bulletSlika 4.3 Dijagram klasa Robocode API-ja

90 Inteligentni agenti Vrlo jednostavan robot koji se kree po ivicama kvadrata stranice 50(jedinica mere rastojanja u prostoru) opisan je klasom Robot1.java. package ovi; import robocode.*; public class Robot1 extends Robot{ public void run() { while(true) { ahead(50); turnLeft(90); ahead(50); turnLeft(90); ahead(50); turnLeft(90); } } } Metodaaheadkoristisezakretanjeunapred,ulazniprametar opisuje duinu puta koji se prelazi. U sluaju da robot pre zavretka putanaienapreprekumetodasezavravainastavljasesa izvravanjemprvesledeemetode.MetodaturnLeftkoristisezapomeranjeulevozaugao(ustepenima)kojiseprosledikaoulazni parametar.Metodeback iturnRight koristesezakreanjeunazadi pomeranje u desno na isti nain kao metode ahead i turnLeft.RobotkojipomeraradaritopudesnoprikazanjeklasomRobot2. MetodaonScannedRobotpozivaseusluajudajeradaropazio drugogrobota.Metodomfiresepuca,ulazniparametarje intenzitet paljbe. package ovi; import robocode.*; public class Robot2 extends Robot { public void run() { while(true) { turnGunRight(360); } } public void onScannedRobot(ScannedRobotEvent e) { fire(1); } } 91 Inteligentni agenti Ovosubiladvajednostavnaprimeranakojimasuilustrovane mogunosti kretanja robota, pomeranja senzora i izvrnih ureaja. Primerrobotakojinajkraimputemidepremadonjemlevomuglu prikazan je klasom Robot5.java package ovi; import robocode.*; public class Robot5 extends Robot { public void run() { while(true) { double heading = getHeading(); double x = getX(); double y = getY(); double l1 = Math.atan(x/y)*180/Math.PI; turnRight(180-heading+l1); ahead(10); } } } Uovomprimeruprikazanojeinekolikoveomavanihveliinakoji opisuju stanje robota:getHeading() ugao kretanja u odnosu na vrh bojnog polja getX() i getY() apsolutna pozicija, donji levi ugao je 0,0 headingYgetX()XgetY() Slika Osnovne veliine koje opisuju stanje robota 92 Inteligentni agenti Poredmetodazakretanjeiproverustanjapostojeimetodekojese pozivaju kao rezultat odreenog dogaaja. Jedan od takvih dogaaja jeidogaajkadradar(senzor)primetidrugogrobota (ScannedRobotEvent). Tom prilikom poziva se metoda onScannedRobot ukojojjemoguenapisatireakcijunadogaaj.Naprimer,moemo odreditiapsolutnupozicijurobota.ScannedRobotEventpored relativnog ugla izmeu radara i smera kretanja sadri i informaciju o udaljenosti, brzini drugog robotaitd. package ovi; import robocode.*; public class Robot3 extends Robot { public void run() { double heading = getHeading(); turnLeft(heading); while(true) { turnGunRight(20); } } public void onScannedRobot(ScannedRobotEvent e) { double eX = getX()+ e.getDistance()* Math.sin(getGunHeading()*Math.PI/180); double eY = getY()+e.getDistance()* Math.cos((360-getGunHeading())*Math.PI/180); double eVelocity = e.getVelocity(); double eHeading= e.getHeading(); System.out.println(getTime()+ " scanned robot("+eX+", "+eY+")"); turnRight(e.getBearing()); fire(1); if(e.getDistance()>140) ahead(1); } } Veba1.Naosnovuprethodnoopisanihmetodaproiritemetodu onScannedRobottakodaseunjojprocenjujenarednipoloaj skeniranogrobota.Nakontoganapiiterobotakojioponaatue kretanje.Pokuajtedakoristitenekuodtehnikaraunarske inteligencije. Veba2.Napiiterobotakojiprilikompucanjauzimauobziri preticanje,voditiraunaoudaljenosti,brziniismerukretanja drugog robota. 93 Inteligentni agenti Jedanodveomavanihprocesuprojektovanjuagenatajeste koordinacijadelovanja.Koordinacijasepostiekomunikacijomkoja se odvija izmeu pojedinih agenata tima ili istovremeno svih. URobocodeokruenjuklasomTeamRobot opisanjerobotkojipored osobinaobinogrobotaimaimetodeslanjaiprimanjaporuka. Naimeporukamoeusvakomtrenutkudasepoaljebilokojem agentuekipe,metodomsendMessage,dokseprimanjeporuka obrauje kao dogaaj onMessageReceived. U nastavku je dat primer dve klase koje pripadaju istom timu. Robot61.java package ovi; import robocode.*; public class Robot61 extends TeamRobot { public void run() { while(true) { ahead(10); try { sendMessage("ovi.Robot62", "SOS "+getX()+", "+getY()); }catch(Exception ex){} } } } Robot62.java package ovi; import robocode.*; public class Robot62 extends TeamRobot{ public void run() { while(true) { ahead(10); } } public void onMessageReceived(MessageEvent event) { out.println(event.getSender() + " poslao poruku: " + event.getMessage()); } } RobotRobot61aljeporukeosvojojpozicijisvimobjektimaklase ovi.Robot62.Robotovi.Robot62prihvataporukeiispisujeihna standardnom izlazu. 94 Inteligentni agenti Veba3.Implementirajtetimkojisesastojiodtrirobota(1,2i3). Prvi (1) u poetku emituje poruke o poziciji sastanka a druga dva (2, 3)poprijemuporukakreukatommestu.Postizanjuublizinu robotijavljajurobotu1dasustigli.Popristizanjusvizajednose upuuju na mesto koje definie agent 1. Veba4.Implementirajtetimkojisesastojiodetirirobota.Dva slue za osmatranje i ne pomeraju se. Njihovi radari stalno skeniraju okolinu. Poruke o stanju okoline alju robotima iji je zadatak da se kreuipucajupremaneprijateljskimrobotima.Usluajuunitenja obaizviakarobotajedanodpreostalihpokretnihpreuzimaulogu izviaa. 95 Literatura 5. Literatura [1]HTML 4.0 Reference, http://www.w3.org/TR/REC-html40/ [2]Java Native Interface Specification, JDK 1.1.8 dokumentacija [3]Java Server Pages, http://java.sun.com/products/jsp/ [4]Eckel, B., Thinking in Java, revision 9, August 1997. [5]ExtensibleMarkupLanguage(XML), http://www.w3.org/TR/REC-xml [6]Nauck,D.,Klawon,F.,Kruse,R.,Neuro-FuzzySystems, John Wiley& Sons, 1 [7]RussellS.J.,NorvigP.,ArtificialIntelligenceAmodern approach, Prentice-Hall Internatinoal, Inc.97 99