Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
"К ТЕОРИИ СЕТЕВОЙ ЭКОНОМИКИ" Автор Паринов С.И.....doc
Скачиваний:
34
Добавлен:
03.12.2018
Размер:
2.74 Mб
Скачать

Технология активных объектов (тао)

Обзор возможностей ТАО сделан на основе публикаций [Shetsov и др., 1997], [Швецов и др., 1998], а также [Shetsov и др., 1999]. Данный раздел содержит только основные сведения. Более подробные данные и инструкции для построения агентных моделей на основе ТАО см. в указанных публикациях.

Главная особенность технологии активных объектов (ТАО) состоит в том, что она базируется на технологии недоопределенных моделей [Нариньяни], которая относится к наиболее развитым подходам в области программирования в ограничениях (constraint propagation - СР-подход). В ТАО технология недоопределенных моделей ([Shvetsov и др., 1995], [Semenov]) расширена средствами описания и интерпретации динамических интерактивных процессов. Кроме того, ее можно рассматривать как некоторую интеграцию программирования в ограничениях и традиционного объектно-ориентированного программирования. Это означает, в частности, что все аспекты поведения активных объектов и их взаимодействие пользователь описывает не с помощью методов и сообщений, а декларативно, в виде систем ограничений.

Недоопределенные модели (н-метод) разработаны в лаборатории Искусственного Интеллекта ВЦ СО РАН еще в начале 80-х и является в настоящее время одним из наиболее развитых подходов в области программирования в ограничениях. Этот метод, реализованный, в частности, в таких системах как UniCalc и NeMo+, позволяет эффективно решать сложные гетерогенные системы ограничений, в которых линейные и нелинейные уравнения и неравенства могут комбинироваться с теоретико-множественными и логическими отношениями. В классическом варианте н-метод позволяет работать только со статическими унитарными моделями.

Основным понятием ТАО является активный объект, который сочетает свойства традиционных программных объектов и агентов. МногоАгентная Система (МАС) описывается в виде сети активных объектов, состояния и связи которых динамически изменяются. МАС, сконструированная в технологии ТАО, характеризуется следующими возможностями.

Активные объекты существуют в едином времени, которое является встроенным понятием ТАО, и отсчитывается абстрактными часами. С каждым тактом этих часов связывается изменение состояний активных объектов и их взаимоотношений. Модель поведения активного объекта описывается в виде системы ограниче­ний, которая может иметь очень высокую математическую сложность, например, представлять собой нелинейную систему уравнений и неравенств. Решая эту систему, ТАО вычисляет текущее состояние активного объекта, используя в качестве начальных данных информацию о состояниях других активных объектов и сигналы, поступающие из внешнего окружения.

Взаимодействие активных объектов является асинхронным. Каждый активный объект индивидуально определяет момент изменения своего состояния, анализируя события, происходящие в МАС.

ТАО включает средства динамического реконфигурирования МАС. Это означает, что в процессе существования МАС может изменяться состав входящих в нее активных объектов, а также связи между ними. МАС может иметь иерархическую структуру. При этом активный объект более высокого уровня контролируют поведение некоторой группы подчиненных ему активных объектов. Контроль осуществляется с помощью наложения дополнительных ограничений на деятельность этой группы.

В данную технологию построения систем на базе активных объектов заложены следующие принципы:

- автономность - каждый компонент системы должен специфицироваться максимально независимо и легко включаться в различные конфигурации;

- декларативность - связи между компонентами системы должны задаваться на максимально высоком уровне без использования императивного управления;

- параллельность - компоненты системы должны допускать параллельную интерпретацию

Язык ТАО представляет собой объектно-ориентированную надстройку над языком UniCalc, где вводятся средства для спецификации сложных (пространственных) объектов, их отрисовки и поведения. Язык позволяет описывать реакцию объектов на сигналы, поступающие от датчиков и манипуляторов (мышь, клавиатура, пользовательская программа), а также на изменение своего состояния и состояния других объектов.

Основные символы языка включают буквы латинского алфавита, цифры и специальные символы.

Спецификация программы, в которой описывается набор активных объектов и их взаимодействие друг с другом, состоит из раздела объявлений, раздела инициализаций и раздела связываний.

<Спецификация> ::= <Объявления>

<Инициализация>

<Связывание>

<Конец спецификации>

<Объявления> ::= Specification

<Описание прототипов>

<Описание функций>

<Инициализация> ::= Initialization {<Инициализация объекта>}

<Связывание> ::= Linking {<Связывание объекта>}

<Конец спецификации> ::= End

Раздел "объявлений" содержит описание прототипов (объектов) и функций над прототипами (объектами). В разделе "инициализаций" происходит присваивание объектам конкретных значений. В разделе "связываний" для объектов, поведение которых зависит от состояния других объектов, устанавливаются связи с этими объектами.

Каждый объект характеризуется набором своих значений, которые хранятся в его полях — слотах. Кроме значений слоты могут содержать ссылки на другие объекты. Активный объект включает в себя набор ограничений на слотах, называемый моделью объекта. Модель содержит правила изменения состояния объекта в зависимости от его предыдущего состояния и состояния тех объектов, которые указаны в качестве внешних для него.

В общем случае структура объекта выглядит следующим образом:

Object <Имя прототипа> [ : <Имя родительского прототипа>]

( [ Out { <Имя слота> : <Имя прототипа>; } ]

[ In { [<Признак слота>] <Имя слота> : <Имя прототипа>;}]

[ Local { <Имя слота> : <Имя прототипа>; }]

[ Model { <Выражение> } ]

)

Объект характеризуется именем и, возможно, порождающим прототипом. Слоты объекта подразделяются на внешние (Out), внутренние (In) и локальные (Local). Внешние слоты представляют собой ссылки на прототипы объектов, на изменение состояния которых данный объект должен реагировать. В список внутренних слотов входят слоты, значения которых могут использовать другие активные объекты. Локальные слоты предназначены для использования внутри модели объекта и недоступны извне. Раздел Model содержит модель данного объекта.

В системе ТАО определен набор базовых графических прототипов, описание которых хранится в библиотеке. Эти прототипы содержат данные как набор слотов. Для каждого из них существует функция (метод) отображения, которая вызывается в процессе интерпретации программы. Базовые прототипы не содержат в себе модели. В них включен лишь минимальный набор слотов, требуемый для их отображения.

Определены следующие базовые графические прототипы: точка, отрезок, прямоугольник, окружность, дуга., эллипс, прямоугольная область, круг, сектор, овал.

Благодаря реализации механизма прямого наследования, иерархическое задание типов позволяет каждый раз останавливаться лишь на основных свойствах нового прототипа, забывая о второстепенных, определенных ранее для родительского прототипа.

В основу языка описания моделей объектов взят язык решателя UniCalc, который максимально приближен к общепринятой математической нотации. На этом языке модель записывается в виде совокупности выражений, связывающих между собой слоты объекта. Аналогично списку слотов, неявно в модель включаются и соотношения, унаследованные от прототипов. В ней могут фигурировать In- и Local-слоты описываемого объекта, а также In-слоты объектов, указанных в разделе Out. В описание включаются также константы, стандартные математические функции и функции пользователя. Каждое выражение должно заканчиваться символом ";".

Для задания конкретных числовых значений используются константы. С помощью арифметических операций из них конструируются константные выражения. Арифметические операции (+, -, *, /, ^) в Unicalc'e реализованы с общепринятым приоритетом и типом результата вычислений. Логические операции OR, AND, NOT, —> используются для построения логических выражений. Эти операции обычно связывают операции отношения, которые вырабатывают значение логического типа. В связи с тем, что в UniCalc' е значения переменных задаются в виде интервалов, используется трехзначная логика, т.е. результаты вычисления логических выражений могут принимать одно из трех значений: ЛОЖЬ, ИСТИНА, НЕОПРЕДЕЛЕНО.

В языке используются следующие операции отношения: = равно; <> не равно; < меньше; > больше;<= меньше или равно; >= больше или равно. Доступны следующие стандартные математические функции: sin, cos, tg, ctg, exp, In, abs, sign, sqrt, min, max, acos, asin.

В отличие от языка решателя UniCalc, в котором тип переменной определяется по первой букве ее имени, имена слотов могут быть произвольными, так как их тип указывается явно при описании. Принадлежность значения слота некоторого объекта текущему такту вычислений обозначается записью его имени, например S. Если же нужно указать значение слота или всего объекта для предыдущего такта, то после его имени приписывается апостроф – S`. Все операции и отношения в языке определены только для значений простых типов: integer, real и string. Если значение слота имеет простой тип, то достаточно указать его имя. В слотах сложных типов необходимо указывать путь к его подобъектам. Для этого через символ "." перечисляются имена слотов от внешних к внутренним вплоть до слота простого типа.

В языке существуют встроенные объекты — мышь и клавиатура, которые являются, по сути, внешними устройствами, функционирование которых обеспечивается системой. Система поддерживает только одну мышь и только одну клавиатуру, поэтому встроенные объекты Mouse и Keyboard не могут выступать в качестве прототипов, однако эти объекты могут быть переопределены. Описание Mouse и Keyboard может быть расширено добавлением разделов Out, Local, Model.

Система ТАО состоит из двух частей — компилятора и интерпретатора, которые работают последовательно. Компилятор по тексту модели, написанному на языке ТАО, формирует внутреннее представление модели, которое потом использует интерпретатор. Интерпретатор, исходя из своих данных, получаемых от внешних датчиков, внутреннего описания модели и результатов предыдущих вычислений, формирует модель для вычислителя (в данном случае — это UniCalc), отправляет ее на счет и получает результат, который соответствующим образом обрабатывает и отображает на экране (см. рис. 4.2. ниже).

МАС в целом, описанная на языке ТАО, представляет собой иерархически структурированную сеть активных объектов. В задачу компилятора входит построение исполняемого представления сети активных объектов. Структура этой сети может динамически изменяться в процессе функциони­рования МАС.

Поскольку состояния активных объектов вычисляются асинхронно, каждому из них может быть сопоставлен собственный программный модуль, обеспечивающий решение соответствующей системы ограничений (решатель ограничений). Этот модуль может исполняться на отдельном процессоре или узле компьютерной сети.

Взаимодействие активных объектов координирует специальный менеджер. Он обеспечивает, в частности, обмен данными между активными объектами, передачу им сигналов и другой информации от внешнего окружения, в том числе пользователя, переход МАС в новое состояние, связь с подсистемой графической визуализации поведения активных объектов и др.

В ТАО пользователь рассматривается как полноправный активный объект, который может оперативно влиять на работу МАС, генерируя с помощью внеш­них устройств (мыши, клавиатуры и др.) сигналы, данные, команды и т.п.

Рис. 4.2. Блок-схема ТАО