Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы_МОД.doc
Скачиваний:
21
Добавлен:
20.09.2019
Размер:
3.22 Mб
Скачать

9.Стандартные числовые атрибуты.

Стандартные числовые атрибуты (СЧА)

В качестве операндов блоков обычно используются числовые значения, однако в ряде случаев целесообразно пользоваться в качестве операндов некоторыми системными значениями, которые автоматически формируются GPSS (длина очереди, занятость устройств). Данные, поставляемые системой GPSS – стандартные числовые атрибуты (в GPSS их 50).

СЧА для устройств:

- Fj (F$<имя>). 0 – устройство занято; 1 – свободно.

- FCj ( ) – число занятий устройства;

- FRj ( ) – загрузка устройства;

- FTj ( ) – целая часть среднего времени задержки транзакта на устройстве.

СЧА для очереди:

- Qj – текущее значение длины очереди;

- QAj – целая часть среднего значения длины очереди;

- QCj – число входов в очередь.

QT среднее время нахождения в очереди

QX AVERAGE RESIDENCE TIME EXCLUDING ZEROS

SA AVERAGE CONTENT

SR FRACTIONAL UTILIZATION

ST среднее время занятости

CA AVERAGE CONTENT

CT AVERAGE RESIDENCE TIME

Пример:

В СМО с 1-м прибором и очередью поступают заявки по пуассоновскому закону с интенсивностью 12 заявок в час. Обслуживание происходит по пуассоновскому закону со среднем временем 10. Определить загрузку прибора.

1 FUNCTION RN1, C24

“24 точки пуассоновского закона”

EXPONENTA

GENERATE 300, fn$1

QUEUE OCHER1

SEIZE UST1

ADVANCE 600, fn$1

RELEASE UST1

TERMINATE

Усложним задачу: время обслуживания прибора зависит от длины очереди у прибора на устройстве 1:

Длина очереди

Время обработки

0

10

1-3

8

4-5

5

6 и более

4

Для реализации подобного обслуживания необходимо ввести еще одну функцию:

2 FUNCTION Q$OCHER1, D4

0,600/3,480/5,300/6,240

И изменим блок ADVANCE:

ADVANCE fn$2, fn$1

10.Моделирование многоканальных устройств в gpss. Прерывание работы устройств в gpss

При решении современных задач возникает проблема моделирования систем, включающих одновременную работу нескольких одинаковых устройств. Для работы с подобными устройствами необходимо знать емкость МКУ (количество одновременно работающих устройств).

Enter A – захват МКУ (А - имя).

Leave A – освобождение МКУ (А - имя).

Использование МКУ аналогично использованию одноканальных устройств. Транзакт из очереди пытается войти в МКУ, если все устройства в МКУ заняты, он остается в очереди. Если несколько свободных устройств, он занимает первое устройство с наименьшим номером. После окончания обслуживания транзакт покидает МКУ и освобождает устройство. В протоколе после окончания моделирования автоматически распечатывается статистика использования МКУ:

  • Счетчик посещения МКУ;

  • Среднее время пребывания транзакта в МКУ.

Перед использованием МКУ необходимо задать его емкость:

<имя МКУ> Storage <емкость (целое число без знака)>

Если в программе используется множество МКУ их все можно определить в одном блоке: Storage <имя МКУ1>, <емкость 1>/ <имя МКУ2>, <емкость 2>

Пример: Определить оптимальное количество моек на СТО, если поток прибывающих машин распределен по Пуассоновскому закону с «лямбда»=60. Время мойки распределено по равномерному закону 6±2. Если клиент, подъехав к СТО не обнаруживает свободного места, он уезжает. Время моделирования 8 часов, такт моделирования 1 мин.

Moj Storage 2

Generate (exponential(5,60,1))

Transfer Both, , Fin

Queve Oser

Enter Moj

Depart Oser

Advance 6, 2

Leave Moj

Fin Terminate

Generate 480

Terminate 1

Прерывание работы устройств в GPSS

При поступлении заявки транзакта устройству, если оно занято, автоматически осуществляется передача его в очередь. Очередь имеет принцип обслуживания FIFO, однако в ряде случаев возникают ситуации, когда в силу событий необходимо прервать работу устройства от текущего транзакта и перейти на выполнение этим устройством другой работы. Для реализации подобных ситуаций используют PREEMPT – вход прерывания и RETURN – выход из него, возврат. Блок PREEMPT имеет 5 параметров PREEMPT A, B, C, D , E. Существует 2 формы оператора PREEMPT:

PREEMPT A – имя прерываемого устройства. При входе транзакта в этот блок осуществляется прерывание работы устройства, записанного в операнде A, для этого устройство может быть назначено время работы прерывания программы (ADVANCE), после которой ставится оператор RETURN. После выхода из прерывания программы устройство продолжает работу с теми заявками, которые стоят в его очереди. Ситуация может быть сложнее, когда необходимо выполнить прерывание, вернуться в основную программу и закончить прерванную программу. В этом случае используются все операнды ABCDE. B – ключевое слово; C – имя блока, куда передается прерванный транзакт; D – номер параметра прерванного транзакта, в который записывается время, которое ему необходимо доработать после завершения прерывания; E – RE, если прерванный транзакт не претендует на доработку. Данный блок с 5-ю параметрами позволяет организовать вложение прерывания согласно стратегии GPSS. Прервать обработку транзакта может только транзакт с большим приоритетом. Пример:

GENERATE A, B;

SEIZE USTR1;

TERMINATE;

GENERATE C, D;

PREEMPT USTR1;

ADVANCE 100;

RETURN;

1-ый GENERATE формирует заявки, которые обрабатываются USTR1. Как только GENERATE 2 формирует заявку в блоке PREEMPT прерывается выполнение устройства 1 и захватывает его на 100 тактов моделирования. Что будет с прерванной программой, зависит от параметров B, C, D.

  • PREEMPT USTR1, PR, <МЕТКА 1>,,RE – возникает прерывание (приоритетное), прерванная заявка уходит в блок с меткой 1 и возврату не подлежит.

  • PREEMPT USTR1, PR, <МЕТКА 1>3 – возникает прерывание (приоритетное), обрабатываемая заявка уходит в блок с меткой 1 и возврату не подлежит, а время дообслуживания записывается в параметр 3.