АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Пример моделирования системы с использованием сохраняющихся величин

Читайте также:
  1. A) на этапе разработки концепций системы и защиты
  2. C. неживые системы
  3. C. развитие знаний в форме дообучения на дополнительной последовательности примеров
  4. C. развитие знаний в форме дообучения на дополнительной последовательности примеров
  5. I.2 Реформирование и современная структура банковской системы РФ.
  6. I.3.2.Становление советской системы управления
  7. I.6.1.Кризис административно-командной системы в условиях завершения восстановления народного хозяйства после окончания Отечественной войны.
  8. I.Дисперсные системы
  9. II.Примерная тематика курсовых работ
  10. III. После этого раненую конечность лучше всего зафиксировать, например, подвесив на косынке или при помощи шин, что является третьим принципом оказания помощи при ранениях.
  11. III.4.2. Административная реформа. Системы и структуры федеральных органов исполнительной власти
  12. III.5.1.Становление судебной власти в России. Общая характеристика судебной системы

Постановка задачи. Модифицируем решение рассмотренной выше задачи про печь так, чтобы выполнялись следующие требования:

· число моделируемых дней сделать переменным;

· в одном прогоне исследовать случаи с 4,5 и 6 сборщиками.

 

Таблица определений. Единица времени – 1 мин.

 

Элемент GPSS Интерпретация
Транзакты: 1-й сегмент модели 2-й сегмент модели   Приборы: OVEN   Сохраняемые величины: GUYS TIMER   Переменные: DAYS PROFT   Сборщики Таймер     Печь     Число сборщиков Продолжительность моделирования     Продолжительность моделирования Средняя дневная прибыль

 

Метод построения модели. Раньше ограничение очереди мы делали путем ввода операнда 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:

  INITIAL X$GUYS,4/X$TIMER,2400
DAYS VARIABLE X$TIMER/480
PROFT VARIABLE 5*N$MADE/V$DAYS-80-30*X$GUYS
  SEGMENT 1  
  GENERATE ,,,X$GUYS
BACK ADVANCE 30,5
  SEIZE OVEN
  ADVANCE 8,2
MADE RELEASE OVEN
  TRANSFER ,BACK
  SEGMENT 2  
  GENERATE X$TIMER
  SAVEVALUE INDEX,V$PROFT
  TERMINATE  
     
  START  
  INITIAL X$GUYS,5
  CLEAR X$GUYS,X$TIMER
  START  
  INITIAL X$GUYS,6
  CLEAR X$GUYS,X$TIMER
  START  

 

 

Изменение уровня приоритета транзакта. Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ). При входе в модель уровень приоритета транзакта определяется операндом Е блока GENERATE. В GPSS есть возможность динамическим образом изменять уровень приоритета транзактов.

Общий вид и форма записи блока:

 

PRIORITY А

 

 

А – значение уровня приоритета.

Именно значение операнда А и назначается в качестве нового уровня приоритета вошедшего транзакта.

Уровень приоритета является стандартным числовым атрибутом с именем PR.

Элементы, моделирующие управление. Логические переключатели. Блок GATE (ВПУСТИТЬ). Для моделирования управления в GPSS существует специальные элементы, называемые логическими переключателями. В любой рассматриваемый момент времени логический переключатель в модели либо установлен, либо сброшен. Состояния логических переключателей можно проверять и использовать для оказания влияния на движение транзактов в модели. Логические переключатели существуют в модели автоматически, независимо от того, используются они или нет. Чтобы поместить логические переключатели в начальное состояние «установлено», используют оператор INITIAL.

Формат оператора:

 

Поле имени Поле операции Поле операндов
Не используется INITIAL Lsимя1/LSимя2/ …/LSимяN

 

Состояние логического переключателя может измениться, если транзакт войдет в блок LOGIC (ВЛИЯТЬ НА ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ).

Общий вид и форма записи блока:

 

LOGIC X A

 

 

А – номер логического ключа (имя, число или СЧА),

Х – вспомогательный оператор, указывающий на производимое действие с логическим переключателем.

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

S – логический ключ устанавливается в положение «Включен»;

R – логический ключ устанавливается в положение «Выключен»;

I –логический ключ инвертируется, т.е меняет значение на противоположное.

 

Проверка состояния логических переключателей.

При проверке состояния логического переключателя не используются какие-либо его числовые свойства, т.к. у переключателя их нет. Для управления потоком транзактов с использованием состояния логического переключателя «установлено» или «сброшено» требуется какой-то другой блок отличный от блока TEST. Для этой цели используется блок GATE (ВПУСТИТЬ).

Вид и форма записи блока:

 

GATE X A, B

 

а) Блок для проверки положения логического переключателя   б) Блок для проверки статуса устройства в) Блок для проверки статуса многоканального устройства

 

А – имя логического переключателя;

В – необязательный операнд; имя блока к которому переходит проверяющий транзакт, если логический переключатель находится в положении, не отвечающем условию проверки.

Если операнд В пустой, блок работает в режиме условного вхождения, если заполнен – в режиме безусловного вхождения.

Х – Вспомогательный оператор (логический ключ), указывает положение переключателя, требуемое для истинности проверки, имеет СЧА, задается одним из следующих логических операторов:

 

Логические операторы, связанные с устройствами
NU Устройстово свободно -1, занято – 0.
U Устройство занято -1, не занято – 0.
NI На устройстве не произошло прерывание -1, иначе – 0.
I На устройстве произошло прерывание -1, иначе – 0.
FV Устройство доступно -1, иначе – 0.
FNV Устройство не доступно -1, иначе – 0.
Логические операторы, связанные с МКУ
SE МКУ пусто -1, непусто -0
SNE МКУ не пусто -1, пусто – 0
SF МКУ заполнено -1, не заполнено – 0.
SNF МКУ не заполнено -1, заполнено - 0
SV МКУ доступно -1, иначе – 0.
SNV МКУ не доступно -1, иначе – 0.
Логические операторы, связанные с транзактами
M Наличие пары в А-блоке
NM Отсутствие пары в А-блоке
Логические операторы, связанные с логическими ключами
LRj равно 1, если логический ключ выключен, иначе -0;
LSj равно 1, если логический ключ включен, иначе -0

 

В режиме условного вхождения транзакт никогда не задерживается на входе блока. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему по номеру блоку. Если логический оператор имеет значение «ложь», то транзакты будут пытаться перейти к блоку, номер которого задан в операнде В. Выбор следующего блока происходит один раз в момент вхождения в блок.

В режиме безусловного вхождения (операнд В отсутствует), транзакты не смогут войти в блок до тех пор, пока указанный логический оператор не будет иметь значение «истина».

Пример. По расписанию автобус должен подходить к остановке каждые 30 мин., однако возможно опоздание на 1,5±1,5 мин. Приход людей на остановку подчиняется закону Пуассона с интенсивностью 12 человек каждые 30 мин. Автобус вместимостью 50 человек в момент прибытия везет 35±15 человек. После того как от3 до 7 пассажиров выйдут (распределение равномерное), в автобус входят столько ожидающих, сколько возможно. Для высадки пассажира требуется 4±3 с., для посадки - 8±4 с. Построить модель имитирующую события на остановке.


Таблица определений. Единица времени – 1 с.

 

Элементы GPSS Назначение
Транзакты 1 сегмент 2 сегмент     Пассажир Автобус: Р1 – сначала число людей, желающих выйти, затем число людей в автобусе, которым еще необходимо выйти
Функции XPDIS ONBUS   OFF   Экспоненциальная функция распределения Функция распределения числа пассажиров в автобусе в момент прибытия на остановку Функция распределения числа выходящих из автобуса пассажиров
Логические переключатели BUS   В положении «сброшено» указывает на одновременное выполнение условий: 1) автобус находится на остановке и 2) следующему пассажиру можно попытаться войти
Очередь LINE   Очередь ожидающих автобуса
Сохраняемые величины MAD   OWON     Счетчик для определения числа людей, не севших в автобус Счетчик для определения числа пассажиров в прибывшем автобусе
Таблицы MAD   Таблица для оценки распределения необслуженных людей

 


Программа на языке GPSS.

XPDIS FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.335/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
OFF FUNCTION RN1, C2 0,3 / 1,8
ONBUS FUNCTION RN1, C2 0,20 / 1,51
MAD TABLE X$MAD,0,1,10

 

  ;MODEL SEGMENT 1  
     
  GENERATE 150,FN$XPDIS,,,1 Приход людей на остановку
  QUEUE LINE Встать в очередь
  GATE LS BUS Двери открываются
  DEPART LINE Выйти из очереди
  TEST L X$NOWON,50,MAD Есть ли в автобусе место
  LOGIC R BUS Да, закрыть перед следующим
GETON ADVANCE 8,4 Войти в автобус
  SAVEVALUE NOWON+,1 Подсчитать людей в автобусе
  LOGIC S BUS Открыть для следующего
  TERMINATE   Пассажир вошел в автобус
MAD SAVEVALUE MAD+,1 Счетчик отказов
  TERMINATE   Необслуженный уходит
       
  ;MODEL SEGMENT 2  
  GENERATE   Прибытие автобуса
  ADVANCE 90,90 Опоздание
  SAVEVALUE NOWON,FN$ONBUS Подсчет пассажиров в автобусе
  ASSIGN 1,FN$OFF Число желающих выйти
NEXT ADVANCE 4,3 Выходит пассажир
  SAVEVALUE NOWON-,1 Число пассажиров в автобусе
  LOOP 1,NEXT Выпустить следующего
  LOGIC S BUS Открыть автобус
  TEST E Q$LINE,0 Автобус ждет окончания очереди
  TEST E W$GETON,0 Последний пассажир вошел?
  TABULATE MAD Число необслуженных
  SAVEVALUE MAD,0 Обнулить необслуженных
  LOGIC R BUS Закрыть автобус
  TERMINATE   Автобус уезжает
  START    

 

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

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

Предположим, что приборы 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. Фактически Х имеет одну из следующих форм:

G Больше ли Е чем D?
CE >= E и D
E = E и D
NE ≠ E и D
LE <= E и D
L < k E чем 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. Пример гистограммы

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.018 сек.)