УДК 519.682.5
О проблеме
введения средств распределённого многоагентного программирования в логический
язык со строгой типизацией
А. А. Морозов, О. С. Сушкова, А. Ф. Полупанов
Институт радиотехники и электроники
им В.А. Котельникова РАН
Статья поступила в редакцию 5 июля
2016 г.
Аннотация. Рассмотрена проблема введения
средств многоагентного программирования в логический язык со строгой (сильной) типизацией.
Для обеспечения корректного взаимодействия агентов предложен подход на основе комбинированной
системы типов, идея которого заключается в том, что принцип статической
проверки типов в логическом языке смягчается, а именно, проверка корректности
использования объекта, полученного из другой программы (агента), откладывается
до тех пор, пока он не понадобится для удалённого вызова предикатов. Во всех
остальных случаях осуществляется статическая проверка типов. На основе
предложенного подхода реализовано расширение объектно-ориентированного
логического языка Акторный Пролог, поддерживающее распределённое
программирование. Конечной целью создания этого расширения языка является
разработка средств распределённого логического программирования для многоагентной
обработки видеоинформации и распределённого интеллектуального видеонаблюдения.
Ключевые слова: распределённое логическое
программирование, агентное логическое программирование, Акторный Пролог,
строгая типизация, комбинированная система типов, номинативная система типов,
структурная система типов, статическая проверка типов, динамическая проверка
типов, удалённый вызов предиката, объектно-ориентированное логическое
программирование, децентрализованное логическое программирование, параллельное
логическое программирование, логический агент, трансляция Пролога в Джаву,
интеллектуальное видеонаблюдение.
Abstract. The paper addresses the
problem of the development of agent logic programming means. The Actor Prolog
object-oriented logic language extension that supports distributed logic
programming and remote predicate calls is described. This is intended for the
multi-agent visual surveillance system implementation, that is, for the
development of logic programs (agents) that acquire, analyze the video stream semantics
in real time, and communicate with each other to facilitate the analysis and
share obtained information / conclusions. The Actor Prolog language has a
strong type system that is an important feature of the language and it is
necessary for the fast and reliable executable code generation. Thus, the
contradiction between the language strong type system and the idea of the
software agents' independency was a problem to be resolved in the course of
adapting the Actor Prolog language to the multi-agent paradigm. The problem of
incorporation of distributed multi-agent programming means into the strongly
typed logic language is considered. The approach to the multi-agent interaction
based on the dynamic and static typing fusion is proposed. The language distinguishes
instances of classes (the own worlds) created in a logic program and class
instances created in other agents (the foreign worlds). The static
type-checking and standard features of a nominative type system are implemented
for all the own worlds like in the conventional Actor Prolog. At the same time,
the dynamic type-checking and elements of a structural type system are
implemented for all the foreign worlds. The program separates clearly the own
and foreign worlds including the own worlds that were transmitted to other
agents and then returned home. This mechanism combines the advantages of the
static type-checking for the high-performance code generation with the
flexibility of the dynamic type-checking that is necessary for the multi-agent systems
programming.
Keywords: distributed logic
programming, agent logic programming, Actor Prolog, strong typing, combined
type system, nominative type system, structural type system, static
type-checking, dynamic type-checking, remote predicate call, object-oriented
logic programming, decentralized logic programming, concurrent logic
programming, logical agent, Prolog to Java translation, intelligent visual
surveillance.