Agentbaserad tillvägagångssätt

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 31 oktober 2018; kontroller kräver 7 redigeringar .

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]

Betydelse av termen "agent"

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]

Relaterade begrepp

Ett objekt  Programessensen i en given struktur och specifika mekanismer för att interagera med andra objekt genom meddelandeöverföring. Meddelanden skapas och skickas som svar på inkommande meddelanden. Meddelanden bildas av procedurer baserade på data. Skådespelare Mjukvarans kärna i den givna strukturen och mekanismerna för interaktion. Ombud En mjukvaruenhet för att utföra tilldelade uppgifter. Den har beteende , nämligen: den interagerar med en extern komplex och dynamiskt utvecklande miljö som kan modifieras eller modifieras av andra agenter beroende på specifika förhållanden. Interaktion innebär [4] :

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.

Förhållandet mellan AOP och OOP

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] .

Från uppgift till implementering

Orsaker

Orsaker till framväxten av ett agentbaserat tillvägagångssätt:

  1. behovet av att övervinna gränserna för operativa miljöer;
  2. eliminering av heterogenitet hos objektmodeller orsakad av det faktum att klasser och objekt byggda i olika verktygsmiljöer har vissa skillnader.

Förklaring av problemet

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 :

  1. Aktivt beteende, konstant utbyte av information "inom" agenten och mellan agenten och omgivningen;
  2. Kommunikation - datautbyte med den yttre miljön;
  3. Perception av miljön - närvaron av speciella "medel" för uppfattning om miljön av agentens funktion;
  4. Mobilitet är förflyttning av en agent inom annan mjukvara och fysiska miljöer och/eller komponenter.

Implementeringar

Distribuerade objektarkitekturer ( CORBA , DCOM , Java RMI , WEB-tjänster ), som har många av de listade egenskaperna, har följande nackdelar:

  1. behovet av att kompilera om programkoder när man gör ändringar i objekt och gränssnitt ;
  2. omöjligheten av dynamisk anpassning av beteendet hos programobjekt beroende på omgivningens tillstånd och beteende;
  3. omöjlighet att explicit arbeta med kunskapsmodeller ;

JADE Distributed Object Environment (baserad på Java RMI, Java CORBA IDL, Java Serialization och Java Reflection API) ger Java -agenter följande egenskaper:

  1. Autonomi, förmågan att utföra åtgärder på egen hand: agenten följer en lista över beteenden som kan fyllas på asynkront, det vill säga både i standby-läge och i "upptagen-arbetande"-läge.
  2. Hållbarhet: Har ingen biverkning efter varje beteende, har förmågan att rulla tillbaka.
  3. Aktivt beteende: är att i händelse av misslyckande görs cykliska försök att exekvera det nuvarande, och sedan gå vidare till nästa åtgärd av beteendet. Under utförandet av beteendet är agenten upptagen - interagerar inte med omgivningen. När det aktuella beteendet har slutförts flyttar agenten till nästa i listan, och om det inte finns någon lista väntar den på att en ska visas. Objektet å andra sidan har ingen nedstigning i händelse av framgång, och i händelse av misslyckande, släpper det uppgiften.
  4. Mobilitet: förmågan att överföra en agent till en annan container . Den här egenskapen uppstår från avsaknaden av en bieffekt efter utförandet av varje beteende .

Agentstruktur

Strukturellt kan medlet representeras enligt följande :

Ombud | |->Resurser | |->Föremål | |->funktioner | |->data

Uppförandestruktur

Exempel

Ett 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.

Jade

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 ; } }

Anteckningar

  1. 1 2 3 Shoham Yoav. Agentorienterad programmering  :  Teknisk rapport STAN-CS-90-1335. - Datavetenskapliga institutionen, Stanford University , 1990.
  2. Shoham Yoav. Multiagentsystem: Algoritmiska, spelteoretiska och logiska grunder = Artificiell intelligens: en modern  metod . - Cambridge University Press, 2009. - 504 sid. — ISBN 9780521899437 .  (Tillgänglig: 1 juni 2010)
  3. Stuart Russell, Peter Norvig. Artificiell intelligens: ett modernt tillvägagångssätt = Artificial Intelligence: A Modern Approach . - den andra. — M .: Williams . — 1407 sid. — ISBN 5-8459-0887-6 .
  4. B. Hayes-Roth
  5. citerad av D.A. Pospelov Arkiverad den 14 januari 2012.
  6. Tarasov V.B. Agenter, multiagentsystem, virtuella gemenskaper: en strategisk riktning inom datavetenskap och artificiell intelligens  // Nyheter om artificiell intelligens: lör - 1998. - Nr 2 . - S. 5-63 . Arkiverad från originalet den 14 januari 2012. (Tillgänglig: 25 maj 2010)  
  7. Shoham Yoav. Agentorienterad programmering  (engelska)  // Artificiell intelligens. - 1993. - Nej . 60(1) . - S. 51-92 . Arkiverad från originalet den 13 januari 2012.  (Tillgänglig: 25 maj 2010)
  8. Tarasov V.B. Från multiagentsystem till intelligenta organisationer: filosofi, psykologi, datavetenskap . - M . : Redaktionell URSS, 2002. - S. 352 . — ISBN 5-8360-0330-0 .

Se även

Litteratur