Главная      Учебники - Разные     Лекции (разные) - часть 15

 

Поиск            

 

Указания методические по курсовому проектированию по курсу «Исследование систем управления» кафедра информационных технологий в экономике и бизнесе

 

             

Указания методические по курсовому проектированию по курсу «Исследование систем управления» кафедра информационных технологий в экономике и бизнесе

МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РФ

Санкт-Петербургский Государственный университет
аэрокосмического приборостроения

Варжапетян А.Г.

ИССЛЕДОВАНИЕ СИСТЕМ УПРАВЛЕНИЯ МЕТОДАМИ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ

Методические указания по курсовому проектированию
по курсу «Исследование систем управления»


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

Санкт-Петербург

2004

Содержание

Список основных сокращений 4

Введение 5

Глава 1. Организация выполнения курсового проекта 8

1.1 Указания и правила выполнения курсового проекта 8

1.2 Основные этапы выполнения курсового проекта 8

1.3Примерные сроки выполнения 9

Глава 2. Математическое обеспечение моделирования. Основные понятия теории массового обслуживания 11

2.1 Потоки случайных событий 11

2.2 Основные обозначения теории МО 13

2.3.Некоторые аналитические модели ……………………….. 16

2.3.1Распределение вероятности длительности интервалов между заявками 18

2.3.2 Распределение вероятностей длительностей обслуживания 18

Глава 3. Средство компьютерного моделирования - ЯИМ GPSS/H 22

3.1Назначение и структура ЯИМ 22

3.2 Описание языка моделирования 27

3.2.1. Структура модели 27

3.2.2. Логика работы системы моделирования 28

3.3 Операторы ЯИМ 30 3.3.1. Операторы блоков (исполнения) ………………… 30

3.3.2. Операторы управления 40

3.3.3 Операторы описания 49

3.3.4. &-переменные( амперпеременные –АМП) 51

3.3.5. Случайные числа и функции 52

3.4 Работа с пакетом GPSS/ H 53

3.4.1 Создание файла, содержащего модель GPSS/H 53

3.4.2. Интерпретация результатов 57

3 .5 Правила окончания процесса моделирования 58

3.5.1 Правило окончания по числу стартов. 58

3.5.2 Правило окончания по времени испытаний 60

3.6 Работа с отладчиком ЯИМ 62

3.6.1 Запуск отладчика 62

3.6.2 Содержание окон. 64

3.6.3 Выход из сеанса отладчика. 65

3.6.4 Функциональные клавиши 65

3.6.5 Команды и коды объектов 66

3.6.6 Основы использования отладчика 67

3.6.7 Практические советы по работе с отладчиком 72

3.7 Примеры использования ЯИМ 73

3.7.1 Пример 3.1 моделирования системы контроля качества 73

3.7.2 Пример использования команд отладчика 76

ЛИТЕРАТУРА 80

Список основных сокращений

АМП - амперпеременная

ВЭ - вычислительный эксперимент

ГСЧ - генератор случайных чисел

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

FCFS ( устаревшее - FIFO ) - первый пришёл, первый обслужился

SPT (shortest process time ) – наикратчайшее время обслуживания

ЕМВ - единица модельного времени

ИМ - имитационное моделирование или модель

ИН - идентификационный номер транзакта

КМ - компьютерное моделирование

КО - канал обслуживания

МАВ - машинное время

МВ - модельное время

ММ - математическое моделирование

МФ - модельный файл

ОБ - оператор блоков

ОО - оператор описания

ОУ - оператор управления

ПО - прибор обслуживания

ПР - пакетный режим

РВ - реальное время моделируемой системы

РРСЧ - равномерно распределённое случайное число

СБС - список ( цепь ) будущих событий

СЛА - стандартные логические атрибуты

СМО - система массового обслуживания

СП - список ( цепь ) пользователя

СЗ ( TG 1 ) - счётчик завершений (число терминирований )

ССА - стандартные символьные атрибуты

СТС - список текущих событий

СЧА - стандартные числовые атрибуты

ТР - тестовый режим (режим дебагера)

УО - устройство обслуживания

Ха , Хакт - активный транзакт

ЯИМ - язык имитационного моделирования

Введение

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

Для создания таких моделей возможно использование как традиционных (так называемых универсальных языков программирования – УЯП), так и специализированных программных средств (языков имитационного моделирования – ЯИМ). Первые из них имеют следующие преимущества:

- доступность (большинство интерпретаторов распространенных УЯП, например, PASCAL, C++, распространяются за символическую плату, причем книги и прочую дополнительную информацию можно найти в любом специализированном магазине),

- возможность решения широкого класса задач,

- простота создание интерактивных дружественных интерфейсов для работы с конечным продуктом.

С другой стороны, специализированные языки имитационного моделирования по некоторым показателям превосходят УЯП. Их достоинства:

- значительно меньшие размеры программы, содержащей модель;

- идеологическое соответствие используемого средства поставленной цели;

- наличие специальных средств для обеспечения независимости случайных величин, генерируемых внутри программы;

- наличие специальных средств для отладки модели;

- относительная простота построения модели (по сравнению с УЯП).

Перечисленные выше особенности позволяют сделать однозначный выбор в пользу специализированных программных средств. Эти средства могут применяться, как в случаях простых моделей, когда на ЯИМ может получаться программа их нескольких строк, так и в случаях сложных моделей, когда написание модели на УЯП будет занимать чрезвычайно много времени из-за необходимости учитывать множество свойств моделируемого объекта. В последнем случае существенным может стать и то обстоятельство, что модели на ЯИМ обычно требуют значительно меньшего времени на прогон (реализацию моделирования).

По каким же критериям может быть осуществлен выбор ЯИМ для конкретной задачи моделирования? Основные свойства, определяющие предпочтительность того или иного языка моделирования, следующие:

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

· простота применения для построения модели, реализация ее и представление результатов моделирования;

· предпочтение пользователя (удобство, простота, универсальность).

Выделим теперь несколько ЯИМ, приспособленных к решению задач, возникающих при имитационном моделировании человеко-машинных систем: наиболее известны такие языки, как GPSS, SIMSCRIPT и SIMULA. Сравнение этих программных средств по перечисленным выше критериям приведено в таблице 1.

Таблица 1

Сравнительные характеристики языков имитационного моделирования

Возможности языка

Простота применения

Предпочтение пользователя

SIMULA

GPSS/H

SIMSCRIPT

GPSS/H

SIMSCRIPT

GPSS/H

SIMSCRIPT

SIMULA

SIMULA

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

На приведенной ниже схеме представлена логика обращения к ЯИМ GPSS, а точнее его последней и наиболее эффективной версии GPSS/H.

Виды моделирования : Физическое

Аналитическое

Компьютерное

Типы компьютерного моделирования:

Монте - Карло

Статистическое

Имитационное


Разновидности ИМ:

Симула

Симулинк

… (более 500 разновидностей)

GPSS

Версии GPSS :

GPSS 360 (IBM, 1963, J.Gordon)

GPSS V ( DC, 1971, P. Hall)

GPSS PC (MSW, 1974, T. Springer)

GPSS World (MSW, 1999, A.Cox, T. Springer)

GPSS/H (Wolverine SWC, 1999, T. Henriksen)

GPSS/H является наиболее эффективной версией из текстово-ориентированных версий GPSS (Л.1,2), а последний вариант GPSS World имеет интерфейс, приближенный к Windows. Профессиональная 32- разрядная версия GPSS/H работает под всеми версиями Windows: 98, 2000, NT, XP, версия, используемая для курсового проектирования, является студенческой (ограничение по числу операторов создаваемой модели, не более 100 и работа под МS DOS или предпочтительнее в оболочках NC, Far, VC). Кроме этих отличий студенческая версия дает полное представление о возможностях ЯИМ GPSS/H,

Позволяет получить начальные навыки работы как с самой программой, так и со встроенным отладчиком. Кроме задания по курсовому проектированию желательно, предваряя работу над заданием, провести практическое изучение различных вариантов построения модельного файла - МФ, изучить возможные ошибки и реакцию на них программы, воспользовавшись примером 3.2 параграфа 3.7 рассмотреть влияние разных команд отладчика.

Для использования возможностей программы достаточно РС 486.

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

Глава 1.
Организация выполнения курсового проекта
.

1.1 Указания и правила выполнения курсового проекта

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

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

В ходе выполнения курсового проекта студент должен:

-выполнить формализацию описания ИС как дискретной системы,

-разработать алгоритмическое описание работы модели ИС,

-составить схему блоков (операторов) на языке GPSS/H-PC,

-провести моделирование в компьютерном классе кафедры,

-провести качественную и количественную оценку результатов,

-составить пояснительную записку.

1.2 Основные этапы курсового проекта

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

К основным этапам моделирования сложных ИС относятся:

- Построение концептуальной модели ИС и её формализация.

- Алгоритмизация модели ИС и её машинная реализация.

- Получение и интерпретация результатов моделирования.

На первом этапе проводится изучение ИС с целью выделения основных составляющих процесса функционирования, определяются необходимые аппроксимации, и получается обобщённая схема модели, описывающая дискретные системы, описываемые теорией массового обслуживания. Основные аналитические модели ИСУ представляемые в виде систем массового обслуживания - СМО, приведены в главе 2 настоящих указаний.

На втором этапе полученная концептуальная (аналитическая) модель становится основой для разработки моделирующего алгоритма и построения имитационной модели на основе пакета GPSS/H. Описание особенностей моделирования на языке GPSS/H, описание блоков (операторов), а также примеры приведены в главе 3.

На третьем этапе осуществляется процесс моделирования, определяются заданные характеристики, делаются выводы и даются рекомендации.

1.3 Примерные сроки контроля выполнения проекта

Для выполнения курсового проекта достаточно PC IBM 386 DX, а при использовании языка GPSS/H –PC v.3 , РС 486 серии или Пентиум. Для контроля процесса курсового проектирования следует

ориентироваться на примерные этапы приведенные ниже.

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

Проектный этап (5 – 9 недели) Студент должен ознакомиться с возможностями программного пакета (ПП), определить перечень функций, реализуемых блоками ПП, составить блок-схему,

выбрать критерии эффективности.

Реализационный этап (10 – 13 недели). Студент должен

окончательно отладить программу, получить и проанализировать результаты моделирования на ЭВМ.

Оформительский этап (14 – 15 недели). Студент должен оформить пояснительную записку в соответствии с принятыми в Университете требованиями. Записка должна давать достаточно полное представление о принципе решения задачи моделирования и включать все необходимые разделы, в том числе: выводы, заключение и список использованной литературы. Общий объём записки не должен превышать 20 листов. Текст может быть написан от руки или набран на компьютере.

Заключительный этап (16 - 17 недели) - защита курсового проекта, которая осуществляется в соответствии с принятым на кафедре порядком.

Глава 2 .
Математическое обеспечение моделирования. Основные понятия теории массового обслуживания

2.1. Потоки заявок и их характеристики

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

- протяженности во времени,

- характера возникновения событий (отношения с внешней средой)

Рассмотрим эти понятия подробнее.

Протяженность во времени

Существует только два вида протекания, какого либо процесса во времени. Время может рассматриваться либо как непрерывная переменная t [ 0 , T ], либо как дискретная переменная - t =i, i = 0,1,…M, M= [ T / ], где - шаг дискретизации . Соответственно припишем индексы Н и Д этим двум видам процессов, описываемых аналитическими моделями. Индекс Н соответствует аналоговым сигналам (постоянный, монотонный, синусоидальный и т. д.). Индекс Д дискретным сигналам (импульсный, в виде отдельного импульса или их последовательности; цифровой , подобно 1 и 0 в ЭВМ и т.п. ) .

Характер возникновения событий

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

С учётом сказанного, классификация позволит рассматривать четыре типа моделей, а именно:

НП – модели, ДП – модели, НВ – модели, ДВ – модели.

Очевидно, что всё многообразие аналитических моделей можно разнести по этим классам. Обзор аналитических моделей невозможно провести в рамках указаний, подробнее см. (Л. 1,2). Ниже ограничимся сводной таблицей 2-1, которая содержит только некоторые аналитические модели и определяет область их применения. Отметим, что приводимая ниже таблица иллюстрирует лишь предлагаемую идею классификации и не более того. НВ - модели наиболее подходят для моделирования на GPSS/H.

Таблица 2.1 Классификация математических моделей

Тип ММ

Характеристика

НП

ДП

ДВ

НВ

Вид

зависимости

Дифференциальные

и интегральные

уравнения

Теория разностных уравнений, конечные автоматы

Разностные стохастические уравнения, вероятностный автомат

Стохастические дифференциальные уравнения, теория массового обслуживания

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

- Моменты первого порядка (мера положения) или математическое ожидание (среднее арифметическое, среднее геометрическое, среднее гармоническое, среднее квадратическое). Чаще всего используется среднее арифметическое:

.

- Момент второго порядка (мера рассеяния) – дисперсия

,

или стандартное отклонение .

Иногда используются моменты и более высокого порядка, называемые мерами формы и оценивающие отклонение от нормального распределения: третьего порядка – ассиметрия и четвертого порядка – эксцесс.

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

Среди дискретных законов: Пуассона, Эрланга, геометрический и т.п.

Концептуальной схемой моделирования на GPSS/H является теория массового обслуживания. Как следует из названия, объект рассмотрения этой теории – так называемые «системы массового обслуживания» (СМО). При моделировании на GPSS/H мы будем иметь дело с двумя потоками событий:

- входными потоками требований (приход клиентов в банк, покупателей в магазин, подъезд машин на заправку или на погрузку и т.д.).

- потоками обслуживания приходящих заявок.

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

При обсуждении прихода заявок (транзактов) можно с одной стороны, говорить об интервалах времени, а с другой, о темпе прихода заявок. Так, например, если интервал времени (промежуток между двумя последовательными приходами транзактов) в среднем равен 20 минутам, то темп прихода транзактов равен 3 событиям в час. Обычно при моделировании на GPSS/H чаще интересуются интервалом времени, так как возможно предсказать следующее событие, а программа устроена таким образом, что время рассматривается как непрерывная переменная, т.е. к первому моменту времени прихода транзакта приплюсовывается время прихода второго и т.д. Поэтому случайное время прихода транзактов непрерывно !, а следовательно описывается непрерывным экспоненциальным распределением. В отличии от времени прихода, темп прихода дискретен по своей сути и измеряется целыми положительными числами. Так время прихода может быть любым, в том числе и дробным в заданном интервале, например , в то время как темп прихода в единицу времени (минуту, час, сутки, месяц и т.д.) может принимать значения 0,1,2,…. Время прихода описывается непрерывным экспоненциальным распределением с параметром потока , а темп прихода дискретным распределением Пуассона с параметром потока . Связь между этими параметрами проста, так . Например, если время прихода в среднем равно 5 минутам или 0,083 в час, то темп прихода равен 1/0,083 = 12.

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

- стационарности,

- ординарности,

- отсутствия последействия.

Стационарность случайного процесса означает, что на любом промежутке времени t вероятность прихода n заявок зависит только от числа n и величины промежутка t , но не изменяется от сдвига t по оси времени. При этом выполняется эргодическое свойство :- статистическое равенство n заявок , полученных при ИМ одной системы , или испытания n систем до прихода первой заявки . Формулирование этого свойства звучит достаточно просто : « Совокупное значение по времени наблюдений равняется совокупному по ансамблю наблюдений ».

Ординарность потока заявок означает невозможность появления более одной заявки в один и тот же момент времени.

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

1. Устойчивость

Свойство устойчивости состоит в следующем: при суммировании независимых простейших потоков получается простейший поток с интенсивностью, равной сумме интенсивностей складывающихся потоков:

Для практических задач можно считать, что всякий поток, образующийся из любых нескольких (хотя бы 4-5) независимых ординарных потоков, является простейшим, причем интенсивности суммируются.

2. Разряжаемость

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

,

где l - интенсивность исходного потока.

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

2.2 Основные обозначения теории массового обслуживания

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

В теории СМО разработаны идентичные модели для:

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

· Отыскания оптимального количества оборудования (число лифтов в офисном здании, число грузовых терминалов и т.п.).

· Определения производительности той или иной системы

( производительность ЭВМ, пропускная способность канала связи и т.п.).

Очевидно, что можно назвать дополнительные возможности СМО и заключить, что во многих исследуемых системах сочетаются все указанные выше модели. Более того теория СМО быстро развивается и появляются всё новые модели. В связи с этим ниже будут изложены только основополагающие идеи СМО, не претендующие, на какую либо новизну, являющиеся ориентиром для читателей не знакомых с теорией СМО и приводимые для лучшего понимания концептуальных основ ЯИМ GPSS/H .

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

Интенсивность потока заявок – среднее число заявок, поступающих в единицу времени. Интенсивность обозначается символом l. Величина, обратная интенсивности, представляет собой средний интервал между наступлением соседних событий: tср =1/l.

СМО можно описать, задавая (см. рис.2.1):

· входной поток заявок или требований – v ( t ) (в GPSS/H – транзакты), задающий вероятностный закон поступления заявок на обслуживание. Заявки могут поступать либо по одиночке, либо группами (пакетами). В GPSS/H входной поток задаётся оператором блока GENERATE .

·поток обслуживания – u ( t ) - задающий вероятностный закон процесса обслуживания заявок. В GPSS/H поток обслуживания задаётся оператором блока ADVANCE.

·прибор обслуживания – Pi , i =1,2, …, N, состоящий из накопителя Hm емкостью 0 m , при m = 0 происходит потеря обслуживания, а при

m = все заявки ожидают обслуживания, промежуточные значения определяют ёмкость накопителя . В состав прибора также входит канал обслуживания Kp , p=1,2,…,P при p =1 обслуживание называется одноканальным, а при p 1 - многоканальным .

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

· очередь - задержка в обслуживании поступающих заявок, характеризующаяся дисциплиной очереди , т.е. порядком обслуживания заявок. Можно назвать разные виды дисциплины обслуживания:

- FIFO - первый пришёл - первый вышел (обслужился), в англоязычной литературе эта известная аббревиатура всё чаще заменяется на FCFS (first come first serve) - первый пришёл - первый обслужился ,

- LCFS - последним пришёл - первым обслужился, эта дисциплина предназначена для заявок с более высоким приоритетом, но эта дисциплина используется крайне редко, а чаще используется дисциплина следующего вида,

- SPT (shortest processing time) - кратчайшее время обслуживания, которое применяется для заявок с приоритетом, в GPSS/H эта дисциплина реализуется оператором блока PRIORITY.

- случайная дисциплина, например система опроса слушателей на практических занятиях.

Подчеркнём, что в GPSS/H факт создания очереди реализуется связанной парой операторов блоков QUEUE / DEPART .

· Выходной поток – y ( t )- функция распределения, представляющая собой сумму двух вероятностных законов y1 (t ) - поток обслуженных заявок и y2 ( t ) – поток потерянных ( не обслуженных ) заявок, который образуется за счёт отказа в обслуживании из-за малого объёма накопителя по принципу m + 1 K, где К число заявок на входе прибора. В отдельных случаях заявка может остаться в приборе из-за окончания времени моделирования, поэтому в неравенстве появляется единица.

Всё сказанное объединим в рис 2.1. На рисунке 2.1 представлена структура прибора обслуживания с входящими и выходящими потоками. На рис. 2.1 б виды СМО, на котором прибор обслуживания для простоты представлен прямоугольником, внутреннее содержание которого представлено на рис. 2.1а.

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

Y2

Рис.2.1 а) прибор обслуживания- ПО- P , б–виды СМО , б1) одноканальная однофазная СМО , б2 ) многоканальная однофазная СМО , б3 ) одноканальная многофазная СМО , б4 ) многоканальная многофазная СМО . Обозначения : Н- накопитель, К - канал обслуживания, кружок - поток входных заявок, прямоугольник - ПО, ромб - поток обслуженных заявок.

В 1953 году Г. Кендалл предложил стандартные обозначения для введённых выше определений, которые и используются исследователями без изменений. Для однофазных СМО символика Кендалла выглядит следующим образом :

A / B / n / m 2.1

Где A и B входной поток и поток обслуживания соответственно ,

n – число каналов, n 1,

m - ёмкость накопителя.

Потоки случайных событий могут иметь различный вид:

- М – экспоненциальное распределение длительностей интервалов поступления заявок или длительностей обслуживания ( индекс М от определяющего слова марковский процесс , т.е. такой, когда поведение процесса после момента времени t зависит лишь от состояния процесса в момент времени t и не зависит от поведения до момента времени t),

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

- Ек - поток Эрланга к – го порядка для длительностей интервалов между приходами заявок или длительностей обслуживания,

- GI - рекуррентный поток (длительности интервалов статистически независимы и имеют одинаковое распределение),

- G - общий вид распределения.

Тогда в символах Кендалла вместо А и В подставляется символ одного из упомянутых потоков, например:

M/M/1 - экспоненциальные потоки с одним каналом обслуживания и неограниченной ёмкостью.

D/GI/5/10 - детерминированный входной поток, рекуррентный поток обслуживания, многоканальное СМО с 5 одинаковыми каналами, ёмкость накопителя 10 и т.д.

Описание любого варианта СМО на языке математики достаточно несложно, но практически малоценно, так как не отражает динамики процесса функционирования системы. Поэтому всегда существует необходимость, получив предварительные числовые ориентиры на основе аналитической модели, далее строить имитационную модель, для чего незаменим ЯИМ GPSS/H .

2.3. Некоторые аналитические модели СМО

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

2.3.1Распределение вероятности длительности интервалов между заявками

Пусть f ( t ) - плотность распределения длительностей t интервалов между любой парой смежных заявок. Определим параметр потока , как среднюю частоту появлений заявок, а 1/ , как среднее значение длительности интервала, тогда

t f ( t ) dt = 1/ . 2.2

Например, если за дискрету времени примем 1 час, а = 4, то среднее количество поступлений равняется 15 минутам (1 / = 0.25) и наоборот, если каждые 10 минут в систему поступает одна заявка, то частота поступлений равняется 0.1 заявок в минуту.

Для стационарного потока плотность определяется как:

f ( t ) = e - t t , 2.3

такое распределение называется экспоненциальным.

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

P n ( t ) = (( t ) n / n ! ) e t . n = 0,1,2,… 2.4

Полученные распределения отвечают всем свойствам простейшего потока.

Впредь будем полагать, что отсчёт времени начинается с момента Т 0.

Не трудно показать, что экспоненциальная функция распределения заявок и пуассоновский процесс обладают одинаковыми статистиками и их можно считать синонимами, поэтому, и принято обозначение марковский процесс или М – процесс.

2.3.2 Распределение вероятностей длительностей обслуживания

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

Пусть плотность распределения равна g (t), тогда среднее время обслуживания равно:

T0 = t g ( t ) dt = 1 / , 2.5

где - параметр (темп) потока обслуживания.

Так, например, если за дискету времени принять 1 час, а = 5, то в течение часа прибор обслужит 5 требований и среднее время обслуживания равно 12 минутам и наоборот, если на обслуживание заявки уходит 30 минут, то темп обслуживания = 2. При расчёте среднего времени обслуживания учитывается только время занятости прибора обслуживания.

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

G (t) = e - t при t 0, 2.6

при этом вероятность завершения обслуживания в интервале (t + t) не зависит от того, сколько времени уже потрачено на обслуживание этой заявки (пример системы, не обладающей памятью). Таким образом, если в момент t заявка уже обслуживалась, то в силу (2.6) в момент t + t вероятность того, что в этом интервале обслуживание не заканчивается:

P (t + t) e - . 2.7

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

P ( t + t ) 1 - , 2.8

а что заканчивается

P ( t + t ) . 2.9

Рассмотрим пример, в котором имеется возможность аналитического определения показателей эффективности функционирования СМО (М/М/1).

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

2.10

где Р n ( t ) - вероятность нахождения системы в состоянии в момент t, т.е. когда в ней находятся n заявок.

Вероятность нахождения в системе n заявок в момент времени (t + t) равна сумме трех вероятностей:

1) вероятности нахождения в системе n заявок в момент t, умноженной на вероятность того, что за время t в систему не поступает ни одной заявки и ни одна заявил не будет обслужена;

2) вероятности нахождения в системе (n - 1) заявки в момент t, умноженной на вероятность поступления одной заявки за время t, и ни одна заявка не будет обслужена;

3) вероятности нахождения в системе (n + 1) заявки в момент t, умноженной на вероятность ухода одной заявки, при условии не поступления ни одной заявки.

Заметим что,

2.11

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

2.12

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

Приравняв производные по времени t к нулю, получим уравнения:

2.13

Положим n =1, тогда (1+ )p1 = p2 + , повторяя эти операции, имеем рn = , причем

.

Следовательно, получим, что рn = рn (1 - ) геометрическое распределение.

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

, 2.14

.

Среднее число заявок, находящихся в накопителе, равно:

. 2.15

Среднее время ожидания заявок в накопителе равно:

. 2.16

Среднее время пребывания в системе равно:

E { w } = 1 / = 1 / 2.17

Сведём основные операционные характеристики рассматриваемой системы с дисциплиной FCFS (FIFO) в таблицу 2.2.

Таблица 2.2 Операционные характеристики СМО

1-

Ew

Etn

Ew

Etn

0.1

0.9

0.11

0.01

1

0.11

0.01

2

0.06

0.01

0.3

0.7

0.43

0.13

3

0.14

0.04

6

0.07

0.02

0.5

0.5

1.0

0.5

5

0.2

0.1

10

0.1

0.05

0.7

0.3

2.33

1.63

7

0.33

0.23

14

0.17

0.12

0.8

0.2

4.0

3.2

8

0.5

0.4

16

0.25

0.2

0.9

0.1

9.0

8.1

9

1

0.9

18

0.5

0.45

0.95

0.05

19.0

18.05

9.5

2

1.9

19

1

0.95

0.99

0.01

99.0

98.01

9.9

10

9.9

19.8

5

4.95

0.999

0.001

999.0

998.0

9.99

100

99.9

19.98

50

49.95

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

Рассмотрим конкретный пример использования Таблицы 2.2. Пусть дискрета времени равна 1 часу, а =0.8. Прибор простаивает в среднем 0.2 часа (12 минут), а среднее количество требований в системе равно 4. При (скорость обслуживания равняется 10 единиц в час), средняя продолжительность пребывания заявки в системе равняется 0.5 (30 минут), а пребывание в очереди из них занимает 24 минуты.

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

В данном разделе не рассмотрены другие более сложные модели использования теории массового обслуживания. Однако, следует подчеркнуть, что теория СМО прекрасно реализуется способами имитационного моделирования с использованием ЯИМ GPSS/H. Поэтому концептуальная основа теории СМО позволяет решать сколь угодно сложные практические задачи, встречающиеся в технике, бизнесе и информатике.

Глава 3.
Средство компьютерного моделирования - ЯИМ GPSS/H

Язык имитационного моделирования GPSS был создан в 1968 году фирмой IBM по заказу военно-морских сил США для моделирования сложнейших процессов снабжения флота, находящегося вдалеке от портов приписки. Поскольку тогда не существовало персональных компьютеров (датой их появления считается, по различным источникам, 1987 – 1988 год), первая версия GPSS предназначалась для работы в операционной среде и с техническими средствами тех времен (Л.2). Впоследствии язык неоднократно модифицировался, появилась версия, способная работать не только в операционной системе MS-DOS и в ее эмуляциях, но и непосредственно в ОС Windows’95,98, NT, XP.

Одна из последних версий GPSS, названная GPSS/H, выпущена фирмой Wolverine Software Corporation – автор James Henriksen в 1996 году, но к сожалению, пока не нашла широкого применения в России. В то же время ее отличает от старых версий множество новых положительных свойств и возможностей. Перечислим некоторые существенные достоинства:

- отсутствие собственной оболочки, что позволяет сократить время ознакомления с программой и упрощает работу во всех средах;

- наличие так называемого отладчика программ, или дебагера, что позволяет сократить и сделать более эффективным этап отладки программ;

- наличие фортраноподобных переменных (амперсант-переменных), которые позволяют значительно упростить многие операции и сделать модель более информативной для наблюдателя и удобной в работе;

- возможность управления форматом и количеством информации в файле отчета, содержащем результаты моделирования и т.д. (см. Л.1,2).

3.1. Назначение и структура GPSS/H

Назначение GPSS/H - General Purpose Simulation System, то есть общецелевая система моделирования. Это средство (ниже будут для краткости использоваться термины «язык» или «ЯИМ») предоставляет пользователю возможность создавать и «испытывать» имитационные модели различных по своему физическому устройству и назначению систем. Необходимо только, чтобы решаемая с помощью моделирования задача могла быть описана средствами теории систем массового обслуживания (которая перекрывает широкий класс задач). Строго говоря, под это определение подпадают объекты, «процесс функционирования которых можно представить в виде состояний и правил перехода из одного состояния в другое, определяемых в дискретной пространственно-временной области».

Объекты и элементы GPSS/H. Объекты GPSS/H классифицируются по категориям (см. таблицу 3.1), в таблице в графе «функции операторов блоков» приведены характерные (или единственные) представители операторов рассматриваемой категории.

Таблица 3.1. Объекты GPSS/H

№ кат.

Категория объекта

№ типа

Тип объекта

Мнемонич. обозначение

Функции операторов блоков

1

Динамическая

1

Транзакт

---------

Создание транзактов: GENERATE, SPLIT

Уничтожение транзактов: TERMINATE, ASSEMBLE

2

Операционная

2

ОБ ( блок )

------------

Объяснены в главе 5

3

Аппаратная

3

Устройства

F

(facilities)

Занятие – освобождение SEIZE – RELEASE

Захват – возврат PREEMPT – RETURN

Доступно - не доступно FAVAIL – FUNAVAIL

Выбор обусловленного направления GATE

4

Памяти (накопители )

S

(storages)

Войти – покинуть ENTER – LEAVE

Свободна – занята SAVAIL - SUNAVAIL

Ожидание изменения статуса – GATE

Изменение емкости памяти BSTORAGE

5

Логические ключи

L

(logic switch

Включение, выключение, инверсия LOGIC

Ожидание изменения положения L GATE

4

Вычислительная

6

Арифметическая переменная

V

(variable )

Целочисленное значение

VARIABLE

Плавающая точка FVARIABLE

7

Булева

переменная

BV

Задается логическими атрибутами СЛА

8

Функция

FN

Задается пользователем или встроенной функцией

5

Статистическая

9

Очереди

Q

Создание очереди – покидание

QUEUE – DEPART

10

Таблицы

T

Создать таблицу TABULATE

6

Запоминающая

11

Ячейки

Х

Создание скалярной переменной

12

Матрицы

М

Создание 2-х размерных матриц

13

Амперперемен.

&

Создание переменных 5-ти типов

7

Группирующая

14

Списки польз.

С

Включить – исключить LINK - UNLINK

15

Группы

G

Поместить – удалить JOIN – REMOVE

Проверка принадлежности – EXAMINE

Определение вида транзакта SCAN

Изменение атрибутов - ALTER

Каждому объекту соответствуют арифметические или логические атрибуты, описывающие состояние объекта в текущий момент модельного времени. Большинство из атрибутов не доступны для программиста. Атрибуты, к которым в ИМ можно обращаться, называются стандартными числовыми атрибутами (СЧА). Основными объектами GPSS/H являются транзакты и операторы исполнения ОБ (блоки).

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

Операционная категория включает блоки, которые задают логику функционирования ИМ системы и определяют пути движения транзактов между объектами аппаратной категории. Практически все изменения состояний ИМ (события) системы S происходят в результате входа транзактов в блоки и выполнения блоками своих функций.

Основные функции блоков следующие:

— создание (генерация) и уничтожение транзактов;

— изменение числовых атрибутов объектов;

— задержка транзакта на определенный интервал времени;

— изменение маршрута движения транзакта и др.

Проиллюстрируем эти функции на простом примере.

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

· Объекты аппаратной категории служат для описания единиц оборудования или ресурсов , имеющих ограниченную ёмкость. Воздействуя на эти объекты, транзакты могут изменять их состояния и влиять на движение других транзактов. Ресурсы включают в себя три типа объектов

Устройства описывают оборудование, которое в любой момент времени может быть занято только одним транзактом (одноканальные СМО): обрабатывающий центр, терминал, центральный процессор, АЦПУ, кассир и т.д., а также оборудование, на котором обслуживание одной заявки может быть прервано поступлением другой заявки (например, с более высоким приоритетом).

Памяти (многоканальные устройства) описывают оборудование, которое может использоваться несколькими транзактами одновременно (многоканальные СМО): оперативную память ЭВМ, бункер-накопитель в ГПС, стоянки автомобилей и т.д.).

Логические ключи используются для блокировки или изменения движения транзактов в зависимости от ранее наступивших в ИМ событий.

· Объекты вычислительной категории описывают связи между элементами СС, задаваемые с помощью аналитических или логических соотношений. Они могут служить для задания вероятностных законов распределения случайных величин в ИМ; для численного или логического описания условий, определяющих движение транзактов.

· Статистические объекты обеспечивают вычисление и представление в стандартном виде для показателей эффективности функционирования СС: средних значений, стандартных отношений, эмпирических функций распределения и т.п.

· Запоминающие объекты служат для задания условий моделирования, хранения, накопления и обработки информации, получение которой не предусмотрено стандартными средствами GPSS/H.

· Объекты группирующей категории содержат информацию о транзактах, находящихся в модели. Продвигаясь по модели, транзакты, имитирующие заявки на обслуживание, могут приводить к наступлению таких событий, как: поступление заявки в СМО; занятие (освобождение) места в накопителе; занятие (освобождение) канала обслуживания; прерывание обслуживания заявки с более низким приоритетом; совпадение значений определенных числовых атрибутов двух и более транзактов, называемых синхронизируемыми и т.п. При этом соответствующие транзакты помещаются в один из пяти списков (цепей, в оригинале –chain):

-список текущих событий - СТС (время наступления меньше либо равно текущему модельному времени),

-список будущих событий - СБС (время наступления больше текущего модельного времени);

- список прерываний (транзакты, обслуживание которых прервано);

- список синхронизируемых транзактов (находящихся в состоянии сравнения);

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

Чтобы при дальнейшем изложении придерживаться единой терминологии введем единое понятия оператора (Таблица 3.2), которое отличается от дословного перевода терминов оригинальной версии языка.

Таблица 3.2 Соответствие английских и русских названий

Обозначения оригинальной версии языка

Обозначения, введенные в материале

BLOCKS

Блоки

Операторы блоков

(блоки)

Сontrol Statements

Инструкция управления

Операторы управления

Compiler Directive

Директива компиляции

Операторы описания

Кроме указанных в Таблице 3.2 операторов для эффективного решения задач исследования системы необходимо иметь средства управления процессами модификации и отладки программ, сбора и обработки статистики и т.п. Решение любой задачи ИМ получается в результате реализации прогона или ряда прогонов модельного файла – МФ, получения и обработки собранной статистики и принятие решений на основе статистического анализа. Длительность испытаний зависит либо от заданной статистической точности, либо от заданного числа реплик в одном прогоне, либо от времени рассмотрения функционирования реальной системы (см. параграф 3.5).

В связи со сказанным необходимо чётко понимать какие времена рассматриваются при ИМ и представлять их различие.

· Тр - реальное время функционирования исследуемой системы S , которое

может быть очень большим, например 10n лет при исследовании космогонических процессов, либо, наоборот, очень малым 10 n секунд при исследовании процессов происходящих в микромире.

· Ти - машинное время имитации, отражающее затраты ресурса времени ЭВМ на организацию ИМ. В случае использования суперкомпьютеров, производительность которых превышает сотни гигафлоп, минута машинного времени может стоить несколько тысяч долларов. Это ограничение должно учитываться создателями ИМ и далее не рассматривается.

· Тм – модельное время, используемое в ИМ. Оно может быть сжато при исследовании процессов макромира или растянуто при оперировании со сверхбыстрыми процессами в реальной системе. Кроме того, именно модельное время позволяет избежать сложностей моделирования поведения реальной системы, так в реальной системе события могут происходить одновременно в разных компонентах системы, в обычных не мультипроцессорных ЭВМ параллельные события воплотить нельзя. Модельное время позволяет синхронизовать все события и реализовать квазипараллелизм. При создании ИМ задание временной дискреты модельного времени является обязательным условием до начала процесса ИМ. Естественно, что разные значения времени процессов обязательно должны быть выражены в едином масштабе временной дискреты модельного времени. Так, например, если временная дискрета задана в минутах, другие временные периоды: часы, сутки, годы должны быть так представлены в минутах.

Введем обозначения: - временной интервал моделирования системы S (интервал модельного времени), где:

- t 0 время начала моделирования (обычно полагают t0 = 0);

- Тм – время окончания моделирования;

- - текущее значение модельного времени.

В заключение параграфа приведем ряд определений:

программа или модельный файл - МФ на языке GPSS/H представляет собой описание поведения исследуемой системы, составленное согласно синтаксису языка. Делается это при помощи операторов (таблица 3.2), которые определяют правила перехода системы из одного состояния в другое. Изменение состояния модели называется событием модели . Одно проигрывание МФ называется реализацией, исполнение всех реализаций, оговоренное параметрами модели (числом стартов или временем моделирования) называется прогоном.

3.2. Описание языка моделирования

3.2.1. Структура модели

Модель на языке GPSS/H содержит несколько видов информации, а именно: что происходит с транзактом внутри модели (и с какой вероятностью), в каком режиме должна выполняться модель, сколько должно быть сгенерировано транзактов в этом прогоне модели и т.п., что собой представляют отдельные объекты, встречающиеся в программе. На рисунке 3.1 представлена блок-схема модельного файла.

1 ОУ SIMULATE

ОУ типа TABLE, STORAGE, FUNCTION.

ОО типа INTEGER, EQU

SIMULATE начало компиляции МФ

START - начало моделирования

END - конец моделирования

2 ОБ GENERATE ,

ОБ типа SEIZE, RELEASE, ADVANCE , TRANSFER ,

ОБ TERMINATE

3

ОУ START , END

ОУ типа CLEAR, DO , ENDDO


Рис.3.1 Блок-схема модельного файла

Модели GPSS/H всегда состоят из нескольких частей, соответствующих этим группам сведений.

Модуль 1 – модуль описания и управления. Начинается всегда с ОУ SIMULATE , что дает команду на компиляцию модельного файла. Модуль также может содержать другие операторы описания и управления. Содержимое модуля задает условия моделирования и само не исполняется.

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

Модуль 3 - модуль управления. Первый ОУ START дает команду на исполнение МФ, последний ОУ END дает команду на прекращение испытаний. Между ними может быть размещено любое количество операторов управления автоматизацией многократного процесса получения независимых прогонов и операторов очистки данных предыдущего прогона.

В ранних версиях языка для отображения оператора любого типа использовались специальные графические эквиваленты. Однако, при создании модели достаточно сложной системы (более сотни операторов), такое графическое представление становится сложным для восприятия, особенно когда используются многочисленные пересылки. В связи с этим, в последних версиях ЯИМ отказались от графической интерпретации и пользуются только текстовым описанием. В курсовом проекте не нужно использовать графическое представление!

3.2.2. Логика работы системы моделирования

Языки моделирования, основанные на имитации систем массового обслуживания, имеют некоторые принципиальные отличия в логике работы по сравнению с традиционными языками программирования. В обычных языках операторы выполняются один за другим, в том (или приблизительно в том) порядке, в котором они записаны. Во всяком случае, исключена ситуация, когда одновременно исполняется несколько команд. Для нормальной работы компилятора типа GPSS/H, напротив, для пользователя ситуация следующая: все операторы (блоки), имеющие отношение собственно к модели, работают параллельно (и часто одновременно). Кроме того, в модели одновременно существует несколько (теоретически неограниченное количество) транзактов, динамических объектов, которые вступают во взаимодействие с ресурсами (устройствами). Эти динамические объекты могут появляться и удаляться из модели, то есть их количество непредсказуемо наперед. Однако, при любом количестве транзактов в модели, активным в каждый момент времени является только один!

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

При запуске программы, содержащей модель на GPSS/H происходит следующее: запускается счетчик времени и генератор случайных чисел. Из последовательности чисел, выдаваемых этим генератором, формируются все случайные процессы, описанные в модели. Затем, после получения реализаций всех необходимых случайных величин (всех промежутков времени, оставшихся до событий типа появления нового транзакта, освобождения очередного блока и т.д.), выбирается наименьший временной интервал (то есть ближайшее по времени событие). Счетчик «прокручивается» до возникновения этого события, затем процесс повторяется до окончания моделирования по любому из возможных условий.

Таким образом, промежутки времени для нескольких ближайших событий модели на самом деле становятся известны GPSS/H задолго до их наступления. Фактически, транзакты появляются, то есть приобретают определенные атрибуты, еще до их вхождения в модель в блоке GENERATE.

Продолжая сравнение с обычными языками программирования, можно сказать, что в GPSS/H применяется особый вид псевдопараллелизма, при котором для пользователя события происходят параллельно. На самом же деле такое явление, как истинный параллелизм, то есть действительно одновременное совершение нескольких событий, недоступен в GPSS/H. Обращение к транзактам происходит поочередно, в каждый отдельный момент реального времени существует только один «активный» транзакт, тот, с которым происходит ближайшее по времени изменение статуса. Информация об остальных транзактах остается статической, а сами транзакты находятся в списке будущих событий.

При работе модели происходит не только создание, продвижение и уничтожение транзактов; GPSS/H также автоматически собирает информацию (по существу – статистические данные) обо всех объектах модели. Происходит подсчет периодов занятости и незанятости всех блоков, имитирующих устройства; поддерживаются виртуальные очереди, сведения о них также непрерывно пополняются (максимальная длина очереди, среднее и максимальное время, проводимое транзактом в очереди, количество «нулевых входов», то есть транзактов, не испытавших задержки перед попаданием в устройство, и т.д.).

Итак, после сказанного можно сформулировать основные принципы работы модели:

- В каждый момент времени в модели движется только один активный транзакт, следующий начинает движение только после возникновения одного из особых состояний: а) – попадания активного транзакта к одному из операторов, запрещающих дальнейшее продвижение, например SEIZE, RELEASE, PREEMPT, в этом случае транзакт ожидает входа перед оператором; б) задержка транзакта для обслуживания в операторе ADVANCE, в этом случае транзакт находится внутри оператора; в) исполнение оператора TERMINATE, в этом случае активный транзакт уходит из модели.

- Движение транзактов происходит последовательно от оператора к оператору из оператора текущего состояния ( Сurrent Block), в котором находится транзакт, в оператор ожидаемого будущего состояния (Next Block Attempted). В том случае, когда по условиям модели необходимо изменить последовательное поступательное (шаг за шагом) движение транзакта, используются специальные операторы исполнения типа (TRANSFER, TEST, LOGIC) см. 3.3.

- Жизненный цикл активного транзакта, состоит из зарождения, попадания в систему, прохождения через последовательность предписанных МФ операторов и терминирования (ухода из системы).

- Каждый транзакт имеет уникальный персональный идентификационный номер- (ID), закрепленный за одним единственным транзактом при его генерации. Номер всегда является целым положительным числом. Уход из системы не всегда происходит в порядке ID, что зависит от логики работы модели.

- Каждый уходящий из модели транзакт приплюсовывает свое время пребывания в модели ко времени пребывания в системе предыдущего терминированного транзакта. Таким образом достигается непрерывность абсолютного времени моделирования.

- Порядок окончания процесса моделирования определяется соответствующими машинными алгоритмами, подробнее см. 3.5.

Вся эта информация после компиляции и моделирования оказывается записанной в так называемом файле отчета (см. ниже).

3.3. Операторы GPSS/H

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

Каждый оператор ЯИМ GPSS/H состоит из двух частей: названия оператора , которое, в обязательном порядке пишется заглавными латинскими буквами, например GENERATE. Для длинных названий допустимо сокращение до четырех букв, например GENE, короткие имена, состоящие из 5 и менее букв, всегда пишутся полностью. Вторая часть, которая пишется через пробел, содержит характеристики оператора, которые называются операндами , обозначаются латинскими буквами A,B,C,… и пишутся через запятую без пробелов. Некоторые операторы имеют до девяти операндов, как GENERATE, другие, как END не имеет ни одного операнда. Операнд может быть представлен числом, именем или сложным выражением. Операнды, включаемые в квадратные скобки, могут по умолчанию отсутствовать. Отсутствие, какого либо операнда в середине записи отмечается запятой или запятыми, если отсутствует несколько операндов. Рассмотрение операторов, проведем в соответствии с таблицей 3.2. Описание операторов дается не по алфавиту как в (Л.2), а по значимости в МФ.

3.3.1. Операторы блоков (исполнения)

GENERATE (Генерировать, произвести, родить)

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

Формат:< GENERATE A,[B,C,D,E,F,G,H,I]>, где

А - среднее значение интервала времени;

В - разброс или модификатор среднего значения (по умолчанию - ноль);

С - время появления первого транзакта;

D - общее число генерируемых транзактов;

Е - уровень приоритета каждого транзакта (по умолчанию - ноль).

F,G,H,I – параметры транзакты.

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

GENERATE 2,1,,10

Эта запись читается следующим образом:

«Генерируется транзакт, распределенный по равномерному закону со средним значением 2 и модификатором 1, всего будет произведено 10 таких транзактов».

Как видно из формата, по умолчанию закон распределения временных интервалов - равномерный с управляемым средним и разбросом, что позволяет, в том числе, моделировать потоки с равными интервалами. Также в GPSS/H предусмотрена возможность задавать более сложные распределения. В том случае, когда используются встроенные функции (см. ниже), любая встроенная функция ставится на место операнда А, а операнд В отсутствует. Например:

GENERATE RVNORM(1,1,0.5),,1,4

Эта запись читается следующим образом:

«Генерируется случайное число ( Random Value- RV), распределенное по нормальному закону, взятое с первого генератора случайных чисел - ГСЧ

( первое число в скобках), со средним значением равным 1 и стандартным отклонением 0.5; пришедшее в систему в первую единицу времени. Всего с этого ГСЧ поступит 4 транзакта».

GENERATE RVEXPO(7,0.75),,,,5

Эта запись читается следующим образом:

«Генерируется случайное число, распределенное по экспоненциальному закону, взятое с седьмого ГСЧ с параметром потока 0.75, приходящее с приоритетом 5».

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

Оператор GENERATE не допускает входа транзактов в него! Любой транзакт, вошедший в оператор исполнения GENERATE, вызовет ошибку исполнения и прервет работу программы с выдачей предупреждения в листинге.

TERMINATE (Уничтожить, терминировать)

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

Формат: <TERMINATE [A]>, где:

А - величина, на которую будет уменьшен счетчик завершений. По умолчанию А=0. Операнд А может принимать любые значения в интервале от 0 до плюс бесконечности. Физический смысл числового значения операнда А заключается в задании веса терминирования. Например, на погрузочную площадку выходят двери 4 складов, большемерная фура занимает всю длину погрузочной площадки, и никакая другая машина не сможет производить погрузку. Окончание погрузки фуры (выход транзакта из системы) освобождает сразу 4 места. Эта цифра вычитается из числа стартов (счетчика завершений), подробнее см. в 3.5.

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

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

Итак два оператора исполнения GENERATE и TERMINATE являются особыми: в первый не могут входить транзакты, а из второго не могут выходить транзакты! Все остальные рассматриваемые операторы или блоки имеют и вход и выход.

SEIZE (завладеть), RELEASE (освободить)

Оператор SEIZE, является парным с оператором RELEASE, использование их по одиночке не допустимо. Имена, записываемые в операнде А пары должны быть идентичны. Оператор служит приглашением ко входу в одно из устройств модели. Транзакт, подойдя к блоку SEIZE, пытается занять устройство, названное в операторе. Если устройство занято, транзакт ожидает освобождения устройства перед этим оператором. Перед оператором SEIZE может находиться любое количество транзактов. При попадании первого транзакта на обслуживание в устройство, происходит переключение, осуществляемое программой, запрещающее вход в устройство до окончания обслуживания.

Формат:< SEIZE А>,

где А - имя (или номер) устройства.

Функция оператора RELEASE - моделировать освобождение устройства. Пройдя обслуживание в операторе ADVANCE, и исполнив, оператор RELEASE, транзакт переключает поименованное в операторе устройство из положения «занято» в положение «свободно» и разрешает вход в ADVANCE, первому из транзактов, ожидающих перед оператором SEIZE .

Формат: <RELEASE А>,

где А - имя (или номер) устройства.

ADVANCE ( продвижение вперед, успех)

Этот оператор моделирует задержку транзакта в устройстве (в терминах теории СМО - обработку заявки).

Формат:< ADVANCE A,[B]>, где

А - среднее время задержки,

В - разброс относительно среднего значения (модификатор).

На месте операнда А, как и в операторе GENERATE, может быть задана любая встроенная функция, тогда операнд В отсутствует.

Три описанных выше оператора составляют модель простейшей СМО на языке GPSS/H. Программа, в которой имеется такая последовательность операторов, будет отслеживать все статистические характеристики устройства.

ENTER ( войти), LEAVE (отпустить)

Эта пара операторов выполняет те же функции, что и SEIZE и RELEASE, но не для устройств, а для STORAGE - «хранилищ», то есть для ресурсов, к которым может обращаться более одного транзакта. Такие объекты могут быть полезны при моделировании, например, распараллеленного процесса: обработки потока деталей на нескольких одинаковых станках, выхода публики из театра через несколько дверей и т.д. Эти «хранилища», или устройства параллельной обработки, должны быть предварительно описаны в программе при помощи оператора описания STORAGE (см. ниже). По логике своей работы связки операторов SEIZE – ADVANCE – RELEASE; ENTER- ADVANCE- LEAVE; абсолютно одинаковы, но употребляются для разных объектов.

QUEUE ( образовать очередь), DEPART (выйти из очереди)

Помимо устройств, в которых происходит обработка заявок (задержка транзактов), необходимо собирать сведения о таких объектах, как очереди, образующиеся на входах устройств. В языке GPSS/H по умолчанию очередь образуется и функционирует нормально, но никаких сведений о ней не аккумулируется. Для организации сбора таких данных используется пара связанных операторов: QUEUE, который отмечает постановку заявки-транзакта в «хвост» очереди (в терминах модели это называется «конец очереди»), и DEPART, собирающий статистику об уходе транзактов из очереди при освобождении устройства. Эти два оператора ставятся по желанию пользователя, не влияют на основные статистические результаты листинга и могут быть поставлены для получения интересующей пользователя информации с любого объекта модели, где может происходить образование и накопление очереди. Они не препятствуют входу транзактов и имеют нулевое время входа. Последовательность постановки операторов:

QUEUE(имя)- SEIZE…. RELEASE- DEPART (то же самое имя).

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

Формат:< QUEUE А,[B]>, где

А - имя очереди (имена такого рода используются не только для удобства идентификации в процессе работы с моделью, но и для указания необходимых сведений при работе в оболочке);

В - число добавляемых в очередь элементов.

Строго говоря, оператор QUEUE увеличивает текущее содержимое очереди, определенной в поле А, на величину, указанную в поле В.

При прохождении оператора DEPART транзакт покидает указанную очередь, причем счетчик длины очереди уменьшается.

Формат: <DEPART A,[B]>, где

А - имя очереди,

В - число удаляемых из очереди элементов.

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

Пример

Предположим, в почтовое отделение приходят посылки приблизительно раз в три часа, независимо от времени суток. В зависимости от размеров посылки, ее «обслуживание» в отделении может с равной вероятностью занимать два, три или четыре часа. Ниже приведена простейшая программа (точнее, тело программы с опущенной нумерацией) на GPSS/H, моделирующая такой процесс:

GENERATE

3

Ввод в модель транзактов - посылок с интервалом в 3 часа

QUEUE

Q1

Постановка транзактов в очередь Q1

SEIZE

POST

Занятие транзактом устройства POST (начало обработки посылки)

ADVANCE

3,1

Задержка транзакта на время от 2 до 4 часов

RELEASE

POST

Освобождение устройства POST (окончание обработки посылки)

DEPART

Q1

Выход транзакта из очереди

TERMINATE

1

Вывод транзактов из модели по одному

Для облегчения процедуры сбора и анализа статистической информации об очередях в GPSS/H предусмотрены следующие стандартные числовые атрибуты очередей:

СЧА

Описание

Q(qname), Q(j)

Текущая длина очереди

QA(qname), QA(j)

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

QC(qname), QC(j)

Полное число транзактов, вошедших в очередь

QM(qname), QM(j)

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

QT(qname), QT(j)

Среднее время пребывания транзакта в очереди

QX(qname), QX(j)

Среднее время пребывания транзакта в очереди (за исключением тех, которые прошли без задержки)

QZ(qname), QZ(j)

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

TRANSFER (передать)

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

Формат: <TRANSFER [A],B,[C]>, где

А - вероятность перехода на метку блока, записанного в поле С;

В и С - метки блоков, между которыми предстоит выбирать.

Существуют 4 следующие основные варианты применения ОБ:

1. Безусловный переход:

< TRANSFER , B >

А - по умолчанию 0, заменяется обязательной запятой

В — не имеет значения по умолчанию, характеризует имя (адрес) блока, к которому направляется транзакт.

2. Условный переход с одним альтернативным адресом (режим " BOTH "):

< TRANSFER BOTH, B, C >

А - не имеет значения по умолчанию, операнд заменяется словом BOTH, указывающим тип режима;

В — по умолчанию обозначает, что Хакт следует в первый последовательный блок, при именовании операнда В характеризует имя (адрес) блока, к которому направляется транзакт(основной адрес);

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

3. Условный переход со многими альтернативами (режим " ALL "):

<TRANSFER ALL, B, C, D >

А – не имеет значения по умолчанию, операнд заменяется словом ALL, указывающим тип режима;

В — по умолчанию обозначает, что Х акт следует в первый последовательный блок, при именовании представляет собой первый адрес;

С — не имеет значения по умолчанию, определяет последний адрес;

D —не имеет значения по умолчанию, представляет собой константу М, используемую для вычисления возмож­ных адресов движения транзактов: адрес в поле В, затем — В+М, В+2М, ..., адрес в поле С.

4. Статистический переход (переход с заданной вероятно­стью):

<TRANSFER А, В, С >

А —не имеет значения по умолчанию, характеризует вероятность перехода транзакта по адресу С или часть времени используемую ОБ С;

В —по умолчанию является следующим последовательным ОБ, при именовании представляет собой альтернативный адрес.

В GPSS/H удобно использовать так называемую относительную адресацию, т.е. обращение к какому-либо блоку, не имеющему метки, осуществляется с помощью его относительного адреса. Для примера рассмотрим три варианта записи блока безусловного пе­рехода.

Примеры.

1. TRANSFER ,CPU2

2. TRANSFER ,*+3

3. TRANSFER ,CPU1+2

В первом примере ОБ (прямая адресация) направляет транзакт к блоку с именем CPU2. Два остальных — примеры отно­сительной адресации. Второй ОБ посылает транзакт к треть­ему по счету блоку после рассматриваемого ОБ. Блок, к кото­рому направляется транзакт последним ОБ, является вторым по счету от блока CPU1.

Далее приводятся примеры для варианта BOTH

1. TRANSFER BOTH,KASS1,KASS2,

2. TRANSFER BOTH,,TWO.

В примере 1 транзакт первоначально направляется к блоку с отметкой KASS1. При невозможности войти в этот блок транзакт направляется к блоку с меткой KASS2. В примере 2 транзакт дела­ет попытку войти в следующий блок, если ему это не удается, он направляется к блоку с именем TWO.

Пример для варианта ALL, приведём фрагмент программы :

TRANSFER ALL,FIRST,LAST,3

FIRST GATE LS AAA

ADVANCE 5

GATE LR BBB TRANSFER ,LAST+2

ADVANCE 2

TRANSFER ,LAST+2

LAST GATE LS CCC

ADVANCE 3,1

Транзакт последовательно пытается войти в следующие бло­ки: FIRST, FIRST+3, FIRST+6 (LAST).

Вариант вероятностного перехода

1. TRANSFER .370,THIS,THAT

В примере с вероятностью 0,37 транзакт перейдет к блоку ТНАТ (37% транзактов), а с вероятностью 0,63 - к блоку ТНIS (63% транзактов).

TEST (проверить)

Этот ОБ определяет направление движения транзакта в зависимости от выполнения условия, заданного алгебраическим соотношением. Оператор имеет расширенное поле операции, включающее общепринятые обозначения логических операций: L (меньше), LE (меньше или равно), E (равно ), NE (не равно ), G ( больше ), GE ( больше или равно ).

Формат записи имеет вид :

< TEST XX A, B, C >

XX - дополнительный код логической операции (L, LE, E, NE, G, GE.);

А - не имеет значения по умолчанию, представляет собой выражение, левая часть которого сравнивается с требуемой операцией, если сравнение истинно, то Хакт продвигается в следующий последовательный ОБ.

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

С - не имеет значения по умолчанию и представляет собой имя или номер ОБ к которому направляется Хакт, если результат сравнения ложный ( альтернативный адрес). Если операнд С отсутствует, а результат сравнения ложный, Хакт запрещён вход в ОБ TEST и сравнение проводится каждый раз, пока Хакт находится в СТС. Такое обстоятельство приводит к избыточному использованию памяти, в этом случае ( операнд С не определён ) следует пользоваться ОБ GATE. Рассмотрим примеры использования ОБ

1. ТESТ LE Q1,10

2. ТЕST NE S1,PF2

3. TEST GE PF1,PF2,CPU

В первом примере транзакт задерживается, если длина очереди 1 больше 10;

Во втором примере транзакт задерживается, если текущее содержимое памяти 1 равно значению 2-го параметра транзакта форматом "слово";

В третьем примере транзакт переходит к следующему блоку, если PF1 PF2, либо, в противном случае, направляется к блоку СPU.

ASSIGN (задать)

Этот ОБ изменяет атрибуты транзактов. К числу таких атрибутов относятся значения, записываемые в полях операндов F- I ОБ GENERATE. операнды F,G,H,I, относящиеся к параметрам транзакта, задаются по умолчанию в виде листов параметров и с помощью ОБ ASSIGN могут быть видоизменены.

Формат ОБ ASSIGN имеет вид:

< ASSIGN A,B,C,D >

A - не имеет значения по умолчанию , определяет имя или номер параметра, которому назначается значение. Если последний символ в операнде А + или -, то параметр уменьшается или увеличивается на значение, определяемое операндом В.

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

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

D - не имеет значения по умолчанию, определяет формат параметра PF(fullword), PH(halfword), PB(byte), PL(floating point) (по умолчанию PH ). Если функция отсутствует ( операнд С), то формат параметра сдвигается влево на место операнда С.

Рассмотрим несколько примеров :

1. ASSIGN 3+,5,,PB

2. ASSIGN 1-7,3

3. ASSIGN 5,2.5,,PL

В первом примере производится прибавление к значению параметра 3 5 единиц. Во втором примере параметрам с 1 по 7 приписывается значение 3 форматом полуслово. В третьем примере задаётся значение параметру форматом «плавающая точка».

PRIORITY

В процессе моделирования иногда приходится менять как дисциплину обслуживания, так и приоритет транзакта. Для этой цели используется ОБ PRIORITY, формат ОБ имеет вид :

< PRIORITY A >,

A - не имеет значения по умолчанию, определяет новое значение приоритета для Хакт. Транзакты удаляются при этом из СТС и возвращается обратно с новым приоритетом, становясь последним в список данного приоритета. Уровень приоритета в последней версии GPSS/H может изменяться от - 2147483632 до + 2147483632 .

Приведём пример использования ОБ

1. PRIORITY 5

В примере у транзакта переназначается приоритет.

TABULATE (Создать таблицу )

Этот ОБ используется для сбора дополнительной информации, которая не выводится в стандартном отчёте. Структура таблицы задаётся ОУ TABLE (см. параграф 3.3.2). МФ может содержать несколько таблиц, которые описываются в отчёте и каждая содержит размер выборки, стандартное выборочное отклонение, относительные и накопленные частоты Каждая таблица имеет свои СЧА, формат ОБ имеет вид:

< TABULATE A,[B] >

A - не имеет значения по умолчанию, определяет имя или номер таблицы, в которую вносятся желаемые наблюдения, описание таблицы даётся в модуле описания с помощью ОУ TABLE .

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

Рассмотрим примеры применения ОБ

1. TABULATE BLACK

2. TABULATE 2

3. TABULATE BLACK,2

В первом примере заполняется таблица с именем BLACK, во втором примере, таблица за номером 2, в третьем примере все данные вносятся с коэффициентом 2.

LOGIC ( проверить логику ), GATE ( запирать )

Эта комбинация ОБ LOGIC(Проверить логику) – GATE (Запирать) и ОУ INITIAL может находиться в одном из двух состояний « включено - выключено » и служит для сигнализации о состоянии моделируемой системы по отношению к сложившимся условиям. По терминологии GPSS/H логический переключатель может быть в установочном состоянии (set) - код состояния LS, либо свободен (clear)- код состояния LC. ОУ INITIAL задаёт начальное состояние или изменение состояния логического переключателя, а также сохраняемых величин ( Savevalue ) и матричных величин ( Matrix Savevalue ), его формат имеет вид:

< INITIAL А(n)/ A(n)/…>,

А - не имеет значения по умолчанию и обозначает один из кодов состояния LS, LС, содержимое скобок указывает на имя инициализируемого устройства, слэш “/” символизирует возможный набор устройств, например:

INITIAL LS(KEY)/LC(KNOB).

В этом примере начальное состояние логического переключателя KEY в положении “установить”, а начальное состояние логического переключателя KNOB в положении “ свободен “.

ОБ LOGIC изменяет состояние логического переключателя. Кроме кода действия, ОБ имеет дополнительные коды: S- установлен, C- свободен или переустановлен -R (reset ) и инвертирован – I, т.е. изменил состояние на противоположное, ОБ имеет формат:

< LOGIC X A > ,

X - дополнительный код S ,C( R ), I

A - не имеет значения по умолчанию и обозначает имя или номер логического переключателя, устанавливаемого в одно из состояний, задаваемых дополнительным кодом, например :

1. LOGIC S SWCH

2. LOGIC I KL1

В первом примере проходит команда на установку переключателя SWCH

Во втором примере инвертируется переключатель KL1.

Существуют два СЧА, относящихся к логическому переключателю, введённые выше, а именно LS и LC , которые обозначают следующее:

LC (имя или номер )- истинно, когда логический переключатель свободен, если это так, то СЧА равен 1, в противном случае СЧА равен 0.

LS ( имя или номер )- истинно, если логический переключатель установлен, если это так, то СЧА равен 1, в противном случае СЧА равен 0.

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

< GATE XXX A[,B ] >,

XXX - дополнительный код.

Для логического переключателя это LS и LC.

Для устройств:

- I- прервано, NI не прервано, U - захвачено или прервано, NU –ни захвачено и ни прервано, FV- доступно, FNV - не доступно, FS готово к захвату, FNS - не готово к захвату.

Для памятей:

- SE – пуста, SNE - не пуста, SF- полна,SNF- не полна, SV-доступна, SNV – не доступна.

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

- M- является членом группы, NM - не является членом группы.

А - не имеет значения по умолчанию ни для одного объекта, представляет собой имя или номер логических переключателей, устройств, памятей или ОБ, проверяющих наличие транзактов, отвечающих заданным условиям. ( К числу таких ОБ относятся ASSEMBLE ,GATHER , MATCH ).

В - при умолчании 0, в режиме перехода относится ко всем формам ОБ и указывает на имя или номер дополнительного , не последовательного блока к которому направится Х акт при ложности дополнительного кода , т.е указывает альтернативный адрес.

Приведём несколько примеров :

1. GATE LS 1

2. GATE FNV 7

3. GATE SF 16

4. GATE FNI 21,ALTR

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

Во втором примере транзакт блокируется пока устройство 7 занято .

В третьем примере транзакт блокируется до заполнения памяти 16 .

В четвёртом примере транзакт после прерывания устройства 21 переходит к ALTR.

В данном параграфе рассмотрены только те операторы блоков, которые потребуются для выполнения курсового проекта, на самом деле ОБ в языке больше и они участвуют в разделении транзактов, их группировании, выделении необходимых и т.д. Кроме того, в последней версии появилось 12 операторов управления с первой буквой В (индекс блока), которые могут включаться в модуль исполнения, упрощая функции управления моделью. Подробнее см. (Л.1,2).

3.3.2. Операторы управл ения

Как было указано выше, эти операторы используются для управления выполнением программы языка GPSS/H и описания других объектов, встречающихся в программе. Вначале рассмотрим три главных ОУ, без которых процесс моделирования не может быть осуществлен.

А. Главные операторы управления

SIMULATE (моделировать, воспроизвести)

Этот оператор указывает, что программа на языке GPSS/H должна быть выполнена после успешной компиляции. Располагается в начале модели, меток не имеет по определению, операндов при практической работе не имеет, хотя иногда используется операнд А, задающий лимит времени моделирования. При курсовом проектировании операнд не используется.

START (начать)

При исполнении этого ОУ происходят следующие события:

- счетчик завершений устанавливается в начальное значение,

- инициализируется процесс поступления транзактов в модель,

- начинается последовательное движение транзактов от ОБ к ОБ.

Формат ОУ имеет вид:

<START А>,

А – начальное значение счетчика завершений, от 1 и выше.

Метка у ОУ отсутствует по определению.

ЕND (окончить)

ОУ выполняет две функции, во первых, его наличие свидетельствует о физическом окончании модельного файла, а во вторых, его исполнение останавливает процесс моделирования и передает управление ОС.

ОУ не имеет операндов и меток.

Б. Операторы управления процессом моделирования

Далее рассмотрим ряд операторов управления, приводимых в алфавитном порядке, подробнее см.(Л.1,2).

CLEAR (очистить)

Этот ОУ позволяет провести от двух и более последовательных прогонов модели. Исполнение ОУ происходит после окончания одной реплики и началом другой, таким образом осуществляется связь между репликами. ОУ CLEAR всегда располагается в модуле управления между первым ОУ START и последним ОУ END, появление ОУ CLEAR требует обязательного парного ему ОУ START, т.е. при наличии в модуле управления нескольких ОУ CLEAR, обязательно должно быть столько же ОУ START, не считая первого, стоящего в начале модуля. Исполнение ОУ CLEAR приводит к следующим последствиям :

· Относительное и абсолютное время обнуляются .

· Все транзакты, находящиеся в модели к моменту окончания процесса ИМ, т.е. вошедшие в модель, но не дошедшие до ОБ TERMINATE уничтожаются.

· Все устройства и памяти модели возвращаются в состояние готовности ( не занятости ).

· Все статистические данные обнуляются (число использованных ОБ, число входов в устройства, памяти и очереди, максимальное содержание памятей и очередей и т.д. ).

Повторение нового прогона необходимо для сбора статистических данных о модели, однако при этом нельзя забывать того обстоятельства, что при простом повторении прогона генераторы случайных чисел -ГСЧ стартуют с одной и той же позиции и выходная статистика от прогона к прогону не будет изменяться. Для того, чтобы прогоны сделать статистически независимыми необходимо, чтобы ГСЧ не возвращались в исходное положение. ОУ CLEAR позволяет, дополнительно к вышесказанному, сделать это за счёт реализации следующих положений :

· ГСЧ остаются в том положении, в котором они находились на момент окончания предыдущего прогона, т.е. начальное положение ГСЧ следующего прогона отличается от предыдущего, что позволяет сделать результаты прогонов статистически независимыми.

· Счётчик ИН транзактов также не обнуляется и номера транзактов нового прогона являются продолжением после последнего номера транзакта предыдущего прогона ( например, если предыдущий прогон кончился ИН 104, то новый начинается с ИН 105).

Формат ОУ CLEAR имеет вид :

< CLEAR >

Необходимо отметить , что ОУ никогда не имеет ни меток (ярлыков), ни операндов. Пример применения ОУ CLEAR будет приведен непосредственно при рассмотрении примера в 3.7.

FUNCTION ( функционировать )

Этот ОУ используется для определения характера функции, связывающей независимую переменную с рядом зависимых величин. Эта связь может иметь непрерывный или дискретный вид. Кроме того функция может быть представлена в символьном виде, когда значение функции вычисляется из выражения, приводимого в списке. Формат ОУ FUNCTION имеет вид:

< label FUNCTION A,B,[C] основной формат

X1,Y1/X2,Y2/,…/Xn,Yn > точки функции

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

А - не имеет значения по умолчанию, определяет независимую переменную функции (аргумент), например, если используется равномерное распределение и БСВ берётся с 3-го генератора, то запись будет иметь вид RN3 (random number). Операнд может кодироваться дополнительным выражением. Единственным ограничением является то, что аргумент не может прямо или косвенно ссылаться на функцию для которой он является независимой переменной. Значения функции могут задаваться числом с плавающей точкой.

B - не имеет значения по умолчанию, состоит из двух символов ( без пробела), первый из которых представляет собой обозначение типа функции, вида: C- непрерывная числовая, D – дискретная числовая, L - список числовых значений, E - дискретная символьная, M – список дискретных символов, S- селектор объектов; второй символ представляет собой целое число связанных пар значений функции, которые представляют собой точки функции и приводятся во второй строке описания формата. Если используется символ S, то он уточняется операндом С, используемым только в этом случае .

С - по умолчанию равен 0, применяется для перечисления типов объектов, если используются объекты разных типов, то приводятся их символы, разделяемые запятой без пробелов.

Рассмотрим пример записи функции :

SERVTIME FUNCTION RN7,D5

.2,4/.55,7.5/.7,10.5/.8,13.5/1,16.5

В примере описывается ОУ FUNCTION, имеющая ярлык SERVTIME, равномерно –распределённое время обслуживания берётся с ГСЧ 7, распределение времени дискретно, функция имеет 5 пар точек, х - представляет собой накопленную частоту, а у- время обслуживания. Необходимо отметить, что начало и конец записи точек функции не выделяется никакими символами, пары точек отделяются слэшем, значения внутри пары разделяются запятой, 0 не пишется, а запись начинается с точки.

INITIAL ( Начальное значение )

Этот ОУ используется для установления начальных значений сохраняемым величинам ( Savevalue ), матричным величинам и логическим переключателям . Формат ОУ INITIAL имеет вид :

< INITIAL символ инициализации[ / символ инициализации ]…>.

В формате под символом инициализации понимается обозначение величины, представляемое как символ величины отделённый от имени величины знаком $, например X$SAM,25 - что значит полнословная сохраняемая величина SAM, имеющая значение 25. Если в качестве начального значения используется выражение, то оно представляется в скобках. При нескольких символах инициализации, они отделяются друг от друга слэшем, который не ставится в начале и конце наименований. Например :

1. INITIAL XH1-XH10,13/XB$SAM-XB$JOE,(5+XH$INIT)

2. INITIAL LS10/LR1-LR5

Из первого примера следует, что в первом символе полусловные сохраняемые величины с 1-ой по 10-ю имеют значение 13, а во втором сохраняемые величины SAM –JOE имеют значение, указанное в скобках, т.е. к полусловному значению сохраняемой величины INIT добавляется 5. Во втором примере, относящимся к логическим переключателям устанавливается, что логический переключатель 10 находится во включённом состоянии, а переключатели с1-го по 5-ый выключены.

RESET (установить, сбросить в нуль)

Этот ОУ похож на ОУ CLEAR, также используется для целей сбора статистических данных, но имеет ряд отличительных черт, так при исполнении ОУ RESET не происходит разрушения транзактов, абсолютное время не обнуляется (обнуляется только относительное время). Использование ОУ RESET эффективно при определении момента времени, когда процесс ИМ становится установившимся .

RMULT (Переустановить )

Этот ОУ используется для управления текущей позицией ГСЧ, вводя данные с помощью ОУ RMULT можно переназначать положение любого ГСЧ, что позволяет достигать статистической независимости ИМ и избегать корреляции между отдельными потоками БСВ. Формат ОУ RMULT имеет вид :

< [label] RMULT A,B,C,D,…. >

label - отсутствует по определению, наличие ярлыка приводит к ошибке.

А - по умолчанию текущее значение ГСЧ1, появление операнда А устанавливает новую текущую позицию для ГСЧ1 (RN1),

В – по умолчанию текущее значение ГСЧ2, появление операнда В устанавливает новую текущую позицию для ГСЧ2 и т.д.

Приведём несколько примеров использования ОУ RMULT :

1. RMULT 50000

2. RMULT ,125000

3. RMULT 25000,,100000

В первом примере устанавливается значение ГСЧ1 равное 50000, остальные остаются неизменными. Во втором примере начальные значения всех ГСЧ остаются неизменными, а новое текущее значение ГСЧ2 равняется 125000 . В третьем примере все ГСЧ сохраняют неизменное положение , кроме первого и третьего .

Положение занимаемое ОУ RMULT в МФ зависит от задач, стоящих перед исследователем. Если необходимо, c целью исключения корреляции, разнести потоки заявок от потоков обслуживания, то ОУ RMULT помещается в первом модуле описания, если нужно провести переназначение между прогонами, то ОУ RMULT помещается в модуле управления после ОУ START.

STORAGE (Запомнить )

Этот ОУ используется для определения ёмкости одной или нескольких памятей. Исполнение ОУ STORAGE (впрочем, как и всех рассмотренных ОУ) происходит только после успешного завершения процесса компиляции, при этом вводится в действие оговорённое число ресурсов ОУ STORAGE . ОУ STORAGE в силу своей специфики должен располагаться в модуле описания, до того как началось движение транзактов, так как после компиляции программа последовательно исполняет все ОУ, стоящие до первого ОУ START. Формат ОУ STORAGE может быть представлен двумя способами :

1. < label STORAGE A >,

Label - не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции. Ярлык является идентификатором памяти, ёмкость которой определяется. При этом формате можно определить только одну память.

А - не имеет значения по умолчанию, отсутствие приводит к ошибке компиляции. Операнд определяет ёмкость памяти, т.е. число моделируемых устройств обслуживания. Необходимо иметь в виду, что в этом формате можно использовать одну единицу ёмкости в заданный момент времени.

Приведём примеры записи:

1. SAM STORAGE 10,

2. 3 STORAGE 5.

В первом примере памяти SAM определяется ёмкость 10 , во втором примере памяти за номером 3 определяется ёмкость 5.

Используя многоканальное обслуживание можно не определять ОУ STORAGE, в этом случае ёмкость по умолчанию практически равна бесконечности ( а именно , 2147483647 ).

При записи во втором формате :

2. < STORAGE Sname1,A/Sname2, B/Sname3,C … >

можно определять несколько памятей сразу. Определитель памяти представляет пары обозначений, разделённых запятой, между собой пары отделяются слэшем. Вначале пишется символ памяти, а затем её имя – первый член пары, после запятой пишется операнд А,В,… , характеризующий ёмкость памяти- второй член пары. Символ S может быть отделён от имени памяти символом $ или имя может быть включено в круглые скобки, памяти одинаковой ёмкости могут записываться через тире.

Приведём комбинированный пример записи ОУ STORAGE

STORAGE S1,10/S$CORE,5/S(SAM)-S(JOE),15

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

В примере памяти S1 приписывается ёмкость 10, памяти S с именем CORE приписывается ёмкость 5, а ряд памятей с именами S(SAM) –S(JOE) имеют одинаковую ёмкость 15.

В случае если память имеет ёмкость равную единице, то она полностью аналогична устройству, осуществляющему одноканальное обслуживание. Отсюда следует, что в GPSS/H одноканальное обслуживание можно моделировать двумя способами. Поэтому имеет смысл кратко рассмотреть разницу между этими двумя возможностями . Во первых, обслуживание в устройствах может быть прервано (PREEMPT ) транзактом с более высоким приоритетом, чего не допускается при обслуживании с памятями. Во вторых, у устройств поддерживается понятие готовности - не готовности ( рабочее состояние - состояние ожидания), для памятей их состояния имеют другой смысл , что будет рассмотрено ниже . В- третьих, при исполнении ОБ SEIZE программа записывает ИН Хакт и при исполнении ОБ RELEASE проверяет тот ли транзакт вышел из устройства обслуживания . При исполнении ОБ ENTER ИН Хакт не записывается . Предупреждение: в GPSS / H чётко разделены функции устройств и памятей и необходимо соблюдать внутренние правила программы .

Выше были высказаны замечания в адрес не очень чёткого определения STORAGE, необходимо помнить, что этот термин прежде всего относится к устройству, моделирующему группу идентичных серверов, а не определяет физическое расположение или объём. Следует обратить внимание на обязательность идентичности, как только серверы не идентичны их следует моделировать устройствами, а не памятями! Для определения числа идентичных серверов используется термин ёмкость ( который, впрочем, также не удачен, как и память, так как сразу возникает ассоциация с конкретным местом куда что-то можно положить и соответственно забрать). Для определения состояния памятей в GPSS/H используется несколько терминов:

· Память считается заполненной (Full), если каждая единица ресурса

( сервер ) занята в момент обращения к ней,

· Память считается пустой (Empty), если каждая единица ресурса свободна .

· Текущее содержание (Current Contents) памяти определяется числом единиц ресурса, занятых на текущий момент времени.

· Остающаяся ёмкость (Remaining Capacity) памяти, число единиц ресурса свободных на текущий момент. Так например, при заполненности памяти остающийся объём равен 0.

Следует иметь в виду, что все перечисленные термины имеют отношение только к GPSS/H.

TABLE ( составить таблицу )

Этот ОУ позволяет получить дополнительную, по сравнению со стандартным отчётом, статистическую информацию. Например, исследователя интересует текущее содержание памяти в различных репликах. Полученное значение математического ожидания, может использоваться для выбора числа серверов в проектируемой системе. ОУ TABLE позволяет получить математическое ожидание (среднее значение), стандартное отклонение и относительные частоты попадания в заданный интервал. Формат ОУ TABLE имеет вид:

< label TABLE A,B,C,D,[E] >,

label - не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции, определяет имя или номер таблицы,

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

1.Операнд А определяется выражением, на основе которого определяется статистика, помещаемая в таблицу. Эта статистика для совместимости с другими версиями должна представлять собой только простой СЧА и не должна быть представлена в матричных форматах типа MX,MH,MB,ML.

2. Операнд А определяется также как в случае 1, но впереди стоит знак минус. В этом случае таблица называется дифференциальной, т.е. берётся разница между текущим значением и предыдущим и результат помещается в таблицу, текущее значение сохраняется для последующих вычислений.

3. Операнд А имеет впереди символы IA (interarrival ), что обозначает определение промежутков между последовательными входами. При этом определяется разность между текущим значением абсолютного времени и значением абсолютного времени в предыдущий момент, результат помещается в таблицу, текущее значение времени сохраняется для последующих вычислений.

4. Операнд А имеет впереди символы RT (arrival rate), что обозначает определение доли приходов (относительной частоты) в какой то интервал. При этом варианте операндом Е оговаривается интервал времени являющийся шагом таблицы. Этот вид используется для определения такой статистики как « приход в течении часа » . Счётчик приходов ОБ TABULATE при каждом исполнении ОУ TABLE увеличивается на единицу. После того как определена таблица, управление осуществляется с помощью «контролёра транзактов », располагающегося в СБС, где к текущему значению абсолютного времени прибавляется значение времени, стоящее в операнде Е. При этом каждый раз производятся следующие действия: накопленное время записывается в таблицу, счётчик приходов обнуляется, контролируемый транзакт включается в СБС со временем равным текущему значению абсолютного времени плюс значение операнда Е.

В - не имеет значения по умолчанию, определяет собой верхнее значение первого ( нижнего ) интервала частот, в GPSS/H допускается использование числа с плавающей точкой. Первый интервал может простираться до минус бесконечности.

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

D – не имеет значения по умолчанию, определяет число частотных интервалов таблицы. Если первый символ операнда D буквенный - а именно W, то такая таблица является взвешенной . При этом ОБ TABULATE, используя свой операнд В создаёт взвешенные значения средних величин, стандартных отклонений, количества наблюдений. На рис. 3.2 приведена схема построения таблицы


1-ый 2-ой 3-ий D-1- ый Последний

С


- В В+С В+2С В+(D-2)C B+(D-1)C

Рис.3.2 Схема построения таблицы

При построении таблицы используются следующие правила :

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

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

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

· Когда происходит запись наблюдаемого значения, показания счётчика частотного интервала увеличивается на единицу.

Рассмотрим примеры записи ОУ TABLE :

1. SAM TABLE M1,100,100,10

2. SAM TABLE M1,100,100,W10

3. 10 TABLE IA,50,50,5

4. ARRIV TABLE RT50,50,10,1000

Первый и второй примеры для таблицы SAM, отличаются только тем, что вторая таблица взвешенная. В них верхняя граница первого интервала равна 100 , ширина промежуточных интервалов равна 100, число интервалов 10. В третьем примере для таблицы с номером 10, определяются промежутки между приходами транзактов, верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50, число интервалов равно 5. В четвёртом примере для таблицы с именем ARRIV определяется доля приходов в долях 1000 ( операнд Е ), верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50 , число интервалов равно 10.

В. Операторы управления логикой моделирования

DO / ENDO ( Выполнить/ Завершить выполнение )
Эти два парных оператора служат для организации петли управления процессом ИМ. Когда необходимо провести несколько независимых прогонов МФ, существует два способа получения этих прогонов не выходя из процесса ИМ. Первый из них осуществляется с помощью ОУ CLEAR и парного с ним ОУ START , при этом число этих парных ОУ равняется числу желательных прогонов . Естественно, что при большом числе прогонов запись МФ перегружается этими указаниями. Второй способ - организация компактной записи с помощью парных ОУ DO/ENDDO, формат этих ОУ имеет вид :

< [label] DO A,B,[C] >

< [label] ENDDO >

label - не обязательный ярлык , который чаще всего отсутствует, характеризует собой имя организуемой пели ,

А - не имеет значения по умолчанию, символизирует собой индекс начала петли, представляющий собой целочисленную скалярную АМП, записываемый в виде &I=1.

B - не имеет значения по умолчанию, характеризует собой предельный номер конечного члена петли,

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

Когда индекс достигает предельного значения , исполняется ОУ ENDDO и петля управления прекращает своё существование. Если значения заданы числом с плавающей точкой, то число усекается до целого значения, отрицательные приращения программой не поддерживаются. Количество петель управления может достигать 19, причём они вкладываются друг в друга, создавая своеобразную иерархию, второстепенные петли в МФ изображаются с отступом вправо от основной петли, следующая вложенная петля также отступает вправо. Между ОУ DO/ENDDO размещаются другие ОУ , например CLEAR/START. Отметим важные особенности петли ОУ DO/ENDDO :

· DO/ENDDO создают структуру петли управления, а не петли транзактов, поэтому в петле присутствуют только ОУ, а не ОБ.

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

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

DO &I=1,10,1

START 1

CLEAR

ENDDO

END

В примере петля управления задана операндами ОУ DO, операнд D можно было бы не писать, так как его значение по умолчанию и так равно 1, петля начинается с первого шага и заканчивается на 10 -м шаге. При каждом значении индекса происходит исполнение ОУ START/CLEAR . При отсутствии петли управления эту пару ОУ надо было бы написать 10 раз подряд. Отметим также, что при введении петли управления на первое место в модуле управления встаёт ОУ DO.

ОУ DO/ENDDO являются важными компонентами мощного и гибкого языка операторов управления (control statement language -CSL), являющегося частью GPSS/H .

Другие ОУ управления логикой

Другими компонентами CLS являются ОУ, обеспечивающий простоту вычислений - LET, ОУ ввода и вывода информации – GETLIST и PUTPIC, логические операторы IF,ELSEIF,ELSE ,ENDIF, ОУ способный обращаться и вызывать внешние подпрограммы - CALL , ОУ безусловного обращения GOTO . Все эти операторы представляют несомненный интерес , но их рассмотрение выходит за рамки предлагаемого материала.

3.3.3 Операторы описания

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

INTEGER

Этот ОО используется для описания целочисленных АМП, представляющих собою скалярную одноразмерную переменную. Все целочисленные АМП должны быть определены в ОО INTEGER до их первого появления в МФ. Формат записи ОО INTEGER имеет вид :

< INTEGER A,B,C,… >

label - не имеет значения по умолчанию, появление ярлыка воспринимается как ошибка компиляции.