Алгоритм имитации Петри-объектной модели

Розглядається імітація Петрі-об’єктної моделі, що ґрунтується на об’єктноорієнтованій технології та стохастичній мережі Петрі з часовими затримками. Розроблений алгоритм імітації Петрі-об’єктної моделі. Реалізація алгоритму створена засобами Java-класів....

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2012
Автор: Стеценко, И.В.
Формат: Стаття
Мова:Russian
Опубліковано: Інститут проблем математичних машин і систем НАН України 2012
Назва видання:Математичні машини і системи
Теми:
Онлайн доступ:http://dspace.nbuv.gov.ua/handle/123456789/59993
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Цитувати:Алгоритм имитации Петри-объектной модели / И.В. Стеценко // Мат. машини і системи. — 2012. — № 1. — С. 154-165. — Бібліогр.: 9 назв. — рос.

Репозитарії

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id irk-123456789-59993
record_format dspace
spelling irk-123456789-599932014-04-12T03:01:41Z Алгоритм имитации Петри-объектной модели Стеценко, И.В. Моделювання і управління Розглядається імітація Петрі-об’єктної моделі, що ґрунтується на об’єктноорієнтованій технології та стохастичній мережі Петрі з часовими затримками. Розроблений алгоритм імітації Петрі-об’єктної моделі. Реалізація алгоритму створена засобами Java-класів. Рассматривается имитация Петри-объектной модели, основывающейся на объектно-ориентированной технологии и стохастической временной сети Петри. Разработан алгоритм имитации Петри-объектной модели. Реализация алгоритма создана средствами Java-классов. The simulation of Petri-object model based on object-oriented technology and time delay stochastic Petri nets is regarded. The Petri-object model’s simulation algorithm is developed. The implementation of the algorithm is created by means of Java-classes. 2012 Article Алгоритм имитации Петри-объектной модели / И.В. Стеценко // Мат. машини і системи. — 2012. — № 1. — С. 154-165. — Бібліогр.: 9 назв. — рос. 1028-9763 http://dspace.nbuv.gov.ua/handle/123456789/59993 004.94: 519.876.5 ru Математичні машини і системи Інститут проблем математичних машин і систем НАН України
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
language Russian
topic Моделювання і управління
Моделювання і управління
spellingShingle Моделювання і управління
Моделювання і управління
Стеценко, И.В.
Алгоритм имитации Петри-объектной модели
Математичні машини і системи
description Розглядається імітація Петрі-об’єктної моделі, що ґрунтується на об’єктноорієнтованій технології та стохастичній мережі Петрі з часовими затримками. Розроблений алгоритм імітації Петрі-об’єктної моделі. Реалізація алгоритму створена засобами Java-класів.
format Article
author Стеценко, И.В.
author_facet Стеценко, И.В.
author_sort Стеценко, И.В.
title Алгоритм имитации Петри-объектной модели
title_short Алгоритм имитации Петри-объектной модели
title_full Алгоритм имитации Петри-объектной модели
title_fullStr Алгоритм имитации Петри-объектной модели
title_full_unstemmed Алгоритм имитации Петри-объектной модели
title_sort алгоритм имитации петри-объектной модели
publisher Інститут проблем математичних машин і систем НАН України
publishDate 2012
topic_facet Моделювання і управління
url http://dspace.nbuv.gov.ua/handle/123456789/59993
citation_txt Алгоритм имитации Петри-объектной модели / И.В. Стеценко // Мат. машини і системи. — 2012. — № 1. — С. 154-165. — Бібліогр.: 9 назв. — рос.
series Математичні машини і системи
work_keys_str_mv AT stecenkoiv algoritmimitaciipetriobʺektnojmodeli
first_indexed 2025-07-05T11:07:35Z
last_indexed 2025-07-05T11:07:35Z
_version_ 1836804899203973120
fulltext 154 © Стеценко И.В., 2012 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 УДК 004.94: 519.876.5 И.В. СТЕЦЕНКО АЛГОРИТМ ИМИТАЦИИ ПЕТРИ-ОБЪЕКТНОЙ МОДЕЛИ Анотація. Розглядається імітація Петрі-об’єктної моделі, що ґрунтується на об’єктно- орієнтованій технології та стохастичній мережі Петрі з часовими затримками. Розроблений алгоритм імітації Петрі-об’єктної моделі. Реалізація алгоритму створена засобами Java-класів. Ключові слова: мережа Петрі, моделювання, об’єктно-орієнтована технологія, рівняння станів, Java, алгоритм імітації. Аннотация. Рассматривается имитация Петри-объектной модели, основывающейся на объект- но-ориентированной технологии и стохастической временной сети Петри. Разработан алгоритм имитации Петри-объектной модели. Реализация алгоритма создана средствами Java-классов. Ключевые слова: сеть Петри, моделирование, объектно-ориентированная технология, уравнения состояний, Java, алгоритм имитации. Abstract. The simulation of Petri-object model based on object-oriented technology and time delay sto- chastic Petri nets is regarded. The Petri-object model’s simulation algorithm is developed. The implemen- tation of the algorithm is created by means of Java-classes. Keywords: Petri net, modeling, object-oriented technology, state equations, Java, simulation algorithm. 1. Вступление Временные сети Петри являются универсальным средством формализации процессов, имеющих событийный характер, и широко используются в различных областях. Ежегодно проводится конференция International Conferences on Application and Theory of Petri Nets (в 2011 году проводилась 32-ая конференция), где обсуждаются новейшие достижения в об- ласти теоретических и прикладных исследований с применением сетей Петри. Формализация процессов функционирования средствами временных сетей Петри позволяет еще на этапе формализации описать сложные взаимосвязи между элементами системы с учетом процессов, происходящих во времени параллельно. Однако использова- ние сетей Петри для целей имитационного моделирования на сегодняшний день ограниче- но, о чем свидетельствует и тот факт, что известная монография по имитационному моде- лированию [1] не содержит каких-либо упоминаний о сетях Петри. Причиной является то, что недостаточно разработаны 1) методы формализации сложных процессов временной сети Петри, 2) методы математического моделирования стохастической временной сети Петри, 3) алгоритмы имитации стохастической временной сети Петри. В [2] разработана теория Петри-объектного моделирования, позволяющего, в отли- чие от существующих технологий моделирования, создавать модели больших систем сред- ствами объектно-ориентированного моделирования и стохастических временных сетей Петри с конфликтными и многоканальными переходами. В настоящей работе излагается технология построения алгоритма имитации Петри- объектной модели и описываются особенности реализации этого алгоритма средствами Java. 2. Библиотека Java-классы для реализации Петри-объектов Для профессионального программиста не представляет труда составить несколько классов для реализации сети Петри без временных задержек и даже оснастить их графическим ин- терфейсом с элементами анимации. Перечень программ, реализующих различной сложно- сти сети Петри, можно найти на сайте [2]. К сожалению, среди этих продуктов мало дейст- вительно грамотно реализованных программ, способных осуществлять имитацию времен- ISSN 1028-9763. Математичні машини і системи, 2012, № 1 155 ных сетей Петри с достаточно большим количеством элементов. Как правило, они имеют характер обучающих программ и служат для ознакомления с правилами функционирова- ния сети Петри. Кроме того, их нельзя достроить и применить для своих целей в другом проекте. В связи с этим разработка библиотеки классов для реализации Петри-объектного моделирования начиналась с разработки библиотеки Java-классов для реализации Петри- объектов. Библиотека Java-классов, разработанная в данной работе, основывается на реализа- ции стохастической временной сети Петри с многоканальными и конфликтными перехо- дами, с информационными связями. Библиотека разрабатывалась для создания и модели- рования Петри-объектов, но может использоваться и как самостоятельная. Основная ее цель – стать основой будущих проектов по Петри-объектному моделированию, создавая условия для усовершенствования и приспособления к конкретным условиям задачи. Сеть Петри-объекта определяется, как и обычная временная сеть Петри, множест- вом позиций, множеством переходов, множеством дуг, множеством информационных дуг, множеством натуральных чисел, задающих кратности дуг (количество связей), множест- вом пар значений, задающих приоритет и вероятность запуска переходов, множеством не- отрицательных действительных значений, характеризующих временные задержки в пере- ходах. Правила функционирования сети Петри сформулированы как очень простые, одна- ко допускают различное толкование различными исследователями в зависимости от кон- текста задачи [3]. Отсюда большое количество различных модификаций и расширений се- тей Петри. Данный проект основывается на классическом понятии сети Петри с конфликт- ными переходами [3], временной сети Петри с многоканальными переходами [4], стохас- тической сети Петри как сети Петри, в которой временные задержки заданы случайными числами с заданными законами распределений, и сети Петри с информационными связями [5]. Функционирование сети Петри рассматривается во времени, продвигающемся от одного события, связанного с выходом маркеров из перехода, до ближайшего следующего. Такой способ продвижения времени широко используется при построении алгоритмов имитации сложных систем [1]. Обозначим последовательность моментов времени, соот- ветствующих событиям, ,......., 21 nttt , причем в течение времени 11 −− << nn ttt в сети Петри не происходит никаких событий. Во временной сети Петри маркеры, при выполнении условия запуска, входят в один из свободных (не активных) каналов перехода, и в течение времени, равного временной задержке этого перехода, канал находится в состоянии «активен». По истечении времен- ной задержки происходит выход маркеров из перехода. Изменение маркировки приводит к тому, что становятся, возможно, выполненными условия запуска других переходов сети Петри. В каждый момент времени ,......., n21 ttt , соответствующий событию, происходит вы- ход маркеров из всех переходов, для которых наступил момент выхода, и вход маркеров в переходы, для которых выполнено условие запуска. Поэтому для временной сети Петри традиционное понятие запуска перехода, объединяющего в себе вход и выход маркеров из перехода, не пригодно. Следует различать вход маркеров в переходы сети Петри и выход маркеров из переходов сети Петри. При выходе маркеров из перехода сети Петри осуществляется выход из каналов пе- рехода и состояние сети Петри изменяется следующим образом: 1) из множества моментов выхода из каналов перехода удаляются моменты времени, равные текущему моменту вре- мени nt ; 2) в выходные позиции перехода добавляются маркеры в количестве, равном кратности соответствующей дуги, помноженному на количество каналов, из которых осу- ществляется выход в текущий момент времени. 156 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 При входе маркеров в переход сети Петри осуществляется вход в каналы перехода и состояние сети Петри изменяется следующим образом: 1) к множеству моментов выхода из каналов перехода добавляется момент времени, равный текущему моменту времени плюс временная задержка; 2) из входных позиций перехода удаляются маркеры в количе- стве, равном кратности соответствующей дуги. Обозначим преобразования состояния сети Петри, происходящие при выходе мар- керов из переходов и при входе маркеров в переходы, +D и −D соответственно. Матема- тическое описание преобразований состояния сети Петри, происходящие при выходе мар- керов из переходов и входе маркеров в переходы, содержится в работе [6]. Поскольку переходы сети Петри многоканальные, то возможен многократный вход маркеров в переходы сети Петри ( ) 44 344 21 ooo m m DDDD −−−− = ... . Причем количество m входов определяется достижением такого состояния сети Петри, при котором ни для одного из ее переходов не выполнено условие входа маркеров в переход. Пример изменения состояния сети Петри приведен на рис. 1. Продвижение времени и выполнение соответствующих преобразований показано на рис. 2. Основными классами библиотеки являются класс PetriNet (Петри-сеть), конструи- рующий сеть Петри, и класс PetriSim (Петри-имитатор), осуществляющий имитацию функционирования временной сети Петри. t0 (D-)m D+ ◦(D-)m D+ ◦(D-)m Рис. 2. Продвижение времени и выполнение преобразований сети Петри t1 t2 tn t Рис. 1. Преобразование состояния фрагмента сети Петри в момент времени 710tn ,= D+ Выход маркеров из пере- ходов 33.2 85.5 10.7 ET(tn-1) 127.1 10.7 10 2 3 T 1000000 10.7 5 Состояние S(tn-1) (D-)m Многократный вход маркеров в переходы 10 2 3 15 33.2 85.5 127.1 ET(tn) 25.3 41.2 56.7 5 Состояние S(tn) 1000000 100000 33.2 85.5 127.1 ET(tn) 10 2 3 20 3 5 1000000 100000 Состояние S+(tn) ISSN 1028-9763. Математичні машини і системи, 2012, № 1 157 Класс PetriNet (Петри-сеть) выполняет агрегирование массивов позиций, переходов, входных и выходных связей (по отношению к переходам). Методы этого класса обеспечи- вают доступ ко всем массивам данных (рис. 3). Класс PetriР (Петри-позиция) содержит значение маркировки позиции и методы, обеспечивающие добавление и удаление маркеров из позиции, а также подсчет среднего количества маркеров, находящихся в позиции. Класс PetriT (Петри-переход) содержит самые важные методы, определяющие функционирование сети Петри. Основные поля и методы этого класса представлены на рис. 4. Значение buffer описывает количество активных каналов перехода. Список timeOut содержит множество значений, равных моментам выходов маркеров из перехода, и содер- жит значение ∞ , если все каналы перехода свободны (не активны). Количество активных каналов buffer равно длине списка timeOut, если есть хоть один активный канал, и равно нулю, если все каналы перехода свободны. Список inP содержит номера позиций, являю- щихся входными для перехода, список inPwithInf – номера позиций, связанных с перехо- дом информационной связью, список outP – номера позиций, являющихся выходными для перехода. Метод CreateInP(Petri_P[] inPP,TieIn[] ties) формирует списки входных позиций пе- рехода inP и inPwithInf, а метод CreateOutP(Petri_P[] inPP,TieOut[] ties) – список выходных позиций перехода outP. Условие запуска перехода проверяется с помощью метода Condi- tion(Petri_P[] pp), а для запуска перехода предназначены методы ActIn(Petri_P[] pp, double currentTime) и ActOut(Petri_P[] pp, double currentTime), осуществляющие вход и выход маркеров из перехода в соответствии с множествами входных и выходных позиций из пе- рехода и кратностями связей. Метод minEvent() определяет наименьшее из всех значений, содержащихся в списке timeOut, и запоминает номера каналов, соответствующих наи- меньшему значению timeOut. Метод ActOut () описывается следующим Java-кодом: public void ActOut(Petri_P[] pp, double currentTime) { if(buffer>0) { for (int j=0; j<outP.size();j++) pp[outP.get(j)].increaseMark(quantOut.get(j)); Рис. 4. Основные поля и методы класса Петри-переход — ArrayList<Double> timeOut — ArrayList<Integer> inP — ArrayList<Integer> inPwithInf — int: buffer PetriT — double: timeServ — int: priority — ArrayList<Integer> outP + generateTimeServ() + CreateInP(Petri_P[] inPP,TieIn[] ties) + CreateOutP(Petri_P[] inPP,TieOut[] ties) + Condition(Petri_P[] pp) + ActIn(Petri_P[] pp, double currentTime) + ActOut(Petri_P[] pp, double currentTime) + minEvent() — TieOut[]:ListOut + getListP() + getListT() — Petri_T[]:ListT PetriNet — Petri_P[]:ListP — TieIn[]:ListIn + getTieIn() + getTieOut() + getCurrentMark(String s) + getMeanMark(String s) Рис. 3. Основные поля и методы класса Петри-сеть 158 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 if(num==0&&(timeOut.size()==1)) timeOut.set(0, timeModeling+100); else timeOut.remove(num); buffer--; } else ; } Метод Condition() определяет выполнение условия запуска перехода и содержит проверку не только для обычных связей, но и для информационных, что описывается сле- дующим Java-кодом: public boolean Condition(Petri_P[] pp) { boolean a = true; boolean b = true; for (int i=0; i<inP.size();i++) if(pp[inP.get(i)].getMark()<quantIn.get(i)) {a=false;break;} for (int i=0; i<inPwithInf.size();i++) if(pp[inPwithInf.get(i)].getMark()<quantInwithInf.get(i)) {b=false; break; } if (a==true && b==true) return true; else return false; } Метод ActIn(), с учетом того, что отнимание маркеров происходит только вдоль обычных дуг, описывается следующим Java-кодом: public void ActIn(Petri_P[] pp, double currentTime) { if (this.Condition(pp)==true) { for (int i=0; i<inP.size();i++) pp[inP.get(i)].decreaseMark(quantIn.get(i)); if(buffer==0) timeOut.set(0, currentTime+this.getTimeServ()); else timeOut.add(currentTime+this.getTimeServ()); buffer++; this.minEvent(); } else ; } Алгоритм имитации стохастической сети Петри с многоканальными и конфликт- ными переходами, с информационными связями строится на основе событийного подхода с продвижением времени по принципу до ближайшего события. Этот принцип широко ис- пользуется в имитационном моделировании [1]. Поскольку элементом сети Петри является переход, представляющий событие, то алгоритм имитации очевиден. Однако при наличии многоканальных и конфликтных переходов, информационных связей алгоритм имитации усложняется следующим образом: 1. В сети Петри с конфликтными переходами сначала проверяется условие запуска всех ее переходов, потом решается конфликт для конфликтных переходов и только потом осуществляется вход маркеров в переходы, «выигравшие» конфликт. 2. В сети Петри с многоканальными переходами условие запуска перехода проверя- ется и осуществляется запуск перехода столько раз, сколько это позволяет количество маркеров в его входных позициях. ISSN 1028-9763. Математичні машини і системи, 2012, № 1 159 3. В сети Петри с информационными связями при проверке условия запуска пере- хода наличие маркеров в количестве, равном кратности связей, проверяется, но при входе маркеров в переход маркеры вдоль информационных связей не отнимаются. Алгоритм имитации стохастической сети Петри с временными задержками, много- канальными переходами, информационными связями состоит из следующих действий: ◦ Формировать данные о структуре и начальном состоянии сети Петри (списки по- зиций ListP, переходов ListT, входных связей ListIn и выходных связей ListOut). ◦ Осуществить первоначальный запуск переходов (преобразование ( ) ( ))(( 0tD m S− ). ◦ Пока не исчерпано время моделирования )( timeModtn < : • продвинуть время в момент ближайшего события; • осуществить выход маркеров из переходов сети Петри (преобразование )(( 1− + ntD S ); • определить конфликтные переходы и решить конфликт переходов; • осуществить вход маркеров в переходы сети Петри (преобразование ( ) ( ))(( n m tD +− S ). ◦ Вывести результаты моделирования. Результаты моделирования формируются на основе наблюдения состояния модели, характеризующегося количеством маркеров в позициях и количеством активных каналов переходов, в течение времени моделирования с помощью статистических методов. Класс объектов PetriSim (Петри-имитатор) реализует имитацию некоторого реального объ- екта в соответствии с динамикой функциониро- вания, заданной стохастической временной се- тью Петри с конфликтными и многоканальными переходами (рис. 5). Информация о сети Петри содержится в поле PetriNet объекта Петри- имитатор. Поле priority предназначено для хра- нения информации о приоритете Петри-объекта. Поле timeCurr сохраняет информацию о текущем моменте времени. Поле timeMin хранит инфор- мацию о моменте ближайшего события, а поле eventMin – информацию о переходе, соответст- вующем моменту ближайшего события. Поле STOP сигнализирует о том, что сеть Петри не активна, т.е. все ее переходы находятся в состоя- нии «не активен» и маркировка позиций не по- зволяет запуск ни одного из переходов. Метод Start() выполняет первоначальное преобразование сети Петри ( ) ( ))(( 0tD m S− , за- ключающееся в многократном входе маркеров в переходы сети Петри. Продвижение времени осуществляется с использованием метода EventMin(). Преобразование сети Петри ( ) ( ))(( 1− +− n m tDD S , соответствующее текущему моменту времени, осуществляется с помощью метода NextEvent(). Этот метод использует метод findActiveT() и метод DoConflikt(ArrayList<Petri_T> TT) для решения конфликта пе- реходов. Метод findActiveT() формирует список ArrayList<Petri_T> ActiveT активных в текущий момент времени переходов. А метод DoConflikt(ArrayList<Petri_T> TT) осущест- — Petri_T: eventMin — double: timeMin — int: priority PetriSim — Net: PetriNet — double: timeMod Рис. 5. Основные поля и методы класса Петри-имитатор + setPriority(int a) + EventMin() + findActiveT() + DoConflikt(ArrayList<Petri_T> TT) + Start() + NextEvent() + DoStatistica() + DoТ() — double: timeCurr — boolean: STOP + Go(double time) 160 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 вляет выбор из списка активных переходов одного перехода. Выбор осуществляется на ос- новании заданных приоритетов и вероятностей запуска переходов: сначала все переходы из списка активных переходов сортируются по значению приоритета, а затем из переходов с наивысшим значением приоритета выбирается один с заданной вероятностью запуска. Метод Go(double time) выполняет имитацию сети Петри последовательным запус- ком метода NextEvent(), пока не достигнут момент времени time. Метод DoStatistica() со- держит алгоритм сбора информации о среднем количестве маркеров в позициях и перехо- дах сети Петри. Информация о дополнительных действиях, которые выполняются при вы- ходе маркеров из переходов, содержится в методе DoT(). Этот метод задан в классе как пустой, но классы, которые наследуют класс Петри-имитатор, смогут использовать его для выполнения специфических действий, связанных с выполнением события. Например, со- бытие «сдал экзамен» модели учебного процесса сопровождается выставлением оценки в журнале дисциплины. Было бы неверно моделировать оценки студента маркерами в пози- ции (хотя возможно). Это гораздо удобнее сделать в массиве оценок, что и описывается в методе DoT(). Метод NextEvent() описывается следующим Java-кодом: public void NextEvent() { if (timeCurr<=timeMod) { eventMin.ActOut(ListP, timeCurr); if(eventMin.getBuffer()>0) { boolean u = true; while (u==true) { eventMin.minEvent(); if (eventMin.getMinTime()==timeCurr) eventMin.ActOut(ListP,timeCurr); else u=false; } } } ArrayList<Petri_T> ActiveT = new ArrayList<Petri_T>(); ActiveT=this.findActiveT(); if (ActiveT.size()==0&&IsBufferEmpty()==true) { STOP=true; timeMin = timeMod+1; timeCurr = timeMin; } else { STOP=false; while(ActiveT.size()>0) { this.DoConflikt(ActiveT).ActIn(ListP, timeCurr); ActiveT=this.findActiveT(); } this.EventMin(); } } Класс Петри-имитатор содержит все необходимые функции для выполнения имита- ции заданной сети Петри. Существование метода DoT() обеспечивает определенную гиб- кость моделирования систем – действия, не описывающие или не удобные для моделиро- вания сетью Петри, но связанные с событиями сети Петри, исследователь может задать в этом методе. Таким образом, динамика функционирования модели описывается сетью ISSN 1028-9763. Математичні машини і системи, 2012, № 1 161 Петри. Все, что не связано с динамикой и неудобно для представления сетью Петри, по- мещается исследователем в метод DoT(). 3. Создание классов Петри-объектов В [7] введено понятие Петри-объекта (PetriObj) как объекта, являющегося наследником объекта Петри-имитатор (PetriSim): PetriSimPetriObj  →inherit . Применение механизма на- следования обеспечивает воссоздание всех полей и методов объекта-родителя в объекте- наследнике. Конструирование сетей Петри-объектов удобно производить с помощью библиоте- ки сетей Петри, например, организованной в виде абстрактного класса NetLibrary. Такой подход обеспечивает возможность использования одной и той же функции из класса NetLibrary для создания сетей Петри множества однотипных объектов, что, в свою очередь, гарантирует однотипность обращения к позициям и переходам таких объектов. На данный момент эта библиотека содержит классы Петри-объектов, необходимые для воссоздания учебного процесса вуза [8]: Дисциплина, Студент, Преподаватель, Расписание, Деканат, Контроль задолженностей. Например, класс Петри-объектов Дисциплина создается сле- дующим образом: public class Discipline_Sim extends Petri_Sim {…}. С помощью конструктора этого класса создаются дисциплины из учебного плана специальности и добавляются в список дисциплин: ListDisc.add (new Discipline_Sim ("Моделювання систем", NetLibrary.CreateNetDiscipline (2, 4, 4, 2, timeMod, 2, 2), timeMod, 0.2, 0.3, 0.5)). Либо в два шага: Petri_net controlNet = NetLibrary.CreateNetControlVisit(periodControlVisit, timeMod); ControlVisit_Sim ControlVisit = new ControlVisit_Sim(limit,controlNet, timeMod). Тестирование Петри-объектов выполняется имитацией на различных интервалах времени при различных допустимых значениях начальных маркировок и различных до- пустимых значениях параметров. 4. Структура Петри-объектной модели Пример диаграммы классов Петри-объектной модели представлен на рис. 2. Классы Пет- ри-объектов mSimSimSim ,..., 21 являются классами объектов в терминах объектно- ориентированного моделирования и могут быть как прямыми наследниками класса объек- тов PetriSim, так и наследниками, или агрегаторами, других классов Петри-объектов. Связи Петри-объектов между собой осуществляются двумя способами (рис. 3): 1) с помощью общих позиций (общая позиция является позицией сети Петри не- скольких различных Петри-объектов): SimOne.getNet().getListP()[k] = SimOther.getNet().getListP()[m]; (1) 2) с помощью инициализации событий (из перехода сети Петри-объекта NO при каждом выходе маркеров из перехода передаются маркеры в позицию сети Петри-объекта JO в заданном количестве PTw , в момент времени, соответствующий моменту выхода маркеров из перехода): SimOther.getNet().getListP()[m].setMark(n). (2) Алгоритмически существование общей позиции обеспечивается совпадением адре- сов памяти, где хранятся значения маркировок соответствующих позиций Петри-объектов. Инициализация необходимых событий задается в методе DoТ(). 162 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 Class Sim2 Class Sim1 Class Sim 5 Class Sim 7 Class Sim4 Class Sim8 PetriSim Class Sim3 Petri-object model Class Sim8 Class Sim9 Рис. 6. Пример диаграммы классов Петри-объектной модели системы 5. Алгоритм имитации Пет- ри-объектной модели Как следует из диаграммы классов (рис. 6), Петри- объектная модель является ре- зультатом агрегирования Пет- ри-объектов, динамика каждо- го из которых описывается се- тью Петри и воспроизводится с помощью методов класса Pe- triSim. Отсюда алгоритм ими- тации Петри-объектной модели может быть построен на осно- ве имитации ее Петри- объектов. Теоретически дока- зано, что Петри-объектная модель описывается сетью Петри, составленной из сетей ее Петри-объектов [6]. С алгоритмической точки зрения разбиение на Петри-объекты позволяет значи- тельно сократить количество элементарных операций, необходимых для осуществления преобразования сети Петри. Преобразование +D сетей Петри-объектов следует фактиче- ски производить только для тех объектов, для которых момент выхода маркеров из пере- ходов совпадает с текущим моментом времени. Преобразование ( )mD− , осуществляемое для каждого Петри-объекта, потребует фактического выполнения Jm -кратного ( )mmJ ≤ входа маркеров в переходы до достижения состояния, при котором ни один из переходов Петри-объекта не запускается. Так как mmJ < для большинства Петри-объектов и еще для большего количества Петри-объектов 0=Jm (так как для них время выхода маркеров не совпадает с текущим моментом времени, и не изменилась их маркировка в текущий мо- мент времени), то фактическое количество входов маркеров в переходы отдельных Петри- объектов значительно меньше количества m входов маркеров в переходы Петри-модели. Алгоритм имитации Петри-объектной модели состоит из следующих действий: ◦ Формировать список Петри-объектов (список ListObj). ◦ Осуществить первоначальный вход маркеров в переходы для всех Петри-объектов (метод Start()). ◦ Пока не исчерпано время моделирования )( timeModt < : • продвинуть время в момент ближайшего события; • осуществить статистические расчеты (метод DoStatistica()); • для всех Петри-объектов: ▪ запомнить текущий момент времени (метод changeTimeCurr()); • для всех Петри-объектов, момент выхода из переходов которых совпадает с текущим моментом времени: ▪ осуществить выполнение действий, записанных в методе Do_T(); ▪ выполнить преобразование состояния (метод NextEvent()); • для всех Петри-объектов: ▪ выполнить вход маркеров в переходы (метод Start()). ◦ Вывести результаты моделирования. Формирование списка Петри-объектов для модели учебного процесса, например, описывается следующим фрагментом Java-кода: for (Student_Sim e:ListStudent) ListObj.add(e); ISSN 1028-9763. Математичні машини і системи, 2012, № 1 163 for (Teacher_Sim e:Teachers) ListObj.add(e); for (Discipline_Sim e:ListDisc) ListObj.add(e); ListObj.add(ControlDebts); ListObj.add(FITIS); ListObj.add(Shedule); Выполнение имитации Петри-объектной модели описывается следующим Java- кодом: for (Petri_Sim e:ListObj) e.Start(); while(t<timeMod) { min_t = ListObj.get(0).getTimeMin(); for(Petri_Sim e:ListObj) if( e.getTimeMin()<min_t) min_t = e.getTimeMin(); for(Petri_Sim e:ListObj) e.DoStatistica(min_t -t); t = min_t; for(Petri_Sim e:ListObj) e.changeTimeCurr(t); for(Petri_Sim e: ListObj) if (t==e.getTimeMin ()) { e.Do_T(); e.NextEvent(); } for(Petri_Sim e:ListObj) e. Start(); } Заметим, что в случае, если Петри-объекты имеют общие позиции, являющиеся для их переходов входными, то возможно возникновение конфликта между переходами, имеющими общую входную позицию Петри-объектов. В этом случае следует сначала вы- брать объекты с наибольшим приоритетом, а затем выбрать из них случайным образом один. Алгоритм имитации Петри-объектной модели с разрешением конфликта объектов состоит из следующих действий: ◦ Формировать список Петри-объектов (список ListObj). ◦ Осуществить первоначальный вход маркеров в переходы для всех Петри-объектов (метод Start()). ◦ Создать список конфликтных Петри-объектов (список K). ◦ Пока не исчерпано время моделирования )( timeModt < : • очистить список конфликтных Петри-объектов; • продвинуть время в момент ближайшего события; • определить список конфликтных Петри-объектов и решить конфликт; • осуществить статистические расчеты (метод DoStatistica()); • для всех Петри-объектов: ▪ запомнить текущий момент времени (метод changeTimeCurr()); для Петри-объекта, выигравшего конфликт: ▪ осуществить выполнение действий, записанных в методе Do_T(); ▪ выполнить преобразование состояния (метод NextEvent()); для всех Петри-объектов: ▪ выполнить вход маркеров в переходы (метод Start()). ◦ Вывести результаты моделирования. 164 ISSN 1028-9763. Математичні машини і системи, 2012, № 1 Приведем фрагмент Java-кода, описывающего выбор одного Петри-объекта из множества конфликтных объектов: ArrayList<Petri_Sim> K = new ArrayList<Petri_Sim>(); Random r = new Random(); … while(t<timeMod) { K.clear(); … for(Petri_Sim e: ListObj) if (t==e.getTimeMin()) K.add(e); int num; int max; if(K.size()>1) {max=K.size(); SortObj(K); for(int i=1; i<K.size(); i++) { if(K.get(i).getPriority()<K.get(i-1).getPriority()) { max=i-1; break; } } if (max==0) num=0; else num=r.nextInt(max); } else num=0; for(int i=0; i<ListObj.size(); i++) { if (ListObj.get(i).getName().equalsIgnoreCase(K.get(num).getName())) { ListObj.get(i).Do_T(); ListObj.get(i).NextEvent(); } } …. } Построенный алгоритм имитации Петри-объектной модели состоит из максимально формализованных действий, что способствует минимальному количеству ошибок при его реализации. Поскольку элементом Петри-объектной модели является переход сети Петри, то сложные взаимосвязи событий модели продумываются исследователем еще на этапе формализации Петри-объектов сетью Петри, оставляя алгоритму имитации только воссоз- дание правильно упорядоченной во времени последовательности событий. 6. Выводы В результате научного исследования: – создана библиотека Java-классов для реализации стохастической временной сети Петри с конфликтными и многоканальными переходами, с информационными связями; – разработан алгоритм имитации Петри-объектной модели системы; – создана библиотека Java-классов для реализации Петри-объектного моделирова- ния систем. Моделирование системы с помощью Петри-объектов позволяет исследователю со- средоточиться на составлении сетей Петри элементов системы. При этом сеть Петри- объекта отображает поведенческие свойства элемента системы. Отладка Петри-объекта ISSN 1028-9763. Математичні машини і системи, 2012, № 1 165 может быть выполнена до объединения в систему и не сложна, если Петри-объект доста- точно простой. Только после отладки Петри-объектов, представляющих элементы системы, выполняется конструирование модели системы. В отличие от известных алгоритмов имитации, алгоритм имитации Петри- объектной модели системы основывается на формализованном описании динамики систе- мы сетью Петри и позволяет выполнять имитацию систем с очень большим количеством элементов. Разбиение модели на Петри-объекты значительно уменьшает затраты труда на алгоритмическую реализацию модели системы. СПИСОК ЛИТЕРАТУРЫ 1. Кельтон В. Имитационное моделирование. Классика СS / В. Кельтон, А. Лоу. – [3-е изд.]. – СПб.: Питер; Киев: Издательская группа BHV, 2004. – 847 c. 2. University of Hamburg. Petri Nets Tools Database Quick Overview [Електронний ресурс]. – Режим доступу: http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/quick.html. 3. Murata T. Petri Nets: Properties, Analysis and Applications / T. Murata // Proc. of IEEE. – 1989. – Vol. 77, N 4. – P. 541 – 580. 4. Зайцев Д.А. Инварианты временных сетей Петри / Д.А. Зайцев // Кибернетика и системный ана- лиз. – 2004. – № 2. – С. 92 – 106. 5. Стеценко І.В. Моделювання систем: навч. посіб. / Стеценко І.В. – Черкаси: ЧДТУ, 2010. – 399 с. 6. Стеценко И.В. Теоретические основы Петри-объектного моделирования систем / И.В. Стеценко // Математичні машини і системи. – 2011. – № 4. – С. 136 – 148. 7. Стеценко І.В. Об’єктно-орієнтоване моделювання систем з використанням мереж Петрі / І.В. Стеценко // Вісник Черкаського державного технологічного університету. – 2011. – № 2. – С. 3 – 9. 8. Стеценко І.В. Імітаційне моделювання системи управління навчальним процесом ВНЗ з викори- станням об’єктно-орієнтованого підходу / І.В. Стеценко // Математичні машини і системи. – 2011. – № 2. – С. 162 – 170. 9. Хорстман К. Java 2. Библиотека профессионала / К. Хорстман, Г. Корнелл. – М.: Изд. дом «Виль- ямс», 2007. – Т. 1: Основы. – 896 с. Стаття надійшла до редакції 14.09.2011