Структура программы интеллектуальных агентов, решающих несколько задач одновременно
Development of intellectual agents for virtual reality system is a very complex and laborious process. Modern virtual reality features complex simulation of some parts of the real world. Such agents operate set of effectors to achieve their goals. This paper describes program structure for age...
Збережено в:
Дата: | 2009 |
---|---|
Автор: | |
Формат: | Стаття |
Мова: | Russian |
Опубліковано: |
Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України
2009
|
Назва видання: | Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України |
Онлайн доступ: | http://dspace.nbuv.gov.ua/handle/123456789/26541 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
Цитувати: | Структура программы интеллектуальных агентов, решающих несколько задач одновременно / Ю.В. Добронравин // Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України. — К.: ІПМЕ ім. Г.Є.Пухова НАН України, 2009. — Вип. 53. — Бібліогр.: 3 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraineid |
irk-123456789-26541 |
---|---|
record_format |
dspace |
spelling |
irk-123456789-265412011-09-05T12:11:28Z Структура программы интеллектуальных агентов, решающих несколько задач одновременно Добронравин, Ю.В. Development of intellectual agents for virtual reality system is a very complex and laborious process. Modern virtual reality features complex simulation of some parts of the real world. Such agents operate set of effectors to achieve their goals. This paper describes program structure for agents that can have multiply goals and ability to achieve them simultaneously. 2009 Article Структура программы интеллектуальных агентов, решающих несколько задач одновременно / Ю.В. Добронравин // Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України. — К.: ІПМЕ ім. Г.Є.Пухова НАН України, 2009. — Вип. 53. — Бібліогр.: 3 назв. — рос. XXXX-0067 http://dspace.nbuv.gov.ua/handle/123456789/26541 681.3:519.68 ru Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України |
institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
collection |
DSpace DC |
language |
Russian |
description |
Development of intellectual agents for virtual reality system is a very
complex and laborious process. Modern virtual reality features complex simulation of some parts of the real world. Such agents operate set of effectors to achieve their goals. This paper describes program structure for agents that can have multiply
goals and ability to achieve them simultaneously. |
format |
Article |
author |
Добронравин, Ю.В. |
spellingShingle |
Добронравин, Ю.В. Структура программы интеллектуальных агентов, решающих несколько задач одновременно Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України |
author_facet |
Добронравин, Ю.В. |
author_sort |
Добронравин, Ю.В. |
title |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно |
title_short |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно |
title_full |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно |
title_fullStr |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно |
title_full_unstemmed |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно |
title_sort |
структура программы интеллектуальных агентов, решающих несколько задач одновременно |
publisher |
Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України |
publishDate |
2009 |
url |
http://dspace.nbuv.gov.ua/handle/123456789/26541 |
citation_txt |
Структура программы интеллектуальных агентов, решающих несколько задач одновременно / Ю.В. Добронравин // Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України. — К.: ІПМЕ ім. Г.Є.Пухова НАН України, 2009. — Вип. 53. — Бібліогр.: 3 назв. — рос. |
series |
Збірник наукових праць Інституту проблем моделювання в енергетиці ім.Г.Є.Пухова НАН України |
work_keys_str_mv |
AT dobronravinûv strukturaprogrammyintellektualʹnyhagentovrešaûŝihneskolʹkozadačodnovremenno |
first_indexed |
2025-07-02T22:18:34Z |
last_indexed |
2025-07-02T22:18:34Z |
_version_ |
1836575322306248704 |
fulltext |
УДК 681.3: 519.68
Ю. В. Добронравин, аспирант Международного научно-учебного центра
информационных технологий и систем
СТРУКТУРА ПРОГРАММЫ ИНТЕЛЛЕКТУАЛЬНЫХ АГЕНТОВ,
РЕШАЮЩИХ НЕСКОЛЬКО ЗАДАЧ ОДНОВРЕМЕННО
Development of intellectual agents for virtual reality system is a very
complex and laborious process. Modern virtual reality features complex simulation
of some parts of the real world. Such agents operate set of effectors to achieve their
goals. This paper describes program structure for agents that can have multiply
goals and ability to achieve them simultaneously.
Введение
Интеллектуальный агент включает в себя набор эффекторов
(исполнительных механизмов), при помощи которых он воздействует на
окружающую среду. Поведение агента определяется набором целей. Для
достижения цели агент выполняет определенный набор действий —
последовательность команд, посылаемую на свои исполнительные
механизмы. Можно говорить, что агент выполняет задачу (task) по
достижению цели. В дальнейшем, под задачей агента мы будем понимать
определенный алгоритм действий, результатом выполнения которого должно
стать достижение исходной цели. В каждый момент времени агент может
одновременно выполнять одну или несколько задач. В таком случае не
исключена ситуация, когда две или более задач будут пытаться посылать
команды одним и тем же эффекторам агента, в результате чего возникает
конфликт.
В статье рассматривается проблема построения программной системы
для поведения интеллектуального агента основанного на цели [1] с учетом
автоматического распределения эффекторов агента между одновременно
выполняемыми задачами.
Новизна подхода предложенного в статье, заключается
непосредственной связи решаемых агентом задач с имеющимися ресурсами -
эффекторами.
Объектом исследования являются технологии разработки
интеллектуальных агентов.
Предмет исследования – исследование принципов и особенностей
разработки программной системы агента, позволяющей в автоматическом
режиме распределять эффекторы между конкурирующими задачами.
Цель исследования – описание принципов построения программной
подсистемы для автоматического управления задачами агента,
руководствуясь которыми будет создан соответствующий модуль агента.
Результаты исследования – программная система агента,
автоматически распределяющая задачи на эффекторы.
1. Общее описание программы агента
Как уже было сказано выше, в каждый момент времени агент может
решать несколько задач одновременно. Например, человек может идти по
улице и говорить по мобильному телефону в одно и тоже время. Сразу
следует отметить, что задачи перемещения по улице и разговора по телефону
являются составными или высокоуровневыми. Иерархический подход при
разбиении задач на подзадачи является общепринятым. Так, каждая задача
высокого уровня может быть разбита на задачи более низкого уровня и т.д.
вплоть до атомарных (неделимых) задач – действий. На определенном
уровне детализации, перемещение руки можно считать атомарной задачей, а
разговор по мобильному телефону, во время которого аппарат удерживается
рукой у уха – высокоуровневой.
Очевидным положением является то, что самые простые задачи –
действия, непосредственно связанны с эффекторами агента. Можно сказать,
что действия исполняются на эффекторах. Принимается, что на одном
эффекторе в текущий момент времени может выполняться одно и только
одно действие.
Сложные задачи состоят из подзадач, которые в конечном итоге состоят
из действий. Значит, любая задача выполняется на определенном наборе
эффекторов.
Опишем основные моменты процесса работы алгоритма агента
реального времени, имеющего несколько целей (рис. 1).
– Агент постоянно обновляет информацию об окружающей среде при
помощи сенсоров. Анализ полученной информации позволяет агенту
сформировать список текущих целей.
– Каждая цель обладает некоторой мерой важности по отношению к
другим целям – приоритет цели. Приоритет цели может менять в
зависимости от сигналов, поступающих из окружающей среды, и
внутреннего состояния агента.
– Агент в состоянии для каждой поставленной цели сформулировать
задачу, после успешного решения которой, цель будет достигнута.
Задача наследует приоритет решаемой цели.
– Решение задачи представляет собой алгоритм управления одним или
несколькими эффекторами агента.
– Задача может иметь подзадачи. Задача, которая осуществляет
управление лишь одним эффектором, называется действием.
– Каждая задача запускается на выполнение на наборе эффекторов.
Если две задачи требуют для выполнения пересекающийся набор
эффекторов, то предпочтение получает задача с более высоким
приоритетом.
Рис.1 Схема агента, имеющего одновременно несколько задач по достижению
различных целей
2. Формальное описание проблемы
Как уже было сказано выше задача представляет собой некий алгоритм
по управлению эффекторами агента. Следует также отметить, что в общем
случае, выполнение задачи не всегда возможно или может не приносить
желаемого результата по различным причинам: неисправность эффекторов,
использования нужного эффектора другой задачей с более высоким
приоритетом и т.д. В таком случае задача может либо временно отложить
некоторые действия, либо попытаться использовать альтернативные
механизмы для достижения цели, либо прекратить свое выполнение, добавив
в память агента информацию о невозможности удовлетворить цель в
текущий момент времени [2, 3].
Предполагается, что задача выполняется в реальном времени. Перед
запуском задача должна захватить эффекторы, необходимые для работы
задачи. В случае если другая задача с более высоким приоритетом
осуществляет захват эффекторов, то эффекторы задачи с низким
приоритетом будут принудительно освобождены. При этом в алгоритм
задачи может быть предусмотрена данная ситуация.
Ниже приводится подробно прокомментированный код класса Action,
описывающий абстрактного задачу, на языке C++. Для удобства чтения,
вспомогательные функции и переменные опущены.
////////////////////////////////////////////////////////////////////////////////////
// Класс Action - «задача» выполняемая агентом
////////////////////////////////////////////////////////////////////////////////////
class Action
{
public:
//Конструктор создает новую задачу, обозначив агента-владельца и
//родительскую задачу.
Action(Actor* owner, Action* parent);
//Функция инициализация задачи, запускает задачу на выполнение.
virtual void init() ;
// Проверяет, возможно ли выполнение данной задачи
// в текущий момент времени. Функция проверяет
// не заняты ли эффекторы, необходимые задаче. В случае, если
// запуск задачи возможен, выполняет «захват» нужных
// эффекторов, список которых помещает в m_acquiredEffectors
virtual bool check();
// Выполняется раз в определенный промежуток, для
// обновления состояния задачи в реальном времени.
virtual void update();
//Прекращает выполнения задачи. В случае состояния флага
// immediate = true, задача прекращается мгновенно, в противном
//случае у задаче дается возможность завершить выполнение
//корректным образом.
virtual void terminate(bool immediate = false);
//Вызывается во время захвата эффекторов задачей с более высоким
//приоритетом. Передается список потерянных эффекторов
virtual void effectorsLost(Set lostEffectors);
//Ссылка на агента, запустившего задачу
Actor* m_owner;
//Ссылка на родительскую задачу, если такая имеется.
Action* m_parentAction;
//Приоритет задачи.
int m_priority;
// Список необходимых эффекторов для выполнения.
Set m_requiredEffectors;
// Список реально захваченных эффекторов задачи.
Set m_acquiredEffectors;
};
Все конкретные реализации задачи, должны унаследоваться от класса
Action. Отметим важный момент – задача, может создавать для своей работы
подзадачи, по отношению к которым она будет считаться родительской. В
таком случае родительская задача может делегировать право распоряжаться
эффекторами своим дочерним задачам, те в свою очередь своим и т.д.
Очевидно, что передать право использовать эффекторы родительская задача
может только на реально захваченные эффекторы. Ситуация конфликта за
ресурсы между дочерними задачами возможна. Поэтому приоритет задачи не
является абсолютным и сравнение двух задач по приоритету может
осуществляться только для задач, непосредственных потомков одного
родителя.
Эффектор «помнит», какая задача на нем выполняется в данный момент.
Кроме того, у эффектора существует стек задач. Стек позволяет отслеживать
иерархию дочерних задач, назначенных на него самой высокоуровневой
задачей его захватившей. Это нужно, чтобы для дочерних задач и
порожденных ими подзадач также автоматически происходило определение
и сравнение по приоритету на предмет пользования эффектором, с учетом
отношения "предок-потомок".
Рассмотрим описание эффектора классом C++.
////////////////////////////////////////////////////////////////////////////////////
// Класс Effector - исполнительный механизм агента
////////////////////////////////////////////////////////////////////////////////////
class Effector
{
public:
//Конструктор эффектора для агента. Эффектору
//присваивается уникальный идентификатор.
Effector(Actor* owner, EffectorID id);
//Работа со стеком задач назначенных на эффектор. Такой стек
//могут образовывать только задачи состоящие в отношении
//«родитель-потомок».
void pushAction(Action* action);
void popAction();
Actor* m_owner;
EffectorID m_id;
ActionStack m_actionStack;
};
Наконец рассмотрим часть класса Actor, описывающего агента,
отвечающего за работу с задачами и эффекторами.
////////////////////////////////////////////////////////////////////////////////////
// Класс Actor - агент с эффекторами и задачами
////////////////////////////////////////////////////////////////////////////////////
class Actor
{
public:
//Устанавливает задачу на выполнение эффекторы, заданные в самой
//задаче переменной m_requiredEffectors. В случае удачного старта
//задача возвращает true.
bool setAction(Action* action);
//Останавливает выполнение всех задач на заданном эффекторе.
bool resetEffector(EffectorID effectorID);
//Останавливает выполнение заданной задачи, освобождая все
//захваченные ею эффекторы.
void releaseAction(Action* action);
//Обновление эффекторов. В цикле опрашиваем каждый их
//эффекторов. В свою очередь эффекторы вызывают update() для
//задач выполняемых на них.
void updateEffectors();
//Получить эффектор по его идентификатору.
Effector* getEffector(EffectorID id);
//Список эффекторов агента, заполняется при создании агента.
Set m_effectors;
};
Рассмотрим основные этапы работы функции setAction более подробно.
bool Actor::setAction(Action* action)
{
//Вначале проверяем может ли задача быть запущенна
if (!action->check()) return false;
//В action-> m_acquiredEffectors список захваченных эффекторов,
//для каждого из них проверить не выполнялась ли на нем задача,
//и если выполнялась, то остановить ее вызвав effectorsLost()
for (int i = 0; i<action->m_acquiredEffectors.size(); i++)
{
…
}
//Теперь для всех эффекторов захваченных задачей
добавляем ее в //стек задач.
for (int i = 0; i<action->m_acquiredEffectors.size(); i++)
{
Effector* effector = getEffector(acquiredEffectors[i]);
effector->pushAction(action);
}
//Запускаем задачу на выполнение
action->init();
return true;
}
Три описанных интерфейса для классов Action, Effector и Actor
позволяют описать широкий круг реальных агентов и задач выполняемых
ими. Реализация подобных классов может быть выполнена на любом языке
программирования, поддерживающего основные принципы ООП.
Заключение
В данной статье был рассмотрен подход реализации программы
интеллектуального агента характерный агентов способных выполнять
несколько поставленных задач одновременно. При чем задачи агента всегда
связываются с одним или несколькими эффекторами. Авторы статьи
подготовили данную работу по материалам создания программной
библиотеки для систем виртуальной реальности компьютерных игр. Однако
фундаментальных ограничений для того, чтобы расширить область
применения описанных методик не существует, поэтому данный подход
можно адаптировать и на агентов других типов виртуальной реальности или
робототехники.
1. Стюарт Рассел, Питер Норвиг «Искусственный интеллект: современный
подход(AIMA)», 2-е издание : Пер. с англ. - М.:Издательский дом «Вильямс»,
2005.-1424 стр. с ил.
2. Добронравин Ю.В., Интеллектуальные агенты, базирующиеся на принципе
психической доминанты. // VII-я международная конференция
"Интеллектуальный анализ информации ИАИ-2007", 14-18 мая 2007 года, Киев
3. Добронравин Ю.В., Проблема построения эффективных интеллектуальных
агентов в системах виртуальной реальности // VIII-я международная
конференция "Интеллектуальный анализ информации ИАИ-2008", 14-18 мая
2008 года, Киев
|