Programski agenti

Višeagentski sustav je skup programskih agenata koji međusobno komuniciraju u svrhu rješavanja zadataka koje pojedinačni agenti ne mogu samostalno riješiti. Programski agent je dakle socijalno „biće“...
U moru tehnoloških datosti našeg informacijskog doba programski agenti zauzimaju značajno mjesto u području programskog inženjerstva. Sam pojam agenta potječe iz sedamdesetih godina dvadesetog stoljeća kad ga je Hewitt definirao kao „samostalni, interaktivni i konkurentno izvodljivi objekt s unutarnjim stanjima i sposobnošću komunikacije“. Programski agenti potječu iz višeagentskih sustava (engl. Multi-agent systems, MAS) - proizvoda distribuirane umjetne inteligencije. Višeagentski sustav je skup programskih agenata koji međusobno komuniciraju da bi riješili zadatke koje pojedinačni agenti ne mogu samostalno riješiti. Programski agent je dakle socijalno „biće“.
Programski agent je zapravo program, komadić softvera, koji obavlja određene zadatke za korisnika. Ako ima svojstvo učenja i zaključivanja, kažemo da je inteligentan. Agent može sam birati način na koji će rješavati svoje zadatke, određivati njihove prioritete, donositi odluke te imati svoje ciljeve pa kažemo da je autonoman. Agent je reaktivan i proaktivan, dakle može odgovarati na podražaje iz okoline, ali isto tako može i sam inicirati komunikaciju. Pokretni programski agenti mogu mijenjati svoje mjesto unutar distribuiranog sustava u kojemu se nalaze. Pokretni agenti se fizički sele s jednog računala na drugo, odnosno idu na mjesto gdje je aktivno elektroničko tržište. Takvo njihovo seljenje znatno smanjuje troškove jer se smanjuje mrežna komunikacija na lokalnu, ali time se povećavaju mjere sigurnosti koje moraju biti kvalitetno inkorporirane u sustavu jer dosta pokretnih programskih agenata ima odlike slične virusima.
Programski agent kao programska apstrakcija ponešto je sličan objektima u tehničkoj izvedbi. Za razliku od objekata koji su definirani atributima i metodama, agenti su definirani svojim ponašanjima. Dakle, kao program agent ne odgovara samo na zahtjeve iz okoline već djeluje kontinuirano i samostalno odlučuje kad će izvesti koju aktivnost.

Primjena programskih agenata

O prednostima interneta ne treba posebno govoriti. Internet je unio revoluciju u sve aspekte našeg življenja, od količine dostupnih informacija do novih mogućnosti komunikacije. Međutim, tu su i određeni problemi. Prvo, ponekad je teško naći odgovarajuću informaciju. Bilo bi idealno imati osobnog asistenta koji bi za nas konstantno pretraživao sve dostupne izvore informacija, one koji nas zanimaju, ali i one koji nas ne zanimaju, koji bi pronalazio nove internetske stranice za nas, sortirao našu elektroničku poštu prema našim prioritetima, odbacio neželjene poruke. Ovakvo što zasad ne postoji u punom smislu primjene, a idealno je mjesto za ubaciti programske agente. Rani radovi iz ovoga područja grupe s MIT-a razvili su upravo ovakve aplikacije, npr. aplikaciju koja je za korisnika prikupljala novosti i članke koje zanimaju korisnika. Aplikacija nije govorila korisniku što da čita, već mu je samo pomagala s prijedlozima za čitanje u skladu s njegovim željama i namjerama. U smislu tehnologije agenti ove zadatke upravljanja osobnim podacima mogu dosta uspješno obavljati.
Internet je dragocjen izvor ne samo informacija nego i razmjene dobara i usluga. Internetom se naručuje pizza i cipele, ali sve više i skuplje stvari od toga. Programski agenti ključni su nosioci ove paradigme. Postoje, tzv. korisnički agenti koji rade za kupca i poslovni agenti koji se odnose na poslodavca. Korisnički agent služi da nam pribavi kino ulaznice za najnoviji film u subotu navečer i rezervira nam stol za večeru u obližnjem restoranu nakon toga. Kad mu se daju sve potrebne informacije o korisnikovim preferencijama (je li vegetarijanac, voli li začinjenu hranu, preferira li komedije pred trilerima, itd.), agent je spreman za kupovanje na elektroničom tržištu – s „kino“ agentima dogovorit će se o najboljem terminu kino predstave, a sa „restoran“ agentima dogovorit će najbolji izbor mjesta i vremena za večeru. Ako se ne bude mogao naći optimalan izbor restorana, agent će opet pregovarati s „kino“ agentima da promijeni izbor filma ili vrijeme gledanja filma. Sve ove aktivnosti preko agenata uštedjet će korisniku dragocjeno vrijeme da se bavi drugim stvarima. Programski agenti ne osnažuju svojim mogućnostima samo individualne korisnike već mogu povećati efikasnost i unutar organizacija odnosno poboljšati upravljanje poslovnim procesima. Koriste se, primjerice, u procesima dizajniranja zrakoplova, gradnji kupovnih centara ili kod tendera za velike ugovore koji postaju iznimno složeni. U njima je obično uključen veliki broja osoba koje su dislocirane u velikom broju različitih odjeljaka, a svi rade zajedno na rješavanju istog problema. Npr. kod tendera za velike ugovore pravni, tehnički, marketinški i drugi odjeljci kompanije moraju zajedno raditi. Pravni odjeljak provjerava legalnost natječaja, tehnički odjeljak brine o tehničkoj specifikaciji, marketinški odjeljak brine o najboljoj mogućoj prezentaciji kompanije, itd. Sav taj posao se tradicionalno radi ručno, a posljedica toga su zaboravljanje i netočne informacije poslane krivim ljudima u krivo vrijeme što je zapravo vrlo zahtijevan i skup postupak. U posljednje su vrijeme organizacije počele u tu svrhu uvoditi odgovarajuću računalnu podršku za automatizaciju nekih od ovih procesa, ali takvi alati su uglavnom prestrogi i ne prate odgovorajuće promjene u okolini ili neočekivane događaje. Potrebni su „mekši“ alati koji su više prilagođeni za rad s ljudima.
Programski agenti „zaposleni“ su već sada u velikom broju aplikacija za rješavanje novih vrsta problema (upravljanje osobnim informacijama i elektronička trgovina), ali i tradicionalnih problema (upravljanje poslovnim procesima i mrežno upravljanje). Njihova atraktivnost leži prije svega u njihovoj personalizaciji, odnosno prilagodbi pojedinačnim potrebama, sklonostima i željama ljudi ili organizacija. Mogućnosti programskog inženjerstva, posebice programskih agenata, su neiscrpne i relativno neograničene u smislu tehnološke izvedbe. Gotovo da je moguće dobiti softverski proizvod za bilo koju svrhu. Jedini ograničavajući čimbenik koji se u određenoj mjeri pojavljuje je interes ljudi. Primjerice, ne razumiju svi ljudi u uslužnim djelatnostima moć interneta i nužnosti da se bude online. Restoranu koji sasvim dobro posluje i bez softverskih pomagala može zvučati nepotrebno ulaziti u troškove uvođenja aplikacija za poboljšanje efikasnosti poslovanja. Ponekad i najelegantniji i efikasan softver ne može nadomjestiti ljudsku sklonost nesavršenim idejama odnosno niti najbolji softver nije najbolji ako ga nema tko koristiti. No, čak i tamo gdje programski agenti nisu ekplicitno uvedeni računalnom podrškom odnosno platformom za programsko izvođenje, oni svoju primjenu nalaze na drugi način.
Naime, najnoviji izazov programski agenti nalaze u novoj generacija weba, tzv. semantičkom webu ili webu 3.0 koji naviješta novu dimenziju u pretraživanju informacija. Informacije bi se pretraživale značenjski (semantički), a ne kao dosad isključivo prema sintaksi. Semantički web je web u kojem računala „razumiju“ značenje pojmova pa u tom smislu i drukčije komuniciraju međusobno - pomoću programskih agenata.
Konkretno, semantički programski agent koji u ime korisnika treba rezervirati mjesto u restoranu može na internetu naći mnoštvo korisnih informacija o restoranu koji savršeno odgovara preferencijama njegova korisnika iako sam restoran nije online. Tako agent može korisniku javiti da je našao puno pohvala o dotičnom restoranu za koji korisnik nije dotad znao i može eventualno pribaviti njegov broj telefona, adresu ili slično pa da korisnik sam odluči hoće li tamo otići. Dakle, ako restorani ili kina nisu online, inteligentni agenti pretražujući semantiku weba svejedno nalaze informacije o njima. Ukoliko se o odličnom restoranu lijepo piše u gastro vodičima, forumima i slično, agent će ga naći i dati preporuku svom korisniku. U tome i leži vrijednost agenata.
S inženjerske pak strane uvođenje semantičkog weba zahtijeva niz novih tehnologija koje agenti moraju koristiti poput novih meta podataka koji opisuju informacije s webskih izvora, ontologije za interpretiranje informacija i komunikaciju s drugim agentima, logike za procesiranje informacija, i slično. Programski agenti slijede nove izazove i postaju sve prisutniji i značajniji u programskom inženjerstvu. Daljnjim razvojem agenata i tehnologija za agente stvara se jedna sinergija novih mogućnosti čija sa granica svakim danom sve više pomiče odnosno briše.

Marina Bagić Babac