Programvareagent

Ein **programvareagent** er eit dataprogram som kan utføre oppgåver på vegner av ein oppdragsgjevar når det er sett inn i eit operativt miljø.

Agentar kan vere utforma med samansette eigenskapar frå ein eller fleire av kategoriane:
* intelligente (smarte) agentar basert på teori og teknikkar innanfor kunstig intelligens
* autonome agentar som har eigenskap av å kunne starte nye oppgåver på eiga hand
* mobile agentar som kan installere kopiar av seg sjølv i andre miljø
* distribuerte agentar som er utforma til å fungere i eit distribuert miljø
* samarbeidande agentar som krev eit miljø av fleire samverkande agentar for å fungere (sjå svermintelligens)
* lærande agentar

Ein agent kan definerast som ein entitet som handlar autonomt eller semi-autonomt. Det tydar at ein agent kan handle på eiga hand og treng ikkje til ei kvar tid vere styrt av kommandoar utanfrå.

## Omgrepsavgrensing
Innan programvare er ein agent ein sjølvstending kodesnutt eller eit program som tek sine eigne avgjerder basert på ei mengd med reglar. Underliggande prosessar i eit operativsystem kan falle inn under ein slik kategori, det same kan webklientar og emailklientar - det er altså eit nokså vidt omgrep, og nokre gonger kan grensene mellom agentar og vanlege program vere uklare. gir fire krav til agentar som ski dei frå andre program. Dei skal vere **autonome**, ha **reaksjonar til miljøet**, vere **målretta** og **uthaldande**.

Woolridge (2002) samanliknar agentar med objekt og ekspertsystem. I forhold til objekt er agentar (meir) autonome, dei har ein fleksibel åtferd (reaktiv, proaktiv og sosial; objekt er berre reaktive) og dei kan ha fleire kontrolltrådar. I forhold til ekspertsystem er agentar sterkare kopla til miljøet, dei er proaktive og reaktive og skal ha ei sosial evne (utover berre språkforståing).

Når ein talar om agent-drivne system, talar ein ofte om *distribuert kunstig intelligens*. Ein agent kan ha sitt avgrensa bruksområde, medan eit system av agentar kan tene større oppgåver og eit felles mål. Måten dei arbeider i parallell, kvar med sin deloppgåve, kan samanliknast med korleis menneskehjernen fungerer. Programvareagentar er nært kopla til multi-agentsystem (MAS), distribuert problemløysing og parallell kunstig intelligens.

## Historie
I følgje Alan Kay (Computer Software, 1984) kjem idéen frå John McCarthy og Oliver Selfridge som på 1950- og 1960-talet arbeide med konseptet *soft robots*, som skulle leve i maskinen og utføre oppgåver, og spørje menneske om hjelp (i eit forståeleg språk) når dei trong det.

Konseptet kan òg sporast til Hewitts *[[aktørmodell]]* (Hewitt, 1977) - eit sjølvberga, interaktivt og samutførande objekt med ein intern tilstand og kommunikasjonsevne.

Apples John Sculley skildrar i 1987 i videoen "Knowledge Navigator" sin visjon for eit agentsystem. Brukaren har ein agent som handsamar lynmeldingar (IM), ein agent som handsamar epost, ein presentasjonsagent osb. Desse kan samarbeide og automatisk sende svar tilbake i form av epost, telefon osv.

## Kjelder
*Franklin, Stan og Graesser, Art (1996). "Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents". Proceedings of the Third International Workshop on Agent Theories, Architectures, and Languages. Springer-Verlag.
*Wooldridge, Michael (2002). *Introduction To Multi-Agent Systems*. John Wiley & Sons.

## Bakgrunnsstoff
*FIPA - Foundation for Intelligent Physical Agents, ein standardorganisasjon for agentsystem
*JADE - Java Agent DEvelopment framework, eit Java-rammeverk for agentprogrammering