d9e5a92d

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

Рассмотрим оба условия.

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

В данном случае основанием для окончания ИМ является число, задаваемое операндом А ОУ START, сразу после успешной компиляции и начала моделирования это число вносится в счётчик завершений. Проход первого транзакта через ОБ TERMINATE (уничтожение транзакта) приводит к вычитанию значения операнда А ОБ TERMINATE из показаний СЗ, каждый следующий проход транзакта через свой ОБ TERMINATE уменьшает показания СЗ на число, определяемое операндом А (напомним, что ОБ может быть много, но СЗ в МФ один !). Значение операнда А по умолчанию равно 0, т.е. проход Хакт через такой ОБ TERMINATE не изменяет показаний СЗ.

В других случаях значение операнда А может быть любым целым положительным числом. На основании сказанного можно предложить выражение , позволяющее понять логику работы СЗ:
A(START) -


0 , 3.1
которое читается следующим образом для выполнения условия прекращения ИМ по числу стартов, необходимо из числа, первоначально заданного в СЗ операндом А ОБ START, вычитать накапливаемую сумму терминирований, задаваемых операндами разных ОБ TERMINATE (если их несколько в МФ) до выполнения условия, что разность станет равной нулю или примет отрицательное значение.
Рассмотрим несколько простых примеров, решаемых устно, но при желании их можно промоделировать в режиме контроля с помощью отладчика (описание см.3.6).
Примеры.
А)SIMULATE Б) SIMULATE В) SIMULATE
GENERATE 50 GENERATE 50 GENERATE 50
TERMINATE 1 TERMINATE 2 TERMINATE 5
START 3 START 3 START 3
END END END Г) SIMULATE Д) SIMULATE GENERATE 50 GENERATE 50
TERMINATE 1 TERMINATE 1
GENERATE 100 GENERATE 75
TERMINATE 0 TERMINATE 1
START 3 START 3
END END В каждом из этих примеров необходимо ответить на вопрос, - В какой момент времени окончится процесс ИМ? Рассмотрим эти примеры последовательно. Для начала представим себе временную ось, начинающуюся всегда в момент времени 0.0. Временная дискрета выбирается исследователем, предположим, что цифра 50 в ОБ GENERATE соответствует 50 минутам (секундам, часам и т.д.).

На рис. 3.4 представлена эта временная ось.

Используем рисунок для решения примера А. Поскольку задано детерминированное значение операнда А ОБ GENERATE, то транзакты будут поступать каждые 50 временных дискрет, а именно 50,100,150 и т. д. Первый транзакт придёт в момент 50, сразу пройдёт через ОБ TERMINATE, операнд А которого равен единице. В СЗ записано СЗ=3 СЗ=2 СЗ=1 СЗ=0
0.0 50 100 150 Рис.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
ОБ1
50 100
ОБ2 СЗ=1
50 75 100
AC1
100
Рис.3.5 Решение задачи Д)
В момент времени 50 появляется транзакт с ОБ1 и отмечается также на оси абсолютного времени АС1, показания СЗ уменьшаются на единицу, приход первого транзакта с ОБ2 во временную дискрету 75, уменьшает СЗ до 1, приход второго транзакта с ОБ1 в 100 единиц времени и его терминирование останавливает процесс ИМ в момент времени 100. 3.5.2 Правило окончания по времени испытаний Довольно часто в процессе ИМ требуется определить не средние значения атрибутов объектов, а значения зависящие от времени: производительность, динамику процесса, суммарные затраты за какой то период времени и т.д. В этом случае в качестве контрольной точки берётся не число стартов, а период времени (рабочая смена, сутки, месяц и т.д.).

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


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 будет одинаковой.
- При разных приоритетах, если транзакты связаны по времени первым движется транзакт, имеющий больший приоритет.

Редактирование и отладка с помощью дебагера

Как уже было отмечено выше, одним из преимуществ GPSS/H является наличие отладчика программ моделирования (дебагера), который позволяет пользователю эффективно работать с программой в диалоговом режиме, осуществляя не только тестовую проверку, но и позволяя вводить необходимые изменения. Работа в пакетном режиме, позволяет оценивать результаты моделирования лишь по окончанию процесса ИМ. Поэтому констатация наличия ошибок в итоговом отчёте мало, что даёт исследователю, удлиняя и удорожая процесс исследования. В связи с этим интерактивный режим оказывается весьма полезным, так как он позволяет не только получать промежуточную информацию о той части МФ, которая вызывает наибольшие сомнения, но и вносить конструктивные изменения.

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

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

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


Запуск отладчика (тестовый режим, дебагер) осуществляется записью (после появления приглашения в командной строке используемой оболочки или DOS) следующего вида:
gpssh filename tv ,
где filename - имя МФ с расширением .gps, а -tv (test vision), является командой запуска тестового режима. Вызов отладчика возможен только в случае успешной компиляции вашего МФ, не пугайтесь, если отладчик не вызывается, вернитесь к вашему МФ и по F4, основываясь на данных об ошибках, содержащихся в листинге отчёта ( имя вашего файла с расширением .lis ), внесите все необходимые коррективы в основной файл с расширением .gps и лишь затем повторите попытку вызова отладчика.
После исполнения команды вызова отладчика на экране дисплея появляется трёхоконный отладчик , который представлен на рис.3.7 А и В . Вариант А наблюдается на экране дисплея сразу после вызова отладчика. В качестве иллюстрации рассмотрен простейший пример поступления деталей со склада, их перемещения по ленте транспортёра, обработки на станке и ухода из системы.

Процесс ИМ длится до получения данных о 100 обработанных деталях (см. 3.7, пример 3.1).
А. После вызова отладчика
ВLOCK CURRENT TOTAL SOURCE FOR MODEL xx.GPS ==================================================
¦S/C: OFF ABS CLOCK: 0. REL CLOCK: 0. TTG: 0
===================================================
¦XACT: CURBLK: NEXTBLK: CHAINS: PC: ¦
¦ ¦
¦MARK-TIME: MOVE-TIME: PRIORITY: ¦
L===================================================
Ready!
:
В.После инициализации отладчика
BLOCK CURRENT TOTAL SOURCE FOR MODEL xx.GPS
1 1 GENERATE 4,1 поступление заготовок
2 0 ADVANCE 2 транспортирование
3 0 SEIZE SERVER занятие сервера
4 0 ADVANCE 3.75,1 обслуживание на сервере
===================================================¬
¦S/C: OFF ABS CLOCK: 3.5406 REL CLOCK:3.5406 TTG:100 ========================================================
ХACT: 1 CURBLK: 1 NEXTBLK: 2 CHAINS: CEC PC: ¦ MARK-TIME: 3.5406 MOVE-TIME: 3.5406 PRIORITY: 0 ========================================================
Ready!
: s
XACT 1 POISED AT BLOCK 2. RELATIVE CLOCK: 3.5406
:
Рис.3.7 Вид трёхоконного отладчика, А - в начальный момент вызова ; В - после инициализации отладчика ( первый шаг).
На рис.3.7 представлены оба варианта окон отладчикH, вариант А - сразу после вызова окна пусты, первое окно исходного МФ (SOURCE FOR MODEL), следующее статусное окно и последнее диалоговое окно. На рис .3.4В представлены те же окна после инициализации МФ примера .
Инициализация вызванного трёхоконного отладчика производится двумя эквивалентными путями:

  • Нажатием клавиши F10, что соответствует одному такту действия отладчика (каждое последующее последовательное нажатие клавиши продвигает процесс ИМ на один такт).
  • Написанием в командной строке после приглашения ( : ) команды:

s[tep]_ n ,
где команда может быть написана в любом виде, начиная от четырёх букв до одной первой буквы и через обязательный пробел число тактов, на которые продвинется процесс ИМ (по умолчанию 1), т.е. s 1 =F10. При отсутствии пробела появится предупреждение об ошибке, после которого необходимо написать команду в правильном формате.

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

Рассмотрим теперь более подробно содержание окон, руководствуясь рис. 3.7В, поскольку все названия у окон обеих вариантов одинаковы, но в варианте В присутствует конкретное содержание.
Примечание: Окно диалога варианта А содержит запись - Simulation begins, которая исчезает после инициализации, кроме того, на рисунке не показаны всегда существующие надписи об авторе программы (см. реальное окно отладчика).
Окно исходного модельного файла (окно источника).
Занимает одну треть экрана дисплея и является верхней частью экрана отладчика

  • Справа вверху первого окна отладчика следует общее название:

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

  • BLOCK обозначает номер ОБ,
  • CURRENT показывает ИН Хакт в ОБ,
  • TOTAL- показывает общее количество транзактов в ОБ за время ИМ,
  • SOURCE CODE (основан на примере ) - показывает 4 или 5 строк исходного МФ, а красная черта указывает на следующий ОБ, куда направится Хакт, если МФ длинный, то высекается только фрагмент, указывающий нахождение Хакт, следующий ОБ и 2-3 сопутствующих ОБ.

Окно текущего положения (статусное окно)
Занимает среднюю часть экрана и содержит информацию о состоянии модели, меняющуюся по мере продвижения Хакт по модели.

  • S/C :OFF - положение флага изменения статуса: выключено,
  • ABS CLOCK значение абсолютного модельного времени,
  • REAL CLOCK значение относительного модельного времени. Оба этих значения в отсутствии ОУ CLEAR или RESET имеют одинаковую величину.
  • TTG (termination to go ) - значение счётчика завершений СЗ, поскольку на первом тактM терминирования не происходит, то оно равно значению операнда А ОБ START и уменьшается при каждом терминировании на величину операнда А ОБ TERMINATE.
  • XACT - ИН транзакта, активного в данный момент.
  • CURBLK- имя или номер ОБ, где находится Хакт.
  • NEXTBLK - имя или номер ОБ, куда направляется транзакт.
  • CHAINS:CEC имя списка, в котором транзакт находится в настоящий момент, в данном примере список текущих событий СТС.
  • PC: - число захватов ( в материалах не используется ).
  • MARK-TIME время, отмечаемое при входе Хакт в модель.
  • MOVE-TIME - время будущего начала движения, если Хакт находится на обслуживании.
  • PRIORITY уровень приоритета Хакт.

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

  • Ready! сигнал, что отладчик готов к началу диалога.
  • :s - приглашение в начале командной строки
  • XACT1 запись после выполнения такта, гласящая, что Хакт 1 располагается перед ОБ 2 , т.е. вышел со склада и готов начать движение на транспортёре. Выражение " poised at " всегда обозначает, что Хакт пытается двигаться в ОБ, номер которого указан в сообщении.

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

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

  • Команда QUIT , написанная в командной строке прерывает сессию отладчика и возвращает управление DOS. Однако при этом, программа вначале проверяет, нет ли какой незавершённой операции, которая должна попасть в листинг отчёта и если такая операция существует и она незавершенна, то программа уточняет, действительно ли вы хотите прервать сессию. При этом у пользователя имеется три выбора: первый повторить запись quit и прервать сессию с потерей неоконченных операций, написать run или continue, позволяющих завершить все операции.
  • Команда QQ или равноценная - qq (Quit Quickly ) сразу прерывает сессию отладчика и немедленно возвращается в командную оболочку без какой либо проверки незавершённых операций.

Обе эти команды не имеют никаких операндов.

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

После запуска отладчика функциональные клавиши F1 F10 клавиши прокрутки выполняют специфические функции, которые указаны в таблице 3.4. Имеет смысл потренироваться с использованием всех клавиш, чтобы запомнить их назначение.
Таблица 3.4 Роль функциональных клавиш

Клавиша Выполняемая функция
Стрелка вверх Прокрутка окна диалога на 5 строк вверх
Стрелка вниз Прокрутка окна диалога на 5 строк вниз
Стрелка влево Прокрутка окна диалога влево на 20 символов
Стрелка вправо Прокрутка окна диалога вправо на 10 символов
F1 Перемещение к началу окна диалога
F2 Удаление окон кроме окна диалога
F3 Перемещение к концу окна диалога
F4 Возвращение к з-м окнам
F5 Прокрутка окна диалога влево на 20 символов
F6 Прокрутка окна диалога вправо на 10 символов
F7 Прокрутка вверх на 1 линию окна МФ
F8 Не используется
F9 Прокрутка вниз на 1 линию окна МФ
F10 Продвижение процесса ИМ на один такт = step

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

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

Команда Операнды Пояснение
AT Имя или номер одного или нескольких ОБ Предлагает список команд отладки, исполняемых каждый раз при достижении Хакт назначенного ОБ, прерывается командой END или для ранее установленных точек командой UNBREAK.
BREAK Имя или номер одного или нескольких ОБ Вводит прерывание процесса для каждого установленного ОБ, глобальное прерывание снимается командой UNBREAK. локальное прерывание снимается командой CONTINUE
CONTINUE Ноль или несколько имёнSCAN,NEXT, SYSTEM Служит для возобновления ИМ или для снятия локальных точек прерывания
DISPLAY Статус или код объекта
См. примечания 1,2
Выводит на экран дисплея статистики многих объектов и другую информацию, прерывается нажатием клавиш BREAK ,CTRL-C,CTRL-BREAK
QQ Не имеет Немедленно прекращает процесс ИМ
QUIT Не имеет Прекращает процесс ИМ при выполнении условий
RUN Ноль или больше имён Исполняет процесс ИМ, снимает все условия остановки процесса ИМ
SCAN,SYSTEM, NEXT,CLOCK, ХACT Устанавливает глобальные условия запрета.
SET TIME =n,nS,nM Устанавливает предел времени исполнения процесса в секундах или минутах
TLOG[=]ON,OFF Переключает логику действия терминала, при включении отображает на экране
TV[ = ] ON,OFF Управляет показом процесса отладки
STEP Число тактов Задаёт темп продвижения по модели
STOP Не имеет Прерывает на время процесс ИМ

TRAP
SYSTEM Определяет, что в каждый момент времени Хакт останавливается, контроль передаётся пользователю
NEXT Хакт снимается из СТС, появляется сообщение, контроль передаётся пользователю
SCAN Производит сканирование СТС, контроль передаётся пользователю
CLOCK Ставит ограничение на абсолютное время, когда оно достигает назначенной величины, контроль передаётся пользователю
XACT Ставит ограничение на Хакт с определённым ИН
UNBREAK Одно или несколько имён ОБ Снимает глобальные условия прерывания
UNTRAP SYSTEM, NEXT, CLOCK ,XACT Снимает условия запрета со всех точек модели

Приложение. В списке классов и кодов объектов, упомянутых в таблице 3.5, подчёркнуты допустимые сокращения
1. коды состояния модели
ATL blockname/ num - список AT имён или номеров ОБ
ATP - все точки AT
BREAKPOINTS - все глобальные точки прерывания
CLOCKS - абсолютное и относительное время
COMMON - использование общей памяти
OUTPUT - стандартный отчёт
STATUS - значения ИН Хакт, времени, значения СЗ
TRAPS - все глобальные запреты
2 Имена классов объектов
AMP - отображение всех амперпеременных
BLO - отображение данных ОБ
FAC - отображение данных об устройствах
QUE - отображение данных об очередях
RNO - выходные данные о БСВ
STO - отображение данных о памятях
TAB - отображение данных о талицах

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

Наличие отладчика примечательно тем, что после успешно проведённой симуляции и исполнения команды ОУ START, можно передать управление программой пользователю. Пользователь может применить одну или несколько команд отладчика, дальнейшая работа может вестись в диалоговом режиме, с последовательной передачей функций управления от программы к пользователю и обратно. Такой режим способствует отладке программы, уточнению сомнительных мест, выводу на дисплей любой интересующей пользователя информации. Процесс продолжается до подачи команды STOP или любой команды выхода из тестового режима, например, QQ.

Отметим, что в тестовом режиме (сеансе отладчика) невозможно внести какие либо изменения в МФ! Для внесения изменений необходимо прервать сеанс отладчика, вернуться к редактору, с помощью которого вы создавали МФ, внести необходимые изменения и лишь после этого вернуться в тестовый режим.
Далее рассмотрим команды, приведенные в таблице 3.5. Команды рассматриваются не в алфавитном порядке, а по частоте использования и по важности. Первой рассмотрим команду DISPLAY, позволяющую выводить на экран дисплея разнообразную информации о состоянии модели и о данных различных объектов
DISPLAY
Команда используется для выдачи информации о членах классов объектов или о состоянии модели. Классы объектов и коды состояний приведены в комментариях 1,2 таблицы 3.5.
А. Информация о членах классов объектов имеет следующий формат:
D[isplay] класс объекта (имя, номер)
Приведём несколько примеров (обратите внимание на возможные варианты записи команды):
DISPLAY FAC - вывести данные об устройствах
DIS QUEUE(SAM,FRED) - данные об очередях SAM,FRED
D ВLO(110,20)-данные об ОБ с первого по десятый и о 20-м
d AMP -показать все амперпеременные
Если нет членов класса, удовлетворяющих записанной команде, то информация не отображается. Например, если запрашивается информация об устройствах, а ни одно устройство пока не захвачено, то информация на дисплее не появляется.
Б. Информация о статусе модели имеет следующий формат ( впредь будем пользоваться только сокращённой формой записи команды ) :
d код , а для транзактов
d xact=n например ,
d CPU COM- показать время исполнения ЦПУ и загрузку памяти,
d STA - показать состояние модели ( Хакт, время, состояние СЗ ),
d CEC FEC - показать СТС и СБС (списки текущих и будущих ХАСТ),
d ATL 12 - показать список AT команд для ОБ 12,
d XACT=100 - показать транзакт с ИН 100,
d XACT=3 XACT=10 - показать Хакт с ИН 3 и 10.
Информация, показываемая для каждого класса или состояния (за исключением информации об амперпеременных) идентична данным выходного отчёта для объектов. Информация о состоянии модели при введённых условиях запрета и прерывания специфична для отладчика.

Информация о транзактах идентична информации об активных транзактах в окне состояния отладчика, если нет текущих транзактов, то , в ответ на запрос, появляется сообщение об их отсутствии.
TRAP и UNTRAP
Команда TRAP может применяться для установки запрета в самых разных вариантах, которые выбираются пользователем. В GPSS/H существует пять видов наложения условий запрета, рассмотрим их подробнее.



Содержание раздела