Ett agentorienterat förhållningssätt (nedan kallat AOP) till programmering är ett slags programrepresentation eller ett programmeringsparadigm där de grundläggande begreppen är begreppen för en agent och dess mentala beteende , beroende på i vilken miljö den befinner sig. Konceptet föreslogs av Shochem ( eng. Yoav Shoham ) 1990 [ 1] . Definition av ett paradigm som ges av författaren: [2]
Detta nya programmeringsparadigm kallas ganska rimligtvis rationell programmering. Precis som objektorienterad programmering har flyttat paradigmet från att skriva procedurer till att skapa objekt, har rationell programmering flyttat paradigmet från att skapa informationsobjekt till att skapa motiverade agenter.
En agent är allt som kan anses uppfatta sin miljö med hjälp av sensorer och agera på denna miljö med hjälp av ställdon . [3]
Shochem, som presenterar det agentorienterade tillvägagångssättet som ett nytt paradigm, diskuterar tillräckligt detaljerat i vilken mening ordet agent används i det . Faktum är att detta ord kan användas i olika relaterade betydelser. Och även om Shochem förstår en mjukvaruagent som en agent , så är han baserad på teorin om artificiell intelligens och utgår från konceptet om en intelligent agent , som redan existerade tidigare. Men när han noterade att detta koncept är ganska vagt, ställer han upp som mål att omvandla det för mer formell tillämpning i programmering, och föreslår ett speciellt AOP- ramverk . Som ett resultat är begreppet en agent, i motsats till ett enkelt objekt , försett med ett antal mentala konstruktioner, såsom tro, plikter och förmågor. Därför kommer olika mentala kategorier att dyka upp i programmeringsspråket, och programmerings semantik kommer att kopplas samman med mentalkonstruktioners semantik. [ett]
Beroende på miljöns frihetsgrad, vilket innebär närvaron av en lämplig typ av medel i den, delas miljöerna in i [5] :
Stängd Den ultimata deterministiska eller probabilistiska beskrivningen av hela miljön, som är känd för agenten a priori eller genom utforskning . öppna Den slutliga deterministiska eller probabilistiska beskrivningen av det lokala området i miljön där agenten befinner sig och som är känd för honom på förhand eller genom forskning. Transformerbar Dynamiskt utvecklande miljöer, vars utvecklande struktur är en agent.Det agentorienterade tillvägagångssättet är ett specialfall (specialisering) av objektorienterad programmering (OOP). I OOP förstås en beräkningsprocess ganska brett som ett system sammansatt av objekt som interagerar med varandra genom meddelanden . AOP specialiserar dessa koncept genom att etablera ett tillstånd (kallat mentalt tillstånd) av objekt (kallade agenter) som består av komponenter som tro(er) (inklusive föreställningar om världen, om sig själv och om varandra), förmågor och beslut , som var och en har en specifik syntax. Dessutom läggs olika restriktioner på agentens mentala tillstånd. Beräkning består av att informera agenter, uppfylla deras krav, uppfylla deras förslag, acceptera, förkasta, tävla och hjälpa varandra. [ett]
OOP | AOP | |
---|---|---|
Basenhet | ett objekt | ombud |
Parametrar som bestämmer huvudenhetens tillstånd | obegränsat | övertygelser, åtaganden, förmågor, val.... |
Beräkningsprocess | meddelandeinkomst och svarsmetoder | meddelandeinkomst och svarsmetoder |
Typer av meddelanden | obegränsat | information, begäran, erbjudande, löfte, avslag .... |
Metodrestriktioner | Nej | ärlighet, konsekvens.... |
Närvaron av en målsättningsmekanism hos en agent ger en fundamentalt ny nivå av autonomi. En agent följer inte nödvändigtvis order från någon annan agent eller användare, det beror helt enkelt på förhållandena i miljön, inklusive andra agenters mål och avsikter. Till skillnad från ett objekt kan en agent påta sig vissa skyldigheter eller omvänt vägra att utföra något arbete, motivera detta med bristande kompetens, vara upptagen med en annan uppgift etc. Samtidigt kan en agent utföra sådana handlingar som att generera, undertryckning och ersättning av andra agenter, aktivering av funktioner (både ens egna och andra agenters), aktivering av ett aktivitetsscenario, memorering av andra agenters nuvarande tillstånd, etc. [6] .
Orsaker till framväxten av ett agentbaserat tillvägagångssätt:
I allmänhet bör ett AOP-system innehålla följande grundläggande komponenter: [7] [8]
De huvudsakliga egenskaper som ombud bör ha anses vara :
Distribuerade objektarkitekturer ( CORBA , DCOM , Java RMI , WEB-tjänster ), som har många av de listade egenskaperna, har följande nackdelar:
JADE Distributed Object Environment (baserad på Java RMI, Java CORBA IDL, Java Serialization och Java Reflection API) ger Java -agenter följande egenskaper:
Strukturellt kan medlet representeras enligt följande :
Ombud | |->Resurser | |->Föremål | |->funktioner | |->dataEtt typiskt exempel på ett agentorienterat tillvägagångssätt är speciella program som imiterar spelares agerande i datorspel. Ett vanligt namn för sådana program är bots . Användningen av bots är dock inte begränsad till datorspel . De kan hittas som en del av programmet i chattar och forum som spelar rollen som "samtalare" och stödjer "diskussioner". Men vissa bots utför inte bara rollen som imitatorer i kommunikationsprocessen eller spel, de används för att redigera textinformation (inklusive Wikipedia), för att upprätta nätverksanslutningar, moderera resurser, etc.
Låt oss ta en titt på ämnesområdet Bokhandlare, som kommer att illustrera stegen som krävs för att bygga agentbaserade applikationer.
Varje inköpsagent får titeln på boken den ska köpa som ett kommandoradsargument och frågar regelbundet alla kända säljaragenter att göra en köpförfrågan. När erbjudandet har tagits emot bekräftar köparen det och skickar beställningen. Om fler än en säljare tillhandahåller boken väljer köparen det bästa erbjudandet (bästa priset). Efter att ha köpt den önskade boken avslutar inköpsagenten jobbet. Varje säljaragent har ett minimalt gränssnitt genom vilket användaren kan lägga till nya titlar (och deras priser) till den lokala katalogen över böcker till salu. Försäljningsagenter väntar på förfrågningar från inköpsagenter. När de får en förfrågan om en bok kontrollerar de om boken finns i deras katalog. I så fall svarar de med ett erbjudande med ett pris. Annars vägrar de. När de får en inköpsorder behandlar de den och tar bort den begärda boken från sin katalog.
För att skapa en agent i JADE räcker det med att definiera dess initialiseringsmetod:
importera jade.core.Agent ; public class BookBuyerAgent utökar Agent { protected void setup () { // Skriv ut ett välkomstmeddelande System . ut . println ( " Hej ! Köpare - agent " + getAID (). getName () + " är redo . " ); } }Själva arbetet som en agent ska göra görs vanligtvis inom "agentens beteende". Ett beteende är en uppgift som en agent kan utföra.
En agent kan utföra flera beteenden samtidigt. Det är dock viktigt att notera att schemaläggningen av flera beteenden hos en agent inte är proaktiv, utan samarbetsvillig. Det betyder att när ett beteende är schemalagt att köras action()anropas dess metod och körs tills den är klar. Därför är det programmeraren som bestämmer när agenten byter från att exekvera ett givet beteende till att exekvera nästa.
Med tanke på den beskrivna schemaläggningsmekanismen är det viktigt att betona att beteende som det nedan förhindrar något annat beteende från att exekvera eftersom dess action()metod aldrig slutförs.
public class OverbearingBehavior extends Behavior { public void action () { while ( true ) { // do something } } public boolean done () { return true ; } }