A programozás ágens-orientált megközelítése (a továbbiakban: AOP) egyfajta programreprezentáció vagy programozási paradigma , amelyben az alapfogalmak az ágens fogalmai és mentális viselkedése , attól függően, hogy milyen környezetben helyezkedik el. A koncepciót Shochem ( Eng. Yoav Shoham ) javasolta 1990 -ben [ 1] . A szerző által megadott paradigma definíció: [2]
Ezt az új programozási paradigmát ésszerűen nevezik racionális programozásnak. Ahogy az objektum-orientált programozás a paradigmát az eljárások írásáról az objektumok létrehozására helyezte át, a racionális programozás az információs objektumok létrehozásáról a motivált ágensek létrehozására helyezte át a paradigmát.
Az ágens minden olyan dolog, ami a környezetét szenzorok segítségével érzékeli , és e környezetre aktuátorok segítségével hat . [3]
Az ágens-orientált megközelítést új paradigmaként bemutató Shochem kellően részletesen taglalja, hogy milyen értelemben használják benne az ágens szót . Az a tény, hogy ez a szó különféle kapcsolódó értelemben használható. És bár Shochem a szoftverügynökön ügynököt ért , a mesterséges intelligencia elméletén alapul, és az intelligens ügynök fogalmából indul ki , amely már korábban is létezett. De észrevette, hogy ez a koncepció meglehetősen homályos, célul tűzte ki, hogy átalakítsa a programozásban való formálisabb alkalmazásra, és egy speciális AOP keretrendszert javasol . Ennek eredményeként az ágens fogalma, ellentétben egy egyszerű tárggyal , számos mentális konstrukcióval van felruházva, például hittel, kötelességekkel és képességekkel. Ezért a programozási nyelvben különféle mentális kategóriák jelennek meg, és a programozás szemantikája összekapcsolódik a mentális konstrukciók szemantikájával. [egy]
A környezet szabadsági fokától függően, amely megfelelő típusú ágens jelenlétét jelenti benne, a környezeteket a következőkre osztják: [5] :
Zárva A teljes környezet végső determinisztikus vagy valószínűségi leírása, amelyet az ágens eleve vagy feltárás útján ismer . nyisd ki A környezet azon helyi területének végső determinisztikus vagy valószínűségi leírása, amelyben az ágens található, és amelyet előzetesen vagy kutatás útján ismer. Átalakítható Dinamikusan fejlődő környezetek, amelyek fejlődő szerkezete egy ágens.Az ügynök-orientált megközelítés az objektum-orientált programozás (OOP) speciális esete (specializációja ). Az OOP-ban a számítási folyamatot meglehetősen tágan értjük, mint olyan objektumokból összeállított rendszert, amelyek üzeneteken keresztül kölcsönhatásba lépnek egymással . Az AOP úgy specializálja ezeket a fogalmakat, hogy létrehozza az objektumok (úgynevezett ágensek) állapotát (úgynevezett mentális állapot), amelyek olyan összetevőkből állnak, mint a hit(ek) (beleértve a világról, önmagáról és egymásról alkotott hiedelmeket), képességek és döntések. , amelyek mindegyikének saját szintaxisa van. Ezen túlmenően az ügynök mentális állapotára különféle korlátozások vonatkoznak. A számítás az ügynökök tájékoztatásából, követelményeik teljesítéséből, javaslataik teljesítéséből, egymás elfogadásából, elutasításából, versengéséből és egymás segítéséből áll. [egy]
OOP | AOP | |
---|---|---|
Alap egység | egy tárgy | ügynök |
A fő egység állapotát meghatározó paraméterek | korlátlan | hiedelmek, elkötelezettségek, képességek, választások... |
Számítási folyamat | üzenet érkezési és válaszadási módszerek | üzenet érkezési és válaszadási módszerek |
Az üzenetek típusai | korlátlan | információ, kérés, ajánlat, ígéret, visszautasítás .... |
Módszer korlátozások | Nem | őszinteség, következetesség.... |
A célmeghatározó mechanizmus jelenléte az ágensben az autonómia alapvetően új szintjét biztosítja. Egy ügynök nem feltétlenül követi más ügynök vagy felhasználó parancsait, egyszerűen a környezet feltételeitől függ, beleértve a többi ágens céljait és szándékait. Ellentétben egy tárggyal, az ágens bizonyos kötelezettségeket vállalhat, vagy éppen ellenkezőleg, megtagadhat bizonyos munkavégzést, motiválva ezt a kompetencia hiányával, más feladattal stb. más ágensek elnyomása, helyettesítése, funkciók aktiválása (mind a saját, mind a többi ágensé), egy tevékenységi forgatókönyv aktiválása, más ágensek aktuális állapotának memorizálása stb. [6] .
Az ügynök alapú megközelítés megjelenésének okai:
Általában egy AOP rendszernek a következő alapvető összetevőket kell tartalmaznia: [7] [8]
A fő tulajdonságokat, amelyekkel az ágenseknek rendelkezniük kell, tekintjük :
Az elosztott objektum architektúrák ( CORBA , DCOM , Java RMI , WEB-szolgáltatások ), amelyek számos felsorolt tulajdonsággal rendelkeznek, a következő hátrányokkal rendelkeznek:
A JADE Distributed Object Environment (Java RMI-n, Java CORBA IDL-n, Java Serialization-on és Java Reflection API-n alapuló) a következő tulajdonságokkal rendelkezik a Java ügynökök számára:
Szerkezetileg az ágens a következőképpen ábrázolható :
Ügynök | |->Források | |->Objektumok | |->függvények | |->adatokAz ügynök-orientált megközelítés tipikus példája a speciális programok, amelyek a játékosok tevékenységét imitálják a számítógépes játékokban. Az ilyen programok általános elnevezése a bot . A robotok használata azonban nem korlátozódik a számítógépes játékokra . A program elemeként megtalálhatók a "beszélgető" szerepét betöltő és a "megbeszéléseket" támogató chatekben és fórumokon. Egyes botok azonban nem csak utánzó szerepet töltenek be a kommunikáció vagy a játékok folyamatában, hanem szöveges információk szerkesztésére (beleértve a Wikipédiát is), hálózati kapcsolatok létrehozására, erőforrások moderálására stb.
Vessünk egy pillantást a Könyvkereskedők témakörre, amely bemutatja az ügynök alapú alkalmazások létrehozásához szükséges lépéseket.
Minden vásárlóügynök megkapja a megvásárolni kívánt könyv címét parancssori argumentumként, és rendszeresen lekérdezi az összes ismert eladói ügynököt, hogy vásárlási kérelmet tegyen. Az ajánlat beérkezését követően a vevő ügynöke visszaigazolja azt, és elküldi a megrendelést. Ha egynél több értékesítő biztosítja a könyvet, a vevő a legjobb ajánlatot (legjobb árat) választja. A szükséges könyv megvásárlása után a beszerzési ügynök befejezi a munkát. Minden eladói ügynök rendelkezik egy minimális felülettel, amelyen keresztül a felhasználó új címeket (és azok árait) adhatja hozzá az eladó könyvek helyi katalógusához. Az értékesítési ügynökök várják a vevő ügynökök kérését. Amikor könyvkérést kapnak, ellenőrzik, hogy a könyv szerepel-e a katalógusukban. Ha igen, akkor árajánlattal válaszolnak. Ellenkező esetben elutasítják. Amikor megkapják a vásárlási rendelést, feldolgozzák azt, és eltávolítják a kért könyvet a katalógusukból.
Ügynök létrehozásához a JADE-ben elegendő az inicializálási metódus meghatározása:
import jade.core.Agent ; public class BookBuyerAgent expands Agent { protected void setup ( ) { // Üdvözlő üzenet nyomtatása System . ki . println ( " Hello ! Vevő - ügynök " + getAID ( ). getName ( ) + " készen áll . " ) ; } }A tényleges munkát, amit egy ügynöknek el kell végeznie, általában az „ügynök viselkedésén” belül végzik. A viselkedés olyan feladat, amelyet az ügynök elvégezhet.
Egy ügynök egyszerre több viselkedést is végrehajthat. Fontos azonban megjegyezni, hogy egy ügynök több viselkedésének ütemezése nem proaktív, hanem együttműködő. Ez azt jelenti, hogy amikor egy viselkedés futásra van ütemezve, a metódus action()meghívásra kerül, és addig fut, amíg be nem fejeződik. Ezért a programozó határozza meg, hogy az ügynök mikor vált át egy adott viselkedés végrehajtásáról a következő végrehajtására.
Tekintettel a leírt ütemezési mechanizmusra, fontos hangsúlyozni, hogy az alábbihoz hasonló viselkedés megakadályozza bármely más viselkedés végrehajtását, mivel a action()módszer soha nem fejeződik be.
public class OverbearingBehavior expands Behavior { public void action ( ) { while ( igaz ) { // csinálj valamit } } public logikai érték kész () { return true ; } }