Programiranje inteligentnih agenata

Nova tema  Odgovori 
Podelite temu sa drugarima: ZARADITE PRODAJOM SVOJIH RADOVA
 
Ocena teme:
  • 0 Glasova - 0 Prosečno
  • 1
  • 2
  • 3
  • 4
  • 5
 
Autor Poruka
Vesnica Nije na vezi
Posting Freak
*****

Poruka: 2,567
Pridružen: May 2010
Poruka: #1
Programiranje inteligentnih agenata
Maturski, seminarski i diplomski radovi iz informatike.

Programiranje ili računarsko programiranje (en. programming) je vještina pomoću koje korisnik stvara i izvršava algoritme koristeći određene programske jezike da bi napravio računarski program. Programiranje sadrži elemente umjetnosti, nauke, matematike i konstruisanja. mer piše programski kod u nekom programskom jeziku. Različiti programski jezici podržavaju različite stilove programiranja (programska paradigma). Različiti programski jezici zahtjevaju različite nivoe znanja, umijeća i detalja koje programer treba posjedovati.

Jedini programski jezik koji računar može direktno izvršavati je mašinski jezik (mašinski kod ili binarni kod). U počecima računarstva programeri su pisali u mašinskom kodu, što je bilo vrlo komplikovano i zamorno. Sljedeći korak u razvoju računarskog programiranja ogleda se u upotrebi simboličkih jezika, poznatih pod zajedničkim nazivom asembler. Asemblerski jezici sastoje se od jednostavnih instrukcija koje se direktno i jednoznačno mogu prevesti u mašinski kod koji se direktno izvršava. Iako mnogo pogodnije i od mašinskog programiranja, asemblersko programiranje karakteriše velika količina posla koju programer mora obaviti, zbog činjenice da su operacije i dalje elementarne. Zbog toga su stručnjaci stvorili programske jezike višeg nivoa pomoću kojih se piše izvorni kod koji se u mašinski kod prevodi posredstvom specijalnih programa - prevodilaca čiji je zadatak da prevede kod višeg programskog jezika u mašinski kod tzv. interpreter i kompajler.

1.1. Potreba za agentima

Dosadašnji razvoj tehnologije mreža, računarske tehnologije i samog Interneta je doveo do mnogih promjena kako u poslovanju, zabavi, obrazovanju i uopšte u društvu, tako i u samom procesu razvoja softvera. Pošto je evidentan eksponencijalni rast količine informacija i ponuđenih usluga na Internetu može se pretpostaviti da to vodi ka jednoj tački u kojoj će stotine miliona ljudi širom svijeta imati brz i sveobuhvatan pristup toj ogromnoj količini informacija koristeći računare na poslu, u školi, u kući, ili koristeći televizore, telefone, pejdžere, komandne table automobila sa bilo kog mjesta na ovoj planeti.
Zamislimo na trenutak da imamo dovoljno slobodnog vremena za jedno turističko putovanje. Većina ljudi bi tada kontaktirala nekog agenta u turističkoj agenciji koji bi sredio sve detalje vezane za to putovanje. Njemu bismo rekli svoje potrebe, gdje i kada želimo da putujemo, nametnuli bismo mu neka ograničenja u vezi količine novca koji možemo da potrošimo, pomenuli bi mu i neke svoje preferencije kao što je željeni avio prevoznik, mjesto u avionu na kome bi željeli da sjedimo, soba sa pogledom na more. Agent iz turističke agencije bi nam tada, koristeći raspoložive izvore informacija kao što su red letenja i hotelski vodiči kao i prethodno iskustvo iz rada u agenciji, predložio gdje bismo to mogli otići. Kada mu potvrdimo naše planove, agent će nam rezervisati kartu, mjesto u hotelu i uraditi i sve druge stvari sa kojima mi ne želimo da se zanimamo.
Hajde da sada malo razmišljamo o putovanju na Internetu. Zar ne bi bilo lepo imati agenta koji će nam pomoći i sa ovim putovanjima? Mogli bismo mu reći naše potrebe (da pronađe članke u novinama iz određene naučne oblasti), ograničenja (da je korišćen određeni eksperiment) i naše preferencije (da su članke pisali ljudi sa "vodećih" univerziteta). Tada bi taj "Internet agent" pronašao određene članke i čekao na potvrdu da je to ono što smo i tražili. Ako smo se složili sa njegovim izborom, agent bi skinuo te članke na naš računar brinući o svim, za nas dosadnim, detaljima (popunio bi sve forme za registraciju, platio neke članke kreditnom karticom i sl.).
Sa fenomenom razvoja Interneta pojavile su se i nove kategorije softvera kao što su web-čitači (browseri), mašine za pretraživanje Interneta, roboti, pauci, već pomenuti agenti.Web-čitači i mašine za pretraživanje su dizajnirani za interaktivno korišćenje, dok se pauci, roboti i agenti uopšte koriste za operacije koje korisnik ne nadgleda. Sada, kada je vreme jedan od najskupljih resursa koje čovjek može potrošiti, izuzetno je važno da se ono dobro iskoristi. Samim pomjeranjem čoveka od fizičkog ka mentalnom radu i od jednostavnijih ka složenijim, apstraktnijim problemima, otvara se mogućnost da više obraćamo pažnju na ono što je bitno i za šta je stvarno potreban ljudski mozak. Tu se upravo uklapaju i softverski agenti. Oni obavljaju određene poslove u ime korisnika računara, u pozadini, dok se on bavi nekim važnijim i težim problemima. Ti agenti tako postaju naše prave sluge u koje se sve više možemo pouzdati.
Sveukupan razvoj u računarskoj industriji nameće potrebu za gore pomenutim kategorijama softvera. Oblast je prilično široka jer se svakim danom pojavljuju nove potrebe korisnika, novi tipovi softvera i okruženja, a time se i diverzifikuju usmerenja softverske industrije ka potpuno novim programima. Da li će agenti nastaviti trendom sve šire prisutnosti u cijeloj priči, ostaje da se vidi. Ovaj rad pokazuje koje su njihove prednosti, ali i mane, kako se oni prave, a i kolika je njihova trenutna raširenost za koju prosječan korisnik računara možda i ne zna.

2.5. Način funkcionisanja mobilnih agenata


Mobilni agent je ustvari jedan složeni entitet koji se sastoji iz dva glavna dijela. Jedan dio je sam kod koji se sastoji od instrukcija koje definišu ponašanje agenta, dok je drugi dio trenutno stanje agenta koje se mijenja tokom njegovog rada. Ako posmatramo razne tipove softvera, možemo često vidjeti da su ova dva dijela odvojena. Na primer, u tipičnom programu kod je na disku dok se njegovo trenutno stanje nalazi u RAM-u. Mobilni agent, za razliku od tog pristupa, spaja ova dva dijela zajedno. Kada mobilni agent ode na neki drugi server, on tamo prebacuje i svoj kod i stanje. Tako, mobilni agent ne pamti samo šta i kako treba da uradi, već zna i šta je ranije radio.
Kada mobilni agent prelazi na drugi server, oba ova dijela moraju biti spakovana i spremljena za prenos. Tada agenti, u slučaju da su implementirani u nekom okruženju koje koristi Java programski jezik kao svoju osnovu, moraju primeniti princip serijalizacije. Taj metod obično koriste aplikacije koje su domaćini mobilnim agentima, i on je prisutan u Java Development Kit-u (JDK) od verzije 1.1. Kroz proces serijalizacije, svi objekti koji su predviđeni za to u okviru jednog agenta, kao i svi drugi objekti do kojih imamo doseg kroz taj prvi objekat, zapisuju se u jedan tok bajtova. Objekat može biti serijalizovan ako implementira ili Serializable ili Externalizable interfejs. Kada agent pristigne na novi server, dešava se suprotni proces - stanje i kod agenta se rekonstruiše iz toka bajtova.
Ali, jako je bitno napomenuti da se ne rekonstruiše celokupno stanje tog agenta! Stanje izvršenja programa i programski brojači niti programa koje poseduje mobilni agent se ne serijalizuju. Serijalizacija dotiče samo podatke na heap-u, (deo memorije, stek) ali ne i programske brojače i podatke na steku. Znači, kada agent prelazi na drugi server takvi podaci se gube. U teoriji, mobilni agent bi možda trebalo da bude u stanju da sa sobom ponese cijelokupno svoje stanje. Međutim, on to ne može uraditi ako je implementiran u nekom Java orijentisanom okruženju zbog arhitekture Java virtualne mašine koja ne dozvoljava programu da direktno pristupa i manipuliše izvršnim stekovima. To je dio ugrađenog sigurnosnog modela Jave.
Agent mora prije samog momenta serijalizacije da stavi na heap sve što kasnije, kada stigne na novi server, treba da se rekonstruiše. On ne smije ništa od ovih podataka ostaviti na steku jer će ti podaci onda biti izgubljeni. Da bi se to izbeglo, često se u implementaciji mobilnih agenata primenjuje rešenje da server-domaćin obavesti agenta da će biti serijalizovan da bi ovaj mogao da se za to pripremi prebacivanjem podataka na heap. Gledajući ovaj proces rekonstrukcije stanja sa praktične tačke gledišta, nemogućnost mobilnog agenta da pri pristizanju na novi server nastavi sa izvršenjem koda baš u onom programskom redu u kome je stao na prethodnom serveru i nije neko nerazumno ograničenje. Ono nas prosto tjera da pri dizajnu agenata razmišljamo na jedan poseban način, posmatrajući mobilne agente kao entitete koji prelaze iz jednog konačnog stanja u neko drugo. Ako u svakom trenutku vremena, tokom života agenta, možemo saznati gledajući u heap u kom se on stanju nalazi, onda taj agent može biti serijalizovan u bilo kom momentu.
Takođe, iako nemogućnost da serijalizujemo izvršne stekove dovodi do toga da serveri moraju prije same serijalizacije uputiti upozorenje agentu, to upozorenje bi, i da nije potrebno, vjerovatno bilo dobra ideja. Ko zna šta bi se moglo desiti da server-domaćin serijalizuje agenta koji o tome ne zna ništa. Možda agent mora da završi neki proces koji još uvek nije kompletiran pre nego što dozvoli serijalizaciju, ili možda čak ne želi da se serijalizuje, čime se postiže ona neophodna autonomnost agenta.
Životni ciklus mobilnog agenta se može prikazati slikom 4.

Ovaj dijagram je dosta sličan dijagramu koji bi se mogao nacrtati za životni ciklus apleta, jer je i ponašanje apleta donekle slično ponašanju mobilnog agenta. Evo šta se dešava u svakom od ova četiri koraka:
• inicijalizacija - tada se, samo jednom u toku životnog ciklusa agenta, izvode aktivnosti kao što je izgradnja inicijalnih struktura podataka
• startovanje - agent startuje sa svojim radom, u određenim trenucima migrira sa jednog servera na drugi i na svakom od njih izvršava unapred definisane instrukcije
• pauziranje - čuvanj međustanja, sjedinjava sve niti programa, i staje
• završetak rada - opet samo jednom u toku svog životnog ciklusa, agent prekida sve aktivnosti

Mobilni agenti migriraju između lokacija koje se zovu domaćini ili serveri agenata. Ti serveri obezbeđuju agentima resurse potrebne za njihov rad. Oni su takođe, kao što je već pomenuto, odgovorni za mehanizme serijalizacije agenata i njihovo pomeranje sa jednog na drugi server. Slika 5. pokazuje jedan od načina na koji se taj proces može dešavati:

Dodajte nesto na temu samog programiranja. 1
Sadržaj: 2
1. Uvod 3
1.1. Potreba za agentima 3
2.5. Način funkcionisanja mobilnih agenata 3
3. Programiranje intelingentih agenata - mobilnih agenata 6
3.1. Izbor okruženja za razvoj 6
3.2. Dokumentacija sistema agenata Crawler (IZVOR-LITERATURA!) 8
4. Osobine sistema agenata Crawler 19
4.1. Korisnički interfejs i nivoi vidljivosti 19
4.2. Događaji kao pokretači akcija 19
5. Primer kodova 21
6. Zaključak 27
7. Literatura 28


PORUČITE RAD NA OVOM LINKU >>> SEMINARSKI
maturski radovi seminarski radovi maturski seminarski maturski rad diplomski seminarski rad diplomski rad lektire maturalna radnja maturalni radovi skripte maturski radovi diplomski radovi izrada radova vesti studenti magistarski maturanti tutorijali referati lektire download citaonica master masteri master rad master radovi radovi seminarske seminarski seminarski rad seminarski radovi kvalitet kvalitetni fakultet fakulteti skola skole skolovanje titula univerzitet magistarski radovi

LAJKUJTE, POZOVITE 5 PRIJATELJA I OSTVARITE POPUST
05:31 PM
Poseti veb stranicu korisnika Pronađi sve korisnikove poruke Citiraj ovu poruku u odgovoru
Nova tema  Odgovori 


Verovatno povezane teme...
Tema: Autor Odgovora: Pregleda: zadnja poruka
  Diplomski rad - Primjena samoorganizirajućih programskih agenata erik_bananamen 0 1,764 12-05-2011 07:27 PM
zadnja poruka: erik_bananamen
  Maturski rad - Dinamičko programiranje erik_bananamen 0 3,741 28-04-2011 12:58 PM
zadnja poruka: erik_bananamen
  Programi programiranje i programski jezici Dzemala 0 3,147 17-02-2011 11:43 PM
zadnja poruka: Dzemala
  Racunari i programiranje Vesnica 0 3,411 21-06-2010 10:30 PM
zadnja poruka: Vesnica
  Programiranje aplikacija Vesnica 0 4,116 15-06-2010 02:34 PM
zadnja poruka: Vesnica

Skoči na forum: