етодические указания при проверке подготовленности
для проведения лабораторного занятия
по учебной дисциплине
Моделирование систем
Тема №5. Инструментальные средства моделирования систем. Моделирование в GPSS World
Занятие № 36. Исследование возможностей управления процессом моделирования в системе GPSS.
Обсуждено на заседании кафедры
"___" ___________ 2011 г.
Протокол № ___
УЧЕБНЫЕ И ВОСПИТАТЕЛЬНЫЕ ЦЕЛИ
1. Изучить общие принципы управления процессом моделирования в системе GPSS
2. Исследовать возможности моделирования с применением списков пользователя.
3. Разработка моделей с использованием списков пользователя.
4. Воспитывать творческий подход и самостоятельность при решении поставленной задачи.
Время 2 часа. Место класс ПЭВМ.
УЧЕБНО-МАТЕРИАЛЬНОЕ ОБЕСПЕЧЕНИЕ
Литература: Советов Б.Я., Яковлев С.А.Моделирование систем. Практикум. М., «Высшая школа», 2005.
Технические средства обучения: ПЭВМ.
УЧЕБНЫЕ ВОПРОСЫ И РАСЧЕТ ВРЕМЕНИ
I. Вступительная часть~10 мин.
II. Исследуемые вопросы
1. Изучение задания _________ _ __ ~15 мин.
2. Изучение общих принципов управления процессом моделирования в системе GPSS ~15 мин.
3. Исследование возможностей моделирования с применением списков пользователя .~15 мин
4. Разработка моделей систем с использованием списков пользователя. _~25 мин.
IV. Заключительная часть ~ 10 мин.
Методические указания
1. Общие организационно-методические указания
Занятие проводится двумя преподавателями с одной учебной группой. Ведущим является преподаватель, проводящий в данной группе практические занятия.
Подготовка лабораторной базы к работе обеспечивается заведующим классом ПЭВМ под руководством ведущего преподавателя.
При подготовке к занятию преподаватель должен изучить задание на лабораторную работу, данную методическую разработку и проверить готовность к занятию лабораторного оборудования.
Теоретическое задание студентам на лабораторную работу выдается преподавателем за два-три дня до занятия. Ознакомление студентов с непосредственным заданием на лабораторную работу и методикой ее выполнения осуществляется в начале занятия.
Обязательным является повторение темы № 5. Особое внимание студентов должно быть обращено на знание: общих принципов моделирования, возможностей использования в GPSS списков пользователя, блоков GPSS.
Учебная группа для выполнения работы делится на рабочие группы по два-три человека.
Во время занятия в классе ПЭВМ постоянно должен поддерживаться порядок.
Основное содержание занятия составляет самостоятельная работа студентов по созданию баз данных, таблиц и индексов. Оценка каждому студенту за занятие определяется на основании отчета и анализа объема выполненной им работы. По этим данным преподаватель выставляет оценку в журнал.
При подготовке к занятию преподаватель использует рекомендованную литературу и данную методическую разработку.
2. Методические указания по вступительной части
Преподаватель здоровается со студентами, проверяет наличие студентов на занятии.
Преподаватель объявляет номер темы и ее название, номер и название занятия, учебные цели занятия и порядок его проведения. При этом целесообразно показать связь лабораторного занятия с предыдущим практическим занятием, отметить актуальность и практическую значимость учебного материала занятия и темы будущим разработчикам моделей систем.
Далее преподаватель называет рекомендуемую литературу.
Объявляет порядок проведения занятия.
Проводит инструктаж по мерам безопасности при работе на ПЭВМ.
Правила техники безопасности:
Для работы в классе ПЭВМ допускаются пользователи с разрешения начальника кафедры, изучившие правила техники безопасности и инструкцию по эксплуатации ПЭВМ и программное обеспечение, прошедшие инструктаж у старшего инженера кафедры и расписавшиеся в журнале.
Пользователь ПЭВМ обязан:
- знать правила техники безопасности при работе на ПЭВМ и четко их выполнять;
- знать инструкцию по эксплуатации ПЭВМ и программное обеспечение;
- выполнять все требования зав. кабинетом, инженера и дежурного по классу;
- включать и выключать ПЭВМ с разрешения преподавателя (инженера);
- бережно относиться к ПЭВМ и программному обеспечению;
- записывать данные только в разрешенные папки;
- использовать активно перерыв для тренировки зрения;
- своевременно делать записи в журнале учета времени работы ПЭВМ.
Пользователю ПЭВМ запрещается:
- эксплуатировать неисправную ПЭВМ и программное обеспечение;
- работать с незарегистрированными дискетами;
- перемещать системный блок и монитор;
- трогать экран и разъемы на задней стенке системного блока и монитора;
- использовать ПЭВМ другого пользователя и ходить по классу;
- инсталлировать программы без разрешения зав. кабинетом или инженера;
- использовать программное обеспечение неизвестного происхождения.
етодические указания при проверке подготовленности
студентов к занятию
Проверка подготовленности студентов к занятию проводится путем письменного опроса каждого из студентов на контрольные вопросы, которые прилагаются к методической разработке.
Время, отведенное для ответа на каждый вопрос, составляет 2-3 минуты.
Результаты проверки письменных ответов (осуществляет второй преподаватель) объявляются в конце занятия и заносятся в журнал учета учебных занятий.
4. Методические указания по отработке учебных вопросов.
Предложить студентам следующее задание на практическое занятие:
1. Изучить учебные материалы.
2. Изучить блоки LINK и UNLINK. Сделать необходимые записи.
3. Рассмотреть примеры 4-6
4. Смоделировать работу системы, описанной в примере 4,по передаче 2000 сообщений.
Учебные материалы
Управление процессом моделирования в системе GPSS
Рассматрим общие принципы управления моделированием в GPSS. Разные трансляторы по-разному могут peaлизовывать эти принципы.
В системе GPSS интерпретатор (программа управления моделированием (ПУМ)) поддерживает сложные структуры организации списков (рис. 1). С целью уменьшения затрат компьютерного времени на просмотр списков система GPSS ведет два основных списка событий. Первым является список текущих событий (СТС), куда входят все события, запланированные на текущий момент модельного времени независимо от того, условные они или безусловные. Программа управления моделированием просматривает в первую очередь этот список и пытается переместить по модели те транзакты, для которых выполнены условия. Если в этом списке таких транзактов нет, то ПУМ обращается к другому списку - списку будущих событий (СБС). Она переносит все события, которые запланированы на ближайший момент модельного времени, из этого списка в СТС и повторяет его просмотр. Такой перенос осуществляется также в случае совпадения текущего времени моделирования со временем первого события в списке будущих событий.
В СТС транзакты размещены в порядке уменьшения приоритета (то есть транзакты с более высоким приоритетом размещены ближе к началу списка). Транзакты с одинаковыми приоритетами размещаются в соответствии с последовательностью поступления в список. Каждый транзакт в СТС может находиться или в активном состоянии (то есть просматриваться ПУМ в данный момент модельного времени), или в состоянии задержки.
В начальный момент (при выполнении оператора управления START, который начинает фазу интерпретации GPSS-модели) ПУМ } обращается ко всем блокам GENERATE модели. Каждый из этих блоков планирует момент появления транзактов и заносит их в СБС, после чего ПУМ обращается к СТС. Так как в этом списке пока что отсутствуют транзакты, то ПУМ просматривает СБС и выбирает из него все транзакты, запланированные на ближайший момент времени и переносит их в СТС, после чего пытается продвинуть первый транзакт этого списка по блокам модели. Если перемещение транзакта было задержано по какой-либо причине, не связанной с блоком ADVANCE, то он остается в СТС и ПУМ пробует перемещать такой транзакт из этого списка далее по блокам. Если транзакт вошел в блок ADVANCE,то планируется его выход из этого блока и транзакт переносится в СБС.
Списки текущих и будущих событий можно увидеть на экране дисплея, если выдать команду EVENTS для GPSS/PC или в окне списков для GPSS World.
В организации эффективной процедуры просмотра важен порядок просмотра транзактов, движение которых заблокировано (например, ввиду занятости некоторого ресурса). Простейшим решением является пересмотр всех заблокированных транзактов для каждого нового значения модельного времени и выбор тех, для которых сняты условия блокировок. Если моделируемая система перегружена, то этот способ с точки зрения затрат компьютерного времени невыгоден, так как каждый транзакт пересматривается многократно до того, как выйдет из состояния блокирования.
Если причина перевода транзактов в состояние блокирования состояние определенного ресурса системы в данный момент времени, то намного более эффективным является способ обработки, по которому заблокированные по этой причине транзакты вообще не пересматриваются до тех пор, пока не изменится состояние соответствующего ресурса. Такой способ может быть реализован, например, регистрацией для каждой единицы ресурса транзактов, движение которых заблокировано ввиду состояния именно этого ресурса в данный момент времени. В момент, когда изменяется состояние этого ресурса, необходимо сразу же просмотреть транзакты, которые этого ожидают, и продолжить их обработку.
Если транзакты находятся в активном состоянии, то процедура просмотра пытается переместить их к следующим блокам. Если перемещение транзакта блокируется каким-нибудь ресурсом ввиду его занятости, то вхождение в следующий блок невозможно и транзакт переводится в состояние задержки. Такие транзакты не просматриваются и размещаются в соответствующем списке задержки.
Если при обслуживании текущего активного транзакта произошло изменение состояния ресурса, пересмотр начинается сначала, и опять обслуживаются все транзакты из СТС, которые находятся в активном состоянии. Если изменение списков ресурсов не произошло, ПУМ опять обращается к СТС и проверяет, не остались ли в нем транзакты, которые необходимо обработать.
Список блокировок - это список транзактов, которые ожидают изменения состояния ресурса. Существует шесть видов таких списков, связанных с устройствами; семь видов, связанных с МКУ, и два вида, связанных с логическими ключами. С устройствами используются списки для занятых и незанятых, доступных и недоступных устройств и устройств, работающих без прерываний и с прерываниями. С МКУ используются списки для заполненного, незаполненного, пустого, непустого, доступного, недоступного МКУ и транзактов, которые могут войти в МКУ. С логическими ключами связаны списки для включенных и выключенных ключей.
Кроме двух основных списков СТС и СБС существует список прерываний (СПР), содержащий прерванные во время обслуживания транзакты, а также транзакты, вызвавшие прерывание. Список прерываний используется для организации обслуживания одноканальных устройств по абсолютным приоритетам. Это дает возможность организовать приоритетные дисциплины обслуживания транзактов в устройствах.
Список синхронизации (СС) содержит транзакты, которые на данный момент времени сравниваются. Этот список работает с транзактами, полученными с помощью блока SPLIT,который создает транзакты-копии, принадлежащие одному семейству или ансамблю. Синхронизацию движения транзактов одного семейства выполняют следующие блоки: MATCH(синхронизирует движение транзактов с другим блоком), ASSEMBLE(собирает все транзакты-копии и выдает один начальный транзакт), GATHER(собирает заданное количество транзактов и задерживает копии до тех пор, пока не соберется необходимое количество копии транзактов). Блок SPLITможно использовать многократно.
Остановленные процессы находятся в СБС, СС и списках блокировок.
Список пользователя (СП) содержит транзакты, выведенные пользователем из СТС с помощью блока LINK и помещенные в СП как временно неактивные (переведенные пользователем в пассивное состояние). При работе ПУМ они ей недоступны до тех пор, пока не будут возвращены пользователем в СТС с помощью блока UNLINK.
Рис. 1
Моделирование заканчивается тогда, когда счетчик завершения, инициализированный оператором управления START, будет сброшен в ноль или когда в СТС и СБС не будет ни одного транзакта.
Списки пользователей
Блок LINK (ВНЕСТИ В СПИСОК). Блок LINK собирает транзакты из СТС и помещает ихв СП. Таким образом, интерпретатор ихне просматривает и не перемещает по блокам модели до техпор, пока пользователь не возвратит ихв модель.
Формат блока:
LINK A,B|,C|
Операнд А задает номер или имя СП, в который будет помещен транзакт. Операнд А может быть положительным целым, именем, СЧА, СЧА*СЧА.
Операнд В задает алгоритм упорядочивания СП. Операнд В может быть LJFO, FIFO, целым, СЧА, СЧА*СЧА.
Допустимые значения операнда В:
FIFO- вошедший транзакт помещается в конец СП;
LIFO- вошедший транзакт помещается в начало СП;
номер параметра- входящие в СП транзакты располагаются в соответствии со значением указанного параметра;
РR - приоритет транзакта (транзакт помещается в список в соответствии с приоритетом);
Ml - время нахождения транзакта в модели;
Операнд С указывает альтернативный выход, который используется при описании разных ситуаций, возникающих в очередях. Операнд С может быть именем, положительным целым, СЧА, СЧА*СЧА.
Если операнд С не задан, индикатор, связанный с заданным СП, устанавливается в положение «1». Это приводит к тому, что все транзакты, безусловно входящие в блок, заносятся в СП, определенный операндом А, в порядке, который задан операндом В.
Если операнд С задан, проверяется индикатор СП. Если индикатор списка установлен в положение «1», вошедший транзакт, заносится в СП в порядке, заданном операндом В. Если же индикатор списка установлен в положение «О», он переводится в положение «1», и вошедший транзакт перемещается к блоку, заданному в операнде С.
Пример 1
LINK LIST,F1FO
В этом примере транзакт, вошедший в блок, помещается в конец списка с именем LIST.
Стандартные числовые атрибуты, связанные с блоком LINK:
СА<иомер списка>, СА$<имя списка> -среднее число транзакток в СП;
СС<номер списка>, СС$<имя списка> -общее число транзактов в СП;
СН<номер списка>, СН$<имя списка> -текущее число транзаков в СП;
СМ<номер списка>, СМ$<имя сниска> - максимальное число транзактов в СП;
СТ<номер списка>, СТ$<имя списка> - среднее время пребывания транзакта в СП.
Блок UNLINK (ВЫВЕСТИ ИЗ СПИСКА). Блок UNLINK удаляет транзакты из СП. После этого интерпретатор GPSS возобновляет их движение по модели.
Формат блока:
UNLINK [X] A,B,IC],[D],IE],[F]
Операторы отношения, которые записываются во вспомогательном операнде X, определяют, какое условие (отношение) будет рассматриваться. Если этот оператор не задан, предполагается отношение равенства Е.
Операторы отношения могут быть такими:
G (больше) - отношение истинно, если значение параметра, заданного в операнде D, больше значения, заданного в операнде Е;
GE (больше или равно) - отношение истинно, если значение I параметра, заданного в операнде D, больше значения, заданного в операнде Е, или равно ему;
L (меньше) — отношение истинно, если значение параметра, заданного в операнде D, меньше значения, заданного в операнде Е;
LE (меньше или равно) - отношение истинно, если значение параметра, заданного в операнде D, меньше значения, заданного в операнде Е, или равно ему;
Е (равно) — отношение истинно, если значение параметра, заданного в операнде D, равно значению, заданному в операнде Е;
NE (не равно) - отношение истинно, если значение параметра, заданного в операнде D, не равно значению, заданному в операнде Е.
Операнд А задает СП, из которого удаляются один или несколько транзактов. Операнд А может быть именем, положительным целым, СЧА или СЧА*СЧА.
В операнде В указывается номер блока, к которому переходят удаляемые из списка транзакты. Операнд В может быть именем, положительным целым, СЧА, СЧА*СЧА.
Операнд С задает число транзактов, удаляемых из СП (счетчик удалений). Операнд С может быть именем, положительным целым, СЧА, СЧА*СЧА или «ALL» (означает удаление всех транзактов).
Операнд D может быть именем, целым, СЧА, СЧА*СЧА, «BACK».Действия, выполняемые при вхождении транзакта в блок UNLINK,зависят от того, на что ссылается операнд D. В операнде D могут быть указаны номер параметра, булева переменная или слово «BACK».
Номер параметра. Если операнд Е пропущен, значение заданного параметра вошедшего транзакта сравнивается со значением этого же параметра транзактов СП. Если Е не пропущен, значение заданного параметра транзактов СП сравнивается со значением СЧА из операнда Е. В обоих случаях транзакты, удовлетворяющие заданному отношению, будут удалены из списка и направлены в блок, указанный в операнде В.
Булева переменная BVjвычисляется отдельно для каждого транзакта из СП. Если для транзакта значение BVj=l, то он удаляется из СП (количество удаляемых транзактов не может превышать значения операнда С). Если BVj=0 для всех транзактов списка, то вошедший транзакт пытается переместиться в блок, заданный в операнде F. Если операнд F пропущен, транзакт пытается перейти в еле- i дующий по номеру блок.
Если в операнде D задана булева переменная, операнд Е должен быть пустым. Если булева переменная BVjимеет ссылку на какой-либо параметр, то эта ссылка относится к параметрам транзактов из списка, а не к входящему в блок UNLINKтранзакту.
Слово «BACK».Из указанного списка, начиная с его конца, будет исключено столько транзактов, сколько задано операндом С. Операнд Е в этом случае должен быть пустым. Операнд Е содержит СЧА, значение которого сравнивается со значением параметра транзактов СП (номер параметра указан в oneранде D). Операнд Е может быть именем, целым, СЧА, СЧА*СЧА.
Операнд F задает номер следующего блока для того транзакта, который входит в блок UNLINKв случаях, когда соответствующий СП пустой или не выполнено заданное отношение, или же указанная в операнде D булева переменная равна нулю для всех транзактов списка (т.е. в случае, когда из СП нельзя ничего удалить). Операнд F может быть именем, положительным целым, СЧА, СЧА*СЧА.
Пример 2
UNLINK LIST,FORW,I
Первый транзакт из СП с именем LIST помещается в блок с меткой FORW. Он заносится в СТС после транзактов с таким же приоритетом. Транзакт, вошедший в блок UNLINK, переходит в следующий блок.
Рассмотрим последовательность операций, выполняемых при входе транзакта в блок UNLINK. В зависимости от того, какие из операндов A-F блока UNLINK заполнены, можно выделить восемь основных вариантов.
Вариант 1. Операнды А, В, С заданы, операнды D, E, F не заданы. Вычисляются значения операнда А для определения номера (имени) СП. Проверяется, есть ли в списке транзакты. Если их нет, соответствующий этому списку индикатор устанавливается в «О», а транзакт, вошедший в блок, переходит к следующему по номеру блоку.
Если список не пуст, вычисляется значение операнда С (счетчика удалений), определяющего число транзактов, удаляемых из списка. Транзакты удаляются, начиная с первого в списке до тех пор, пока значение счетчика удалений не станет равным нулю или пока не будут исчерпаны все транзакты из списка. Удаленные из СП транзакты будут помещены в СТС и направлены к блоку, номер которого указан в операнде В. Транзакт, вошедший в блок UNLINK, перемещается к следующему по номеру блоку.
Вариант 2. Операнды А, В, С и F заполнены, операнды D и Е не заданы. Этот вариант аналогичен варианту 1, за исключением случая, когда указанный СП пуст. При этом индикатор списка устанавливается в «О», а транзакт, вошедший в блок UNLINK, перемещается к блоку, указанному в операнде F, а не к следующему по номеру блоку.
Вариант 3. Операнды А, В, С и D заполнены, операнды Е и F не заполнены, в операнде D задано значение параметра Pj. Этот вариант также аналогичен варианту 1. Однако из списка удаляются только те транзакты, у которых значение параметра Pj равно значению этого же параметра Pj транзакта, вошедшего в блок UNLINK. Транзакты из списка удаляются до тех пор, пока значение счетчика удалений (определяемого операндом С) не станет равно нулю или пока не будут просмотрены все транзакты из списка. Все удаленные из СП транзакты перемещаются к блоку, указанному в операнде В блока UNLINK.Транзакт, вошедший в блок UNLINK,перемещается к следующему по номеру блоку.
Вариант 4.Операнды А, В, С и D заполнены, операнды Е и F не заданы, а в операнде D записано слово «BACK».Этот вариант аналогичен варианту 1, за исключением того, что транзакты удаляются, начиная с конца списка.
Вариант5. Операнды А, В, С и D - заполнены, операнды Е и F - пусты, в операнде D задана булева переменная BVj. Этот вариант аналогичен варианту 3, за исключением того, что BVj вычисляется отдельно для каждого транзакта СП. Из СП удаляются только транзакты, для которых BVj=l.
1. Если BVj имеет ссылки на какой-либо параметр, то эти ссылки относятся к параметрам, связанным с транзактами из СП, а не с вошедшим транзактом.
2. В случаях, когда в операнде D блока UNLINKзаписана переменная BVjили «BACK»,операнд Е должен быть не заполненным, иначе - ошибка.
Вариант 6.Операнды А, В, С, D и F заполнены, операнд Е не заполнен. Этот вариант аналогичен варианту 3, за исключением тех случаев, когда или заданный СП пуст (CHj=0), или заданное отношение не выполняется ни для одного транзакта списка, или BVj=0 для всех транзактов СП. В таких случаях транзакт, вошедший в блок UNLINK,перемещается к блоку, номер которого задан в операнде F, а не к следующему по номеру блоку. Индикатор списка устанавливается в «О» только в том случае, если список пуст.
Вариант7. Операнды А, В, С, D и Е заполнены, операнд F не заполнен.
Число удаляемых транзактов определяется значением операнда С. Номер блока, к которому направляются удаленные транзакты, определяется операндом В. Транзакты, для которых значение Pj (операнд D) равно СЧА из операнда Е, удаляются из списка. Транзакты просматриваются и удаляются (если это возможно), начиная с начала списка. Удаление продолжается до тех пор, пока значение счетчика удалений (операнд С) не станет равным нулю или пока из СП не будут удалены все транзакты. Транзакт, вошедший в блок UNLIPIK,перемещается, к следующему по номеру блоку.
Вариант 8.Операнды А, В, С, D и F заполнены. Этот вариант аналогичен варианту 5, за исключением тех случаев, когда СП пуст (то есть CHj=0) или заданное отношение не выполняется ни для одного из транзактов списка. Транзакт, вошедший в блок UNLINK, переходит к блоку, заданному в операнде F, а не к следующему по номеру блоку. Если заданное отношение выполняется для какого-нибудь транзакта из списка, транзакт, вошедший в блок, перемещается к следующему по номеру блоку. Если СП пустой, индикатор списка устанавливается в «О».
Пример 3
Рассмотрим модель обслуживания с алгоритмом FIFO выбора из очереди:
GENERATE 1000,FN1
QUEUE QUE1
LINK CHAIN,FIFO,CAN
CAN SEIZE FC_1
DEPART QUE1
ADVANCE 700,FN1
RELEASE FC_1
UNLINK CHAIN,CAN,1
TERMINATE
Транзакты, выходящие из блока GENERATE,поступают в блок QUEUE.После внесения соответствующих изменений в статистику, собираемую по данной очереди, транзакт входит в блок LINK. Так как в блоке LINKсуществует альтернативный выход, проверяется состояние индикатора списка CHAIN(имя которого определяется операндом А блока LINK). Если индикатор этого списка устанолен в «О», транзакт немедленно устанавливает его в «1» и переходит к альтернативному блоку, то есть в данной модели - к блоку SEJZE. Если индикатор списка установлен в «1», то транзакт, входящий в блок LINK,без дальнейших проверок заносится в СП CHAIN.Так как в операнде В задан алгоритм FIFO,транзакт помещается в конец этого СП.
Отметим, что транзакты, занесенные в СП, не проходят дальнейшей обработки до тех пор, пока они не будут удалены из списка другими транзактами, входящими в блок UNLINK. После удаления из СП транзакт поступает к блоку, указанному в операнде В блока UNLINK.
Когда транзакт входит в блок SEIZE,проводится корректировка статистики, связанной с заданным в этом блоке устройством. Потом транзакт переходит к блоку DEPART,где корректируется статистика очереди, а потом переходит к блоку ADVANCE,в котором он остается на протяжении времени, определяемом операндами блока ADVANCE.
После выхода из блока ADVANCEтранзакт входит в блок RELEASE.Освобождается указанное в блоке устройство и корректируется связанная с ним статистика. После этого транзакт перемещается к блоку UNLINK.
При перемещении транзакта к блоку UNLINK просматривается СП, имя которого задано в операнде А:
1)если СП пуст, то есть CH$CHAIN=0,то индикатор списка устанавливается в «О» и транзакт переходит к следующему по номеру блоку, то есть к TERMINATE;
2) если СП не пуст, то есть CHSCHAIN 0,то первый транзакт этого списка удаляется, помещается в СТС и направляется к блоку указанному в операнде В блока UNLINK(в данной модели это блок SEIZE,помеченный меткой CAN). А транзакт, вошедший в блок у UNLINK,перемещается к блоку TERMINATE.
Рассмотренная модель не сложна, но хорошо иллюстрирует несколько важных моментов:
1) в этой системе активными могут быть только те транзакты, которые выходят из блока GENERATE,или тот транзакт, который в данный момент занимает устройство. Все остальные транзакты находятся в СП CHAIN;
2) так как все задержанные транзакты, то есть транзакты, находящиеся в очереди к устройству FC_1, будут помещены в СП CHAIN,интерпретатор не будет тратить время на изменение индикаторов задержки всех этих транзактов при каждом изменении положения устройства. Экономия времени зависит от длины очереди: чем длиннее очередь, тем больше времени будет сэкономлено благодаря блокам LINK - UNLINK,которые используются для управления очередямик разным объектам;
3) пользователь имеет возможность динамически формировать свои списки независимо от списков задержки, которые поддерживаются системой GPSS;
4) использование блоков LINK- UNLINKдает возможность синхронизировать движение разных транзактов в модели, например, задерживать в списке транзакты до тех пор, пока какой-либо другой транзакт не выведет их из списка с помощью блока UNLINK.
Пример 4
Рассмотрим работу мультиплексора , который подключен к высокоскоростному каналу (ВК) связи и работает в режиме разделения времени с четырьмя низкоскоростными каналами (НК), опрашивая их циклически. На один опрос каждого из НК мультиплексор тратит 50 мс, время переключения между НК - 10 мс. Если в опрашиваемом НК есть сообщение, оно передается по ВК в течение 500±60 мс. За один опрос передается одно сообщение. Время возникновения сообщений в четырех НК равномерно распределено в интервале 1500+500 мс, и сообщения равновероятно могут появляться на любом канале.
Необходимо определить загрузку ВК при передаче по нему 1000 сообщений.
Программа:
*За основу взята программа из книги Дж. Мартина
* «Системный анализ передачи данных», т. 2
NUMBKS FUNCTION RN1.D4 ; Определение номера НК, в
.25,1/.5,2/.75,3/.9999,4 ; котором появилось сообщение
OPROS FUNCTION P1,D4 ;Функция, задающая
1,2/2,3/3,4/4,1 ; последовательность опроса НК
* Опрос каналов
GENERATE 10,,,1 ; Генерация сообщений, опрашивающих каналы
ASSIGN 1,4 ; В первом параметре фиксируется номер последнего
; опрошенного НК
NEXT ASSIGN 1,FN$OPROS ; Номер опрашиваемого НК
SEIZE VK ; Занятие ВК
ADVANCE 50 ; Время опроса
TEST NE CH*1,0,MREL ; Есть ли сообщения в НК?
UNLINK P1,MESS,1 ; Разрешить передачу по ВК
MREL RELEASE VK ; Освободить ВК
ADVANCE 10 ; Время переключения
TRANSFER ,NEXT ; Продолжить опрос НК
* Передача сообщений по каналам
GENERATE 1500,500 ;Генерация сообщений
ASSIGN1,FN$NUMBKS ; Номер НК, в котором ; появилось сообщение
LINK P1,FIFO ; Ожидать опроса канала
MESS SEIZE VK ; Занять ВК для передачи
ADVANCE 500,60 ; Передача сообщений
RELEASE MPD ; Освободить ВК
TERMINATE 1
START 1000 ; Передать 1000 сообщений
Пример 5
На вход СМО поступает пуассоновский поток заявок со средним временем 55 с, которые последовательно обслуживаются двумя устройствами. Порядок выбора требований из очереди для обслуживания первым и вторым устройствами - LIFO. Заявки покидают систему не обслужившись, если на момент входа заявки в первую очередь в ней есть больше четырех заявок или время нахождения во второй очереди превышает 40 с. Время обслуживания заявки первым устройством составдяет 30 с, вторым - 20 ± 5 с. Необходимо смоделировать прохождение через СМО 100 заявок.
Программа:
10 ЕХР FUNCTION RN1,C24
0,0/.100,.104/.200,.222/JOO,.355/.400,.S09 .500,.690/.600,.915/.700,1.200/.750,1.380 .800,1.600/.840,1.830/.880,2.120/.900,2.300 .920,2.520/.940,2.810/.950,2.990/.960,3.200 .970,3.500/.980,3.900/.990,4.600/.995,5.300
.998,6.2007.999,7/1,8
;
20 GENERATE 55,FN$EXP
30 TEST L CH$SP1,4,TER1 ; В списке SP1 меньше
; четырех транзактов? ; Нет - покинуть систему.
40 QUEUE OCH1 ; Да - стать в очередь.
50 LINK SP1,LIFO,MUS1
60 MUSI SEIZE USTR1
70 DEPART OCH1
80 ADVANCE 30
90 RELEASE USTR1
100 UNLINK SP1,MUS1
110 ASSIGN TOCH2,C1 ; Запомнить время прихода
120 ASSIGN TOCH2+,40 ; Добавить 40 с
130 LINK SP2,LIFO,MUS2
140 MUS2 SEIZE USTR2
150 ADVANCE 20,5
160 RELEASE USTR2
170 UNLINK LE SP2,TER1,ALL,TOCH2,C1 ; Время < 40 с?
180 UNLINK SP2,MUS2,1 ; Идти на обслуживание
190 TER1 TERMINATE I
200 start 100
В модели значения индикаторов списков пользователя позволяют определить состояние устройств обслуживания. Если в момент входа в блок LINKиндикатор списка включен («1»), это означает, что соответствующее устройство занято и транзакт становится в начало списка SP1 или SP2 (LIFO), индикатор остается включенным. Если индикатор списка выключен («О» - соответствующее устройство свободно) - он включается, а транзакт переходит на обслуживание в блок MUSIили MUS2. В параметре с именем ТОСН транзакта запоминается момент времени, к которому транзакт должен попасть на обслуживание устройством USTR2,в противном случае транзакт будет удален из модели блоком UNLINK(строка 170).
Пример 6
Рассмотрим модель эвакуации потерпевших и раненых во время I, боевых действий. Потерпевшие эвакуируются 5-и 13-местными автомобилями. Если на пункте эвакуации собирается раненых больше, чем мест в автомобиле, то вывозится столько раненых, сколько есть свободных мест. Иначе вывозятся все. Известными являются функции времени прибытия раненых к медицинскому пункту (МП) полка. В каждом полку есть четыре МП. Раненые эвакуируются в военно-полевой передвижной госпиталь (ВППГ), где им предоставляется необходимая помощь.
Фрагмент программы:
; Author: V. Tomashevskiy
TPOLK FUNCTION ... ; Функция распределения интервалов
; времени от момента ранения до
; подготовки в МП полка
; для следующей эвакуации
;
EXP1 FUNCTION RN1,C21 ; Функция распределения ),
0/. 0078,0/. 2556,2/. 4544,4/. 7081,6/. 8023,8 ; интервалов времени прибытия 8694,10/. 9151,12/. 9418,14/. 9625,16/. 9763,18 ; раненых в МП )
9859,20/. 9896,22/. 9933,24/. 9955,26/. 9963,28
974,30/. 9981,32/. 9989,34/. 9996,36/1,96
;
MEST_VP FUNCTION X$CARVP,D2 ; Эксплуатируется 9 автомобилей
9,5/18,13 ; пятиместных и 9 - 13-местных
;
GENERATE „30,18 ; Эвакуация потерпевших
; 18 автомобилями. Момент выезда —
; через 30 мин после начала боя
SAVEVALUE CARVP+,1 ; Определение номера автомобиля
ASSIGN MESTOVP,FN$MEST_VP ; Определение количества
; мест в автомобиле
VOZVR ADVANCE 120,20 ; Длительность рейса к полку
EV TEST LE CH$EVAC_POL,P$MESTOVP,BOLVP
; Если потерпевших меньше, чем мест в автомобиле, то эвакуируют всех
UNLINK EVAC_POL,VPPG,CH$EVAC_POL
TRANSFER ,VOZVR ; Новый рейс к МП полка
BOLVP UNLINK EVAC_POL,VPPG,P$MESTOVP
; Эвакуируют потерпевших в количестве, не превышающем числа мест в автомобиле
TRANSFER ,VOZVR ; Новый рейс к МП полка
; Эвакуация потерпевших с первого МП полка
GENERATE FN$EXP1,,100 ; Поступление потерпевших в МП полка:
; первый поступает не раньше, чем через
; 100 мин после начала боя
SAVEVALUE SV_P1+,1 ; Подсчет санитарных потерь
TRANSFER ,NAK ; Направить на эвакуацию
; Эвакуация потерпевших со второго МП полка
GENERATE 8,FNSEXP,100
ASSIGN 1,2
ASSIGN TRAN,FN$TPOLK
SAVEVALUE SV_P2+,1
TRANSFER ,NAK
; Эвакуация потерпевших с третьего МП полка
GENERATE 10,FN$EXP,100
ASSIGN 1,3
ASSIGN TRAN,FN$TPOLK
SAVEVALUE SV_P3+,1
TRANSFER ,NAK
; Эвакуация потерпевших с четвертого МП полка
GENERATE 10,FN$EXP,100
ASSIGN 1,4
ASSIGN TRAN,FN$TPOLK
SAVEVALUE SV_P4+,1
NAK LINK EVAC_POL,FIFO
; Ожидание эвакуации из' МП полка
VPPG ADVANCE 60,10 ; Эвакуация в ВППГ
; Прибытие медицинского транспорта на пост сортировки ВППГ
ADVANCE 2,1 ; Сортировка в ВППГ
……………………