Моделирование на языке GPSS

23



Министерство образования и науки

Республики Казахстан

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























КУРСОВАЯ РАБОТА

по дисциплине "Спецкурс информатики”

Тема: "Моделирование на языке GPSS"













		

		

		

		

		

				2009

				

				

Содержание



Введение

1. Задание

2. Блок-схема:

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

4. Блоки языка GPSS использованных в программе

4.1 Блок GENERATE

4.2 Блок GATE

4.3 Блоки SEIZE и RELEASE

4.4 Блок ADVANCE

4.5 Блок TERMINATE

4.6 Блок FUNAVAIL

4.7 Блок FAVAIL

5. Назначение блоков программы

6. Стандартный отчет GPSS/PC

7. Элементы стандартного отчета

7.1 Общая информация о результатах работы модели

7.2 Информация о блоках

7.3 Информация об объектах типа “устройство”

7.4 Информация о группах транзактов

Выводы

Список использованных источников





Введение



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

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

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

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

Одним из наиболее эффективных и распространенных языков моделирования сложных дискретных систем является в настоящее время язык GPSS (General Purpose Simulation System). Он может быть с наибольшим успехом использован для моделирования систем, формализуемых в виде систем массового обслуживания. В качестве объектов языка используются аналоги таких стандартных компонентов СМО, как заявки, обслуживающие приборы, очереди и т.п. Достаточный набор подобных компонентов позволяет конструировать сложные имитационные модели, сохраняя привычную терминологию СМО. 

Язык моделирования дискретных систем GPSS разработан фирмой IBM в начале 70-х годов XX века и является одним из самых распространенных в мире специализированных языков программирования. Система моделирования GPSS/PC (различных версий) является торговой маркой фирмы MINUTEMAN Software. Однако стоит отметить, что GPSS/PC предназначен для работы в операционной системе MS DOS. Поэтому имеются ограничения, которые в ряде случаев не позволяют осуществить разработку и эксплуатацию моделей сложных систем с требуемой степенью детализации. Отмеченных недостатков практически не имеет общецелевая система моделирования GPSS World, также разработанная компанией MINUTEMAN (США), но уже в 1993 году, которая позже так же претерпела некоторые изменения.

GPSS - интегрирующая языковая система, применяющаяся для описания пространственного движения объектов. Такие динамические объекты в языке GPSS называются транзактами и представляют собой элементы потока. Транзакты "создаются" и "уничтожаются". Функцию каждого из них можно представить как движение через модель М с поочерёдным воздействием на её блоки. Функциональный аппарат языка образуют блоки, описывающие логику модели, сообщая транзактам, куда двигаться и что делать дальше. Данные для ЭВМ подготавливаются в виде пакета управляющих и определяющих карт, которым составляется по схеме модели, набранной из стандартных символов. Созданная программа GPSS, работая в режиме интерпретации, генерирует и передаёт транзакты из блока в блок. Каждый переход транзакта приписывается к определенному моменту системного времени.


1 Задание



Для обеспечения надежности АСУ ТП в ней используется две ЭВМ. Первая ЭВМ выполняет обработку данных о технологическом процессе и выработку управляющих сигналов, а вторая находится в «горячем резерве». Данные в ЭВМ поступают через 10 ± 2 с, обрабатываются в течении 3 с. Характеристики обоих ЭВМ одинаковы. Подключение резервной ЭВМ занимает 5 с, после чего она заменяет основную до восстановления, а процесс возвращается к нормальному темпу. Отказы ЭВМ происходят через 300 ± 30 с. Восстановление занимает 100 с. Резервная ЭВМ абсолютно надежна. Смоделировать 1 час работы системы. Определить среднее время нахождения технологического процесса в заторможенном состоянии и среднее число пропущенных из – за отказов данных.


2 Блок-схема





Поступление данных через 10 ± 2с

Основная ЭВМ Обрабатывает данные в течении 3с

Подключение резервной ЭВМ в течении 5с

Восстановление основной ЭВМ в течении 100с

Резервная ЭВМ Обрабатывает данные в течении 3с

Проверка работоспособности основной ЭВМ

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


3 Листинг программы:



**************************************

Programm TERM PAPER

**************************************

1 GENERATE 10,2

2 GATE FV MAIN,A2

3 A1 SEIZE MAIN

4 ADVANCE 3

5 RELEASE MAIN

6 TERMINATE

7 A2 ADVANCE 5

8 SEIZE REZ

9 ADVANCE 3

10 RELEASE REZ

11 TERMINATE

12 GENERATE 300,30

13 FUNAVAIL MAIN

14 ADVANCE 100

15 FAVAIL MAIN

16 TERMINATE

17 GENERATE 3600

18 TERMINATE 1 

**************************************


4. Блоки языка GPSS использованных в программе



4.1 Блок GENERATE



Блок GENERATE (генерировать) служит для создания транзактов, входящих в модель. Он имеет следующий формат: 



имя GENERATE A,B,C,D,E



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

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



4.2 Блок GATE



Блок GATE (впустить) служит для задержки или изменения маршрута транзактов в зависимости от состояния аппаратных объектов. Блок имеет следующий формат:



имя GATE X A,B



Вспомогательный операнд X содержит код состояния проверяемого аппаратного объекта, а в поле A указывается имя или номер этого объекта. Если проверяемый объект находится в заданном состоянии, то блок GATE пропускает транзакт к следующем у блоку. Если же заданное в блоке условие не выполняется, то транзакт переходит к блоку, указанному в поле B, а если это поле пусто, то задерживается перед блоком GATE. 

Операнд X может принимать следующие значения: U (устройство занято); NU (устройство свободно); I (устройство захвачено); NI (устройство не захвачено); SE (МКУ пусто); SNE (МКУ не пусто); SF (МКУ заполнено); SNF (МКУ не заполнено); LS ( ЛП включен), LR (ЛП выключен), FNV (ОКУ недоступно), FV (ОКУ доступно).



4.3 Блоки SEIZE и RELEASE



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



имя SEIZE A



имя RELEASE A



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



4.4 Блок ADVANCE



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



имя ADVANCE A,B



Операнды в полях A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE. Следует отметить, что транзакты, входящие в блок ADVANCE, переводятся из списка текущих событий в список будущих событий, а по истечении вычисленного времени задержки возвращаются назад, в список текущих событий, и их продвижение по блок-схеме продолжается. Если вычисленное время задержки равно 0, то транзакт в тот же момент модельного времени переходит в следующий блок, оставаясь в списке текущих событий. 

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



4.5 Блок TERMINATE



Блок TERMINATE (завершить) служит для удаления транзактов из модели, и имеет следующий формат: 



имя TERMINATE A



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

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



4.6 Блок FUNAVAIL



Блоком FUNAVAIL (символом F обозначает ОКУ, UNAVAIL - недоступный) моделируется недоступность ОКУ. При использовании этого блока статистика ОКУ не искажается. Форма блока:



FUNAVAIL A, B, C, D, E, F, G, H



Блок делает недоступным ОКУ с именем или номером, указываемым операндом A.

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

		транзакт, занимающий ОКУ (по SEIZE или PREEMPT) в момент перевода его в недоступное состояние (операнды B, C, D);

		ранее прерванные транзакты, находящиеся в списке прерываний (операнды E, F);

		транзакты, находящиеся в списке отложенных прерываний и в списке задержки ОКУ (операнды G, Н). Операндом В задаются режимы обработки транзакта, занимающего ОКУ в момент перевода его в недоступное состояние:

		СО - режим продолжения: продолжить обработку занимающего ОКУ транзакта во время недоступности;

		RE - режим удаления: удалить и направить занимающий ОКУ транзакт к блоку, метка которого должна быть указана операндом С;

		по умолчанию - прервать обработку и поместить в список прерываний ОКУ, после восстановления доступности этот транзакт может занять ОКУ и «дообслужиться».

Операнд С - метка блока, в который будет направлен в режиме удаления транзакт, занимавший ОКУ в момент перевода его в недоступное состояние.

Операнд D - номер или имя параметра транзакта, занимавшего ОКУ в момент перевода его в недоступное состояние; если он будет удален (режим RE), т. е. исключен из СБС, в этот параметр будет записано время, оставшееся удаленному транзакту до конца обслуживания.

Операндом Е задаются режимы обработки транзактов, находящихся к моменту перевода ОКУ в недоступное состояние в списке прерываний, т. е. тех транзактов, обслуживание которых на данном ОКУ было ранее прервано:

		СО - режим продолжения: продолжить работу ОКУ во время недоступности - обслуживать транзакты из списка прерываний;

		RE - режим удаления: удалить и направить транзакты из списка прерываний к новому блоку, метка которого должна быть указана операндом F;

		по умолчанию - оставить ранее прерванные транзакты в списке прерываний ОКУ и запретить им занимать его во время недоступности.

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

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

Операндом G задаются режимы обработки транзактов, находящихся к моменту перевода ОКУ в недоступное состояние в списке отложенных прерываний, т. е. ожидающих выполнения с прерыванием, и в списке задержки:

		СО - режим продолжения: продолжить работу ОКУ во время недоступности - обслуживать транзакты из списка отложенных прерываний и списка задержки;

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

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

	

4.7 Блок FAVAIL



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

	FAVAIL А

	

	Операнд A - имя или номер ОКУ.

	Все транзакты, ожидающие доступного состояния ОКУ, указанного операндом А, активизируются и могут попытаться занять его.


5. Назначение блоков программы



	
Строка

Комментарий

	1

Генератор данных, которые поступают каждые 10  2 с

2

Проверка доступности основной ЭВМ, если доступна, то переход в следующий блок, если не доступна, то переход в блок с меткой А2

3

Занятие основной ЭВМ

4

Имитация обработки данных в основной ЭВМ за 3 с

5

Освобождение основной ЭВМ

6

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

7

Имитация включения резервной ЭВМ за 5 с

8

Занятие резервной ЭВМ

9

Имитация обработки данных в резервной ЭВМ за 3 с

10

Освобождение резервной ЭВМ

11

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

12

Генератор сбоя основной ЭВМ

13

Выход из строя основной ЭВМ

14

Имитация восстановления основной ЭВМ за 100 с

15

Возвращение основной ЭВМ в строй

16

Удаление транзакта имитирующего сбой основной ЭВМ

17 - 18

Генерация времени моделирования




6. Стандартный отчет GPSS/PC



GPSS/PC Report file REPKURS.GPS. (V 2, # 38123) 12-08-2006 00:11:22 page 1



START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY

 0 3600 18 2 0 312960

LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY

 1 1 GENERATE 363 0 0

 2 2 GATE 363 0 0

 3 A1 3 SEIZE 249 0 0

 4 4 ADVANCE 249 0 0

 5 5 RELEASE 249 0 0

 6 6 TERMINATE 249 0 0

 7 A2 7 ADVANCE 114 1 0

 8 8 SEIZE 113 0 0

 9 9 ADVANCE 113 0 0

 10 10 RELEASE 113 0 0

 11 11 TERMINATE 113 0 0

 12 12 GENERATE 12 0 0

 13 13 FUNAVAIL 12 0 0

 14 14 ADVANCE 12 1 0

 15 15 FAVAIL 11 0 0

 16 16 TERMINATE 11 0 0

 17 17 GENERATE 1 0 0

 18 18 TERMINATE 1 0 0





FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY

 MAIN 249 0.300 3.00 0 0 0 0 0 0

 REZ 113 0.094 3.00 1 0 0 0 0 0





XACT_GROUP GROUP_SIZE RETRY

 POSITION 0 0


7. Элементы стандартного отчета



Строка заголовка стандартного отчета содержит имя файла модели, который создал отчет. Также в нее включена дата и время прогона модели.



7.1 Общая информация о результатах работы модели



START_TIME - начальное время. Абсолютное модельное время в момент начала моделирования. Устанавливается равным абсолютному модельному времени с помощью оператора REST или CLEAR;

END_TIME - конечное время. Абсолютное модельное время, когда счетчик завершения принимает значение 0.

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

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

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

FREE_MEMORY - объем памяти, остававшейся свободной при прогоне модели.



7.2 Информация о блоках



LINE - номер строки исходной программы для каждого блока;

LOC - имя или номер данного блока в модели;

BLOCK_TYPE - тип блока GPSS;

ENTRY_COUNT - количество транзактов, вошедших в данный блок, с начала работы программы или после последнего выполнения оператора RESET или CLEAR;

CURRENT_COUNT - количество транзактов, находящихся в данном блоке к моменту завершения моделирования;

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



7.3 Информация об объектах типа “устройство”



FACILITY - имя или номер устройства;

ENTRIES - количество раз, когда устройство было занято или занято с прерыванием с начала моделирования или после последнего выполнения оператора RESET или CLEAR;

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

AVE._TIME - среднее время занятия устройства одним транзактом в течение времени моделирования с начала моделирования или после выполнения оператора RESET или CLEAR;

AVAILABLE - состояние устройства в конце моделирования (равно 1, если устройство доступно и 0 - если недоступно);

OWNER - номер транзакта, который занимает устройство (0 - устройство не занято);

PEND - количество транзатов, ожидающих выполнение с прерыванием других транзактов (т. е. вошедших в блоки PREEMPT в режиме прерывания);

INTER - количество транзактов, прерванных на данный момент (количество транзактов в списке прерываний);

RETRY - количество транзактов, ожидающих выполнения специального условия, зависящего от состояния данного устройства;

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



7.4 Информация о группах транзактов



XACT_GROUP - имя или номер объекта группы транзактов;

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

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


Выводы



В данной курсовой работе смоделирована работа АСУ ТП, в соответствии с условиями задания. Выводы по работе системы можно сделать исходя из данных, полученных в стандартном отчете GPSS.

Из отчета видно, что по завершении моделирования прошло 3600 секунд (END_TIME), так как и было задано условиями. Определить загрузку резервной ЭВМ мы можем из той части стандартного отчета, где помещена информация об объектах типа “устройство” – загрузка резервной ЭВМ равна 0.094. А коэффициент загрузки основной ЭВМ равен 0.300. Частоту отказов ЭВМ можно определить из отношения числа отказов ЭВМ, к общему числу поступивших данных. Эти данные мы так же берем из стандартного отчета, но уже из части, где помещена информация о блоках, так как число поступивших данных – это то количество транзактов, которые прошли через блок GENERATE, а число отказов – это количество транзактов, прошедших через блок FUNAVAIL. Таким образом частота отказов системы равна 12/363 = 0,033. Повторение моделирования дает несколько измененные значения из-за использования другой последовательности случайных чисел.

Функция распределения времени поступления данных в ЭВМ является равномерной, что видно из условия.


Список использованных источников



		Советов Б.Я. Моделирование систем. Практикум. [Текст]: Учебное пособие для вузов/Б.Я. Советов, С.А. Яковлев - 3-е изд., стер. - М.: Высш. шк., 2005. - 295 с.

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

		 Шрайбер Т.Д. Моделирование на GPSS.- M.: Машинострое ние,1980.

		 САПР, Лабораторный практикум, кн.7, под ред. И.П. Норенкова - М.: Высшая школа,1986.

		Б.Я. Советов, С.А. Яковлев Моделирование систем: курсовое проектирование. - М.: Высшая школа,1988.

		Наставление по моделированию на GPSS/PC, перевод под ред. к.н.т. Якимова И.М. - Казань,1989.