Объекты транзакции: блоки ГЕНЕРАЦИИ и ЗАВЕРШЕНИЯ Тема: «Объекты транзакции: блоки ГЕНЕРАЦИИ и ЗАВЕРШЕНИЯ (GENERATE и TERMINATE). Блок УСОВЕРШЕНСТВОВАНИЯ (ADVANCE) в среде программирования «GPSS World». Учебные цели: 1. Научиться простому моделированию. Научиться моделировать реальный процесс, где заказчики будут тратить время перед тем как уйти из модели. 2. Научиться делать задержку времени в моделировании. Объекты транзакции: блоки ГЕНЕРАЦИИ и ЗАВЕРШЕНИЯ (GENERATE и TERMINATE). GPSS Транзакция – объект с набором атрибутов. Каждая Транзакция отличается тем, что может быть идентифицирована уникальным Номером Транзакции. Транзакции, созданные в моделировании, пронумерованы, последовательно начиная с 1. Кроме того, Вы можете изменять атрибуты, связанные с каждой Транзакцией. Атрибуты находятся в форме приоритетных, согласно планируемому времени, Наборе Трансляций, и "Параметры Транзакции", назначенные имена или числа являются данными пользователя. Параметры Транзакции - подобно письмам в мешке почтового курьера, которые адресованы конкретному человеку. Параметры несут информацию относительно Транзакции, которая является уникальной только к этой Транзакции. Вы можете использовать Окна Кадра (Snapshot Windows), чтобы просмотреть информацию, которую несут эти Параметры. В отличие от универсальных языков программирования, каждая Транзакция в GPSS имеет маркер места. В то время как имеется только одно место в компьютерной программе, которую нужно вспомнить, в GPSS моделировании могут иметься тысячи Транзакций, размещенных в различных Блоках. Транзакции не обязательно начинаются наверху программы. GPSS моделирование может иметь много инструкций GENERATE, каждая из которых создает много Транзакций, которая имеет маркер места. Транзакции могут быть созданы в пакете или в Блоке GENERATE. Модель должна иметь, по крайней мере, один Блок GENERATE. Давайте рассматривать случай, когда новая Транзакция создается в модели 60 раз. Если нет противоречий специальный модуль времени пока не определен. Пусть один модуль времени работает каждую секунду. Рассмотрим соответствующую форму для Блока GENERATE, которая создает новую Транзакцию каждую минуту: GENERATE 60; Создается новая Транзакция Как только в GPSS World установлены часы с плавающей запятой, можно говорить о создании Транзакции в незначительных интервалах. GENERATE 1; Создайте новую Транзакцию Затем, если вы захотите представить второй интервал, можно представлять 1/60 минуты или 0.01666667. Вы можете выбрать событие, которое является наиболее значимым в вашей модели. Здесь используемое выражение должно быть колеблющимся. Запустите Сеанс GPSS World, для этого вы должны сделать следующее. ВЫБЕРИТЕ Файл / Новый Так как модель уже выбрана ВЫБОР ОК Введите тип инструкция GENERATE в странице Окна Модели, которое появляется. Затем, транслируйте вашу модель из одной строки. Нажмите Клавишу табуляции. НАЖМИТЕ [Tab] ТИП GENERATE НАЖМИТЕ [Tab] ТИП 60 НАЖМИТЕ [Tab] ТИП ; Создает новую Транзакцию Вы использовали кнопку табуляции для того, чтобы модель выстроить в строку. Но это не необходимо для частей GPSS строки модели, чтобы она располагалась в некоторых столбцах, но делается для того, чтобы было легче читать. Вы можете изменять интервалы, редактируя Параметры настройки Объекта Модели. Рассмотрим это позже. Теперь, ВЫБЕРИТЕ Файл / Сохранить Как В диалоговом окне в высвеченной области ТИП MyModel И ВЫБОР СОХРАНИТЬ Затем, ВЫБЕРИТЕ Command /Create Simulation И ВЫБЕРИТЕ Window / Simulation Window / Blocks Window Ваш Блок GENERATE в Окне Блоков. Блоки всегда нумеруются с 1. Это - "ДЕТАЛИЗИРОВАННЫЙ ВИД" Окна Блоков, где наиболее важная информация относительно каждого Блока перечислена в столбцах. Выключите "ДЕТАЛИЗИРОВАННЫЙ ВИД". Для этого ВЫБЕРИТЕ View / Entity Details Это "переключает" окно из "ДЕТАЛИЗИРОВАННОГО ВИДА" в «Недетализированный вид». Блоки помещаются снизу своих предшественников. Если следующий Блок не умещается снизу предшественника, «Недетализированный вид» продвинет его вверх следующего столбца направо. Расположение Блоков зависит также от размера окна и Вы можете изменять размеры окна. А теперь обратно к "ДЕТАЛИЗИРОВАННОМУ ВИДУ". ВЫБЕРИТЕ View / Entity Details Блок TERMINATE, удаляет Транзакции из моделирования. Когда Транзакция входит в Блок TERMINATE, она разрушается. Также, имеется оптимальный операнд, которому присвоен специальный номер, названный "Счет Завершения". Когда Вы напечатаете START 123, Вы устанавливаете Счет Завершения на 123. Эти средства управления определяют как долго моделирование должно выполняться. Если Вы помещаете 1 в операнд Блока TERMINATE, каждый раз Транзакция разрушена тем Блоком, Счет Завершения которого меньше 1. Когда Счет Завершения становится 0 или меньше, моделирование закончено или подавлено Операндом START. Стандартный Отчет записывается автоматически. Счет Завершения может быть меньше, чем ноль, когда моделирование заканчивается, если Операнд Блока TERMINATE больше чем 1. Добавим Блок TERMINATE к нашей модели. Нажмите на Область заголовка MyModel.gps Окна Модели. В Окне Модели запускают новую линию после GENERATE строки Блока, курсором в конце GENERATE строки Блока НАЖМИТЕ [Enter] Затем НАЖМИТЕ [Tab] ТИП TERMINATE НАЖМИТЕ [Tab] ТИП 1 НАЖМИТЕ [Tab] ТИП ; Уничтожьте Транзакцию ВЫБЕРИТЕ Command / Retranslate (рис. 5.1)  Эти два Блока представляют крошечное моделирование. Они могли бы представлять ситуацию, где заказчик достигает памяти каждую минуту. Позже Вы увидите, как изменится модель, чтобы соответствовать вашей специфической ситуации. Пока для изучения будем использовать эту модель. Операции буфера обмена Вырезать, Копировать и Вставить доступны, поскольку Вы формируете вашу модель. Большие сегменты блоков могут быть выбраны и затем скопированы, перемещены или удалены. Не стесняйтесь экспериментировать. Прежде, чем вы начнете моделирование, Вы должны знать о работе двух списков Транзакций, названных Цепочкой Текущих событий(Current Events Chain) и Цепочкой Будущих Событий (Future Events Chain). Чтобы понимать эти цепочки, Вы должны иметь в виду " часы системы ", которые сообщают, каково текущее моделируемое время. Каждая Транзакция имеет атрибут, который указывает, когда будет сделана попытка следующего входа Блока. Если текущие моделируемые часы еще не достигли указанного времени, для этого существует Будущая Цепочка Событий. Будущая Цепочка Событий - задерживающая область для Транзакций, которые планируются в будущем. При создании второй Транзакции каждый раз вводится Блок GENERATE, вторая Транзакция создана. Но новая Транзакция не вводит Блок GENERATE сразу же, вместо этого она помещается в Будущую Цепочку Событий согласно интервалу времени, который Вы определили в Блоке GENERATE. Цепочка Текущих событий - набор Транзакций, которые все еще имеют Блоки, которые будут введены в текущие часы системы. Транзакции принимаются из передней стороны Цепочки Текущих событий. По одному вводите столько Блоков, насколько считаете нужным. Когда закончится введение Транзакций на Цепочке Текущих событий, GPSS World продвинет часы системы. Рассмотрим Цепочку Текущих событий и Будущую Цепочку Событий в нашей Текущей Модели. Сначала установите Условие Останова, которое заставит моделирование останавливаться на каждом предпринятом входе Блока. Удостоверитесь, что Окно Блоков высвечено. Вы должны теперь видеть два блока НАЖМИТЕ НА Generate Пиктограмму Блока В пиктограммах отладки в Инструментальной панели Отладки наверху Окна Блоков Вы увидите пиктограмму в форме индикатора останова. НАЖМИТЕ НА Пиктограмму Места в Инструментальной панели Отладки наверху Окна Это поместит STOP в Генерируемый Блок. Моделирование остановится на предпринятом входе в Блок GENERATE. Команда STOP обсуждена в Главе 6 GPSS World Reference Manual. Прежде, чем вы запустите моделирование, посмотрите, что находится в Цепочке Текущих событий (Current Events Chain) и Цепочке Будущих Событий (Future Events Chain). ВЫБЕРИТЕ Window / Simulation Snapshot / FEC Snapshot ВЫБЕРИТЕ Window / Simulation Snapshot / CEC Snapshot Ничего нет в CEC, но есть несколько Транзакций в FEC! Дело в том, что Блок GENERATE был "Первым", создавая, таким образом, первую Транзакцию, когда Вы ввели Команду STOP. Как только Вы введете Команду START, 1 Транзакция будет перемещаться в Цепочку Текущих событий и время будет установлено 60. Закройте каждое из Окон Кадра (Snapshot Windows). НАЖМИТЕ НА X-верхнем Правом углу Каждого Окна Эти окна - не похожи на окна, что Вы выбираете Window / Simulation Window. Snapshots - статические виды текущего условия и не будут изменяться, поскольку моделирование выполняется. Они могут регенерироваться, останавливая моделирование и открывая окно, когда Вы готовы посмотреть текущую информацию. Вы не можете остановить моделирование, не сохранив информацию в Окне Кадра о текущим состоянии моделирования. Удостоверитесь, что Вы можете видеть Окно Журнала. Нажмите на Об- ласть заголовка, если Вы нуждаетесь в этом. ВЫБЕРИТЕ Command / START И в диалоговом окне, замените 1 ТИП 100 ВЫБОР ОК Это устанавливает Счет Завершения 100, перемещает 1 Транзакцию в Цепочку Текущих событий, и начинается моделирование. Но не забудьте, что Вы установили Условие Останова. Именно поэтому моделирование останавливается перед первым входом в Блок и пишет второе сообщение в Окне Журнала. Вы могли бы также помещать Условие Останова в любой Блок, используя остановку в меню Окна Блоков. Текущие Условия Останова могут просматриваться в специальном окне Кадра Моделирования. Давайте работать с первой Транзакцией, вводя Блок GENERATE. Воспользуйтесь Командой ШАГ 1, которая была описана в функциональных клавишах. НАЖМИТЕ [F5] Теперь рассмотрите Цепочку Текущих событий и Цепочку Будущих Событий, используя меню Window / Simulation Snapshot Menu, как делали минуту назад. Ваши окна должны выглядеть так, как рисунок 5.2 и 5.3. Теперь рассмотрите FEC Кадр так, что бы Вы могли видеть Транзакцию, ждущую информацию для моделирования. FEC Время - "Block Departure Time" BDT, который является часами системы времени, когда Транзакции в FEC планируются, чтобы возвратиться в моделирование. Следующий столбец Блока показывает номер Блока, в который будет введена Транзакция. Номер 1 Блока - Блок GENERATE и номер 2 Блока – Блок TERMINATE. 2 Транзакция ждет введения в Блок GENERATE.  Теперь давайте рассматривать Расширенный вид CEC. CEC Окно Кадра НАЖМИТЕ НА + в CEC Окне (рис. 5.4)  1 Транзакция ввела Блок GENERATE, создавая, таким образом, 2 Транзакцию, которая идет в Цепочку Будущих Событий. 1 Транзакция находится в Цепочке Текущих событий с M1, время входа в моделирование 60 секунд, а 2 Транзакция находится в Цепочке Будущих Событий, готовая ввести Блок GENERATE, когда моделируемые часы будут равны 120 секундам. Работа Блока GENERATE должна вводить новую Транзакцию каждые 60 моделируемых секунд. Вы увидите эту информацию в различных видах этих окон. Позже вы увидите, что к параметрам Транзакции можно легко обращаться в этих окнах. Закройте Окна Кадра, как Вы это делали несколько минут назад. Посмотрим, каким является текущее время. Для этого активизируйте Окно Журнала. ВЫБЕРИТЕ Command / SHOW В диалоговом окне: ТИП AC1 ВЫБЕРИТЕ ОК AC1 - SNA, которое возвращает значение абсолютных часов системы. 1 Транзакция будет двигаться насколько это возможно в Текущей Модели, где время было 60. Если ли не будет двигаться никак дальше, то Цепочка Текущих событий будет удалена. Давайте загружать команду SHOW в [F8]. ВЫБЕРИТЕ Edit / Settings В Записной книжке Параметров настройки Модели выберите закладку Функциональные клавиши (Function Keys). В F8 блоке ТИП SHOW AC1 ВЫБОР OK 1 Транзакция будет разрушена, входя в Блок TERMINATE. Это делается так. НАЖМИТЕ [F5] Транзакция переместится на один Блок в ответ на команду ШАГ 1 (STEP 1), которая была вызвана одиночным нажатием клавиши. 1 Транзакция была разрушена. Следующая Транзакция, которая перемещается в моделировании – 2 Транзакция, удаленная из FEC. 1 Транзакция ушла. Так как это исчерпало Цепочку Текущих событий (Current Events Chain), больше ничего нет, чтобы выполнялось за время 60. GPSS World продвинул часы к следующему планируемому времени 120. 2 Транзакция удалена из Цепочки Будущих Событий (Future Events Chain) и помещена на Цепочку Текущих событий (Current Events Chain). Цепочка Будущих Событий теперь пуста. Однако, 2 Транзакция собирается вводить Блок GENERATE. Это создаст 3 Транзакцию и планируется это для будущих моделей 60 раз. Затем Транзакция 2 продолжит путь. Позволим 2 Транзакции войти в Блок GENERATE. НАЖМИТЕ [F5] Теперь рассмотрите цепочки. ВЫБЕРИТЕ Window / Simulation Snapshot / СEC Snapshot И с CEC Окном Кадра, имеющим центр НАЖМИТЕ НА Знак + Затем в Основном Окне ВЫБЕРИТЕ Window / Simulation Snapshot / FEC Snapshot Разместите окна одно выше другого. Затем удлините их, чтобы Вы смогли увидеть всю информацию. 3 Транзакция - в Цепочке Будущих Событий и ее время 180, и 2 Транзакция вошла в Блок TERMINATE. Когда это произойдет, она будет разрушена и моделирование закончится во время 120. Не забудьте, что Транзакция 1 уже введена в Блок TERMINATE. Это означает, что Счет Завершения уменьшился на 1. Давайте проверим TG1, SNA, которая показывает оставшийся Счет Завершения. В меню Окна Модели ВЫБЕРИТЕ Command / SHOW Затем ТИП TG1 В диалоговом окне. ВЫБОР ОК Значение записывается в Окно Журнала, а также на Линию Состояния на дне Основного Окна. Таким образом, мы устанавливаем Блок TERMINATE, чтобы вычесть 1 из Счета Завершения, вводя каждый раз Транзакцию. Так как это было введено раньше, Счет Завершения теперь 99. Если бы Вы удалили Условие Останова и позволили выполниться моделированию, оно остановилось бы автоматически, когда Счет Завершения достиг 0. Вы можете загрузить другие команды в Функциональные клавиши и полностью ознакомиться с созданием и работой транзакций в Цепочке Текущих событий. Для этого используйте Окна Кадра (Snapshot Windows), чтобы изучить эти изменения. После изучения закройте любые Окна Кадра (Snapshot Windows), которые будут открытыми. Теперь откройте Окно Выражения на Часах, на Счете Завершения и Активном номере Транзакции. ВЫБЕРИТЕ Window / Simulation Window / Expression Window В диалоговом окне, для Метки (Label) ТИП Clock И для Выражения (Expression) ТИП AC1 НАЖМИТЕ НА View ЩЕЛЧОК НА Memorize Вы увидите выражение в текущем Окне Выражения (Expression Window) и Запоминание (Memorize), это позволит Вам сохранять информацию с моделированием и Вы не будете вводить информацию в следующий раз. Вы можете отображать это в Окне выражения (Expression Window) или Графике (Plot Window). Вы можете также вводить выражения, которые Вы желаете сохранить с моделью, используя Edit / Settings настройки. Щелкая на вкладку Выражений (Expressions), Вы сохраняете модель для выражений, которые введены. Выражения будут запоминаться и будут доступны в следующий раз, если Вы будете создавать моделирование из этой модели. Теперь добавьте следующее выражение. Напечатайте его в Метке (Label) и Выражении (Expression) в диалоговом окне, удаляя предыдущую информацию. ТИП Act. Xact И ТИП XN1 НАЖМИТЕ НА View НАЖМИТЕ НА Memorize И повторите процедуру для третьего выражения в диалоговом окне для Метки и Выражения, ТИП Term Ct. И ТИП TG1 НАЖМИТЕ НА View НАЖМИТЕ НА Memorize Закройте Диалог Окна Выражения Редактирования ВЫБОР ОК Вы должны теперь увидеть новое Окно Выражения. Для ускорения удалите все Условия Останова. ВЫБЕРИТЕ Window / Simulation Snapshot / User Stops ЩЕЛЧОК НА Удалить Все (Remove All) ВЫБОР ОК Рассмотрите Окно Блоков снова. НАЖМИТЕ НА Anyplace на Окне Блоков Теперь, НАЖМИТЕ [F5] Проделайте это несколько раз, чтобы наблюдать эффекты движения Транзакций в системе, синхронизируя Счет Завершения. Обратите внимание на Окно Блоков, в котором каждый Блок высвечивается после того, как в него введена Транзакция. Когда Вы будете готовы, используйте Продолжающуюся пиктограмму в Инструментальной панели Отладки наверху Окна Блоков или загруженные Функциональные клавиши, чтобы продолжать моделирование. НАЖМИТЕ НА Пиктограмму (Continue) в Инструментальной панели Отладки наверху Окна Или НАЖМИТЕ [F2] Моделирование скоро закончится и будет отчет. Вы можете исследовать отчет позже, если захотите. Сделаем обзор. GPSS World планирует транзакцию для будущего моделирования. Для этого она помещает Транзакцию в цепочку Транзакций, названных Будущей Цепочкой Событий или FEC. FEC увеличивает значения планируемого времени. Другими словами, Транзакция, планируемая во времени 200 будет предшествовать Транзакции, планируемой во времени 300. Когда нет данных на моделируемых часах, GPSS World берет Транзакции от Будущей Цепочки Событий, которое имеет самое низкое планируемое значение времени. Это действие заставляет часы системы продвигаться. Так как система синхронизирует переходы через какой-то промежуток времени, где никакие события не происходят, то она берет дискретного время моделирования события, чтобы выполнить его намного быстрее, чем реальный моделируемый процесс. Цепочка Текущих событий или CEC, используется как задерживающая область для Транзакций, которые моделирует текущее время. Отсутствие Транзакций на CEC означает, что события отсутствуют в текущий момент моделируемого времени. GPSS World перемещает все Транзакции, планируемые в самое низкое время на FEC к CEC, и продвигает часы системы к новому значению. Пожалуйста, обратите внимание, что, когда планируемые Транзакции повторяются при вводе в моделирование, они перемещаются от FEC до CEC, их порядок рандомизирован. Это предотвращает некоторые непреднамеренные последовательности синхронизаций от разработки. Вы можете предотвращать эту рандомизацию, устанавливая время связи рандомизация к нулю в Произвольной Странице Записной книжки Параметров настройки Модели. Если Вы хотите рассмотреть эту установку ВЫБЕРИТЕ Edit / Settings Выберите закладку Произвольная Страница (Random Page). Важно помнить, что каждый раз усовершенствуя моделируемые часы Транзакции, Транзакция должна приниматься из Цепочки Будущих Событий. Время в цифровом компьютерном моделировании не течет гладко. Моделирование обычно состоит из множества Блоков в данных часах времени, сопровождаемое внезапным переходом на следующие часы времени. Интерпретация моделирования проходит все GPSS Блоки, встречающиеся в данных часах, время идет мгновенно. Быстрые переходы момента времени часто позволяют моделированию выполняться намного быстрее, чем смоделированный процесс реального времени. Моделируемая продолжительность времени всегда связывается с новыми Транзакциями, принимаемыми из FEC. Когда Вы используете Команду INTEGRATE, чтобы автоматически поддержать непрерывную переменную, математический алгоритм интеграции использует дискретные временные моменты, чтобы модифицировать непрерывные переменные. Такое смешанное моделирование продолжается в чередовании дискретных и непрерывных фаз. Этот вопрос мы рассмотрим на практической работе по относительному непрерывному моделированию. Идем дальше, закончите Сеанс GPSS World. НАЖМИТЕ НА X-в правом верхнем углу Основного Окна Если Вы хотите использовать модель на следующем занятии, отвечаете, "Нет" на вопрос " Вы хотите сохранять изменения ... " вопрос для Объекта Моделирования (.sim) и Объекта Отчета (.gpr), и "Да" для сохранения Объекта Модели (.gps). |