En agentorienteret tilgang (herefter AOP) til programmering er en slags programrepræsentation eller et programmeringsparadigme , hvor de grundlæggende begreber er begreberne for en agent og dens mentale adfærd , afhængigt af det miljø , hvori den befinder sig. Konceptet blev foreslået af Shochem ( eng. Yoav Shoham ) i 1990 [ 1] . Definition af et paradigme givet af forfatteren: [2]
Dette nye programmeringsparadigme kaldes ganske rimeligt rationel programmering. Ligesom objektorienteret programmering har flyttet paradigmet fra at skrive procedurer til at skabe objekter, har rationel programmering flyttet paradigmet fra at skabe informationsobjekter til at skabe motiverede agenter.
En agent er alt, hvad der kan betragtes som at opfatte sit miljø ved hjælp af sensorer og virke på dette miljø ved hjælp af aktuatorer . [3]
Shochem, der præsenterer den agentorienterede tilgang som et nyt paradigme, diskuterer tilstrækkeligt detaljeret i hvilken betydning ordet agent bruges i det . Faktum er, at dette ord kan bruges i forskellige relaterede betydninger. Og selvom Shochem forstår en softwareagent som en agent , er han baseret på teorien om kunstig intelligens og tager udgangspunkt i konceptet om en intelligent agent , som allerede eksisterede tidligere. Men da han bemærkede, at dette koncept er ret vagt, sætter han sig som mål at transformere det til mere formel anvendelse i programmering, idet han foreslår en særlig AOP- ramme . Som et resultat er begrebet en agent, i modsætning til et simpelt objekt , udstyret med en række mentale konstruktioner, såsom tro, pligter og evner. Derfor vil der opstå forskellige mentale kategorier i programmeringssproget, og programmeringens semantik vil hænge sammen med mentale konstruktioners semantik. [en]
Afhængigt af miljøets frihedsgrad, hvilket indebærer tilstedeværelsen af en passende type middel i det, er miljøerne opdelt i [5] :
Lukket Den ultimative deterministiske eller probabilistiske beskrivelse af hele miljøet, som er kendt af agenten på forhånd eller gennem udforskning . åben Den endelige deterministiske eller probabilistiske beskrivelse af det lokale område af miljøet, hvor agenten befinder sig, og som er kendt af ham på forhånd eller gennem forskning. Transformerbar Dynamisk udviklende miljøer, hvis udviklingsstruktur er en agent.Den agentorienterede tilgang er et specialtilfælde (specialisering) af objektorienteret programmering (OOP). I OOP forstås en beregningsproces ganske bredt som et system sammensat af objekter , der interagerer med hinanden gennem beskeder . AOP specialiserer disse begreber ved at etablere en tilstand (kaldet en mental tilstand) af objekter (kaldet agenter), der består af komponenter såsom tro(er) (inklusive overbevisninger om verden, om sig selv og om hinanden), evner og beslutninger , som hver har en bestemt syntaks. Derudover er der lagt forskellige begrænsninger på agentens mentale tilstand. Beregning består af at informere agenter, opfylde deres krav, opfylde deres forslag, acceptere, afvise, konkurrere og hjælpe hinanden. [en]
OOP | AOP | |
---|---|---|
Grundenhed | et objekt | agent |
Parametre, der bestemmer hovedenhedens tilstand | ubegrænset | overbevisninger, forpligtelser, evner, valg.... |
Beregningsproces | meddelelsesankomst og svarmetoder | meddelelsesankomst og svarmetoder |
Typer af beskeder | ubegrænset | information, anmodning, tilbud, løfte, afslag .... |
Metodebegrænsninger | Ingen | ærlighed, konsistens.... |
Tilstedeværelsen af en målsætningsmekanisme i en agent giver et fundamentalt nyt niveau af autonomi. En agent følger ikke nødvendigvis ordrer fra nogen anden agent eller bruger, den afhænger blot af miljøets forhold, herunder andre agenters mål og hensigter. I modsætning til et objekt kan en agent påtage sig visse forpligtelser eller omvendt nægte at udføre noget arbejde, motivere dette med manglende kompetence, have travlt med en anden opgave osv. Samtidig kan en agent udføre handlinger som at generere, undertrykkelse og udskiftning af andre agenter, aktivering af funktioner (både ens egne og andre agenters), aktivering af et aktivitetsscenarie, memorering af andre agenters aktuelle tilstand osv. [6] .
Årsager til fremkomsten af en agent-baseret tilgang:
Generelt bør et AOP-system omfatte følgende grundlæggende komponenter: [7] [8]
De vigtigste egenskaber, som agenter bør have, anses for at være :
Distribuerede objektarkitekturer ( CORBA , DCOM , Java RMI , WEB-services ), der har mange af de anførte egenskaber, har følgende ulemper:
JADE Distributed Object Environment (baseret på Java RMI, Java CORBA IDL, Java Serialization og Java Reflection API) giver Java- agenter følgende egenskaber:
Strukturelt kan midlet repræsenteres som følger :
Agent | |->Ressourcer | |->Objekter | |->funktioner | |->dataEt typisk eksempel på en agentorienteret tilgang er specielle programmer, der efterligner spillernes handlinger i computerspil. Et almindeligt navn for sådanne programmer er bots . Brugen af bots er dog ikke begrænset til computerspil . De kan findes som et element i programmet i chats og fora, der spiller rollen som "samtaler" og understøtter "diskussioner". Nogle bots udfører dog ikke kun rollen som imitatorer i kommunikationsprocessen eller spil, de bruges til at redigere tekstinformation (inklusive Wikipedia), til at etablere netværksforbindelser, moderere ressourcer osv.
Lad os tage et kig på boghandlerens emneområde, som vil illustrere de nødvendige trin for at bygge agentbaserede applikationer.
Hver indkøbsagent modtager titlen på den bog, den skal købe, som et kommandolinjeargument og forespørger med jævne mellemrum alle kendte sælgeragenter om at fremsætte en købsanmodning. Når tilbuddet er modtaget, bekræfter køberagenten det og afgiver ordren. Hvis mere end én salgsagent leverer bogen, vælger køberen det bedste tilbud (bedste pris). Efter at have købt den nødvendige bog, afslutter indkøbsagenten jobbet. Hver sælgeragent har en minimal grænseflade, hvorigennem brugeren kan tilføje nye titler (og deres priser) til det lokale katalog over bøger til salg. Sælgende agenter venter på anmodninger fra indkøbsagenter. Når de modtager en anmodning om en bog, tjekker de, om bogen er i deres katalog. I så fald svarer de med et tilbud med en pris. Ellers nægter de. Når de modtager en indkøbsordre, behandler de den og fjerner den ønskede bog fra deres katalog.
For at oprette en agent i JADE er det nok at definere dens initialiseringsmetode:
import jade.core.Agent ; public class BookBuyerAgent udvider Agent { protected void setup () { // Udskriv en velkomstbesked System . ud . println ( " Hej ! Køber - agent " + getAID (). getName () + " er klar . " ); } }Det faktiske arbejde, som en agent skal udføre, udføres normalt inden for "agentens adfærd". En adfærd er en opgave, som en agent kan udføre.
En agent kan udføre flere adfærd på samme tid. Det er dog vigtigt at bemærke, at planlægningen af flere adfærd i en agent ikke er proaktiv, men samarbejdsvillig. Det betyder, at når en adfærd er planlagt til at køre, action()kaldes dens metode og kører, indtil den er fuldført. Derfor er det programmøren, der bestemmer, hvornår agenten skifter fra at udføre en given adfærd til at udføre den næste.
I betragtning af den beskrevne planlægningsmekanisme er det vigtigt at understrege, at adfærd som den nedenfor forhindrer enhver anden adfærd i at udføre, fordi dens action()metode aldrig fuldender.
public class OverbearingBehavior udvider Behavior { public void action () { while ( true ) { // do something } } public boolean done () { return true ; } }