|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример моделирования системы с использованием сохраняющихся величинПостановка задачи. Модифицируем решение рассмотренной выше задачи про печь так, чтобы выполнялись следующие требования: · число моделируемых дней сделать переменным; · в одном прогоне исследовать случаи с 4,5 и 6 сборщиками.
Таблица определений. Единица времени – 1 мин.
Метод построения модели. Раньше ограничение очереди мы делали путем ввода операнда D блока GENERATE. Сейчас мы будем определять его косвенно с помощью сохраняемой величины GUYS. Это дает возможность изменять модель, переопределяя данную величину между соседними прогонами. Эта величина также может использоваться для определения средней дневной прибыли. Полнословная сохраняемая величина TIMER используется в операнде А блока GENERATE и определяет в какое время транзакт-таймер попадет в модель. Операнд В отсутствует, т.е. равен 0. Модельное время, в которое таймер войдет в модель, равно X$TIMER. Средняя дневная прибыль равна 5 долларам, умноженным на среднее число деталей, производимых ежедневно, минус дневные расходы. В поле метки блока RELEASE поставим символическое имя MADE, тогда N$MADE будет числом деталей, сделанных за моделируемый период. Если предположить, что единица модельного времени - 1 мин. и X$TIMER делится нацело на 480 то величина X$TIMER/480 равна числу моделируемых дней. Тогда величина 5*N$MADE/V$DAYS является средней дневной выручкой без учета расходов на печь и заработную плату. Дневная стоимость печи – 80 долларов, а сборщик зарабатывает 3,75 в час, т.е. 30 за 8-и часовой рабочий день. Тогда общая дневная плата всем рабочим равна 30*X$GUYS. А средняя дневная прибыль 5*N$MADE/V$DAYS-80-30*X$GUYS. Предположим, что это выражение используют для определения переменной PROFT. Тогда при входе в модель транзакта-таймера он может войти в блок SAVEVALUE, инициируя подсчет средней дневной выручки и занесение ее значения в сохраняемую величину. По окончании моделирования эта величина выручки будет включена в распечатку сохраняемых величин. Программа на языке GPSS:
Изменение уровня приоритета транзакта. Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ). При входе в модель уровень приоритета транзакта определяется операндом Е блока GENERATE. В GPSS есть возможность динамическим образом изменять уровень приоритета транзактов. Общий вид и форма записи блока:
PRIORITY А
А – значение уровня приоритета. Именно значение операнда А и назначается в качестве нового уровня приоритета вошедшего транзакта. Уровень приоритета является стандартным числовым атрибутом с именем PR. Элементы, моделирующие управление. Логические переключатели. Блок GATE (ВПУСТИТЬ). Для моделирования управления в GPSS существует специальные элементы, называемые логическими переключателями. В любой рассматриваемый момент времени логический переключатель в модели либо установлен, либо сброшен. Состояния логических переключателей можно проверять и использовать для оказания влияния на движение транзактов в модели. Логические переключатели существуют в модели автоматически, независимо от того, используются они или нет. Чтобы поместить логические переключатели в начальное состояние «установлено», используют оператор INITIAL. Формат оператора:
Состояние логического переключателя может измениться, если транзакт войдет в блок LOGIC (ВЛИЯТЬ НА ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ). Общий вид и форма записи блока:
LOGIC X A
А – номер логического ключа (имя, число или СЧА), Х – вспомогательный оператор, указывающий на производимое действие с логическим переключателем. При входе транзакта в блок положение логического ключа изменяется в зависимости от значения вспомогательного оператора Х следующим образом: S – логический ключ устанавливается в положение «Включен»; R – логический ключ устанавливается в положение «Выключен»; I –логический ключ инвертируется, т.е меняет значение на противоположное.
Проверка состояния логических переключателей. При проверке состояния логического переключателя не используются какие-либо его числовые свойства, т.к. у переключателя их нет. Для управления потоком транзактов с использованием состояния логического переключателя «установлено» или «сброшено» требуется какой-то другой блок отличный от блока TEST. Для этой цели используется блок GATE (ВПУСТИТЬ). Вид и форма записи блока:
GATE X A, B
А – имя логического переключателя; В – необязательный операнд; имя блока к которому переходит проверяющий транзакт, если логический переключатель находится в положении, не отвечающем условию проверки. Если операнд В пустой, блок работает в режиме условного вхождения, если заполнен – в режиме безусловного вхождения. Х – Вспомогательный оператор (логический ключ), указывает положение переключателя, требуемое для истинности проверки, имеет СЧА, задается одним из следующих логических операторов:
В режиме условного вхождения транзакт никогда не задерживается на входе блока. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему по номеру блоку. Если логический оператор имеет значение «ложь», то транзакты будут пытаться перейти к блоку, номер которого задан в операнде В. Выбор следующего блока происходит один раз в момент вхождения в блок. В режиме безусловного вхождения (операнд В отсутствует), транзакты не смогут войти в блок до тех пор, пока указанный логический оператор не будет иметь значение «истина». Пример. По расписанию автобус должен подходить к остановке каждые 30 мин., однако возможно опоздание на 1,5±1,5 мин. Приход людей на остановку подчиняется закону Пуассона с интенсивностью 12 человек каждые 30 мин. Автобус вместимостью 50 человек в момент прибытия везет 35±15 человек. После того как от3 до 7 пассажиров выйдут (распределение равномерное), в автобус входят столько ожидающих, сколько возможно. Для высадки пассажира требуется 4±3 с., для посадки - 8±4 с. Построить модель имитирующую события на остановке. Таблица определений. Единица времени – 1 с.
Программа на языке GPSS.
Системы обслуживания с несколькими приборами и очередями. Во всех предыдущих примерах система обслуживания состояла из нескольких параллельно работающих каналов и одной очереди. Рассмотрим системы обслуживания с несколькими каналами, перед которыми образуются раздельные очереди. Примерами таких систем являются: продовольственный магазин с несколькими кассами на выходе, площадки сбора платы за проезд по скоростным дорогам с несколькими турникетами, банки с несколькими обслуживающими кассирами и т.д. Предположим, что приборы 1, 2, и 3 используются для моделирования параллельно работающих каналов. Очереди к этим приборам также имеют имена 1, 2 и 3 соответственно (рис. 23). Значения операндов А используемых блоков можно определить через значение параметра Р1. Последовательность блоков, эквивалентная параллельным ветвям не изменится. При входе в эту последовательность транзакта, первый параметр которого имеет значение 1, он присоединяется к очереди 1, ждет возможности занять прибор 1. Аналогично, транзакты, у которых Р1 имеет значение 2 или 3, присоединяются к очередям 2 или 3 соответственно, ждут освобождения приборов 2 или 3 и т.д. Рис. 23. Сегмент блок-схемы, моделирующий параллельные ветви обслуживания.
Последовательность блоков, эквивалентная параллельным ветвям, представленным на рисунке 24.
Рис. 24. Сегмент блок-схемы, моделирующий параллельное ветви обслуживания Выбор элементов по их состояниям. Блок SELECT (ВЫБРАТЬ) В GPSS есть блок, который может быть использован для просмотра множества элементов определенной группы для выяснения того, удовлетворяет ли хотя бы один из них определенному числовому условию. При входе транзакта в этот блок выполняется просмотр состояний элементов определенной группы. Просмотр выполняется в порядке возрастания номеров элементов. Если найден такой элемент, который удовлетворяет установленному условию, просмотр прекращается. В противном случае просмотр прекращается после определения того, что ни один из членов множества не удовлетворяет этому условию. В любом случае транзакт продвигается в модели (сразу же или как только позволит следующий блок) после завершения просмотра. Приведем примеры просмотров, которые может выполнить блок. 1. Просмотреть приборы 1, 2 и 3 для определения, находится ли хотя бы один из них в свободном состоянии (т. е. надо определить, есть ли хотя бы один прибор, для которого атрибут F равен нулю). 2. Просмотреть многоканальные устройства для определения, есть ли хотя бы одно устройство нагрузка которого ниже 25% (т. е. надо определить, есть ли хотя бы одно устройство, атрибут которого SR меньше 250). 3. Просмотреть очереди 13, 14, 15, 16 и 17 для определения, есть ли хотя бы одна из них, у которой среднее время пребывания, если исключить нулевые входы, не меньше 3 (т.е. надо определить, существует ли хотя бы одна из этих очередей, атрибут которой QX превышал или был бы равен 3). Для осуществления такого просмотра используют блок SELECT (ВЫБРАТЬ). Общий вид и форма записи блока:
SELECT X A, B, C, D, E, F
А – номер параметра в который записывается номер члена группы, отвечающего указанным условиям; F – необязательный, указывает имя блока в который передается транзакт, если ни один член группы не отвечает установленному условию; Е – групповое имя СЧА; В и С – наименьший и наибольший номера из множества членов просматриваемых групп; D – значение, с которым должен сравниваться атрибут, указанный в операнде Е; Х – вспомогательный оператор. Он является оператором отношения, определяющим способ сравнения СЧА, указанное оператором Е и значение оператора D. Фактически Х имеет одну из следующих форм:
Примеры использования блока SELECT. · SELECT Е 7, 1, 3, 0, F - блок организует просмотр приборов 1,2 и 3 и определение такого, для которого атрибут F был бы равен 0. Если просмотр закончился, транзакт выйдет со значением параметра 7, равным номеру того прибора (1,2 или 3) для первого из которых обнаружено, что его атрибут F равен нулю. Иначе транзакт покидает блок SELECT с нулевым значением параметра 7. · SELECT L P3, 5, 8, 250, SR - блок просматривает многоканальные устройства 5, 6, 7, 8 и определяет какое из них имеет нагрузку меньшую, чем 0,25%. · SELECT GE 5, 13, 17, 3, QX, EXIT - блок просматривает очереди от 13 до 17 и определяет есть ли такая, атрибут QX которой больше или равен 3. Если есть, то ее номер записывается в параметр 5. При неудовлетворительном результате транзакт переходит в блок EXIT. Параметр 5 не меняет своего значения. Блок SELECT может использоваться в режиме поиска члена группы, значение определенного атрибута которого является минимальным или максимальным. Роль вспомогательных операндов для такого режима использования блока SELECT играют операнды MIN и MAX. В этом режиме операнды А, В, С и Е используются так же, как в режиме отношения. Значение операндов D и F не задается. Приведем пример использования блока SELECT при моделировании параллельного обслуживания (см. рис.1). Транзакт сначала входит в блок SELECT в режиме оператора отношения, в котором определяется наличие прибора, который свободен в данный момент времени. Если такой прибор найден, его номер записывается первым параметром транзакта и транзакт входит в последовательность блоков QUEUE -…-RELEASE. Если свободного прибора нет, транзакт попадает в блок SELECT в режиме MIN. Номер самой короткой очереди помещается в параметр 1, транзакт возвращается в блок QUEUE, где присоединяется к очереди с самой малой длиной.
Определение и использование таблиц. Блок TABULATE (ТАБУЛИРОВАТЬ). Сбор и автоматическое табулирование статистических данных о работе модели можно с помощью таблиц. Статистические таблицы используются для получения частотных распределений определенных аргументов, которыми могут быть некоторые СЧА (время задержки транзакта в модели, длина очереди, содержимое памяти и т.д.). В модели может быть несколько таблиц. Они сначала определяются, затем используются. Для определения таблицы нужно указать: 1. имя таблицы; 2. имя случайной переменной, значение которой будет табулироваться; 3. число, являющееся первым граничным значением; значения выборки, меньшие или равные этому числу, попадают в самый левый интервал (частотный класс) таблицы; 4. ширину общей для всех интервалов таблицы за исключением левого (низшего) и правого (высшего); 5. общее число интервалов таблицы, включающее нижний и высший. Вся эта информация записывается в карте определения таблицы TABLE. Формат карты:
Поле имени Поле операции Поле операндов <имя> TABLE А, В, С, D
A – имя переменной, значения которой должны учитываться в таблице. Операнд А должен быть именем стандартного числового атрибута. B – первое граничное значение. C – ширина всех промежуточных интервалов. D – общее число интервалов таблицы, включая левый и правый. Значения операндов В, С и D - целые числа. Значение В может быть отрицательным. Пример. TYME TABLE MP3, 10, 5, 6 Таблица имеет имя TYME. Стандартный числовой атрибут, который мы табулируем, является атрибутом МР3. Первой границей является 10, ширина промежуточных интервалов таблицы равна 5, ось действительных значений делится на 6 последовательных интервалов. При входе транзакта в блок TABULATE в соответствующую таблицу записывается определенная статистическая информация. Поле А определяет имя этой таблицы. Общий вид и форма записи блока: TABULATE А, В
В каждом блоке TABULATE может быть задано число единиц, добавляемых к числу наблюдений того интервала, в который попадает при данном обращении аргумент. Это число единиц задается в поле В. По умолчанию это число принимается равным 1. Примеры. · TABULATE 32, 2 – в интервалы таблицы 32 добавляется по 2 единицы. · TABULATE ТРВ – в интервалы таблицы ТРВ добавляется 1. Существуют три специальных режима использования таблиц. 1. IA-режим (Inter Arrival – интервалы прихода). При входе транзакта в блок TABULATE, который соответствует таблице, используемой в этом режиме, определяется время, прошедшее с момента последнего обращения к этой таблице. Полученное значение заносится в таблицу. Таблица представляет собой распределение промежутков времени между моментами поступления транзактов в данную точку программы. Обозначение IA записывается в операнд А команды TABLE. Операнды В, С и D этой команды определяют обычным образом. Блок TABULATE должен быть помещен в интересующую точку модели. 2. RT-режим (Rate – интенсивность). Режим основа на оценке распределения интенсивности, с которой транзакты поступают в определенную точку модели. Использование этого режима предусматривает запись обозначения RT в операнд А команды TABLE. Операнды В, С и D этой команды определяют обычным образом. Необходимо определить операнд Е – интервал времени, относительно которого измеряется интенсивность. Блок TABULATE должен быть помещен в интересующую точку модели. Логика сбора данных в этом режиме такова Каждая таблица имеет специальный счетчик. В начале моделирования он сбрасывается в 0. При ссылке на таблицу из блока TABULATE значение счетчика увеличивается на 1. Если интервал времени, указанный в Е, проходит, то значение счетчика помещается в таблицу, сам счетчик обнуляется. Процесс добавления к счетчику продолжается на следующем интервале времени. 3. QTABLE-режим используется для оценки распределения времени пребывания в очереди. Для использования этого режима необходимо в поле операции команды TABLE записать операцию QTABLE. Операндом А этой команды является имя очереди, оценка распределения времени пребывания в которой представляет интерес. Операнды В, С и D этой команды определяют также, как и в команде TABLE.
Рис. 25. Пример гистограммы
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.017 сек.) |