ТОП 10:

Сравнительная характеристика языков



 

Java - вероятно, один из наиболее популярных языков используемых в последнее время для программирования агентов. Java представляет из себя язык программирования, подобный C++ по синтаксису, но более схожий со Smalltalk и Objective C по идеологии. Система программирования на Java включает в себя виртуальную машину Java и транслятор с Java в bytecode.

Язык Java предусматривает создание приложений, переносимых на различные платформы. Программа, написанная на Java, компилируется в специальный машинно-независимый байт-код. Затем этот код может быть исполнен с помощью интерпретатора Java на любом компьютере, где реализована Java Virtual Machine. Тем самым обеспечивается платформо-независимость Java - приложений на уровне байт-кода, который может приходить откуда угодно, включая Web-страницу, в которой содержится ссылка на него. Java Virtual Machine работает в среде вытесняющей мультизадачности и поддерживает облегченные процессы (threads). Средства создания и синхронизации таких процессов включены в Java на уровне языковых конструкций и классов. Средства многозадачности также призваны обеспечить реакцию системы в реальном времени для мультимедийных приложений, критичных ко времени.

Java представляет собой истинно объектно-ориентированный язык программирования с сильной типизацией. Схожесть с C++ делает его простым для изучения программистами. В нем отсутствует предельно ясное распределение памяти и для повышения надежности программ из языка исключена арифметика указателей. Каждый тип данных понимается как класс объектов, любая функция является методом класса. Ее вызов рассматривается с объектно-ориентированных позиций как посылка сообщения объекту. Имеется встроенная расширяемая библиотека классов, включающая Abstract Window Toolkit (AWT) для создания пользовательских интерфейсов, классы поддержки основных типов данных, threads, сетевых возможностей, графики, мультимедиа, и т. д. К средствам повышения надежности следует отнести встроенную в язык обработку исключительных ситуаций (exceptions) и run-time контроль за выполнением программы, такой, как проверка выхода за границы массивов и т.д.

Язык Java может быть использован для создания двух типов программного обеспечения: автономных приложений, которые могут включать «родной» (т.е. машинно-зависимый) код и апплетов - платформо-независимых приложений, которые могут приходить из сети и запускаться с помощью поддерживающих Java Web - броузеров. Апплеты могут встраиваться в Web страницы после специальной метки языка HTML, указывающей ссылку на их код, и запускаться автоматически, когда страница открывается в броузере.

Язык Java был спроектирован с учетом возможности создания приложений работающих в распределенной среде. Кроме поддержки возможностей TCP/IP, таких как чтение URLs, работу с сокетами и обмен сообщениями на уровне датаграмм, в Java предусмотрен механизм удаленного вызова объектов, определенный в спецификации RMI (Remote Method Invocation). Этот механизм позволяет вызывать методы удаленных объектов, объявленные в специальном интерфейсе, причем синтаксически такой вызов выглядит идентично вызову простого метода. Эта схема предоставляет более гибкие возможности по сравнению с традиционным протоколом RPC (Remote Procedure Call). Механизм сериализации (Serialization) позволяет сохранять объекты и графы объектов в потоках данных (файлах, сетевых каналах) и восстанавливать их при необходимости. При этом обеспечивается достаточный уровень секретности передаваемой информации. С выходом спецификации Java IDL и нового продукта Black Widow компании PostModern Computing Technologies открылась возможность к сближению Java приложений и коммуникационного стандарта CORBA 2.0 консорциума OMG (Object Management Group). Специальный компилятор позволяет, исходя из описаний интерфейсов на языке IDL CORBA, генерировать код Java объектов. Это позволит использовать вызовы объектов, находящихся в корпоративных сетях, из Java приложений и сделать Java - объекты доступными для этих вызовов.

На сегодняшний день Java доступна на следующих платформах: Windows 95/NT, Solaris (Intel, SPARC), Macintosh System 7.5.

 

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

Приложение, рассчитанное на неподготовленного пользователя (End User Application);

Систему, основанную на знаниях (Knowledge Based System);

Хранилище специальных знаний (Knowledge Base Repository) - хранилище знаний о содержимом базы знаний - используется для отслеживания истории доступа, целостности и других аспектов функционирования баз знаний;

Система управления базами данных (Database System);

Активные сенсоры (Active Sensors)- отвечают за обмен данными (знаниями) с “внешним миром”

Возможны различные способы взаимодействия перечисленных компонент.

Разработчики KQML выделяют 3 направления, особенно важных с их точки зрения для коммуникаций интеллектуальных агентов:

Связность (Connectivity) - фокусируется на способе связывания агентов между собой;

Архитектура (Architecture)- акцентирует внимание на способе построения будущей системы (будет ли система статической, когда все компоненты известны уже на этапе проектирования/реализации или динамической);

Коммуникации (Communication)- данное направление рассматривает синхронность/асинхронность обмена сообщениями между агентами.

При разработке языка были сделаны специальные предположения об основных моментах его использования для описания коммуникаций многоагентных систем:

Архитектура. Агенты - это отдельные процессы, работающие в одном адресном пространстве или на различных машинах, соединенные посредством Internet.

Коммуникации. Язык поддерживает следующие стратегии передачи информации: point to point, multicast, broadcast.

Синтаксис. Сообщения между уровнями содержимого, сообщений и коммуникаций представлены в виде s-выражений языка Lisp. Между процессами выражения передаются как потоки ASCII -символов.

Протокол. Для транспортной поддержки KQML был создан специальный протокол - SKTP (Simple Knowledge Transfer Protocol).

Рассмотрим уровни языка KQML. Язык KQML состоит из трех уровней: содержимого, сообщений и коммуникаций. KQML-выражение можно рассматривать как выражение-содержимое, помещенное в сообщение-обертку, которое, в свою очередь, помещено в коммуникационную обертку. На уровне содержимого находится представление знаний на некотором языке. Уровень сообщений добавляет дополнительные атрибуты, такие как описание языка, на котором выражено содержимое, его онтологию и тип используемого метода переговоров. Коммуникационный уровень добавляет информацию об отправителе и получателе сообщения, а также указывает, является сообщение синхронным или асинхронным.

Основу синтаксиса языка KQML составляют имена примитивных действий- сообщений, которые в английской транскрипции называются “performatives” Тип сообщений определяет, что можно сделать с предложениями, содержащимися в сообщении, с этим связано само название KQML-сообщений на английском языке.

Все действия-сообщения можно разделить на следующие категории:

-языка содержимого KQML, который предполагает модель баз в форме множества предложений некоторого языка, который может быть объектным;

-контекста рассуждений - подмножества предложений (фрагмента) базы знаний; запросы и отклики должны делаться относительно некоторого контекста, при этом сообщения данного типа должны позволять определять контекст и переключаться между фрагментами базы знаний;

-определения, которые имеют целью активизировать и отменять определения;

-ответы на вопросы, которые позволяют задавать вопросы относительно истинности предложений;

-отклики, которые определяют набор сообщений для получения ответов на заданные вопросы.

 

SKTP - Simple Knowledge Transfer Protocol.Первые две реализации SKTP были написаны на языках Common Lisp и Пролог соответственно. В настоящее время разрабатываются интерфейсы на других языках. SKTP - это реализация стека протокола KQML. Как и KQML, SKTP состоит из нескольких уровней: содержимого, сообщений и коммуникации. Коммуникации между приложениями происходят на языке приложений, поддержку данного процесса обеспечивает уровень содержимого (content layer). Выражения, помеченные для передачи, “обертываются” в сообщения - это т.н. уровень сообщений (message layer) , реализуемый с помощью интерфейса библиотеки посредника (Facilitator Interface Library - FIL). Уровень, отвечающий за стратегию передачи сообщений (multicast, broadcast и т.д.) называется коммуникационным и реализован в виде отдельного агента, называемого посредником (facilitator). На самом нижнем уровне, реально несущем структурированные данные между посредниками, находится протокол TCP/IP.

 

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

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

Перечислим основные свойства языка KIF.

1. Язык является декларативным, чем отличается от языков типа Prolog и Emycin.

2. Язык является логически полным.

3. Язык является транслируемым (translatability) - он предполагает значения для трансляции декларативных баз знаний в/из типичных языков представления знаний.

4. Язык является хорошо читаемым, что упрощает его использование разработчиком баз знаний.

5. Язык может быть использован как язык представления знаний.

Существуют две разновидности языка KIF: линейный и структурированный. В линейном варианте все его выражения - это строки ASCII-символов, что удобно для хранения на устройствах с последовательным доступом. В структурированном варианте языка правильные выражения - это структурированные объекты. Структурированный язык удобен для использования при коммуникациях программ, работающих в одном адресном пространстве. Между линейным и структурированным представлениями одной и той же сущности существует взаимно-однозначное соответствие.

Соответствие между линейным и структурированным представлениями определяется следующим образом: строка ASCII-символов будет правильным выражением линейного варианта языка KIF тогда и только тогда, когда (1) она допускается интерпретатором языка Common Lisp, и (2) структура, порожденная интерпретатором Common Lisp будет правильным выражением структурированного KIF.

В структурированном KIF определены следующие синтаксические конструкции: word, expression, operator, constant, term, sentence, definition, rule и т.д.

Применимость KIF в рамках разработки агентов видится следующим образом. Ядро агента, а именно: подсистемы управления памятью, планирования, база знаний и т.д. пишутся на С++ или на одном из языков Java, Telescript (если нас интересует способность агента к мигрированию по сетям), а KIF используется как язык для обмена знаниями/данными с другими агентами (для этого агент должен иметь подсистему перетрансляции с языка внутреннего представления знаний на KIF). Язык KIF можно также использовать и как язык представления собственных знаний агента, в этом случае отпадает надобность в упомянутом выше трансляторе.

 

April: Agent Process Interaction Language. Это язык высокого уровня, который предлагает простой интерфейс к другим языкам программирования типа C. April ориентирован на реализацию многоагентных систем. Однако, April не является языком программирования агентов в том смысле, что он не предлагает таких высокоуровневых возможностей, как планировщики, механизмы вывода на основе правил и системы представления знаний. April скорее является объектно-ориентированным языком со средствами поддержки параллельного выполнения задач и рассматривающим объекты как процессы. Он является подходящей основой расширений для задач распределенного искусственного интеллекта и для прикладного программирования многоагентных систем.

AgentSpeak.Аналогом класса в данном языке выступает семейство, представителем (экземпляром) семейства является агент. Каждый агент обладает базой данных отношений с публичной и приватной частями, множеством сервисов и множества планов - процедур, о которых известно лишь то, выполнены они или нет. Язык обеспечивает распределенность хранения информации в пространстве функционирования агентов.

Каждый агентский сервис может быть одного из следующих трех типов: achieve, query, told. Каждый агентский план определяется при помощи имени и описания абстрактной ситуации, в которой он может быть применен. Во время работы агента, если план применим в текущей ситуации, выполняются действия, связанные с данным планом.

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

Несколько слов об операционной семантике языка. Язык требует, чтобы все семейства агентов были определены до начала выполнения средой агентских заданий (во время компиляции), динамическое создание агентов не поддерживается.

Каждый агент может находиться в одном из трех состояний: активный, ожидающий, неработающий (idle).

По прибытии к агенту сообщения оно кладется в его почтовый ящик, далее агент начинает обрабатывать сообщение. Это заключается в следующем. Сначала по типу речевого сообщения (achieve, query, told) выбираются планы, которые могут быть потенциально применимы в данной ситуации (множество подходящих планов), далее выполняется просмотр абстрактных ситуаций множества выбранных на предыдущем шаге планов (множество применимых планов). Затем для последнего множества строятся реализации (ссылки). По умолчанию система выбирает один план из множества применимых и начинает выполнять действия, указанные в целевой части описания плана. Такой выбранный план называется намерением . В любой момент выполнения агент может обладать несколькими намерениями - потоками. Как следствие из этого, агент является многопотоковым процессом. Внешние и внутренние сервисы агента функционируют, конкурируя за ресурсы, поскольку агент может выполнять как внешние, так и внутренние сервисы.

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

Agent0 и Placa трактуют агентно-ориентированное программирование как вид объектно ориентированного программирования, создатели же AgentSpeak считают, что первое является расширением (продолжением) второго.

 

TeleScript.Первая коммерческая реализация концепции мобильного агента была сделана в среде TeleScript-технологии фирмы General Magic. Данная технология основана на метафоре электронного рынка - общедоступной сети (public network), которая позволяет продавцам и потребителям товаров и услуг находить друг друга и заниматься совместным бизнесом.

TeleScript-технология оперирует следующими понятиями: места (places), агенты (agents), перемещения (travels), встречи (meetings), соединения (connections), полномочия (authority) и разрешения (permits). Далее кратко разъясняются перечисленные понятия:

· Места. TeleScript-технология рассматривает компьютерную сеть как множество мест. Место - стационарный процесс на сервере, предлагающий услуги входящему агенту.

· Агенты. Коммуникационное приложение трактуется как набор агентов. Каждый агент занимает конкретное место. Однако, агент может перемещаться от места к месту, и поэтому он может занимать несколько различных мест в одно и то же время. Агентские процедуры выполняются параллельно. В модели электронного рынка на типичном месте постоянно присутствует один, выделенный агент.

· Перемещение. Агенту предоставляется возможность путешествовать с места на место. Перемещение - отличительный признак системы удаленного программирования, оно позволяет агенту получить удаленную услугу и затем вернуться на место его старта. TeleScript позволяет коммуникационному пакету (computer package) - агенту (его процедурам и состоянию) перемещаться между компьютерами. Для перемещения между компьютерами агент выполняет инструкцию go. Инструкция включает ticket - данные о желаемом месте доставки, и других параметрах перемещения. В случае, если перемещение прошло успешно, агент получает уведомление об этом (его следующая инструкция выполняется уже на новом месте). В модели электронного рынка инструкция go позволяет агентам покупателей и продавцов располагать друг друга для более эффективного взаимодействия.

· Встречи. Встреча позволяет агентам вызывать процедуры друг друга. Встречи - это то, что “заставляет” агента перемещаться. Для встречи с расположенным рядом (co-located) агентом, агент выполняет инструкцию meet. Данная инструкция содержит требование (petition) - данные, определяющие агента, который “хочет” встретится и другие параметры встречи. Meet-инструкция позволяет покупателям и продавцам осуществлять транзакции.

· Соединения (пока не реализованы на 1995 год). Они позволяют агентам обмениваться информацией с разных мест. Для соединения агент выполняет connect-инструкцию. Данная инструкция содержит несколько параметров, таких как цель (target) соединения. Connect-инструкция позволяет агентам обмениваться информацией на расстоянии.

· Полномочия. Технология позволяет агенту или месту распознавать полномочия другого агента/места, причем агент или место не могут ни скрывать, ни фальсифицировать свои полномочия. Анонимность исключена. Технологией предусмотрена проверка полномочий при перемещении агента между регионами (network regions) сети - набором мест, расположенных на компьютерах, обладающих одинаковыми полномочиями. Для проверки полномочий агент или место выполняет инструкцию name. Результатом выполнения инструкции является telename - данные, позволяющие распознавать полномочия в рамках региона сети. Данная возможность позволяет защитить агентов и места от проникновения вирусов.

· Разрешения. Технология позволяет управлять назначением полномочий.

Язык программирования позволяет разработчику коммуникационного приложения определять алгоритмы функционирования агентов и данные, переносимые агентами во время перемещения по сети. Язык включает в себя возможности, предлагаемые C и C++. Приложение может быть написано целиком на языке TeleScript, но чаще разработчики поступают иначе: агенты и оболочки мест пишутся с помощью TeleScript, а стационарные части приложения (интерфейсы с пользователем, базами данных и т.д.) - на С или С++.

Telescript обладает следующими характеристиками:

· Полнотой.

· Объектно-ориентированностью.

· Динамичностью (dynamic). Агент может переносить информацию с места на место. Даже если при пересылке объект не известен на месте назначения, его класс следует вместе с ним по сети (код, определение класса).

· Сохранением (persistency). На каждом шаге выполнения агент и переносимая им информация безопасно сохраняется в не-volatile - памяти (постоянной - видимо, служебной памяти интерпретатора). Эта операция позволяет предотвратить крах компьютерной системы.

· Переносимостью и безопасностью. Компьютер выполняет инструкции, составляющие агента не напрямую, а посредством engine-интерпретатора. Агент может выполняться на любом компьютере, на котором инсталлирован интерпретатор.

· Ориентированностью на коммуникации (communication-centric). В язык встроены инструкции, позволяющие агенту просто выполнять сложные сетевые задачи.

 

Agent-Tcl. Agent-Tcl - это система мобильных агентов, в которой агенты написаны на Tcl 7.4 и Tk 4.0. Agent-Tcl активно используется в задачах информационного поиска и прикладных программах информационного управления. Agent-Tcl в целом аналогичен языку TeleScript, за исключением того, что Agent-Tcl более облегчен и в настоящее время обеспечивает ограниченную защиту. Альфа - версия доступна на Unix платформах.

 

Oz - параллельный, объектно-ориентированный язык программирования, который был разработан в DFKI (Германия). Имеются несколько проектов в DFKI, использующих Oz совместно с архитектурой InteRRaP (см. предыдущий раздел). InteRRaP представляет из себя многоуровневую архитектуру, которая построена для модели взаимодействующих автономных агентов. DFKI предлагает параллельный язык программирования, приспособленный для прикладных программ, которые требуют сложных символьных вычислений, организации кооперации агентов и некоторых возможностей управления в реальном масштабе времени. Реализация Oz является законченной средой программирования, включающей объектно-ориентированный интерфейс к Tcl/Tk. Прикладные программы на Oz уже использовались для моделирования многоагентных систем, обработки естественного языка, виртуальной реальности, графических пользовательских интерфейсов, планирования и создания расписаний.

Obliq - это интерпретируемый язык без контроля типов, который поддерживает, распределенные объектно-ориентированные вычисления. Вычисление в Obliq может охватывать многократные потоки управления внутри одного адресного пространства, многократные адресные пространства в пределах одного компьютера, множество компьютеров в гетерогенной локальной сети, и, наконец, даже множество сетей в Internet. Вычисления в Obliq могут перемещаться по сети, сохраняя сетевые соединения.

 

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

 

Таблица 1. Сравнение языков.

Язык Переносимость кода Доступность Сетевые возможности Параллельность
Java байт-код, виртуальная машина Java Windows 95/NT, Solaris SPARC /Intel, HP-UX, OS/2, Macintosh, Linux APIs (библиотеки классов), Remote Method Invocation, сетевая сериализация Threads синхронизованные с помощью мониторов
TeleScript интерпретация скриптов Solaris SPARC, HP-UX, OS IRIX TCP/IP, UDP, сетевая сериализация множественные процессы работающие в вытесняющей многозадачности
Tcl/Tk интерпретация скриптов Macintosh, Windows 3.1, Windows 95/NT, Solaris    
Oz   Solaris SPARC, Sun OS, SGI IRIX, HP-UX, DEC Ultrix, IBM RS6000, Linux    
Obliq интерпретиру-емый язык   гетерогенные распределенные сетевые вычисления множественные threads внутри одного адресного пространства, множественные адресные пространства в пределах машины, распределенные вычисления в гетерогенных сетях
April     UDP  
AKL        
Scheme 48        
Penguin        
Python интерпретиру-емый язык Windows, DOS, Macintosh, UNIX интерфейс к TCP/IP  
Facile        
AgentSpeak интерпретиру-емый пока не реализован   аналог потоков - намерения
         

AKL (Agent Kernel Language) - параллельный язык программирования, разработанный в Шведском Институте Информатики (SICS). В AKL вычисления выполняются агентами, взаимодействующими через хранилища ограничений и условий (stores of constraints). Этот подход объединяет сразу несколько парадигм программирования. В соответствующих контекстах об AKL - агентах можно думать как о процессах, объектах, функциях, отношениях, или ограничениях. AGENTS - система для программирования в AKL. PENNY - это параллельная реализация AKL, для которой были получены очень перспективные результаты, и которая будет развиваться далее.

 

Scheme 48.Scheme - один из диалектов языка LISP. Широкое разнообразие парадигм программирования, включая императивный и функциональный стили, а также передачу сообщений, находят удобное выражение в данном языке. Реализация Scheme, основана на архитектуре виртуальной машины.

 

Таблица 2. Сравнение языков.

Язык Символьные вычисления Обеспечение безопасности Объектная ориентация Встроенные агентские свойства
Java не поддерживаются есть есть, без множественного наследования нет
TeleScript не поддерживаются встроенные в язык и библиотеку классов средства да агенты, места, маршруты, встречи, соединения, авторизация, полномочия, инструкции: go, meet, connect, permit, name
Tcl/Tk не поддерживаются      
Oz поддерживаются      
Obliq не поддерживаются   распределенные объектно-ориентированные вычисления легко встраиваемые в приложения на Modula-3 нет
April       намерения
AKL        
Scheme 48        
Penguin   кодирование (и цифровая подпись) Perl кода передаваемого удаленной машине    
Python     да  
Facile        
AgentSpeak     агентно-ориентированный язык BDI (beliefs-desires-intentions) архитектура
         

 

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

Phantom - это интерпретируемый язык, разработанный для крупномасштабных интерактивных распределенных программ типа систем конференцсвязи, игр со многими игроками, и совместных инструментальных средств работы. Ядро языка основано на безопасном, расширенном подмножестве языка программирования Modula-3 и поддерживает ряд возможностей современного программирования, включая статическую типизацию, неявные объявления, объекты, облегченные процессы, и высокоуровневые функции.

Penguin - модуль языка Perl 5, который обеспечивает, набор функций для: (1) посылки шифрованного Perl-кода с цифровой подписью к удаленной машине, на которой он будет затем выполнен; (2) получения кода и, в зависимости от того, кем он подписан, его выполнения с соблюдением соответствующих прав. Комбинация этих функций дает возможность для непосредственного кодирования на языке Perl алгоритмов обработки безопасных финансовых сделок по Internet, мобильных агентов, собирающих информацию, “оживленных” Web-брoузеров, распределенных вычислений, удаленного обновления программного обеспечения, удаленного администрирования, распространения информации, конструкторов сетевых программ, и так далее.

Сводные характеристики языков и их сравнительные характеристики приведены соответственно в таблицах 1 и 2.

Заключение

 

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

Создание эффективно работающих реальных приложений требует еще достаточно больших усилий в области методов организации кооперативного решения задач агентами многоагентной системы, методов организации переговоров при разрешении конфликтов и создания соответствующих протоколов. В этой области недостаточно используются теоретические достижения в области распределенных систем и параллельных вычислений. Пока полностью игнорируются известные результаты и достижения советских и российских ученых, в частности, рефлексивные модели и методы рефлексивного управления, предложенные Лефевром [65], модели коллективного поведения автоматов с линейной тактикой и памятью [61, 66]. Отметим, что эти результаты могут быть использованы, например, в задачах типа “electronic market place” ввиду массового и случайного характера процесса обслуживания клиентов, в задачах составления расписаний при рандомизированном подходе и ряде других задач, где метафору агента и многоагентной системы предлагается использовать как модель предоставления соответствующего сервиса.

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

Работы в области многоагентных систем, в особенности разработка приложений, требуют привлечение знаний и технологий из ряда областей, которые ранее были вне поля зрения специалистов по искусственному интеллекту. Прежде всего это относится параллельным вычислениям, технологии открытой распределенной обработки, обеспечения безопасности и мобильности агентов. Необходимы знания в области сетевых компьютерных технологий и, в особенности, в области программирования в Internet [63].

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

 

Благодарности

 

Данная работа выполнена при поддержке Российского фонда фундаментальных исследований (грант No 96-01-00413).

 

Cписок литературы

 

[1] Allen, J. F., Kautz, H. A., Pelavin, R. N., & Tenenberg, J. D. (1991). Reasoning About Plans. Morgan Kaufmann Publishers, Inc., San Mateo, California.

[2] Arrow, K. J. (1963). Social Choice and Individual Values . John Wiley , New York.

[3] Aumann, R. (1987). Correlated equilibrium as an expression of bayesian rationality . Econometrica , 55 , 1-18.

[4] Barbuceanu, M. S. Fox, Conflict Management with a Credibility/Deniability Model, University of Toronto

[5] Barbuceanu, M. S. Fox, Integrating Communicative Action, Conversations and Decision Theory to Coordinate Agents, University of Toronto

[6] O.Belakhdar and J.Ayel. Meeting Scheduling: an Application for Protocols Driven Cooperation. In: Proceedings of the first International Conference ”The Practical Application of Intelligewnt Agents and Multi-Agent Technology” (PAAM 96), London, 1996, pp.25-44.

[7] A.H.Bond and L.Gasser (editors). Readings in Distributed Artificial Intelligence. Morgan Kaufmann Publishers, Inc., 1988.

[8] Bratman. Intentions, Plans, and Practical Reason. Harvard University Press, 1987.

[9] Cohen and H.J.Levesque. Intention is choice with commitment. Artificial Intelligence, 42:213-261, 1990.

[10] D.Chess et al. Itinerant Agent for Mobile Computing. Internal IBM. Technical Report, published in IEEE Personal Communications Magazine, 1995.

[11] Cohen and H.J. Levesque. Rational interaction as the basis for communication. In P.R.Cohen, J.Morgan, and M.E.Pollack, editors, Intentions in Communication. Bradford Books. MIT Press, 1990.

[12] B.Dunin-Keplicz and J.Treuer. Compositional Formal Specification of Multi-Agent System In:Intelligent Agents. ECAI-94 Workshop on Agent Theories, Architecture and Languages. Amsterdam, The Netherlands, August 8-9, 1994, (Eds. M.J.Wooldridge and N.R.Jennings). Proceedings. Springer Verlag: 102-117, 1994

[13] E.Durfee. Coordination of Distributed Problem Solvers. Kluwer Academic Press, 1988.

[14] B.Ekdahl, E.Astor and P.Davidsson. Towards Anticipatory Agents. In: Intelligent Agents. ECAI-94 Workshop on Agent Theories, Architecture and Languages. Amsterdam, The Netherlands, August 8-9, 1994, (Eds. M.J.Wooldridge and N.R.Jennings). Proceedings. Springer Verlag: 191-202., 1994

[15] E.A.Emerson and J.Y.Halpern. `Sometimes' and `not never ' revisited: on branching time versus linear time temporal logic. Journal of the ACM , 33(1), 1986.

[16] I.A.Ferguson. Integrated Control and Coordinated Behaviour: A case for Agent Models. In: Intelligent Agents. ECAI-94 Workshop on Agent Theories, Architecture and Languages. Amsterdam, The Netherlands, August 8-9, 1994, (Eds. M.J.Wooldridge and N.R.Jennings). Proceedings. Springer Verlag: 203-218, 1994

[17] R.E.Fikes and N.Nilsson. STRIPS: A new Approach to the Application of Theorem Proving to Problem Solving. Artificial Intelligence, 5(2): 189-208, 1971

[18] J.R.Galliers. A Theoretical Framework for Computer Models of Cooperative Dialogue, Acknowledging Multi-Agent Conflict . Ph.D thesis, Open University , UK, 1988.

[19] M.P.Georgeff, and A.S.Rao. Formal model and Decision Procedures for Multi-Agent Systems. Technical note 61, Australian Artificial Intelligence Institute, 1995.

[20] M.P.Georgeff and A.S.Rao. BDI Agents: From Theory to Practice. In Procedings First International Conference on Multi-Agent Systems (ed. V. Lesser). AAAI Press/The MIT Press, pp. 312-319, 1995.

[21] N.R.Jennings. Commitments and conventions: The foundation of coordination in multi-agent systems. Knowledge Engineering Review , 8(3):223-250, 1993.

[22] N.R.Jennings. Controlling Cooperative Problem Solving in Industrial Multi-Agent Systems Using Joint Intentions. Artificial Intelligence, 75 (2) pp. 195-240, 1995.

[23] Jun Huang, N.R.Jennings and J.Fox. An Agent Architecture for Distributed Medical Care. In: Intelligent Agents. ECAI-94 Workshop on Agent Theories, Architecture and Languages. Amsterdam, The Netherlands, August 8-9, 1994, (Eds. M.J.Wooldridge and N.R.Jennings). Proceedings. Springer Verlag:219-232, 1994

[24] J.Hintikka. Knowledge and Belief. Cornel University Press: Ithaca, NY, 1962.

[25] Knabe, Language Support for Mobile Agents, Ph.D. Dissertation, CMU. 1/19/95

[26] S.Kraus, M.Nirke, and K.Sycara. Reaching agreements through argumentation: A logical model. In Proceedings of the Twelfth International Workshop on Distributed Artificial Intelligence (IWDAI-93), Hidden Valley , PA, May 1993.

[27] S.Kripke.Semantic Analysis of Modal Logic. Zeitschrift fur Matematische Logik und Grundlagen der Matematik, No.9, 1963, pp. 67-96.

[28] H.J.Levesque, P. R.Cohen, and J.H.T.Nunes. On acting together . In Proceedings of the National Conference on Artificial Intelligence (AAAI-90) , pages 94-99, Boston, MA, 1990.

[29] Luce and Raiffa H. Games and Decisions, John Wiley & Sons, Inc, New York, 1957.

[30] P.Maes.







Последнее изменение этой страницы: 2017-02-17; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.234.244.18 (0.028 с.)