Агентно-орієнтований підхід (надалі АОП) до програмування — різновид представлення програм, або парадигма програмування, в якій основними концепціями є поняття агента і його поведінки, які залежать від , в якому він знаходиться. Концепція була запропонована Шохемом в 1990 році. Визначення парадигми, дане автором:
Цю нову парадигму програмування цілком розумно назвати раціональним програмуванням. Точно також як об'єктно-орієнтоване програмування зрушило парадигму з написання процедур до створення об'єктів, раціональне програмування зрушило парадигму з створення інформаційних об'єктів до створення мотивованих агентів. |
Агентом є все, що може сприймати своє середовище за допомогою датчиків і впливає на це середовище за допомогою виконавчих механізмів.
Це ж визначення в термінах Java:
/** * @ Author Ravi Mohan * @ Author Ciaran O'Reilly * / public interface Agent extends EnvironmentObject { / ** * Call the Agent's program, which maps any given percept * Sequences to an action. * * @ Param percept * The current percept of a sequence perceived by the Agent. * @ Return the Action to be taken in response to the currently * Perceived percept. * / Action execute (Percept percept); /** * Life-cycle indicator as to the liveness of an Agent. * * @ Return true if the Agent is to be considered alive, false otherwise. * / boolean isAlive (); /** * Set the current liveness of the Agent. * * @ Param alive * Set to true if the Agent is to be considered alive, false * Otherwise. * / void setAlive (boolean alive); }
АОП як можлива еволюція ООП
У об'єктно-орієнтованому програмуванні (надалі ООП) обчислювальний процес розглядається як система, зібрана з модулів, які взаємодіють один з одним і мають власні способи обробки отримуваних повідомлень. У свою чергу, АОП уточнює ці рамки, фіксуючи активність агентів і зміни їх стану. Наявність у агента механізму метаутворення забезпечує принципово новий рівень автономії. Агент не обов'язково виконує вказівку будь-якого іншого агента чи користувача, він просто залежить від умов середовища, включаючи цілі та наміри інших агентів. На відміну від об'єкта, агент може взяти на себе певні зобов'язання або, навпаки, відмовитися від виконання деякої роботи, мотивуючи це відсутністю компетентності, зайнятістю іншим завданням. У той же час, агент може виконувати такі дії як породження, гальмування та заміну інших агентів, активізацію функцій (як своїх, так і в інших агентів), активізацію сценарію діяльності, запам'ятовування поточного стану інших агентів. Все це наочно показує, що агент, будучи «активним об'єктом» знаходиться на більш високому рівні складності по відношенню до традиційних об'єктів в ООП.
Зробимо порівняння деяких понять:
- Об'єкт — програмна сутність заданої структури та конкретизованих механізмів взаємодії з іншими об'єктами за допомогою передачі повідомлень. Повідомлення формуються і відсилаються у відповідь на отримані повідомлення. Формування повідомлень відбувається процедурами на підставі даних.
- (Актор) — програмна сутність заданої структури і механізмів взаємодії.
- Агент — програмна сутність для виконання поставлених завдань. Володіє поведінкою, а саме: взаємодіє із зовнішнім складним середовищем, що динамічно-розвивається; здатною модифікуватися або бути модифікованої іншими агентами в залежності від конкретних умов. Взаємодія має на увазі:
- Сприйняття динаміки середовища;
- Дії, що змінюють середовище;
- Міркування з метою інтерпретації спостережуваних явищ, вирішення завдань, виведення висновків і визначення дій.
Залежно від ступеню свободи середовища, що припускає наявність у ній відповідного типу агента, середовища поділяються на:
- Замкнуті: кінцеве детерміноване або імовірнісний опис всього середовища, яке відоме агенту апріорі або шляхом дослідження.
- Відкриті: кінцеве детерміноване або імовірнісний опис локальній області середовища, в якій знаходиться агент і яке відоме йому апріорі або шляхом дослідження.
- Трансформовані: середовища, що динамічно розвивається, структурою яких є агент.
Причини виникнення
Причини виникнення агентно-орієнтованого підходу:
- Необхідність подолання меж операційних середовищ;
- Усунення різнорідності об'єктних моделей, викликаних тим, що класи і об'єкти, побудовані в різних інструментальних середовищах, мають певні відмінності.
Постановка завдання
У цілому, система АОП повинна включати наступні базові компоненти:
- Обмежену формальну мову з відповідними синтаксисом і семантикою для опису внутрішнього стану агента, яке визначається кількома параметрами типу переконань, бажань, намірів і зобов'язань;
- Мову програмування для специфікації агентів, що включає примітивні команди типу REQUEST і INFORM;
- Агентифікатор, який перетворює нейтральні компоненти до програмованих агентів.
Основними властивостями, якими повинні мати агенти, вважаються: []
- Автономність — здатність виконувати дії самостійно;
- Гомогенність/гетерогенність — здатність об'єднувати однорідні або різнорідні функції;
- Наявність «інтелекту», здатності до навчання, корекція поведінки для поліпшення власної ефективності;
- Активне поведінка, постійний обмін інформацією «всередині» агента і між агентом і середовищем;
- Комунікативність — обмін даними з зовнішнім середовищем;
- Сприйняття середовища — наявність спеціальних «засобів» сприйняття середовища функціонування агента;
- Мобільність — переміщення агента всередині інших програмних і фізичних середовищ і/або компонентів.
Реалізації
Розподілені об'єктні архітектури (CORBA, DCOM, Java RMI, ), володіючи багатьма перерахованими властивостями, мають такі недоліки:
- Необхідність перекомпіляції програмних кодів при внесенні змін в об'єкти і інтерфейси;
- Неможливість динамічної адаптації поведінки програмних об'єктів залежно від статків і поведінки середовища;
- Неможливість роботи в явній формі з моделями знань;
Розподілене об'єктне середовище (засноване на Java RMI, Java CORBA IDL, Java Serialization і Java Reflection API) надає Java агентам такі властивості:
- Автономність, здатність виконувати дії самостійно: агент слід списку поводжень, який може бути поповнений асіхронно, тобто і в режимі очікування, і в режимі «зайнятий — йде робота».
- Стійкість: не маючи побічного ефекту після кожної поведінки, має можливість відкату.
- Активне поведінка: полягає в тому, що в разі невдачі, виконуються циклічні спроби виконати поточний, а потім перейти до наступного кроку поведінки. Під час виконання поведінки агент зайнятий — не взаємодіє із середовищем. Після завершення поточного поведінки, агент переходить до наступного за списком, а в разі відсутності списку — очікує поява такого. Об'єкт ж у випадку успіху не має спуску, а в разі невдачі — кидає завдання.
- Мобільність: можливість передавати агент в іншій контейнер. Дана властивість виникає з відсутності після виконання кожного поведінки побічного ефекту.
Структура агента
Структурно агента можна зобразити наступним чином:
Агент | |-> Ресурси | |-> Об'єкти | |-> Функції | |-> Дані
Загальні Приклади використання
Типовим прикладом агентно орієнтованого підходу можна назвати спеціальні програми, що імітують дії гравців в комп'ютерних іграх. Поширена назва для таких програм — боти. Однак, використання ботів не обмежується застосуванням в комп'ютерних іграх. Їх можна зустріти як елемент програми в чатах і форумах, що виконують роль «співрозмовника» і підтримуючих «дискусії». Однак деякі боти виконують не тільки роль імітаторів в процесі спілкування або гри, вони використовуються для редагування текстової інформації (у тому числі і в Вікіпедії), для налагодження мережевих з'єднань, модерування ресурсів і т. ін.
JADE
Дуже просто створити агента в JADE, визначивши метод його ініціалізації:
import jade.core.Agent; public class BookBuyerAgent extends Agent { protected void setup () { // Printout a welcome message System.out.println ("Hello! Buyer-agent" + getAID (). GetName () + "is ready."); } }
Фактична робота, яку агент повинен робити, як правило, здійснюється в рамках «поведінки агента». Поведінка являє собою завдання, яку агент може виконувати.
Агент може виконувати одночасно кілька моделей поведінки. Однак важливо зауважити, що розклад кількох моделей поведінки в агента має не упереджувальний характер, а кооперативний. Це означає, що коли поведінка виконується за розкладом, його метод action () викликається і працює до тих пір, поки не завершиться. Тому саме програміст визначає, коли агент переключається від виконання даного поведінки до виконання наступного.
З урахуванням наведеного механізму планування важливо підкреслити, що поведінка, подібна представленій нижче, перешкоджає виконанню будь-якої іншої поведінки, бо його action() метод ніколи не завершується.
public class OverbearingBehaviour extends Behaviour { public void action () { while (true) { // Do something } } public boolean done () { return true; } }
Розглянемо предметну область «Торгівля книгами», на якій будуть проілюстровані кроки, необхідні для створення агентно-орієнтованих додатків з JADE.
Кожен агент-покупець отримує назву книги, яку він повинен придбати як аргумент командного рядка і періодично запитує всіх відомих йому продавців-агентів, щоб зробити запит про покупку. Як тільки пропозиція отримано, агент-покупець підтверджує його і відправляє замовлення. Якщо більше ніж один агент-продавець надає цю книгу, покупець вибирає найкращу пропозицію (найкращу ціну). Купивши необхідну книгу, агент-покупець завершує роботу. Кожен агент-продавець має мінімальний інтерфейс, за допомогою якого користувач може додавати нові назви (і їх ціну) в локальний каталог книг, виставлених на продаж. Агенти-продавці знаходяться в стані очікування запитів від агентів-покупців. Коли вони отримують запит на книгу, вони перевіряють, чи є дана книга в їх каталозі. Якщо так, то вони відповідають пропозицією з ціною. Інакше відмовляють. Коли вони отримують замовлення на покупку, вони обробляють його і видаляють запитану книгу зі свого каталогу.
Примітки
- Shoham Yoav. Agent Oriented Programming.. — 1990.
- Shoham Yoav. Multiagent systems: Algorithmic, Game-Theoretic, and Logical Foundations = Artificial Intelligence: A Modern Approach. — 504 с. (Перевірено Помилка: неправильний час)
- Стюарт Рассел, Пітер Норвіг. Штучний інтелект: сучасний підхід = Artificial Intelligence: A Modern Approach. — 2-ое вид. — 1407 с.
- Ravi Mohan, Ciaran O'Reilly. Agent class. Архів оригіналу за 13-07-2013. Процитовано 01-06-2010.
- А. Н. Швецов, Агентно-ориентированные системы: от формальных моделей к промышленным приложениям, 2008
- Тарасов В.Б. Агенты, многоагентные системы, виртуальные сообщества: стратегическое направление в информатике и искусственном интеллекте. // Новости искусственного интеллекта. — 1998.
- Б.Хейес-Рот
- Shoham Yoav. ~ ulieru/Teaching/CS6705/Shoham.pdf Agent-oriented programming. // Artificial Intelligence. — 1993.
- Тарасов В.Б. От многоагентных систем к интеллектуальным организациям: философия, психология, информатика.. — 2002.
Див. також
Література
- Зайцев И. М., Федяєв О. И. Агентно-орієнтований підхід до моделювання інтелектуальних розподілених систем. — 2008.
- Камерон Х'юз, Трейсі Х'юз. Паралельне і розподілене програмування з використанням С++. — М. : Вільямс, 2004. — 672 с. — .
- Giovanni Caire. JADE tutorial for beginners.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Agentno oriyentovanij pidhid nadali AOP do programuvannya riznovid predstavlennya program abo paradigma programuvannya v yakij osnovnimi koncepciyami ye ponyattya agenta i jogo povedinki yaki zalezhat vid v yakomu vin znahoditsya Koncepciya bula zaproponovana Shohemom v 1990 roci Viznachennya paradigmi dane avtorom Cyu novu paradigmu programuvannya cilkom rozumno nazvati racionalnim programuvannyam Tochno takozh yak ob yektno oriyentovane programuvannya zrushilo paradigmu z napisannya procedur do stvorennya ob yektiv racionalne programuvannya zrushilo paradigmu z stvorennya informacijnih ob yektiv do stvorennya motivovanih agentiv Agentom ye vse sho mozhe sprijmati svoye seredovishe za dopomogoyu datchikiv i vplivaye na ce seredovishe za dopomogoyu vikonavchih mehanizmiv Ce zh viznachennya v terminah Java Author Ravi Mohan Author Ciaran O Reilly public interface Agent extends EnvironmentObject Call the Agent s program which maps any given percept Sequences to an action Param percept The current percept of a sequence perceived by the Agent Return the Action to be taken in response to the currently Perceived percept Action execute Percept percept Life cycle indicator as to the liveness of an Agent Return true if the Agent is to be considered alive false otherwise boolean isAlive Set the current liveness of the Agent Param alive Set to true if the Agent is to be considered alive false Otherwise void setAlive boolean alive AOP yak mozhliva evolyuciya OOPU ob yektno oriyentovanomu programuvanni nadali OOP obchislyuvalnij proces rozglyadayetsya yak sistema zibrana z moduliv yaki vzayemodiyut odin z odnim i mayut vlasni sposobi obrobki otrimuvanih povidomlen U svoyu chergu AOP utochnyuye ci ramki fiksuyuchi aktivnist agentiv i zmini yih stanu Nayavnist u agenta mehanizmu metautvorennya zabezpechuye principovo novij riven avtonomiyi Agent ne obov yazkovo vikonuye vkazivku bud yakogo inshogo agenta chi koristuvacha vin prosto zalezhit vid umov seredovisha vklyuchayuchi cili ta namiri inshih agentiv Na vidminu vid ob yekta agent mozhe vzyati na sebe pevni zobov yazannya abo navpaki vidmovitisya vid vikonannya deyakoyi roboti motivuyuchi ce vidsutnistyu kompetentnosti zajnyatistyu inshim zavdannyam U toj zhe chas agent mozhe vikonuvati taki diyi yak porodzhennya galmuvannya ta zaminu inshih agentiv aktivizaciyu funkcij yak svoyih tak i v inshih agentiv aktivizaciyu scenariyu diyalnosti zapam yatovuvannya potochnogo stanu inshih agentiv Vse ce naochno pokazuye sho agent buduchi aktivnim ob yektom znahoditsya na bilsh visokomu rivni skladnosti po vidnoshennyu do tradicijnih ob yektiv v OOP Zrobimo porivnyannya deyakih ponyat Ob yekt programna sutnist zadanoyi strukturi ta konkretizovanih mehanizmiv vzayemodiyi z inshimi ob yektami za dopomogoyu peredachi povidomlen Povidomlennya formuyutsya i vidsilayutsya u vidpovid na otrimani povidomlennya Formuvannya povidomlen vidbuvayetsya procedurami na pidstavi danih Aktor programna sutnist zadanoyi strukturi i mehanizmiv vzayemodiyi Mistit dani i proceduri Inkapsulyaciya vidnoshennya uspadkuvannya porodzhennya povidomlen Agent programna sutnist dlya vikonannya postavlenih zavdan Volodiye povedinkoyu a same vzayemodiye iz zovnishnim skladnim seredovishem sho dinamichno rozvivayetsya zdatnoyu modifikuvatisya abo buti modifikovanoyi inshimi agentami v zalezhnosti vid konkretnih umov Vzayemodiya maye na uvazi Sprijnyattya dinamiki seredovisha Diyi sho zminyuyut seredovishe Mirkuvannya z metoyu interpretaciyi sposterezhuvanih yavish virishennya zavdan vivedennya visnovkiv i viznachennya dij Zalezhno vid stupenyu svobodi seredovisha sho pripuskaye nayavnist u nij vidpovidnogo tipu agenta seredovisha podilyayutsya na Zamknuti kinceve determinovane abo imovirnisnij opis vsogo seredovisha yake vidome agentu apriori abo shlyahom doslidzhennya Vidkriti kinceve determinovane abo imovirnisnij opis lokalnij oblasti seredovisha v yakij znahoditsya agent i yake vidome jomu apriori abo shlyahom doslidzhennya Transformovani seredovisha sho dinamichno rozvivayetsya strukturoyu yakih ye agent Prichini viniknennya Prichini viniknennya agentno oriyentovanogo pidhodu Neobhidnist podolannya mezh operacijnih seredovish Usunennya riznoridnosti ob yektnih modelej viklikanih tim sho klasi i ob yekti pobudovani v riznih instrumentalnih seredovishah mayut pevni vidminnosti Postanovka zavdannya U cilomu sistema AOP povinna vklyuchati nastupni bazovi komponenti Obmezhenu formalnu movu z vidpovidnimi sintaksisom i semantikoyu dlya opisu vnutrishnogo stanu agenta yake viznachayetsya kilkoma parametrami tipu perekonan bazhan namiriv i zobov yazan Movu programuvannya dlya specifikaciyi agentiv sho vklyuchaye primitivni komandi tipu REQUEST i INFORM Agentifikator yakij peretvoryuye nejtralni komponenti do programovanih agentiv Osnovnimi vlastivostyami yakimi povinni mati agenti vvazhayutsya dzherelo Avtonomnist zdatnist vikonuvati diyi samostijno Gomogennist geterogennist zdatnist ob yednuvati odnoridni abo riznoridni funkciyi Nayavnist intelektu zdatnosti do navchannya korekciya povedinki dlya polipshennya vlasnoyi efektivnosti Aktivne povedinka postijnij obmin informaciyeyu vseredini agenta i mizh agentom i seredovishem Komunikativnist obmin danimi z zovnishnim seredovishem Sprijnyattya seredovisha nayavnist specialnih zasobiv sprijnyattya seredovisha funkcionuvannya agenta Mobilnist peremishennya agenta vseredini inshih programnih i fizichnih seredovish i abo komponentiv Realizaciyi Rozpodileni ob yektni arhitekturi CORBA DCOM Java RMI volodiyuchi bagatma pererahovanimi vlastivostyami mayut taki nedoliki Neobhidnist perekompilyaciyi programnih kodiv pri vnesenni zmin v ob yekti i interfejsi Nemozhlivist dinamichnoyi adaptaciyi povedinki programnih ob yektiv zalezhno vid statkiv i povedinki seredovisha Nemozhlivist roboti v yavnij formi z modelyami znan Rozpodilene ob yektne seredovishe zasnovane na Java RMI Java CORBA IDL Java Serialization i Java Reflection API nadaye Java agentam taki vlastivosti Avtonomnist zdatnist vikonuvati diyi samostijno agent slid spisku povodzhen yakij mozhe buti popovnenij asihronno tobto i v rezhimi ochikuvannya i v rezhimi zajnyatij jde robota Stijkist ne mayuchi pobichnogo efektu pislya kozhnoyi povedinki maye mozhlivist vidkatu Aktivne povedinka polyagaye v tomu sho v razi nevdachi vikonuyutsya ciklichni sprobi vikonati potochnij a potim perejti do nastupnogo kroku povedinki Pid chas vikonannya povedinki agent zajnyatij ne vzayemodiye iz seredovishem Pislya zavershennya potochnogo povedinki agent perehodit do nastupnogo za spiskom a v razi vidsutnosti spisku ochikuye poyava takogo Ob yekt zh u vipadku uspihu ne maye spusku a v razi nevdachi kidaye zavdannya Mobilnist mozhlivist peredavati agent v inshij kontejner Dana vlastivist vinikaye z vidsutnosti pislya vikonannya kozhnogo povedinki pobichnogo efektu Struktura agenta Strukturno agenta mozhna zobraziti nastupnim chinom Agent gt Resursi gt Ob yekti gt Funkciyi gt Dani Zagalni Prikladi vikoristannya Tipovim prikladom agentno oriyentovanogo pidhodu mozhna nazvati specialni programi sho imituyut diyi gravciv v komp yuternih igrah Poshirena nazva dlya takih program boti Odnak vikoristannya botiv ne obmezhuyetsya zastosuvannyam v komp yuternih igrah Yih mozhna zustriti yak element programi v chatah i forumah sho vikonuyut rol spivrozmovnika i pidtrimuyuchih diskusiyi Odnak deyaki boti vikonuyut ne tilki rol imitatoriv v procesi spilkuvannya abo gri voni vikoristovuyutsya dlya redaguvannya tekstovoyi informaciyi u tomu chisli i v Vikipediyi dlya nalagodzhennya merezhevih z yednan moderuvannya resursiv i t in JADEDuzhe prosto stvoriti agenta v JADE viznachivshi metod jogo inicializaciyi import jade core Agent public class BookBuyerAgent extends Agent protected void setup Printout a welcome message System out println Hello Buyer agent getAID GetName is ready Faktichna robota yaku agent povinen robiti yak pravilo zdijsnyuyetsya v ramkah povedinki agenta Povedinka yavlyaye soboyu zavdannya yaku agent mozhe vikonuvati Agent mozhe vikonuvati odnochasno kilka modelej povedinki Odnak vazhlivo zauvazhiti sho rozklad kilkoh modelej povedinki v agenta maye ne uperedzhuvalnij harakter a kooperativnij Ce oznachaye sho koli povedinka vikonuyetsya za rozkladom jogo metod action viklikayetsya i pracyuye do tih pir poki ne zavershitsya Tomu same programist viznachaye koli agent pereklyuchayetsya vid vikonannya danogo povedinki do vikonannya nastupnogo Z urahuvannyam navedenogo mehanizmu planuvannya vazhlivo pidkresliti sho povedinka podibna predstavlenij nizhche pereshkodzhaye vikonannyu bud yakoyi inshoyi povedinki bo jogo action metod nikoli ne zavershuyetsya public class OverbearingBehaviour extends Behaviour public void action while true Do something public boolean done return true Rozglyanemo predmetnu oblast Torgivlya knigami na yakij budut proilyustrovani kroki neobhidni dlya stvorennya agentno oriyentovanih dodatkiv z JADE Kozhen agent pokupec otrimuye nazvu knigi yaku vin povinen pridbati yak argument komandnogo ryadka i periodichno zapituye vsih vidomih jomu prodavciv agentiv shob zrobiti zapit pro pokupku Yak tilki propoziciya otrimano agent pokupec pidtverdzhuye jogo i vidpravlyaye zamovlennya Yaksho bilshe nizh odin agent prodavec nadaye cyu knigu pokupec vibiraye najkrashu propoziciyu najkrashu cinu Kupivshi neobhidnu knigu agent pokupec zavershuye robotu Kozhen agent prodavec maye minimalnij interfejs za dopomogoyu yakogo koristuvach mozhe dodavati novi nazvi i yih cinu v lokalnij katalog knig vistavlenih na prodazh Agenti prodavci znahodyatsya v stani ochikuvannya zapitiv vid agentiv pokupciv Koli voni otrimuyut zapit na knigu voni pereviryayut chi ye dana kniga v yih katalozi Yaksho tak to voni vidpovidayut propoziciyeyu z cinoyu Inakshe vidmovlyayut Koli voni otrimuyut zamovlennya na pokupku voni obroblyayut jogo i vidalyayut zapitanu knigu zi svogo katalogu PrimitkiShoham Yoav Agent Oriented Programming 1990 Shoham Yoav Multiagent systems Algorithmic Game Theoretic and Logical Foundations Artificial Intelligence A Modern Approach 504 s Perevireno Pomilka nepravilnij chas Styuart Rassel Piter Norvig Shtuchnij intelekt suchasnij pidhid Artificial Intelligence A Modern Approach 2 oe vid 1407 s Ravi Mohan Ciaran O Reilly Agent class Arhiv originalu za 13 07 2013 Procitovano 01 06 2010 A N Shvecov Agentno orientirovannye sistemy ot formalnyh modelej k promyshlennym prilozheniyam 2008 Tarasov V B Agenty mnogoagentnye sistemy virtualnye soobshestva strategicheskoe napravlenie v informatike i iskusstvennom intellekte Novosti iskusstvennogo intellekta 1998 B Hejes Rot Shoham Yoav ulieru Teaching CS6705 Shoham pdf Agent oriented programming Artificial Intelligence 1993 Tarasov V B Ot mnogoagentnyh sistem k intellektualnym organizaciyam filosofiya psihologiya informatika 2002 Div takozhAgentne modelyuvannya Programnij agent Bagatoagentna sistemaLiteraturaZajcev I M Fedyayev O I Agentno oriyentovanij pidhid do modelyuvannya intelektualnih rozpodilenih sistem 2008 Kameron H yuz Trejsi H yuz Paralelne i rozpodilene programuvannya z vikoristannyam S M Vilyams 2004 672 s ISBN 5 8459 0686 5 Giovanni Caire JADE tutorial for beginners