Рис.3.4 Решение примера А)
число 3 из которого вычитается 1, 3-1 =2 . Приход следующего транзакта через 50 единиц, но в 100 единиц абсолютного времени, уменьшит показания ещё на единицу и т. д. Окончательное решение, что ИМ окончится в 150 временных дискрет очевидно из рисунка 3.4. В примере Б) ИМ окончатся в 100 временных дискрет, так как вычитается число 2; в примере В) ИМ окончится в 50 временных дискрет, так как следуя выражению 3.1) из числа 3 (число стартов) вычитается число 5 (значение операнда А ОБ TERMINATE ) и сразу получается отрицательный результат. В примере Г) появление второго ОБ GENERATE ни на что не влияет, так как во втором ОБ TERMINATE операнд А равен 0 (это значение можно было бы и не писать, так как оно задано по умолчанию, но наличие его более наглядно, ошибки при этом не возникает) и время окончания ИМ равно 150 временным дискретам. Значительно более интересен пример Д) и его поясним с помощью рис.3.5. Поскольку в МФ появилось два самостоятельных ОБ GENERATE необходимо рисовать временные оси для движения транзактов из каждого источника, а временные засечки отдельных ОБ GENERATE сносить на ось абсолютного времени АС1.
СЗ=2 СЗ=0
ОБ150 100
ОБ2 СЗ=150 75 100
AC1100
Рис.3.5 Решение задачи Д)
В момент времени 50 появляется транзакт с ОБ1 и отмечается также на оси абсолютного времени АС1, показания СЗ уменьшаются на единицу, приход первого транзакта с ОБ2 во временную дискрету 75, уменьшает СЗ до 1, приход второго транзакта с ОБ1 в 100 единиц времени и его терминирование останавливает процесс ИМ в момент времени 100.
Довольно часто в процессе ИМ требуется определить не средние значения атрибутов объектов, а значения зависящие от времени: производительность, динамику процесса, суммарные затраты за какой то период времени и т.д. В этом случае в качестве контрольной точки берётся не число стартов, а период времени (рабочая смена, сутки, месяц и т.д.). Основным условием при этом является приведение всех рассматриваемых при моделировании интервалов времени к одному масштабу, например, если предельное время задано в сутках, а темп прихода транзактов в минутах, то правильнее все интервалы времени исчислять в минутах. Для реализации правила окончания ИМ по времени программа должна проделать следующие действия :
1. Принять предельный интервал абсолютного времени АС1 - Ту за условную единицу отсчёта (машинная единица).
2. Суммировать времена движения транзактов
.3. Проверять условие АС1 -
0. 3.2Проиллюстрируем условие 3.2) на рис.3.6. Первый уничтоженный транзакт отмечает своё время на оси АС1, второй приплюсовывает время своего движения к точке Т1, третий к точке Т2 и т. д., до тех пор, пока последний у – ый интервал текущего времени транзакта не сравняется или
АС1пр0.0 Т1 Т2 Ty-1 АС1 Ty
Рис.3.6 Иллюстрация правила окончания ИМ по времени
не превысит значение АС1пр. На рисунке это значение Ту больше предельного значения.
4. Выполнение условия 3.2 приводит к появлению машинной единицы (см. п.1), которая сравнивается со значением операнда А =1 ОБ START, результат обнуляется, что приводит к выдаче сигнала о прекращении процесса ИМ.
Указанные действия программы реализуются следующим образом:
-Обязательно вводится дополнительный парный программный модуль:
GENERATE AC1пр.
TERMINATE 1 ,
называемый таймером, который учитывает накапливаемое время движения транзактов. Значение операнда А ОБ GENERATE равняется заданному предельному интервалу АС1пр., других операндов нет.
- В обязательном порядке обнуляются значения операндов А всех ОБ TERMINATE модуля исполнения МФ.
- Значение операнда А ОУ START в модуле управления устанавливается равным 1.
Рассмотрим этот простой алгоритм на примере Д), который модифицируем для окончания по времени работы в течение 5 ч. или 300 минут.
Д) SIMULATE Е) SIMULATE
GENERATE 50 GENERATE 50
TERMINATE 1 TERMINATE 0
GENERATE 75 GENERATE 75
TERMINATE 1 TERMINATE 0
START 3 GENERATE 300
END TERMINATE 1
START 1
END
Рассмотрим некоторые особенности примера Е).
Транзакты в МФ не терминируются, а лишь отмечают факт своего прохода отметкой на оси АС1 (запомним это важное обстоятельство на будущее), таймер срабатывает при выполнении условия 3.2. Показания операндов А ОБ TERMINATE и ОУ START вычитаются, обнуляются, что служит командой для прекращения процесса ИМ.
Для обратного перехода к управлению с помощью числа стартов необходимо:
- Удалить из модуля управления МФ таймер.
- Записать в поле операнда А ОУ START желаемое число стартов.
- Записать в поля операндов А ОБ TERMINATE желаемые значения.
В примере Е) мы впервые сталкиваемся с весьма важным обстоятельством, когда 2 транзакта из разных ГСЧ приходят в одно и тоже время, такие моменты в нашем примере наступают в 150 и 300 временных дискрет, в эти моменты транзакты становятся связанными по времени. Возникает вопрос, как они проходят по МФ? Нельзя забывать, что транзакты двигаются один за другим по одному в единицу времени. Для решения этой проблемы в GPSS/H предусмотрены чёткие правила:
- Транзакты одинакового приоритета записываются в списке текущих событий - СТС в порядке возрастания их ИН. Следовательно проблема решается просто: вначале исполняется транзакт с меньшим ИН, а затем с большим ИН, но имеющим одно и тоже время. При этом засечка на оси АС1 будет одинаковой.
- При разных приоритетах, если транзакты связаны по времени первым движется транзакт, имеющий больший приоритет.
3.6 Редактирование и отладка с помощью дебагера
Как уже было отмечено выше, одним из преимуществ GPSS/H является наличие отладчика программ моделирования (дебагера), который позволяет пользователю эффективно работать с программой в диалоговом режиме, осуществляя не только тестовую проверку, но и позволяя вводить необходимые изменения. Работа в пакетном режиме, позволяет оценивать результаты моделирования лишь по окончанию процесса ИМ. Поэтому констатация наличия ошибок в итоговом отчёте мало, что даёт исследователю, удлиняя и удорожая процесс исследования. В связи с этим интерактивный режим оказывается весьма полезным, так как он позволяет не только получать промежуточную информацию о той части МФ, которая вызывает наибольшие сомнения, но и вносить конструктивные изменения. В пакетном режиме очень трудно до начала ИМ выделить ту часть итогового отчёта, которая бы представила наибольший интерес, а также оценить заранее характер и возможность возникновения ошибок. Тестовый режим в большинстве случаев снимает ограничения, присущие пакетному режиму. Техника и технология использования возможностей отладчика будет рассмотрена ниже.
Запуск отладчика (тестовый режим, дебагер) осуществляется записью (после появления приглашения в командной строке используемой оболочки или DOS) следующего вида:
< gpssh filename tv > ,
где filename - имя МФ с расширением .gps, а -tv (test vision), является командой запуска тестового режима. Вызов отладчика возможен только в случае успешной компиляции вашего МФ, не пугайтесь, если отладчик не вызывается, вернитесь к вашему МФ и по F4, основываясь на данных об ошибках, содержащихся в листинге отчёта ( имя вашего файла с расширением .lis ), внесите все необходимые коррективы в основной файл с расширением .gps и лишь затем повторите попытку вызова отладчика.