Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка Волкова А.А. - рецензиров....doc
Скачиваний:
1
Добавлен:
03.12.2018
Размер:
953.86 Кб
Скачать

1.3 Имитационное моделирование смо в среде gpss World

Рассмотрим принципиальные особенности реализации имитационной вероятностной модели заданной СМО в среде GPSS World.

В заданной СМО интенсивность обслуживания в устройствах SA-SC зависит от интервала времени между поступлением заявок одного типа. Данную величину будем сохранять в ячейки. Так же потребуется ввести некоторое множество ячеек для накопления необходимой статистики. Характеристики сохраняемых ячеек приведены в таблице 5.

Таблица 5 – Сохраняемые ячейки программной реализации

Имя ячейки

Описание

Начальное значение

Mode

Переменная определяющая режим работы СМО.

0

Val1

Время поступления очередной заявки типа 1 в СМО.

0

Val2

Время поступления очередной заявки типа 2 в СМО.

0

Val3

Время поступления очередной заявки типа 3 в СМО.

0

Cnt

текущее кол-во заявок в СМО.

0

Cnt_A11

количество заявок типа 1 завершивших обслуживание в СМО с интенсивностью 1 в режиме 1 индивидуально

0

Cnt_A21

количество заявок типа 1 обслуженных с интенсивностью 2 в режиме 1.

0

Cnt_B11

количество заявок типа 2 обслуженных с интенсивностью 1 в режиме 1.

0

Cnt_B21

количество заявок типа 2 обслуженных с интенсивностью 2 в режиме 1.

0

Cnt_C11

количество заявок типа 3 обслуженных с интенсивностью 1 в режиме 1.

0

Cnt_C21

количество заявок типа 3 обслуженных с интенсивностью 2 в режиме 1.

0

Cnt_A12

количество заявок типа 1 обслуженных с интенсивностью 1 в режиме 2.

0

Cnt_A22

количество заявок типа 1 обслуженных с интенсивностью 2 в режиме 2.

0

Cnt_B12

количество заявок типа 2 обслуженных с интенсивностью 1 в режиме 2.

0

Cnt_B22

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

0

Cnt_C12

количество заявок типа 3 обслуженных с интенсивностью 1 в режиме 2.

0

Cnt_C22

количество заявок типа 3 обслуженных с интенсивностью 2 в режиме 2.

0

Cnt_All_A1

счетчик заявок типа 1 завершенных обслуживание в режиме 1

0

Cnt_All_A2

счетчик заявок типа 1 завершенных обслуживание в режиме 2

0

Cnt_All_B1

счетчик заявок типа 2 завершенных обслуживание в режиме 1

0

Cnt_All_B2

счетчик заявок типа 2 завершенных обслуживание в режиме 2

0

Cnt_All_C1

счетчик заявок типа 3 завершенных обслуживание в режиме 1

0

Cnt_All_C2

счетчик заявок типа 3 завершенных обслуживание в режиме 2

0

All_A

общее количество заявок типа 1.

0

All_B

общее количество заявок типа 2.

0

All_C

общее количество заявок типа 3.

0

Для организации пакетирования перед обработкой в устройстве обслуживания S1 была введена булева переменная BVAR, привязанная к коэффициенту использования устройства обслуживания S1.

Для накопления статистики работы СМО, а также расчета интенсивности обслуживания заявок в устройствах SA-SC будем использовать параметры заявок в качестве хранилищ некоторых величин:

  • интервал времени между последовательным поступлением заявок одного типа;

  • собственному типу заявки (пакет или одиночная заявка).

Характеристика используемых параметров приведена в таблице 6.

Таблица 6 – Сохраняемые параметры заявок

Параметр

Описание сохраняемого значения

В

Интервал времени между поступлениями двух заявок одного типа.

С

Тип заявки. 1- тип А, 2 – тип В, 3 – тип С, 4 – пакет.

10

Момент времени, когда заявка поступает в СМО.

20

Момент времени, когда заявка завершает обслуживание в СМО.

30

Время пребывания заявки в СМО.

Кроме этого, в программной реализации имитационной СМО имеются следующие особенности:

  • для сбора данных о времени пребывания заявок и пакетов в СМО использованы статистические таблицы с именами GIST_P, GIST_Z1, GIST_Z2 и GIST_Z3;

  • для сбора данных о среднем времени пребывания и среднеквадратическом отклонении времени пребывания заявок и пакетов в очередях использованы статистические таблицы с именами GIST_QSA, GIST_QSB, GIST_QSC, GIST_S1 и GIST_S2;

  • в устройствах SA-SC время обработки заявки генерируется для каждой заявки в отдельности в зависимости от заданного условия;

  • для реализации моделирования процесса обработки заявок в данной СМО

было выбрано число обслуживаемых заявок равное 10000.

Листинг программной реализации имитационной вероятностной модели СМО имеет следующий вид.

******** БЛОК ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ ********

INITIAL X$Mode,1 ;переменная определяющая режим работы СМО

INITIAL X$Val1,0 ;время поступления очередной заявки типа 1 в СМО

INITIAL X$Val2,0 ;время поступления очередной заявки типа 2 в СМО

INITIAL X$Val3,0 ;время поступления очередной заявки типа 3 в СМО

INITIAL X$Cnt,0 ;текущее кол-во заявок в СМО

INITIAL X$Cnt_A11,0 ;количество заявок типа 1 обслуженных с

;интенсивностью 1 в режиме 1

INITIAL X$Cnt_A21,0 ;количество заявок типа 1 обслуженных с

;интенсивностью 2 в режиме 1

INITIAL X$Cnt_B11,0 ;количество заявок типа 2 обслуженных с

;интенсивностью 1 в режиме 1

INITIAL X$Cnt_B21,0 ;количество заявок типа 2 обслуженных с

;интенсивностью 2 в режиме 1

INITIAL X$Cnt_C11,0 ;количество заявок типа 3 обслуженных с

;интенсивностью 1 в режиме 1

INITIAL X$Cnt_C21,0 ;количество заявок типа 3 обслуженных с

;интенсивностью 2 в режиме 1

INITIAL X$Cnt_A12,0 ;количество заявок типа 1 обслуженных с

;интенсивностью 1 в режиме 2

INITIAL X$Cnt_A22,0 ;количество заявок типа 1 обслуженных с

;интенсивностью 2 в режиме 2

INITIAL X$Cnt_B12,0 ;количество заявок типа 2 обслуженных с

;интенсивностью 1 в режиме 2

INITIAL X$Cnt_B22,0 ;количество заявок типа 2 обслуженных с

;интенсивностью 2 в режиме 2

INITIAL X$Cnt_C12,0 ;количество заявок типа 3 обслуженных с

;интенсивностью 1 в режиме 2

INITIAL X$Cnt_C22,0 ;количество заявок типа 3 обслуженных с

;интенсивностью 2 в режиме 2

INITIAL X$Cnt_All_A1,0 ;счетчик заявок типа 1 завершенных обслуживание в

;режиме 1

INITIAL X$Cnt_All_A2,0 ;счетчик заявок типа 1 завершенных обслуживание в

;режиме 2

INITIAL X$Cnt_All_B1,0 ;счетчик заявок типа 2 завершенных обслуживание в

;режиме 1

INITIAL X$Cnt_All_B2,0 ;счетчик заявок типа 2 завершенных обслуживание в

;режиме 2

INITIAL X$Cnt_All_C1,0 ;счетчик заявок типа 3 завершенных обслуживание в

;режиме 1

INITIAL X$Cnt_All_C2,0 ;счетчик заявок типа 3 завершенных обслуживание в

;режиме 2

INITIAL X$All_A,0 ;общее количество заявок типа 1

INITIAL X$All_B,0 ;общее количество заявок типа 2

INITIAL X$All_C,0 ;общее количество заявок типа 3

BVAR BVARIABLE FR$U_S1>=900 ;булевая переменная. равна 1 при коэф.

;использования устройства U_S1 >=0.9

******** БЛОК ИНИЦИАЛИЗАЦИИ ГИСТОГРАММ ********

GIST_P TABLE P30,0,0.1,40 ;гистограмма среднего времени пребывания пакетов

GIST_Z1 TABLE P30,0,2,70 ;гистограмма среднего времени пребывания заявок

;типа 1

GIST_Z2 TABLE P30,0,2,70 ;гистограмма среднего времени пребывания заявок

;типа 2

GIST_Z3 TABLE P30,0,2,70 ;гистограмма среднего времени пребывания заявок

;типа 3

GIST_QSA QTABLE QSA,0,0.5,30 ;гистограмма времени пребывания заявок и пакетов в

;очереди QSA

GIST_QSB QTABLE QSB,0,0.5,30 ;гистограмма времени пребывания заявок и пакетов в

;очереди QSB

GIST_QSC QTABLE QSC,0,0.5,30 ;гистограмма времени пребывания заявок и пакетов в

;очереди QSC

GIST_QS1 QTABLE Q_S1,0,1,30 ;гистограмма времени пребывания заявок и пакетов в

;очереди QS1

GIST_QS2 QTABLE Q_S2,0,0.1,20 ;гистограмма времени пребывания заявок и пакетов в

;очереди QS2

******** БЛОК ИНИЦИАЛИЗАЦИИ ФУНКЦИИ ********

tipe1 FUNCTION RN1,D3 ;функция определения типа заявок в режиме 1

0.58,To_SA/0.81,To_SB/1,To_SC

tipe2 FUNCTION RN1,D3 ;функция определения типа заявок в режиме 2

0.25,To_SA/0.75,To_SB/1,To_SC

******** БЛОК ФОРМИРОВАНИЯ РЕЖИМА РАБОТЫ СМО ********

GENERATE 50 ;генерация заявки-инициатора смены режима

TEST E X$Mode,1,To_Mode1 ;проверка текущего режима

SAVEVALUE Mode,2 ;смена режима с 1 на 2

TERMINATE ;выход заявки-инициатора из СМО

To_Mode1 SAVEVALUE Mode,1 ;смена режима с 2 на 1

TERMINATE ;выход заявки-инициатора из СМО

******** НАЧАЛО МОДЕЛИРОВАНИЯ *********

GENERATE(Exponential(1,0,0.3125)) ;генерация заявки

MARK 10 ;фиксация времени поступления заявки

ADOPT 1 ;все в 1 семейство

SAVEVALUE Cnt+,1 ;увеличение счетчика кол-ва заявок в СМО

TEST E X$Mode,1,To_Mode2 ;проверка режима работы СМО

TRANSFER ,FN$tipe1 ;переход заявки в устройство согласно типу заявки

To_Mode2 TRANSFER ,FN$tipe2 ;переход заявки в устройство согласно типу заявки

******** УСТРОЙСТВО SA ********

To_SA SAVEVALUE All_A+,1 ;увеличение счетчика заявок типа 1

ASSIGN C,1 ;фиксация типа заявки в параметр С

PLUS (P10-X$Val1),B ;вычисление интервала времени между поступление 2-х

;заявок 1 типа

SAVEVALUE Val1,P10 ;фиксация времени поступления текущей заявки в СМО

QUEUE QSA ;поступление в очередь устройства SA

SEIZE U_SA ;занимаем устройство SA

DEPART QSA ;извлечение заявки из очереди устройства SA

TEST GE P$B,1,To_SA2 ;проверка разницы времени поступления последних 2-х

;заявок

ADVANCE (Exponential(1,0,1/(1.25/(P$B-1)))) ;обработка с интенсивностью 2

TEST E X$Mode,1,Temp_1 ;проверка режима работы СМО

SAVEVALUE Cnt_A21+,1 ;увеличения счетчика обработанных заявок типа 1 с

;интенсивностью 2 в режиме 1

TRANSFER, To_RSA ;переход к выходу из блока

Temp_1 SAVEVALUE Cnt_A22+,1 ;увеличения счетчика обработанных заявок типа 1 с

;интенсивностью 2 в режиме 2

TRANSFER ,To_RSA ;переход к выходу из блока

To_SA2 ADVANCE (Exponential(1,0,1/(1.25/P$B))) ;обработка с интенсивностью 1

TEST E X$Mode,1,Temp_2 ;проверка режима работы СМО

SAVEVALUE Cnt_A11+,1 ;увеличения счетчика обработанных заявок типа 1 с

;интенсивностью 1 в режиме 1

TRANSFER ,To_RSA ;переход к выходу из блока

Temp_2 SAVEVALUE Cnt_A12+,1 ;увеличения счетчика обработанных заявок типа 1 с

;интенсивностью 1 в режиме 2

To_RSA RELEASE U_SA ;освобождение устройства SA

TRANSFER ,To_S1 ;переход к устройству S1

******** УСТРОЙСТВО SB ********

To_SB SAVEVALUE All_B+,1 ;увеличение счетчика заявок типа 2

ASSIGN C,2 ;фиксация типа заявки в параметр С

PLUS (P10-X$Val2),B ;вычисление интервала времени между поступление 2-х

;заявок 2 типа

SAVEVALUE Val2,P10 ;фиксация времени поступления текущей заявки в СМО

QUEUE QSB ;поступление в очередь устройства SB

SEIZE U_SB ;занимаем устройство SB

DEPART QSB ;извлечение заявки из очереди устройства SB

TEST GE P$B,1,To_SB2 ;проверка разницы времени поступления последних 2-х

;заявок

ADVANCE (Exponential(1,0,1/(1.25/(P$B-1)))) ;обработка с интенсивностью 2

TEST E X$Mode,1,Temp_3 ;проверка режима работы СМО

SAVEVALUE Cnt_B21+,1 ;увеличения счетчика обработанных заявок типа 2 с

;интенсивностью 2 в режиме 1

TRANSFER ,To_RSB ;переход к выходу из блока

Temp_3 SAVEVALUE Cnt_B22+,1 ;увеличения счетчика обработанных заявок типа 2 с

;интенсивностью 2 в режиме 2

TRANSFER ,To_RSB ;переход к выходу из блока

To_SB2 ADVANCE (Exponential(1,0,1/(1.25/P$B))) ;обработка с интенсивностью 1

TEST E X$Mode,1,Temp_4 ;проверка режима работы СМО

SAVEVALUE Cnt_B11+,1 ;увеличения счетчика обработанных заявок типа 2 с

;интенсивностью 1 в режиме 1

TRANSFER ,To_RSB ;переход к выходу из блока

Temp_4 SAVEVALUE Cnt_B12+,1 ;увеличения счетчика обработанных заявок типа 2 с

;интенсивностью 1 в режиме 2

To_RSB RELEASE U_SB ;освобождение устройства SB

TRANSFER ,To_S1 ;переход к устройству S1

******** УСТРОЙСТВО SC ********

To_SC SAVEVALUE All_C+,1 ;увеличение счетчика заявок типа 3

ASSIGN C,3 ;фиксация типа заявки в параметр С

PLUS (P10-X$Val3),B ;вычисление интервала времени между поступление 2-х

;заявок 3 типа

SAVEVALUE Val3,P10 ;фиксация времени поступления текущей заявки в СМО

QUEUE QSC ;поступление в очередь устройства SC

SEIZE U_SC ;занимаем устройство SC

DEPART QSC ;извлечение заявки из очереди устройства SC

TEST GE P$B,1,To_SC2 ;проверка разницы времени поступления последних 2-х

;заявок

ADVANCE (Exponential(1,0,1/(1.25/(P$B-1)))) ;обработка с интенсивностью 2

TEST E X$Mode,1,Temp_5 ;проверка режима работы СМО

SAVEVALUE Cnt_C21+,1 ;увеличения счетчика обработанных заявок типа 3 с

;интенсивностью 2 в режиме 1

TRANSFER ,To_RSC ;переход к выходу из блока

Temp_5 SAVEVALUE Cnt_C22+,1 ;увеличения счетчика обработанных заявок типа 3 с

;интенсивностью 2 в режиме 2

TRANSFER ,To_RSC ;переход к выходу из блока

To_SC2 ADVANCE (Exponential(1,0,1/(1.25/P$B))) ;обработка с интенсивностью 1

TEST E X$Mode,1,Temp_6 ;проверка режима работы СМО

SAVEVALUE Cnt_C11+,1 ;увеличения счетчика обработанных заявок типа 3 с

;интенсивностью 1 в режиме 1

TRANSFER ,To_RSC ;переход к выходу из блока

Temp_6 SAVEVALUE Cnt_C12+,1 ;увеличения счетчика обработанных заявок типа 3 с

;интенсивностью 1 в режиме 2

To_RSC RELEASE U_SC ;освобождение устройства SC

******** УСТРОЙСТВО S1 ********

To_S1 TEST E BV$BVAR,1,To_S12 ;проверка коэф. использования устройства S1

ASSEMBLE 2 ;формирование пакета из 2-х заявок

ASSIGN C,4 ;установка типа заявки - пакет

To_S12 QUEUE Q_S1 ;поступление в очередь устройства S1

SEIZE U_S1 ;занимаем устройство S1

DEPART Q_S1 ;извлечение заявки из очереди устройства S1

ADVANCE(Gamma(1,0,0.1724,2)) ;обслуживание

RELEASE U_S1 ;освобождение устройства S1

******** УСТРОЙСТВО S2 ********

To_S2 QUEUE Q_S2 ;поступление в очередь устройства S2

SEIZE U_S2 ;занимаем устройство S2

DEPART Q_S2 ;извлечение заявки из очереди устройства S2

ADVANCE(Exponential(1,0,1/(X$Cnt/0.45))) ;обслуживание

RELEASE U_S2 ;освобождение устройства S2

******** ЗАВЕРШЕНИЕ ОБРАБОТКИ ЗАЯВКИ ********

To_end TEST E X$Mode,1,To_FMode2 ;проверка режима работы входного потока

TEST E P$C,1,To_Test4 ;проверка типа заявки

SAVEVALUE Cnt_All_A1+,1 ;увеличение счетчика завершенных заявок типа 1

TRANSFER ,To_Test10 ;переход

To_Test4 TEST E P$C,2,To_Test5 ;проверка типа заявки

SAVEVALUE Cnt_All_B1+,1 ;увеличение счетчика завершенных заявок типа 2

TRANSFER ,To_Test10 ;переход

To_Test5 TEST E P$C,3,To_Test10 ;проверка типа заявки

SAVEVALUE Cnt_All_C1+,1 ;увеличение счетчика завершенных заявок типа 3

TRANSFER ,To_Test10 ;переход

To_FMode2 TEST E P$C,1,To_Test6 ;проверка типа заявки

SAVEVALUE Cnt_All_A2+,1 ;увеличение счетчика завершенных заявок типа 1

TRANSFER ,To_Test10 ;переход

To_Test6 TEST E P$C,2,To_Test7 ;проверка типа заявки

SAVEVALUE Cnt_All_B2+,1 ;увеличение счетчика завершенных заявок типа 2

TRANSFER ,To_Test10 ;переход

To_Test7 TEST E P$C,3,To_Test10 ;проверка типа заявки

SAVEVALUE Cnt_All_C2+,1 ;увеличение счетчика завершенных заявок типа 3

To_Test10 SAVEVALUE Cnt-,1 ;уменьшение счетчика текущих заявок в СМО

MARK 20 ;фиксация времени завершения обслуживания заявки

PLUS (P20-P10),30 ;вычисление времени пребывания заявки в СМО в

;параметр 30

TEST E P$C,1,To_Test2 ;проверка на тип заявки

TABULATE Gist_Z1 ;занесение значения времени пребывания заявки в

;гистограмму

TRANSFER ,To_exit ;переход в выходу из СМО

To_Test2 TEST E P$C,2,To_Test3 ;проверка на тип заявки

TABULATE Gist_Z2 ;занесение значения времени пребывания заявки в

;гистограмму

TRANSFER ,To_exit ;переход в выходу из СМО

To_Test3 TEST E P$C,3,To_Z ;проверка на тип заявки

TABULATE Gist_Z3 ;занесение значения времени пребывания заявки в

;гистограмму

TRANSFER ,To_exit ;переход в выходу из СМО

To_Z TABULATE Gist_P ;занесение значения времени пребывания пакета в

;гистограмму

To_exit TERMINATE 1 ;выход заявки из СМО

START 10000 ;задание числа прогонов

Результаты эксперимента по моделированию процесса обслуживания заявок в заданной СМО были получены в виде полного стандартного отчета GPSS World Simulation Report, приведенного ниже.