Agentbaseret tilgang

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 31. oktober 2018; checks kræver 7 redigeringer .

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]

Betydning af udtrykket "agent"

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]

Relaterede begreber

Et objekt  Programmets essens af en given struktur og specifikke mekanismer til at interagere med andre objekter gennem meddelelsesoverførsel. Beskeder dannes og sendes som svar på indgående meddelelser. Meddelelser er dannet af procedurer baseret på data. Skuespiller Software essensen af ​​den givne struktur og mekanismer for interaktion. Agent En softwareenhed til at udføre tildelte opgaver. Det har adfærd , nemlig: det interagerer med et eksternt komplekst og dynamisk udviklende miljø , der kan modificeres eller modificeres af andre agenter afhængigt af specifikke forhold. Interaktion indebærer [4] :

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.

Forholdet mellem AOP og OOP

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

Fra opgave til implementering

Årsager

Årsager til fremkomsten af ​​en agent-baseret tilgang:

  1. behovet for at overvinde grænserne for driftsmiljøer;
  2. eliminering af heterogenitet af objektmodeller forårsaget af det faktum, at klasser og objekter bygget i forskellige værktøjsmiljøer har visse forskelle.

Udtalelse af problemet

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 :

  1. Aktiv adfærd, konstant udveksling af information "indenfor" agenten og mellem agenten og miljøet;
  2. Kommunikation - dataudveksling med det eksterne miljø;
  3. Perception af miljøet - tilstedeværelsen af ​​særlige "midler" til opfattelse af miljøet af agentens funktion;
  4. Mobilitet er en agents bevægelse inden for anden software og fysiske miljøer og/eller komponenter.

Implementeringer

Distribuerede objektarkitekturer ( CORBA , DCOM , Java RMI , WEB-services ), der har mange af de anførte egenskaber, har følgende ulemper:

  1. behovet for at omkompilere programkoder, når der foretages ændringer i objekter og grænseflader ;
  2. umuligheden af ​​dynamisk tilpasning af programobjekters adfærd afhængigt af miljøets tilstande og adfærd;
  3. umulighed at arbejde eksplicit med vidensmodeller ;

JADE Distributed Object Environment (baseret på Java RMI, Java CORBA IDL, Java Serialization og Java Reflection API) giver Java- agenter følgende egenskaber:

  1. Autonomi, evnen til at udføre handlinger på egen hånd: Agenten følger en liste over adfærd, der kan genopfyldes asynkront, det vil sige både i standby-tilstand og i "optaget-arbejdende"-tilstand.
  2. Bæredygtighed: Har ingen bivirkning efter hver adfærd, har evnen til at rulle tilbage.
  3. Aktiv adfærd: er, at der i tilfælde af fejl gøres cykliske forsøg på at udføre den nuværende, og derefter gå videre til den næste handling af adfærden. Under udførelsen af ​​adfærden har agenten travlt - ikke interagerer med omgivelserne. Når den aktuelle adfærd er fuldført, flytter agenten til den næste på listen, og hvis der ikke er nogen liste, venter den på, at en vises. Objektet har på den anden side ingen nedstigning i tilfælde af succes, og i tilfælde af fiasko dropper det opgaven.
  4. Mobilitet: evnen til at overføre en agent til en anden container . Denne egenskab opstår som følge af fraværet af en bivirkning efter udførelsen af ​​hver adfærd .

Agentstruktur

Strukturelt kan midlet repræsenteres som følger :

Agent | |->Ressourcer | |->Objekter | |->funktioner | |->data

Opførselsstruktur

Eksempler

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

Jade

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

Noter

  1. 1 2 3 Shoham Yoav. Agentorienteret programmering  :  Teknisk rapport STAN-CS-90-1335. - Computer Science Department, Stanford University , 1990.
  2. Shoham Yoav. Multiagent-systemer: Algoritmisk, spilteoretisk og logisk grundlag = kunstig intelligens: en moderne  tilgang . - Cambridge University Press, 2009. - 504 s. — ISBN 9780521899437 .  (Få adgang: 1. juni 2010)
  3. Stuart Russell, Peter Norvig. Artificial Intelligence: A Modern Approach = Artificial Intelligence: A Modern Approach . - Sekundet. — M .: Williams . — 1407 s. — ISBN 5-8459-0887-6 .
  4. B. Hayes-Roth
  5. citeret af D.A. Pospelov Arkiveret den 14. januar 2012.
  6. Tarasov V.B. Agenter, multi-agent-systemer, virtuelle fællesskaber: en strategisk retning inden for datalogi og kunstig intelligens  // Nyheder om kunstig intelligens: Lør - 1998. - Nr. 2 . - S. 5-63 . Arkiveret fra originalen den 14. januar 2012. (Få adgang: 25. maj 2010)  
  7. Shoham Yoav. Agent-orienteret programmering  (engelsk)  // Kunstig intelligens. - 1993. - Nej. 60(1) . - S. 51-92 . Arkiveret fra originalen den 13. januar 2012.  (Få adgang: 25. maj 2010)
  8. Tarasov V.B. Fra multi-agent-systemer til intelligente organisationer: filosofi, psykologi, datalogi . - M . : Redaktionel URSS, 2002. - S. 352 . — ISBN 5-8360-0330-0 .

Se også

Litteratur