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

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 17.12.2014
Размер файла 82,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Общие сведения о языке GPSS

Язык моделирования GPSS (General Purpose System Simulation) разработан фирмой IBM в США и с 1962 года входит в стандартное математическое обеспечение машин серии IBM 360/370. Язык GPSS получил наиболее широкое распространение по сравнению с другими языками моделирования. Он включен в учебные курсы ВУЗов по моделированию систем у нас в стране и изучается в аналогичных курсах во многих колледжах и университетах США и других стран. В данном учебном пособии рассматривается одна из версий языка GPSS.

Язык GPSS ориентирован на решение задач статистического моделирования на ЭВМ процессов с дискретными событиями. Такими процессами описывается, прежде всего, функционирование систем массового обслуживания произвольной структуры и сложности: систем обработки данных, систем транспорта и связи, технологических процессов, предприятий торговли, а также функционирование вычислительных систем и разного рода автоматизированных систем.

Язык основан на схеме транзактов (сообщений). Под транзактом понимается формальный объект, который "путешествует" по системе (перемещается от блока к блоку), встречая на пути всевозможные задержки, вызванные занятостью тех или иных единиц оборудования. Транзакты имеют прямую аналогию с заявками в системах массового обслуживания. В качестве транзакта может выступать программа обработки информации, телефонный вызов, покупатель в магазине, отказ системы при исследовании надежности и т.д. Каждый транзакт обладает совокупностью параметров (до 100), которые называются атрибутами транзакта. В процессе имитации атрибуты могут меняться в соответствии с логикой работы исследуемой системы.

Язык GPSS -- язык интерпретируемого типа, он связан с пошаговым выполнением операторов, называемых блоками. Совокупности блоков описывают функционирование самой моделируемой системы либо содержат информацию о порядке моделирования (о продвижении транзактов). Каждое продвижение транзакта (сообщения) является событием в модели. Комплекс программ, планирующий выполнение событий, реализующий функционирование блоков моделей, регистрирующий статистическую информацию о прохождении транзактов, называется симулятором [4]. Симулятор регистрирует время наступления каждого из известных на данный момент событий и выполняет их с нарастающей временной последовательностью. Симулятор обеспечивает отсчет модельного времени в принятых единицах, называемых абсолютным условным временем. С каждым сообщением связано относительное условное время, отсчет которого начинается при входе сообщения в моделируемую систему и заканчивается при выходе сообщения из системы. Основными функциями управляющих операторов/блоков языка являются:

1) создание и уничтожение транзактов, 2) изменение их атрибутов,

3) задержка транзактов,

4) изменение маршрутов транзактов в системе. Основные группы объектов языка [5]:

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

2) статистические объекты (очередь, таблица),

3) вычислительные объекты (ячейка, арифметическая и логические переменные),

4) списки,

5) прочие объекты.

Дадим описание некоторых объектов.

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

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

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

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

Ячейки используются для записи, накопления и хранения численных значений различных входных и выходных параметров моделируемой системы. Эти значения могут быть использованы для организации счетчиков числа проходящих транзактов, для вывода значений варьируемых параметров модели, для временного хранения значений стандартных числовых атрибутов (СЧА). Значения ячеек всегда выводятся на печать.

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

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

Синтаксис языка

Алфавит. Алфавит языка GPSS состоит из латинских букв от A до Z, цифр от 0 до 9 и следующих специальных символов: $, #, *, +, -, /, (,), ', точка, запятая, пробел.

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

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

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

Метка является именем-идентификатором блока. Поле операндов может содержать от 1 до 7 подполей: А, В, С, D, E, F, G, содержимое которых отделяется друг от друга запятой. Для пропуска одного из подполей поля операндов ставится просто запятая: А,,С.

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

Стандартные числовые атрибуты. В процессе моделирования язык GPSS автоматически регистрирует и корректирует определенную информацию различных объектов, используемых в модели. Доступ к этой информации осуществляется с помощью СЧА, которые однозначно определяют статус объектов модели. СЧА меняются в процессе имитации, изменить их может как симулятор, так и пользователь. Для указания конкретного объекта, по которому необходимо получить требуемую информацию, за именем СЧА должно следовать числовое или символьное имя этого объекта. Если используется символьное имя, то между СЧА и именем объекта ставится знак $.

В таблице приведены некоторые СЧА основных объектов языка. Здесь каждый СЧА обозначается либо <имя СЧА> i, либо

<имя СЧА>$ <имя объекта>, где i обозначает номер объекта.

Таблица

Объект

СЧА

Назначение

Блок

N$<имя блока>

W$<имя блока>

Число транзактов, вошедших в блок с указанным именем

Число транзактов, находящихся в указанном блоке

Генераторы случайных чисел

Rni

Случайное число в диапазоне 0-999. При использовании СЧА в качестве аргумента функции представляются действительными числами в диапа-зоне 0.- 0.999999

Объект

СЧА

Назначение

Транзакт

Pi PR

Значение i-го параметра Значение приоритета

Память

S$<имя памяти> R$<имя памяти> SA$<имя памяти >

SC$<имя памяти >

SE$<имя памяти > SF$<имя памяти > SM$<имя памяти >

ST$<имя памяти >

Текущее содержимое памяти Свободный объем памяти

Среднее число занятых единиц па-мяти

Число транзактов, вошедших в па-мять с начала моделирования Память пуста? Если да - 1, нет - 0 Память полна? Если да - 1, нет - 0 Максимальное число занятых еди-ниц памяти

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

Очередь

Q$<имя очереди> QA$<имя очереди> QC$<имя очереди>

QM$<имя очереди> QX$<имя очереди>

QZ$<имя очереди> QT$<имя очереди>

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

Число транзактов, вошедших в оче-редь с начала моделирования Максимальная длина очереди Среднее время нахождения транзак-та в очереди без нулевых входов Количество нулевых входов Среднее время нахождения транзак-та в очереди

Устройство

F$<имя устройства>

FC$<имя устройства>

FT$<имя устройства>

Состояние устройства: занято - 1, свободно - 0

Число транзактов, вошедших в уст-ройство с начала моделирования Среднее время занятия транзактом устройства

Переменные

V$<имя переменной>

Значение арифметической перемен-ной

Ячейки

X$<имя ячейки> или Xi

Значение ячейки

Функции

FN$<имя функции>

Значение функции

Мнемокоды. В некоторых блоках языка требуется указывать состояние объектов, для этого используются следующие коды:

Состояние объекта

Мнемокод

Память: пуста не пуста

SE SNE

заполнена не заполнена

Устройство: свободно занято

Логическийпереклю-чатель:включен

выключен

SF SNF NU U

LS LR

Блоки языка GPSS

Создание и уничтожение транзактов

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

A -- среднее время между поступлениями транзактов в систему (по умолчанию равно 1);

B -- модификатор времени;

C -- начальная задержка (время появления первого транзакта); D-- общее число транзактов, которое должно быть сгенерировано этим блоком (по умолчанию -- неограниченное число транзак-тов);

E -- приоритет транзакта, может принимать значения от 0 до 127. Приоритет возрастает в соответствии с номером (по умолчанию равен 0).

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

Значение параметров A и B могут задаваться как константами, так и любым СЧА, за исключением СЧА параметра транзакта (эта ве-личина в момент генерации транзакта еще не определена).

Например, блок GENERATE 10,5 будет генерировать транзакты через интервалы времени, длительность каждого из которых выбирается случайно в пределах от 5 до 15. Каждое из этих значений будет выбираться с одинаковой вероятностью. Таким образом, блок генерирует случайный поток транзактов, в котором время между транзактами равномерно распределено в диапазоне A? Bи имеет среднее значение A.

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

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

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

Примечания:

- время не может быть отрицательной величиной;

- в обязательном порядке должно быть задано либо поле А, либо поле D.

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

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

Например: TERMINATE 1 START 100 через программу модели пропускается 100 транзактов.

В программе должен быть хотя бы один блок TERMINATE с заданным операндом A.

Если в программе несколько блоков TERMINATE, то обычно операнд A задается только в одном блоке; чаще всего -- в блоке, относящемся к имитатору интервала времени моделирования (таймеру).

GENERATE 480 TERMINATE 1 START 1

Таймер взаимодействует только с блоком START и никак не связан с содержательной стороной остальных фрагментов модели. Таймер служит для задания времени моделирования.

Задержка транзактов в блоках

Блок ADVANCE предназначен для задержки транзактов на определенные интервалы модельного времени.

Обязательный операнд A задает время задержки транзакта в блоке ADVANCE. Необязательный операнд B является модификатором-функцией или модификатором-интервалом. Значение операнда B используется здесь для модификации значения операнда A также, как и в блоке GENERATE.

Любой транзакт входит в блок ADVANCE беспрепятственно. В нем транзакт задерживается на период модельного времени, величина которого определяется операндами A и B . После этого транзакт направляется к следующему блоку.

Например, в блоке

ADVANCE 10

транзакт будет задержан на 10 единиц модельного времени. В блоке

ADVANCE 10,Р1

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

Рассмотрим суммарную задержку в блоках ADVANCE 10,10

ADVANCE 10,10 ADVANCE 10,10 ADVANCE 10,10

ADVANCE 10,10 ADVANCE 10,10

Задержка в каждом из них имеет равномерное распределение вероятностей на интервале (0,20). Следовательно, ее среднее значение составляет M ? 20?(1 2) ?10; дисперсия D ? 20?(1 2). Поэтому сумма шести таких задержек имеет среднее значение 6?M ? 60 и среднее квадратическое отклонение6?D ?14. По центральной предельной теореме теории вероятностей заключаем, что закон распределения суммарной задержки приблизительно нормальный. Поэтому ни в коем случае нельзя заменять эти пять блоков на один

ADVANCE 50,50 ,

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

Работа с устройствами

Блок SEIZE - занять устройство. При входе транзакта в блок SEIZE выполняется операция занятия устройства, имя которого задается операндом A блока SEIZE. Занятие устройства транзактом выполняется следующим образом. Когда транзакт направляется из какого-нибудь блока в блок SEIZE, симулятор проверяет, свободно ли со-ответствующее устройство. Если оно не свободно, транзакт не может войти в этот блок. Он остается в предыдущем блоке до тех пор, пока устройство не освободится. Если же устройство свободно, то транзакт передвигается в блок SEIZE, занимает устройство и в тот же момент времени направляется к следующему за SEIZE блоку.

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

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

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

Пример 2.1

Посетители приходят в кассу кинотеатра через 2010 с, знакомятся в течение 1515 с обстановкой и занимают очередь. Каждый посетитель приобретает у кассира билеты в течение 20 5 с в зависимости от числа билетов. Построить модель работы кассы кинотеатра в течение четырех часов.

GENERATE 20,10 ;приход посетителей ADVANCE15,15;знакомство с обстановкой SEIZE KASS ;обращение к кассиру ADVANCE20,5;покупка билета RELEASEKASS ;освобождение кассира TERMINATE ;уход посетителя

GENERATE 1440;таймер TERMINATE 1

START1

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

Сбор статистических данных с помощью очередей

Некоторые виды статистических данных накапливаются симулятором автоматически. Другие виды данных могут быть получены с помощью специальных блоков. При необходимости сбора данных по задержке транзактов перед блоками занятия устройства или памяти используются блоки QUEUE и DEPART.

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

Блок DEPART - вывести из очереди. При входе транзакта в блок DEPART длина очереди, имя которой задается операндом A, уменьшается на величину, указанную в операнде B . При использовании пустого поля B в блоках QUEUE и DEPART длина очереди в каждый момент времени соответствует текущему числу транзактов в этой очереди. Транзакты могут проходить любое число блоков QUEUE и DEPART с произвольными значениями полей Aи B , чередующихся в любом порядке.

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

Пример 2.2

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

GENERATE 20,10 ADVANCE 15,15

QUEUEOCH; включение в очередь SEIZE KASS ; обращение к кассиру DEPART OCH; выход из очереди ADVANCE20,5

RELEASEKASS TERMINATE

GENERATE1440; таймер TERMINATE1

START1

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

При наличии в модели очередей симулятор выдает статистику по очередям. Формат выводимых данных приведен в приложении 1.

Функции

При использовании в блоках GENERATE и ADVANCE поля B в качестве модификатора функции, саму функцию необходимо описать специальным блоком языка FUNCTION.

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

Аргумент функции задается с помощью СЧА. Чаще всего в качестве аргумента используются датчики случайных чисел RN1, RN2, RN200.

Существуют следующие типы функций: C , D, E , L, M . Функции типа C -- непрерывны (аргумент X и значение Y функции задаются типами integer и real), типа D -- дискретны (Y кроме integer и real может принимать значение «имя»). Например, C 12 означает, что функция непрерывна и для ее описания будет использоваться 12 пар аргументов-функций. Тип E - дискретная функция со значением Y , заданным с помощью СЧА. Типы L и M - функции со списком, здесь для L значение функции интерпретируется как номер элемента списка, для M аргумент функции является элементом списка.

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

За блоком описания функции FUNCTION всегда следует блок задания функции, в котором задаются координаты и значения функции. Каждая пара чисел координата-значение отделяется друг от друга слэджем, пробелы недопустимы. В паре аргумент отделяется от значения функции запятой.

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

Например, функция, график которой показан на рис. 2.1, а), описывается на языке GPSS следующим образом:

FUNC1 FUNCTION RN1, D3 .4,26.0/.8,40.8/1,6.08

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Непрерывная функция, показанная на рис. 2.1, б): FUNC2 FUNCTION RN2, C3

0,10/.6,26/1,45

Блоки описания и задания функции располагаются в начале программы, до первого блока GENERATE. Координаты точек функции записываются как числа с фиксированной точкой либо именем (для значения функции типа D).

В языке существует 3 датчика равномерно распределенных случайных чисел, которые обозначаются RN1, RN2, RN200. Эти датчики выдают равновероятные целочисленные значения из диапазона 0 - 999. Если датчик используется в качестве аргумента функции, то он выдает вещественные числа в диапазоне 0 - 1.

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

EXPONENTIAL(A,B,C)

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

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

Пример 2.3

В аэропорту производится регистрация пассажиров перед посадкой в самолет. На регистрацию подходят отдельные пассажиры через каждые 20±10 с, либо туристические группы через каждые 60±20 сек. При этом туристические группы обслуживаются вне очереди. Время обслуживания подчинено экспоненциальному закону и равно в среднем для отдельных пассажиров -- 15 сек, для туристических групп -- 25 сек. Промоделировать работу отдела регистрации, изучив статистику по очереди за 2 ч.

EXP FUNCTION RN1,C6 0,0/.1,.1/.2,.2/.5,.69/.8,1.6/1,8

GENERATE 20,10; приход отдельных пассажиров QUEUELIN; включение в очередь

SEIZEREG

DEPARTLIN; выход из очереди ADVANCE15,FN$EXP; регистрация пассажира RELEASE REG

TERMINATE; уход пассажира

GENERATE 60,20,,,1; приход туристической группы QUEUELIN

SEIZEREG DEPART LIN

ADVANCE25,FN$EXP; регистрация группы RELEASEREG

TERMINATE; уход группы ; таймер

GENERATE 720 TERMINATE 1 START1

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

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

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

ADVANCE(EXPONENTIAL(1,0,15)) ;регистрация пассажира

Изменение маршрутов сообщений

Блок TRANSFER позволяет осуществлять безусловные, статистические и условные переходы. Тип перехода определяется в операнде

A, направление перехода - в операндах B , C и D.

В режиме безусловного перехода операнд A в блоке пуст. Все транзакты переходят к блоку, указанному в поле B . Например:

TRANSFER ,NEXT

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

Если в поле A блока TRANSFER записана десятичная дробь, начинающаяся точкой, то блок работает в режиме статистического перехода. Здесь десятичная дробь определяет вероятность перехода транзакта к блоку, имя которого указывается в поле C . При этом поле B пустое. С вероятностью (1? ? A?) транзакт переходит к блоку,

следующему за блоком TRANSFER.

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

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

TRANSFER.5,,OTD2 OTD1 SEIZE PROD1

OTD2 SEIZEPROD2

Условный переход. Режим условного перехода определяется мнемокодом, заданным в поле А. Рассмотрим различные режимы.

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

Если в поле А определено значение ALL, то поля В и С содержат имена блоков, поле D содержит целое число. Транзакт последовательно пытается войти в блоки, отстоящие друг от друга на рас-стояние D, начиная с блока В и заканчивая блоком С до первой успешной попытки. Если ни один из блоков не может принять транзакт, то он остается в блоке TRANSFER и повторяет попытку перехода при каждом изменении системного времени. Здесь значение поля D должно задаваться таким образом, чтобы выполнялось условие

№С ? №В ?М ?D, где M - любое целое число. Если поле D не задано, то транзакт пытается последовательно войти в каждый блок между В и С .

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

Блок GATE позволяет изменять путь транзакта в зависимости от состояния моделируемого оборудования. Блок имеет следующую структуру:

GATE O A,B

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

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

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

Режим условного перехода: если проверяемый объект не находится в требуемом состоянии, транзакт направляется к блоку, указан-ному в поле В . В противном случае транзакт направляется к следующему за GATE блоку. Например, в блоке

GATE SF STR транзакт будет задержан до тех пор, пока память с именем STR не будет полной.

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

TEST O A,B,C

В поле O указывается мнемоника отношения: ЇL? - ?<?, ЇLE? - Ї??, ЇE? - Ї=?, ЇNE? - Ї??, ЇG? - Ї>?, ЇGE? - Ї??.

В полях А и В указываются левое и правое значения условия, соответственно. В поле С указывается имя блока, к которому направляется транзакт, если проверяемое условие ложно. Если проверяемое условие истинно, то транзакт переходит к следующему за TEST блоку.

Например, при входе транзакта в оператор TEST G Q$OCH,5,OTD1 проверяется длина очереди OCH. Если длина очереди больше пяти, то транзакт направляется к следующему за TEST блоку, иначе транзакт переходит к блоку с именем OTD1.

Пример 2.4

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

Модель, имитирующая работу магазина за 8 ч:

GENERATE (EXPONENTIAL(1,0,20));приход покупателей TRANSFER .3,,PROM; выбор покупателем отдела; работа продовольственного отдела

PROD TEST LE Q$LIN1,5,BYBY;если очередь больше 5-ти ;чел. -- уход покупателя

QUEUE LIN1 ;поставить в очередь в ;продовольственный отдел

SEIZE PROD1;занять продавца DEPART LIN1 ;покинуть очередь в; продовольственный отдел ADVANCE (EXPONENTIAL(1,0,30)); обслуживание покупателя RELEASE PROD1;освободить продавца TERMINATE; уход покупателя; работа промтоварного отдела PROM TEST LE Q$LIN1,2,BYBY QUEUE LIN2

SEIZE PROD2 DEPART LIN2

ADVANCE (EXPONENTIAL(1,0,35)) RELEASE PROD2

BYBY TERMINATE ; таймер GENERATE 2880 TERMINATE 1

START 1

Работа с памятью

Память -- особый объект языка, который призван имитировать разного рода накопители, используемые в исследуемых системах, в которых может одновременно находиться несколько транзактов. Для каждой применяемой памяти пользователь должен указать ее емкость - объ?м памяти, определяющий максимальное количество транзактов, которые могут одновременно находиться в ней. Для указания емкости используется оператор описания памяти STORAGE. Как любой оператор описания языка этот блок помещается до первого блока GENERATE. Поле метки содержит имя памяти, а операнд A указывает емкость памяти. Например, для описания памяти емкостью 10 единиц используется блок

STR STORAGE 10

Блок ENTER - занять память. В поле A блока указывается имя памяти, в которую помещается транзакт, в поле B -- число единиц памяти, занимаемых транзактом при входе. Когда транзакт входит в блок ENTER, определяется число свободных единиц памяти. Если значение операнда B не превышает числа свободных единиц памяти, то число занятых единиц увеличивается на значение операнда B . В этом случае транзакт входит в блок ENTER без задержки. Если же значение операнда B превышает число свободных единиц памяти, то транзакт задерживается перед входом в блок ENTER. Задержанные при обращении к памяти транзакты упорядочиваются по приоритету.

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

Пусть транзакт "х" задержан перед входом в блок ENTER. Если для транзакта "y", приходящего после "х", свободной емкости памяти достаточно, то "y" войдет в блок без задержки.

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

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

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

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

Пример 2.5

Автомобили подъезжают к бензозаправочной станции в среднем каждые 4±2 мин. На станции есть две бензоколонки, каждая из которых используется в среднем 5±1 мин. Автостоянка при станции рас-считана на 4 автомобиля. Если подъехавший автомобиль застает обе бензоколонки занятыми, то он встает в очередь на автостоянку. Если же все места и на автостоянке заняты, то автомобиль проезжает мимо. Промоделировать работу станции за 12 часов.

STO STORAGE 4;места под автостоянку COL STORAGE 2 ;бензоколонки

; описание работы бензоколонки

GENERATE 4,2;приезд автомобиля

GATE SNF STO,BYBY; если места заняты - проезжает ENTER STO ;занять место на автостоянке ENTER COL ;занять бензоколонку

LEAVE STO; освободить автостоянку ADVANCE 5,1;заправиться

LEAVE COL; освободить бензоколонку BYBY TERMINATE; покинуть станцию ;таймер

GENERATE 720 TERMINATE 1 START 1

Вычислительные объекты языка

Арифметические переменные. Для того чтобы использовать в программе переменную, необходимо сначала ее описать оператором описания VARIABLE либо FVARIABLE. В поле метки оператора записывается имя переменной, в операнде A - арифметическое выражение, составляемое из СЧА, знаков арифметических операций и круглых скобок. Используются следующие арифметические операции: + , -, # (умножение) , /, @ (взять остаток от деления), \ (целое от деления). Приоритет операций стандартный. Деление на ноль не считается ошибкой, и результатом такого деления является ноль. Остаток от деления на ноль также считается равным нулю.

При использовании переменной в программе указывается СЧА переменной: V$<имя переменной>, например,

ADVANCE V$VAR1 -- задержать транзакт на время, заданное переменной VAR1.

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

Ячейки служат для хранения некоторых постоянных и/или изменяющихся значений данных программы. В отличие от большинства объектов языка ячейка может обозначаться как именем, так и числом. Для работы с ячейками используется блок SAVEVALUE. В поле A этого блока указывается номер/имя ячейки, сохраняющей значение, и вид изменения этого значения ("+" -- накопление, "-" -- уменьшение). В поле B содержится либо СЧА, либо число, которое добавляется либо вычитается, либо заменяет содержимое ячейки.

Например, оператор SAVEVALUE 10+,1

означает, что при поступлении транзакта в блок, к содержимому 10-й ячейки прибавляется единица. Или оператор

SAVEVALUE FRT,V$VAR1

означает, что при поступлении транзакта в блок, в ячейку с именем FRT записывается значение переменной VAR1.

При необходимости обращения к ячейке указывается СЧА ячейки: X$<имя ячейки> (если ячейка задана именем) или XN (если ячейка задана номером N).

Чаще всего на базе ячеек организуются разного рода счетчики. Перед началом имитации содержимое всех используемых в программе ячеек устанавливается в 0. Если же требуется задать значение какой-либо из ячеек до начала моделирования, то для этого используется оператор INITIAL, в поле A которого задается СЧА ячейки, в поле B - присваиваемое значение. Например,

INITIAL X$UCH1,10 -- присвоить ячейке с именем UCH1 значение 10. Этот оператор должен помещаться до первого блока GENERATE.

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

Матрицы служат для хранения некоторых постоянных и/или изменяющихся значений данных программы в виде массивов. Для того чтобы использовать в программе матрицу, необходимо сначала ее описать оператором описания MATRIX. В поле метки оператора записывается имя матрицы. Поле А в операторе не используется, поля B и С содержат числовые значения, определяющие количество строк и количество столбцов в матрице, соответственно. Начальные значения всех элементов матрицы равны нулю. Если необходимо присвоить всем элементам матрицы одинаковые значения, отличные от нуля, используется оператор INITIAL, в поле A которого задается имя матрицы, в поле B - присваиваемое значение.

Для изменения значения отдельного элемента матрицы используется блок MSAVEVALUE. В поле A блока указывается имя матрицы, после которого может быть указан «+» или «-». Поля B и С служат для выбора конкретного элемента матрицы и содержат номер строки и номер столбца, соответственно. В поле D указывается значение, которое должно быть добавлено, вычтено или присвоено элементу матрицы. Если после имени матрицы не стоит никакого знака, то значение

D присваивается элементу. Если после имени матрицы стоит знак «+» или «-», то указанное значение добавляется или вычитается из текущего значения элемента, соответственно.

При необходимости обращения к элементу матрицы указывается СЧА элемента: МX$<имя матрицы>(I,J) (если матрица задана именем) или XN(I,J) (если матрица задана номером N). Здесь I означает номер строки, J - номер столбца.

Пример 2.6.

Модель работы двухтактного буферного запоминающего устройства.

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

Техническое осуществление -- с использованием канала прямого доступа и программного канала. Рассмотрим упрощенную модель системы двухтактного буферирования. Экспериментальная информация в процессе сбора записывается словами в буфер. При заполнении приемного БЗУ до определенного уровня, генерируется запрос к управляющему устройству (УУ) на передачу информации в ДЗУ (включается система прерываний).

Размещено на http://www.allbest.ru/

Эксперимент ДЗУ БЗУ 2 Прерывание Переключение УУ

Рис. 2.2. Схема двухтактного БЗУ

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

При исследовании такой системы на модели могут ставиться различные вопросы: каков должен быть уровень заполнения БЗУ, при котором в системе генерируется запрос на переключение ключей; как связан этот уровень с интенсивностью потока экспериментальных данных и вероятностью переполнения приемного БЗУ за время между запросом и переключением ключей и т.п.

Рассмотрим упрощенное описание модели на языке GPSS. Допустим, объем БЗУ -- 1024 слова. Разрядность слова -- 8 единиц. Тогда память БЗУ1/БЗУ2:

VAR2 VARIABLE 1024#8 STR1 STORAGE V$VAR2

Допустим, запрос на прерывание возникает при заполнении БЗУ до 1020 слов, тогда уровень заполнения:

VAR3 VARIABLE 1020#8

Еще одна переменная -- описание среднего времени задержки между запросом и переключением БЗУ:

VAR4 VARIABLE 10/4

Пусть время между приходом слов в БЗУ распределено экспоненциально и равно в среднем 10 мин., тогда функционирование этой системы:

GENERATE (EXPONENTIAL(1,0,10))

GATE SNF STR1,OTKAZ;если память заполнена -- отказ ENTER STR1,8

TEST E S$STR1,V$VAR3,ENDM

ADVANCE (EXPONENTIAL(1,0,V$VAR4)) ;переключение БЗУ LEAVE STR1,S$STR1

TERMINATE 1

OTKAZ SAVEVALUE 1+,1счетчик слов, потерянных из-за переполнения БЗУ

ENDM TERMINATE

Здесь транзакт попадает в блок ADVANCE только тогда, когда БЗУ заполнена до необходимого уровня. Блок LEAVE полностью очищает память STR1, что равносильно переключению на новое БЗУ.

Приоритеты

Каждый транзакт может иметь свой приоритет -- от 0 до 127. Чем больше номер, тем больше приоритет. Предпочтение в системе отдается транзактам с большим приоритетом, ранее поступившим.

Для изменения приоритета транзакта в процессе его путешествия по системе используется блок PRIORITY. Поле А этого блока определяет значение присваиваемого приоритета. Например, при прохождении через блок PRIORITY 3 транзакту будет присвоен приоритет 3.

Изменение параметров транзакта

Каждый транзакт может иметь до 100 параметров (атрибутов). Значения параметрам присваиваются с помощью блока ASSIGN. В поле A этого блока указывается номер/имя параметра и вид его изменения, в поле B определяется записываемое в параметр значение, в поле С задается при необходимости модификатор значения B в виде имени функции, значение которой умножается на B .

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

ASSIGN 1,10;занести 10 в P1

ASSIGN 2+,V$VAR1,EXP ;добавить в Р2 значение ;V$VAR1*FN$EXP

ASSIGN TRE-,S$STR ;вычесть из Р$TRE значение текущего содержимого памяти

Используя блок ASSIGN, можно организовывать циклы в программе. Например, если необходимо прогнать транзакт 10 раз через блок ADVANCE, это можно осуществить следующим образом:

ASSIGN 1,10;занести 10 в P1 транзакта PROD ADVANCE 52

ASSIGN 1-,1;вычесть 1 из P1

TEST E P1,0,PROD;продолжать цикл пока счетчик не ;обнулится

Косвенная адресация

Косвенная адресация используется в сочетании с любым СЧА, кроме текущего времени С1, случайного числа RNi и времени пребывания транзакта в системе М1.

Структура записи косвенной адресации СЧА*<целое число/имя>, где <целое число/имя> - это номер/имя параметра, в котором указан номер или имя соответствующего СЧА, например:

SEIZE FN*1.

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

В блоке GENERATE косвенная адресация допускается только в поле А.

Списки

Списки определяют внутреннюю организацию GPSS. В языке существует 5 типов списков. Следующие четыре типа ведет симулятор (пользователь не имеет к ним доступа):

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

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

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

- списки синхронизируемых и задержанных транзактов.

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

Блок LINK выполняет включение транзакта в список пользователя. Поле A блока содержит номер или имя списка, куда включается транзакт. Транзакт, попадая в блок LINK, помещается в список, определенный полем A, и временно исключается из процесса (становится пассивным).

Дисциплина постановки в список определяется полем B , которое может принимать одно из следующих значений:

FIFO (первым пришел, первым вышел) - вновь поступивший транзакт помещается в конец списка;

LIFO (последним пришел, первым вышел) - вновь пришедший транзакт помещается в начало списка;

В любом другом случае значение поля B вычисляется, и транзакт помещается в список в соответствии с вычисленным значением (за транзактом, у которого соответствующее значение больше и перед транзактом, у которого соответствующее значение меньше). Например, транзакты могут быть упорядочены в соответствии со значениями их параметров. Если используется СЧА PR, то транзакты упорядочиваются в списке по приоритетам.

Блок UNLINK осуществляет извлечение транзакта из списка. Поле A блока содержит номер или имя списка, из которого извлекается транзакт. Поле B содержит имя блока, к которому направляется извлеченный транзакт. В поле С указывается количество транзактов, извлекаемых из списка (по умолчанию извлекаются все транзакты).

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

Со списками связаны следующие СЧА:

CA$< имя списка > - среднее число транзактов в списке;

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

CH$< имя списка > - текущее число транзактов в списке; CM$< имя списка > - максимальное число транзактов в списке;

CT$< имя списка > - среднее время, проведенное транзактом в списке.

Статистические таблицы

Объект типа таблицы представляет собой эквивалент понятия «гистограмма». Гистограммы применяются для статистического анализа такой случайной величины, функция распределения которой не-известна, но зато имеется достаточно большое число независимых реализаций этой величины.

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

Для описания таблицы используется блок TABLE. В поле метки этого блока задается имя таблицы, в поле A -- аргумент таблицы в виде СЧА. Здесь аргументом таблицы является исследуемая случайная величина. В поле B указывается верхняя граница первого частотного интервала, в поле C -- ширина интервалов, а в поле D -- их число, включающее оба полубесконечных интервала.

Исключением может быть время, проводимое транзактом в очереди. Если необходимо исследовать это время, то используется блок QTABLE, в поле A которого указывается имя очереди, время нахождения в которой нас интересует. Остальные поля данного блока описываются аналогично блоку TABLE. Например, если нас интересует гистограмма времени, проводимого одним транзактом в очереди LIN, то мы можем описать таблицу следующим блоком:

TBL QTABLE LIN,10,20,5

Графически гистограмма должна располагаться следующим образом:

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

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

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

Пример 2.7

Модель вычислительной системы с несколькими абонентскими пунктами (АП)

Пусть ЭВМ обслуживают 5 АП. Программа управления каналом связи опрашивает АП в соответствии со списком опроса. Если у опрашиваемого АП имеется сообщение для передачи, оно посылается в ЭВМ. После завершения передачи данных канал освобождается, и как только выходное сообщение от ЭВМ готово, оно занимает канал связи для передачи, т.е. выходного сообщения (от ЭВМ). Выходное сообщение имеет приоритет перед входным (от АП).

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

1) опрос циклический;

2) время, затрачиваемое на опрос одного АП - 100 мс; 3) интервалы времени между опросами - 10 мс;

4) передача информации происходит со скоростью 300 сотен символов/сек;

5) сообщение может содержать от 6 до 60 сотен символов;

6) интервалы времени между возникающими сообщениями от АП распределены экспоненциально со средним значением 500 мс;

7) время обработки сообщения от ЭВМ - 500 мс. Определим вычислительные объекты:

...

Подобные документы

  • Процессы функционирования различных систем и сетей связи как стохастических, динамических, дискретно-непрерывных математических моделей. Блоки языка GPSS, использованные в программе. Общая информация о результатах работы модели, о группах транзактов.

    курсовая работа [27,3 K], добавлен 18.01.2010

  • Язык GPSS как один из наиболее эффективных и распространенных языков моделирования сложных дискретных систем. Транзакт - элемент системы массового обслуживания. Решение задач на основе моделирования с применением языка GPSS, создание имитационной модели.

    курсовая работа [54,7 K], добавлен 25.11.2010

  • Понятие компьютерной модели и преимущества компьютерного моделирования. Процесс построения имитационной модели. История создания системы GPSS World. Анализ задачи по прохождению турникета на стадион посредством языка имитационного моделирования GPSS.

    курсовая работа [291,3 K], добавлен 11.01.2012

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

    курсовая работа [276,8 K], добавлен 25.06.2011

  • Применение метода имитационного моделирования с использованием генератора случайных чисел для расчета статистически достоверных переменных. Создание программы на языке GPSS. Результаты моделирования диспетчерского пункта по управлению транспортом.

    курсовая работа [399,9 K], добавлен 28.02.2013

  • Основные сведение о системе моделирования GPSS и блоки, используемые при моделировании одноканальных и многоканальных систем массового обслуживания. Разработка модели работы ремонтного подразделения в течение суток с использованием программы GPSS World.

    курсовая работа [36,4 K], добавлен 11.02.2015

  • Принципы работы в системе имитационного моделирования GPSS World. Анализ количества транзактов, вошедших в блок с момента последней трансляции. Характеристика команд Window/Simulation, Window/Block, Command/Creat Simulation. Образец системы Sample 1.

    лабораторная работа [343,3 K], добавлен 29.03.2015

  • Язык моделирования GPSS World, его особенности и версии. Разработка заданий для обучения основным и специальным приемам создания имитационных моделей на языке GPSS World. Разработка программной документации. Разработка и написание методических указаний.

    дипломная работа [4,4 M], добавлен 07.07.2012

  • Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.

    курсовая работа [802,8 K], добавлен 04.03.2015

  • Автоматизация технологических процессов. Написание имитационных моделей систем с дискретными событиями. Модели систем массового обслуживания в общецелевой системе GPSS. Логическая схема алгоритмов и схема программы. Математическая модель и ее описание.

    курсовая работа [1,4 M], добавлен 29.06.2011

  • GPSS как один из эффективных и распространенных языков моделирования сложных дискретных систем. Возможности языка GPSS. Построение имитационной модели "Моделирование мини-АТС". Разработка программы работы диспетчерского пункта в торговом предприятии.

    курсовая работа [118,8 K], добавлен 19.01.2016

  • Концептуальная модель процесса обслуживания покупателей в магазине. Описание системы моделирования GPSS. Разработка моделирующей программы на специализированном языке имитационного моделирования в среде AnyLogic. Результаты вычислительных экспериментов.

    курсовая работа [906,9 K], добавлен 12.07.2012

  • Процесс моделирования имитационной модели функционирования класса персональных компьютеров на языке GPSS World. Поиск линейной зависимости и оценка полученного уравнения. Отчет по результатам работы имитационной модели. Листинг разработанной программы.

    курсовая работа [49,2 K], добавлен 07.09.2012

  • Концептуальная схема системы пополнения цехового склада деталей, разработка программы GPSS-модели и цифровых экспериментов. Тестирование программы, описывающей систему пополнения склада деталей, для различных параметров зерна ГСЧ и времени моделирования.

    курсовая работа [521,9 K], добавлен 01.10.2012

  • Особенности систем массового обслуживания и сущность имитационного моделирования с использованием GPSS. Структурная схема модели системы и временная диаграмма. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.

    курсовая работа [214,2 K], добавлен 23.06.2011

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

    курсовая работа [713,6 K], добавлен 05.06.2013

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

    курсовая работа [259,4 K], добавлен 08.05.2013

  • GPSS (General Purpose System Simulation) как язык для имитационного моделирования, его принципы и используемые методы, инструменты и средства. Метод построения модели с помощью GPSS, порядок составления блок-схемы данного процесса. Листинг модели.

    курсовая работа [32,1 K], добавлен 20.12.2013

  • Метод имитационного моделирования, построение программа на языке GPSS\PS. Укрупненная схема моделирующего алгоритма. Математическая модель и ее описание. Возможные улучшения в работе системы. Результаты моделирования оптимизации работы поликлиники.

    курсовая работа [148,6 K], добавлен 29.06.2011

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

    курсовая работа [32,9 K], добавлен 13.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.