Примеры моделирования некоторых систем

В качестве системы для первого примера рассмотрим СМО вида М/М/1 [6] при интенсивностях поступления λ=0,1 сек-1 и обслуживания µ=0,2 сек-1. Тогда средние значения интервалов поступления заявок a =1/λ=10 сек и длительности обслуживания b =1/µ=5 сек. Соответствующая модель (без сегмента времени) приведена на рис. 13. При этом в качестве единицы модельного времени выбрана 0,1 сек с тем, чтобы определить значения операндов А в блоках GENERATE и ADVANCE достаточно большими.

В этой модели в операторе определения функции для экспоненциального распределения EXPDIS используется ГСЧ RN4. Следует отметить, что если при обращении к ГСЧ он выдает значение, большее чем 0,9998, то в качестве значения функции принимается 8. В блоках GENERATE и ADVANCE заданы ссылки FN$EXPDIS на одну и ту же функцию, т.е. нет необходимости определения двух функций экспоненциального распределения. Объекты типа очередь с именами OJID и SYSTEM собирают соответственно статистику об ожидании транзактов и их пребывании в модели в целом.

EXPDIS FUNCTION RN4,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85

.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

GENERATE 100,FN$EXPDIS

QUEUE SYSTEM

QUEUE OJID

SEIZE PRIBOR

DEPART OJID

ADVANCE 50,FN$EXPDIS

RELEASE PRIBOR

DEPART SYSTEM

TERMINATE

Рис. 13. Модель системы вида М/М/1.

В качестве второго примера рассмотрим СМО вида М/М/1/K [6], т.е. систему с ограниченной очередью, с теми же параметрами поступления и обслуживания, что в предыдущем примере, а значение K пусть равно 3. В системах такого вида, поступающая заявка, которая не застает в очереди свободных мест, покидает ее. Соответствующая модель приведена на рис. 14 (без сегмента времени).

EXPDIS FUNCTION RN2,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85

.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

OCH STORAGE 3

GENERATE 100,FN$EXPDIS

TRANSFER BOTH,,OUT

ENTER OCH

QUEUE SYSTEM

SEIZE PRIBOR

LEAVE OCH

ADVANCE 50,FN$EXPDIS

RELEASE PRIBOR

DEPART SYSTEM

OUT TERMINATE

Рис. 14. Модель системы вида М/М/1/К.

В этой модели оператор STORAGE определяет МКУ емкости 3 с именем OCH, которое используется для того, чтобы задать ограниченную очередь системы. При этом канал в МКУ соответствует месту ожидания в очереди. Транзакты, поступающие в модель, попадают в блок TRANSFER, работающий в логическом режиме. Если в момент поступления транзакта в модель в МКУ есть хотя бы один свободный канал (есть хотя бы одно место ожидания), то блок TRANSFER направит его в блок ENTER. Если же все каналы МКУ будут заняты (очередь заполнена), то блок ENTER откажет транзакту во входе, и он будет направлен в блок TERMINATE, который удаляет его из модели.

Транзакт в МКУ OCH уходит из него только тогда, когда сможет занять устройство с именем PRIBOR, поскольку блок LEAVE расположен после блока SEIZE PRIBOR. МКУ ОСН, моделируя ограниченную очередь системы, одновременно собирает статистику об ожидании транзактов (кроме времени), а статистику о пребывании транзактов в модели в целом собирает объект типа очередь с именем SYSTEM, блок QUEUE которого должен располагаться после блока ENTER.

Рассмотрим теперь СМО с неоднородной нагрузкой вида , когда в систему поступают заявки двух классов. В качестве параметров поступления и обслуживания зададим значения: a1 =10, b1 =4 (для первого класса) и a2 =8, b2 =2,8 сек (для второго класса). Соответствующая модель из двух сегментов (без сегмента времени) приведена на рис. 15 (в реальной модели эти сегменты на самом деле должны располагаться друг за другом, причем их взаиморасположение не имеет значения). Единицей модельного времени выбрано 0,01 сек. Сегмент 1 моделирует процессы поступления, обслуживания и ухода заявок 1-го класса, а сегмент 2 – заявок 2-го класса.

EXPDIS FUNCTION RN3,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85

.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


Сегмент 1

GENERATE 1000,FN$EXPDIS

QUEUE SYSTEM

QUEUE SYSTEM1

QUEUE OJID

QUEUE OJID1

SEIZE PRIBOR

SEIZE PRIB1

DEPART OJID1

DEPART OJID

ADVANCE 400,FN$EXPDIS

RELEASE PRIB1

RELEASE PRIBOR

DEPART SYSTEM1

DEPART SYSTEM

TERMINATE

Сегмент 2

GENERATE 800,FN$EXPDIS

QUEUE SYSTEM

QUEUE SYSTEM2

QUEUE OJID

QUEUE OJID2

SEIZE PRIBOR

SEIZE PRIB2

DEPART OJID2

DEPART OJID

ADVANCE 280,FN$EXPDIS

RELEASE PRIB2

RELEASE PRIBOR

DEPART SYSTEM2

DEPART SYSTEM

TERMINATE


Рис. 15. Модель системы вида .

Тот факт, что заявки обоих классов обслуживаются в одном (единственном) приборе системы, в GPSS/PC достигается путем указания в операнде А блоков SEIZE и RELEASE в обоих сегментах модели одного и того же имени (в нашем случае PRIBOR) для одноканального устройства.

Точно такой же подход применим и к объектам типа очередь. Так, объект-очередь с именем OJID, который присутствует в обоих сегментах модели, собирает статистику об ожидании транзактов без учета их класса, тогда, как, например, очередь с именем OJID1 (присутствует только в сегменте 1) собирает статистику об ожидании транзактов только 1-го класса (соответственно, очередь с именем OJID2 – транзактов только 2-го класса). То же самое можно сказать относительно объектов типа очередь с именами SYSTEM, SYSTEM1 и SYSTEM2. Только собирают они статистику о пребывании транзактов в модели в целом (без учета и с учетом их класса).

Блоки SEIZE и RELEASE, задающие устройство с именем PRIBOR, в ходе моделирования определяют коэффициент использования устройства, соответствующий суммарной загрузке прибора заявками обоих классов, и другие обобщенные характеристики занятия устройства. А как же определить загрузку прибора заявками отдельных классов?

Одним из возможных подходов для определения коэффициента использования устройства, например, транзактами 1-го класса является создание в сегменте 1 (и только) фиктивного устройства, например, с именем PRIB1. При этом блок SEIZE PRIB1 должен обязательно располагаться сразу после блока SEIZE PRIBOR, а вот взаиморасположение блоков RELEASE PRIB1 и RELEASE PRIBOR не имеет значения. Заданные таким образом блоки SEIZE PRIB1 и RELEASE PRIB1 в ходе моделирования, очевидно, определяют коэффициент использования устройства транзактами 1-го класса, т.е. загрузку прибора заявками 1-го класса.

Соответственно блоки SEIZE PRIB2 и RELEASE PRIB2 во втором сегменте определяют загрузку прибора заявками 2-го класса.

Другим подходом для определения загрузки прибора заявками 1-го класса является замена созданного выше фиктивного устройства с именем PRIB1 объектом типа очередь, например, с именем OBSL1, т.е. блок SEIZE PRIB1 заменяется блоком QUEUE OBSL1, а блок RELEASE PRIB1 – блоком DEPART OBSL1. Такая очередь определяет среднее число транзактов 1-го класса в устройстве PRIBOR, а оно как раз и соответствует искомой загрузке, поскольку загрузка прибора характеризует среднее число заявок в нем.

Аналогично для определения загрузки прибора заявками 2-го класса с помощью объекта типа очередь можно поступить и во втором сегменте.

До сих пор нагрузка системы считалось бесприоритетной. В случае приоритетной нагрузки, например, когда заявки 1-го класса имеют, скажем, относительный приоритет к заявкам 2-го класса, то для того, чтобы задать такой приоритет достаточно в сегменте 1 модели в операнде Е блока GENERATE задать отличный от нуля уровень приоритета транзактов. Если же этот приоритет абсолютный, то в сегменте 1 блоки SEIZE PRIBOR и RELEASE PRIBOR необходимо заменить соответственно на блоки PREEMPT PRIBOR и RETURN PRIBOR (значения операндов Е блоков GENERATE не учитываются).

В качестве следующего примера рассмотрим СМО вида М/М/1/∞/L, где L – количество источников нагрузки. Такая СМО известна как модель системы-цеха по ремонту одним мастером L машин [4]. Другие применения этой модели: вычислительная система, к которой подключены L терминалов; сервер, к которому обращаются L клиентов, и другие системы коллективного пользования. Остановимся на последнем применении. Пусть имеется 10 клиентов, каждый из которых формирует запросы к серверу через случайные интервалы времени, распределенные по экспоненциальному закону, со средним значением, например, в 10 сек. Причем, очередной запрос формируется только после получения ответа на предыдущий запрос. Среднее время обработки одного запроса в сервере пусть равно 2 сек. Модель описанной системы (без сегмента времени) приведена на рис. 16, где за единицу модельного времени принята 0,01 сек.

EXPDIS FUNCTION RN2,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85

.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

GENERATE,,,10

BACK ADVANCE 1000,FN$EXPDIS

QUEUE SYSTEM

SEIZE SERVER

ADVANCE 200,FN$EXPDIS

RELEASE SERVER

DEPART SYSTEM

TRANSFER,BACK

Рис. 16. Модель системы вида М/М/1/∞/L.

В этой модели блок GENERATE,,,10, где задан только операнд D, генерирует одновременно (в момент времени 1) 10 транзактов, имитируя приход 10 клиентов. Транзакты сразу попадают в блок ADVANCE (с именем BACK), в котором случайное время задержки одного транзакта имитирует время формирования (обдумывания) запроса одним клиентом.

После блока ADVANCE транзакты пытаются войти в устройство с именем SERVER, где задерживаются на соответствующее случайное время. После выхода из устройства каждый транзакт блоком TRANSFER,BACK безусловно направляется обратно в блок ADVANCE с именем BACK. Очевидно, такое перемещение транзактов в модели соответствует описанной схеме обработки запросов в сервере.

Если клиенты образуют неоднородную нагрузку, т.е. часть клиентов в системе формируют запросы с одними параметрами поступления и обработки, а оставшаяся часть – с другими, то для моделирования такой системы нужно составить два сегмента, аналогичные сегменту на рис. 16. При этом в каждом сегменте нужно задать соответствующие данному сегменту параметры: число клиентов, средние значения интервалов формирования и обработки запросов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: