Об адекватности систем имитационного моделирования GPSS World и AnyLogic

№ 6(30) 2010

В.Д.Боев

Об адекватности систем имитационного моделирования GPSS World и AnyLogic1

Автором рассматриваются методики построения имитационных моделей средствами систем моделирования GPSS World и AnyLogic. Основное внимание уделено сравнительной оценке результатов моделирования, полученных на моделях одной и той же системы.

Часть 1

Введение

При изучении имитационного моделирования в качестве инструментальных средств практической реализации моделей используется система моделирования общецелевого назначения GPSS World. Однако в последние годы наряду с ней применяется система моделирования AnyLogic (новая версия 6). Такой процесс перехода на первых этапах представлял собой переработку ранее созданных GPSS-моде-лей в AnyLogic-модели. При этом неизбежно возникал вопрос об адекватности данных систем: будут ли реализованы также, как и в GPSS World, все функции моделируемой системы? Будут ли получены одинаковые результаты моделирования? В настоящей статье приводятся такие сопоставления с целью получения ответа на поставленный практикой вопрос.

Автор глобально и всесторонне не рассматривает достоинства и недостатки систем моделирования GPSS World и AnyLogic, а сосредоточивает внимание на сравнительной оценке результатов моделирования, полученных на моделях одной и той же системы, и при построении моделей средствами GPSS World и AnyLogic стремится к идентичной реализации всех функций моделируемой системы. Последнее обстоятельство позволяет детально проследить методики построения моделей и проведения экспери-

ментов, а при желании и необходимости — проделать то же самое самостоятельно.

С целью получения более достоверных результатов автор рассматривает моделирование процессов в таких разнородных системах, как направление связи и транспортный терминал. Статья состоит из двух частей2. В первой части демонстрируется адекватность относительно результатов моделирования на примере модели функционирования направления связи, а во второй — на примере модели функционирования терминала.

1. Постановка задачи на разработку модели функционирования направления связи

Направление связи состоит из двух каналов (основного и резервного) и общего входного буфера емкостью на Етк сообщений.

На направление поступают два потока сообщений с экспоненциально распределенными интервалами времени, средние значения которых Т1 = 3 мин и Т2 = 4 мин. При нормальной работе сообщения переда-

1 Автор статьи выражает благодарность сотрудникам фирмы «Экс Джей Текнолоджис» П. Лебедеву и С. Суслову за полезные советы, а также представителям ООО «Морстройтехнология» канд. техн. наук В. Погодину и А. Кузнецову за предоставленную постановку задачи на разработку модели функционирования терминала.

2 Вторая часть статьи будет опубликована в ближайших номерахжурнала «Прикладная информатика».

№ 6(30) 2010

ются по основному каналу. Время передачи одного сообщения распределено по экспоненциальному закону со средним значени-емТЗ = 2 мин.

В основном канале происходят сбои через интервалы времени, распределенные по экспоненциальному закону со средним значением Т4 = 15 мин. Если сбой возникает во время передачи, то сообщение теряется. За время Т5 = 5 с запускается резервный канал, который передает сообщения, начиная с очередного. Время передачи одного сообщения распределено по экспоненциальному закону со средним значени-емТ6 = 3 мин.

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

Необходимо разработать имитационную модель и провести эксперименты с целью определения следующих показателей эффективности функционирования направления связи в течение 2 ч:

• рациональной емкости накопителя;

• загрузки основного и резервного каналов связи;

• вероятности передачи сообщений потока 1 и потока 2;

• вероятности передачи сообщений направлением связи в целом.

2. Модель направления связи в GPSS World

В модели сообщения следует представлять транзактами, основной и резервный каналы — одноканальными устройствами (ОКУ), входной буфер (накопитель) — списком пользователя.

Так как сообщения имеют одинаковые приоритеты, то для моделирования ОКУ нужно использовать блоки SEIZE и RELEASE. Моделирование отказов основного канала производят блоками FUNAVAIL и FAVAIL. Тогда статистика ОКУ не будет искажена.

Введем масштабирование: 1 единица модельного времени соответствует 1 с, т. е. время моделирования равно 2*60*60 = 7200 единиц модельного времени.

Декомпозиция системы и состав сегментов модели определяются разработчиком. Введем следующие сегменты:

• ввода исходных данных и описания арифметических выражений;

• имитации сообщений потока 1;

• имитации сообщений потока 2;

• имитации работы буфера и основного канала;

• имитации работы резервного канала;

• имитации выхода из строя основного канала;

• задания времени моделирования и вычисления результатов моделирования.

Далее приводится программа модели.

Листинг 1

; Модель функционирования направления связи ; Задание исходных данных

Emk EQU 5 ; Емкость накопителя

VrMod EQU 72 0 0 ; Время моделирования, 1 ед. мод. вр.=1с

Т1 EQU 180 ; Среднее время поступления сообщений потока 1

Т2 EQU 240 ; Среднее время поступления сообщений потока 2

ТЗ EQU 120 ; Среднее время передачи по OsnK

Т4 EQU 900 ; Средний интервал времени выхода из строя OsnK

Т5 EQU 5 ; Время включения Resk

Т6 EQU 180 ; Среднее время передачи по ResK

Т7 EQU 120 ; Среднее время восстановления OsnK ; Описание арифметических выражений ; Вероятность передачи сообщений потока 1

Verl VARIABLE (N$Terml+N$Term3)/N$Soobl ; Вероятность передачи сообщении потока 2

№ 6(30) 2010

Продолжениелистинга 1

Ver2 VARIABLE (N$Term2+N$Term4)/N$Soob2

; Вероятность передачи сообщений потоков 1и2

Ver VARIABLE (V$Verl+V$Ver2)/2

; Сегмент имитации сообщений потока 1

GENERATE (Exponential(12 ,0,Т1)) ; Генератор сообщений потока 1

Soobl ASSIGN 1,1 ; Код 1вР1- сообщения потока 1

TRANSFER ,Nakop ; Направить на ОбпК

; Сегмент имитации сообщений потока 2

GENERATE (Exponential(15 ,0,Т2)) ; Генератор сообщений потока 2

Soob2 ASSIGN 1,2 ; Код 2вР1— сообщения потока 2

; Сегмент имитации работы накопителя и OsnK

Nakop GATE FV OsnK,KRes ; Доступен ли ОбпК? Если нет, на Resk

GATE NU OsnK,Spis ; Свободен ли ОбпК? Если нет, в накопитель

Prov3 SEIZE OsnK ; Занять ОбпК

ADVANCE (Exponential(ll,0,T3)) ; Обслуживание

RELEASE OsnK ; Освободить ОбпК

UNLINK Nak ,Prov3,l ; Вывод из накопителя одного транзакта на ОэпК

TEST E PI, l,Term2 ; Сообщение потока 1 или потока 2 передано по ОэпК?

Terml TERMINATE ; Счет переданных сообщений потока 1 по ОэпК

Term2 TERMINATE ; Счет переданных сообщений потока 2 по ОэпК

; Список пользователя Nak

Spis TEST L CH$Nak,Emk,Term7 ; Есть ли место в накопителе?

LINK Nak,FIFO ; Если да, поместить сообщение в накопитель

Term7 TEST E PI, l,Term6 ; Сообщение потока 1 или потока 2 было потеряно?

Term5 TERMINATE ; Счет потерянных сообщений потока 1

Term6 TERMINATE ; Счет потерянных сообщений потока 2

; Сегмент имитации работы Resk

KRes GATE NU ResK,Spis ; Свободен ли Resk? Нет, сообщение в накопитель

TEST E X$Kont,l,Provl ; Включить ResK

ADVANCE T5 ; Включение Resk

SAVEVALUE Kont,0

Provl SEIZE ResK ; Занять Resk

ADVANCE (Exponential(12 ,0,Т6)); Передача

RELEASE ResK ; Освободить Resk

GATE FNV OsnK,Prov2 ; Доступен ли ОэпК?

UNLINK Nak,Provl,l ; Если нет, из буфера сообщение на Resk

Prov2 TEST E PI, l,Term4 ; Сообщение потока 1 или 2 передано по ResK?

Term3 TERMINATE ; Счет переданных сообщений потока 1

Term4 TERMINATE ; Счет переданных сообщений потока 2

; Сегмент имитации выхода из строя OsnK

GENERATE

Term8 ADVANCE (Exponential(12 ,0,Т4)) ; Расчет времени до следующего отказа

FUNAVAIL OsnK,RE,Term7 ; Выход из строя OsnK

SAVEVALUE Kont,l

ASSIGN l,(Exponential(12,0,T7)); Расчет времени восстановления OsnK

ADVANCE PI ; Имитация восстановления ОэпК

SAVEVALUE VrOtk+,Pl ; Учет времени восстановления ОэпК

FAVAIL OsnK ; ОбпК в доступное состояние

UNLINK Nak,Prov3,l ; Сообщение на ОбпК

TRANSFER , Тегш8

; Сегмент задания времени моделирования

; и вычисления результатов моделирования

GENERATE VrMod

TEST L X$Prog,TGl,Met3

SAVEVALUE Prog,TGl

Met3 TEST E TGI ,l,Met4

SAVEVALUE Verl,V$Verl ; Вероятность передачи сообщений потока 1

SAVEVALUE Ver2,V$Ver2 ; Вероятность передачи сообщений потока 2

№ 6(30) 2010

Окончаниелистинга 1

SAVEVALUE Ver,V$Ver ; Вероятность передачи сообщений направлением

связи

SAVEVALUE VOtk,(l -V$Ver ; Вероятность отказа в передаче сообщений

SAVEVALUE VerOtk, ((AC1- -Х$УгС^к)/АС1) ; Вероятность безотказной работы

OsnK

Met4 TERMINATE 1

START 10000

3. Модель направления связи в AnyLogic

Средства и методика построения модели в AnyLogic существенным образом отличаются от средств и методики построения в GPSS World. Поэтому структура модели функционирования направления связи для достижения поставленной цели моделирования будет иметь в своем составе следующие сегменты:

• исходные данные;

• источники сообщений;

• буфер, основной и резервный каналы связи;

• имитатор отказов основного канала;

• результаты моделирования.

Исходные данные

Для ввода исходных данных используются элементы Параметр и Бегунок.

1. Выполните команду Файл/Создать/ Модель на панели инструментов.

2. В поле Имя модели диалогового окна Новая модель введите Направление связи. Выберите каталог, в котором будут сохранены файлы модели. Кликните мышью кнопку Далее.

3. На открывшейся второй странице Мастера создания модели выберите Начать создание модели «с нуля» (предполагается, что читатель знаком с разработкой модели не по «шаблону»). Кликните мышью кнопку Далее.

4. Полагаем, что все сегменты модели можно разместить так, что они будут видны в ходе ее работы. В Палитре выделите Презентация.

5. Переместите элемент Скругленный прямоугольник в место для размещения элементов исходных данных.

6. Переместите элемент text на странице Основная панели Свойства в поле Текст, введите Исходные данные.

7. В Палитре выделите Основная. Переместите элементы Параметр на элемент с именем Исходные данные. Разместите их и дайте им такие имена, как на рис. 1. Значения свойств установите согласно данным табл.1.

8. В Палитре выделите Элементы управления. Переместите элементы Бегунок на элемент с именем Исходные данные. Разместите их так, как показано на рис. 1. Значения свойств установите согласно табл.1.

Замечание. В данной модели (это возможно и в любых других моделях) все идентификаторы указаны на русском языке.

Исходные данные

икгер_соо6ш noTCKil

-D-

время передачи_оск_кви

в —о—

в р емяп е р едзч н_р ез_кан

в р ем я_вкл_р ез_кан

0 ,-1-

е р емя.нэ р аб_отк эз_ооцян е р емя _во сстэ н_ооцан

0

0

Рис. 1. Размещение элементов для ввода исходных данных

72

№ 6(30) 2010

Таблица 1

Значения свойств элементов

Параметр Бегунок

Значение no умолчанию Минималь- Максималь-

Имя Тип Имя ное значение ное значение

интер_сообщ_потока1 double 180 интер_сообщ_потока1 1 300

интер_сообщ_потока2 double 240 интер_сообщ_потока2 1 300

емкость_буфера int 5 емкость_буфера 1 25

время_передачи_осн_кан double 120 время_передачи_осн_кан 1 200

время_передачи_рез_кан double 180 время_передачи_рез_кан 1 300

время_вкл_рез_кан double 10 время_вкл_рез_кан 0,1 20

время_нараб_отказ_осн_кан double 900 время_нараб_отказ_осн_кан 1 2000

время_восстан_осн_кан double 120 время_восстан_осн_кан 1 500

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

Вывод результатов моделирования

Для вывода результатов используется элемент Простая переменная.

1. В Палитре выделите Презентация.

Переместите элемент Скругленный прямоугольник для размещения элементов Простая переменная.

2. Переместите элемент text и на странице Основные панели Свойства в поле Текст введите Результаты моделирования.

3. В Палитре выделите Основная. Переместите элементы Простая переменная. Разместите их и дайте им такие имена, как на рис. 2. Тип всех переменных double, за исключением текущей емкости буфера. Ее тип — int.

Построение событийной части модели

В событийную часть модели включаются указанные ранее три сегмента (кроме исходных данных и результатов моделирования). 1. В Палитре выделите Презентация.

Переместите элементы Прямоугольник и разместите их так, как показано на рис. 3.

Ptjyjttiaiu моделирования

веего^еообш^постугипо гоетупило^еообщ^потокл! постуг.ило^ео о6щ_пстжа2

о © о

е«гс_потеряно_«обш потеряно_со о5ш_потокэ1 потеряно_соо6ш_потока2

© о о

е«го_передано_сообш гтерелзно_соо6ш_потокв1 пе редэно_сообш_потока2

о © о

вер оятно стъ_лер елечи_сообш текушэя_еккостъ_6уффэ

О О

вероятно оъ_пер едачп_соо6щ_потока1 вероятно сть.потер ^œoéui

о о

иср оятно стъ_пср сд Jчи_со общ_гтлиюа2

О О

J

Рис. 2. Размещение элементов для вывода результатов моделирования

Источники сообщений Буфер, основной и резервный каналы

Имитатор отказов основного канала

Рис. 3. Элементы для размещения сегментов событийной части

№ 6(30) 2010

2. Переместите элементы text и на странице Основные панели Свойства в поле Текст каждого элемента введите названия, указанные на рис. 3.

Источники сообщений

Данный сегмент предназначен для имитации поступления сообщений, счета суммарного количества поступающих сообщений на направление связи и по потокам 1 и 2.

1. В Палитре выделите Enterprise Library.

2. Переместите два элемента sourse на диаграмму класса Main и разместите в прямоугольнике С именем Источники сообщений.

3. Для записи и хранения параметров сообщений в дополнительных полях заявок нужно создать нестандартный класс заявки

Message.

4. В панели Проект наведите курсор на элемент модели верхнего уровня дерева и кликните правой кнопкой мыши, выберите Создать Java класс.

5. Появится диалоговое окно Новый Java класс. В поле Имя введите имя нового класса Message.

6. В поле Базовый класс выберите из

Выпадающего СПИСКа com.xj.anylogic. libraries.enterprise.Entity В качестве базового класса. Кликните мышью кнопку Далее.

7. Появится вторая страница Мастера создания Java класса. Добавьте следующее поле Java класса:

int numPotok;

Это поле потребуется в дальнейшем для разделения переданных направлением потока сообщений на поток 1 и поток 2.

8. Оставьте флажки Создать конструктор и Создать метод toString ().

9. Кликните мышью кнопку Готово. Появится редактор кода и автоматически созданный код Java класса. Закройте код.

10. Выделите последовательно элементы sourse. На странице Основные панели Свойства установите их так, как показано в табл. 2.

Таблица 2

Свойства элементов sourse

поток_1 поток_2

Свойства Значения Свойства Значения

Отображать Установите флажок Отображать Установите флажок

имя имя

Класс заявки Message Класс заявки Message

Заявки прибы- Заявки прибы-

вают согласно Времени между прибытиями вают согласно Времени между прибытиями

Время между exponential (1/интер со Время между exponential 1/интер

прибытиями общ потока1) прибытиями со общ потока2)

Количество Количество

заявок, при- заявок, при-

бывающих за бывающих за

один раз 1 один раз 1

Новая заявка New Message

Действие при entity. numPotok = 1; Действие при entity. numPotok = 2;

выходе поступило сообщ потока1 ++; выходе поступило сообщ пото-

всего сообщ поступило ++; ка2 ++;

всего сообщ поступи-

ло ++;

№ 6(30) 2010

та можно управлять программно с помощью метода setBlocked (), который блокирует входной порт, если в качестве значения аргумента передано true, и разблокирует его при передаче аргумента false.

4. Метод isBlocked () возвращает true, если входной порт заблокирован. Если же порт не заблокирован, — возвращает false.

5. Последовательно выделите элементы и установите свойства согласно данным табл. 3.

Имитатор отказов основного канала

Данный сегмент предназначен для розыгрыша интервала времени до очередного отказа, блокирования основного и резервного каналов, разблокирования резервного канала, имитации восстановления основного канала, его разблокирования.

Сегмент построен из элементов, представленных на рис. 5 (см. стр. 77). Идея его работы заключается в следующем. Генератор вырабатывает одну заявку и становится неактивным. Заявка поступает на элемент задержки, разыгрывающий время до очередного отказа, а после этого — на второй элемент задержки, имитирующий время восстановления основного канала.

Таблица 3

Свойства элементов

Свойства Значение

Имя Буфер

Отображать имя Установить флажок

Класс заявки Message

Вместимость емкость буфера

Действие при входе текущая емкость буфера++;

Действие при выходе текущая емкость буфера--;

Разрешить вытеснение Установить флажок

Имя holdl

Отображать имя Установить флажок

Класс заявки Message

Изначально заблокирован Установить флажок

Имя hold

Класс заявки Message

ьуфер, основной и резервный каналы

Сегмент предназначен для приема поступающих сообщений, имитации их передачи, счета переданных и потерянных сообщений, расчета вероятности передачи сообщений.

1. В Палитре выделите Enterprise Library.

2. Переместите на диаграмму класса Main и разместите в прямоугольнике с именем Буфер,основной и резервный каналы элементы, показанные на рис. 4. Соедините их.

Рис. 4. Элементы двух сегментов модели

3. Эти элементы известны, кроме элемента hold из библиотеки Enterprise Library. Он блокирует/разблокирует поток заявок на определенном участке блок-схемы. Если объект находится в заблокированном состоянии, заявки не поступят на его входной порт, пока объект не разблокируют. Состоянием объек-

-ч ПРИКЛАДНАЯ ИНФОРМАТИКА

№ 6 (30) 2010 ' -

Окончание табл. 3

£

ss тз

I

OS

£ сз

I

л

I

е

И

0

и

is

1 §

Й §

и

и !

IS

§

!§

Свойства Значение

Имя потер сообщ буфер

Отображать имя Установить флажок

Класс заявки Message

Действие при входе if (entity. numPotok == 1) потеряно сообщ потока1 ++; if (entity. numPotok == 2) потеряно сообщ потока2 ++; всего потеряно сообщ ++;

Имя основной канал

Отображать имя Установить флажок

Класс заявки Message

Задержка задается Явно

Время задержки exponential

Вместимость 1

Включить сбор статистики Установить флажок

Имя резерв канал

Отображать имя Установить флажок

Класс заявки Message

Вместимость 1

Задержка задается Явно

Время задержки exponential

Вместимость 1

Действие при входе if (а==0) в = время передачи рез кан; if (а==1)" {в = время передачи рез кан + время вкл рез кан; а=0;}

Действие при выходе if (hold. isBlocked () == true) hold1.setBlocked (false);

Включить сбор статистики Установить флажок

Имя sink

Отображать имя Установить флажок

Класс заявки Message

Действие при входе if (entity. numPotok == 1) {передано сообщ потока1 ++; вероятность передачи сообщ потока1 = передано сообщ потока1 /поступило сообщ потока1;} if (entity. numPotok == 2) {передано сообщ потока2 ++; вероятность передачи сообщ потока2 = передано сообщ потока2 /поступило сообщ потока2;} всего передано сообщ ++; вероятность передачи сообщ = всего передано сообщ /всего сообщ поступило; вероятность потери сообщ =1— вероятность передачи сообщ;

№ 6(30) 2010

Рис. 5. Сегмент имитации отказов основного канала связи

С выхода второго элемента задержки заявка снова поступает на вход первого элемента задержки. Процесс имитации отказов повторяется в цикле.

Аналогичным образом построен сегмент имитации отказов основного канала и в СРвв-модели (см. раздел 2).

Если построить сегмент так, что время до очередного отказа будет разыгрывать генератор, то это нелогично, поскольку при таком варианте отсчет времени до очередного отказа не будет начинаться от момента окончания восстановления канала. Возникнут ситуации, при которых очередной отказ придется на время, когда идет процесс восстановления канала.

Построим сегмент имитации отказов основного канала связи.

1. Переместите из библиотеки элементы, соедините их (см. рис. 5).

2. Последовательно выделите и установите свойства элементов согласно данным табл. 4.

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

Так же организовано выключение резервного канала и в GPSS-модели, но для этого использована сохраняемая ячейка Kont (см. раздел 2).

В модели AnyLogic после того как сообщение займет резервный канал, элемент holdl блокируется. Может быть и так, что в процессе передачи сообщения резервным каналом возобновит работу основной канал, т. е. элемент hold будет разблокирован и сообщения поступят на основной канал. Чтобы такая ситуация учитывалась и в GPSS-модели, в нее добавлена команда UNLINK Nak, Prov3,l

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

Результаты моделирования

Модели построены инструментальными средствами GPSS World и AnyLogic. Проведем моделирование и оценим полученные результаты. Они приведены в табл. 5.

Всего выполнено 32 эксперимента, которые делятся на 4 группы. Отличительный признак каждой из них — емкость входного буфера: 5, 10,20и 30 сообщений.

В каждой группе 8 экспериментов: 4 — в GPSS World; 4 — в AnyLogic. Отличительный признак каждого из четырех экспериментов как в GPSS World, так и в AnyLogic — начальные числа генераторов случайных чисел, выбранные произвольно: 13, 137, 2729, 52 687.

В AnyLogic начальное число устанавливается один раз перед началом моделирования. Для этого в панели Проект нужно кликнуть мышью кнопку Эксперимент, на странице Основные установить опцию Фиксированное начальное число (воспроизводимые прогоны), в соответствующее поле ввести начальное число.

В GPSS World при обращении к датчикам случайных чисел (в нашей модели экспоненциально распределенных) можно указывать различные начальные числа. Автором

77

№ 6(30) 2010

во всех обращениях использовано то же начальное число, что и в AnyLogic.

Для получения результатов моделирования с точностью е = 0,01 и доверительной вероятностью а = 0,95 в GPSS World необходимо выполнить 9604 прогонов модели. В каждом эксперименте проводилось 10000 прогонов. Время моделирования в AnyLogic было увеличено в 10000 раз и составляло 72000 000. Следует отметить, что если в GPSS World выполнить с этим же модельным временем один прогон, то результат по-

лучается таким же, что и при 10000 прогонов модели.

Согласно данным табл. 5 вероятность передачи сообщений в Апу1_одю-модели больше на0,0235...0,0385.

Коэффициент использования основного канала в СРЭЗ-модели выше на 0,200.. .0,024. Коэффициент использования резервного канала больше у Апу1_одю-мо-дели на 0,070...0,075. В сумме коэффициент использования основного и резервного каналов также больше у Апу1_одю-моде-

Таблица -

Свойства элементов при построении сегмента имитации отказов основного канала связи

Свойства Значение

Имя Sourse

Отображать имя Установить флажок

Класс заявки Entity

Заявки прибывают согласно Интенсивности

Интенсивность прибытия 1

Ограниченное количество прибытий Установить флажок

Количество заявок, прибывающих за один раз 1

Имя розыгрыш инт до отказа

Отображать имя Установить флажок

Класс заявки Entity

Задержка задается Явно

Время задержки exponential

Вместимость 1

Действие при выходе hold. setBlocked (true);

if

{основной канал, remove

основной канал, get (0));

всего потеряно сообщ ++;}

hold1.setBlocked (false); э —1 •

Включить сбор статистики a—if Установить флажок

Имя имитация восст осн кан

Класс заявки Entity

Задержка задается Явно

Время задержки exponential

Вместимость 1

Действие при выходе hold. setBlocked (false);

hold1.setBlocked (true);

Включить сбор статистики Установить флажок

с1

=s тз

1 OS

£ сз

I

л

i

S

и

0

и

SS

1

§

is

U

U £

IS

§

§

№ 6(30) 2010

Таблица 5

Показатели функционирования направления связи

Показатели Системы моделирования

GPSS World AnyLogic

Начальные числа генераторов случайных чисел

13 137 2729 52 687 13 137 2729 52 687

Емкость входного буфера 5 сообщений

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,751 0,751 0,751 0,752 0,753 0,751 0,751 0,751 0,752 0,752 0,751 0,752 0,775 0,775 0,774 0,776 0,776 0,776 0,774 0,775 0,775 0,774 0,774 0,775

А вероятности_передачи_сообщ А = 10,7515-0,7751 = 0,0235

вероятность_потери_сообщ 0,249 0,248 0,249 0,248 0,225 0,224 0,226 0,226

коэф_использ_осн_кан коэф_использ_рез_кан 0,776 0,151 0,777 0,150 0,777 0,149 0,778 0,149 0,754 0,225 0,754 0,225 0,755 0,223 0,755 0,225

сум_коэф_использ_кан 0,927 0,979

Емкость входного буфераЮ сообщений

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,800 0,800 0,800 0,798 0,798 0,798 0,800 0,800 0,801 0,798 0,799 0,797 0,827 0,827 0,827 0,829 0,829 0,829 0,827 0,827 0,828 0,829 0,829 0,828

А вероятности_передачи_сообщ А = 10,799-0,8281 = 0,029

вероятность_потери_сообщ 0,200 0,202 0,200 0,202 0,173 0,171 0,173 0,171

коэф_использ_осн_кан коэф_использ_рез_кан 0,831 0,152 0,832 0,153 0,830 0,152 0,832 0,151 0,807 0,241 0,808 0,242 0,808 0,242 0,807 0,241

сум_коэф_использ_кан 0,983 1,050

Емкость входного буфера 20 сообщений

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,829 0,829 0,829 0,826 0,826 0,826 0,829 0,829 0,830 0,827 0,827 0,827 0,862 0,862 0,862 0,861 0,861 0,861 0,861 0,861 0,861 0,862 0,863 0,862

А вероятности_передачи_сообщ А = 10,828-0,86151 = 0,0335

вероятность_потери_сообщ 0,171 0,174 0,171 0,173 0,138 0,139 0,139 0,138

коэф_использ_осн_кан коэф_использ_рез_кан 0,863 0,155 0,862 0,154 0,862 0,153 0,863 0,154 0,840 0,252 0,840 0,253 0,838 0,254 0,839 0,250

сум_коэф_использ_кан 1,018 1,092

Емкость входного буфераЗО сообщений

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,837 0,836 0,837 0,835 0,836 0,835 0,838 0,838 0,838 0,838 0,838 0,838 0,875 0,876 0,875 0,876 0,875 0,876 0,875 0,874 0,876 0,875 0,875 0,875

№ 6(30) 2010

Окончание табл. 5

Показатели Системы моделирования

GPSS World AnyLogic

Начальные числа генераторов случайных чисел

13 137 2729 52 687 13 137 2729 52 687

А вероятности_передачи_сообщ А = 10,8365-0,8751 = 0,0385

вероятность_потери_сообщ 0,163 0,165 0,162 0,162 0,125 0,124 0,125 0,125

коэф_использ_осн_кан коэф_использ_рез_кан 0,873 0,155 0,872 0,157 0,871 0,158 0,873 0,155 0,852 0,254 0,852 0,254 0,852 0,257 0,852 0,256

сум_коэф_использ_кан 1,028 1,107

ли на 0,052...0,079. Тем не менее превышение вероятности передачи сообщений у AnyLogic-модели примерно в два раза ниже, чем использования обоих каналов.

Вероятность передачи сообщений растет с увеличением емкости входного буфера. Однако этот рост после емкости в 20 сообщений незначительный и составляет 0,012...0,014. Если продолжать увеличивать емкость входного буфера (40, 50, 60 сообщений), то рост вероятности передачи сообщений составит 0,003...0,004. Дальнейший рост ограничивается временем передачи данных по основному и резервному каналам.

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

Результаты экспериментов приведены в табл. 6. Они свидетельствуют о том, что тенденция и количественные показатели, а значит и величины различия результатов моделирования в GPSS World и AnyLogic практически одни и те же.

Машинное время выполнения модели (в AnyLogic в виртуальном режиме) в обеих системах одинаковое и составляет 5.. ,7 с.

При построении GPSS-модели для имитации выхода из строя основного канала связи OsnK использовались блоки FUNAVAIL и FAVAIL, а в AnyLogic-модели — элементы

80 j-

hold (ключи). В GPSS World также имеется блок LOGIC — логический ключ.

Далее вместо блоков FUNAVAIL и FAVAIL применим блок LOGIC, т.е. реализуем функции направления связи идентичными средствами GPSS World и AnyLogic. Три модифицированные сегмента GPSS-модели (остальные остаются неизменными) приведены в листинге 2.

В модифицированной модели, кроме блока LOGIC, используется блок DISPLACE, позволяющий удалить по известному номеру (XN1) транзакт из любого места модели. По логике работы модели транзакт-сооб-щение нужно удалять из основного канала связи при выходе его из строя. Поэтому каждый раз после того как транзакт-сообще-ние займет основной канал связи, в ячейку с именем Num записывается номер этого транзакта, а после освобождения канала транзактом-сообщением он удаляется.

Если при передаче сообщения основной канал должен выйти из строя, то ключ Klu закрывается. Сообщения передаются по резервному каналу связи ResK. Блок GATE в сегменте имитации выхода из строя основного канала после закрытия ключа Klu проверяет наличие сообщения в основном канале. Если оно в нем есть, то блоком DISPLACE сообщение удаляется.

Проведем 8 экспериментов на GPSS-модели так же, как и последние 16 экспериментов, т.е. произвольно будем устанавливать различные начальные числа во всех

№ 6(30) 2010

Таблица 6 § о

Показатели функционирования направления связи ¡^

Системы моделирования

Показатели GPSS World AnyLoglc

1 2 3 4 5 6 7 8

Емкость входного буфера 5 сообщений

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,752 0,751 0,752 0,752 0,752 0,752 0,752 0,753 0,752 0,754 0,754 0,754 0,774 0,774 0,775 0,774 0,774 0,775 0,774 0,774 0,775 0,774 0,774 0,775

А вероятности_передачи_сообщ А 10,752-0,7741 = 0,022

вероятность_потери_сообщ 0,248 0,248 0,248 0,246 0,226 0,226 0,226 0,226

коэф_использ_осн_кан коэф_использ_рез_кан 0,777 0,149 0,777 0,148 0,777 0,150 0,778 0,149 0,755 0,225 0,755 0,225 0,755 0,225 0,755 0,225

сум_коэф_использ_кан 0,927 0,980

Емкость входного буфераЮ сообщений

9 10 11 12 13 14 15 16

вероятность_передачи_сообщ вероятность_передачи_сообщ_потока1 вероятность_передачи_сообщ_потока2 0,802 0,802 0,802 0,800 0,800 0,800 0,799 0,799 0,800 0,799 0,798 0,799 0,829 0,829 0,828 0,829 0,829 0,828 0,829 0,829 0,828 0,829 0,829 0,828

А вероятности_передачи_сообщ А = = 10,799-0,8281 = 0,029

вероятность_потери_сообщ 0,198 0,200 0,201 0,201 0,171 0,171 0,171 0,171

коэф_использ_осн_кан коэф_использ_рез_кан 0,830 0,152 0,831 0,151 0,829 0,154 0,829 0,152 0,807 0,241 0,807 0,241 0,807 0,241 0,807 0,241

сум_коэф_использ_кан 0,983 1,048

Листинг 2

; Сегмент имитации работы накопителя и ОбпК

Nakop GATE LS К1и,ККев ; Доступен ли ОэпК? Если нет, на Resk

GATE NU 0зпК,Зр1Б ; Свободен ли ОэпК? Если нет, в накопитель

Prov3 SEIZE ОбпК ; Занять ОбпК

SAVEVALUE ; Записать номер транзакта

ADVANCE (Ехропеп^а1(13,0, ТЗ)) ; Обслуживание

SAVEVALUE ; Удалить номер транзакта

RELEASE ОбпК ; Освободить ОбпК

UNLINK Nak,ProvЗ,l ; Вывод из накопителя одного транзакта на ОэпК

TEST E Р1,1,Тегт2 ; Сообщение потока 1 или 2 передано по ОэпК?

Terml TERMINATE ; Счет переданных сообщений потока 1 по ОэпК

Term2 TERMINATE ; Счет переданных сообщений потока 2 по ОэпК

; Список пользователя Как

Spis TEST L CH$Nak,Emk,Term7 ; Есть ли место в накопителе?

LINK Nak,FIFO ; Если да, поместить сообщение в накопитель

Term7 TEST E Pl,l,Term6 ; Сообщение потока 1 или потока 2 было потеряно?

Term5 TERMINATE ; Счет потерянных сообщений потока 1

№ 6(30) 2010

Окончание листинга 2

Тегтб TERMINATE ; Счет потерянных сообщений потока 2

; Сегмент имитации работы Resk

KRes GATE NU ResK,Spis ; Свободен ли Resk? Нет, сообщение в накопитель

TEST E X$Kont,l,Provl ; Проверка: включен ли ResK? Если нет, то

ADVANCET 5 ; включить Resk

SAVEVALUE Kont,0 ; Признак того, что ResK включен

Provl SEIZE ResK ; Занять Resk

ADVANCE (Exponential(13, 0 Т6)) ; Передача по Resk

RELEASE ResK ; Освободить Resk

GATE LR Klu,Prov2 ; Доступен ли ОэпК?

UNLINK Nak,Provl,l ; Если нет, из накопителя сообщение на Resk

Prov2 TEST E Pl,l,Term4 ; Сообщение потока 1 или 2 передано по ResK?

ТегтЗ TERMINATE ; Счет переданных сообщений потока 1

Term4 TERMINATE ; Счет переданных сообщений потока 2

; Сегмент имитации выхода из строя OsnK

GENERATE ,,,1

LOGIC S Klu ; Открыть ключ

Term8 ADVANCE (Exponential(13, 0 Т4)) ; Расчет времени до следующего отказа

LOGIC R Klu ; Выход из строя ОэпК

GATE U OsnK,Metl ; Занят ли ОэпК? Если да, то

DISPLACE X$Num,Met2 ; удалить передаваемое сообщение

SAVEVALUE Num,0 ; Удалить номер транзакта

Metl SAVEVALUE Kont,l ; Признак включения ResK

ASSIGN l,(Exponential(13 0,Т7)) ; Расчет времени восстановления ОэпК

ADVANCE PI ; Имитация восстановления ОэпК

SAVEVALUE VrOtk+,Pl ; Учет времени восстановления ОэпК

LOGIC S Klu ; Окончание восстановления ОэпК

UNLINK Nak,Prov3,l ; Отправить сообщение из буфера на ОбпК

TRANSFER ,Term8 ; На розыгрыш очередного отказа

Met2 RELEASE OsnK ; Освободить ОэпК от потерянного сообщения

TRANSFER ,Term7 ; На учет потерянных сообщений

£

=а

I

С<0

ёг

сз

I Л

i

е

I

0

и

SS

1 ё

Й §

и

U i IS

и ¡§

обращениях к генераторам случайных чисел. В результате получим те же данные, что и в табл. 6. Это обстоятельство служит свидетельством тому, что правильно реализованные функции моделируемой системы различными инструментальными средствами (в данном случае — GPSS World) приводят к одному результату.

Во второй части статьи автор продолжит сопоставление результатов моделирования в GPSS World и AnyLogic.

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

1. Боев В. Д., Сыпченко Р. П. Компьютерное моделирование. Элементы теории и практики: учеб. пособие. СПб.: ВАС, 2009.

2. Боев В. Д. Моделирование систем. Инструментальные средства GPSS World: учеб. пособие. СПб.: БХВ-Петербург, 2004.

3. Боев В. Д., Кирик Д. И., Ушкань А. О. Методика поддержки руководства курсовым проекти-

5.

рованием по дисциплине «Моделирование» // Сб. докладов Третьей всероссийской конференции «Имитационное моделирование. Теория и практика», ИММОД-2007. СПб.: ФГУП ЦНИ-ИТС, 2007.

Боев В. Д., Ушкань А. О. Методика оценки качества обслуживания сети передачи данных // Сб. докладов Четвертой всероссийской конференции «Имитационное моделирование. Теория и практика», ИММОД-2009. СПб.: ЦТСиР, 2009.

Боев В. Д., Ушкань А. О. Вторичные модели оценки качества обслуживания сети передачи данных // Сб. докладов Четвертой всероссийской конференции «Имитационное моделирование. Теория и практика», ИММОД-2009. СПб.: ЦТСиР, 2009.

Карпов Ю. Г. Имитационное моделирование систем. Введение в моделирование с Апу1_одю 5. СПб.: БХВ-Петербург, 2005. Экс Джей Текнолоджис, www.xjtek.ru.

82