|
|||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Основные сведения о блоках GPSS-моделейМестоположение. Каждый блок занимает вполне определенное место в блок-схеме. Это место может быть определено нумерацией. Первый блок модели занимает место 1, второй блок – место 2 и т.д. Так же разработчику предоставляется возможность присвоить любому блоку символические имена. При использовании символических имен интерпретатор записывает абсолютные значения номеров вместо этих имен. Символические имена составляют из алфавитно-цифровых символов, первые три символа должны быть алфавитными. Операции. Операциями блоков являются глаголы, описывающие основное функциональное назначение блоков. Каждый из блоков характеризуется своим собственным предписанным ему глаголом. В зависимости от назначения блоки подразделяются на несколько групп: 1) Блоки, осуществляющие модификацию атрибутов транзактов: · генерирование и удаление транзактов: GENERATE, TERMINATE, SPLIT, ASSEMBLE; · временная задержка: ADVANCE; · синхронизация движения нескольких транзактов: MATCH GATHER, · изменение параметров транзактов: ASSIGN, INDEX, MARK; · изменение приоритета: PRIORITY; 2) Блоки, изменяющие последовательность передвижения транзактов: TRANSFER, LOOP, TEST, GATE. 3) Блоки, организующие использование объектов аппаратной категории: · устройства SEIZE, RELEASE, FAVAIL, PREEMPT, RETURN, FUNAVAIL; · многоканальные устройства (памяти) ENTER, LEAVE, SAVAIL. SUNAVAIL; · ключи (логические переключатели) LOGIC; 4) Блоки,сохраняющие необходимые значения для дальнейшего использования: SAVEVALUE, MSAVEVALUE; 5) Блоки, обеспечивающие получение статистических результатов: · очереди QUEUE, DEPART; · статистические таблицы TABULATE, TABLE; 6) Специальные блоки BUFFER, PRINT, EXECUTE, COUNT, CHANGE, TRACE, UNTRACE, SELECT, HELP, JOIN, REMOVE, EXAMINE, SCAN. ALTER; 7) Блокиорганизации цепей LINK, UNLINK; 8) Вспомогательные блоки WRITE, SAVE, LOAD, REPORT, UPDATE. Операнды. Блоки могут содержать различные связанные с ними операнды. Операнды блоков задают информацию, специфичную для действия данного блока. Под значениями операндов могут подразумеваться значения аргументов, используемых при обращениях к подпрограммам. Число операндов каждого блока зависит от типа блоков. Ни один из блоков не использует более семи операндов. Большинство из них используют один или два операнда. Операнды в общем случае обозначаются символами A, B, C, D, E, F и G. Одни операнды некоторых блоков должны быть специфицированы всегда, а другие могут задаваться или не задаваться. В некоторых случаях, когда операнды, задаваемые по выбору, в явном виде не заданы, интерпретатор предполагает значения этих операндов заданными по умолчанию. Рассмотрим наиболее часто употребляемые блоки. Внесение транзактов в модель. Блок GENERATE (ГЕНЕРИРОВАТЬ). GENERATE – это блок, через который транзакты входят в модель. Не существует ограничений на число различных блоков GENERATE в одной модели. Интервал времени между последовательными появлениями транзактов блока GENERATE называют интервалом поступления. Рассмотрим случай равномерного распределения интервалов времени прибытия транзактов. Вид и общая форма записи блока: GENERATE А, В, C, D, E
Операнд Е устанавливает уровень или класс приоритета каждого из транзактов, входящих в модель через данный блок GENERATE. Всего при моделировании на GPSS существует 128 различных уровней приоритета. Эти уровни задают с помощью чисел от 0 до 127. Чем больше число, тем выше приоритет. Наименьшим приоритетом является 0. Примеры использования блока: · GENERATE 5, 3 - значение операндов А и В соответственно 5 и 3. Генерирование транзактов происходит со средним интервалом 5 ед. времени и полем допуска, равным 6 ед., т.е. интервал появления транзактов может быть выражен целыми числами 2, 3, 4, 5, 6, 7 и 8. Поскольку значения распределены равномерно, каждое из чисел может появляться с относительной частотой 1/7. Предположим, что транзакт входит в блок GENERATE в момент модельного времени 15. После того, как этот транзакт попадет в следующий блок модели, интерпретатор GPSS разыграет случайное значение времени из распределения интервалов времени равного 5±3. Пусть разыгранным значением является число 7. Тогда интерпретатор планирует приход следующего транзакта в блок GENERATE в момент времени 15±7 или 22. В момент, когда этот транзакт появляется в блоке и идет к следующему блоку, планируется время генерирования его последователя. · GENERATE 10 - интервал времени прихода равен в точности 10. Это пример того, как может быть задано детерминированное (т.е. неслучайное) значение интервалов времени. · GENERATE 3,3,10,5 - моментом первого приходя является значение 10. После этого интервалы времени прибытия находят из равномерного распределения 3±3. В модель войдут только первые 5 транзактов. · GENERATE 5,,2 - время первого прибытия задано числом 2. После этого приход новых транзактов будет осуществляться через каждые 5 единиц времени. Иначе говоря, приходы будут происходить в моменты времени 2, 7, 12, 17, 22, 27, и т.д. · GENERATE 8,1,,,4 - все интервалы прихода описаны записью 8±1. Нет никакого смещения интервала. Приходы транзактов будут продолжаться в течение всего времени моделирования, поскольку нет ограничителя. Каждый транзакт будет иметь уровень приоритета, равный 4. По умолчанию заданы операнды С и D. Создание копий транзактов. Блок SPLIT (РАСЩЕПИТЬ). В отличие от блока GENERATE блок SPLIT не создает самостоятельных транзактов, а генерирует заданное число копий входящего в него транзакта. Получаемые копии идентичны исходному транзакту. Вид и форма записи блока: SPLIT А, В
А – число копий транзактов, вводимых в модель; В – имя блока, куда будут направлены сгенерированные копии транзактов, исходный же транзакт отправится в следующий блок. Все копии транзактов, а также копии копий принадлежат к одному ансамблю. Обработка ансамблей транзактов может осуществляться в специальных блоках: ASSEMBLE, MATCH, GATHER.
Удаление транзактов из модели. Блок TERMINATE (ЗАВЕРШИТЬ). Транзакты удаляются из модели, попадая в блок TERMINATE. Блоки TERMINATE всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое число блоков TERMINATE. Вид и общая форма записи блока: TERMINATE А
Операнд А является указателем уменьшения счетчика завершений. Иначе говоря, он задает величину, которая должна вычитаться из специального счетчика, называемого счетчиком завершений, каждый раз, когда транзакт входит в блок TERMINATE. Если операнд А не задан, то по умолчанию подразумевается значение 0. Вход транзакта в блок TERMINATE не вызывает уменьшения содержания счетчика завершений. Счетчик завершений – это такая ячейка памяти ЭВМ, которая хранит положительное целое значение, записанное в начале моделирования. В процессе моделирования транзакты попадают в блоки TERMINATE, и таким образом происходит уменьшение содержания счетчика. При достижении содержанием счетчика нуля, моделирование завершается. Несмотря на то, что в модели может быть много блоков TERMINATE счетчик завершений только один.
Занятие свободных приборов. Блоки SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ). Элементами, символизирующими обслуживающие приборы могут быть либо человек (парикмахер, заправщик на бензоколонке, водопроводчик, страховой агент, плотник), либо какой-нибудь предмет (авторучка, стоянка автомобилей, театральный бинокль, подъемный кран). Приборы характеризуются двумя основными свойствами. 1. Каждый прибор в любой момент времени может обслуживать только одно требование. Если в процессе обслуживания появляется новое требование, то оно должно либо подождать своей очереди обслуживания, либо пойти куда-нибудь в другое место. 2. Когда на прибор поступает требование в модели, надо пропустить время, необходимое для его обслуживания. Такое время называется временем обслуживания. Каждый прибор имеет свое уникальное имя. Имена могут быть либо числовыми (положительные целые числа), либо символическими. Наибольшим разрешенным номером является максимальное число приборов, допустимое в модели. При использовании прибора выполняются следующие шаги: · ожидание своей очереди, если это необходимо. Это требует некоторого интервала времени. · занятие прибора. Событие «занятие прибора» происходит в некоторой точке времени. · прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется также некоторый интервал времени. · освобождение прибора. Событие «освобождение прибора» также происходит в некоторой точке времени. Вид и общая форма записи блоков:
SEIZE А RELEASE А
Операнд А в блоках SEIZE и RELEASE означает соответственно имя занимаемого и освобождаемого прибора. Захват прибора. Блоки PREEMPT (ЗАХВАТИТЬ) и RETURN (ВЕРНУТЬ). Транзакты, желающие воспользоваться прибором, должны, как правило, ждать своей очереди, если прибор занят. Захват прибора означает, что вновь пришедшему транзакту разрешается немедленное занятие прибора. Захват может произойти при следующих условиях: · захват происходит только тогда, когда транзакт, занимающий прибор, сам не является захватчиком. Уровень приоритета в данном случае не играет роли. Это так называемый захват «на одном уровне». В этом случае только один замещенный транзакт может ожидать повторного занятия прибора; · захват происходит тогда, когда уровень приоритета возможного «захватчика» превышает уровень приоритета текущего транзакта. В роли захватчика может выступать и сам захваченный транзакт. В GPSS существует 128 уровней приоритета. Это означает, что может существовать до 127 транзактов, ожидающих повторного занятия прибора. Транзакт, захвативший прибор, может освободить его при входе в блок RETURN. Вид и форма записи блоков:
PREEMPT A,B,C,D,E RETURN A
A – имя прибора, подлежащего захвату. B – необязательный операнд, используемый для указания условий, при которых разрешен захват. Эти ситуации описаны выше. Если операнд В отсутствует – это соответствует первому условию, если в поле В стоит PR – это соответствует второму условию. C – имя блока, в который будет послан прерванный транзакт. D – номер одного из параметров прерванного транзакта. В этот параметр помещается значение времени, оставшееся транзакту до окончания обслуживания на приборе. E – указывает, должен ли прерванный транзакт претендовать на автоматическое восстановление на приборе. Если в операнде Е стоит RE, транзакт теряет право на пользование прибором. Если операнд Е пуст, транзакт сохраняет это право.
Блокирование устройства. Блоки FUNAVAIL (УСТРОЙСТВО НЕДОСТУПНО) и FAVAIL (УСТРОЙСТВО ДОСТУПНО). Транзакты имеют возможность блокировать устройства, т.е. делать их недоступными, не занимая этих устройств. При этом могут задаваться разные режимы управления теми транзактами, которые будут пытаться занять или захватить блокированное устройство. Блокирование устройств выполняется с помощью блока FUNAVAIL (устройство недоступно). Разблокирование устройств выполняется блоком FAVAIL (устройство доступно): Вид и форма записи блоков:
FUNAVAIL A [, B, C, D, E, F, G, H ] FAVAIL A
В блоке FUNAVAIL поле A обязательно, а поля B – H могут отсутствовать. В полях задаются: A – устройство или диапазон устройств; B – это обозначение RE или CO. Если задано RE, то транзакт, который в момент блокирования занимает (возможно) устройство, с обслуживания снимается и в дальнейшем не претендует на его занятие. В этом случае в поле C задается метка, на которую пересылается снятый с обслуживания транзакт. Если в поле B записано CO, то обслуживаемый транзакт продолжает обслуживаться до конца; C – метка или номер блока; D – номер параметра управляющего транзакта, E – определяет поведение ранее прерванных транзактов на период недоступного состояния устройства. Здесь может быть записано RE или CO: при RE они исключаются из борьбы за устройство и передаются по метке поля F, а при CO продолжают претендовать на дообслуживание после восстановления доступности устройства и его освобождении от более приоритетных транзактов; F – номер или метка блока; G – определяет поведение транзактов, которые будут обращаться к устройству в период его недоступности. Запись CO означает, что они будут ожидать устройство в обычном порядке, запись RE – что они исключаются из борьбы и передаются по метке поля H; H – метка или номер блока. В блоке FAVAIL (устройство доступно), A – номер или диапазон номеров устройств (например, FUNAVAIL 4-8). Реализация задержки во времени. Блок ADVANCE (ЗАДЕРЖАТЬ). Блок ADVANCE используется для реализации задержки продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал задается случайной переменной. Информация, необходимая для описания соответствующего интервала времени обслуживания и его распределения задается операндами А и В блока ADVANCE. Вид и общая форма записи блока:
ADVANCE А, В
Операнд А - среднее время задержки на обслуживание, В используют для указания половины поля допуска интервала времени задержки. Примеры использования блока. · ADVANCE 30, 5 - для каждого транзакта, входящего в этот блок, возможные значения интервалов времени находятся в пределах 25 - 35 включительно. Предположим, что транзакт входит в блок в момент времени, равный 134, а разыгранным значением из распределения 30±5 является 31. Тогда транзакт будет оставаться в этом блоке до момента времени, равного 134±31 или 165. В этот момент интерпретатор попытается продвинуть его в следующий блок модели. Блок ADVANCE никогда не препятствует входу транзакта. Любое число транзактов может находиться в этом блоке одновременно. Вновь прибывший транзакт никак не влияет на уже находящийся в блоке транзакт. · ADVANCE 12,12 - время пребывания в блоке равно нулю. Можно использовать блок ADVANCE в качестве «фиктивного» блока. Этого можно добиться, не указывая значения операндов блока. При этом обеспечивается нулевое значение задержки по умолчанию.
Сбор статистики при ожидании. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ). В любых системах массового обслуживания число ресурсов ограничено. Это означает, что не всегда можно немедленно предоставить ресурс, при каждом требовании на его использование. В парикмахерской, например, таким ограниченным ресурсом является сам парикмахер. Если он занят в момент прихода клиента, то последний вынужден ждать своей очереди. Часто бывает необходимо собрать статистику, описывающую особенности протекания этого процесса. Эта статистика должна дать ответ на следующие вопросы: 1. Сколько раз требования приходили в очередь? 2. Сколько пришедших требований фактически присоединилось к очереди и сколько сразу заняли приборы? 3. Каково было максимальное значение длины очереди? 4. Каково было среднее число ожидающих требований? 5. Каково среднее время ожидания тех требований, которым пришлось ждать? GPSS обеспечивает такую возможность с помощью, так называемого, регистратора очереди. При использовании регистратора очереди в точках модели, где число ресурсов ограничено, интерпретатор начинает автоматически собирать статистику, описывающую ожидание (если оно есть), возникающее в этих точках. Регистратор очереди во многих отношениях подобен такому элементу моделирования, как прибор. Как и при использовании приборов, в модели может быть несколько различных регистраторов очередей. При использовании регистраторов очередей в точках, где возможно ожидание, собирается статистика, описывающая поведение очереди в соответствующей точке модели. Регистраторы очередей различают заданием имен. Имена могут быть числовыми или символическими. Блоками, соответствующими событиям «присоединение» и «уход», соответственно являются взаимодополняющие блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ). Оба блока содержат операнды А – имя соответствующей очереди и В – число элементов, на которое должно измениться значение счетчика содержимого очереди. Вид и форма записи блоков.
QUEUE A,B DEPART A,B
При входе транзакта в блок QUEUE выполняются следующие действия: «счетчик входов» для данной очереди увеличивается на единицу; текущая длина очереди увеличивается на единицу; запоминается значение текущего модельного времени транзакта. Транзакт перестает быть элементом в очереди только тогда, когда он переходит в блок DEPART соответствующей очереди. Когда это происходит, текущая длина очереди уменьшается на единицу, фиксируется время выхода из очереди. Наличие или отсутствие в структуре модели блоков QUEUE и DEPART не оказывает влияния на факт возникновения очередей. При использовании регистратора очереди собирается статистика об ожидании. Если регистратор не используется, статистика не собирается, но всюду, где должно возникать ожидание, оно возникает. Ожидание является следствием состояния прибора, а не следствием использования регистратора очереди. В блоках QUEUE и DEPART может использоваться операнд В, указывающий на какую величину должен быть модифицирован счетчик содержимого очереди. По умолчанию значение этого операнда равно 1. Необходимость использования операнда В возникает крайне редко.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.019 сек.) |