Научная статья на тему 'Vmaster – среда для разработки и верификации вероятностных мультиагентных систем'

Vmaster – среда для разработки и верификации вероятностных мультиагентных систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
97
53
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Vmaster – среда для разработки и верификации вероятностных мультиагентных систем»

4. Шилдт Г. Полный справочник по Java. Java SE™ 6 Edition. М.: Вильяме, 2007. 1040 с.

References

1. Gurevich Yu., Petrishchev V., Ekspress-Elektronika [Express-Electronics], 2003, no. 12, Available at: http://citforum.ru/ hardware/mobile/wlan/index.shtml (accessed 10 Jan. 2013).

2. Puchkov A.Yu., Pavlov D.A., Programmnye produkty i systemy [Software and Systems], Tver, 2012, no. 2(98), pp. 149-153.

3. Dli M.I., Gimarov V.A., Kruglov V.V., Journ. of Comp. and Systems Sc. Intern., 2004, Vol. 43, no. 3, pp. 414-418.

4. Shildt G., Java SE 6: The Complete Reference, 7th Ed., McGraw-Hill/Osborne Media, 2006, 1024 p.

УДК 519.68

УМАЭТЕЯ - СРЕДА ДЛЯ РАЗРАБОТКИ И ВЕРИФИКАЦИИ ВЕРОЯТНОСТНЫХ МУЛЬТИАГЕНТНЫХ СИСТЕМ

П.В. Лебедев, аспирант (Тверской государственный университет, ул. Желябова, 33, г. Тверь, 170100, Россия, [email protected])

Рассматривается программная система для описания, редактирования, моделирования работы и верификации вероятностных мультиагентных систем (ВМАС). Кратко описаны архитектура мультиагентной системы, семантика ее работы. Рассматриваемая программная система позволяет создавать несколько интеллектуальных агентов, задавать им параметры, которые могут иметь различные типы данных, а также управлять обменом сообщениями между агентами с заданными вероятностными каналами связи. Каждый агент выполняет программу на каждом шаге работы системы, описываемую на некотором C-подобном процедурном языке. Предложен синтаксис этого языка, рассмотрены его сходство и различия с языком C, специальные средства описания вероятностных переходов ВМАС и обмена сообщениями между интеллектуальными агентами. Таким образом, состояния агентов и вероятностные действия образуют вероятностное пространство состояний, которое моделируется цепями Маркова. Верификация цепей Маркова - вычисление вероятности выполнения свойств системы, которые определяются формулами специальных (темпоральных) логик. Верификация выполняется методом проверки на модели. В программной системе реализованы алгоритм построения цепи Маркова по описанной ВМАС, а также несколько алгоритмов верификации полученной цепи для темпоральных логик PCTL и PLTL и их модификаций, кратко описаны синтаксис и семантика этих логик. Представлены пример описания ВМАС в программной системе и примеры верификации ВМАС для нескольких конкретных формул.

Ключевые слова: мультиагентные системы, интеллектуальный агент, динамическая система, верификация, темпоральные логики, PCTL, PTL, PLTL, проверка на модели, цепь Маркова, вероятность, вероятностная программа, граф состояний.

VMASTER - ENVIRONMENT FOR PROBABILISTIC MULTIAGENT SYSTEM DEVELOPMENT

AND VERIFICATION

Lebedev P. V., postgraduate (Tver State University, Zhelyabova St., 33, Tver, 170100, Russia, [email protected])

Abstract. This paper considers the program system for description, editing, modeling and verification of probabilistic multi-agent systems (PMAS). The architecture of PMAS and semantics of its work is briefly outlined. Considered program system allows creating several intelligent agents, setting their parameters with various data types and operating message exchange between agents with set probabilistic communication channels. At every step of work of the system every agent performs the program described on some C-like procedural language. There is syntax of this language, its similarity and distinction with C-language, description features of PMAS probabilistic transitions and message exchange between intelligent agents. Therefore, states of agents and probabilistic actions create probabilistic space of states modeled by Markov chains. Markov chains verification is probability calculation of system properties performance defined by special logics formulas (temporal). Verification is performed by model checking method. The algorithm of Markov chain construction for PMAS and some algorithms of the derived Markov chain for temporal logics PCTL and PLTL and for its modifications are realized in the program system. Syntax and semantics of these logics are briefly described. The example of PMAS description in the program system and examples of PMAS verification for some concrete formulas are presented.

Keywords: multi-agent systems, intelligent agent, dynamic system, verification, temporal logic, PCTL, PTL, PLTL, model checking, Markov chain, probability, probabilistic program, state graph.

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

надежными также могут быть почтовые системы передачи сообщений между агентами. Такие системы можно моделировать конечными цепями Маркова.

Основной подход к их верификации основан на так называемом методе проверки на моделях (model checking), который в настоящее время широко

используется для верификации моделей с детерминированными и недетерминированными переходами. Верификация - это проверка (или вычисление вероятности) выполнимости некоторого свойства модели. При этом подходе спецификации свойств поведения ВМАС представляются формулами различных темпоральных логик.

В работах [1, 2] показано, как проблема верификации ВМАС в архитектуре IMPACT [3] может быть сведена к верификации конечных цепей Маркова.

В работе [4] описывается вероятностная система верификации PRISM, которая позволяет верифицировать такие модели, как дискретные цепи Маркова, цепи Маркова непрерывного времени, марковские процессы и др. , на простом языке, основанном на состояниях.

Рассмотрим программную систему VMASTER [5], позволяющую создавать и редактировать ВМАС, пошагово моделировать их работу и верифицировать созданные системы.

Вероятностные агенты

ВМАС A состоит из набора интеллектуальных агентов (Аь ..., Ад} и каналов связи CH[i,j] между ними. У каждого агента Ai есть набор параметров {x1, ..., xm} и почтовый ящик MsgBoxi, в котором хранятся сообщения, полученные им на текущем шаге от других агентов. Значения параметров и сообщения в почтовом ящике задают состояние агента. Работа агента Ai определяется его управляющей вероятностной программой Pri, которая в зависимости от состояния агента может изменять значения параметров Ai и посылать сообщения другим агентам.

Канал связи CH[i, j] между агентами Ai и Aj -это множество пар {(tb msg1), ..., (tr, ..., msgr)}, где msgl - сообщение, отправленное агентом Ai агенту Aj tj шагов назад. Для каждого канала связи определена конечная функция распределения вероятности pCH[i, j](t) - вероятность доставки сообщения от агента Ai агенту Aj не более чем за t шагов. При maxt pCH[i, j](t)<1 возможна потеря сообщения с вероятностью 1-maxtpCH[i, j](t).

Таким образом, глобальное состояние ВМАС включает состояния ее агентов и всех каналов связи. Для ВМАС задается некоторое начальное состояние. Шаг работы ВМАС - это переход от одного состояния системы к другому с некоторой вероятностью.

На каждом шаге работы ВМАС выполняется следующая последовательность операций:

1) предварительное опустошение почтовых ящиков всех агентов;

2) увеличение времени хранения всех сообщений в каналах связи на единицу;

3) доставка сообщений из каналов связи агентам в соответствии с заданными вероятностями;

4) выполнение программ агентов Pr1, ..., PrN, приводящее к изменению состояний агентов и помещению новых сообщений в каналы связи.

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

• Три основных типа данных: целое, вещественное, строка.

• Динамические массивы произвольной размерности.

• Ссылки.

• Операторы в выражениях:

а) арифметические: +, -, *, /, Л;

б) операции сравнения: >, <, >=, <=, ==, != ;

в) логические операции: && (и), || (или), !(не);

г) операторы преобразования типов.

• Локальные и глобальные переменные.

• Стандартные операторы цикла и условного перехода: while, for, if.

• Специальные средства для моделирования выполнения вероятностных действий и рассылки сообщений между агентами.

Опишем более подробно специальные операторы для моделирования ВМАС.

1. Сообщения - это некоторые переменные целого типа, обозначающие, доставлено ли сообщение в почтовый ящик с данным именем на текущем шаге (если ее значение 1, то доставлено, если значение 0, то не доставлено). Сообщения могут иметь только те имена, которые использовались в функции message, то есть были посланы каким-либо из агентов.

Оператор отправки сообщения от одного агента другому имеет вид:

message("агент-отправитель", "агент-получатель", "сообщение");

Пример:

message("A", "B", "msgl"); // отправка сообщения msgl от агента A агенту B.

if (msg1= =1) {k:=k+1;} // если сообщение msgl есть в почтовом ящике, то выполняем какие-либо действия.

2. Вероятностный переход. Имеются три вида функции вероятностного перехода:

random(int n) - возвращает случайное целое число от 1 до n с вероятностью 1/n;

random(double d1, ..., double dn) - возвращает случайное целое число к от 1 до n с вероятностью dk; для аргументов должно выполняться условие d1+...+dn=1.

random(double[] a) - возвращает случайное целое число к от 1 до длины массива с вероятностью а[к-1].

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

Пример:

int param1=1; // первый параметр агента

double param2=0.2; // второй параметр агента int f(int x) {return хл2;} // некоторая функция void step() // функция шага

{param1=f(param1);} // использование параметра агента

Проектирование ВМАС в программной системе VMASTER. При создании новой ВМАС создается проект, сохраняемый в формате xml. В нем описаны агенты, вероятности каналов связи, а также некоторые настройки.

Вкладка МАС служит редактором мультиа-гентной системы. Здесь задаются параметры и программы агентов, функции распределения вероятностей для каналов связи.

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

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

После написания программ для каждого агента и заполнения вероятностей каналов связи необходимо создать МАС командой меню Проект ^ Создать МАС. Перед этой процедурой проект сохраняется. При создании ВМАС программы агентов преобразуются в некоторое внутреннее представление. Если в программе обнаружится ошибка, создание ВМАС прекратится, описание ошибки будет выведено в поле под программой агента, а также будет указано место в тексте программы, где произошла ошибка. В поле Сообщения после создания ВМАС выводятся имена сообщений, которые посылаются данным агентом.

Пример ВМАС. Рассмотрим систему распределения ресурсов RES, которая включает агента-менеджера m, владеющего некоторым неограниченным ресурсом и распределяющего его среди четырех агентов-пользователей u1, u2, u3, u4, получая от них заказы на этот ресурс. Каждый из агентов-пользователей потребляет ресурс за один шаг. У каждого из них имеется собственная стратегия запросов ресурса:

- u 1 запрашивает ресурс в начальный момент времени, а затем повторяет запрос сразу же после потребления ресурса;

- u2 запрашивает ресурс сразу после того, как его заказал u1;

- и3 запрашивает ресурс сразу после того, как и1 получил ресурс от т;

- и4 запрашивает ресурс на каждом шаге.

Менеджер т ведет очередь заказов и, если она

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

В таблице 1 показаны функции распределения вероятностей доставки сообщений по каналам связи.

Таблица 1

m ul u2 u3 u4

m (1) (0,5; 0,3; 0,2) (0,1; 0,7; 0,2) (0,3; 0,4; 0,3) (0,5; 0,3; 0,2)

ul (0,3; 0,6) (1) (0,5; 0,5) (0,2; 0,2; 0,6) (1)

u2 (0,1; 0,9) (1) (1) (1) (1)

u3 (0,4; 0,6) (1) (1) (1) (1)

u4 (0,1; 0,9) (1) (1) (1) (1)

Отметим, что в канале CH[u1, m] есть вероятность потери сообщений.

Далее приведены программы агентов.

Программа агента m:

int[] Q = new int(4); // очередь // добавить в очередь

void AddInQ(int agent_number /*=1,2,3,4*/) { int i;

for(i = 0; i < length(Q); i ++) { if(Q[i] == agent_number) { //игнорирование агента, // если он уже есть в очереди return;

}

if(Q[i] == 0) {

// конец очереди Q[i] = agent_number; return;

}

}

}

// удалить из очереди void DeleteInQ() { int i;

for(i = 0; i < length(Q) - 1; i ++) {

Q[i] = Q[i + 1];

}

Q[length(Q) - 1] = 0;

}

// Функция шага void m_Step() { // отправка ресурса

if(Q[0] > 0) { if(Q[0] == 1) message("m", "u1", "ok1"); else if(Q[0] == 2) message("m", "u2", "ok2"); else if(Q[0] == 3) message("m", "u3", "ok3"); else if(Q[0] == 4) message("m", "u4", "ok4");

DeleteInQ();

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

}

// получение запроса на ресурс if(mesl) AddInQ(1); if(mes2) AddInQ(2); if(mes3) AddInQ(3); if(mes4) AddInQ(4);

}

Программа агента u1:

int resl = 0; int start = 1;

//- Дополнительные процедуры ********************* void ResourceRequest1() { message("u1", "m", "mesl");

}

//- Функция шага void u1_Step() { if(res1 == 1) { // потребление ресурса на каждом шаге res1=0;

// повтор запроса сразу после потребления ResourceRequest1();

// оповещение агента u2 о том, что u1 заказал ресурс

message("u1", "u2", "request1");

}

if(start == 1) { // запрос ресурса на первом шаге ResourceRequest1();

// оповещение агента u2 о том, что u1 заказал ресурс

message("u1", "u2", "request1"); start = 0;

}

if(ok1) {

// получение ресурса от менеджера res1 = 1;

// оповещение агента u3 о том, что u1 получил ресурс от менеджера

message("u1", "u3", "get_resource1"); return;

}

}

Программа агента u2:

int res2 = 0;

//- Дополнительные процедуры ********************* void RequestResource2() { message("u2", "m", "mes2");

}

//- Функция шага void u2_Step() { if(res2 == 1) { // потребление ресурса на каждом шаге res2 = 0;

}

if(request1) { //u2 запрашивает ресурс сразу после того, как его запросил u1

RequestResource2();

}

if(ok2) {

// получение ресурса от менеджера

res2 = 1; return;

}

Программа агента u3:

int res3 = 0;

//- Дополнительные процедуры ********************* void RequestResource3() { message("u3", "m", "mes3");

}

//- Функция шага void u3_Step() { if(res3 == 1) { // потребление ресурса на каждом шаге res3 = 0;

}

if(get_resource1) {

//u3 запрашивает ресурс сразу после того, как его получил u1

RequestResource3();

}

if(ok3) {

// получение ресурса от менеджера

res3 = 1;

return;

}

}

Программа агента u4:

int res4 = 0;

//- Дополнительные процедуры ********************* void RequestResource4() { message("u4", "m", "mes4");

}

//- Функция шага void u4_Step() { if(res4 == 1) {

// потребление ресурса на каждом шаге res4 = 0;

}

if(ok4) {

// получение ресурса от менеджера res4 = 1;

}

// запрашивает ресурс на каждом шаге RequestResource4();

}

Верификация ВМАС

Темпоральные логики. Состояния ВМАС и вероятностные переходы между ними образуют граф состояний, который может быть промоделирован цепью Маркова. Такую модель можно верифицировать: находить вероятность выполнения какого-либо свойства на состояниях, а также бесконечных траекториях графа состояний или выяснять, будет ли выполнено свойство с заданной вероятностью для всех путей из некоторого состояния. Свойства поведения ВМАС описываются формулами темпоральных логик линейного и ветвящегося времени [6, 7]. В системе VMASTER для

}

верификации используются темпоральные логики PLTL (линейного времени) и PCTL (ветвящегося времени), а также их модификации, предлагаемые автором. Кратко опишем эти логики.

1. PLTL (Prepositional Linear Temporal Logic). Это темпоральная логика линейного времени. Формулы PLTL выражают свойства бесконечных траекторий графа состояний ВМАС:

Ф::=^ие\а\ ФлФ\ФvФ\—Ф\X(Ф)\Ф^Ф, где a -пропозициональная переменная; Х(Ф) - оператор Next, который требует, чтобы свойство Ф выполнялось во втором состоянии пути; Ф1иФ2 - оператор Until; выполняется, если на пути имеется состояние, в котором соблюдается свойство Ф2 и в каждом предшествующем состоянии этого пути соблюдается свойство Ф1.

Кроме того, в формулах можно использовать дополнительные операторы:

Ff=true^if - оператор будущего; G f=—F(—f) - оператор инвариантности.

2. PCTL (Probabilistic Computation Tree Logic). Это темпоральная логика ветвящегося времени. Формулы PCTL выражают свойства деревьев вычислений:

Ф::=true\a\ФлФ\ФvФ\—Ф\[X(Ф)]gp\ [ФиФ]эр Здесь ge{>, >}, pe[0; 1]; a - пропозициональная переменная.

В этой логике формула вида [Х(Ф)] gp выполнена, если с вероятностью gp на следующем состоянии выполнена Ф, а формула вида [Ф1иФ2] gp выполнена, если с вероятностью gp существует путь, где на некотором его состоянии выполнена Ф2, а на всех предыдущих состояниях этого пути выполнена Ф1.

3. Ограниченный PLTL.

Это подмножество PLTL без оператора Until, но с оператором ограниченный Until: Ф:: =true \ а\ФлФ\ ФvФ\—Ф\X(Ф)\ 'u<k' '::=true|a|''л'|''v'|—''X(')).

4. Расширенный PCTL.

Расширяем PCTL, добавляя формулы вида Ф::=[Х(К Ф) 3p\X°R(k, Ф)] 3p\[X4ND(k, Ф)] gp, (k>1, целое)

ge{ >, >}, p [0; 1], k>1 - целое. Эти формулы имеют следующий смысл: [X(k, Ф)] gp - выполнена, если с вероятностью gp есть путь, точно на k-м состоянии которого выполнена Ф;

[X°R(k, Ф)] gp - выполнена, если с вероятностью gp существует путь, для которого существует такое 1<i<k, что на i-м состоянии этого пути выполнена Ф;

[XAND(k, Ф)] gp - выполнена, если с вероятностью gp существует путь, для которого для всех 1<i<k на i-м состоянии этого пути выполнена Ф.

Алгоритмы верификации. В программной системе VMASTER реализовано пять видов верификации.

1. СУ - верификация формулы логики PLTL алгоритмом из [8] с некоторыми модификациями. Кроме стандартных темпоральных операторов X и и, в язык добавлены следующие операторы:

Х(к, / - оператор, эквивалентный Х*/);

Х_ОЯ(к, / - оператор, эквивалентный

Х/^Х2/^ ...

Х_ЛЫБ(к, / - оператор, эквивалентный Х(/)лХ2(/)л ... лХк(/) (к>1 - целое число).

Отметим, что при верификации новые операторы Х(к, /), Х_ОЯ(к, / и Х_ЛЫБ(к, / в формулах не раскрываются в соответствии с эквивалентно-стями (а), (б), (в), а обрабатываются специальным, более быстрым алгоритмом, имеющим линейную от к сложность.

2. к-йМ - поиск минимального числа шагов к, такого, что заданная формула / логики PLTL будет выполняться с заданной вероятностью ровно через к шагов. Заданная формула / верифицируется алгоритмом из [8], а число шагов к находится специально разработанным автором алгоритмом за линейное время от к.

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

4. СУ+вТР - верификация с совместным использованием CY и GTP.

5. РСТЬ - верификация формул расширенной логики РС^ с помощью обобщенного алгоритма верификации. Для логики РС^ существует алгоритм верификации полиномиальной сложности от размера модели и размера формулы, представленный в [9]. Для расширенного РС^ автором был обобщен этот алгоритм, причем сохранены его оценки сложности: он является полиномиальным от размера модели, размера формулы и максимального к.

Верификация в программной системе VMAS-

ТЕЯ. Вкладка Верификация служит для верификации цепей Маркова, полученной по рассматриваемой ВМАС. На ней также можно просмотреть некоторую информацию о пространстве состояний системы.

Перед началом верификации спроектированная ВМАС транслируется в цепь Маркова командой меню Проект ^ Создать цепь Маркова. При успешном создании цепи Маркова информация о ней отображается в поле Построение цепи Маркова. Цепь Маркова можно сохранять и загружать независимо от проекта командами меню Файл ^ Загрузить цепь Маркова... и Файл ^ Сохранить цепь Маркова...

Формулу логики PLTL, которую требуется верифицировать, нужно вводить в поле Верифика-

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

панели слева от ввода формулы. Результат верификации отображается в соответствующем поле.

Группа кнопок Пространство состояний внизу окна предоставляет возможность получить некоторую дополнительную информацию о состоянии модели.

Граф ц. М. - отображение графа текущей цепи Маркова с отмеченными на нем значениями переменных на состояниях, вероятностями переходов, начальным распределением вероятностей. Есть возможность отобразить как весь граф (для малых цепей), так и его часть для конкретного состояния (для больших цепей).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таблица 2

Формула Вероятность Время (сек.) Комментарий

F(res1 && res2 && res3 && res4) 0 0,67 «В будущем будет состояние, когда у всех будет ресурс». Такого состояния не будет

F(res1) 0,9299999 0,65 «В будущем ресурс будет у и1». Так как в СН[и1, т] возможна потеря сообщений, то вероятность не 1

F(res2) 1 0,65 «В будущем ресурс будет у и2»

F(res3) 0,9299999 0,62 «В будущем ресурс будет у и3». Так как и3 запрашивает ресурс после получения его и1, а и1 не всегда его получает, то и здесь вероятность не равна 1

F(res4) 1 0,68 «В будущем ресурс будет у и4»

X OR(6, res1) 0,867 0,9 «В течение шести шагов и1 получит ресурс»

X OR(6, res2) 0,03857523 0,8 «В течение шести шагов и2 получит ресурс»

X OR(6, res3) 0,00000023 1,17 «В течение шести шагов и3 получит ресурс»

X OR(6, res4) 0,6667975 0,65 «В течение шести шагов и4 получит ресурс»

F((Q[0] == 1 || Q[1] == 1 || Q[2] == 1 || Q[3] == 0 0,87 «Наступит момент, когда у менеджера будет

1) && res1) заказ от и1 при наличии ресурса у и1». 0 -потому что ресурс запрашивается только после потребления

F((Q[0] == 2 || Q[1] == 2 || Q[2] == 2 || Q[3] == 0,709006 6,65 «Наступит момент, когда у менеджера будет

2) && res2) заказ от и2 при наличии ресурса у и2»

F((Q[0] == 3 || Q[1] == 3 || Q[2] == 3 || Q[3] == 0,7269987 4,69 «Наступит момент, когда у менеджера будет

3) && res3) заказ от и3 при наличии ресурса у и3»

F((Q[0] == 4 || Q[1] == 4 || Q[2] == 4 || Q[3] == 1 0,85 «Наступит момент, когда у менеджера будет

4) && res4) заказ от и4 при наличии ресурса у и4». 1 -потому что запрашивается каждый шаг независимо от наличия

F(res1 && X(res1)) 0 1,35 «В будущем у и1 будет ресурс 2 шага подряд». Не будет, так как ресурс потребляется на каждом шаге, а запрос на новый только после потребления

F(res2 && X(res2)) 0,01068438 25,69 «В будущем у и2 будет ресурс 2 шага подряд». Редко ресурс доставляется одновременно с потреблением

F(res4 && X(res4)) 0,9999993 3,97 «В будущем у и4 будет ресурс 2 шага подряд». У и2 ресурс есть почти всегда

G((Q[0]==0 && Q[1]==0 || Q[0] != Q[1]) && 1 1,93 «В очереди менеджера нет двух заказов от

(Q[0]==0 && Q[2]==0 || Q[0] != Q[2]) && (Q[0]==0 && Q[3]==0 || Q[0] != Q[3]) && одного агента-потребителя»

(Q[1]==0 && Q[2]==0 || Q[1] != Q[2]) &&

(Q[1]==0 && Q[3]==0 || Q[1] != Q[3]) &&

(Q[2]==0 && Q[3]==0 || Q[2] != Q[3]) )

X_OR(4, ">=", 0,5, ok1) 1 0,35 «С вероятностью >0,5 менеджер пришлет ресурс за 4 шага от начала работы системы»

X_OR(4, ">=", 0,6, ok1) 0 0,35 «С вероятностью >0,6 менеджер пришлет ресурс за 4 шага от начала работы системы»

U(30, 1, res2 && res3 && res4) 0,129797 68,35 «За 30 первых шагов работы системы будет момент, когда и2, и3 и и4 будут иметь ресурс»

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

ГИП - отображение графа истинных траекторий, получаемого после верификации в режимах GTP или CY+GTP.

Параметры - отображение всевозможных значений параметров на всех состояниях цепи Маркова в виде списка.

Пример верификации. Рассмотрим верификацию определенной ранее ВМАС RES. Цепь Маркова, построенная по ней, имеет следующие характеристики: количество состояний - 124 841, количество переменных - 16, количество начальных состояний - 1, количество имен сообщений -10, количество переходов - 1 483 620, минимальное число переходов из состояния - 2, максимальное число переходов из состояния - 64.

В таблице 2 приведены результаты верификации некоторых формул на полученной цепи Маркова. Верификация производилась на процессоре Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz.

Как видно из таблицы 2, на скорость работы алгоритма CY существенно влияет число темпоральных операторов (например, формула F(res2 л X(res2)) с двумя темпоральными операторами верифицируется значительно дольше, чем формулы с одним). Последняя формула в таблице 2 (7(30, 1, res2 && res3 && res4) содержит 30 темпоральных операторов, что дает еще большее время верификации, но, благодаря использованию полиномиального алгоритма GTP, это время гораздо меньше, чем время верификации эквивалентной формулы алгоритмом CY.

Автор благодарит М.И. Дехтяря за постановку задач и постоянную поддержку и М.К. Валиева за полезное обсуждение работы.

Литература

1. Валиев М.К., Дехтярь М.И. О сложности верификации недетерминированных вероятностных мультиагентных систем // Моделирование и анализ информационных систем. 2010. Т. 17. № 4. С. 41-50.

2. Dekhtyar M., Dikovsky A., Valiev M., LNCS, 2008, Vol. 4800, pp. 256-265.

3. Subrahmanian V.S., Bonatti P., Dix J., Eiter T., Kraus S., Ozcan F. and Ross R., Heterogeneous Agent Systems, MIT Press, 2000.

4. Kwiatkowska M., Proc. 18th IEEE Symp. «LICS'03», IEEE Computer Society Press, 2003, pp. 351-360.

5. Лебедев П.В. Программа верификации вероятностных многоагентных систем // 12-я национальн. конф. по искусств. интел. с междунар. участ. 2010. Т. 4. С. 81-88.

6. Baier C., Katoen J.-P., Principles of model checking, MIT Press, 2008.

7. Clarke E.M., Grumberg O., Peled D.A., Model checking, MIT Press, 1999.

8. Courcoubetis C., Yannakakis M., Jorn. ACM, 1995, Vol. 42, no. 4, pp. 857-907.

9. Hansson H., Jonsson B., A logic for reasoning about time and reliability. Formal Aspects of Computing, 1994, no. 6(5), pp. 512-535.

References

1. Valiev M.K., Dekhtyar M.I., Modelirovanie i analiz in-formatsionnykh system [Modeling and Analysis of Inform. Systems], 2010, Vol. 17, no. 4, pp. 41-50.

2. Dekhtyar M., Dikovsky A., Valiev M., LNCS, 2008, no. 4800, pp. 256-265.

3. Subrahmanian V.S., Bonatti P., Dix J., Eiter T., Kraus S., Ozcan F., Ross R., Heterogeneous Agent Systems, MIT Press, 2000.

4. Kwiatkowska M., Proc. 18th IEEE LICS'03, IEEE Computer Society Press, 2003, pp. 351-360.

5. Lebedev P.V., XII natsionalnaya konf. po iskusstvennomu intellectu s mezhdunar. uchast. [12th National Conf. on artificial intelligence with int. participation], 2010, Vol. 4, pp. 81-88.

6. Baier C., Katoen J.-P., Principles of model checking, MIT Press, 2008.

7. Clarke E.M., Grumberg O., Peled D.A., Model checking, MIT Press, 1999.

8. Courcoubetis C., Yannakakis M., JACM, 1995, Vol. 42, no. 4, pp. 857-907.

9. Hansson H., Jonsson B., Formal Aspects of Computing, 1994, no. 6(5), pp. 512-535.

УДК 004.434+004.75

СРЕДА ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ ДЛЯ РАЗРАБОТКИ ПАРАЛЛЕЛЬНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОБРАБОТКИ ИЗОБРАЖЕНИЙ И СИГНАЛОВ

К.В. Герценбергер, мл. научный сотрудник (Объединенный институт ядерных исследований, ул. Жолио-Кюри, 6, г. Дубна, 141980, Россия, [email protected]); А.А. Дюмин, ст. преподаватель; П. С. Сорокоумов, ассистент (Национальный исследовательский ядерный университет «МИФИ», Каширское шоссе, 31, г. Москва, 115409, Россия, [email protected], [email protected])

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

i Надоели баннеры? Вы всегда можете отключить рекламу.