Вы находитесь на странице: 1из 117

,Министерство образования и науки Российской Федерации

Иркутский государственный технический университет

Ю.П. Хрусталев

МОДЕЛИРОВАНИЕ
систем массового обслуживания

Учебное пособие для студентов, обучающихся по специальностям:


«Информационные системы в машиностроении»
«Вычислительные системы, комплексы и сети»

Издательство
Иркутского государственного технического университета
2007
УДК 004.94
ББК 32.973.26-018.2

Рецензент: старший научный сотрудник ИСЭМ СО РАН, к.т.н.,


А.Ю. Маринченко

Хрусталев Ю.П. Моделирование систем массового обслуживания:


учеб. пособие. – Иркутск: Изд-во ИрГТУ, 2007 -117 с.

Редактор Л.Н. Заступова

Рассматриваются методы аналитического и имитационного моделирования


систем массового обслуживания. Приведены необходимые сведения о системах
с очередями. Изложены методы анализа таких систем с помощью Марковских
моделей и имитационного моделирования. Рассмотрены основные принципы
построения многоцелевой системы имитационного моделирования - GPSS и
правила и приемы создания программ на языке GPSS.
Приведены задания на лабораторные работы по курсу «Моделирование»
(пять работ) и базовые варианты заданий на курсовые работы. Каждому из
базовых заданий могут соответствовать три – четыре варианта, различающихся
законами распределения случайных величин и параметрами этих законов.
Для студентов специальностей «Информационные системы в
машиностроении» и «Вычислительные машины, комплексы, системы и сети».

© Хрусталев Ю.П., 2007


© Иркутский государственный
технический университет, 2007

2
ОГЛАВЛЕНИЕ

1. Системы массового обслуживания и их применение


при моделировании средств вычислительной техники … 4
2. Аналитические методы моделирования систем
массового обслуживания … 14
3. Имитационное моделирование систем массового
обслуживания. … 28
4. Система имитационного моделирования
GPSS World. … 32
5. Некоторые приемы программирования в системе GPSS,
используемые при выполнении курсовых и лабораторных
работ. … 79
Лабораторные работы по курсу «Моделирование» … 103
Задания по курсовым работам … 108
Тесты для самоподготовки … 112
Библиографический список … 117

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

1.1 Моделирование в вычислительной технике

Под моделированием понимают процесс установления соответствия данному


реальному объекту некоторого другого объекта, называемого моделью, и
исследования этой модели. Вид модели определяется целью моделирования.
Цель моделирования устанавливается в каждом конкретном случае и зависит от
уровня моделирования. Чаще всего целью моделирования является получение
количественных характеристик объекта, оптимизация его параметров,
структуры и т.д.
В вычислительной технике различают четыре уровня моделирования.
1. На системном уровне объектом моделирования являются вычислительные
системы.
2. На алгоритмическом или архитектурном уровне рассматриваются
архитектурные свойства системы. При этом объектом моделирования является
вычислительный процесс.
3. На функциональном (микрооперационном) уровне или уровне
регистровых передач объектами моделирования являются устройства ЭВМ.
4. На уровне логического моделирования рассматривается
функционирование логических схем: больших и сверхбольших интегральных
схем (БИС и СБИС), типовых элементов замены – ТЭЗов и т.д.
Основной задачей данного курса является изучение методов моделирования
систем. Под системой S будем понимать целенаправленное множество
взаимосвязанных элементов любой природы [1]. При моделировании систем
применяется так называемый системный подход, в основе которого лежит
последовательный переход от общего к частному, когда в основе рассмотрения
лежит цель. Исследуемый объект при системном подходе выделяется из
окружающей (внешней) среды. Под внешней средой Е понимается множество
существующих вне системы элементов любой природы, оказывающих влияние
на систему или находящихся под ее воздействием. Состав элементов, входящих
в модель, зависит от цели моделирования. Совокупность связей между
элементами системы определяет ее структуру.
При функциональном подходе рассматриваются функции, которые
выполняет система (под функцией понимается свойство, приводящее к
достижению цели). Функционирование системы означает переход системы из
одного состояния в другое, т.е. движение системы в пространстве состояний.
Очевидно, что такой подход предполагает использование математических
моделей, т.е абстрактных моделей, представленных на языке математических
отношений (абстрактной моделью называется описание объекта исследований
на некотором языке. Компонентами абстрактных моделей являются понятия:
4
например, словесные или математические описания, чертежи, схемы и т.д., а не
физические элементы).
1.2. Математические схемы моделирования систем
Математическая схема – средство формулирования понятий[1].
Математическую схему можно определить как звено при переходе от
содержательного описания процесса функционирования системы к
формальному. Формальная модель системы S – это множество величин,
описывающих процесс функционирования системы:
- совокупность входных воздействий на систему x  X i  1,..., n ; i x

vl  V l  1,..., nv
- воздействия внешней среды ;
hk  H k  1,..., nh
- внутренние параметры системы ;
y Y j  1,..., n
- выходные характеристики ji
. y

Различают следующие типовые математические схемы:


- дифференциальные уравнения;
- конечные и вероятностные автоматы;
- системы массового обслуживания;
- сети Петри;
- агрегативные модели.
Данным математическим схемам соответствуют следующие классы моделей.
1) Непрерывно – детерминированные модели (D-схемы). Эти модели
представляются дифференциальными уравнениями (обыкновенными или
в частных производных).
2) Дискретно – детерминированные модели (F-схемы).
Представляются конечными автоматами.
3) Дискретно – стохастические модели (P-схемы). Представляются
вероятностными автоматами.
4) Непрерывно – стохастические модели (Q-схемы). Системы с
очередями (системы массового обслуживания).
5) Сетевые модели (сети Петри или N-схемы).
6) Комбинированные модели (агрегативные модели или А-схемы).
В настоящем пособии рассматриваются системы массового обслуживания,
поскольку функционирование многих средств вычислительной техники и
вычислительных систем можно адекватно описать с помощью Q – схем.
1.3. Системы массового обслуживания
Под системой массового обслуживания (СМО) понимают динамическую
систему, предназначенную для эффективного обслуживания потока заявок
(требований на обслуживание) при ограничениях на ресурсы системы.
Модели СМО удобны для описания отдельных подсистем современных
вычислительных систем, таких как подсистема процессор - основная память,
канал ввода - вывода и т. д. Вычислительная система в целом представляет
собой совокупность взаимосвязанных подсистем, взаимодействие которых
носит вероятностный характер. Заявка на решение некоторой задачи,
поступающая в вычислительную систему, проходит последовательность этапов
5
счета, обращения к внешним запоминающим устройствам и устройствам ввода
- вывода. После выполнения некоторой последовательности таких этапов,
число и продолжительность которых зависит от трудоемкости программы,
заявка считается обслуженной и покидает вычислительную систему. Таким
образом, вычислительную систему в целом можно представлять
совокупностью СМО, каждая из которых отображает процесс
функционирования отдельного устройства или группы однотипных устройств,
входящих в состав системы.
Основными задачами, которые решаются в рамках теории массового
обслуживания, являются :
- задача анализа, т. е. определение количественных характеристик СМО
при заданной структуре и заданных параметрах элементов структуры;
- задача синтеза оптимальной структуры СМО при заданных
характеристиках и ограничениях на параметры элементы структуры.
При исследовании СМО предполагаются известными некоторые их свойства,
т. н. параметры СМО. В результате исследования определяются
характеристики СМО, являющиеся функцией параметров.
Рассмотрим структурную схему СМО [2] (рис. 1.1)

Рис. 1.1. Структурная схема системы массового обслуживания

На вход СМО поступают заявки на обслуживание, образующие входящий


поток. Первопричину заявок, какова бы ни была ее физическая природа,
6
называют источником заявок. Совокупность заявок всех типов составляет
входящий поток заявок.
В зависимости от характера источника заявок различают разомкнутые и
замкнутые СМО. В разомкнутых СМО число заявок, вырабатываемых
источником, считается неограниченным, поведение источника заявок не
связано с состоянием СМО ни в данный, ни в какой-либо из предшествующих
моментов времени. Для замкнутых СМО характерно конечное число заявок,
циркулирующих в системе источник - СМО. Обслуженные заявки
возвращаются в источник и через некоторое время могут вновь появиться на
входе СМО. Поведение источника в замкнутых СМО является некоторой
функцией состояния СМО. При анализе систем массового обслуживания будем
различать параметры систем и их характеристики.
Параметры – это количественные оценки первичных свойств системы.
Характеристики – количественные оценки вторичных свойств
системы, получаемые в процессе моделирования.
Параметры систем массового обслуживания
Параметры входящего потока заявок. Потоком событий называется
последовательность однородных событий, следующих одно за другим в
некоторые моменты времени. Под событием будем понимать переход системы
в другое состояние, например, изменение количества заявок в том или ином
блоке системы. Если интервалы времени между событиями случайны, имеет
место случайный поток событий. Если неслучайные – поток событий является
регулярным. Чаще всего при исследовании СМО рассматриваются простейшие
потоки событий.
Простейший поток заявок обладает следующими свойствами:
стационарности, ординарности и отсутствием последействия.
Поток называется стационарным, если его вероятностные характеристики не
изменяются со временем.
Поток называется ординарным, если события в нем происходят по одиночке.
Случайный процесс называется Марковским процессом (процессом без
последствия) если для любого момента времени вероятность любого состояния
системы в будущем зависит только от ее состояния в настоящем, а не зависит
от того как и каким образом система пришла в это состояние.
Основным параметром входящего потока заявок является его интенсивность.
Интенсивностью или плотностью потока  называется среднее число
событий в ед. времени. Для стационарного потока λ =const.
При моделировании систем рассматриваются интервалы времени между
событиями, т.е. случайная величина, которая характеризуется функцией
плотности f ( ) длин интервалов между двумя соседними событиями. Среднее
время между событиями – это величина, обратная интенсивности
tср = 1/λ..
Для потока без последствия число событий, попадающих на любой
непересекающийся участок времени, не зависит от того, сколько событий
попало на другие участки. В простейших потоках интервалы времени между

7
двумя соседними заявками подчинены экспоненциальному закону
распределения с интенсивностью 
f ( )    e   .
Привлекательность простейшего потока объясняется рядом обстоятельств:
1. Допущение о простейшем потоке заявок позволяет получать
аналитические зависимости характеристик СМО от параметров входящего
потока, что затруднительно для других видов потока заявок.
2. Простейший поток в теории массового обслуживания играет такую же
роль, как нормальный закон распределения случайных величин в теории
вероятностей: при сложении нескольких независимых, ординарных,
стационарных случайных потоков образуется суммарный поток,
приближающийся по своим свойствам к простейшему.
3. Если СМО обеспечивает желаемую эффективность функционирования
системы при простейшем потоке заявок на входе, то обслуживание системой
других случайных потоков заявок с одинаковой интенсивностью будет
выполняться не хуже. Это обстоятельство связано со следующим свойством
экспоненциального распределения: 63% заявок поступают чаще, чем среднее
время между заявками, а 37% заявок поступают значительно реже среднего
времени. Кроме того, коэффициент вариации, равный отношению среднего
квадратичного отклонения к математическому ожиданию, для
экспоненциального распределения равен 1 (для большинства других законов
эта величина меньше единицы). Поэтому простейший поток заявок создает
самый тяжелый режим работы для системы массового обслуживания.
Если простейший входящий поток представляет собой совокупность m
потоков различных типов с интенсивностями i (i= 1, m ), то его можно
характеризовать суммарной интенсивностью
m
   i .
i 1

Степень важности заявок может быть различной, по этому признаку заявки


делят на классы. Каждому классу присваивается приоритет k (k= 1, N ).
Поток заявок, полученный в результате случайного разряжения исходного
стационарного одинарного потока, имеющего интенсивность  , когда каждая
заявка исключается из потока с вероятностью Р независимо от того, исключены
другие заявки или нет, образуют простейший поток заявок с интенсивностью
(1  P ) .
Различают «терпеливые» заявки, т. е. такие, на время пребывания которых в
СМО не накладывается никаких ограничений, и «нетерпеливые», способные
уйти из системы, не будучи обслуженными, если время пребывания их в СМО
превысит допустимую величину.

Параметры структуры СМО


Каждая система массового обслуживания обладает определенной
структурой, характеризующейся совокупностью параметров. Основным
компонентом структуры СМО являются каналы обслуживания. В зависимости
8
от числа каналов различают одноканальные и многоканальные СМО. В свою
очередь, многоканальные СМО могут содержать одинаковые и различные по
производительности каналы обслуживания.
Производительность канала обслуживания обратна длительности
обслуживания заявки, равной промежутку времени, необходимому каналу
обслуживания для обслуживания заявки. В общем случае это случайная
величина с функцией распределения F ( ) , плотностью распределения f ( ) и
математическим ожиданием  об .
Типы заявок различаются либо законами распределения, либо только
математическими ожиданиями при одинаковых законах распределения. При
этом принимается допущение о независимости длительностей обслуживания
для различных заявок одного типа, вполне корректное для большинства
реальных систем. Наряду с математическим ожиданием длительности
обслуживания используется понятие интенсивности потока обслуживания
1
 - величины, обратной средней длительности обслуживания и
 об
характеризующей количество заявок, которое может быть обслужено в единицу
времени постоянно загруженным каналом обслуживания.
Если в момент появления заявки на входе СМО хотя бы один канал свободен
от обслуживания, ее обслуживание может быть начато немедленно, без
задержки. Однако вполне вероятна ситуация, когда заявка застает СМО
полностью загруженной, т.е. когда все m каналов обслуживания заняты. В этом
случае начало обслуживания задерживается, заявка может занять место в
соответствующей очереди. Таким образом, вторым важным компонентом
структуры СМО является очередь, параметром которой является число мест в
очереди n. В приоритетных системах общая очередь может быть разделена на
несколько очередей по числу различаемых системой приоритетов, для каждой
из которых должно быть указано число мест ni, (i= 1, n ). На число мест в
очереди может быть наложено ограничение. Это может быть сделано как для
каждой очереди в отдельности, так и для всей совокупности очередей в целом.
При этом возможны конфликтные ситуации, решением которых может быть
отказ системы принять заявку.
В зависимости от числа мест в очереди различают СМО с отказами и,
соответственно, СМО без отказов. В СМО с отказами число мест в очереди
конечно, и вследствие вероятностного характера как входящего потока, так и
процессов обслуживания, существует ненулевая вероятность того, что
поступившая на вход СМО заявка застанет все каналы занятыми
обслуживанием и все места в очереди занятыми ожидающими обслуживания
заявками, т.е. она получит отказ. В СМО без отказов заявка либо сразу
назначается на обслуживание, если в момент ее поступления свободен хотя бы
один канал обслуживания, либо безусловно принимается в очередь на
обслуживание.

Параметры закона управления процессами в СМО

9
Процесс продвижения заявки от входа к выходу СМО происходит в
соответствии с некоторым законом управления процессами в СМО, который
задается дисциплинами ожидания и обслуживания.
Дисциплина ожидания определяет порядок приема заявок в систему и
размещения их в очереди:
- Заявка принимается в общую очередь. При переполнении очереди заявка
получает отказ.
- Заявка принимается в общую очередь в порядке поступления. При
переполнении очереди вновь прибывающая заявка выталкивает из очереди
заявку дольше всех находящуюся в очереди.
- Заявка принимается на свободное место, оставшееся после назначения
заявок на обслуживание по случайному правилу. При отсутствии
свободного места заявка получает отказ.
Дисциплина обслуживания – определяет правило выборки заявок из очереди
для назначения на обслуживание.
В зависимости от принятых в СМО дисциплин ожидания и обслуживания
различают СМО с бесприоритетными и приоритетными дисциплинами.
В СМО с бесприоритетными дисциплинами все заявки считаются
равноправными. Возможны следующие бесприоритетные дисциплины
обслуживания, т.е. правила выборки заявки из очереди при необходимости
назначения на обслуживание:
- выбирается первая в очереди заявка-дисциплина «первым пришел – первым
вышел» (FIFO - First Input First Output);
выбирается последняя в очереди заявка-дисциплина «последним пришел -
первым вышел» (LIFO - Last Input First Output);
- заявка выбирается из очереди случайным образом.
В приоритетных дисциплинах обслуживания заявкам некоторых типов
представляется преимущественное право на обслуживание перед заявками
других типов, называемое приоритетом. Различают относительные,
абсолютные и смешанные приоритеты.
Относительные приоритеты учитываются только в момент назначения
заявки на обслуживание. При освобождении канала обслуживания
сравниваются приоритеты заявок, находящихся в очереди в состоянии
ожидания, и обслуживание предоставляется заявке с наибольшим приоритетом,
после чего выбранная заявка захватывает канал обслуживания.
Абсолютные приоритеты предполагают прерывание обслуживания
низкоприоритетной заявки в момент поступления в СМО заявки с более
высоким приоритетом, прерванная заявка ставится в начало либо общей
очереди, либо очереди заявок соответствующего приоритета. Обслуживание
прерванных заявок может проводиться либо от начала (повторное
обслуживание), либо от момента прерывания (дообслуживание), чаще
используют второй способ – дообслуживание прерванных заявок.

10
Смешанные приоритеты предполагают сочетание рассмотренных видов
приоритета, причем для отдельных заявок может быть использовано
бесприоритетное обслуживание.
Совокупность обслуженных и потерянных заявок образует выходящий поток
СМО.
В зависимости от структуры выходящего потока различают СМО без потерь
(«чистые» СМО) и СМО с потерями («смешанные» СМО).
Для «чистых СМО характерно отсутствие ограничений на число мест в
очереди (бесконечная очередь) и на время пребывания заявки в системе
(«терпеливые» заявки). По этой причине выходящий поток будет состоять лишь
из обслуженных заявок.
Выходящий поток в общем случае распадается на поток обслуженных и
поток потерянных заявок, каждый из которых характеризуется законом
распределения длительности интервала между соседними заявками.
Если входящий поток содержит заявки m типов с интенсивностями i потока
заявок типа i(i= 1, m ), выходящий поток можно характеризовать суммарной
интенсивностью потока обслуженных заявок
m
0   0i ,
i 1

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


0

интенсивностью потока потерянных заявок


m
П   ni ,
i 1

где i - интенсивность потока потерянных заявок типа i. Очевидно, что


П

 i 0 +  i П = i .
В свою очередь, поток потерянных заявок может состоять из потока заявок,
получивших отказ, и потока "нетерпеливых" заявок, покинувших систему, так
как их время пребывания превысило допустимую величину.
Проиллюстрируем обобщенную структуру СМО примером
однопроцессорной цифровой управляющей системы (ЦУС), входящей в состав
автоматизированной системы управления технологическим процессом (АСУ
ТП) [2]. Помимо аппаратных средств (процессор, память, устройство
прерывания, периферийные устройства) в состав ЦУС входят программные
средства, содержащие прикладные и системные управляющие программы.
Прикладные управляющие программы реализуют алгоритмы управления
технологическим процессом, их исполнение процессором рассматривается как
обслуживание заявок, поступающих в ЦУС от технологического процесса.
Системные управляющие программы осуществляют управление прохождением
заявок через ЦУС (диспетчирование) и исполняются тем же процессором.
Обычно выделяют две основные системные управляющие программы:

11
ДИСПЕТЧЕР1 (D1) и ДИСПЕТЧЕР2 (D2), реализующие, соответственно,
дисциплины ожидания и обслуживания.
Заявки С1, С2, ..., СМ в виде сигналов прерывания от датчиков состояния
технологического процесса поступают в устройство прерывания, входящее в
состав процессора. Появление сигнала прерывания (заявки) С инициирует в
процессоре операцию прерывания, в результате выполнения которой процессор
переключается на выполнение программы D1. D1, распознает приоритет
поступившей заявки и ставит ее в соответствующую очередь, реализованную в
специально зарезервированной области памяти, причем для хранения
информации об одной заявке может потребоваться несколько ячеек памяти. D2
анализирует состояние очередей O1, O2, ..., ON, выбирает заявку Сk, имеющую
преимущественное право на обслуживание, и инициирует соответствующую
прикладную программу. Инициирование программы D2 происходит в моменты
окончания исполнения прикладных программ и программы D1.
Характеристики и показатели эффективности СМО
Характеристики вторичны по отношению к параметрам. Рассмотрим
наиболее употребительные из них и их обозначения. Следует помнить, что все
эти показатели отражают возможности СМО по обслуживанию заявок, отнюдь
не характеризуя качество самого обслуживания.
1) Характеристика выходящего потока заявок  , т.е. интенсивность
входящего потока
 = об  п .
2) Вероятность обслуживания Pоб характеризует вероятность того, что
произвольно выбранная из входящего потока с интенсивностью  заявка будет
обслужена, т.е. окажется в потоке обслуженных заявок с интенсивностью 
Pоб = об /  .
Иногда вероятность обслуживания называют относительной пропускной
способностью.
3) Вероятность потери Pп характеризует вероятность того, что произвольно
выбранная из входящего потока с интенсивностью  заявка окажется в потоке
потерянных заявок с интенсивностью  :
п   об 
Pп    1  об  1  Pоб ,
  
Pп  1  Pоб ,
Pп  Pокт  Pвыт  Pуход .
4) Среднее время ожидания t заявки (среднее время пребывания заявки в
ож

очереди) является математическим ожиданием времени ожидания. Время


ожидания t ож заявки является случайной величиной и равно сумме
длительностей интервалов времени, в течение которых заявка находится в
очереди, начиная с момента появления заявки на выходе СМО и кончая
моментом, когда заявка последний раз покидает очередь по причине
назначения на обслуживание или ухода из очереди (в случае нетерпеливых
заявок).
Среднее время ожидания tож в общем случае является суммой двух
12
составляющих:
=t   t ,
t ож ож ож

t
ож
- среднее начальное время ожидания, равное промежутку времени
между моментом появления заявки на входе СМО и моментом первого
назначения заявки на обслуживание или ухода из очереди

t
ож
- среднее время ожидания в прерванном состоянии, равное в общем
случае сумме промежутков времени между моментами поступления заявки,
обслуживание которой было прервано.
5) Среднее время пребывания заявки в СМО t является математическим
e

ожиданием времени пребывания заявки в СМО. Время пребывания t заявки в e

СМО равно промежутку времени от момента поступления заявки на вход СМО


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

заявки в СМО t равно сумме среднего времени ожидания (пребывания в


e

очереди) t и среднего времени обслуживания (пребывания в канале


ож

обслуживания)
t =te +t . ож об

6) Средняя длина очереди l представляет собой математическое ожидание


числа заявок, находящихся в очереди, т.е. длины очереди l .
l t  . ож

7) Среднее число занятых каналов обслуживания k равно математическому


ожиданию числа занятых обслуживанием каналов обслуживания, являющегося
случайной величиной, и характеризует степень загрузки обслуживающей
системы φ
k
 ,
m
где m -общее число каналов.
8) Среднее число заявок в системе z представляет собой математическое
ожидание числа заявок, одновременно находящихся в очереди или в канале
обслуживания. Оно представляет собой сумму средней длины очереди и
среднего числа занятых каналов обслуживания, так как с каждым каналом
обслуживания в произвольный момент времени может быть связана только
одна заявка
z  e  k   (t ож  t об )    t с .
Под показателями эффективности понимается количественный показатель,
частично характеризующий уровень выполнения СМО возложенных на нее
функций. На основании показателей эффективности может быть построен
некоторый критерий эффективности, совокупно характеризующий
эффективность СМО при ограничениях на ее параметры. Эффективность СМО
может характеризоваться большим числом различных показателей
эффективности. Экономические потери вычисляются с помощью системы
штрафов, причем штрафы назначаются в зависимости от системы. Чаще всего
используется какой то обобщенный показатель В общем случае:

13
.

2. Аналитические методы моделирования систем массового


обслуживания
2.1.Описание Марковской модели
В теории массового обслуживания к наиболее изученным и исследованным
относятся модели, у которых случайный процесс функционирования относится
к классу Марковских процессов, т. е. Марковские модели. Случайный процесс,
протекающий в системе, называется Марковским, если для любого момента
времени вероятностные характеристики процесса в будущем зависят только от
его состояния в данный момент и не зависят от того, когда и как система
пришла в это состояние. При исследовании систем аналитическим
моделированием наибольшее значение имеют Марковские случайные процессы
с дискретными состояниями и непрерывным временем. Процесс называется
процессом с дискретными состояниями, если его возможные состояния z1 ,z2,…
можно заранее перечислить, т. е. состояния системы принадлежат конечному
множеству и переход системы из одного состояния в другое происходит
мгновенно. Процесс называется процессом с непрерывным временем, если
смена состояний может произойти в любой случайный момент.
Для описания поведения системы в виде Марковской модели следует:
 определить понятие состояния системы;
 выявить все состояния, в которых может находиться система;
 указать, в каком состоянии находится система в начальный момент;
 построить граф состояний, т. е. изобразить все состояния,
например, кружками и возможные переходы из состояния в состояние
стрелками, соединяющими состояния (рис.2.1);

Рис. 2.1. Граф состояний Марковского процесса

 разметить граф, т. е. для каждого перехода указать интенсивность


λij потока событий, переводящих систему из состояния Zi в состояние Zj:
pij (t , t   t )
 ij (t ) = lim ,
 t

14
где pij (t , t   t ) - вероятность перехода из состояния Zi в состояние Zj за
время от t до t   t .
Для стационарных Марковских процессов интенсивности переходов не
зависят от времени:  (t ) =  , тогда pij (t , t   t ) = pij ( t ) .
ij ij

Понятие состояния зависит от целей моделирования. В нашем случае


состояние системы определяется числом заявок, находящихся на обслуживании
и в очередях.
2,2. Уравнения Колмогорова для вероятностей состояний
Исчерпывающей количественной характеристикой Марковского процесса
является совокупность вероятностей состояний, т.е. вероятностей того,
что в момент процесс будет находиться в состоянии
Рассмотрим, как определяются вероятности состояний по приведенному
выше графу состояний, считая все потоки простейшими. В случайный момент
времени система может находиться в одном из состояний с вероятностью
. Придадим малое приращение и найдем, например,
вероятность того, что в момент система будет в состоянии
Это может произойти, во-первых, если система в момент была в состоянии
и за время не вышла из него; во-вторых, если в момент система была в
состоянии или и за время перешла в состояние
В первом случае надо вероятность умножить на вероятность того, что
за время система не перейдет в состояние , или . Суммарный поток
событий, выводящий систему из состояния , имеет интенсивность
. Значит, вероятность того, что за время система выйдет из
состояния , равна . Отсюда вероятность первого
варианта

Найдем вероятность перехода в состояние . Если в момент t система


находилась в состоянии с вероятностью , то вероятность перехода в
состояние за время равна

Аналогично для состояния

Складывая вероятности получим

15
Раскроем квадратные скобки, перенесем в левую часть и разделим обе
части на :

Если устремить к нулю, то слева получим производную функции :

Аналогичные уравнения можно вывести для всех остальных состояний.


Получается система дифференциальных уравнений:

Эта система линейных дифференциальных уравнений дает возможность


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

Здесь учтено, что для состояний, не имеющих непосредственных переходов,


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

16
конечное число шагов, то существуют предельные (финальные) вероятности
состояний:

Сумма вероятностей всех возможных состояний равна единице.


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

(1)
В связи с тем, что эти уравнения однородные, т. е. не имеют свободного
члена и, значит, позволяют определить неизвестные только с точностью до
произвольного множителя, следует воспользоваться нормировочным условием

и с его помощью решить систему уравнений (1).


2.3. Модель размножения и гибели
Разновидностью Марковской модели с дискретным числом состояний и
непрерывным временем является модель размножения и гибели [3]. Она
характерна тем, что ее граф состояний имеет вид цепи (рис.2.2).

Рис. 2.2. Граф процесса гибели и размножения с конечным числом состояний

Особенность этого графа состоит в том, что каждое из средних состояний


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

17
Эти формулы часто используют при решении задач теории массового
обслуживания. В частности, при простейших входящих потоках можно
использовать полученные результаты, т.к. свойство ординарности
предполагает, что события происходят поодиночке, и, стало быть, система
может переходить только в соседние состояния, то есть имеют место процессы
гибели и размножения.
2.4.Характеристики вычислительных систем как систем массового
обслуживания
Предположим, что моделью ВС является одноканальная СМО с однородным
бесконечным простейшим потоком заявок и неограниченной очередью.
Интенсивность потока заявок равна Длительность обслуживания заявки –
это случайная величина с математическим ожиданием Наряду с понятием
средней длительности обслуживания используется понятие интенсивности
обслуживания — величины, обратной и характеризующей
число заявок, которое может обслужить прибор в единицу времени. Поток
обслуживания тоже будем считать простейшим с интенсивностью µ.
Выделим состояния СМО по числу заявок, находящихся в системе:
Z0 - прибор свободен, очереди нет;
Z1 - прибор занят (обслуживает заявку), очереди нет;
Z2 - прибор занят, одна заявка в очереди;
. . . . .
- прибор занят, заявок стоит в очереди.
Это модель размножения и гибели, но с бесконечным количеством состоя-
ний, поскольку очередь неограниченна (рис 2.3)

Рис. 2.3. Граф процесса гибели и размножения

1) Коэффициент загрузки
Предельная вероятность состояния

Обозначая , получаем
.

18
Ряд в этой формуле представляет собой геометрическую прогрессию.
Известно, что при ряд сходится. Сумма членов прогрессии при этом
равна , откуда .
Это вероятность того, что прибор свободен и очередь отсутствует. Значит,
вероятность того, что прибор занят обслуживанием заявки,
.
Это означает, что отношение служит мерой загрузки СМО и
является коэффициентом загрузки. Тогда - коэффициент
простоя.
2) Число заявок в СМО
Вероятности состояний определяются из общей формулы
размножения и гибели:

Определим среднее число заявок в системе n.


В текущий момент времени в системе может быть заявок с
вероятностями
Математическое ожидание количества заявок равно

Подставим значение и , исключив первое слагаемое, равное нулю:

Вынесем за знак суммы

Но - это производная по от :

Меняя местами операции дифференцирования и суммирования, получим

.
Сумма в этой формуле – это сумма бесконечно убывающей прогрессии. При
она равна , а ее производная – . Следовательно,
число заявок в системе в установившемся стационарном режиме
.
3) Длина очереди
19
Найдем среднее число заявок в очереди к обслуживающему прибору —
среднюю длину очереди . Она равна среднему числу заявок в системе за
вычетом среднего числа заявок, находящихся под обслуживанием. Число
заявок под обслуживанием может быть равно нулю, если прибор свободен, или
единице, если прибор занят. В установившемся режиме математическое
ожидание такой случайной величины равно вероятности того, что прибор занят.
А эта вероятность определена ранее — . Откуда получается средняя длина
очереди в СМО:

.
При очередь стремительно увеличивается и при уходит
в бесконечность. У детерминированной системы коэффициенты вариации
интенсивностей потоков заявок и обслуживания равны нулю, при
очередь отсутствует, а при - уходит в бесконечность.
4) Время реакции.
Для определения среднего времени реакции рассмотрим поток заявок,
прибывающих в СМО, и поток заявок, покидающих систему. Если в системе
устанавливается предельный стационарный режим при , то среднее число
заявок, прибывающих в единицу времени, равно среднему числу заявок, поки-
дающих ее: оба потока имеют интенсивность .
Обозначим через X (t) число заявок, поступивших в СМО до момента
времени t, а через У (t) — число заявок, покинувших СМО до момента t. Та и
другая функции являются случайными и меняются скачком – увеличиваются на
единицу в моменты прихода или ухода заявок (рис. 2.4).

Рис. 2.4. Время пребывания заявок в системе

Очевидно, что для любого момента времени t разность функций X (t) и Y(t)
n(t) = X (t) - Y(t) есть число заявок, находящихся в СМО. Рассмотрим
большой промежуток времени Т и вычислим среднее число заявок,
находящихся в системе:

20
На рисунке интеграл изображен в виде заштрихованной фигуры. Она состоит
из прямоугольников, каждый из которых имеет высоту, равную единице, и
основание, равное времени пребывания в системе i-й заявки ti:

где сумма распространяется на все заявки, поступившие в систему за время


Т. Разделим правую и левую части на Т:

Разделим и умножим правую часть на :

Произведение - это среднее количество заявок, пришедших за время Т.


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

Это формула Литтла: для каждой СМО при любом характере потока заявок и
при любом распределении времени обслуживания среднее время реакции
равняется среднему числу заявок в системе, деленному на интенсивность
потока заявок. Отсюда получается:

Вторая формула Литтла связывает среднее время пребывания заявки в


очереди и среднее число заявок в очереди подобным соотношением:

Среднее время реакции равняется сумме среднего времени пребывания


заявки в очереди и средней длительности обслуживания заявки:

Важно отметить, что времена ожидания и реакции, а также периоды между


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

21
Рис. 2.5. Граф переходов многоканальной системы

Интенсивности перехода в соседнее правое состояние определяются, как и у


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

Средняя длина очереди

Прибавляя к ней среднее число заявок, находящихся под обслуживанием,


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

получим среднее число заявок в системе:

По формулам Литтла определяется среднее время пребывания заявки в


очереди:

и в системе — время реакции:

2.6. Системы с нетерпеливыми заявками


22
В таких системах заявки могут уходить (покидать систему) из очереди
или из каналов обслуживания по истечении определенного времени. Будем
рассматривать два потока уходов с интенсивностями νож и νоб. Так как
входящие потоки – простейшие, а моменты назначения заявок на обслуживания
– случайные, то потоки уходов из очереди и из каналов обслуживания также
простейшие с одинаковыми интенсивностями
νож = νоб = 1/τср ,
где τср – среднее допустимое время пребывания заявки в системе.
Методика анализа таких систем соответствует выше изложенному. Различие
заключается в том, что интенсивности обратных переходов увеличиваются на
величину к νоб к = 1,2, …,m при уходах заявок из каналов обслуживания и
соответственно на l νож l = 1,…, q при уходах заявок из очереди (m – число
каналов обслуживания; q – число мест в очереди).
2.7. Расчет основных характеристик систем массового обслуживания
На основе применения описанной методики были получены соотношения
[2,3], позволяющие вычислить вероятности нахождения в каждом из состояний
системы массового обслуживания, находящейся под воздействием простейших
потоков. Задача анализа СМО практически может считаться решенной, если
найдены эти вероятности, так как вычисление основных характеристик системы
не представляет труда. В примере, приведенном ниже, используются данные
соотношения. Заметим только, что при небольших размерностях системы, т.е.
при малом числе каналов обслуживания и числе мест в очереди, аналитическое
моделирование проще проводить в полном соответствии с методикой:
1) определить число состояний системы;
2) построить граф состояний и разметить его;
3) составить уравнения Колмогорова для предельных состояний и
решить их, заменив одно из уравнений условием нормировки;
4) по полученным вероятностям нахождения системы в каждом из
состояний рассчитать основные характеристики СМО.

23
2.8. Пример аналитического моделирования вычислительных систем
Определить эффективность функционирования многопроцессорной
вычислительной системы по заданному критерию – обобщенному показателю
потерь. Моделируемая структура: многопроцессорная управляющая
вычислительная система, состоящая из m процессоров, на вход которой
поступают простейшие потоки заявок (k потоков с интенсивностью i ,
i=1,2,...,k). Процессоры однотипные со средним быстродействием B (в
миллионах операций в секунду). Обслуживание заявки заключается в
выполнении на любом из процессоров соответствующей прикладной
программы. Средняя трудоемкость всех прикладных программ одинакова и
равна  (в тысячах операций). Закон распределения трудоемкости каждой из
программ – экспоненциальный.

Для хранения заявок, которые не могут обслуживаться немедленно, выделен


буфер из n ячеек (каждая заявка занимает одну ячейку). Время пребывания
заявок в системе не должно превышать случайной величины  доп ,
распределенной экспоненциально с математическим ожиданием  доп .
Операционная система реализует безприоритетные дисциплины ожидания и
обслуживания. В ее же функции входит удаление «нетерпеливых заявок» из
системы.
Критерий эффективности функционирования системы (Е) задан в условных
денежных единицах
   * e *
отк  e *    e * m  k  ,
отк у у n

где    i – интенсивность суммарного потока заявок;


i 1
eотк – штраф за отказ системы принять заявку;
ey – штраф за уход заявки из СМО;
e n – штраф за незанятый канал (простой канала);
отк – вероятность отказа в обслуживании заявки;
 у – вероятность ухода «нетерпеливых заявок»;
k – среднее число занятых каналов (процессоров).

Упрощенная схема СМО приведена на рис. 2.6.

0
вх. 1

2 вых .

m
Рис. 2.6. Упрощенная структурная схема СМО
24
1. Основные параметры СМО
1.1. Параметры входящего потока заявок.
1.2. Параметры структуры СМО:
1) число каналов обслуживания - m;
2) число мест в очереди - n;
3) средняя длительность обслуживания заявки в канале -  об ;
4) интенсивность потока обслуживания   1 .
об

2. Характеристики СМО
2.1. Интенсивность выходного потока заявок  .
  об  n ,
где об – интенсивность потока обслуженных заявок;
n – интенсивность потока потерянных заявок;
(потери происходят из-за ухода из СМО «нетерпеливых» заявок и из-за
отказов системы принять заявку при заполненной очереди).
2.2. Вероятность обслуживания
об
об  ,

где  - интенсивность входящего потока заявок.
2.3. Вероятность потери заявок
п  1  об .
2.4. Среднее время ожидания заявок в очереди t ож .
2.5. Среднее время пребывания заявки в системе (время реакции системы) tс
.
t с  t ож  t об ,
где t об - среднее время обслуживания.
2.6. Средняя длина очереди e .
2.7. Среднее число занятых каналов обслуживания k .
2.8. Среднее число заявок в системе
z  ek.
Для СМО без «выталкивания» заявок и ухода «нетерпеливых» заявок
справедливо z  e  k   *  t ож  t об    * t с . Критерий эффективности СМО (Е) –
некоторая функция – показатель эффективности системы.
В общем виде
 

   eоткi * откi * i  eвi * вi * i  e уi *  уi * i , где eоткi – штраф за отказ
i 1

системы принять i-ю заявку;


eвi – штраф за «выталкивание» i - й заявки;
e уi – штраф за уход из системы i - й заявки при превышении допустимого
времени нахождения заявки в СМО;
M – количество типов заявок.
25
Таким образом критерий эффективности отражает потери в СМО, вызванные
отказами системы принять заявку, уходом «нетерпеливых» заявок и
«выталкиванием» заявок, имеющих более низкий приоритет, когда приходит
заявка с высшим приоритетом.
Пусть задано :
k = 3;  1 = 6; 2 = 15; 3 = 9; 4 = 0;
B = 0,5; n = 4; m = 2;  доп = 0,1;  = 25;
eотк = 3; e y = 2; e n = 10,
т.е. имеется двухпроцессорная система; число мест в очереди - 4.
Формулируем задачу в терминах СМО:
Так как рассматриваемая СМО - бесприоритетная, будем рассматривать
3

суммарный поток заявок с интенсивностью    i  30 с-1.


i 1

Поток обслуживания для одного канала имеет интенсивность


 0,5 * 10 6
   20 с-1.
 25 * 10 3
Находим приведенную эффективность входного потока для одного канала: :

  1,5 .

1
Находим интенсивность потока уходов :     10 с-1.
доп

Находим приведенные интенсивности потоков уходящих заявок :


 ож – уход из очереди;
 об – уход из каналов обслуживания;
ож об  10с 1
 об   ож      0,5 .
   20с 1

Рассматриваем возможные состояния системы :


1) z0 – в системе нет заявок;
2) z1 – в системе одна заявка, очередь отсутствует;
3) z2 – в системе 2 заявки, очередь отсутствует;
4) z3 – 3 заявки : 2 заявки на обслуживании, 1 в очереди;
5) z4 – 4 заявки : 2 заявки на обслуживании, 2 в очереди;
6) z5 – 5 заявок : 3 заявки в очереди;
7) z6 – 6 заявок : в очереди 4 заявки. Очередь заполнена.
Вероятность нахождения системы в i-м состоянии находим по формулам:
1
  n l 
m
i m   
0  1    *   ;
 i 1 i *  1   
 об
i
m!*  1   об 
m
 
 l 1 i 1 m *  1     i * 
об ож  

 i
i  * 0 i=1,2,...,m;
i * 1  ”‡ 
i

m l

m l  * * 0 l=1,2,...,n,
m!*  1   об 
m
i 1  m *  1     i * 
об ож

где l - длина очереди.


26
Вероятность состояния z0 равна
1
 1,51 1,52 1,52 
1  1  2  2 * 
 1 *  1  0,5 2 *  1  0,5 2 *  1  0,5 
  
  1,5 1,5 1,5
 *  
  2 *  1  0,5  1 * 0,5
 2 *  1  0,5  1 * 0,5 2 *  1  0,5  2 * 0,5 

0    
  1,53 
*  
 
 
 2 *  1  0,5  1 * 0,5 *  2 *  1  0,5  2 * 0,5 *  2 *  1  0,5  3 * 0,5 

  1,54 
  

   2 *  1  0,5  1 * 0,5 *  2 *  1  0,5  2 * 0,5 *  2 *  1  0,5  3 * 0,5 *  2 *  1  0,5  4 * 0,5 

0   1  1  0,5  0,5 *  0,4286  0,1607  0,0536  0,0161 


1
 0,3534 .
Далее находим
P0 = 0,3534 P3 = 0,0757 P1 = 0,3534 P4 = 0,0284 P2 = 0,1767
P5 = 0,0095 P6 = 0,0029.
(Для состояний z0 - z2 очередь отсутствует.)
Вычисляем характеристики СМО:
6

Среднее число занятых каналов k  0 * 0  1 * 1  2 *  i  0,9398


i 3

(в состоянии P0 не занят ни один канал;


в состоянии P1 занят 1 канал;
в состояниях P2 - P6 заняты 2 канала).
2. Средняя длина очереди e  1 * 3  2 * 4  3 * 5  4 * 6  0,1726 .
3.Вероятность отказов отк  6  0,0029 .
 ож 0,1726 * 10
4. Вероятность ухода заявок из очереди  у .ож  e *   0,0575 .
 30
5. Вероятность ухода заявки из системы во время обслуживания
об 0,9398 * 10
 у .об  k *   0,3133 .
 30
6.Суммарная вероятность ухода «нетерпеливых» заявок
 ух   у .ож   у .об  0,3708 .
7. Вероятность потерь заявок п  отк   ух  0,0029  0,3708  0,3737 .
8. Вероятность обслуживания заявки об  1  п  1  0,3737  0,6263 .
Вычисляем критерий эффективности СМО (суммарные потери):
  30 *  3 * 0,0029  2 * 0,3708  10 *  2  0,9398  33,111 (усл. ед.).
Таким образом, аналитические методы моделирования вычислительных
систем основываются на результатах, полученных при исследовании систем
массового обслуживания (СМО), и позволяют получить характеристики
эффективности функционирования системы при определенных ограничениях,
налагаемых на параметры СМО. Как правило, аналитические методы
используются для получения приближенных оценок, которые уточняются в
дальнейшем в процессе имитационного моделирования.

3. Имитационное моделирование систем массового


обслуживания
3.1. Основные понятия имитационного моделирования [1]
При имитационном моделировании алгоритм, реализующий модель,
воспроизводит процесс функционирования системы во времени. Имитируются
элементарные явления, составляющие процесс, с сохранением их логической
27
структуры и последовательности протекания во времени. Метод
имитационного моделирования позволяет решать задачи анализа систем:
- оценки вариантов структуры системы;
- оценки эффективности различных алгоритмов управления;
- оценки влияния изменения параметров системы.
Имитационная модель отображает стохастический процесс смены
дискретных состояний СМО в непрерывном времени в форме моделирующего
алгоритма. При его реализации на ЭВМ производится накопление
статистических данных по тем атрибутам модели, характеристики которых
являются предметом исследований. По окончании моделирования накопленная
статистика обрабатывается, и результаты моделирования получаются в виде
выборочных распределений исследуемых величин или их выборочных
моментов. Таким образом, при имитационном моделировании систем
массового обслуживания речь всегда идет о статистическом имитационном
моделировании.
Ключевым понятием в имитационном моделировании является понятие
состояния системы. При переходе системы из одного состояния в другое
происходит событие. Изменяя значения различных переменных, входящих в
модель, можно имитировать последовательность событий, т.е. представлять
динамику системы. При дискретной имитации состояние системы меняется
только в определенные моменты времени, определяемые целыми числами.
При моделировании вычислительных систем (ВС) на системном уровне
каждый элемент отображает функциональное устройство на том или ином
уровне детализации. В простейшем случае устройство может находиться в
работоспособном состоянии или в состоянии отказа. В работоспособном
состоянии устройство может быть занято или свободно. Когда устройство
занято, к нему имеется очередь заявок.
Имитационное моделирование позволяет исследовать СМО при различных 
типах входных потоков и интенсивностях поступления заявок на входы, при
вариациях параметров ОА (обслуживающие аппараты или каналы
обслуживания, или приборы), при различных дисциплинах обслуживания
заявок
     Основной тип ОА – устройства, именно в них происходит обработка
транзактов с затратами времени. К ОА относятся также накопители (памяти),
отображающие средства хранения обрабатываемых деталей в
производственных линиях или обрабатываемых данных в вычислительных
системах. Накопители характеризуются не временами обслуживания заявок, а
емкостью – максимально возможным количеством одновременно находящихся
в накопителе заявок. К элементам имитационных моделей СМО кроме ОА
относят также узлы и источники заявок. Связи ОА между собой реализуют
узлы, т.е. характеризуют правила, по которым заявки направляются к тому или
иному ОА.
3.2. Обобщенный алгоритм имитационного моделирования
Под событием в ВС понимают:

28
- поступление заявки в систему;
- освобождение устройства после обслуживания заявок;
- уход нетерпеливых заявок из очереди;
- отказ в приеме заявок и т.д.
Управляющие последовательности – это последовательности значений
периодов следования заявок по каждому потоку и длительности обслуживания
заявок i-го потока j-м устройством. Моменты поступления следующих событий
определяются по простым рекурсивным соотношениям.
Таким образом имеем достаточно простой алгоритм моделирования.
1. Определяется событие с минимальным временем – наиболее раннее
событие.
2. Модельному времени присваивается значение времени наступления
наиболее раннего события.
3. Определяется тип события.
4. В зависимости от числа события выполняется соответствующая реакция
модели.
5. Перечисленные выше действия выполняются до истечения времени
моделирования.
При имитационном моделировании можно измерять значение характеристик
системы, интересующих исследователя:
- коэффициент загрузки приборов;
- количество обслуженных заявок;
- средняя и максимальная длина очереди и т.д.

3.3. Технологические этапы создания и использования


имитационных моделей
Независимо от способа проектирования сложной системы и назначения
моделирования можно выделить следующие восемь этапов создания и
использования имитационных моделей:
- определение объекта имитации, установление границ и ограничений
моделирования, выбор показателей для сравнения эффективности
вариантов системы (составление содержательного описания объекта
моделирования);
- формулировка замысла модели, переход от реальной системы к
логической схеме ее функционирования (составление концептуальной
модели);
- реализация объекта в терминах математических понятий и
алгоритмизация функционирования ее компонент (составление
формального описания объекта);
- преобразование формального описания объекта в описание
имитационной модели (составление описания имитационной модели);
29
- программирование и отладка модели (программирование модели);
- проверка модели, ее свойств и затрат ресурсов на имитацию
(испытание и исследование модели);
- организация модельного эксперимента на ЭВМ (эксплуатация
модели);
- интерпретация результатов моделирования и их использование в ходе
проектирования сложной системы (анализ результатов).
Составление содержательного описания объекта моделирования
представляет собой выполнение следующих действий.
Вначале определяется объект имитации и состав исходной технической
информации, достаточной для изучения тех сторон его функционирования,
которые представляют интерес для исследователя.
Устанавливаются границы изучения функционирования объекта.
Составляется возможный список ограничений модели, которые допустимы
при организации имитации или при наличии которых еще имеет смысл
имитация функционирования объекта моделирования.
Результатом работ на данном этапе является содержательное описание
объекта моделирования с указанием целей имитации и аспектов
функционирования объекта моделирования, которые необходимо изучить на
имитационной модели. Обычно оно представляет собой техническое
описание объекта моделирования, описание внешней среды, с которой он
взаимодействует, и временную диаграмму этого взаимодействия.
Составление концептуальной модели производится в следующей
последовательности.
На основании содержательного описания уточняется задача
моделирования, определяются процедура и график ее решения. Уточняется
методика всего имитационного эксперимента в зависимости от наличных
ресурсов, выделенных для имитации. Общая задача моделирования
разбивается на частные подзадачи. Устанавливаются приоритеты решения
подзадач моделирования. Обосновываются требования в рабочей силе и
выделения ресурсов ЭВМ. Затем проводится тщательный анализ задач,
стоящих перед имитацией. Часто при создании небольших моделей
данный этап работ совмещается с этапом составления содержательного
описания моделируемой системы.
Составление формального описания объекта моделирования представляет
собой ответственный этап создания имитационной модели сложной
системы (СС). Цель – исследование алгоритмов поведения компонент СС и
отражение вопросов взаимодействия между собой этих компонент. При
составлении формального описания модели исследователь использует тот
или иной язык формализации. В зависимости от сложности объекта
моделирования и внешней среды могут использоваться три вида
формализации: аппроксимация явлений функциональными зависимостями,
алгоритмическое описание объектов в системе, смешанное представление в
виде последовательности формул и алгоритмических записей.

30
После составления формального описания объекта моделирования
приступают к его проверке. Это первая главная проверка достоверности
будущей модели СС в процессе проектирования. Для обеспечения
контроля правильности функционирования модели вводят классические
модели, достоверность которых доказана. Они фигурируют в модели в
виде составных частей. На вход таких моделей поступают данные,
вычисляемые в других частях модели, достоверность которых проверяется.
Если результат работы классической модели окажется недостоверным, то
считают, что предшествующая часть формального описания системы также
недостоверна.
В процессе проверки достоверности модели необходимо ответить на
следующие вопросы: позволяет ли модель решить поставленные задачи
моделирования, насколько полна предложенная схема модели и отражает
ли она фактическую последовательность развития процессов в реальной
системе. Необходимо провести анализ каждой модели и убедиться, что
она нашла свое отражение в формальном описании системы.
Результатом этапа является проверенное формальное описание
исследуемой системы на выбранном языке формализации.
Составление имитационной модели. В этот раздел входят следующие
вопросы реализации модели: декомпозиция объекта на составляющие и
формирование элементов модели; отработка вопросов синхронизации
частей компонент модели друг с другом в модельном времени; задание
начальных условий моделирования; планирование процессов имитации
отдельных вариантов системы; проверка окончания моделирования;
обработка результатов имитации. Результатом этапа является описание
модели сложной системы.
Программирование. На этом этапе выполняются следующие действия.
Составляется план создания и использования программной модели. Как
правило, программа модели создается с помощью средств автоматизации
моделирования на ЭВМ. Поэтому в плане указываются: тип ЭВМ;
средство автоматизации моделирования; примерные затраты памяти ЭВМ
на создание программы модели и ее рабочих массивов; затраты
машинного времени на один цикл работы модели; оценки затрат на
программирование и отладку программы модели.
На этом же этапе проверяют достоверность программы модели системы.
В процессе этой проверки устанавливается соответствие операций в
программе и описании модели.
Испытание модели. Это важный этап создания модели. При этом
необходимо выполнить следующее. Во-первых, убедиться в правильности
динамики развития алгоритма моделирования объекта исследования в ходе
имитации его функционирования (провести верификацию модели). Во-
вторых, определить степень адекватности модели и объекта исследования.
Под адекватностью программной имитационной модели реальному объекту
понимают совпадение с заданной точностью векторов характеристик

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

4. Система имитационного моделирования GPSS World

Сложные функции моделирующего алгоритма могут быть реализованы


средствами универсальных языков программирования (Паскаль, Си), что
предоставляет неограниченные возможности в разработке, отладке и
использовании модели. Однако подобная гибкость приобретается ценой
больших усилий, затрачиваемых на разработку и программирование весьма
сложных моделирующих алгоритмов, оперирующих со списковыми
структурами данных. Альтернативой этому является использование
специализированных языков имитационного моделирования.
Для описания моделей СМО при их исследовании на ЭВМ разработаны
специальные языки имитационного моделирования. Существуют общецелевые
языки, ориентированные на описание широкого класса СМО в различных
предметных областях, и специализированные языки, предназначенные для
анализа систем определенного типа. Примером общецелевых языков служит
широко распространенный  язык  GPSS, примером специализированного языка
– язык МПЛ/ВС моделирования вычислительных систем.
Специализированные языки имеют средства описания структуры и процесса
функционирования моделируемой системы, что значительно облегчает и
упрощает программирование имитационных моделей, поскольку основные
функции моделирующего алгоритма при этом реализуются автоматически.
Программы имитационных моделей на специализированных языках
32
моделирования близки к описаниям моделируемых систем на естественном
языке, что позволяет конструировать сложные имитационные модели
пользователям, не являющимся профессиональными программистами.
Одним из наиболее эффективных и распространенных языков
моделирования сложных дискретных систем является в настоящее время язык
GPSS. Он может быть с наибольшим успехом использован для моделирования
систем, формализуемых в виде систем массового обслуживания. В качестве
объектов языка используются аналоги таких стандартных компонентов СМО,
как заявки, обслуживающие приборы, очереди и т.п. Достаточный набор
подобных компонентов позволяет конструировать сложные имитационные
модели, сохраняя привычную терминологию СМО.
На персональных компьютерах (ПК) язык GPSS реализован в рамках пакета
прикладных программ GPSS/ WORLD. Основной модуль пакета представляет
собой интегрированную среду, включающую помимо транслятора со входного
языка средства ввода и редактирования текста модели, ее отладки и
наблюдения за процессом моделирования, графические средства отображения
атрибутов модели, а также средства накопления результатов моделирования
в базе данных и их статистической обработки. Кроме основного модуля в
состав пакета входит модуль создания стандартного отчета GPSS/ WORLD, а
также ряд дополнительных модулей и файлов.
4.1. Общие сведения о GPSS/World [4]
Исходная программа на языке GPSS/ world, как и программа на любом языке
программирования, представляет собой последовательность операторов.
Операторы GPSS / world записываются и вводятся в ПК в следующем формате:
имя операция операнды ;комментарии
Отдельные операторы могут иметь имя для ссылки на эти операторы в
других операторах. Если такие ссылки отсутствуют, то этот элемент оператора
не является обязательным.
В поле операции записывается ключевое слово (название оператора),
указывающее конкретную функцию, выполняемую данным оператором. Это
поле оператора является обязательным. У некоторых операторов поле операции
включает в себя также вспомогательный операнд.
В полях операндов записывается информация, уточняющая и
конкретизирующая выполнение функции, определенной в поле операции. Эти
поля в зависимости от типа операции содержат до семи операндов,
расположенных в определенной последовательности и обозначаемых обычно
первыми буквами латинского алфавита. Некоторые операторы вообще не
имеют операндов, а в некоторых операнды могут быть опущены, при этом
устанавливаются их стандартные значения (по умолчанию). При записи
операндов используется позиционный принцип: пропуск операнда отмечается
запятой.
Необязательные комментарии в случае их присутствия отделяются от поля
операндов точкой с запятой.

33
Операторы GPSS /world записываются, начиная с первой позиции, в
свободном формате, т.е. отдельные поля разделяются произвольным
количеством пробелов. При вводе исходной программы в интегрированной
среде GPSS /world размещение отдельных полей операторов с определенным
количеством интервалов между ними производится автоматически.
Каждый оператор GPSS / world относится к одному из четырех типов:
операторы-блоки, операторы определения объектов, управляющие операторы и
операторы-команды.
Операторы-блоки формируют логику модели. В GPSS /world имеется около
50 различных видов блоков, каждый из которых выполняет свою конкретную
функцию. За каждым из таких блоков стоит соответствующая подпрограмма
транслятора, а операнды каждого блока служат параметрами этой
подпрограммы.
Операторы определения объектов служат для описания параметров
некоторых объектов GPSS /world. Примерами параметров объектов могут быть
количество каналов в многоканальной системе массового обслуживания,
количество строк и столбцов матрицы и т.п.
Управляющие операторы служат для управления процессом
моделирования (прогоном модели).
Операторы-команды позволяют управлять работой интегрированной среды
GPSS /world. Управляющие операторы и операторы-команды обычно не
включаются в исходную программу, а вводятся непосредственно с клавиатуры
ПК в процессе интерактивного взаимодействия с интегрированной средой.
После трансляции исходной программы в памяти ПК создается так
называемая текущая модель, являющаяся совокупностью разного типа
объектов, каждый из которых представляет собой некоторый набор чисел в
памяти ПК, описывающих свойства и текущее состояние объекта. Объекты
GPSS / world можно разделить на семь классов: динамические, операционные,
аппаратные, статистические, вычислительные, запоминающие и
группирующие.
Динамические объекты, соответствующие заявкам в системах массового
обслуживания, называются в GPSS / world транзактами. Они "создаются" и
"уничтожаются" так, как это необходимо по логике модели в процессе
моделирования. С каждым транзактом может быть связано произвольное число
параметров, несущих в себе необходимую информацию об этом транзакте.
Кроме того, транзакты могут иметь различные приоритеты.
Операционные объекты GPSS / world, называемые блоками, соответствуют
операторам-блокам исходной программы. Они, как уже говорилось, формируют
логику модели, давая транзактам указания: куда идти и что делать дальше.
Модель системы на GPSS / world можно представить совокупностью блоков,
объединенных в соответствии с логикой работы реальной системы в так
называемую блок-схему. Блок-схема модели может быть изображена
графически, наглядно показывая взаимодействие блоков в процессе
моделирования.

34
Аппаратные объекты GPSS /World – это абстрактные элементы, на которые
может быть расчленено (декомпозировано) оборудование реальной системы. К
ним относятся одноканальные и многоканальные устройства и логические
переключатели. Многоканальное устройство иногда называют памятью.
Одноканальные и многоканальные устройства соответствуют обслуживающим
приборам в СМО. Одноканальное устройство, которое для краткости далее
будем называть просто устройством, может обслуживать одновременно только
один транзакт. Многоканальное устройство (МКУ) может обслуживать
одновременно несколько транзактов. Логические переключатели (ЛП)
используются для моделирования двоичных состояний логического или
физического характера. ЛП может находиться в двух состояниях: включено и
выключено. Его состояние может изменяться в процессе моделирования, а
также опрашиваться для принятия определенных решений.
Статистические объекты GPSS / world служат для сбора и обработки
статистических данных о функционировании модели. К ним относятся очереди
и таблицы. Каждая очередь обеспечивает сбор и обработку данных о
транзактах, задержанных в какой-либо точке модели, например перед
одноканальным устройством. Таблицы используются для получения
выборочных распределений некоторых случайных величин, например времени
пребывания транзакта в модели.
К вычислительным объектам GPSS / World относятся переменные
(арифметические и булевские) и функции. Они используются для вычисления
некоторых величин, заданных арифметическими или логическими
выражениями либо табличными зависимостями.
Запоминающие объекты GPSS / world обеспечивают хранение в памяти ПК
отдельных величин, используемых в модели, а также массивов таких величин.
К ним относятся так называемые сохраняемые величины и матрицы
сохраняемых величин.
К объектам группирующего класса относятся списки пользователя и
группы. Списки пользователя предназначены для организации очередей с
дисциплинами, отличными от дисциплины FIFO (раньше пришел – раньше
обслужен).
Каждому объекту того или иного класса соответствуют числовые атрибуты,
описывающие его состояние в данный момент модельного времени. Кроме
того, имеется ряд так называемых системных атрибутов, относящихся не к
отдельным объектам, а к модели в целом. Значения атрибутов всех объектов
модели по окончании моделирования выводятся в стандартный отчет GPSS /
world. Большая часть атрибутов доступна программисту и составляет так
называемые стандартные числовые атрибуты (СЧА), которые могут
использоваться в качестве операндов операторов исходной программы. Все
СЧА в GPSS / world являются целыми числами. Каждый объект GPSS / world
имеет имя и номер. Имена объектам даются в различных операторах исходной
программы, а соответствующие им номера транслятор присваивает
автоматически. Имя объекта представляет собой начинающуюся с буквы

35
последовательность букв латинского алфавита, цифр и символа
"подчеркивание".
Для ссылки на какой-либо стандартный числовой атрибут некоторого
объекта соответствующий операнд оператора исходной программы
записывается одним из следующих способов:
СЧА $ имя;
СЧА j,
где СЧА – системное обозначение (название) конкретного стандартного
числового атрибута данного объекта; имя – имя объекта; j – номер объекта; $ -
символ-разделитель.
Прогон текущей модели, т.е. собственно моделирование, выполняется с
помощью специальной управляющей программы, которую называют
симулятором (от английского simulate – моделировать, имитировать).
Работа GPSS-модели под управлением симулятора заключается в
перемещении транзактов от одних блоков к другим, аналогично тому, как в
моделируемой СМО перемещаются заявки, соответствующие транзактам.
В начальный момент времени в GPSS-модели нет ни одного транзакта. В
процессе моделирования симулятор генерирует транзакты в определенные
моменты времени в соответствии с теми логическими потребностями, которые
возникают в моделируемой системе. Подобным же образом транзакты
покидают модель в определенные моменты времени в зависимости от
специфики моделируемой системы. В общем случае в модели одновременно
существует большое число транзактов, однако в каждый момент времени
симулятор осуществляет продвижение только какого-либо одного транзакта.
Если транзакт начал свое движение, он перемещается от блока к блоку по
пути, предписанному блок-схемой. В тот момент, когда транзакт входит в
некоторый блок, на исполнение вызывается подпрограмма симулятора,
соответствующая типу этого блока, а после ее выполнения, при котором
реализуется функция данного блока, транзакт "пытается" войти в следующий
блок. Такое продвижение транзакта продолжается до тех пор, пока не
произойдет одно из следующих возможных событий:
1) транзакт входит в блок, функцией которого является удаление транзакта из
модели;
2) транзакт входит в блок, функцией которого является задержка транзакта
на некоторое определенное в модели время;
3) транзакт "пытается" войти в следующий блок, однако блок "отказывается"
принять его. В этом случае транзакт остается в том блоке, где находился, и
позднее будет повторять свою попытку войти в следующий блок. Когда
условия в модели изменятся, такая попытка может оказаться успешной и
транзакт сможет продолжить свое перемещение по блок-схеме.
Если возникло одно из описанных выше условий, обработка данного
транзакта прекращается и начинается перемещение другого транзакта. Таким
образом, выполнение моделирования симулятором продолжается постоянно.
Проходя через блоки модели, каждый транзакт вносит вклад в содержимое

36
счетчиков блоков. Значения этих счетчиков доступны программисту через СЧА
блоков.
Каждое продвижение транзакта в модели является событием, которое должно
произойти в определенный момент модельного времени. Для того чтобы
поддерживать правильную временную последовательность событий, симулятор
имеет таймер модельного времени, который автоматически корректируется в
соответствии с логикой, предписанной моделью.
Таймер GPSS / world имеет следующие особенности:
1) единица модельного времени определяется разработчиком модели,
который задает все временные интервалы в одних и тех же, выбранных им
единицах;
2) симулятор не анализирует состояние модели в каждый следующий момент
модельного времени (отстоящий от текущего на единицу модельного времени),
а продвигает таймер к моменту времени, когда происходит ближайшее
следующее событие.
Центральной задачей, выполняемой симулятором, является определение
того, какой транзакт надо выбрать следующим для продвижения в модели,
когда его предшественник прекратил свое продвижение. С этой целью
симулятор рассматривает каждый транзакт как элемент некоторого списка. В
относительно простых моделях используются лишь два основных списка:
список текущих событий и список будущих событий.
Список текущих событий включает в себя те транзакты, планируемое время
продвижения которых равно или меньше текущего модельного времени (к
последним относятся транзакты, движение которых было заблокировано ранее).
Он организуется в порядке убывания приоритетов транзактов, а в пределах
каждого уровня приоритета – в порядке поступления транзактов.
Список будущих событий включает в себя транзакты, планируемое время
продвижения которых больше текущего времени, т.е. события, связанные с
продвижением этих транзактов, должны произойти в будущем. Этот список
организуется в порядке возрастания планируемого времени продвижения
транзактов.
Симулятор GPSS / world помещает транзакты в зависимости от условий в
модели в тот или иной список и переносит транзакты из списка в список,
просматривает списки, выбирая следующий транзакт для обработки,
корректирует таймер модельного времени после обработки всех транзактов в
списке текущих событий.
4.2. Основные блоки GPSS/ WORLD и связанные с ними объекты
4. 2.1. Блоки, связанные с транзактами
С транзактами связаны блоки создания, уничтожения, задержки
транзактов, изменения их атрибутов и создания копий транзактов.
Для создания транзактов, входящих в модель, служит блок
GENERATE (генерировать), имеющий следующий формат:
имя  GENERATE A,B,C,D,E. В поле A задается среднее значение
интервала времени между моментами поступления в модель двух

37
последовательных транзактов. Если этот интервал постоянен, то поле B не
используется. Если же интервал поступления является случайной величиной,
то в поле B указывается модификатор среднего значения, который может быть
задан в виде модификатора-интервала или модификатора-функции.
Модификатор-интервал используется, когда интервал поступления
транзактов является случайной величиной с равномерным законом
распределения вероятностей. В этом случае в поле B может быть задан любой
СЧА, кроме ссылки на функцию, а диапазон изменения интервала
поступления имеет границы A-B, A+B. Например, блок
GENERATE 100,40 создает транзакты через случайные интервалы времени,
равномерно распределенные на отрезке [60;140].
Модификатор-функция используется, если закон распределения интервала
поступления отличен от равномерного. В этом случае в поле B должна быть
записана ссылка на функцию (ее СЧА), описывающую этот закон, и
случайный интервал поступления определяется как целая часть произведения
поля A (среднего значения) на вычисленное значение функции.
В поле C задается момент поступления в модель первого транзакта. Если это
поле пусто или равно 0, то момент появления первого транзакта определяется
операндами A и B.
Поле D задает общее число транзактов, которое должно быть создано блоком
GENERATE. Если это поле пусто, то блок генерирует неограниченное число
транзактов до завершения моделирования.
В поле E задается приоритет, присваиваемый генерируемым транзактам.
Число уровней приоритетов неограниченно, причем самый низкий приоритет –
нулевой. Если поле E пусто, то генерируемые транзакты имеют нулевой
приоритет.
Транзакты имеют ряд стандартных числовых атрибутов. Например, СЧА с
названием PR позволяет ссылаться на приоритет транзакта. СЧА с названием
M1 содержит так называемое  резидентное время  транзакта, т.е. время,
прошедшее с момента входа транзакта в модель через блок GENERATE. СЧА
с названием XN1 содержит внутренний  номер транзакта, который является
уникальным и позволяет всегда отличить один транзакт от другого. В отличие
от СЧА других объектов, СЧА транзактов не содержат ссылки на имя или
номер транзакта. Ссылка на СЧА транзакта всегда относится к активному
транзакту, т.е. транзакту, обрабатываемому в данный момент симулятором.
Важными стандартными числовыми атрибутами транзактов являются
значения их параметров. Любой транзакт может иметь неограниченное число
параметров, содержащих те или иные числовые значения. Ссылка на этот
СЧА транзактов всегда относится к активному транзакту и имеет вид Pj или
Р$ имя, где j  и имя – номер и имя параметра соответственно. Такая ссылка
возможна только в том случае, если параметр с указанным номером или именем
существует, т.е. в него занесено какое-либо значение.
Для присваивания параметрам начальных значений или изменения этих
значений служит блок ASSIGN (присваивать), имеющий следующий формат:

38
 имя  ASSIGN A,B,C
В поле A указывается номер или имя параметра, в который заносится
значение операнда B. Если в поле A после имени (номера) параметра стоит знак
+ или –, то значение операнда B добавляется или вычитается из текущего
содержимого параметра. В поле С может быть указано имя или номер
функции-модификатора, действующей аналогично функции-модификатору в
поле B блока GENERATE.
Например, блок
ASSIGN 5,0
записывает в параметр с номером 5 значение 0, а блок
ASSIGN COUNT+,1
добавляет 1 к текущему значению параметра с именем COUNT.
Для записи текущего модельного времени в заданный параметр транзакта
служит блок MARK (отметить), имеющий следующий формат:
 имя  MARK A
В поле A указывается номер или имя параметра транзакта, в который
заносится текущее модельное время при входе этого транзакта в блок MARK.
Содержимое этого параметра может быть позднее использовано для
определения  транзитного времени  пребывания транзакта в какой-то части
модели с помощью СЧА с названием MP.
Например, если на входе участка модели поместить блок
MARK MARKER,
то на выходе этого участка СЧА MP$MARKER будет содержать разность
между текущим модельным временем и временем, занесенным в параметр
MARKER блоком MARK.
Если поле A блока MARK пусто, то текущее время заносится на место
отметки времени входа транзакта в модель, используемой при определении
резидентного времени транзакта с помощью СЧА M1.
Для изменения приоритета транзакта служит блок PRIORITY (приоритет),
имеющий следующий формат:
  имя PRIORITY A,B
В поле A записывается новый приоритет транзакта. В поле B может
содержаться ключевое слово BU, при наличии которого транзакт, вошедший в
блок, помещается в списке текущих событий после всех остальных
транзактов новой приоритетной группы, и список текущих событий
просматривается с начала. Использование такой возможности будет
рассмотрено ниже.
Для удаления транзактов из модели служит блок TERMINATE
(завершить), имеющий следующий формат:
  имя  TERMINATE A
Значение поля A указывает, на сколько единиц уменьшается содержимое
так называемого счетчика завершений при входе транзакта в данный блок
TERMINATE. Если поле A не определено, то оно считается равным 0, и

39
транзакты, проходящие через такой блок, не уменьшают содержимого
счетчика завершений.
Начальное значение счетчика завершений устанавливается управляющим
оператором START (начать), предназначенным для запуска прогона модели.
Поле A этого оператора содержит начальное значение счетчика завершений.
Прогон модели заканчивается, когда содержимое счетчика завершений
обращается в 0. Таким образом, в модели должен быть хотя бы один блок
TERMINATE с непустым полем A, иначе процесс моделирования никогда не
завершится.
Текущее значение счетчика завершений доступно программисту через
системный СЧА TG1.
Участок блок-схемы модели, связанный с парой блоков GENERATE-
ТERMINATE, называется сегментом. Простые модели могут состоять из
одного сегмента, в сложных моделях может быть несколько сегментов.
Например, простейший сегмент модели, состоящий всего из двух блоков
GENERATE и TERMINATE и приведенный на рис. 4.1, в совокупности с
управляющим оператором START моделирует процесс создания случайного
потока транзактов, поступающих в модель со средним интервалом в 100
единиц модельного времени, и уничтожения этих транзактов. Начальное
значение счетчика завершений равно 1000. Каждый транзакт проходящий
через блок TERMINATE, вычитает из счетчика единицу, и таким образом
моделирование завершится, когда тысячный по счету транзакт войдет в блок
TERMINATE. При этом точное значение таймера в момент завершения
прогона непредсказуемо. Следовательно, в приведенном примере
продолжительность прогона устанавливается не по модельному времени, а по
количеству транзактов, прошедших через модель (рис.4.1).
GENERATE 100,40
TERMINATE 1
START 1000
Рис. 4.1. Генерация равномерно распределенных транзактов

Если необходимо управлять продолжительностью прогона по модельному


времени, то в модели используется специальный сегмент, называемый
сегментом таймера (рис.4.2)
GENERATE 100,40
TERMINATE

GENERATE 100000
TERMINATE 1
START 1

Рис. 4.2. Два сегмента программы

Например, в модели из двух сегментов, приведенной на рис. 4.2, первый


(основной) сегмент выполняет те же функции, что и в предыдущем примере.
40
Заметим, однако, что поле A блока TERMINATE в первом сегменте пусто, т.е.
уничтожаемые транзакты не уменьшают содержимого счетчика завершений.
Во втором сегменте блок GENERATE создаст первый транзакт в момент
модельного времени, равный 100000. Но этот транзакт окажется и последним в
данном сегменте, так как, войдя в блок TERMINATE, он обратит в 0
содержимое счетчика завершений, установленное оператором START равным
1. Таким образом, в этой модели гарантируется завершение прогона в
определенный момент модельного времени, а точное количество транзактов,
прошедших через модель, непредсказуемо.
В приведенных примерах транзакты, входящие в модель через блок
GENERATE, в тот же момент модельного времени уничтожались в блоке
TERMINATE. В моделях систем массового обслуживания заявки
обслуживаются приборами (каналами) СМО в течение некоторого
промежутка времени прежде, чем покинуть СМО. Для моделирования такого
обслуживания, т.е. для задержки транзактов на определенный отрезок
модельного времени, служит блок ADVANCE (задержать), имеющий
следующий формат:
 имя  ADVANCE A,B
Операнды в полях A и B имеют тот же смысл, что и в соответствующих
полях блока GENERATE. Следует отметить, что транзакты, входящие в блок
ADVANCE, переводятся из списка текущих событий в список будущих
событий, а по истечении вычисленного времени задержки возвращаются назад,
в список текущих событий, и их продвижение по блок-схеме продолжается.
Если вычисленное время задержки равно 0, то транзакт в тот же момент
модельного времени переходит в следующий блок, оставаясь в списке текущих
событий.
Например, в сегменте, приведенном на рис. 4.3, транзакты, поступающие в
модель из блока GENERATE через случайные интервалы времени, имеющие
равномерное распределение на отрезке [60;140], попадают в блок ADVANCE.
Здесь определяется случайное время задержки транзакта, имеющее
равномерное распределение на отрезке [30;130], и транзакт переводится в
список будущих событий. По истечении времени задержки транзакт
возвращается в список текущих событий и входит в блок TERMINATE, где
уничтожается. Заметим, что в списке будущих событий, а значит и в блоке
ADVANCE может одновременно находиться произвольное количество
транзактов.

GENERATE 100,40
ADVANCE 80,50
TERMINATE 1

Рис. 4.3. Сегмент программы с блоком ADVANCE

41
В рассмотренных выше примерах случайные интервалы времени
подчинялись равномерному закону распределения вероятностей. Для
получения случайных величин с другими распределениями в GPSS/ WORLD
используются вычислительные объекты: переменные и функции.
Как известно, произвольная случайная величина связана со случайной
величиной R, имеющей равномерное распределение на отрезке [0;1], через
свою обратную функцию распределения. Для некоторых случайных величин
уравнение связи имеет явное решение, и значение случайной величины с
заданным распределением вероятностей может быть вычислено через R по
формуле. Так, например, значение случайной величины E с показательным
(экспоненциальным) распределением с параметром d вычисляется по формуле:
E= -(1/d) * ln(R)
Напомним, что параметр d имеет смысл величины, обратной
математическому ожиданию E, а, следовательно, 1/d – математическое
ожидание (среднее значение) случайной величины E.
Для получения случайной величины R с равномерным распределением на
отрезке [0;1] в GPSS/PC имеются встроенные генераторы случайных чисел.
Для получения случайного числа путем обращения к такому генератору
достаточно записать системный СЧА RN с номером генератора, например
RN1. Правда, встроенные генераторы случайных чисел GPSS/ WORLD дают
числа не на отрезке [0;1], а целые случайные числа, равномерно
распределенные от 0 до 999, но их нетрудно привести к указанному отрезку
делением на 1000.
Проще всего описанные вычисления в GPSS/ WORLD выполняются с
использованием арифметических переменных. Они могут быть целыми и
действительными. Целые переменные определяются перед началом
моделирования с помощью оператора определения VARIABLE
(переменная), имеющего следующий формат:
  имя  VARIABLE выражение
Здесь  имя - имя переменной, используемое для ссылок на нее, выражение -
арифметическое выражение, определяющее переменную.
Арифметическое выражение представляет собой комбинацию операндов, в
качестве которых могут выступать константы, СЧА и функции, знаков
арифметических операций и круглых скобок. Следует заметить, что знаком
операции умножения в GPSS/PC является символ # (номер). Результат каждой
промежуточной операции в целых переменных преобразуется к целому типу
путем отбрасывания дробной части, и, таким образом, результатом операции
деления является целая часть частного.
Действительные переменные  определяются перед началом
моделирования с помощью оператора определения FVARIABLE, имеющего
тот же формат, что и оператор VARIABLE. Отличие действительных
переменных от целых заключается в том, что в действительных переменных
все промежуточные операции выполняются с сохранением дробной части

42
чисел, и лишь окончательный результат приводится к целому типу
отбрасыванием дробной части.
Арифметические переменные обоих типов имеют единственный СЧА с
названием V, значением которого является результат вычисления
арифметического выражения, определяющего переменную. Вычисление
выражения производится при входе транзакта в блок, содержащий ссылку на
СЧА V с именем переменной.
Действительные переменные могут быть использованы для получения
случайных интервалов времени с показательным законом распределения.
Пусть в модели из примера на рис. 4.3 распределения времени поступления
транзактов и времени задержки должны иметь показательный закон. Это
может быть сделано так, как показано на рис. 4.4.

TARR FVARIABLE -100#LOG((1+RN1)/1000)


TSRV FVARIABLE -80#LOG((1+RN1)/1000)
GENERATE V$TARR
ADVANCE V$TSRV
TERMINATE 1

Рис. 4.4. Генерация случайных интервалов времени с показательным законом


распределения

Переменная с именем TARR задает выражение для вычисления интервала


поступления со средним значением 100, вторая переменная с именем TSRV –
для вычисления времени задержки со средним значением 80. Блоки
GENERATE и ADVANCE содержат в поле A ссылки на соответствующие
переменные, при этом поле B не используется, так как в поле A содержится
случайная величина, не нуждающаяся в модификации.
Большинство случайных величин не может быть получено через
случайную величину R с помощью арифметического выражения. Кроме того,
такой способ является достаточно трудоемким, так как требует обращения к
математическим функциям, вычисление которых требует десятков
машинных операций. Другим возможным способом является использование
вычислительных объектов GPSS/PC типа функция.
Функции используются для вычисления величин, заданных табличными
зависимостями. Каждая функция определяется перед началом моделирования с
помощью оператора определения FUNCTION (функция), имеющего
следующий формат:
 имя  FUNCTION A,B
Здесь  имя - имя функции, используемое для ссылок на нее; A – стандартный
числовой атрибут, являющийся аргументом функции; B – тип функции и
число точек таблицы, определяющей функцию.
Существует пять типов функций. Рассмотрим вначале  непрерывные
числовые функции, тип которых кодируется буквой C. Так, например, в

43
определении непрерывной числовой функции, таблица которой содержит 24
точки, поле B должно иметь значение C24.
При использовании непрерывной функции для генерирования случайных
чисел ее аргументом должен быть один из генераторов случайных чисел RNj.
Так, оператор для определения функции показательного распределения может
иметь следующий вид:
EXP FUNCTION RN1,C24
Особенностью использования встроенных генераторов случайных чисел
RNj в качестве аргументов функций является то, что их значения в этом
контексте интерпретируются как дробные числа от 0 до 0,999999.
Таблица с координатами точек функции располагается в строках,
следующих непосредственно за оператором FUNCTION. Эти строки не
должны иметь поля нумерации. Каждая точка таблицы задается парой Xi
(значение аргумента) и Yi (значение функции), отделяемых друг от друга
запятой. Пары координат отделяются друг от друга символом "/" и
располагаются на произвольном количестве строк. Последовательность
значений аргумента Xi должна быть строго возрастающей.
Как уже отмечалось, при использовании функции в поле B блоков
GENERATE и ADVANCE вычисление интервала поступления или времени
задержки производится путем умножения операнда A на вычисленное
значение функции. Отсюда следует, что функция, используемая для
генерирования случайных чисел с показательным распределением, должна
описывать зависимость y=-ln(x), представленную в табличном виде. Оператор
FUNCTION с такой таблицей, содержащей 24 точки для обеспечения
достаточной точности аппроксимации, имеет следующий вид:
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
Вычисление непрерывной функции производится следующим образом.
Сначала определяется интервал (Xi;Xi+1), на котором находится текущее
значение СЧА-аргумента (в нашем примере - сгенерированное значение RN1).
Затем на этом интервале выполняется линейная интерполяция с
использованием соответствующих значений Yi и Yi+1. Результат
интерполяции усекается (отбрасыванием дробной части) и используется в
качестве значения функции. Если функция служит операндом B блоков
GENERATE или ADVANCE, то усечение результата производится только
после его умножения на значение операнда A.
Использование функций для получения случайных чисел с заданным
распределением дает хотя и менее точный результат за счет погрешностей
аппроксимации, но зато с меньшими вычислительными затратами (несколько
машинных операций на выполнение линейной интерполяции). Чтобы к
погрешности аппроксимации не добавлять слишком большую погрешность

44
усечения, среднее значение при использовании показательных распределений
должно быть достаточно большим (не менее 50). Эта рекомендация относится и
к использованию переменных.
Функции всех типов имеют единственный СЧА с названием FN,
значением которого является вычисленное значение функции. Вычисление
функции производится при входе транзакта в блок, содержащий ссылку на
СЧА FN с именем функции. Заменим в примере на рис. 4.4 переменные TARR
и TSRV на функцию EXP (рис. 4.5) Поскольку в обеих моделях используется
один и тот же генератор RN1, интервалы поступления и задержки,
вычисляемые в блоках GENERATE и ADVANCE, должны получиться весьма
близкими, а может быть и идентичными. При большом количестве транзактов,
пропускаемых через модель (десятки и сотни тысяч), разница в скорости
вычислений должна стать заметной.
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ADVANCE 80,FN$EXP
TERMINATE 1

Рис. 4.5. Описание экспоненциальной функции

Особенностью непрерывных функций является то, что они принимают


"непрерывные" (но только целочисленные) значения в диапазоне от Y1 до Yn ,
где n - количество точек таблицы. В отличие от них дискретные числовые
функции, тип которых кодируется буквой D в операнде B оператора
определения функции, принимают только отдельные (дискретные) значения,
заданные координатами Yi в строках, следующих за оператором определения
FUNCTION. При вычислении дискретной функции текущее значение СЧА –
аргумента, указанного в поле A оператора FUNCTION, сравнивается по
условию <= последовательно со всеми значениями упорядоченных по
возрастанию координат Xi до выполнения этого условия при некотором i.
Значением функции становится целая часть соответствующего значения Yi.
Если последовательность значений аргумента таблицы с координатами
точек функции представляет числа натурального ряда (1,2,3,...,n), то
такую дискретную функцию с целью экономии памяти и машинного времени
удобно определить как списковую числовую функцию (тип L).
Пусть в модели на рис. 4.5 заявки, моделируемые транзактами, с равной
вероятностью 1/3 должны относиться к одному из трех классов (типов) 1,2 и 3,
а среднее время задержки обслуживания заявок каждого типа должно
составлять соответственно 70, 80 и 90 единиц модельного времени. Это может
быть обеспечено способом, показанным на рис. 4.6.

45
В блоке ASSIGN в параметр TYPE каждого сгенерированного транзакта
заносится тип заявки, получаемый с помощью дискретной функции CLASS.
Аргументом функции является генератор случайных чисел RN1, а координаты
ее таблицы представляют собой обратную функцию распределения дискретной
случайной величины "класс заявки" с одинаковыми вероятностями каждого из
трех значений случайной величины.
Поле A блока ADVANCE содержит ссылку на списковую функции
MEAN, аргументом которой служит параметр TYPE входящих в блок
транзактов. В зависимости от значений этого параметра (типа заявки)
среднее время задержки принимает одно из трех возможных значений
функции MEAN: 70, 80 или 90 единиц.
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
CLASS FUNCTION RN1,D3
.333,1/.667,2/1,3
MEAN FUNCTION P$TYPE,L3
1,70/2,80/3,90
GENERATE 100,FN$EXP
ASSIGN TYPE,FN$CLASS
ADVANCE FN$MEAN,FN$EXP
TERMINATE 1

Рис. 4.6. Использование дискретных и списковых функций

Следует отметить, что в данном примере можно было бы не


использовать параметр TYPE и обойтись одной дискретной функцией,
возвращающей с равной вероятностью одно из трех возможных значений
среднего времени задержки. Однако использование параметров дает некоторые
дополнительные возможности, которые будут рассмотрены позже.
Транзакты могут входить в модель не только через блок GENERATE,
но и путем создания копий уже существующих транзактов в блоке SPLIT
(расщепить), имеющем следующий формат:
 имя  SPLIT A,B,C
В поле A задается число создаваемых копий исходного транзакта (родителя),
входящего в блок SPLIT. После выхода из блока SPLIT транзакт-родитель
направляется в следующий блок, а все транзакты-потомки поступают в блок,
указанный в поле B. Если поле B пусто, то все копии поступают в следующий
блок. Транзакт-родитель и его потомки, выходящие из блока SPLIT, могут быть
пронумерованы в параметре, имя или номер которого указаны в поле C. Если
у транзакта-родителя значение этого параметра при входе в блок SPLIT было

46
равно k, то при выходе из блока оно станет равным k+1, а значения этого
параметра у транзактов-потомков окажутся равными k+2, k+3 и т.д.
Например, блок
SPLIT 5,MET1,NUM
создает пять копий исходного транзакта и направляет их в блок с именем
MET1. Транзакт-родитель и потомки нумеруются в параметре с именем NUM.
Если, например, перед входом в блок значение этого параметра у транзакта-
родителя было равно 0, то при выходе из блока оно станет равным 1, а у
транзактов-потомков значения параметра NUM будут равны 2, 3, 4, 5 и 6.

4.2.2. Блоки, связанные с аппаратными объектами


Все примеры моделей, рассматривавшиеся выше, пока еще не являются
моделями систем массового обслуживания, так как в них не учтена основная
особенность СМО: конкуренция заявок на использование некоторых
ограниченных ресурсов системы. Все транзакты, входящие в эти модели через
блок GENERATE, немедленно получают возможность "обслуживания" в блоке
ADVANCE, который никогда не "отказывает" транзактам во входе, сколько
бы транзактов в нем ни находилось.
Для моделирования ограниченных ресурсов СМО в модели должны
присутствовать аппаратные объекты: одноканальные или многоканальные
устройства. Одноканальные устройства создаются в текущей модели при
использовании блоков SEIZE (занять) и RELEASE (освободить), имеющих
следующий формат:
имя   SEIZE A
имя  RELEASE A
В поле A указывается номер или имя устройства. Если транзакт входит в
блок SEIZE, то устройство, указанное в поле A, становится занятым и остаётся
в этом состоянии до тех пор, пока этот же транзакт не пройдёт
соответствующий блок RELEASE, освобождая устройство. Если устройство,
указанное в поле A блока SEIZE, уже занято каким-либо транзактом, то
никакой другой транзакт не может войти в этот блок и остаётся в предыдущем
блоке. Транзакты, задержанные (заблокированные) перед блоком SEIZE,
остаются в списке текущих событий и при освобождении устройства
обрабатываются с учетом приоритетов и очередности поступления. Каждое
устройство имеет следующие СЧА: F - состояние усройства (0 - свободно,1 -
занято); FR - коэффициент использования в долях 1000; FC - число занятий
устройства; FT - целая часть среднего времени занятия устройства.
Воспользуемся блоками SEIZE и RELEASE для моделирования
одноканальной СМО с ожиданием (рис. 4.7). Теперь блок ADVANCE
находится между блоками SEIZE и RELEASE, моделирующими занятие и
освобождение устройства с именем SYSTEM, и поэтому в нем может
находиться только один транзакт. Транзакты, выходящие из блока GENERATE
в моменты занятости устройства, не смогут войти в блок SEIZE и будут
оставаться в блоке GENERATE, образуя очередь в списке текущих событий.

47
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
SEIZE SYSTEM
ADVANCE 80,FN$EXP
RELEASE SYSTEM
TERMINATE 1

Рис. 4.7. Моделирование одноканальной СМО

Для моделирования захвата (прерывания) одноканального устройства


вместо блоков SEIZE и RELEASE используются соответственно блоки
PREEMPT (захватить) и RETURN (вернуть). Блок PREEMPT имеет
следующий формат:
 имя PREEMPT A,B,C,D,E
В поле A указывается имя или номер устройства, подлежащего захвату. В
поле B кодируется условие захвата. Если это поле пусто то захват возникает,
если обслуживаемый транзакт сам не является захватчиком. Если же в поле B
записан операнд PR, то захват возникает, если приоритет транзакта-
захватчика выше, чем приоритет обслуживаемого транзакта.
Поля C, D и E определяют поведение транзактов, обслуживание которых
было прервано. Поле C указывает имя блока, в который будет направлен
прерванный транзакт. В поле D может быть указан номер или имя параметра
прерванного транзакта, в который записывается время, оставшееся этому
транзакту до завершения обслуживания на устройстве. При отсутствии
операнда в поле E прерванный транзакт сохраняет право на автоматическое
восстановление на устройстве по окончании захвата. Если же в поле E указан
операнд RE, то транзакт теряет такое право.
Блок RETURN имеет единственный операнд A, содержащий имя или номер
устройства, подлежащего освобождению от захвата.
Блоки PREEMPT и RETURN могут быть использованы для моделирования
СМО с абсолютными приоритетами. В простейших случаях, при одном уровне
захвата, в блоке PREEMPT используется единственный операнд A. При этом
прерванный транзакт переводится симулятором из списка будущих событий в
так называемый  список прерываний  устройства, а по окончании захвата
устройства возвращается в список будущих событий с предварительно
вычисленным временем занятия устройства для продолжения обслуживания.
Для создания в модели  многоканальных устройств (МКУ)  они должны
быть предварительно определены с помощью операторов определения
STORAGE (память), имеющих следующий формат:
имя   STORAGE A

48
Здесь  имя - имя МКУ, используемое для ссылок на него; A – емкость
(количество каналов обслуживания) МКУ, задаваемая константой.
Для занятия и освобождения каналов обслуживания МКУ используется
пара блоков ENTER (войти) и LEAVE (покинуть), имеющих следующий
формат:
 имя   ENTER A,B
 имя  LEAVE A,B
В поле A указывается номер или имя МКУ, в поле B –  число каналов МКУ,
занимаемых при входе в блок ENTER или освобождаемых при входе в блок
LEAVE. Обычно поле B пусто, и в этом случае по умолчанию занимается или
освобождается один канал. При входе транзакта в блок ENTER текущее
содержимое МКУ увеличивается на число единиц, указанное в поле B .   Если
свободная емкость МКУ меньше значения поля B, то транзакт не может войти
в блок ENTER и остается в предыдущем блоке, образуя очередь в списке
текущих событий.
При входе транзакта в блок LEAVE текущее содержимое МКУ уменьшается
на число единиц, указанное в поле B. Не обязательно освобождается такое же
число каналов МКУ, какое занималось при входе данного транзакта в блок
ENTER, однако текущее содержимое МКУ не должно становиться
отрицательным. Многоканальные устройства имеют следующие СЧА: S –
текущее содержимое МКУ; R – свободная емкость МКУ; SR – коэффициент
использования в долях 1000; SA – целая часть среднего содержимого МКУ;
SM -максимальное содержимое МКУ; SC – число занятий МКУ; ST – целая
часть среднего времени занятия МКУ. Воспользуемся блоками ENTER-LEAVE
и оператором STORAGE для моделирования двухканальной СМО с ожиданием
(рис. 4.8). Если текущее содержимое МКУ с именем STO2 меньше 2, т.е. в
блоке ADVANCE находится один или ни одного транзакта, то очередной
транзакт, поступающий в модель через блок GENERATE, может войти в блок
ENTER и затем в блок ADVANCE. Если же текущее содержимое МКУ равно 2,
то очередной транзакт остается в блоке GENERATE, образуя очередь в списке
текущих событий. По истечении задержки одного из двух обслуживаемых
транзактов в блоке ADVANCE и после входа его в блок LEAVE первый из
заблокированных транзактов сможет войти в блок ENTER.
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1

49
Рис. 4.8. Моделирование двухканальной СМО
К аппаратным объектам относятся также логические
переключатели (ЛП), которые могут находиться в двух состояниях:
"включено" и "выключено". В начале моделирования все ЛП находятся в
состоянии "выключено". Отдельные переключатели могут быть установлены в
начальное состояние "включено" с помощью оператора INITIAL
(инициализировать), имеющего следующий формат:
INITIAL LS$ имя
INITIAL LS j
Здесь имя и j - соответственно имя и номер ЛП, устанавливаемого в
начальное состояние "включено".
Для включения, выключения и инвертирования логических переключателей
в процессе моделирования служит блок LOGIC (установить ЛП), имеющий
следующий формат:
 имя  LOGIC X A
В поле A указывается имя или номер ЛП. Вспомогательный операнд X
указывает вид операции, которая производится с логическим переключателем
при входе транзакта в блок: S – включение, R – выключение, I –
инвертирование. Например:
LOGIC S 9
LOGIC R FLAG
Логические переключатели имеют единственный СЧА с названием LS.
Значение СЧА равно 1, если ЛП включен, и 0, если он выключен.
4.2.3. Блоки для сбора статистических данных
Два последних примера представляют собой законченные модели
одноканальной и многоканальной СМО с ожиданием. Однако такие модели
разрабатываются обычно для исследования различных характеристик,
связанных с ожиданием заявок в очереди: длины очереди, времени ожидания
и т.п., а в приведенных примерах очередь транзактов образуется в списке
текущих событий и недоступна исследователю. Для регистрации
статистической информации о процессе ожидания транзактов в модели должны
присутствовать статистические объекты: очереди или таблицы.
Объекты типа очередь создаются в модели путем использования блоков
- регистраторов очередей: QUEUE (стать в очередь) и DEPART (уйти из
очереди), имеющих следующий формат:
 имя   0QUEUE A,B
 имя DEPART A,B
В поле A указывается номер или имя очереди, а в поле B – число единиц, на
которое текущая длина очереди увеличивается при входе транзакта в блок
QUEUE или уменьшается при входе транзакта в блок DEPART. Обычно поле B
пусто, и в этом случае его значение по умолчанию принимается равным 1.
Для сбора статистики о транзактах, заблокированных перед каким-либо
блоком модели, блоки QUEUE и DEPART помещаются перед и после этого

50
блока соответственно. При прохождении транзактов через блоки QUEUE и
DEPART соответствующим образом изменяются следующие СЧА очередей:
Q – текущая длина очереди;
QM – максимальная длина очереди;
QA – целая часть средней длины очереди;
QC – общее число транзактов, вошедших в очередь;
QZ – число транзактов, прошедших через очередь без ожидания (число
"нулевых" входов);
QT – целая часть среднего времени ожидания с учетом "нулевых" входов;
QX – целая часть среднего времени ожидания без учета "нулевых" входов.
Дополним приведенную на рис. 4.7 модель одноканальной СМО блоками
QUEUE и DEPART (рис. 4.9). Теперь транзакты, заблокированные перед
блоком SEIZE из-за занятости устройства SYSTEM, находятся в блоке
QUEUE, внося свой вклад в статистику о времени ожидания, накапливаемую в
статистическом объекте типа "очередь" с именем LINE. При освобождении
устройства первый из заблокированных транзактов войдет в блок SEIZE и
одновременно в блок DEPART, прекращая накопление статистики об
ожидании этого транзакта.
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
QUEUE LINE
SEIZE SYSTEM
DEPART LINE
ADVANCE 80,FN$EXP
RELEASE SYSTEM
TERMINATE 1

Рис. 4.9. Модель одноканальной СМО блоками QUEUE и DEPART

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


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

51
 имя   QTABLE A,B,C,D
Здесь имя – имя таблицы, используемое для ссылок на нее; A – номер или
имя очереди, распределение времени ожидания, в которой необходимо
получить; B – верхняя граница первого частотного интервала таблицы; C -
ширина частотных интервалов; D – количество частотных интервалов.
Диапазон всевозможных значений времени ожидания в очереди, указанной в
поле A, разбивается на ряд частотных интервалов, количество которых
указано в поле D. Первый из этих интервалов имеет ширину от минус
бесконечности до величины, указанной в поле B, включительно. Второй
интервал включает значения, большие, чем величина первой границы в поле B,
но меньшие или равные B+C, и т.д. Все промежуточные интервалы имеют
одинаковую ширину, указанную в поле C. Наконец, последний интервал
включает все значения, большие, чем последняя граница. Значения операндов
B, C и D должны задаваться целыми константами. Операнд B может быть
неположительным, хотя для Q-таблицы это не имеет смысла, так как время не
может быть отрицательным. Операнды C и D должны быть строго
положительными.
При прохождении транзакта через блоки QUEUE и DEPART его время
ожидания фиксируется, и к счетчику частотного интервала таблицы, в который
попало это время, добавляется 1. Одновременно в таблице накапливается
информация для вычисления среднего значения и среднеквадратического
отклонения (корня из дисперсии) времени ожидания. По окончании
моделирования среднее значение и среднеквадратическое отклонение времени
ожидания, а также счетчики попаданий в различные частотные интервалы
выводятся в стандартный отчет GPSS/ WORLD.
Таблицы, как и другие объекты GPSS/ WORLD, имеют СЧА:
ТС – общее число транзактов, вошедших в очередь, связанную с таблицей;
TB -целая часть среднего времени ожидания в очереди;
TD - целая часть среднеквадратического отклонения времени ожидания в
очереди.
Дополним модель из примера на рис.4.9 оператором QTABLE для получения
распределения времени ожидания в очереди с именем LINE (рис.4.10).

WTIME QTABLE LINE,50,50,10


EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
QUEUE LINE
SEIZE SYSTEM
DEPART LINE
ADVANCE 80,FN$EXP

52
RELEASE SYSTEM
TERMINATE 1

Рис.4.10. Пример GPSS – программы с операторами QUEUE и DEPART

Оператор определения таблицы с именем WTIME разбивает ось времени на


10 частотных интервалов. Первый интервал включает значения от 0 до 50,
второй – от 50 до 100, третий – от 100 до 150 и т.д. Последний, десятый,
интервал включает значения, превышающие 450.
Если, например, время ожидания некоторого транзакта в очереди
составило 145 единиц модельного времени, то к счетчику третьего
частотного интервала будет добавлена 1. Следует заметить, что информация в
таблицу с именем WTIME заносится автоматически, при входе транзактов в
блоки QUEUE и DEPART, и никаких специальных мер для этого принимать не
требуется.
Таблицы в GPSS/ WORLD могут использоваться в общем случае не только
для табулирования времени ожидания в очереди, но и для получения
выборочных распределений произвольных СЧА любых объектов модели. Для
определения таблиц служит оператор TABLE (таблица), формат которого
совпадает с форматом оператора QTABLE. Отличие состоит лишь в том, что в
поле A оператора TABLE записывается стандартный числовой атрибут,
выборочное распределение которого необходимо получить, а операнды B, C и
D определяют разбиение на частотные интервалы диапазона всевозможных
значений этого СЧА.
Занесение информации в таблицу, определяемую оператором TABLE, уже не
может быть выполнено симулятором автоматически, как в случае Q-таблиц.
Для этого используется специальный блок TABULATE (табулировать),
имеющий следующий формат:
 имя   TABULATE A
В поле A указывается номер или имя таблицы, определенной
соответствующим оператором TABLE.
При входе транзакта в блок TABULATE текущее значение табулируемого
аргумента таблицы, указанного в поле A оператора TABLE, носится в нее в
соответствии с заданным в операторе TABLE разбиением области значений
аргумента на частотные интервалы. Одновременно корректируются текущие
значения СЧА таблицы: счетчик входов в таблицу TC, среднее время
ожидания TB и среднеквадратическое отклонение времени ожидания TD.
Пусть, например, в модели многоканальной СМО, приведенной на рис. 4.8,
надо получить распределение времени пребывания заявок в системе,
включающего время ожидания в очереди и время обслуживания. Это может
быть обеспечено способом, показанным на рис. 4.11. Оператор TABLE
определяет таблицу с именем TTIME, аргументом которой служит СЧА М1 -
время пребывания транзакта в модели. В рассматриваемой модели значение
СЧА M1 одновременно будет являться временем пребывания транзакта в СМО

53
в том случае, если занесение информации в таблицу производить перед
выходом транзакта из модели. Поэтому блок TABULATE, заносящий
информацию о времени пребывания каждого транзакта в модели в таблицу
TTIME, располагается перед блоком TERMINATE. Диапазон возможных
значений времени пребывания транзакта в модели разбит в операторе TABLE
на 12 частотных интервалов, ширина которых (кроме последнего) равна 100
единицам модельного времени.
TTIME TABLE M1,100,100,12
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TABULATE TTIME
TERMINATE 1

Рис. 4.11. Пример использования таблиц

4.2.4. Блоки, изменяющие маршруты транзактов


В приведенных выше примерах транзакты, выходящие из любого блока,
всегда поступали в следующий блок. В более сложных моделях возникает
необходимость направления транзактов к другим блокам в зависимости от
некоторых условий. Эту возможность обеспечивают блоки изменения
маршрутов транзактов.
Блок TRANSFER (передать) служит для передачи входящих в него
транзактов в блоки, отличные от следующего. Блок имеет девять режимов
работы, из которых рассмотрим здесь лишь три наиболее часто
используемых. В этих трех режимах блок имеет следующий формат:
 имя   TRANSFER A,B,C
Смысл операндов в полях A, B и C зависит от режима работы блока. В
режиме безусловной передачи поля A и C пусты, а в поле B указывается имя
блока, к которому безусловным образом направляется транзакт, вошедший в
блок TRANSFER. Например:
TRANSFER ,FINAL
В режиме статистической передачи операнд A определяет вероятность, с
которой транзакт направляется в блок, указанный в поле C. С вероятностью 1-A
транзакт направляется в блок, указанный в поле B (в следующий, если поле B
пусто).
Вероятность в поле A может быть задана непосредственно десятичной
дробью, начинающейся с точки. Например, блок
54
TRANSFER .75,THIS,THAT
с вероятностью 0,75 направляет транзакты в блок с именем THAT, а с
вероятностью 0,25 - в блок с именем THIS. Если же поле A начинается не с
десятичной точки и не содержит одного из ключевых слов - признаков других
режимов работы блока, то его значение рассматривается как количество
тысячных долей в вероятности передачи. Например, предыдущий блок
TRANSFER можно записать также в следующем виде:
TRANSFER 750,THIS,THAT
В режиме логической передачи в поле A записывается ключевое слово
BOTH (оба). Транзакт, поступающий в блок TRANSFER, сначала пытается
войти в блок, указанный в поле B (или в следующий блок, если поле B пусто),
а если это не удается, т.е. блок B отказывает транзакту во входе, то в блок,
указанный в поле C. Если и эта попытка неудачна, то транзакт задерживается в
блоке TRANSFER до изменения условий в модели, делающего возможным
вход в один из блоков B или C, причем при одновременно возникшей
возможности предпочтение отдается блоку B. Например:
TRANSFER BOTH,MET1,MET2
Блок TEST (проверить) служит для задержки или изменения
маршрутов транзактов в зависимости от соотношения двух СЧА. Он имеет
следующий формат:
 имя   TEST X A,B,C
Вспомогательный операнд X содержит условие проверки соотношения
между СЧА и может принимать следующие значения: L (меньше); LE (меньше
или равно); E (равно); NE (не равно); GE (больше или равно); G (больше).
Поле A содержит первый, а поле B - второй из сравниваемых СЧА. Если
проверяемое условие A X B выполняется, то блок TEST пропускает транзакт в
следующий блок. Если же это условие не выполняется, то транзакт переходит
к блоку, указанному в поле C, а если оно пусто, то задерживается перед блоком
TEST.
Например, блок
TEST LE P$TIME,C1
не впускает транзакты, у которых значение параметра с именем TIME
больше текущего модельного времени. Блок
TEST L Q$LINE,5,OUT
направляет транзакты в блок с именем OUT, если текущая длина очереди LINE
больше либо равна 5.
Для задержки или изменения маршрута транзактов в зависимости от
состояния аппаратных объектов модели служит блок GATE (впустить),
имеющий следующий формат:
 имя   GATE X A,B
Вспомогательный операнд X содержит код состояния проверяемого
аппаратного объекта, а в поле A указывается имя или номер этого объекта.
Если проверяемый объект находится в заданном состоянии, то блок GATE
пропускает транзакт к следующему блоку. Если же заданное в блоке условие

55
не выполняется, то транзакт переходит к блоку, указанному в поле B, а если
это поле пусто, то задерживается перед блоком GATE.
Операнд X может принимать следующие значения: U (устройство занято);
NU (устройство свободно); I (устройство захвачено); NI (устройство не
захвачено); SE (МКУ пусто); SNE (МКУ не пусто); SF (МКУ заполнено); SNF
(МКУ не заполнено); LS (ЛП включен), LR (ЛП выключен).
Например, блок GATE SNE BUF3 отказывает во входе транзактам,
поступающим в моменты, когда в МКУс именем BUF3 все каналы
обслуживания свободны. Блок GATE LR 4,BLOK2 направляет транзакты в
блок с именем BLOK2, если в момент их поступления ЛП с номером 4
включен. Блоки рассматриваемой группы используются при моделировании
различных СМО с потерями заявок. Воспользуемся, например, блоками
TRANSFER для моделирования двухканальной СМО с отказами и повторными
попытками (рис. 4.12).
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENT1 TRANSFER BOTH,,REFUS
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1

Рис. 4.12. Моделирование СМО с отказами

Транзакты, поступающие в модель, попадают в блок TRANSFER с именем


ENT1, работающий в логическом режиме. Если в момент поступления
транзакта в МКУ STO2 хотя бы один канал свободен, то блок TRANSFER
направит транзакт в следующий блок, т.е. в блок ENTER. Если же в момент
поступления оба канала МКУ заняты, и поэтому блок ENTER отказывает во
входе, транзакт будет направлен в блок TRANSFER с именем REFUS,
работающий в статистическом режиме. С вероятностью 0,9 транзакты из этого
блока передаются в следующий блок, задерживаются в нем на случайное
время и с помощью блока TRANSFER, работающего в безусловном режиме,
передаются вновь на вход модели в блок с именем ENT1. С вероятностью 0,1
транзакты из блока с именем REFUS передаются в блок TERMINATE с именем

56
OUT для уничтожения. Следует заметить, что для уничтожения транзактов,
получивших отказ в обслуживании, понадобился отдельный блок
TERMINATE для фиксации в стандартном отчете количества потерянных
транзактов с помощью счетчика блока с именем OUT (СЧА N$OUT).
Для моделирования той же СМО может быть использован также блок TEST
(рис. 4.13). В этом варианте модели транзакт проходит в блок ENTER, если
текущее число занятых каналов (СЧА S$STO2) меньше 2.

STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENT1 TEST L S$STO2,2,REFUS
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1

Рис. 4.13. Использование блока TEST для моделирования отказов

При использовании блока GATE модель принимает вид, показанный на рис.


4.14. В этом варианте транзакт проходит в блок ENTER, если условие "МКУ
STO2 не заполнено" истинно.

STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
57
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1

Рис. 4.14. Использование блока GATE

4.2.5. Блоки, работающие с памятью


Для хранения в памяти отдельных числовых значений и массивов таких
значений используются сохраняемые величины и матрицы сохраняемых
величин. Сохраняемые величины могут использоваться в модели для хранения
исходных данных, которые надо изменять при различных прогонах модели,
промежуточных значений и результатов моделирования. В начале
моделирования все сохраняемые величины устанавливаются равными 0. Для
установки отличных от 0 начальных значений сохраняемых величин
используется оператор INITIAL, имеющий следующий формат:
INITIAL X$ имя,значение
INITIAL Xj  ,значение
Здесь имя и j - соответственно имя и номер сохраняемой величины, а
значение - присваиваемое ей начальное значение (константа).
Для изменения сохраняемых величин в процессе моделирования служит
блок SAVEVALUE (сохранить величину), имеющий следующий формат:
 имя SAVEVALUE A,B
В поле A указывается номер или имя сохраняемой величины, в которую
записывается значение операнда B. Если в поле A после имени (номера)
сохраняемой величины стоит знак + или – , то значение операнда B
добавляется или вычитается из текущего содержимого сохраняемой величины.
Например:
SAVEVALUE 5,Q$LINE
SAVEVALUE NREF+,1
Сохраняемые величины имеют единственный СЧА с названием X,
значением которого является текущее значение соответствующей сохраняемой
величины.
Изменим пример на рис. 4.14 таким образом, чтобы исходные данные модели
(средний интервал поступления транзактов и среднее время обслуживания)
были заданы сохраняемыми величинами, а результат моделирования
(количество потерянных транзактов) фиксировался также в сохраняемой
величине. Такая модель будет иметь вид, показанный на рис. 4.15.
Матрицы сохраняемых величин дают возможность упорядочить
сохраняемые значения в виде матриц m  n, где m - число строк, n – число
столбцов матрицы. Каждая матрица должна быть перед началом
моделирования определена с помощью оператора MATRIX (определить
матрицу), имеющего следующий формат:

58
 имя   MATRIX A,B,C
Поле A оператора не используется и сохранено в GPSS/ WORLD для
совместимости со старыми версиями GPSS. В полях B и C указываются
соответственно число строк и столбцов матрицы, задаваемые константами,
причем общее число элементов, равное произведению B на C, не должно
превышать 8191. Например, оператор
MTAB MATRIX ,10,2
определяет матрицу с именем MTAB, содержащую десять строк и два
столбца.
INITIAL X$TARR,100
INITIAL X$TSRV,160
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE X$TARR,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
ADVANCE X$TSRV,FN$EXP
LEAVE STO2
OUT TERMINATE 1
REFUS TRANSFER .1,,COUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
COUT SAVEVALUE NREF+,1
TRANSFER ,OUT

Рис. 4.15. Использование сохраняемых величин

В начале моделирования элементы всех определенных матриц


устанавливаются равными 0. Для установки отличных от 0 начальных значений
отдельных элементов матриц используется оператор INITIAL, имеющий
следующий формат:
INITIAL MX$ имя (a,b),значение
INITIAL MXj  (a,b),значение
Здесь имя и j - соответственно имя и номер матрицы; a и b – номера
соответственно строки и столбца, задаваемые константами; значение
присваиваемое элементу матрицы начальное значение, задаваемое также
константой.
Для изменения значений элементов матриц в процессе моделирования
служит блок MSAVEVALUE (сохранить значение элемента матрицы),
имеющий следующий формат:

59
 имя   MSAVEVALUE A,B,C,D
В поле A указывается имя или номер матрицы, после которого, как и в
блоке SAVEVALUE, может стоять знак + или -. В полях B и C указываются
номера соответственно строки и столбца, определяющие изменяемый элемент
матрицы. В поле D указывается величина, используемая для изменения
заданного элемента матрицы. Например:
MSAVEVALUE 5,3,2,X1
MSAVEVALUE MTAB+,P$ROW,P$COL,1

Матрицы имеют единственный СЧА с названием MX, ссылка на который


записывается в следующем виде:
MX$ имя (a,b)
MXj (a,b)
Здесь имя и j - соответственно имя и номер матрицы; a и b – номера
соответственно строки и столбца, задаваемые константами или ссылками на
СЧА параметров транзактов. Например:
MX5(2,1)
MX$MTAB(P$ROW,P$COL)

4.2.6. Блоки для работы со списками пользователя


Так как заблокированные транзакты находятся в списке текущих событий,
то при большом количестве таких транзактов симулятор расходует слишком
много времени на просмотр этого списка с целью выбора очередного транзакта
для продвижения. Для экономии машинного времени заблокированные
транзакты целесообразно помещать в так называемые списки пользователя и
оставлять их там до тех пор, пока не выполнятся условия, позволяющие
дальнейшее продвижение этих транзактов. Кроме того, размещение
ожидающих транзактов в списках пользователя позволяет организовать
различные дисциплины очередей, отличные от дисциплины "раньше пришел -
раньше обслужен", реализованной в списке текущих событий.
Списки пользователя представляют собой некоторые буферы, куда могут
временно помещаться транзакты, выведенные из списка текущих событий. В
отличие от списков текущих и будущих событий транзакты вводятся в списки
пользователя и выводятся из них не автоматически, а в соответствии с логикой
модели с помощью специальных блоков.
Для ввода транзактов в список пользователя служит блок LINK
(ввести в список), который может быть использован в двух режимах:
условном и безусловном. Ограничимся рассмотрением лишь безусловного
режима, в котором блок LINK имеет следующий формат:
 имя LINK A,B
В поле A задается имя или номер списка пользователя, в который
безусловным образом помещается транзакт, вошедший в блок. Поле B
определяет, в какое место списка пользователя следует поместить этот
транзакт. Если в поле B записано ключевое слово FIFO, то транзакт помещается

60
в конец списка, если LIFO - в начало списка. В других случаях транзакты
упорядочиваются в соответствии с вычисленным значением поля B, где
обычно записывается один из СЧА транзактов, таких как PR, M1 или P. Если
поле B содержит СЧА PR, то транзакты упорядочиваются по убыванию
приоритета. В остальных случаях производится упорядочение по возрастанию
указанного СЧА.
Например, блок
LINK 5,FIFO
помещает транзакты в список пользователя с номером 5 в порядке их
поступления в блок. Блок
LINK BUFER,P$ORDER
помещает транзакты в список пользователя с именем BUFER, упорядочивая их
по возрастанию параметра с именем ORDER.
Условия, при которых транзакт помещается в список пользователя, в
безусловном режиме проверяются средствами, предусмотренными
разработчиком модели. Например, направить транзакт в список пользователя в
случае занятости устройства можно так, как показано на рис. 4.16. Если
устройство с именем FAC4 занято, то блок GATE не впускает транзакт в блок
SEIZE, а направляет его в блок LINK с именем WAIT, и транзакт вводится в
конец списка пользователя с именем BUFER.

....................
GATE NU FAC4,WAIT
SEIZE FAC4
....................
WAIT LINK BUFER,FIFO
....................

Рис. 4.16. Обращение к списку пользователя

Для вывода одного или нескольких транзактов из списка пользователя и


помещения их обратно в список текущих событий служит блок UNLINK
(вывести из списка), имеющий следующий формат:
 имя   UNLINK X A,B,C,D,E,F
В поле A указывается имя или номер списка пользователя. Поле B содержит
имя блока, в который переходят выведенные из списка пользователя
транзакты. В поле C указывается число выводимых транзактов или ALL для
вывода всех находящихся в списке транзактов.
Операнды в полях D и E вместе со вспомогательным операндом X
определяют способ и условия вывода транзактов из списка пользователя. Если
поля D и E пусты, то и операнд X не используется, а транзакты выводятся с
начала списка пользователя. Если поле D содержит ключевое слово BACK,
то поле E и вспомогательный операнд X не используются, а транзакты
выводятся с конца списка. В остальных случаях значение поля D

61
интерпретируется как номер параметра транзактов, находящихся в списке
пользователя, а из списка выводится заданное число тех транзактов, у
которых значение этого параметра по отношению к значению операнда в поле
E удовлетворяет условию, заданному вспомогательным операндом X.
Операнд X принимает те же значения, что и в блоке TEST.
В поле F указывается имя блока, куда переходит транзакт, выходящий из
блока UNLINK, если из списка пользователя не выведен ни один транзакт.
Если это поле пусто, то выводящий транзакт переходит в следующий блок
независимо от количества выведенных транзактов.
Например, блок
UNLINK 5,NEXT,1
выводит из списка пользователя с номером 5 один транзакт с начала списка и
направляет его в блок с именем NEXT. Блок
UNLINK BUFER,ENT1,1,BACK
выводит из списка пользователя с именем BUFER один транзакт с конца списка
и направляет его в блок с именем ENT1. Блок
UNLINK E P$UCH,MET2,ALL,COND,P$COND,MET3
выводит из списка пользователя, номер которого записан в параметре UCH
выводящего транзакта, и направляет в блок с именем MET2 все транзакты,
содержимое параметра COND которых равно содержимому одноименного
параметра выводящего транзакта. Если таких транзактов в списке не окажется,
то выводящий транзакт будет направлен в блок с именем MET3, в противном
случае - к следующему блоку.
Следует отметить следующие особенности выполнения блока UNLINK.
Во-первых, если поля D и E содержат ссылки на СЧА транзактов, то поле D
вычисляется относительно транзактов в списке пользователя, а поле E -
относительно активного транзакта. Во-вторых, после вывода транзактов из
списка симулятор продолжает или начинает продвижение транзакта с
наивысшим приоритетом, а при равенстве приоритетов отдает предпочтение
транзакту-инициатору вывода.
Каждый список пользователя имеет следующие СЧА: CH – текущая длина
списка; CA – средняя длина списка (целая часть); CM – максимальная длина
списка; CC – общее число транзактов, вошедших в список; CT – целая часть
среднего времени пребывания транзакта в списке.
Воспользуемся рассмотренными блоками для моделирования
многоканальной СМО с ожиданием транзактов в списке пользователя
(рис.4.17). Если МКУ с именем STO2 не заполнено, блок GATE впускает вновь
прибывший транзакт в блок ENTER, и в МКУ занимается один канал. Если
же МКУ заполнено, то блок GATE направляет транзакт в блок LINK с именем
WAIT, помещающий транзакт в конец списка пользователя с именем BUFER,
моделирующего очередь к МКУ. Каждый транзакт, покидающий МКУ по
завершении обслуживания и освобождающий один канал, проходит блок
UNLINK и выводит один транзакт с начала списка (если список не пуст),
направляя его в блок с именем ENT1 на занятие канала в МКУ.

62
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
GATE SNF STO2,WAIT
ENT1 ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
UNLINK BUFER,ENT1,1
TERMINATE 1
WAIT LINK BUFER,FIFO

Рис.4.17. Списки пользователя в моделировании многоканальной СМО

Заметим, что для изменения дисциплины обслуживания на "позже пришел


- раньше обслужен" достаточно или заменить в поле B блока LINK FIFO на
LIFO, или записать в поле D блока UNLINK операнд BACK. Следует также
обратить внимание на то, что блоки QUEUE-DEPART для сбора статистики об
ожидающих транзактах не используются, так как почти все те же данные
можно получить из статистики о списке пользователя.
Рассмотрим еще один пример, иллюстрирующий использование
списков пользователя для организации нестандартных дисциплин
обслуживания. Пусть в одноканальной СМО с ожиданием требуется
организовать такую дисциплину, при которой приоритет отдается заявкам с
наименьшим временем обслуживания. Такая модель будет иметь вид,
показанный на рис. 4.18. В параметр TSRV поступающих в модель транзактов в
блоке ASSIGN записывается случайное время обслуживания, вычисляемое с
использованием функции EXP. Если устройство SYSTEM свободно, то блок
GATE впускает транзакт в блок SEIZE, и устройство занимается на время
P$TSRV. Если же в момент поступления транзакта устройство занято, то блок
GATE направляет транзакт в блок LINK, который вводит транзакт в список
пользователя LINE, упорядочивая транзакты по возрастанию времени
обслуживания, записанного в параметре P$TSRV. Блок UNLINK по
освобождении устройства выводит с начала списка транзакт с наименьшим
временем обслуживания, обеспечивая тем самым заданную дисциплину.

EXP FUNCTION RN1,C24


0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

63
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV

Рис. 4.18. Использование списков пользователя для организации нестандартных


дисциплин обслуживания

4.3. Управляющие операторы GPSS/ WORLD

Для управления прогоном модели используются управляющие операторы


GPSS/ WORLD. С одним из них – оператором START – мы уже сталкивались
при рассмотрении блока TERMINATE. Оператор START (начать) имеет
следующий формат:
START A,B,C,D
Поле A содержит константу, задающую начальное значение счетчика
завершений. В поле B может быть записано ключевое слово NP -признак
подавления формирования стандартного отчета по завершении моделирования.
Если поле B пусто, то по окончании прогона модели формируется отчет со
стандартной статистической информацией о всех объектах модели. Поле C не
используется и сохранено для совместимости со старыми версиями GPSS.
Поле D может содержать 1 для включения в отчет списков текущих и будущих
событий. Если поле D пусто, то выдача в отчет содержимого этих списков не
производится.
Оператор SIMULATE (моделировать) устанавливает предел реального
времени, отводимого на прогон модели. Если прогон не завершится до
истечения этого времени, то он будет прерван принудительно с выдачей
накопленной статистики в отчет. Оператор SIMULATE имеет единственный
операнд A, содержащий предельное время моделирования в минутах,
задаваемое константой. Оператор размещается перед оператором START,
начинающим лимитированный прогон.
Оператор RMULT (установить значения генераторов) позволяет перед
началом прогона установить начальные значения генераторов случайных чисел
RN, определяющие генерируемые ими последовательности.
Поля A-G оператора могут содержать начальные значения генераторов
соответственно RN1-RN7, задаваемые константами. Начальные значения
генераторов, не установленные операторами RMULT, совпадают с номерами
генераторов.
Оператор RESET (сбросить) сбрасывает всю статистическую информацию,
накопленную в процессе прогона модели. При этом состояние аппаратных,
64
динамических и запоминающих объектов, а также генераторов случайных
чисел сохраняется, и моделирование может быть возобновлено с повторным
сбором статистики. Оператор не имеет операндов. С оператором RESET
связано различие между относительным (СЧА C1) и абсолютным (СЧА AC1)
модельным временем.
Таймер относительного времени C1 измеряет модельное время, прошедшее
после последнего сброса статистики оператором RESET, а таймер
абсолютного времени AC1 – модельное время, прошедшее после начала
первого прогона модели. Если не использовалось ни одного оператора RESET,
то значения этих таймеров совпадают. Оператор RESET устанавливает таймер
C1 в ноль и не влияет на таймер AC1. Оператор RESET используется обычно
при моделировании нестационарных процессов, когда требуется собрать
статистику по отдельным интервалам стационарности или исключить влияние
переходного периода на собираемую статистическую информацию. Пусть,
например, в модели, приведенной на рис. 4.18, необходимо отбросить
статистику, собираемую на первой тысяче транзактов. Это может быть
сделано способом, показанным на рис. 4.19.
Первый оператор START начинает прогон модели длиной 1000 транзактов
(переходный период). Поскольку статистика, накопленная на этом периоде,
не используется, в поле B оператора указан признак подавления формирования
отчета NP. Оператор RESET сбрасывает накопленную статистику, не изменяя
состояния модели. Второй оператор START начинает основной прогон модели
с формированием отчета по завершении прогона.

EXP FUNCTION RN1,C24


0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT

65
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV
START 1000,NP
RESET
START 10000

Рис. 4.19. Пример использования оператора RESET

Оператор CLEAR (очистить) очищает модель, подготавливая ее к


повторному прогону. При этом сбрасывается вся накопленная в предыдущем
прогоне статистика, из модели удаляются все транзакты, и она приводится к
исходному состоянию, как перед первым прогоном. Устанавливаются в ноль
сохраняемые величины и матрицы, что следует учитывать при использовании
этих объектов для хранения исходных данных. Исключение составляют
генераторы случайных чисел, которые не возвращаются к своим начальным
значениям, что позволяет повторить прогон модели на новой
последовательности случайных чисел. Оператор не имеет операндов. Оператор
CLEAR используется обычно для организации нескольких независимых
прогонов модели на разных последовательностях случайных чисел. Перед
повторением прогона можно при необходимости переопределить отдельные
объекты модели, например емкости многоканальных устройств.
Пусть, например, требуется повторить прогон модели, приведенной на рис.
4.17, три раза при емкости МКУ, равной 1, 2 и 3. Это может быть выполнено
так, как показано на рис. 4.20. После каждой очистки модели оператором
CLEAR оператор STORAGE устанавливает новое значение емкости МКУ с
именем STO2. Оператор END (закончить) завершает сеанс  работы с GPSS и
возвращает управление в операционную систему. Оператор не имеет
операндов.

STO2 STORAGE 1
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
GATE SNF STO2,WAIT

66
ENT1 ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
UNLINK BUFER,ENT1,1
TERMINATE 1
WAIT LINK BUFER,FIFO
START 10000
CLEAR
STO2 STORAGE 2
START 10000
CLEAR
STO2 STORAGE 3
START 10000

Рис. 4.20. Использование оператора CLEAR

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


программу, т.е. не имеют номеров строк, а вводятся пользователем
непосредственно с клавиатуры ПК.

4.4. Некоторые приемы конструирования GPSS-моделей


4.4.1. Косвенная адресация
В рассматривавшихся до сих пор примерах моделей ссылки на различные
объекты GPSS/ WORLD производились исключительно по данным им
произвольным именам. Такая адресация объектов удобна, когда речь идет о
небольшом числе объектов каждого типа. Если же число объектов некоторого
типа велико, то во избежание пропорционального роста количества блоков в
модели используют ссылки на эти объекты по их номерам с использованием
так называемой косвенной адресации.
Идея косвенной адресации заключается в том, что каждый транзакт в
некотором своем параметре содержит номер того или иного объекта, а в полях
блоков, адресующихся к объектам, записывается ссылка на этот параметр
транзакта. Проиллюстрируем применение косвенной адресации на примере
следующей модели (рис. 4.21).

EXP FUNCTION RN1,C24


0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
CLASS FUNCTION RN1,D3
.333,1/.667,2/1,3

67
MEAN FUNCTION P$TYPE,L3
1,70/2,80/3,90
PRIOT VARIABLE 4-P$TYPE
STO2 STORAGE 2
WTIME QTABLE LINE,50,50,10
TTIME TABLE M1,100,100,12
GENERATE 100,FN$EXP
ASSIGN TYPE,FN$CLASS
PRIORITY V$PRIOT
QUEUE LINE
QUEUE P$TYPE
ENTER STO2
DEPART P$TYPE
DEPART LINE
ADVANCE FN$MEAN,FN$EXP
LEAVE STO2
TABULATE TTIME
TERMINATE 1

Рис. 4.21. Применение косвенной адресации

Пусть на вход моделируемой многоканальной СМО с двумя каналами


обслуживания поступает пуассоновский поток заявок со средним интервалом
поступления 100 единиц модельного времени. Каждая заявка с равной
вероятностью 1/3 относится к одному из трех классов: 1, 2 или 3, а среднее
время обслуживания заявок каждого типа составляет соответственно 70, 80 и
90 единиц модельного времени. Чем меньше среднее время обслуживания
заявки, тем выше ее приоритет. Необходимо построить модель, позволяющую
оценить средние значения времени ожидания заявок каждого типа, а также
распределения общего времени ожидания в очереди и общего времени
пребывания в системе. Такая модель имеет вид, показанный на рис. 4.21.
Переменная PRIOT служит для вычисления приоритета транзакта как
функции его класса, содержащегося в параметре с именем TYPE. Транзакты
класса 1 (P$TYPE=1) получат приоритет 3, транзакты класса 2 – приоритет 2 и
транзакты класса 3 – приоритет 1.
В блоке ASSIGN в параметр TYPE транзактов записывается класс заявки,
разыгрываемый с помощью функции CLASS. В следующем блоке PRIORITY с
помощью переменной PRIOT определяется приоритет транзактов,
первоначально равный 0 (отсутствует поле E в блоке GENERATE). Далее
каждый транзакт "отмечается" в блоках QUEUE в двух очередях. Очередь с
именем LINE является общей для транзактов всех классов. Входя в следующий
блок QUEUE, транзакт отмечается в очереди с номером 1, 2 или 3 в
зависимости от класса заявки, записанного в параметре TYPE. Аналогичным
образом фиксируется уход из очередей в блоках DEPART. Таким образом, в

68
модели создается четыре объекта типа "очередь": одна очередь с именем LINE
и три с номерами 1, 2 и 3. При этом три последние очереди создаются одной
парой блоков QUEUE-DEPART! В этом и заключается эффект косвенной
адресации.
Как уже отмечалось ранее, каждому имени объекта симулятор сам ставит в
соответствие некоторый номер. При ссылках на объекты одного и того же типа
одновременно по именам и номерам, как это имеет место в рассматриваемом
примере, существует опасность параллельной адресации к одному и тому же
объекту вместо двух разных или, наоборот, к двум разным объектам вместо
одного. Так, в рассматриваемой модели мы, вообще говоря, не знаем, какой
именно номер поставит симулятор в соответствие имени очереди LINE. Если
этот номер будет от 1 до 3, то это приведет к ошибке, так как в модели
окажется не четыре очереди, а три, причем в одну из них будет заноситься
информация как обо всех транзактах, так и дополнительно о транзактах одного
из трех классов. Как избежать такой ситуации?
К счастью, в большинстве случаев об этом можно не заботиться, поскольку
симулятор ставит в соответствие именам объектов достаточно большие
номера, начиная с 10000. При необходимости же можно воспользоваться
оператором EQU, о котором уже говорилось выше, и самостоятельно
сопоставить имени объекта желаемый номер. Например, в рассматриваемой
модели для того чтобы очередь с именем LINE имела номер 4, достаточно
записать оператор:
LINE EQU 4

4.4.2. Обработка одновременных событий


Так как при моделировании в GPSS используются временные интервалы, то
оказывается вполне вероятным одновременное наступление двух или более
событий, причем вероятность этого тем больше, чем крупнее выбранная
единица модельного времени. В некоторых случаях одновременное
наступление нескольких событий, или так называемый временной узел, может
существенно нарушить логику модели.
Рассмотрим, например, еще раз модель на рис. 4.14. Здесь может
образоваться временной узел между событиями "поступление транзакт на
вход модели" и "завершение обслуживания в МКУ". Если непосредственно
перед завершением обслуживания были заняты оба канала МКУ, то обработка
временного узла зависит от последовательности транзактов, соответствующих
событиям, в списке текущих событий.
Предположим, что первым в списке расположен транзакт, освобождающий
канал МКУ. Тогда вначале будет обработан этот транзакт, т.е.событие
"завершение обслуживания в МКУ", причем условие "МКУ STO2 не
заполнено", проверяемое в блоке GATE, станет истинным. Затем будет
обработан транзакт, поступивший на вход модели, в блок GATE с именем
ENT1, из блока GENERATE или из блока TRANSFER в безусловном режиме.
При этом транзакт будет впущен в блок ENTER, и МКУ в тот же момент

69
модельного времени снова окажется заполненным. Такая ситуация при
обработке временного узла представляется естественной.
Предположим теперь, что первым в списке текущих событий расположен
транзакт, поступающий на вход модели. Так как условие "МКУ STO2 не
заполнено" ложно, то блок GATE направит этот транзакт в блок с именем
REFUS. Таким образом, в модели будет зафиксирован отказ в обслуживании,
хотя в этот же момент модельного времени, после обработки транзакта,
освобождающего канал, МКУ станет доступным.
Порядок расположения транзактов, соответствующих рассматриваемым
событиям, в списке текущих событий случаен, и в среднем в половине случаев
временной узел будет обрабатываться не так как нужно. В результате
статистика, связанная с отказами, окажется искаженной.
Для правильной обработки временного узла надо обеспечить такой порядок
расположения транзактов в списке текущих событий, чтобы транзакт,
освобождающий МКУ, всегда располагался первым. Этого можно добиться,
управляя приоритетами транзактов (рис. 4.22).

STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
PRIORITY 1
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1

Рис. 4.22. Обработка временных узлов

Транзакты, поступающие в модель через блок GENERATE, имеют нулевой


приоритет. Такой же приоритет имеют транзакты, получившие отказ в
обслуживании, направленные в блок с именем REFUS и затем повторно
поступающие в блок с именем ENT1. Те же транзакты, что поступают на
обслуживание, повышают приоритет до 1 в блоке PRIORITY, и после выхода
из блока ADVANCE возвращаются из списка будущих в список текущих
событий, располагаясь в начале списка. Таким образом, нужный порядок
транзактов обеспечивается, и временной узел будет обработан правильно.
70
Опасность неверной обработки временных узлов характерна для моделей со
списками пользователя. Рассмотрим, например, еще раз модель на рис. 4.18.
Здесь также возможен временной узел между событиями "приход транзакта" и
"завершение обслуживания транзакта".
Пусть первым в списке текущих событий располагается вновь пришедший
транзакт. Так как устройство с именем SYSTEM занято, то блок GATE
направит этот транзакт в блок LINK, и он будет введен в список пользователя с
именем LINE. Затем будет обработан транзакт, освобождающий устройство.
Проходя через блок UNLINK, он выведет транзакт с начала списка
пользователя и направит его в список текущих событий, где тот продвинется в
блок SEIZE, занимая устройство SYSTEM.
Если же первым в списке текущих событий располагается транзакт,
освобождающий устройство, то он выведет первый из ожидающих транзактов
из списка пользователя в список текущих событий, где тот расположится после
вновь пришедшего транзакта. Поэтому первым будет обработан вновь
пришедший транзакт, который пройдет через блок GATE и займет устройство
"без очереди". Транзакт-очередник, который был выведен из списка
пользователя, "застрянет" перед блоком SEIZE и после очередного
освобождения устройства займет его, нарушая, в свою очередь, логику работы
модели.
Проведенный анализ показывает, что для правильной обработки
временного узла необходимо обеспечить такой порядок расположения
транзактов в списке текущих событий, чтобы первым всегда располагался
вновь пришедший транзакт. В рассматриваемом случае этого можно добиться,
используя блок PRIORITY с операндом BU (рис. 4.23).
Перед освобождением устройства обслуженный транзакт проходит через
блок PRIORITY, который, оставляя неизменным приоритет транзакта PR,
переводит его в конец списка текущих событий. При новом просмотре списка в
случае наличия временного узла начинает обрабатываться вновь поступивший
транзакт. Так как устройство еще занято, он направляется блоком GATE в
список пользователя. При повторной обработке обслуженного транзакта тот
освобождает устройство и выводит очередной транзакт из списка пользователя.
Таким образом, правильная обработка временного узла обеспечивается и в этом
случае.

EXP FUNCTION RN1,C24


0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT

71
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
PRIORITY PR,BU
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV

Рис. 4.23. Развязывание временных узлов с помощью списков пользователя

4.5. Команды GPSS/ WORLD и технология работы с пакетом


4.5.1. Загрузка интегрированной среды, введение в систему GPSS –
программы и ее запуск [4]
GPSS World – это общецелевая система моделирования, значительно облегчаю-
щая процесс создания и выполнения программ имитационного моделирования.
Мы пользуемся студенческой версией системы GPSS World, которую
можно бесплатно скачать с сайта фирмы Minuteman Software по адресу:
www. minutemansoftware /download.
Студенческая версия системы GPSS World так же эффективна, как и
коммерческая, и на сегодняшних персональных компьютерах выполняется в
тысячу раз быстрее, чем работала оригинальная версия GPSS/PC в 1984
году. В процессе инсталляции система GPSSW по умолчанию
устанавливается в каталог C:\Program Files\Minuteman Software\GPSS
World Student Version. Для системы GPSSW требуется IBM – совместимый
компьютер с ОС Windows 95, 98 и выше. Целесообразно использовать
процессоры типа Pentium II и выше. Желательно иметь мышь. Требуется, по
меньшей мере, 32 Мбайт оперативной памяти и 10 Мбайт свободного
пространства на жестком диске (винчестере).
Запуск системы GPSSW можно выполнить несколькими способами.
Первый способ: дважды щелкните мышью по файлу GPSSW.exe в
каталоге, в котором была установлена система. Появится главное окно
системы GPSS World.
Второй способ:
• щелкните мышью по кнопке Пуск ОС Windows. Появится
всплывающее меню;
• щелкните по пункту Программы во всплывающем меню.
Появится
следующее всплывающее меню.
• щелкните по пункту GPSS World Student Version. Откроется
главное окно системы GPSSW (рис.4.24)

72
Рис. 4.24. Главное окно системы GPSS/ World
В первой строке (строке заголовка) главного окна указано название окна
-GPSS World. Во второй строке располагаются пункты главного меню, в
третьей – стандартная панель инструментов. Нижняя строка главного окна –
строка состояния системы, в которой дается краткое описание выделенной
команды.
Система GPSSW имеет иерархическую систему меню, состоящую из
главного меню, систем выпадающих и всплывающих меню (подменю).
Главное меню служит для вызова выпадающих меню. Набор пунктов
главного меню располагается во второй строке главного окна системы GPSS.
Выпадающее меню предназначено для вызова всплывающего меню,
диалогового окна или соответствующей команды. Выпадающее меню
располагается под соответствующим пунктом главного меню.
Всплывающее меню позволяет вызывать другое всплывающее меню,
диалоговое окно или соответствующую команду. Всплывающее меню
располагается справа от выбранного пункта выпадающего меню. Для выбора
пункта всплывающего меню достаточно щелкнуть по нему левой кнопкой
мыши.
4.5.2 Создание новой модели и ее запуск
Для создания новой модели необходимо выбрать пункт File главного
окна. Далее выбираем пункт New. Раскрывается окно, показанное на рис. 4.25.

Рис. 4.25. Окно «Новый документ»


Выбрав пункт Model, получим раскрывшееся окно Untitled Model, в
котором набираем текст GPSS – программы (если необходимо выполнить ранее
созданную программу, нужно открыть соответствующий файл File -> open). На

73
рис. 4.26 приведен текст простейшей программы, содержащей два сегмента:
основной сегмент и сегмент, задающий время моделирования.
RMULT 221
EXPON1 FUNCTION RN1,C24 EXPONENTIAL DISTRIBUTION
0,0/.100,.104/.200,.222/.300,.355/.400,.509/.500,.690/.600,.915/.700,1.200/.750,1.
380/.800,1.600/
.
840,1.830/.880,2.120/.900,2.300/.920,2.520/.940,2.810/.950,2.990/.960,3.200/.970,3.
500/.980,3.900/
.990,4.600/.995,5.300/.998,6.200/.999,7/1,8
GENERATE 2000,FN$EXPON1
Lab1 QUEUE LINE
SEIZE COMP
DEPART LINE
ADVANCE 1500,FN$EXPON1
RELEASE COMP
TERMINATE
GENERATE 500000
TERMINATE 1
start 1

Рис.4.26. Простейшая GPSS – программа

Для запуска программы следует выполнить команду Command главного


окна (рис. 4.24). В выпавшем подменю выполняем пункт Create Simulation.
Производится компиляция программы, а при наличии в ней управляющего
оператора Start программа выполняется и выдается стандартный отчет о ее
выполнении.
4.5.3. Прогон модели и стандартный отчет о выполнении программы
После того как исходная программа модели введена с клавиатуры или
считана с диска и оттранслирована, в памяти ПК создалась текущая модель, и
теперь можно выполнить ее прогон. Для этого в командную строку необходимо
ввести управляющий оператор START (если он отсутствует в тексте
программы), указав в поле A соответствующее начальное значение счетчика
завершений. После нажатия клавиши Enter оператор START переносится в окно
данных и прогон модели начинается. Об этом сигнализирует сообщение
Simulation in Progress 
Если процесс моделирования длится достаточно долго, за ним можно
наблюдать, раскрывая последовательно окна: Window -> Simulation Window и
далее какое – либо из интересующих нас окон. Вид окна Block Window,
полученный при выполнении программы, представленной выше, приведен на
рис. 4.27.

74
Рис. 4.27. Окно « Block Window»

Если процесс моделирования длится слишком долго, его можно прервать,


нажав клавишу HALT.

По результатам проведённого моделирования система GPSS выдаёт отчёт


(файл статистики), содержащий следующую информацию:
1. Дату и время проведения эксперимента.
2. Время начала и окончания моделирования.
3. Информацию об основных блоках (тип, число входов, текущее
содержание).
4. Информацию об устройствах, очередях, логических ключах.

Файл статистики
Строка, содержащая основную информацию о результатах работы модели:

START TIME END TIME BLOCKS FACILITIES STORAGES


0.000 150000.000 9 1 0

Элементы статистики, представленные в этой строке, имеют следующее


содержание:
START TIME – абсолютное системное время в момент начала мо-
делирования. Оно эквивалентно абсолютному системному времени, после
последнего применения операторов RESET или CLEAR;
END TIME – абсолютное время, когда счетчик завершений принимает
значение 0;
BLOCKS – количество блоков, использованных в текущей модели, к
моменту завершения моделирования;
75
FACILITIES – количество устройств, использованных в модели, к моменту
завершения моделирования;
STORAGES – количество многоканальных устройств, использованных в
текущей модели к моменту завершения моделирования.
Затем в файле статистики следует информация об именах, которые
просматривает GPSS/World в ходе моделирования. Необходимость в по-
лучении такой информации устанавливается в файле SETTINGS.GPS. Ин-
формация об именах имеет для нашей программы следующий вид:

NAME VALUE
COMP 10008.000
EXPON1 10006.000
LAB1 2.000
LINE 10007.000

Поле NAME отмечает имена, содержащиеся в программе модели.


Поле VALUE определяет числовое значение, соответствующее имени.
Система устанавливает начальный номер равным 10000, если только в файле
SETTINGS.GPS не указан другой номер.
Далее приводятся сведения о количестве транзактов, прошедших через
каждый из блоков, в процессе выполнения программы:
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT
RETRY

1 GENERATE 80 0 0
LAB1 2 QUEUE 80 9 0
3 SEIZE 71 0 0
4 DEPART 71 0 0
5 ADVANCE 71 1 0
6 RELEASE 70 0 0
7 TERMINATE 70 0 0
8 GENERATE 1 0 0
9 TERMINATE 1 0 0

Поле LABEL определяет номер строки в рабочей модели, связанный с


блоком GPSS/World.
Поле LOC определяет имя или номер этого блока.
Поле BLOCK TYPE определяет тип блока GPSS/World.
Поле ENTRY COUNT определяет количество транзактов, вошедших в
данный блок, после последнего выполнения блоков RESET или CLEAR, или с
начала работы программы.
Поле CURRENT COUNT определяет количество транзактов, находящихся в
данном блоке в конце моделирования.

76
Поле RETRY определяет количество транзактов, ожидающих специальных
условий, зависящих от состояния данного блока.
Затем в файле статистики указывается информация об устройствах,
используемых при моделировании:
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

COMP 71 0.581 1227.229 1 72 0 0 0 9

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

LINE 9 80 28 0.847 1588.535 2443.900 0

Поле FACILITY определяет имя или номер устройств, используемых при


моделировании.
Поле ENTRIES определяет количество транзактов, прошедших через данное
устройство за время моделирования.
Поле UTIL. определяет коэффициент использования.
Поле AVE. TIME показывает среднее время на одно занятие транзактом.
Если в модели использовались объекты типа "многоканальное устройство",
то далее в файле статистики идет информация об этих объектах:
Поле STORAGE определяет имя или номер объекта типа "многоканальное
устройство".
Поле CAP. определяет емкость многоканального устройства, заданную
оператором STORAGE.
Поле REMAIN определяет число единиц свободной емкости много-
канального устройства в конце периода моделирования.
Поле MIN определяет минимальное количество используемой емкости
многоканального устройства за период моделирования.
Поле MAX определяет максимальное количество используемой емкости
многоканального устройства за период моделирования.
Поле ENTRIES определяет количество входов в многоканальное устройство
за период моделирования.
Поле AVL. определяет состояние готовности многоканального устройства в
конце периода моделирования. 1 – означает, что в многоканальном устройстве
хотя бы один канал свободен, 0 – означает, что многоканальное устройство
занято.
Поле AVE.C определяет среднее значение занятой емкости за период
моделирования.
Поле UTIL. определяет часть периода моделирования в течение которого
многоканальное устройство использовалось.
Поле RETRY определяет количество сообщений, ожидающих специальных
условий, зависящих от состояния многоканального устройства.
Поле DELAY определяет количество сообщений, ожидающих возможности
входа в блок ENTER.

77
Далее идут сведения о статистических таблицах, если они использовались в
программе.
Поле MEAN определяет среднее значение табулируемой величины в этой
таблице.
Поле STD. DEV. определяет среднеквадратическое отклонение величины.
Поле RANGE определяет границы частотных интервалов.
Поле FREQUENCY определяет частоты попадания наблюдений в
интервалы.
Поле CUM.% определяет накопленные частоты в процентах.
И, наконец, следует информация о цепи будущих событий:
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
332 0 2001.000 332 0 54 1 20.000
323 0 2003.784 320 50 51 2 2.000
329 0 2011.682 329 0 20 1 20.000
328 0 2015.089 328 0 1 2 1.000
330 0 2015.874 324 29 30 3 1993.874

Поле FEC XN определяет номер сообщения в списке будущих событий.


Поле PRI определяет приоритет сообщения.
Поле BDT определяет момент абсолютного системного времени, когда
сообщение покинет список будущих событий.
Поле CURRENT определяет номер блока, в котором сообщение находится в
конце моделирования.
Поле NEXT определяет номер следующего блока, в который должно войти
сообщение.
Поле PARAMETER определяет имена или номера параметров сообщений.
0 – означает, что у сообщения нет параметров.
Поле VALUE определяет значение параметра.
Графическое представление результатов моделирования
При желании можно воспользоваться графическими средствами отображения
результатов моделирования. Одним из таких средств являются гистограммы,
которые можно строить, если в программе используются оператор TABLE или
QTABLE. Для построения гистограммы необходимо выбрать в главном меню
команды Window->Simulation Window->Table Window. После этого необходимо
выбрать таблицу, по данным которой будет построена гистограмма:

Рис. 4.28. Окно «Выбор таблицы для построения гистограммы»

78
Кроме гистограмм можно использовать графики, которые показывают
количество транзактов, пришедших в систему за период моделирования либо
находящихся в очереди или устройстве системы. Для создания графиков
необходимо выбрать команды в меню Window->Simulation Window->Plot
Window, появится окно определения параметров графика (рис. 4.29):

Рис. 4.29. Окно «Определение параметров графика»

После заполнения данного окна выполняется построение соответствующего


графика.

5. Некоторые приемы программирования в системе GPSS,


используемые при выполнении курсовых и лабораторных
работ
. Отказ заявке в обслуживании при отсутствии свободных мест в очереди
Если число мест в очереди ограничено, то может оказаться, что очередная
заявка приходит в момент, когда вся очередь занята. Такой заявке отказывается
в обслуживании, и она покидает систему. При аналитическом моделировании
вероятность данного события рассчитывается весьма просто. Не составляет
особого труда рассчитать эту вероятность и при имитационном моделировании.
Для этого используется следующие приемы.
Очередь представляется многоканальным устройством, емкость которого
равна числу мест в очереди. Транзакт, поступивший в систему, занимает один
канал в этом устройстве, если устройство не занято полностью. В противном
79
случае транзакт покидает систему. Дальнейшее продвижение транзакта по
системе осуществляется стандартным образом: поступление в прибор или
многоканальное устройство для обслуживания, освобождение очереди –
многоканального устройства и т.д.
Можно ставить транзакт в очередь обычным способом и проверять число
занятых мест с помощью системного атрибута Q$LINE, где LINE –
идентификатор очереди.
Таким образом, в программе, реализующей данную ситуацию, должны
содержаться описанные выше элементы. Проверка наличия свободных мест в
многоканальном устройстве (очереди) может осуществляться разными
способами.
5.1.1. Использование блока TEST
Сравнивается число занятых мест в очереди с некоторым допустимым
значением. Фрагмент GPSS – программы может иметь следующий вид:

TEST L Q$LINE,4,LAB LAB – адрес, по которому


QUEUE LINE отправляется транзакт, если число
транзактов в очереди не меньше
. четырех

LAB TERMINATE

Чтобы оценить вероятность отказа заявке в обслуживании, достаточно


разделить число транзактов, прошедших через блок LAB, на общее число
транзактов, прошедших через систему.
Возможно построение других конструкций GPSS – программы с
использованием блока TEST.
5.1.2. Использование блока TRANSFER в режиме BOTH
Транзакт, входящий в блок TRANSFER в режиме BOTH, немедленно
пытается войти в блок, имя которого указано в операнде В. Если вход
невозможен, транзакт входит в блок, имя которого указано в операнде С.
Если в операнде В не указывать никакого имени, то подразумевается
следующий по порядку блок. Если следующий по порядку блок –
многоканальное устройство – очередь занята (нет свободных мест), то
транзакт покидает систему не обслуженным. Таким образом имеет место
следующая конструкция программы.
LINE STORAGE 4
. .
TRANSFER BOTH,,LAB
.
.LAB TERMINATE

Возможны и другие способы решения рассмотренной задачи.

80
5.2. Завершение конца обслуживания
Время моделирования чаще всего задается с помощью таймера –
транзакта. При этом в указанное время таймер-транзакт входит в систему и тут
же покидает ее, сбрасывая счетчик завершений в нуль. Процесс моделирования
прекращается. Такой подход возможен не всегда. В частности, это не
приемлемо при моделировании реальных систем, связанных с обслуживанием
клиентов. Клиент, пришедший в парикмахерскую, не покинет ее обслуженным
не до конца. Более того, парикмахерская не закроется, пока не будут
обслужены все клиенты, вошедшие в нее до момента закрытия. В GPSS –
программе процедура завершения обслуживания реализуется следующим
образом.
В заданное время таймер – транзакт входит в систему. Он сразу же
устанавливает в 1 логический переключатель, который блокирует поступление
заявок в систему (с помощью блока GATE). Затем таймер – транзакт
задерживается в системе с помощью блока TEST до тех пор, пока количество
заявок, поступивших на обслуживание, не сравняется с числом обслуженных
заявок, т.е. пока не будет обслужена вся очередь. Описанной процедуре может
соответствовать такая конструкция GPSS – программы:

Сегмент 1 Сегмент 2
.
GENERATE 250,50 GENERATE
GATE LR LOCK LOGIC S LOCK
L1 QUEUE LINE TEST E N$L1,N$L2
. TERMINATE 1
L2 TERMINATE

5.3. Выбор из группы обслуживающих приборов первого свободного

Если все обслуживающие приборы равноценные, то их удобно описывать с


помощью многоканального устройства. В этом случае вопросы поиска
свободного канала, постановки заявок в очередь и т.д. решаются автоматически
управляющей системой без вмешательства исследователя. Если же приборы не
равноценные, таким приемом пользоваться нельзя. Поэтому возникает
необходимость в решении таких задач, как поиск свободного прибора из
группы или поиск прибора, очередь к которому минимальна, если все приборы
заняты.
Наиболее простое решение поставленной задачи достигается с помощью
блока SELECT и использования параметров транзактов.
Блок SELECT может использоваться в двух режимах:
В режиме отношения и в режиме MIN/MAX .

Работа оператора в режиме отношения

81
Структура оператора: SELECT X A,B,C,D,E,F
Значения операндов:

Операн Значение Значение по


д умолчанию
Е Групповое имя стандартного числового атрибута Ошибка
ВиС Наименьший и наибольший номера (имена) из Ошибка
множества членов просматриваемой группы
D Значение, с которым должен сравниваться Ошибка
атрибут, указанный в операнде Е
X Вспомогательный операнд - оператор Ошибка
отношения, определяющий способ сравнения СЧА,
указанного операндом Е и значением операнда D. X может
принимать следующие значения:
Оператор Интерпретация в смысле
отношения блока SELECT
G Больше ли Е, чем D?
GE Больше или равны Е и D?
Е Равны ли Е и D?
NE Точно ли не равны Е и D?
LE Меньше или равны Е и D?
L Меньше ли Е, чем D?
А Имя или номер параметра, в который записывается Ошибка
номер члена группы, отвечающего установленному
условию атрибута
F Необязательный операнд; указывает номер блока, Транзакт
в который передается транзакт, если ни один член группы не переходит в
отвечает установленному условию следующий по
порядку блок

Примеры использования оператора:


1) SELECT Е Pro,1,1, О, F; при поступлении транзакта в этот
блок проверяется равен ли нулю стандартный числовой атрибут F (Facility -
прибор) устройства с номером 1, т.е. свободно ли устройство; если устройство
свободно, то его номер заносится в параметр с именем Pro данного транзакта и
транзакт переходит к следующему блоку; в противном случае номер устройства
не заносится в параметр транзакта.
Далее в тексте программы следует постановка транзакта в очередь и
занятие прибора с номером, занесенным в параметр с именем Pro данного
транзакта
...

QUEUE P$Pro
SEIZE P$Pro
...

82
2) SELECT L Packet, 2,6,25, SM, EXIT2;

проверяется меньше ли 25 стандартный числовой атрибут SM (Storage)


устройств с номерами от 2 до 6, т.е. меньше ли 25 максимально занятая емкость
многоканального устройства: номер первого многоканального устройства, для
которого выполняется заданное условие, заносится в параметр с именем Packet
данного транзакта, и транзакт переходит к следующему блоку; в противном
случае, если ни для одного из проверяемых многоканальных устройств не
выполняется заданное условие, транзакт переходит к блоку с именем ЕХ1Т2.

Если в примере 1) не найдено требуемое устройство (прибор), транзакт


передается в блок с именем ЕХ1Т2 , в котором происходит поиск наименьшей
очереди (режим MIN/MAX)

Работа оператора SELECT в режиме MIN/MAX.

SELECT X А, В, С„ Е

Значения операндов:
Операнд Значение Значение
по
умолчанию
Е Групповое имя стандартного числового Ошибка
атрибута
ВиС Нижняя и верхняя граница номеров членов соответствующей Ошибка
группы
А Номер параметра, значением которого становится номер Ошибка
соответствующего элемента, имеющего минимальное или
максимальное значение атрибута
X Вспомогательный операнд. Он является оператором MIN или Ошибка
МАХ в зависимости от того, определяется ли элемент,
имеющий минимальное или максимальное значение атрибута

Примеры: SELECT MIN 6, 5, 8„ FR


SELECT MAX 5,9, 14„ R

Дальнейшее занятие прибора осуществляется аналогично описанному


выше.

5.4. Работа администратора по пополнению складских запасов


При работе магазина, торгующего некоторым оборудованием,
администратор ежедневно проверяет запасы оборудования, хранящегося на
складе. Если запас меньше некоторой величины, называемой точкой возврата,
администратор подает заявку на пополнение. Пополнение всегда содержит
одинаковое количество оборудования и поступает с некоторой задержкой.
Задержка является случайной величиной, заданной таблично или функцией
83
распределения с известными параметрами. Если запас больше точки
восстановления, администратор никаких действий не принимает. Действия
администратора можно представить следующей схемой (рис. 5.1).

Запас больше Нет Подача заявки на Задержка


точки
восстановление поставки
восстановления ?

Да

Увеличение
запаса

Рис. 5.1. Схема действий администратора по пополнению складских запасов

Если точку восстановления обозначим ROP, число восстановления –


ROQ, а наличный запас оборудования – STOCK, то блок-схема GPSS –
программы будет выглядеть так, как представлена на рис. 5.3
Фрагмент GPSS – программы, моделирующей действия администратора,
показан на рис. 5.2

GENERATE ,,,1
L1 TEST LE X$STOCK,X$ROP
ADVANCE FN$LTIME
SAVEVALUE STOCK+,X$ROQ
TRANSFER ,L1

Рис. 5.2 Фрагмент GPSS – программы, моделирующей действия администратора

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


функцией LTIME, которая должна быть описана в программе (рис. 5.3).

84
Рис. 5.3. Блок- схема GPSS – программы, моделирующей действия администратора

5.5. Подсчет убытков при торговле оборудованием

Под убытками будем понимать недополучение прибыли, связанное с


нехваткой оборудования на складе, когда на него имеется спрос. При таком
подходе убытки (потери) можно исчислять в единицах оборудования.
Определив величину дневного спроса, которая является случайной величиной,
сравним ее с количеством оборудования, имеющимся на складе. Если спрос
превышает запас оборудования, необходимо подсчитать разницу и занести ее в
один из параметров транзакта (например, в параметр с номером 2). После чего
следует обнулить величину запаса и занести в соответствующие таблицы
величину потерь и оставшийся запас.
Если спрос не превышает имеющийся в наличии запас, то потери не
заносятся в параметр транзакта (по умолчанию все параметры транзакта равны
нулю), а запас уменьшается на величину дневного спроса. По прежнему будем
обозначать запас переменной STOCK. Дневной спрос обозначим переменной
85
DMND. Таблица потерь – LOSES, Таблица запасов – STOCK. Дневной спрос,
определяемый случайной величиной DMND, занесем в параметр транзакта с
номером 1 с помощью оператора ASSIGN.
Тогда блок-схема фрагмента GPSS – программы, реализующей подсчет
текущих запасов и дневных потерь, может быть представлена рис. 5.4

Рис 5.4. Фрагмент GPSS – программы, реализующей подсчет текущих запасов и


дневных потерь

Установка значений точки пополнения запаса, размера пополнения,


начального значения запаса производится с помощью оператора INITIAL.
Дневной спрос, определяемый переменной DMND, можно задать следующим
86
образом. Пусть спрос подчиняется нормальному распределению с
математическим ожиданием 30 и средним квадратическим отклонением 2.
Тогда переменная DMND записывается так
DMND FVARIABLE 2#FN$SNORM+30.
Аппроксимация функции нормального распределения приведена в
многочисленных работах и имеет следующий вид:

SNORM FUNCTION RN1,C25

0,-5/.00003,-4/.00135,-3/.00621,-2.5/.02275,-2
.06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.27425,-.6
.34458,-.4/.42074,-.2/.5,0/.57926,.2/.65542,.4/
.72575,.6/.78814,.8/.84134,1/.88493,1.2/.93319,1.5/
.97725,2/.99379,2.5/.99865,3/.99997,4/1,5

Описание таблицы потерь может иметь такой вид:


LOSES TABLE P2,0,1,17.

5.6. Замена вышедшего из строя устройства компьютера


При работе компьютера какое-либо его устройство может выйти из строя.
В этом случае инженер или техник, отвечающий за работу компьютера, должен
снять отказавшее устройство и заменить его исправным, если таковое имеется в
наличии. На эти работы требуется определенное время. Если в процессе
моделирования отказ устройства интерпретируется как уход транзакта из
канала (прибора) и имеются запасные устройства – транзакты, ожидающие в
очереди, то после ухода транзакта из канала очередной транзакт немедленно
займет его место. Такое положение дел не соответствует реальной работе
инженера по восстановлению компьютера. Чтобы создать правильную модель
данной ситуации, необходимо на определенное время заблокировать
продвижение очередного транзакта. Это достигается с помощью логических
переключателей и блоков GATE. Фрагменты блок-схемы, на которых показана
подобная конструкция, приведены на рис. 5.5.
Транзакт, который соответствует устройству компьютера, из очереди
LINE1 проходит через блок GATE и, проходя блок LOGIC, устанавливает
переключатель в положение SET, запрещая следующему транзакту (запасному
устройству) проходить через блок GATE. Запрет снимается, когда неисправное
устройство снимается с компьютера. Время задержки на установку блока и его
снятие задается блоками ADVANCE (Т1 и Т2 соответственно).
Запасные устройства, которые заменяют вышедшие из строя, вводятся в
систему блоком GENERATE в начальный момент времени. Причем
количество вводимых транзактов на единицу больше числа резервных
устройств, поскольку один транзакт сразу же занимает обслуживающий канал,
имитируя начальную установку устройства. Неисправные узлы – транзакты,
проходя через блоки, изображенные в правой части рис. 5.5, сбрасывают

87
логический переключатель NEED в ноль, разрешая установку резервных
устройств.

QUEUE LINE
ADVANCE T2

GATE
NEED

LOGIC
R NEED
LOGIC

S NEED

ADVANCE T1

Рис. 5.5 Фрагмент блок-схемы программы, блокирующей продвижение запасных


устройств при замене вышедшего из строя устройства компьютера

5.7. Решение задач надежности оборудования


Для анализа надежности информационных систем методами имитационного
моделирования можно использовать схему, предложенную Шрайбером [5] для
решения задачи об управлении производством. Эта задача формулируется так.
На фабрике работают 50 швейных машин. Любая из этих машин может в
любой момент времени выйти из строя. В этом случае ее заменяют резервной,
причем либо сразу, либо по мере ее появления. Сломанную машину отправляют
в ремонтную мастерскую, где ее восстанавливают и возвращают в цех, но уже в
качестве резервной.
В существующем замкнутом цикле движения машин можно выделить 4
фазы:
- машины, находящиеся в резерве;
- работающие машины;
- машины, ожидающие ремонта;
88
- ремонтируемые машины.
Для минимизации стоимости производства необходимо сбалансировать
участки производства так, чтобы как можно выше была производительность
цеха (т. е. увеличить коэффициент занятости многоканального устройства,
которое имитирует швейный цех). При этом не держать незагруженных
ремонтных рабочих и не иметь резервный запас машин больше необходимого.
Схема такой системы (швейного производства) представлена на рис. 5.6

Резервные
машины

Цех

Ремонт

Рис. 5.6. Схема швейного производства

Нетрудно догадаться, что подобная схема справедлива и для других


объектов. В частности, для вычислительного центра, имеющего в своем составе
m основных компьютеров и n запасных и ремонтную группу,
восстанавливающую вышедшую из строя вычислительную технику, при
условии, что ВЦ получает прибыль от функционирования компьютеров.
Блок-схема GPSS – программы приведена на рис. 5.7. В блоке GENERATE в
систему вводится одновременно 53 транзакта, при емкости многоканального
устройства NOWON, равной 50, 50 транзактов занимают устройство (т.е
запускаются в эксплуатацию), а 3 остаются в резерве. Пусть время исправной
работы имеет равномерное распределение со средним значением 157 часов и
половиной интервала – 25 часов. После того как первая неисправная машина
покинет цех, ее место сразу же занимает резервная. Неисправная машина
отправляется в ремонт. Если все механики, производящие ремонт, заняты,
неисправная машина становится в очередь. В приведенном примере время
ремонта также имеет равномерное распределение со средним значением 7 часов
и половиной поля допуска, равной 3 часам. Отремонтированная машина
направляется в резерв. По результатам моделирования (в примере время
моделирования – 6240 часов) можно судить о средней загруженности
89
многоканального устройства, или, что по существу то же самое, о среднем
числе простаивающего оборудования.

Рис. 5.7. Блок-схема программы, моделирующей работу швейного цеха

Ниже (рис. 5.8) приведен текст программы на языке GPSS.

GENERATE ,,,53
90
BACK ENTER NOWON
ADVANCE 157,25
LEAVE NOWON
ENTER MEN
ADVANCE 7,3
LEAVE MEN РЕМОНТНАЯ ГРУППА
TRANSFER ,BACK

GENERATE 6240
TERMINATE 1

Рис. 5.8. GPSS – программа, моделирующая работу швейного цеха

Для решения задач надежности схему, представленную на рис. 5.5,


следует изменять в соответствии с решаемыми задачами.
1) Надежность систем с «холодным» резервированием без восстановления.
В этом случае из схемы (рис 5.6) удаляется ремонтная группа
(многоканальное устройство MEN), а многоканальное устройство NOWON
заменяется обслуживающим прибором (каналом обслуживания). Размер
резерва (кратность резервирования) определяется числом транзактов, вводимых
первым блоком GENERATE. Время, в которое определяется вероятность
безотказной работы, задается блоком GENERATE во втором сегменте
программы. Этот сегмент должен быть расширен таким образом. Транзакт,
вошедший в систему, прежде чем покинуть ее должен произвести проверку (с
помощью блока TEST и соответствующего системного атрибута) свободен ли
прибор? Если прибор свободен, это означает, что система неисправна. В
противном случае система работоспособна. В зависимости от результата
проверки таймер – транзакт покидает систему через тот, или иной блок
TERMINATE (эти блоки необходимо пометить). Запустив программу
многократно с помощью оператора START (например, START 100000), можно
определить какое число транзактов прошло через каждый из блоков
TERMINATE. Пусть при времени моделирования, равном 15 часам, 95000
транзактов прошли через блок TERMINATE, соответствующий занятому
прибору. Это означает, что через 15 часов работы системы, вероятность того,
что она находится в исправном состоянии, равна 0,95
2) Надежность систем с «холодным» резервированием с восстановлением
Отличие от рассмотренного выше случая состоит в том, что в систему
вводится прибор (или многоканальное устройство), выполняющий функции
ремонтной группы. Так как при наличии резервирования с восстановлением в
системе должен установиться стационарный режим, нет необходимости
проводить моделирование при разном времени. Достаточно выполнить
моделирование один раз (но при большом значении параметра оператора
START и весьма большом времени моделирования, задаваемым оператором
GENERATE во втором сегменте программы).

91
3) Надежность систем с «горячим» резервированием без восстановления
Из «базовой» схемы (рис. 5.6) удаляются элементы, соответствующие
«холодному» резерву. Емкость многоканального устройства полагается равной
общему числу резервированных устройств в системе (т.е. числу резервных
элементов плюс 1 – рабочий). Отсутствует и ремонтная группа. Таймер –
транзакт, прежде чем покинуть систему, проверяет, свободно ли
многоканальное устройство. Далее процесс определения вероятности
исправной работы системы аналогичен описанному в пункте 1.
4) Надежность систем с «горячим» резервированием с восстановлением
Метод моделирования подобных систем не требует дополнительных
пояснений, так как легко может быть получен из описания рассмотренных
пунктов 2 и 3.
5.8. Моделирование систем массового обслуживания с «нетерпеливыми»
заявками
Нетерпеливыми называются заявки, время пребывания которых в системе
ограничено. По истечению отведенного времени заявка покидает систему
независимо от того, в каком месте она находится: в очереди или в канале
обслуживания. Имитационное моделирование таких систем имеет ряд
особенностей. Рассмотрим процесс моделирования СМО с «нетерпеливыми
заявками» на конкретном примере.
Пусть рассматривается информационно-измерительная система, состоящая
из 3 процессоров и 100 датчиков. Интервалы времени между сигналами
прерывания от датчиков распределены экспоненциально. Среднее время
составляет 5 минут. Все процессоры равноценны. Каждый из них обслуживает
сигнал прерывания в среднем за 0,04 минуты. Время обслуживания также имеет
экспоненциальное распределение. Если все процессоры заняты, запросы
заносятся в буфер. Емкость буфера – 4 запроса. Если буфер занят, запрос
покидает систему не обслуженным. Время пребывания заявки в системе
ограничено и подчиняется нормальному распределению со средним значением
3 минуты и средним квадратичным отклонением 0,5 минуты. Приоритеты
запросов одинаковы. Дисциплина обслуживания – FIFO.
Логическая схема такой системы приведена на рис. 5.9
При моделировании многомерный входной поток заменяется эквивалентным
одномерным потоком, интенсивность которого равна суммарной
интенсивности многомерного потока. В таком случае блок – схема GPSS –
программы может выглядеть так, как это представлено на рис. 5.10
Краткое описание блок-схемы
Первый сегмент
Производится генерация транзактов (сигналы прерывания от 100 датчиков).
Эта операция осуществляется с помощью блока GENERATE. Распределение
сигналов - экспоненциальное со средним временем 5 минут для одного датчика.
Поскольку сигналы приходят от 100 датчиков, соответственно среднее время
прихода заявки в систему равно 0,05 минут.

92
Процессоры

TEST на Буфер TEST


Приход занятость на Обслуженн
буфера время в ые заявки
очеред
ии

«Нетерпеливые заявки» Поток


ухода
Потерянные заявки

Рис. 5.9. Логическая схема информационно-измерительной системы

С помощью блока ASSIGN присваивается одному из параметров транзакта


имя LifeT («Время пребывания в системе») и значение этого времени,
распределенное по нормальному закону со средним 3 минуты и СКО=0,5
минуты.
Транзакт пытается встать в очередь, представленную в системе
многоканальным устройством BUFER с четырьмя каналами. Если вся очередь
занята, заявка отправляется на метку LostBuf («Заявки, потерянные из-за
переполненной очереди») и выводится из системы с помощью блока
TERMINATE. Эта переадресация транзакта осуществляется блоком
TRANSFER, установленным в режиме BOTH.
При наличии хотя бы одного свободного места в очереди, транзакт
помещается в нее блоком ENTER.
Попав в очередь, заявка пытается попасть на обслуживание в какой-либо из
свободных процессоров, представленных в системе многоканальным
устройством COMPS (3 канала). Если все процессоры заняты, блок TRANSFER,
работающий в режиме BOTH отправляет заявку на метку EndBufTime (Время
вышло в очереди). Иначе транзакт (заявка)занимает свободный процессор при
помощи блока ENTER.
В случае перехода по метке EndBufTime проверяется условие: не
закончилось ли время жизни заявки в системе. Осуществляется эта проверка
блоком TEST. Если время действительно вышло, заявка движется дальше по
этой цепи. Транзакт покидает очередь (LEAVE BUFER) и выводится из
системы блоком TERMINATE. Сосчитав сколько раз транзакт пересек метку
LostBufTime, которой отмечен этот блок, можно определить количество
нетерпеливых заявок, покинувших очередь. Если процессор свободен, заявка
немедленно покидает очередь (LEAVE BUFER).
93
Рис. 5.10. Блок-схема программы моделирования информационно- измерительной
системы

В следующем блоке ASSIGN параметру транзакта TimeAdvance


присваивается значение времени обслуживания (случайная величина,
подчиняющаяся экспоненциальному распределению со средним 0,04 минуты).

94
В блоке TEST производится проверка: хватит ли заявке времени получить
полное обслуживание с учетом уже «прожитого» в системе времени. Если
времени не хватит, заявка отправляется на метку LostComp (Потери во время
обслуживания). Здесь блоком ASSIGN параметру транзакта с именем «TimeAv»
присваивается значение «Оставшееся время жизни заявки». Блок ADVANCE
задерживает заявку на это время, после чего транзакт покидает прибор (LEAVE
COMPS) не обслуженным и уходит из системы (блок TERMINATE).
Если времени на обслуживание достаточно, то транзакт задерживается
блоком ADVANCE на время обслуживания, затем покидает устройство
(LEAVE COMPS) и выводится из системы через блок TERMINATE,
помеченный этикеткой Sucsessfull (успешно обслуженные заявки). Подсчитав
количество транзактов, прошедших через эту метку, т.е. число обслуженных
заявок, можно определить вероятность обслуживания заявок в системе и,
следовательно, вероятность того, что заявка покинет систему не обслуженной.
При достаточном времени моделирования эти вероятности совпадают с
результатами аналитического моделирования с высокой степенью точности
(расхождение имеет порядок 0,01).
Второй сегмент (ТАЙМЕР) определяет время моделирования.

5.9. Моделирование работы двух узлов коммутации [6]


Необходимо провести моделирование с целью получения оценок
вероятностно-временных характеристик процесса функционирования
фрагмента сети передачи данных (СПД).
В рассматриваемой СПД реализован режим коммутации пакетов,
представляющий собой такой способ передачи, при котором данные из
сообщений пользователей разбиваются на отдельные пакеты, маршруты
передачи которых в сети от источника к получателю определяются в каждом
узле коммутации (УК), куда пакеты поступают. Под сообщениями понимается
конечная последовательность символов, имеющая смысловое содержание.
Пакет - это блок данных с заголовком, представленный в установленном
формате и имеющий ограниченную максимальную длину. Эффективность
различных вариантов построения СПД и ее фрагментов оценивается средними
временами доставки данных пользователям и вероятностями отказа в
установлении требуемого пользователю соединения в данный момент времени.
Совокупность таких показателей для оценки эффективности процесса
функционирования процесса СПД принято называть ее вероятностно-
временными характеристиками.
Логическая схема моделируемой системы
Рассмотрим процесс функционирования фрагмента СПД,
представляющий собой взаимодействие двух соседних узлов коммутации
СПД, обозначенных УК1 и УК2. Эти узлы соединены между собой
дуплексным дискретным каналом связи (ДКС), позволяющим одновременно
передавать данные во встречных направлениях, т.е. имеется два автономных

95
однонаправленных ДКС. Будем считать, что все сообщения, поступающие в
СПД, являются однопакетными.

Рис. 5.11. Структурная схема варианта УК

На рис.5.11 обозначено: ВхБН и ВыхБН – входные и выходные буферные


накопители соответственно; К – коммутаторы; ЦП – центральный процессор.
Этот УК функционирует следующим образом. После поступления пакета из
одного из входных КС узла он помещается в ВхБН. Затем ЦП на основе
заголовка пакета и хранимой в УК маршрутной таблицы определяет требуемое
направление дальнейшей передачи пакета и помещает его в соответствующий
ВыхБН для последующей передачи по выходному КС.

Рис. 5.12. Структурная схема варианта ДКС с решающей обратной связью

На рис.5.12 обозначено: КУ и ДКУ – кодирующее и декодирующее


устройства соответственно; УУК – устройство управления каналом; КА -
каналообразующая аппаратура. На передающей стороне пакет из ВыхБН узла
коммутации попадает в КУ, где производится кодирование, т.е. внесение
96
избыточности, необходимой для обеспечения помехоустойчивой передачи по
КС. Согласование с конкретной средой распространения реализуется КА. На
приемной стороне из КА пакет попадает в ДКУ, которое настроено на
обнаружение и/или исправление ошибок. Все функции управления КУ, ДКУ (в
том числе и принятие решений о необходимости повторного переспроса копии
пакета с передающего УК) и взаимодействия с центральной частью узла
реализуются УУК, которое является либо автономным, либо представляет
собой часть процедур, выполняемых ЦП узла.
Таким образом, общая структурная схема модели процесса взаимодействия
двух узлов коммутации (УК1 и УК2) через дискретный канал связи (ДКС)
будет выглядеть следующим образом (рис. 5.13):
На рис. 5.13 обозначено: И – источник, К — канал, Н – накопитель.
Поступление пакетов данных в моделируемый фрагмент СПД на входы
имитируется источниками И1 и И2. Пакеты буферируются накопителями Н4 и
Н2, т.е. ожидают освобождения каналов в УК1 и УК2 соответственно. После
обслуживания каналами К1 и КЗ, т.е. после обработки ЦП УК1 и УК2
соответственно, пакеты поступают в выходные накопители HI и НЗ этих узлов.
Далее, в порядке очереди, копии пакетов обслуживаются каналами К2 и К4,
имитирующими процесс передачи по ДКС.

Рис 5.13. Структурная схема модели процесса взаимодействия двух узлов коммутации

При приеме копии пакета без ошибки, т.е. их поступлении в 112 и Н4,
формируется подтверждение приема, которое в виде короткого пакета поступает
в соответствующий выходной для данного узла накопитель HI и НЗ для
передачи на другой УК, т.е. снова реализуется обслуживание каналами К2 и
К4. После подтверждения в узле-источнике правильного приема уничтожается
пакет, хранящийся в HI и НЗ. Выходам соответствуют точки 3 и 4 на
структурной схеме модели процесса взаимодействия двух узлов коммутации
СПД.
97
Блок – схема моделируемой системы
Так как для моделирования выбран пакет GPSS, то необходимо
разработать блок-схему модели, по сути представляющую собой логическую
схему, адаптированную к особенностям использования для машинной
реализации модели GPSS. Блок-схема модели процесса функционирования
фрагмента СПД приведена на рис. 5.14, где для структурных элементов
модели, показанных на рис.5.13, введены следующие обозначения:
для накопителей HI, Н2, НЗ и Н4 соответственно, BUF1, BUF2, BUF3 и
BUF4;
для источников И1 и И2 соответственно, GEN1 и GEN2;
для каналов обслуживания:
в узлах коммутации для ЦП Kl - CPU1 и КЗ - CPU2,
в каналах связи при дуплексной передаче К2 - DCH1 и К4 - DCH2.

Описание некоторых блоков, используемых при построении модели

Блок SPLIT

Блок SPLIT имеет следующий формат:


SPLIT <A>,[<B>],[<C>]
Блок выполняет функцию копирования входящего в него транзакта, который
называется исходным или порождающим.
В поле А задается число создаваемых копий. Операнд А может быть именем,
положительным целым. Если вычисленное значение аргумента поля А равно
нулю, то блок SPLIT не выполняет никаких операций. После создания копий
транзакт пытается перейти к следующему по номеру блоку. Все копии
формируются в момент входа порождающего транзакта в блок SPLIT.
Поле В задает номер следующего блока, к которому переходят копии
исходного транзакта, причем значение вычисляется для каждой копии
отдельно. Операнд В может быть именем, положительным целым.
В поле С может быть задан номер параметра, используемого для
присвоения копиям последовательных номеров. Операнд С может быть
именем, положительным целым.
Счетчик общего числа входов (Nj) и счетчик текущего числа сообщений
(Wj) блока SPLIT увеличиваются на единицу каждым исходным транзактом и
каждой копией. Счетчик числа транзактов уменьшается на единицу при
каждом выходе исходного транзакта или копии из блока SPLIT.
Каждая новая копия становится членом семейства транзактов, порожденного
одним исходным транзактом, которое было создано блоком GENERATE.
Транзакты, принадлежащие к одному семейству, объединяются
интерпретатором в список.
98
Блок ASSEMBLE
Блок ASSEMBLE имеет следующий формат:
ASSEMBLE <A>
Блок объединяет заданное число транзактов, принадлежащих к одному
семейству, в один транзакт (т.е. осуществляет сборку заданного числа
транзактов). После сборки из блока ASSEMBLE выходит только один транзакт,
который переходит в следующий по номеру блок. В одном и том же блоке
ASSEMBLE возможна одновременная сборка транзактов нескольких семейств.
Когда транзакт входит в блок ASSEMBLE, интерпретатор просматривает
семейство, к которому принадлежит этот транзакт, и проверяет, есть ли другой
транзакт из того же семейства в данном блоке ASSEMBLE.
Поле А задает число транзактов, участвующих в сборке. Операнд А может
быть именем, положительным целым. Первоначальное значение аргумента
поля А не должно быть больше или равно единице. Если при входе
исходного транзакта в блок ASSEMBLE, значение счетчика стало равным
нулю (т.е. нужно было «объединить» только один транзакт), транзакт
немедленно покидает блок ASSEMBLE и переходит в следующий по номеру
блок.
Если результат отрицательный (вычисленное значение аргумента поля А
нулевое иди отрицательное), происходит ошибка выполнения. Обычно значение
счетчика сборки больше единицы, поэтому при входе в блок ASSEMBLE
исходного транзакта результат вычитания единицы из счетчика
положительный. Этот результат (новое значение счетчика сборки)
сохраняется, а исходный транзакт исключается из списка текущих событий и
переходит в состояние синхронизации. Этот транзакт не будет возвращен в
список текущих событий до тех пор, пока в блок ASSEMBLE не войдет
заданное число транзактов и счетчик сборки не станет равным нулю.
Счетчики Nj и Wi блока ASSEMBLE увеличиваются на единицу. Затем
интерпретатор переходит к обработке следующего транзакта списка текущих
событий. При входе транзакта того же семейства в блок ASSEMBLE счетчик
сборки уменьшается на единицу. Вновь прибывшее сообщение уничтожается.
Если значение счетчика сборки все еще больше нуля, интерпретатор переходит
к обработке следующего сообщения из списка текущих событий.
Если значение счетчика после вычитания единицы стало равным
нулю, то исходный транзакта возвращается в список текущих событий и
становится последним транзактом в своем приоритетном классе.
Следовательно, может получиться так, что интерпретатор обработает ряд
транзактов до того, как приступит к обработке транзакта, вышедшего из блока

99
ASSEMBLE. Индикатор синхронизации устанавливается в «О», завершение
сборки отмечается установкой флага изменения состояния. После возвращения
исходного сообщения в список текущих событий, интерпретатор начинает
просмотр с начала списка. Это обеспечит обработку исходного транзакта в тот
же момент условного времени, когда заканчивается сборка. Даже если исходный
транзакт не может войти в следующий по номеру блок, он больше не считается
участвующим в процессе сборки. Это связано с тем, что индикатор
синхронизации транзактов устанавливается в «О». Следовательно, если другой
транзакт из того же семейства поступит в блок ASSEMBLE, он будет
рассматриваться как исходный транзакт, и начнется новый процесс сборки.
Счетчик Wj уменьшается на единицу при каждом выходе транзакта из блока
ASSEMBLE.

Блок MATCH

Блок MATCH имеет следующий формат:

MATCH <A>
Блок используется для синхронизации движения двух транзактов,
принадлежащих к одному семейству, без удаления этих транзактов из модели.
Блоки MATCH не объединяют синхронизируемые транзакты. Синхронизация
осуществляется путем подбора пар транзактов из одного семейства и задержки
этих транзактов до тех пор, пока оба транзакта из одной пары не поступят в
заданные точки модели. Транзакты никогда не задерживаются в блоке MATCH.
Транзакты, для которых выполнилось условие синхронизации, переходят к
следующему по номеру блоку. В одной паре блоков MATCH могут
одновременно находиться в состоянии синхронизации пары транзактов из
различных семейств. Возможна также одновременная синхронизации пар
транзктов из одного семейства в нескольких блоках MATCH.
Поле А задает имя или номер другого блока MATCH, называемого
«сопряженным блоком MATCH». Если такого блока нет, происходит останов
по ошибке. Операнд А может быть именем, положительным целым. Когда
транзакт входит в блок LEAVE, то ищется многоканальное устройство,
заданное в поле А. Если такое многоканальное устройство не существует, то
возникает ошибка выполнения.
Число освобождаемых единиц многоканального устройства берется из
операнда В. Когда многоканальное устройство становится доступным,
проверяется список задержки многоканального устройства, в порядке
уменьшения приоритета с целью нахождения транзактов, запросы которых
могут быть удовлетворены в данный момент. Если такие транзакты найдены, то
они входят в блок ENTER, который отказал им, и далее помещаются в список
будущих событий за транзактами с таким же приоритетом. Попытка
освободить больше единиц емкости, чем было определено, приводит к ошибке.

100
Рис. 5.14. Блок-схема программы моделирования работы двух узлов коммутации

101
Листинг программы.

RMULT 111
EXPON FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.83
.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3
.998,6.2/.999,7/.9998,8

*Определение емкости буферов

BUF1 STORAGE 20
BUF2 STORAGE 20
BUF3 STORAGE 20
BUF4 STORAGE 20

*Задание таблиц переменных

TIME TABLE V$TIME,0,20,16


TIME FVARIABLE C1-P3

MET1 ENTER BUF4


SEIZE CPU1
ADVANCE 2
LEAVE BUF4
RELEASE CPU1
ENTER BUF1
TEST E P2,1,MET4
TEST E P1,20,COP1
SPLIT 1,NEX1
COP1 MATCH COP1
LEAVE BUF1
ASSEMBLE 2
TABULATE TIME
TERMINATE
MET4 SEIZE DCH1
LEAVE BUF1
TRANSFER ,NEX11
NEX1 SEIZE DCH1
NEX11 ADVANCE P1
RELEASE DCH1
ASSIGN 1,1

102
MET2 ENTER BUF2
SEIZE CPU2
ADVANCE 2
LEAVE BUF2
RELEASE CPU2
ENTER BUF3
TEST E P2,2,MET5
TEST E P1,20,COR2
SPLIT 1,NEX2
COP2 MATCH COP2
LEAVE BUF3
ASSEMBLE 2
TABULATE TIME
TERMINATE

MET5 SEIZE DCH2


LEAVE BUF3
TRANSFER ,NEX21
NEX2 SEIZE DCH2
NEX21 ADVANCE P1
RELEASE DCH2
ASSIGN 1,1
TRANSFER ,MET1
GEN2 GENERATE 25,FN$EXPON
ASSIGN 1,20
ASSIGN 2,2
ASSIGN 3,C1
TRANSFER ,MET2
GEN1 GENERATE 25,FN$EXPON
ASSIGN 1,20
ASSIGN 1,2
ASSIGN 3,C1
TRANSFER ,MET1

GENERATE 1,,10000
TERMINATE 1

103
6. Лабораторные работы по курсу «Моделирование»

Лабораторная работа 1
Моделирование одноканальной системы массового обслуживания с
одномерным входным потоком
Провести моделирование одноканальной системы массового обслуживания с
одномерным потоком заявок. Интенсивность входного потока –λ i задается
формулой i  1t
i

где ti -среднее время между поступлением заявок в систему:


ti = 10*i ,

i – номер варианта. Номер варианта совпадает с номером в списке группы.


Интенсивность обслуживания µ = 1/tоб.i ,
где tоб – среднее время обслуживания заявки, tоб= 0,6 ti .
Интервалы между поступлением заявок и время обслуживания заявок
распределены по экспоненциальному закону.
Провести моделирование системы, изменяя величину  = /µ= tоб / ti
с 0.6 до 1.1 через 0.1 т.е провести исследование системы при tоб= 0.6 ti,0,7ti,,
0.8 ti,, 0.9 ti,, 1.0 ti,, 1.1 ti,
Время моделирования положить равным 500 ti.
Объяснить результаты моделирования.
Контрольные вопросы
1. Какие системы массового обслуживания называются одномерными ?
2. Что определяет величина  ?
3. Как ведет себя очередь при увеличении  ?
4. Сколько транзактов будет введено в систему, если tоб = 0.8 ti,, а время
моделирования равно 500 ti ?
5. Каким образом можно изменить последовательность временных интервалов
между приходом заявок в систему ?

Лабораторная работа 2
Моделирование одномерной системы массового обслуживания с
многомерным входным потоком
Провести моделирование системы с многомерным входным потоком.
Количество входных потоков – 3. Потоки независимы и распределены по
экспоненциальному закону. Суммарная интенсивность потоков, т.е. 1  2  3 ,
равна интенсивности одномерного потока, заданной в работе №1, т.е.
1 1 1 1
 
 1 2 3
 . Других ограничений на величины i не налагается.
Интенсивность обслуживания  задана в работе №1. Время
моделирования положить равным 500  t об . Сравнить результаты моделирования
с результатами, полученными в работе №1.
Объяснить полученные результаты.

104
Провести моделирование, убрав из программы все операторы QUEUE и
DEPART
Контрольные вопросы
1. Должны ли совпадать результаты моделирования СМО с одномерным и
многомерным входными потоками, если суммарная интенсивность входного
многомерного потока совпадает с интенсивностью одномерного потока?
2. Будет ли возрастать очередь, если при увеличении  пропорционально
возрастает  ?
3. Как изменятся (и изменятся ли) результаты моделирования, если из
программы убрать операторы QUEUE , DEPART ?

Лабораторная работа 3
Моделирование СМО с приоритетной дисциплиной обслуживания и
раздельными очередями
Система имеет три независимых потока заявок. Каждый из потоков заявок
имеет собственную очередь. Наивысший приоритет имеет 1-й поток.
Минимальный приоритет у третьего потока.
Интенсивность входных потоков и интенсивность обслуживания заданы в
работе 2.
Провести моделирование СМО с приоритетами.
Время моделирования – 500  t об .
Объяснить результаты моделирования.
Сменить систему приоритетов, задав наивысший приоритет третьему
потоку заявок.
Объяснить изменения (если таковые будут иметь место) в загрузке
прибора при изменении приоритетов.
Контрольные вопросы
1 Каким образом задается приоритет заявок в GPSS?
2. Можно ли при моделировании системы обойтись одной функцией, задающей
экспоненциальное распределение?
3. Как изменится длина третьей очереди после смены приоритетов?

Лабораторная работа 4
Моделирование двухканальной системы с тремя независимыми входными
потоками
Система с бесприоритетной дисциплиной обслуживания. Интенсивности
входных потоков заданы на работе №3.
Интенсивность обслуживания 1 – го и 2 – го канала одинаковы, т.е. каналы
равноценные Очередь общая.
Провести моделирование системы, оставив суммарную интенсивность
двухканальной системы прежней, т.е. равной интенсивности одного прибора
(из работы №3). Время моделирования задано в работе №3.

Контрольные вопросы
105
1. Какой оператор задает емкость многоканального устройства?
2. Отличаются ли операторы вхождения заявки в многоканальное устройство и
операторы занятия прибора?
3. Изменятся ли результаты моделирования если в программе поменять
местами блоки, описывающие различные потоки заявок?

Лабораторная работа 5
Моделирование системы массового обслуживания с «нетерпеливыми»
заявками
Провести аналитическое и имитационное моделирование системы с
нетерпеливыми заявками. Определить эффективность функционирования
многопроцессорной вычислительной системы по заданному критерию –
обобщенному показателю потерь. Сравнить результаты, полученные при
аналитическом и имитационном моделировании. Моделируемая структура-
многопроцессорная управляющая вычислительная система, состоящая из m
процессоров, на вход которой поступают простейшие потоки заявок (k потоков
с интенсивностью i , i=1,2,...,k). Процессоры однотипные со средним
быстродействием B (в миллионах операций в секунду). Обслуживание заявки
заключается в выполнении на любом из процессоров соответствующей
прикладной программы. Средняя трудоемкость всех прикладных программ
одинакова и равна  (в тысячах операций). Закон распределения трудоемкости
каждой из программ - экспоненциальный. Для хранения заявок, которые не
могут обслуживаться немедленно, выделен буфер из n ячеек (каждая заявка
занимает одну ячейку). Время пребывания заявок в системе не должно
превышать случайной величины  доп , распределенной экспоненциально с
математическим ожиданием  доп . Операционная система реализует
бесприоритетные дисциплины ожидания и обслуживания. В ее же функции
входит удаление «нетерпеливых заявок» из системы.
Критерий эффективности функционирования системы (  ) задан в условных
денежных единицах.
   * e *  e *    e * m  k  ,
отк отк у у n

k
где    i - интенсивность суммарного потока заявок;
i 1
eотк – штраф за отказ системы принять заявку;
ey – штраф за уход заявки из СМО;
e n – штраф за незанятый канал (простой канала);
отк – вероятность отказа в обслуживании заявки;
у – вероятность ухода «нетерпеливых заявок»;
k - среднее число занятых каналов (процессоров).
Варианты работы.
№ k 1 2 3 4 B n m  доп  eотк e y en
1 4 6 14 8 0 0,6 3 3 0,2 24 4 4 10
2 2 6 8 0 0 0,6 3 1 0,2 30 2 2 20
106
3 4 2 2 4 8 0,8 2 2 0,3 40 4 4 15
4 4 1 2 5 6 1 4 1 0,1 50 2 5 10
5 3 2 10 3 0 0,5 3 2 0,4 30 3 3 8
6 4 6 6 5 8 1 3 3 0,1 40 4 4 8
7 4 10 10 8 2 1 4 2 0,2 40 4 6 10
8 3 10 12 8 0 0,8 4 3 0,05 30 6 8 20
9 4 6 4 4 16 2 3 3 0,2 40 5 6 20
10 3 10 8 22 0 4 4 2 0,1 30 8 10 20
11 4 8 8 4 14 1 3 3 0,01 10 10 20 20
12 3 6 8 10 0 2 4 2 0,05 20 6 6 10
13 4 2 8 10 5 1 3 3 0,08 20 4 4 8
14 4 2 14 14 10 4 4 2 0,15 25 8 8 20
15 4 5 10 15 25 4 4 2 0,1 40 2 2 10
16 3 15 25 10 0 1 3 3 0,2 30 4 4 8
17 3 10 20 30 0 1 4 2 0,2 40 2 2 8
18 4 5 10 15 20 2 3 3 0,1 50 8 8 10
19 4 6 4 8 2 1 4 2 0,1 10 10 10 20
20 4 5 10 15 10 2 3 3 0,1 20 20 20 40
21 3 6 14 10 0 2 4 2 0,2 30 8 8 20
22 3 7 13 10 0 1 3 3 0,1 40 10 10 20
23 3 2 8 20 0 2 4 2 0,5 40 5 5 20
24 4 8 12 20 10 4 3 3 0,2 20 10 10 10
25 4 2 14 14 10 4 4 2 0,15 25 8 8 20
26 2 20 3 0 0 1,5 3 2 0,05 15 10 10 5
27 3 10 20 30 0 2,5 4 2 0,1 25 8 12 4
28 4 10 20 5 5 2 3 2 0,3 30 6 10 5
29 3 10 20 30 0 4 4 2 0,05 40 20 20 10
30 4 5 10 15 20 5 2 3 0,1 10 30 30 20
31 3 25 5 10 0 4 2 4 0,01 50 30 30 10
32 4 5 10 15 10 3 3 3 0,02 40 20 20 20

Контрольные вопросы
1. В каких случаях применяются аналитические методы моделирования СМО?
2. Насколько правомерно представление вычислительных систем и сетей в
виде СМО ?
3. Какие потоки событий являются простейшими ?
4. Назовите основные параметры СМО.
5. Чем отличаются параметры СМО от характеристик ?
6. Какие критерии используются для оценки эфективности СМО ?
7. Что понимается под состоянием системы массового обслуживания ?
8. Перечислите виды дисциплин обслуживания заявок.
9. Почему в системе могут существовать "нетерпеливые" заявки ? Дайте
физическую интерпретацию сущности "нетерпеливых" заявок.
10.Объясните физический смысл уравнений Колмогорова.
Требования к оформлению лабораторных работ
Лабораторные работы должны содержать:
- название лабораторной работы;
107
- задание на работу;
- блок – схему программы (в соответствии с принятыми в системе GPSS
обозначениями);
- тексты программ;
- результаты моделирования;
- выводы по проделанной работе.

7. Задания по курсовым работам


Вариант 1
Тема курсовой работы – «Моделирование работы копировального
центра»
Центр открыт с 7 до 19 часов. После 19 часов клиенты не обслуживаются
(все клиенты, вставшие в очередь до 19 часов, должны быть обслужены).
Прибыль с одного обслуженного клиента составляет в среднем 10 рублей.
Заработок служащих – 25 рублей в час и выплачивается только за 12 часов,
даже если они задерживаются после 19 часов. Каждый служащий работает
только на одном устройстве.
Распределение интервалов времени между приходом клиентов дано в
табл. 1
Таблица 1
Интервалы между Суммарная Интервалы между Суммарная
прибытием (с) частота прибытием (с) частота
Меньше 0 0,0 400 0,81
100 0,25 500 0,90
200 0,48 600 1,0
300 0,69
Распределение времени обслуживания дано в табл. 2
Таблица 2
Время обслуживания Суммарная Интервалы между Суммарная
(с) частота прибытием (с) частота
Меньше 100 0,0 500 0,77
200 0,06 600 0,83
300 0,21 700 1,0
400 0,48

Клиент остается в центре, если число ожидающих клиентов меньше


или равно числу множительных устройств (т.е. в ожидании находится не более
одного клиента на устройство).
1. Разработать логическую схему имитационного моделирования.
2. Провести моделирование работы системы в течение 12 часов.
3. Определить число служащих, при котором дневная прибыль максимальна
(стоимость множительных устройств не учитывать).
Требования к пояснительной записке
Пояснительная записка к курсовой работе должна содержать:
108
1. Задание на работу.
2. Краткое теоретическое введение в проблему.
3. Логическую схему моделируемой системы и блок – схему программы с
подробным их описанием.
4. Текст программы на языке GPSS.
5. Результаты имитационного моделирования и выводы.

Вариант 2
Тема курсовой работы – «Моделирование справочной
информационной системы»
Техническую основу справочной информационной системы составляют 8
компьютеров. Поступающие запросы имеют пуассоновское распределение со
средней интенсивностью 2000 единиц в час. Программа – диспетчер направляет
запрос на обслуживание, если хотя бы один из компьютеров свободен. В
противном случае запрос ставится в очередь к тому компьютеру, очередь к
которому в данный момент кратчайшая (очереди к компьютерам раздельные).
Дисциплина обслуживания – FIFO.
Обслуживание подразделяется на 5 различных видов, заданных в табл.3

Таблица 3
Вид операции Относительная частота Среднее время
обслуживания (с)
1 0,40 4
2 0,20 2
3 0,25 3
4 0,10 1
5 0,05 5

Время обслуживания каждого вида заявок имеет экспоненциальное


распределение. В случае возникновения «временных узлов» для событий
«приход клиента» и «завершение обслуживания» предпочтение отдается
последнему событию.
1. Разработать логическую схему имитационного моделирования.
2. Провести моделирование работы системы в течение 8 часов, выбрав в
качестве единицы времени 1 секунду.
3. Объяснить результаты, полученные при моделировании.

Вариант 3
Тема курсовой работы – «Моделирование работы магазина,
торгующего вычислительной техникой»
Ежедневный спрос на компьютеры подчиняется нормальному распределению с
математическим ожиданием 10 единиц и СКО, равном 2 единицы. Как только
запас магазина падает до (или ниже) заранее заданного уровня (точка
109
восстановления), поставщику посылают заказ на пополнение запаса.
Количество восстановления запаса всегда равно 100 единицам. Пополнение
приходит в магазин между шестым и девятым днем после подачи заказа.
Распределение времени дано в таблице.

Таблица 4
Дни Относительная частота Дни Относительная частота
6 0,05 9 0,22
7 0,25 10 0,18
8 0,30

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


Уровень товара проверяется только в конце рабочего дня, затем может быть
сделан заказ на пополнение. Пополнение также прибывает только после
закрытия магазина, т.е. может использоваться только на следующий день.
Выходных дней нет.
Разработать логическую схему имитационного моделирования.
1. Провести моделирование работы магазина в течение 1000 дней при точках
восстановления, равных 80, 90, 100.
2. Построить гистограммы потерь и дневных запасов.
3. Провести анализ полученных результатов.

Вариант 4
Тема курсовой работы – «Моделирование работы двух узлов
коммутации сети передачи данных»

Узлы коммутации соединены дуплексным дискретным каналом связи (ДКС).


На передающей стороне пакет из выходного буферного накопителя (ВыхБН)
узла коммутации попадает в кодирующее устройство (КУ), после чего
закодированная информация поступает в каналообразующую аппаратуру (КА).
На приемной стороне из КА пакет поступает в декодирующее устройство
(ДКУ), которое настроено на обнаружение ошибок. Если ошибки при передаче
пакета не обнаружено, приемник посылает на передающую сторону короткое
сообщение о правильности приема.
В противном случае передается сигнал о необходимости повторного
сообщения.
Провести моделирование работы узлов коммутации при следующих условиях:
- емкость накопителей УК – 15 пакетов;
- средний интервал времени между моментами поступления пакетов
в УК – 35 единиц времени;
- время передачи пакета данных – 25 единиц времени;
- время передачи пакета подтверждения – 1 единица времени;
- время обработки пакета данных в центральном процессоре – 3
единицы.
110
1 Разработать логическую схему имитационного моделирования.
2.Провести имитационное моделирование работы, имитируя доставку 1500
пакетов.
3. Собрать статистические данные, характеризующие время передачи
данных.
4. Проанализировать загрузку процессора и каналов связи.

Вариант 5
Тема курсовой работы – «Задача о запасных устройствах для
компьютера»
Один из блоков лабораторного компьютера периодически выходит из строя.
Время его безотказной работы распределено по нормальному закону со
средним значением 350 часов и СКО, равным 70 часам. Дежурный техник
снимает неисправный блок и заменяет его исправным, если таковой есть в
наличии. Время, необходимое для снятия блока, равно 0,4 часа. Время
установки блока – 0,6 часа.
Неисправный блок ремонтируется инженером. Время ремонта подчиняется
нормальному распределению со средним значением 8 часов и СКО, равным 0,5
часа. Отремонтированные блоки используются снова. Инженер ремонтирует
также устройства, поступающие из коммерческого вычислительного центра и
имеющие более высокий приоритет. Интервалы между поступлениями этих
устройств подчиняются экспоненциальному распределению со средним
значением, равным 4 часам. Время, требуемое на их ремонт, подчиняется
равномерному распределению: среднее значение – 8 часов, разброс – 4 часа.
Провести моделирование системы за 5 лет, предполагая сорокачасовую
рабочую неделю.
Определить коэффициент использования компьютера как функцию числа
запасных устройств – n (n = 0,1,2,3).
Минимальный интервал времени положить равным 0,1 часа.

Вариант 6
Тема курсовой работы – «Информационно-измерительная
система»
Информационно – измерительная система состоит из 4-х процессоров и двухсот
датчиков. Интервалы времени между сигналами прерывания от датчиков
распределены экспоненциально. Среднее время составляет 10 минут. Все
процессоры равноценны. Каждый из них обслуживает сигнал прерывания в
среднем за 0,03 минуты. Время обслуживания также имеет экспоненциальное
распределение. Если процессоры заняты, запросы заносятся в буфер. Емкость
буфера – 3 запроса. Если буфер занят, запрос покидает систему не
обслуженным. Время пребывания заявки в системе ограничено и подчиняется
равномерному распределению со средним значением 3 +(-) 1 минута
Приоритеты запросов одинаковы.
Дисциплина обслуживания – FIFO.
111
Провести имитационное моделирование системы в течение 10 дней.
Выполнить аналитическое моделирование.
Сравнить полученные результаты.

Вариант 7
Тема курсовой работы – «Исследование надежности
вычислительных систем»

Вычислительная система предназначена для решения определенного типа задач


и должна отличаться высокой надежностью. В систему входят 3 компьютера:
один основной и два резервных. Время безотказной работы компьютера
подчиняется экспоненциальному распределению со средним значением 500
часов. Считается, что с помощью системы автоматического переключения
вышедший из строя компьютер мгновенно заменяется исправным (при
холодном резервировании). Методом имитационного моделирования
определить вероятность безотказной работы системы через 100, 200, 300, …,
1000 часов работы:
- при работе в режиме «холодного» резервирования;
- при работе в режиме «горячего» резервирования;
Определить вероятность безотказной работы системы в режиме с
восстановлением, если интенсивность восстановления равна 24 часам, а время
восстановления подчиняется экспоненциальному распределению.

Тесты для самоподготовки

1. Как в процессе моделирования представляются системы с очередями


(Q – схемы)?
1) Системы с очередями представляются дифференциальными уравнениями.
2) Системы с очередями представляются вероятностными автоматами.
3) Системы с очередями представляются сетями Петри.
4) Системы с очередями представляются в виде систем массового
обслуживания.
5) Системы с очередями представляются в виде набора транзактов.

2. Что понимается под математическим моделированием?


1) Это процесс решения системы дифференциальных уравнений.
2) Это анализ устойчивости системы.
3) Это процесс установления соответствия данному реальному объекту
некоторого математического объекта, называемого математической
моделью, и исследование этой модели.

112
4) Это нахождение корней характеристического уравнения системы.
5) Это отображение некоторых дифференциальных уравнений,
описывающих систему, в частотную область.

3. Что такое « математическая схема»?


1) Это набор входных воздействий на систему.
2) Это набор выходных функций.
3) Это набор ограничений на параметры системы.
4) Это результат функционирования системы.
5) Это звено при переходе от содержательного к формальному описанию
процесса функционирования системы.

4. Как в процессе моделирования представляются непрерывно –


детерминированные модели (D – схемы)?
1) D – схемы представляются конечными автоматами.
2) D – схемы представляются дифференциальными уравнениями.
3) D – схемы представляются вероятностными автоматами.
4) D – схемы представляются системами с очередями.
5) D – схемы представляются агрегативными системами.

5. Что понимается под системами массового обслуживания (СМО)?


1) Под СМО понимают динамическую систему, предназначенную
для эффективного обслуживания заявок при ограниченных ресурсах
системы.
2) Под СМО понимают динамическую систему, предназначенную для
эффективного обслуживания заявок при неограниченных ресурсах
системы.
3) Под СМО понимают набор каналов обслуживания.
4) Под СМО понимают канал обслуживания с очередью.
5) Под СМО понимают очередь заявок с наивысшим приоритетом.

6. Что такое замкнутые системы массового обслуживания (СМО)?


1) Это системы, в которых число заявок, вырабатываемых источником,
не ограничено.
2) Это системы с приоритетом.
3) Это системы, в которых число заявок конечно.
4) Это системы, в которых входные потоки – простейшие.
5) Это системы без очередей.

7. Что такое стохастические сети?


1) Это сети компьютеров для обслуживания корпораций.
2) Это системы массового обслуживания с приоритетами.
3) Это системы массового обслуживания без приоритетов.
4) Это системы массового обслуживания с многоканальными устройствами.

113
5) Это совокупность систем массового обслуживания, связанных между
собой.

8. Какие потоки заявок называются простейшими?


1) Это потоки заявок без приоритетов.
2) Это потоки заявок, обладающие свойствами:
- стационарности;
- ординарности;
- отсутствия последействия.
3) Это потоки «нетерпеливых» заявок.
4) Это потоки обслуженных заявок.
5) Это потоки не обслуженных заявок.

9. Какому закону распределения подчиняются интервалы времени


между приходом заявок, если входной поток – Пуассоновский?
1) Равномерному.
2) Нормальному.
3) Биномиальному.
4) Экспоненциальному.
5) Эрланга.

10.Что определяет дисциплина обслуживания в СМО?


1) Правило выбора заявок из очереди.
2) Приоритет заявки.
3) Время обслуживания заявки.
4) Время пребывания заявки в очереди.
5) Максимальное время нахождения заявки в системе.

11.Чему равна сумма вероятностей всех возможных состояний системы?


1) Нулю.
2) Числу мест в очереди.
3) Единице.
4) Вероятности отказа в обслуживании.
5) Вероятности того, что все места в очереди заняты.

12. Что называется приведенной интенсивностью входящего потока


заявок?
1) Это число заявок, обслуживаемых системой за единицу времени.
2) Это число заявок, поступающих в систему за единицу времени.
3) Это отношение числа обслуженных заявок к общему числу заявок,
поступивших в систему.
4) Это отношение числа нетерпеливых заявок, покинувших систему, к
общему числу заявок, поступивших в систему.

114
5) Это отношение общего числа заявок, поступающих на вход системы за
среднее время обслуживания одной заявки.

13. Что такое время реакции системы?


1) Это время пребывания заявки в очереди.
2) Это время пребывания заявки в системе.
3) Это время пребывания заявки в канале обслуживания.
4) Это допустимое время пребывания в системе нетерпеливой заявки.
5) Это время пребывания заявки в цепи будущих событий.

14. Что называется транзактом в системе GPSS?


1) Транзакт – это обслуживающий прибор.
2) Транзакт – это сегмент программы на языке GPSS.
3) Это максимальный приоритет, который может иметь заявка.
4) Это заявка, требующая обслуживания в системе.
5) Это блок, уничтожающий заявки.

15. Как имитируется время обслуживания заявки в системе GPSS?


1) С помощью оператора ADVANCE.
2) С помощью оператора QUEUE.
3) С помощью оператора TERMINATE.
4) С помощью оператора GENERATE.
5) Методом назначения приоритетов.

16. Каким образом развязываются «временные узлы»?


1) Введением в систему многоканальных устройств.
2) Удалением из системы нетерпеливых заявок.
3) Повышением приоритета заявки, назначаемой на обслуживание.
4) С помощью дисциплины ожидания LIFO.
5) Увеличением числа мест в очереди.

17. С помощью какого из перечисленных операторов осуществляется


переход транзакта в блок, следующий не по порядку?
1) С помощью оператора SEIZE.
2) С помощью оператора DEPART.
3) С помощью оператора ADVANCE.
4) С помощью оператора TERMINATE.
5) С помощью оператора TRANSFER.

18. Когда прекращается моделирование в сиcтеме GPSS?


1) После обслуживания 1000 транзактов.
2) Когда счетчик числа завершений будет равен нулю.
3) После обслуживания транзакта с максимальным приоритетом.

115
4) Если вся очередь будет заполнена.
5) При входе транзакта в цепь пользователя.

19. Как повысить достоверность результатов при имитационном


моделировании?
1) Увеличить число мест в очереди.
2) Ввести в систему многоканальное устройство.
3) Удалить из системы нетерпеливые заявки.
4) Увеличить время моделирования.
5) Ввести соответствующим образом систему приоритетов.

20. Как связаны между собой характеристики и параметры СМО?


1) Характеристики вторичны по отношению к параметрам.
2) Параметры вторичны по отношению к характеристикам.
3) Никак не связаны.
4) Параметры характеризуют многоканальные устройства, а характеристики
– приборы.
5) Характеристики определяются до начала моделирования, а параметры
представляют собой результаты моделирования.

Библиографический список

116
1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов –
М.: Высш.шк, 2001.
2. Вероятностные методы в вычислительной технике: Учеб. пособие для
вузов по спец. ЭВМ / А.В.Крайников, Б.А.Кудриков, А.Н.Лебедев и др.;
Под ред. А.Н.Лебедева и Е.А.Чернявского. – М.: Высш.шк., 1986..
3. .Альянах И.Н. Моделирование вычислительных систем. – Л.:
Машиностроение., 1988.
4. Кудрявцев Е.М. GPSS World. Основы имитационного моделирования
различных систем..- М: Из – во ДМК .2004.
5. Шрайбер Т.Дж. Моделирование на GPSS. – М.: Машиностроение, 1980.-
6. Советов Б.Я., Яковлев С.А. Моделирование систем: Практикум. – М.:
Высш.шк,1999.
7. Власов Л.В., Колесников Д.Н., Сорокин И.А. Имитационное
моделирование систем массового обслуживания с использованием GPSS
- Л.: Из – во Ленингр. политехн. ин – та, 1989.

117

Оценить