Програмний агент
У комп'ютерних науках програмний агент — це програма, яка вступає у відношення посередництва з користувачем або іншою програмою. Слово «агент» походить від латинського agere (робити) і означає угоду виконувати дії від імені кого-небудь. Такі «дії від імені» розуміють право вирішувати, які дії (якщо вони потрібні) є доцільними.[1][2] Ідея полягає в тому, що агенти не запускаються безпосередньо для виконання завдання, а активізуються самостійно.
Споріднені та похідні поняття включають інтелектуальних агентів (зокрема, що володіють деякими аспектами штучного інтелекту, такими як навчання та міркування), автономних агентів (здатних змінювати спосіб досягнення своїх цілей), розподілених агентів (що виконують дії на фізично різних комп'ютерах), багатоагентні системи (розподілені агенти, які не мають можливості досягнення мети поодинці і, отже, повинні спілкуватися), і мобільних агентів (агентів, які можуть перемістити своє виконання на інші процесори).
Визначення
Термін «агент» описує програмну абстракцію, ідею чи концепцію, подібно таким термінам ООП як метод, функція або об'єкт. Концепція агента забезпечує зручний і потужний спосіб опису складної програмної сутності, яка здатна діяти з певним ступенем автономності з метою виконання завдань від імені користувача. Але на відміну від об'єктів, які визначаються в термінах методів і атрибутів, агент визначається за допомогою опису його поведінки.[3]
Різні автори пропонують різні визначення агента, зазвичай при цьому в нього включають такі поняття, як:
- Живучість (код не виконується за вимогою, а працює безперервно і вирішує сам, коли він повинен зробити які-небудь дії);
- Автономність (агент має здатність вибору завдань, пріоритетів, цілеспрямованого поведінки та прийняття рішень без участі людини);
- Соціальну поведінку (агенти мають можливість залучати інші компоненти за допомогою певних зв'язків і координації дій, вони можуть спільно працювати над виконанням завдань);
- Реактивність (агенти сприймають контекст, в якому вони працюють, і реагують на нього належним чином).
Чим не є агент
Немає ніякого особливого сенсу в тому, щоб розписати, що є агентом, а що ні. Тим не менш, зіставлення терміна з близькими поняттями може прояснити його значення.
Відмінність агентів від програм
У роботі Франкліна і Грауссера[4] обговорюються чотири ключові поняття, за якими агенти відрізняються від довільних програм: реакція на навколишнє середовище, автономність, цільова орієнтація і живучість.
Споріднені та похідні поняття включають інтелектуальних агентів (зокрема, що володіють деякими аспектами штучного інтелекту, такими як навчання та міркування), автономних агентів (здатних змінювати спосіб досягнення своїх цілей), розподілених агентів (що виконують дії на фізично різних комп'ютерах), багатоагентні системи (розподілені агенти, які не мають можливості досягнення мети поодинці і, отже, повинні спілкуватися), і мобільних агентів (агентів, які можуть перемістити своє виконання на інші процесори).
Інтуїтивна відміна агентів від об'єктів
- Агенти більш автономні, ніж об'єкти.
- Агенти мають гнучкішу поведінку і володіють реактивністю, проактивністю, соціальною поведінкою.
- Агенти мають принаймні один потік виконання, але можуть мати й більше.[3]
Відмінність агентів від експертних систем
- Експертні системи не мають зв'язку з навколишнім середовищем;
- Експертні системи не володіють реактивною, проактивною поведінкою.
- Експертні системи не володіють соціальною поведінкою.[3]
Відмінність інтелектуальних програмних агентів від інтелектуальних агентів в штучному інтелекті
- Інтелектуальний агент (відомий також як раціональний агент) не завжди є програмним продуктом. Він може бути також машиною, людською істотою, спільнотою людських сутностей (як, наприклад, бізнес-спільнота) або чим-небудь ще, здатним до цілеспрямованої поведінки.[5]
Історія
Концепцію агента можна простежити починаючи з моделі акторів Карла Хьюїтта: «автономний, інтерактивний і одночасно виконувати кілька функцій об'єкт, що володіє внутрішнім станом та інформаційним обміном».[6]
Висловлюючись більш академічно, програмні агенти є прямий еволюцією багатоагентних систем (МАС), які в свою чергу розвинулись з розподіленого штучного інтелекту (РІІ), розподіленого рахівника завдань (РРЗ) і паралельного штучного інтелекту (ПІІ). Таким чином, програмні агенти успадковують всі характеристики (хороші і погані) від РІІ і ІІ.
«Навігатор по знаннях», створений в 1987 р. Джоном Скаллі, являв собою відеозв'язок між кінцевим користувачем і агентом. Будучи першим у своєму роді, він послужив основою для дослідної серії невдалих низхідних реалізацій, замість того, щоб крок за кроком підходити до висхідних методам. Діапазон типів агентів в наш час[коли?] (з 1990 р.) досить широкий: WWW, пошукові системи і т. д.
Приклади
Інтелектуальні програмні агенти
Стефен Хааг у своїй роботі[7]вважає, що існують тільки чотири основних типи інтелектуальних програмних агентів:
- Агенти-покупці або торгові боти
- Користувальницькі або персональні агенти
- Агенти з моніторингу та спостереження
- Агенти з видобутку та аналізу даних
Агенти-покупці (роботи із закупівель)
Агенти-покупці дивляться мережеві ресурси (наприклад, інтернет) з метою отримання інформації про товари і послуги. Ці агенти, відомі також як «роботи зі закупівель», дуже ефективно працюють з товарами народного споживання, такими як компакт-диски, книги, електронні компоненти та інші продукти «на всі випадки життя».
Користувальницькі агенти (персональні)
Користувальницькі або персональні агенти — це інтелектуальні агенти, які діють від вашого імені. До цієї категорії відносяться інтелектуальні агенти, які вже виконують або будуть виконувати наступні завдання:
- Перевіряють вашу електронну пошту, сортують її по вашим перевагам і сповіщають про прихід важливих листів.
- Грають у комп'ютерні ігри, коли ваш супротивник або патрулює гру проявляє активність.
- Збирають замовлені звіти новин для вас. Є кілька версій таких агентів, у тому числі newshub і CNN.
- Роблять пошук інформації по вашій темі і ваш запит.
- Автоматично заповнюють веб-форми для вас, зберігають вашу інформацію для використання в майбутньому.
- Сканує веб-сторінки для пошуку і виділення тексту, який являє собою «важливу» частину інформації.
- «Обговорюють» теми з вами в діапазоні від підсвідомого страху до спорту.
- Сприяють онлайн пошуку роботи шляхом сканування відомих дощок оголошень про роботу і відправки резюме із зазначенням переваг, які відповідають бажаним критеріям.
- Профілюють синхронізацію різнорідних соціальних мереж.
Агенти з моніторингу та спостереження (предиктивне)
Агенти з моніторингу та спостереження використовуються для спостереження за об'єктами та передачі інформації на устаткування, як правило, на комп'ютерні системи. Агенти можуть відстежувати рівень запасів матеріалів компанії, стежити за цінами конкурентів і доводити їх до відома компанії, аналізувати фондові маніпуляції по інсайдерська інформація і чутками, і т. д.
Наприклад, в лабораторії реактивного руху НАСА є агент, який відстежує наявність і стан обладнання, планує замовлення на придбання нового обладнання з урахуванням оптимізації витрат, а також стежить за наявністю продуктів харчування. Такін агенти зазвичай здійснюють моніторинг складних комп'ютерних мереж і можуть стежити за конфігурацією кожного комп'ютера, підключеного до мережі.
Особливими агентами з моніторингу та спостереження є структури агентів, що використовуються для моделювання процесу прийняття рішень під час тактичних операцій. Агенти здійснюють моніторинг стану активів (боєприпасів, зброї, засобів транспортування тощо) і отримують мети (доручення) від агентів верхнього рівня. Агенти домагаються досягнення цілей з наявними активами, зводячи до мінімуму витрати активів при максимальному досягненні мети.[8]
Агенти з видобутку та аналізу даних
Ці агенти використовують інформаційні технології для пошуку тенденцій і закономірностей у великій кількості інформації з різних джерел. Користувач може сортувати цю інформацію для того, щоб відібрати саме те, що він шукає.
Агенти з видобутку та аналізу даних працюють в сховище даних виявленої інформації. «Сховище даних» об'єднує інформацію з безлічі різних джерел. «Аналіз даних» являє собою процес перегляду даних у сховище з метою знаходження такої інформації, яку можна використовувати для вжиття цілеспрямованих дій, наприклад, для збільшення продажів або збереження клієнтів, які розглядають можливість відходу до конкурентів.
Класифікація є одним з найпоширеніших видів інтелектуального аналізу даних, за допомогою якої знаходяться ключові слова в інформації, і потім вона класифікується за цими ключовими словами. Агенти з видобутку та аналізу даних можуть виявити значні зміни в трендах за ключовими показниками, можуть також виявити наявність нової інформації і оповістити про неї. Наприклад, агент може виявити спад у будівельній галузі економіки. Будівельні компанії на підставі отриманої інформації будуть в змозі прийняти розумні рішення щодо найму/звільнення співробітників або купівлі/оренди обладнання, які найкращим чином будуть задовольняти їхні фірми.
Інші приклади
Іншими прикладами сучасних інтелектуальних агентів є деякі спам-фільтри, ігрові боти і засоби моніторингу серверів. Боти індексації пошукових систем також вважаються інтелектуальними агентами.
- User agent — для браузерів WWW.
- Агент передачі листів — для обслуговування електронної пошти, наприклад, Microsoft Outlook. Він спілкується з поштовим сервером POP3, при цьому користувачеві не потрібно знати команди протоколу POP3. Він має також набір правил, за якими проводиться фільтрація пошти для користувачів, тим самим позбавляючи їх від проблеми того, щоб робити це самостійно.
- Агент системи простого управління мережами SNMP.
- Агент розмітки в HTML-форматі агентства DARPA.
- Агент платформи розробки багатоагентних систем Jason.
- Система розробки штучних автономних агентів 3APL.
- Мова програмування для розробки раціональних агентів GOAL.
- Мова опису онтологій для семантичної павутини OWL.
- Демони в UNIX-подібних операційних системах.
- У Unix — подібних мережевих серверахhttpd — демон протоколу HTTP, який реалізує цей протокол в корені всесвітньої павутини.
- Агенти управління, використовувані у вузлах телекомунікаційних мереж.
- Моделювання натовпу для забезпечення безпеки, а також для тривимірної графіки.
- Java Agent Template — шаблон створення програмних агентів в системі Java (JAT).
Примітки
- Нвана Х. Програмні агенти: Огляд. Knowledge Engineering Review, Vol.11, No.3, 205—244, Cambridge University Press (англ.)
- Шермер Б. Програмні агенти, спостереження і право на недоторканність приватного життя: законодавча база для спостереження за допомогою агентів. Leiden University Press, 2007, p.140. (англ.)
- Вулдрідж М., Дженнінгс Н. Інтеллектуальнве агенти: теорія і практика. Knowledge Eng. Rev., Vol. 10 (2), pp. 115—152, 1995 (англ.)
- Франклін, Грауссер. Агент або програма? Таксономія автономних агентів. Springer-Verlag, 1996 (англ.)
- Стюарт Рассел, Пітер Норвіг. Штучний інтелект: Сучасний підхід. Prentice Hall, 2009, ISBN 978-0136042594 (англ.)
- Carl Hewitt. Viewing Control Structures as Patterns of Passing Messages. Journal of Artificial Intelligence, June 1977.
- Стефен Хааг, Управління інформаційними системами в інформаційний вік, 2006, р 224—228 (англ.)
- Harold E. Popplewell Agents & Applicability. Архів оригіналу за 26 березня 2005. Процитовано 2 січня 2012.
Посилання
- Нвана Х. Програмні агенти: Огляд. Knowledge Engineering Review, Vol.11, No.3, 205—244, Cambridge University Press(англ.)
- FIPA Фонд інтелектуальних фізичних агентів(англ.)
- Європейський дослідницький центр програмних агентів(англ.)
- Семантичний агент(англ.)
- Mobile-C багатоагентна система для мобільних агентів в C / C + + (англ.)
- JADE Java Agent Developing Framework, an Open Source framework developed by Telecom Italia Labs
- Open source Agent Development Kit
- Open Source Project High Level Logic (HLL)
- Open source project KATO for PHP and Java developers to write software agents