100 единиц модельного времени, и уничтожения этих транзактов. На-
чальное значение счетчика завершений равно 1000. Каждый транзакт,
проходящий через блок TERMINATE, вычитает из счетчика единицу, и
таким образом моделирование завершится, когда тысячный по счету
транзакт войдет в блок TERMINATE. При этом точное значение таймера
в момент завершения прогона непредсказуемо. Следовательно, в приве-
денном примере продолжительность прогона устанавливается не по мо-
дельному времени, а по количеству транзактов, прошедших через мо-
дель.
GENERATE 100,40
TERMINATE 1
START 1000
Если необходимо управлять продолжительностью прогона по мо-
дельному времени, то в модели используется специальный сегмент, на-
зываемый сегментом таймера.
GENERATE 100,40
TERMINATE
GENERATE 100000
TERMINATE 1
START 1
Например, в модели из двух сегментов, приведенной на рис. 2,
первый (основной) сегмент выполняет те же функции, что и в предыду-
щем примере. Заметим, однако, что поле A блока TERMINATE в первом
сегменте пусто, т.е. уничтожаемые транзакты не уменьшают содержимо-
го счетчика завершений. Во втором сегменте блок GENERATE создаст
первый транзакт в момент модельного времени, равный 100000. Но этот
транзакт окажется и последним в данном сегменте, так как, войдя в
блок TERMINATE, он обратит в 0 содержимое счетчика завершений,
установленное оператором START равным 1. Таким образом, в этой мо-
дели гарантируется завершение прогона в определенный момент модель-
ного времени, а точное количество транзактов, прошедших через мо-
дель, непредсказуемо.
В приведенных примерах транзакты, входящие в модель через блок
GENERATE, в тот же момент модельного времени уничтожались в блоке
TERMINATE. В моделях систем массового обслуживания заявки обслужи-
ваются приборами (каналами) СМО в течение некоторого промежутка
времени прежде, чем покинуть СМО. Для моделирования такого обслужи-
вания, т.е. для задержки транзактов на определенный отрезок модель-
ного времени, служит блок ADVANCE (задержать), имеющий следующий
формат:
имя ADVANCE A,B
Операнды в полях A и B имеют тот же смысл, что и в соот-
ветствующих полях блока GENERATE. Следует отметить, что транзакты,
входящие в блок ADVANCE, переводятся из списка текущих событий в
список будущих событий, а по истечении вычисленного времени задерж-
ки возвращаются назад, в список текущих событий, и их продвижение
по блок-схеме продолжается. Если вычисленное время задержки равно
0, то транзакт в тот же момент модельного времени переходит в сле-
дующий блок, оставаясь в списке текущих событий.
Например, в сегменте, приведенном на рис. 3, транзакты, посту-
пающие в модель из блока GENERATE через случайные интервалы време-
ни, имеющие равномерное распределение на отрезке [60;140], попадают
в блок ADVANCE. Здесь определяется случайное время задержки тран-
закта, имеющее равномерное распределение на отрезке [30;130], и
транзакт переводится в список будущих событий. По истечении времени
задержки транзакт возвращается в список текущих событий и входит в
блок TERMINATE, где уничтожается. Заметим, что в списке будущих со-
бытий, а значит и в блоке ADVANCE может одновременно находиться
произвольное количество транзактов.
GENERATE 100,40
ADVANCE 80,50
TERMINATE 1
В рассмотренных выше примерах случайные интервалы времени под-
чинялись равномерному закону распределения вероятностей. Для полу-
чения случайных величин с другими распределениями в GPSS/PC исполь-
зуются вычислительные объекты: переменные и функции.
Как известно, произвольная случайная величина связана со слу-
чайной величиной R, имеющей равномерное распределение на отрезке
[0;1], через свою обратную функцию распределения. Для некоторых
случайных величин уравнение связи имеет явное решение, и значение
случайной величины с заданным распределением вероятностей может
быть вычислено через R по формуле. Так, например, значение случай-
ной величины E с показательным (экспоненциальным) распределением с
параметром d вычисляется по формуле:
E= -(1/d) * ln(R)
Напомним, что параметр d имеет смысл величины, обратной математи-
ческому ожиданию E, а, следовательно, 1/d - математическое ожидание
(среднее значение) случайной величины E.
Для получения случайной величины R с равномерным распределени-
ем на отрезке [0;1] в GPSS/PC имеются встроенные генераторы случай-
ных чисел. Для получения случайного числа путем обращения к такому
генератору достаточно записать системный СЧА RN с номером генерато-
ра, например RN1. Правда, встроенные генераторы случайных чисел
GPSS/PC дают числа не на отрезке [0;1], а целые случайные числа,
равномерно распределенные от 0 до 999, но их нетрудно привести к
указанному отрезку делением на 1000.
Проще всего описанные вычисления в GPSS/PC выполняются с
использованием арифметических переменных. Они могут быть целыми и
действительными. Целые переменные определяются перед началом моде-
лирования с помощью оператора определения VARIABLE
(переменная), имеющего следующий формат:
имя VARIABLE выражение
Здесь имя - имя переменной, используемое для ссылок на нее, а
выражение - арифметическое выражение, определяющее переменную.
Арифметическое выражение представляет собой комбинацию операндов,
в качестве которых могут выступать константы, СЧА и функции, зна-
ков арифметических операций и круглых скобок. Следует заметить,
что знаком операции умножения в GPSS/PC является символ # (номер).
Результат каждой промежуточной операции в целых переменных преобра-
зуется к целому типу путем отбрасывания дробной части, и, таким
образом, результатом операции деления является целая часть частного.
Действительные переменные 0определяются перед началом модели-
рования с помощью оператора определения FVARIABLE, имеющего тот же
формат, что и оператор VARIABLE. Отличие действительных переменных
от целых заключается в том, что в действительных переменных все
промежуточные операции выполняются с сохранением дробной части
чисел, и лишь окончательный результат приводится к целому типу отб-
расыванием дробной части.
Арифметические переменные обоих типов имеют единственный СЧА с
названием V, значением которого является результат вычисления ариф-
метического выражения, определяющего переменную. Вычисление выраже-
ния производится при входе транзакта в блок, содержащий ссылку на
СЧА V с именем переменной.
Действительные переменные могут быть использованы для получе-
ния случайных интервалов времени с показательным законом распреде-
ления. Пусть в модели из примера на рис. 3 распределения времени
поступления транзактов и времени задержки должны иметь показатель-
ный закон. Это может быть сделано так, как показано на рис. 4.
TARR FVARIABLE -100#LOG((1+RN1)/1000)
TSRV FVARIABLE -80#LOG((1+RN1)/1000)
GENERATE V$TARR
ADVANCE V$TSRV
TERMINATE 1
Рис. 4
Переменная с именем TARR задает выражение для вычисления ин-
тервала поступления со средним значением 100, вторая переменная с
именем TSRV - для вычисления времени задержки со средним значением
... , как в моделируемой СМО перемещаются заявки, соответствующие транзактам. В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования симулятор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в ...
... возвращаются на ввод и во всех очередях обслуживаются первыми. Смоделировать работу вычислительного центра в течение 30 ч. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. 1.1 Построение концептуальной модели объекта На первом этапе проведения моделирования необходимо построить концептуальную модель (Рис. 1), т.е. концептуальная (содержательная) ...
... в результате входа транзактов в блоки и выполнения блоками своих функций. В данной работе требуется с помощью пакета моделирования систем GPSS/PC исследовать модель заданной СМО. Задание На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до ...
... А При входе в блок RELEASE освобождается устройство, номер которого указан в поле А. Устройство становится доступным для других транзактов. При моделировании работы устройств, когда новое требование пытается прервать обслуживание предыдущего, используются блоки PREEMPT (захватить устройство) и RETURN (вернуть устройство ранее прерванному требованию). Блок PREEMPT имеет следующий формат: ...
0 комментариев