Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_по_jason_(итог).doc
Скачиваний:
78
Добавлен:
21.03.2016
Размер:
1.79 Mб
Скачать

1.2. Программные агенты и программные объекты

Те, кто знаком с объектно-ориентированным программированием (ООП), часто не видят никакой разницы между объектами и агентами [3].

Действительно, программные агенты это особый подкласс программных объектов, в которых человек склонен видеть самостоятельных деятелей и переносить на них человеческие качества (такие как наличие целей, обладание способностями и т.д.). Заманчиво думать, что объекты «решают», что им делать в конкретной ситуации и «просят» других сообщить им некоторую информацию.

Однако теория агентов это не подмена терминологии ООП, приводящая к самообману разработчиков, как может показаться с первого взгляда (см. также п.1.4).

Между понятиями «объект» и «агент» есть как очевидные сходства, так и заметные различия.

Различие первое

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

В противовес объектам, агенты не обязаны иметь общих целей, поскольку могут разрабатываться множеством разнообразных организаций и частных лиц для представления их собственных интересов в некоторой виртуальной среде. Поэтому агент «А» не должен выполнять свои методы только потому, что агент «Б» посылает ему соответствующие сообщения. Выполнение данных методов может и не лежать в области «интересов» агента «А». Иначе говоря, агент имеет полный контроль над своим поведением. Для организации взаимодействия между агентами, взамен жесткого выполнения методов в ответ на полученное сообщение, используется механизм запросов. Если агенту «А» нужно, чтобы агент «Б» выполнил некоторое действие, то он посылает агенту «Б» запрос на выполнение данного действия, но агент «Б» на основе своего механизма принятия решений сам решает, выполнять данное действие или нет. Для формулирования запросов существуют специальные языки, например KQML.

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

Различие второе

Гибкость автономного поведения агентов, обусловленная такими их свойствами как реактивность, проактивность, социальность и т.д. – является второй отличительной особенностью агентов.

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

Различие третье

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

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