Агентно-орієнтований підхід
Агентно-орієнтований підхід (надалі АОП) до програмування — різновид представлення програм, або парадигма програмування, в якій основними концепціями є поняття агента і його поведінки, які залежать від середовища, в якому він знаходиться. Концепція була запропонована Шохемом в 1990 році[1]. Визначення парадигми, дане автором:[2]
Агентом є все, що може сприймати своє середовище за допомогою датчиків і впливає на це середовище за допомогою виконавчих механізмів.[3] Це ж визначення в термінах Java:[4] /**
* @ 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);
}
АОП як можлива еволюція ООПУ об'єктно-орієнтованому програмуванні (надалі ООП) обчислювальний процес розглядається як система, зібрана з модулів, які взаємодіють один з одним і мають власні способи обробки отримуваних повідомлень. У свою чергу, АОП уточнює ці рамки, фіксуючи активність агентів і зміни їх стану. Наявність у агента механізму метаутворення забезпечує принципово новий рівень автономії. Агент не обов'язково виконує вказівку будь-якого іншого агента чи користувача, він просто залежить від умов середовища, включаючи цілі та наміри інших агентів. На відміну від об'єкта, агент може взяти на себе певні зобов'язання або, навпаки, відмовитися від виконання деякої роботи, мотивуючи це відсутністю компетентності, зайнятістю іншим завданням. У той же час, агент може виконувати такі дії як породження, гальмування та заміну інших агентів, активізацію функцій (як своїх, так і в інших агентів), активізацію сценарію діяльності, запам'ятовування поточного стану інших агентів. Все це наочно показує, що агент, будучи «активним об'єктом» знаходиться на більш високому рівні складності по відношенню до традиційних об'єктів в ООП[5]. Зробимо порівняння деяких понять[6]:
Залежно від ступеню свободи середовища, що припускає наявність у ній відповідного типу агента, середовища поділяються на:
Причини виникненняПричини виникнення агентно-орієнтованого підходу:
Постановка завданняУ цілому, система АОП повинна включати наступні базові компоненти:[8] [9]
Основними властивостями, якими повинні мати агенти, вважаються: [джерело?]
РеалізаціїРозподілені об'єктні архітектури (CORBA, DCOM, Java RMI, WEB-services), володіючи багатьма перерахованими властивостями, мають такі недоліки:
Розподілене об'єктне середовище JADE (засноване на 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. Кожен агент-покупець отримує назву книги, яку він повинен придбати як аргумент командного рядка і періодично запитує всіх відомих йому продавців-агентів, щоб зробити запит про покупку. Як тільки пропозиція отримано, агент-покупець підтверджує його і відправляє замовлення. Якщо більше ніж один агент-продавець надає цю книгу, покупець вибирає найкращу пропозицію (найкращу ціну). Купивши необхідну книгу, агент-покупець завершує роботу. Кожен агент-продавець має мінімальний інтерфейс, за допомогою якого користувач може додавати нові назви (і їх ціну) в локальний каталог книг, виставлених на продаж. Агенти-продавці знаходяться в стані очікування запитів від агентів-покупців. Коли вони отримують запит на книгу, вони перевіряють, чи є дана книга в їх каталозі. Якщо так, то вони відповідають пропозицією з ціною. Інакше відмовляють. Коли вони отримують замовлення на покупку, вони обробляють його і видаляють запитану книгу зі свого каталогу. Примітки
Див. такожЛітература
|
Portal di Ensiklopedia Dunia