Моделирование систем

Моделирование многофазных систем массового обслуживания

Разбить на страницы
Показывать лекцию целиком

Теоретическая часть

Анализ многофазных систем массового обслуживания основан на теоретическом материале, взятом из [20].

Система массового обслуживания может представляться в виде много-фазной модели, когда каждое требование в ней последовательно обслуживается во всех фазах (приборах обслуживания). При этом если очереди перед каждой фазой не допускаются, то система будет называться системой с нулевой вместимостью блоков ожидания [20].

Работа двухфазной системы обслуживания состоит в следующем. Каждая фаза может быть занята на обслуживание либо свободна. Поскольку перед фазой очередь не допускается, то принимается, что первая фаза обслуживания заблокирована, если обслуживание требования в данной (первой) фазе завершено, а вторая фаза не готова к приему требования по той причине, что в ней не закончено обслуживание. Принимается также, что если первая фаза занята, то очередное входящее требование получает отказ. В системе могут быть следующие состояния: "фаза свободна", "фаза занята", "фаза заблокирована", которые обозначают как $$0$$, $$1$$, $$b$$ соответственно.

1. Двухфазная система обслуживания

Схема двухфазной системы обслуживания показана на рис. 1.1.

(рис 1.1) Модель двухфазной системы обслуживания

Если состояние первой фазы обозначить символом $$i$$, а состояние второй фазы — символом $$j$$, то множество состояний двухфазной системы обслуживания будет следующим:

$$\{(i, j)\} = \{(0,0), (1,0), (0,1), (1,1), (b,1)\}.$$

Примем, что входной поток требований имеет пуассоновское распределение, а обслуживание в фазах осуществляется по экспоненциальному вероятностному закону. Рассматривая вероятности переходов из одного состояния в другое во времени, можно получить следующие дифференциальные уравнения относительно вероятностей состояний $$p_{ij}(t)$$ двухфазной системы:

$$\frac{dp_{00}(t)}{dt}=-\lambda p_{00}(t)+\mu p_{01}(t)\\ \frac{dp_{01}(t)}{dt}=-(\mu+\lambda) p_{01}(t)+\mu p_{10}(t)+\mu p_{b1}(t)\\ \frac{dp_{10}(t)}{dt}=\lambda p_{00}(t)-\mu p_{10}(t)+\mu p_{11}(t)\\ \frac{dp_{11}(t)}{dt}=\lambda p_{01}(t)-2\mu p_{11}(t)\\ \frac{dp_{b1}(t)}{dt}=\mu p_{11}(t)-\mu p_{b1}(t)$$

Система (1.2) — это система однородных обыкновенных дифференциальных уравнений с постоянными коэффициентами. Ее можно представить в матричном виде:

$$\frac{dP(t)}{dt}=AP(t),$$

где:

$$P(t)$$ — вектор размера $$5\times 1$$ с элементами $$p_{00}(t)$$, $$p_{01}(t)$$, $$p_{10}(t)$$, $$p_{11}(t)$$, $$p_{b1}(t)$$ ;

$$A$$ — матрица коэффициентов размера $$5\times 5$$, которая имеет следующий вид:

$$A= \left[ \begin{array}{ccccc} -\lambda \mu 0 0 0 \\ 0 -(\mu+\lambda) \mu 0 \mu \\ \lambda 0 -\mu \mu 0 \\ 0 \lambda 0 -2\mu 0 \\ 0 0 0 \mu -\mu \\ \end{array} \right]$$

Для интегрирования системы (1.2) будем задавать естественные начальные условия, т. е. такие, когда в начальный момент времени, равный нулю, вероятность отсутствия требований в системе равна единице, а остальные вероятности в начальный момент времени равны нулю:

$$p_{00}(0)=1,\qquad p_{01}(0)=p_{10}(0)=p_{11}(0)=p_{b1}(0)=0$$

2. Трехфазная система обслуживания

В трехфазной системе каждая из фаз может быть свободной (символ $$0$$ ) либо занятой (символ $$1$$ ), а фазы 1 и 2 могут быть к тому же заблокированы (символ $$b$$ ). Если состояние первой фазы обозначить символом $$i$$, состояние второй фазы — символом $$j$$, а состояние третьей фазы — символом $$k$$, то возможные состояния трехфазной системы будут следующими:

$$\{(i,j,k)\}= \left\{ \begin{array}{cccccc} (0,0,0) (1,0,0) (0,1,0) (0,0,1) (1,0,1) (1,1,1) \\ (1,1,0) (b,1,0) (1,b,1) (b,b,1) (b,1,1) (0,b,1) \end{array} \right\}$$

В соответствии с возможными состояниями (1.4) трехфазной системы можно получить следующую систему дифференциальных уравнений 13-го порядка относительно вероятностей состояний $$p_{ijk}(t)$$:

$$\frac{dp_{000}(t)}{dt}=-\lambda p_{000}(t)+\mu p_{001}(t),\\ \frac{dp_{100}(t)}{dt}=\lambda p_{000}(t)-\mu p_{100}(t)+\mu p_{101}(t),\\ \frac{dp_{010}(t)}{dt}=\mu p_{100}(t)-(\lambda+\mu) p_{010}(t)+\mu p_{011}(t),\\ \frac{dp_{001}(t)}{dt}=\mu p_{010}(t)-(\lambda+\mu) p_{001}(t)+\mu p_{0b1}(t),\\ \frac{dp_{101}(t)}{dt}=\lambda p_{001}(t)-2\mu p_{101}(t)+\mu p_{110}(t)+\mu p_{1b1}(t),\\ \frac{dp_{011}(t)}{dt}=\mu p_{101}(t)-(\lambda+2\mu) p_{011}(t)+\mu p_{b10}(t)+\mu p_{bb1}(t),\\ \frac{dp_{111}(t)}{dt}=\lambda p_{011}(t)-3\mu p_{111}(t),\\ \frac{dp_{110}(t)}{dt}=\lambda p_{010}(t)+\mu p_{111}(t)-2\mu p_{110}(t),\\ \frac{dp_{b10}(t)}{dt}=\mu p_{110}(t)-\mu p_{b10}(t)+\mu p_{b11}(t),\\ \frac{dp_{1b1}(t)}{dt}=\mu p_{111}(t)-2\mu p_{1b1}(t)+\lambda p_{0b1}(t),\\ \frac{dp_{bb1}(t)}{dt}=\mu p_{1b1}(t)-\mu p_{bb1}(t)+\mu p_{b11}(t),\\ \frac{dp_{b11}(t)}{dt}=\mu p_{111}(t)-2\mu p_{b11}(t),\\ \frac{dp_{0b1}(t)}{dt}=\mu p_{011}(t)-(\lambda+\mu) p_{0b1}(t).\\$$

Система (1.5) — это система обыкновенных однородных дифференциальных уравнений с постоянными коэффициентами. Ее также можно представить в матричном виде:

$$\frac{dP(t)}{dt}=AP(t),$$

где:

$$P(t)$$ — вектор состояний системы 13-го порядка;

$$А$$ — матрица постоянных коэффициентов размера $$13\times 13$$.

Для решения системы (1.5) будем использовать естественные начальные условия, т. е.

$$p_{000}(0)=1,\qquad\forall p_{ijk}(0)=0,\qquad i=0,1,b,\qquad j=0,1,b,\qquad k=0,1,b.$$

Отметим также, что система линейных дифференциальных уравнений будет иметь нетривиальное решение, если ее характеристический определитель будет равен нулю. В матричном виде получаем так называемое характеристическое уравнение

$$det[sE-A]=0,$$

где:

$$Е$$ — единичная матрица того же размера, что и матрица коэффициентов $$А$$ ;

$$s$$ — скалярная в общем случае комплексная переменная, относительно которой решается характеристическое уравнение.

Если действительная часть корней характеристического уравнения (1.7) будет отрицательной, то решение системы дифференциальных уравнений (1.5) с начальными условиями (1.6) будет устойчивым, т. е. будет стремиться к установившимся значениям.

Таким образом, система дифференциальных уравнений (1.5) с начальными условиями (1.6) представляет собой математическую модель трехфазной системы массового обслуживания с нулевой вместимостью блоков ожидания.

Схема трехфазной системы обслуживания показана на рис. 1.2.

(рис 1.2) Модель трехфазной системы обслуживания

Практическая часть

Рассмотрим моделирование двухфазной системы массового обслуживания в программных средах MATLAB и GPSS/PC. Сначала выполним моделирование двухфазной системы в MATLAB. Примем, что параметр входного простейшего потока равен $$1.7$$, а интенсивность обслуживания каждой фазы равна $$0.67$$, т. е. $$\lambda = 1.7$$, $$\mu = 0.67$$. В основе моделирования стоит задача интегрирования системы дифференциальных уравнений вида (1.2) на отрезке времени, когда вероятности состояний примут свои установившиеся значения. По установившимся значениям вероятностей рассчитываются операционные характеристики системы. Входными данными программы, таким образом, будут являться интенсивности входного потока и обслуживания, а также матрица коэффициентов системы дифференциальных уравнений.

1. Пример моделирования в системе matlab

Программа моделирования оформлена в виде $$М$$ -функции без аргументов и без возвращаемого значения. Это позволит в одном $$М$$ -файле использовать дополнительные $$М$$ -функции.

Программный код решения примера:

function twophase;
clc,close all
% ВХОДНЫЕ ДАННЫЕ
L = 1.7;
M = 0.67;
global A
A = [-L, M, 0, 0, 0;
    0, -(L+M), M, 0, M;
    L, 0, -M, M, 0;
    0, L, 0, -2*M, 0;
    0, 0, 0, M, -M];

% ИНТЕРВАЛ ИНТЕГРИРОВАНИЯ
T = [0, 20];
% НАЧАЛЬНЫЕ УСЛОВИЯ
P0 = [1;zeros(length(A)-1,1)];
% ВЫЗОВ РЕШАТЕЛЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
[t,P] = ode45(@faza,T,P0);

% ПОСТРОЕНИЕ ДИАГРАММ ВЕРОЯТНОСТЕЙ СОСТОЯНИЙ
figure(1);
line(t,P(:,1),'linew',2, 'color','r'),
line(t,P(:,2), 'marker','o','color', [0,102,102]/255),
line(t,P(:,3), 'lines','--','linew',2, 'color', 'k'),
line(t,P(:,4), 'lines','-.','linew',2, 'color', 'b'),
line(t,P(:,5), 'linestyle',':','linew',2, 'color','m'),

 
str='\bfВероятности состояний двухфазной системы обслуживания:';
 
title(sprintf('%s %s = %g; %s = %g',str,'\lambda',L,'\mu', M));
legend('P_0_0(t)','P_0_1(t)','P_1_0(t)','P_1_1(t)','P_b_1(t)');
xlabel('\bf -  -  -  -  -  -  t -  -  -  -  -  - ');
ylabel('\bf P(t)');
%%% ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ СИСТЕМЫ
% Ncp - СРЕДНЕЕ ЧИСЛО ТРЕБОВАНИЙ В СИСТЕМЕ
k =[0, 1, 2];
Pk = [P(end,1);P(end,2)+P(end,3);P(end,4)+P(end,5)];
Ncp = k*Pk;

fprintf('\n\t ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ ДВУХФАЗНОЙ СИСТЕ-МЫ:\n');
fprintf('\t Среднее число требований в системе: Ncp = %f\n',Ncp);

% Pf1 - ВЕРОЯТНОСТЬ НАЧАЛА ОБСЛУЖИВАНИЯ 
Pf1 = P(end,1)+P(end,2);
fprintf('\t Вероятность начала обслуживания: Pf1 = %f\n',Pf1);

% Pomk - ВЕРОЯТНОСТЬ ОТКАЗА В ОБСЛУЖИВАНИИ  
Pomk = 1-Pf1;
fprintf('\t Вероятность отказа: Pomk = %f\n',Pomk);

%  Q - ОТНОСИТЕЛЬНАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ 
Q = 1-Pomk;
fprintf('\t Относительная пропускная способность системы: Q = %f\n',Q);

% Lef - ЭФФЕКТИВНАЯ ЧАСТОТА ПОСТУПЛЕНИЯ ТРЕБОВАНИЙ В СИСТЕМУ
Lef = L*Pf1;
fprintf('\t Эффективная частота поступления требований в систему: Lef = %f\n',Lef);

% Ab - АБСОЛЮТНАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ 
Ab = Lef*Q;
fprintf('\t Абсолютная пропускная способность системы: Ab = %f\n',Ab)

% Ts - ПОЛНОЕ ВРЕМЯ ПРЕБЫВАНИЯ ТРЕБОВАНИЙ В СИСТЕМЕ  
Ts = Ncp/Lef;
fprintf('\t Полное время пребывания требования в системе: Ts = %f\n',Ts);
% Tcp1 - СРЕДНЕЕ ВРЕМЯ ОБСЛУЖИВАНИЯ ОДНОГО ТРЕБОВАНИЯ
Tcp1 = 2*(1/M);
fprintf('\t Среднее время обслуживания требования в системе: Tcp = %f\n',Tcp1);
% Td - СРЕДНЕЕ ВРЕМЯ ЗАДЕРЖКИ 
Td = Ts - Tcp1;
fprintf('\t Среднее время задержки в обслуживании: Td = %f\n',Td);

% Финальные (стационарные) вероятности
fprintf('\n\t Финальные (стационарные) вероятности:\n');
k = 0;
for J = 1 : length(P0)
    if J == 1 | J == 2
fprintf('\t P0%d = %f\n ',J-1,  P(end, J));
    
    elseif J > 2  J < length(P0)
fprintf('\t P1%d = %f\n ', k,  P(end, J));
k = k + 1;
   
    else
fprintf('\t Pb1 = %f\n', P(end,end));
   end
end
 

% М-функция описания правых частей дифференциальных уравнений
function f = faza(t,P)
global A
f = A*P;

Результаты моделирования по определению операционных характеристик

ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ ДВУХФАЗНОЙ СИСТЕМЫ
	 Среднее число требований в системе: Ncp = 1.345670
	 Вероятность начала обслуживания: Pf1 = 0.224859
	 Вероятность отказа: Pomk = 0.775141
	 Относительная пропускная способность системы: Q = 0.224859
	 Эффективная частота поступления требований в систему: Lef = 0.382260
	 Абсолютная пропускная способность системы: Ab = 0.085955
	 Полное время пребывания требования в системе: Ts = 3.520298
	 Среднее время обслуживания требования в системе: Tcp = 2.985075
	 Среднее время задержки в обслуживании: Td = 0.535224
	 
          Финальные (стационарные) вероятности:
	 P00 = 0.063570
 	 P01 = 0.161289
 	 P10 = 0.365900
 	 P11 = 0.204626
 	 Pb1 = 0.204615

Переходные процессы вероятностей состояний показаны на рис. 1.3.

(рис 1.3) Переходные процессы вероятностей состояний в двухфазной системе

Задание 1

  • Вычислите по формуле Литтла среднее количество требований в системе.
  • Проверьте нормировочное условие для вероятностей состояний системы в трех точках временного интервала интегрирования.
  • В соответствии с номером компьютера, на котором выполняется лабораторная работа (1, 2, 3 и т. д.), увеличьте интенсивность входного потока на этот номер. Выполните два предыдущих пункта задания.
  • Результаты расчета операционных характеристик запишите в текстовый файл с именем compX.txt, где $$Х$$ — номер компьютера, на котором выполняется лабораторная работа.
  • Напишите программу с различными интенсивностями обслуживания в фазах обслуживания. Рассчитайте также операционные характеристики двухфазной системы обслуживания.
  • 2. Пример моделирования в системе GPSS/PC

    Для моделирования в системе GPSS/PC необходимо подготовить данные по функциям распределения случайных величин для имитации пуассоновского входного потока и экспоненциального обслуживания. В обоих случаях используется экспоненциальное распределение, поскольку интервалы времени между требованиями в пуассоновском потоке распределены по экспоненциальному закону. В рассматриваемом случае параметры пуассоновского потока и экспоненциального обслуживания заданы и равны соответственно $$\lambda = 1.7$$, $$\mu = 0.67$$.

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

    clear all,clc
    L = 1.7; %% Интенсивность входного потока
    M = 0.67; %% Интенсивность обслуживания
    %% Функции экспоненциального распределения
    x = 0 : 0.2 : 20;
    F = 1 - exp(-L*x); 
    F2 = 1 - exp(-M*x);
    %%% Запись в текстовый файл input.txt
    fid = fopen('input.txt', 'w');
    %% Для блока generate
        fprintf(fid, 'puas  function RN1,C50\r\n');
    for J = 1 : length(x)
        if J <= 50
            if mod(J, 5) 
    fprintf(fid, '%g,%g/', F(J), x(J));    
            
            else
    fprintf(fid, '\r\n');  
    fprintf(fid, '%g,%g/', F(J), x(J));    
             end
        end
    end
    fprintf(fid, '\r\n;-----------------------------------\r\n');
    %% Для блоков advance
    fprintf(fid, '\r\nexpM  function RN2,C50\r\n');
    for J = 1 : length(x)
        if J <= 50
            if mod(J, 5) 
    fprintf(fid, '%g,%g/', F2(J), x(J));    
            
            else
    fprintf(fid, '\r\n');  
    fprintf(fid, '%g,%g/', F2(J), x(J));  
             end
        end
    end
    
    fclose(fid);

    В программе функция $$mod()$$ применена для формирования заданного количества массива строк с данными для выбора случайных чисел, распределенных по экспоненциальному закону. Сформированные массивы будут представлены в GPSS-программе.

    GPSS-программа приводится ниже. В ней задано условие обработки 500 требований.

    Программный код решения примера в системе GPSS/PC:

    simulate
    
    puas  function RN5,C50
    0,0/0.28823,0.2/0.493383,0.4/0.639405,0.6/
    0.743339,0.8/0.817316,1/0.869971,1.2/0.907449,1.4/0.934125,1.6/
    0.953112,1.8/0.966627,2/0.976246,2.2/0.983093,2.4/0.987966,2.6/
    0.991434,2.8/0.993903,3/0.995661,3.2/0.996911,3.4/0.997802,3.6/
    0.998435,3.8/0.998886,4/0.999207,4.2/0.999436,4.4/0.999598,4.6/
    0.999714,4.8/0.999797,5/0.999855,5.2/0.999897,5.4/0.999927,5.6/
    0.999948,5.8/0.999963,6/0.999974,6.2/0.999981,6.4/0.999987,6.6/
    0.99999,6.8/0.999993,7/0.999995,7.2/0.999997,7.4/0.999998,7.6/
    0.999998,7.8/0.999999,8/0.999999,8.2/0.999999,8.4/1,8.6/
    1,8.8/1,9/1,9.2/1,9.4/1,9.6/
    1,9.8/
    ;------------------------------
    expM  function RN6,C50
    0,0/0.12541,0.2/0.235092,0.4/0.331019,0.6/
    0.414916,0.8/0.488291,1/0.552465,1.2/0.60859,1.4/0.657677,1.6/
    0.700608,1.8/0.738154,2/0.770992,2.2/0.799712,2.4/0.82483,2.6/
    0.846798,2.8/0.866011,3/0.882815,3.2/0.897511,3.4/0.910364,3.6/
    0.921605,3.8/0.931437,4/0.940035,4.2/0.947556,4.4/0.954133,4.6/
    0.959885,4.8/0.964916,5/0.969316,5.2/0.973164,5.4/0.976529,5.6/
    0.979473,5.8/0.982047,6/0.984299,6.2/0.986268,6.4/0.98799,6.6/
    0.989496,6.8/0.990813,7/0.991965,7.2/0.992973,7.4/0.993854,7.6/
    0.994625,7.8/0.995299,8/0.995889,8.2/0.996404,8.4/0.996855,8.6/
    0.99725,8.8/0.997595,9/0.997896,9.2/0.99816,9.4/0.998391,9.6/
    0.998593,9.8/
    
    tab1 table m1,0,5,12
    tab2 table mp2,0,5,10
    
    ******** Basic Program *******
    5  generate fn$puas
    10  savevalue FULL+,1
    
    ;--- Probability P00 -----------
    15  test E f1,0,met1
    20  test E f2,0,met1
    25  savevalue P_00+,1
    
    ;--- Probability P01 -----------
    30 met1  test E f1,0,met2
    35  savevalue P_01+,1
    
    ;--- Probability P10 -----------
    40 met2  test E f2,0,met3;
    45  savevalue P_10+,1
    
    ;--- Probability P11+Pb1---------
    50 met3  test NE f1,0,met4
    55  test NE f2,0,met4
    60  test NE q2,0,met4
    65  savevalue P_11b1+,1
    
    70 met4  assign 2,1
    75  gate NU 1,exitNOT
    
    ;---------- 1st phase ---------------
    80  seize 1
    85  advance fn$expM
    90  release 1
    95  mark 2
    ;---------- Delay ------------------
    100  queue 2
    105  gate NU 2
    110  depart 2
    120  tabulate tab2
    
    ;---------- 2nd phase ---------------
    125  seize 2
    130  advance fn$expM
    135  release 2
    ;------------------------------------
    
    140  tabulate tab1
    145  terminate 1
    
    150 exitNOT  savevalue exit0+,1 
    155   terminate
    
    start 500
    ;end

    Комментарии к программе

  • Введение таблицы $$tab1$$ с аргументом $$М1$$ (системный стандартный числовой атрибут) — временем пребывания в модели транзакта, обрабатываемого программой в данный момент, позволяет табулировать величину $$М1$$ и найти среднее значение времени пребывания транзакта в модели.
  • Введение таблицы $$tab2$$ с аргументом $$mp2$$ (стандартный числовой атрибут транзакта) — значением времени, равного разности относительного модельного времени и содержимого 2-го параметра текущего транзакта. Табулируется время пребывания транзакта в заблокированном состоянии. Отметка времени осуществляется блоком $$mark$$.
  • В программе использованы стандартные числовые атрибуты $$f1$$, $$f2$$, которые определяют состояния соответствующих устройств. Если устройство свободно, то величина стандартного числового атрибута равна 0, и 1 — во всех остальных случаях.
  • Результат выполнения программы система GPSS/PC оформляет в виде файла стандартного отчета, который имеет следующий вид:

    GPSS/PC Report file REPORT.GPS.  (V 2, # 37349)  01-08-2010 10:28:19   page 1
    
         START_TIME    END_TIME  BLOCKS    FACILITIES  STORAGES   FREE_MEMORY
                0          675     30           2          0        135296
    
     LINE       LOC          BLOCK_TYPE       ENTRY_COUNT   CURRENT_COUNT   RETRY
      5          1            GENERATE             3092              0         0
      10         2            SAVEVALUE            3092              0         0
      15         3            TEST                 3092              0         0
      20         4            TEST                  501              0         0
      25         5            SAVEVALUE             159              0         0
      30        MET1          TEST                 3092              0         0
      35         7            SAVEVALUE             501              0         0
      40        MET2          TEST                 3092              0         0
      45         9            SAVEVALUE             982              0         0
      50        MET3          TEST                 3092              0         0
      55         11           TEST                 2591              0         0
      60         12           TEST                 1768              0         0
      65         13           SAVEVALUE            1453              0         0
      70        MET4          ASSIGN               3092              0         0
      75         15           GATE                 3092              0         0
      80         16           SEIZE                 501              0         0
      85         17           ADVANCE               501              1         0
      90         18           RELEASE               500              0         0
      95         19           MARK                  500              0         0
      100        20           QUEUE                 500              0         0
      105        21           GATE                  500              0         0
      110        22           DEPART                500              0         0
      120        23           TABULATE              500              0         0
      125        24           SEIZE                 500              0         0
      130        25           ADVANCE               500              0         0
      135        26           RELEASE               500              0         0
      140        27           TABULATE              500              0         0
      145        28           TERMINATE             500              0         0
      150       EXITNOT       SAVEVALUE            2591              0         0
      155        30           TERMINATE            2591              0         0
    
    
    FACILITY   ENTRIES  UTIL.   AVE._TIME AVAILABLE  OWNER PEND INTER RETRY DELAY
      1           501  0.800        1.08      1      3090   0     0     0     0
      2           500  0.740        1.00      1         0   0     0     0     0
    
    
    QUEUE        MAX  CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME  AVE.(-0) RETRY
      2           19     0     500       207     2.95        3.98      6.79    0
    
    TABLE            MEAN      STD.DEV. RETRY  RANGE           FREQUENCY  CUM.%
     TAB1             6.06        5.22    0 
                                              -         0          50      10.00
                                            0 -         5         233      56.60
                                            5 -        10         120      80.60
                                           10 -        15          67      94.00
                                           15 -        20          24      98.80
                                           20 -        25           6     100.00
     
    TAB2             3.98        5.03    0 
                                              -         0         207      41.40
                                            0 -         5         137      68.80
                                            5 -        10          97      88.20
                                           10 -        15          40      96.20
                                           15 -        20          18      99.80
                                           20 -        25           1     100.00
    
    XACT_GROUP         GROUP_SIZE       RETRY
     POSITION                  0           0
    
    GPSS/PC Report file REPORT.GPS.  (V 2, # 37349)  01-08-2010 10:28:19   page 2
    
    SAVEVALUE                           VALUE        RETRY
     FULL                              +3092            0
     P_00                               +159            0
     P_01                               +501            0
     P_10                               +982            0
     P_11B1                            +1453            0
     EXIT0                             +2591            0

    Расчет операционных характеристик двухфазной системы по файлу стандартного отчета будем на окончании помечать буквой $$g$$.

    Расчет вероятности отказа в обслуживании определим как отношение числа требований, получивших отказ (число 2591 в сохраняемой ячейке $$EXIT0$$ ), к общему числу (число 3092 в сохраняемой ячейке $$FULL$$ ):

    $$Pomkg = 2591/3092 = 0.838$$.

    Относительная пропускная способность и вероятность того, что вновь поступившее требование будет принято на обслуживание 1-й фазой, равны между собой и определяются как противоположная вероятность отказа в обслуживании, т. е.

    $$Qg = Pf1g = 1 – Pomkg = 1 – 0.838 = 0.162$$.

    Расчет эффективной частоты поступления требований в систему:

    $$Lefg = \lambda*Pf1g = 1.7*0.162 = 0.228.$$

    Абсолютная пропускная способность двухфазной системы:

    $$Abg = Lefg*Qg = 0.228*0.162 = 0.037$$.

    Полное время пребывания требования в системе определяется как среднее значение таблицы с именем $$tab1$$:

    $$Tsg = 6.06$$.

    Среднее время блокировки 1-й фазы определяется как среднее значение таблицы с именем $$tab2$$:

    $$Tdg = 3.98$$.

    Среднее время обработки одного требования в двухфазной системе можно определить двумя путями: как сумму значений полей $$AVE._TIME$$ для устройств 1 и 2 ( $$FACILITY$$ ) и как разность между $$Tsg$$ и $$Tdg$$:

    $$Tcpg = 1.08 + 1.00 = 2.08, (6.06 – 3.98 = 2.08)$$.

    Среднее число требований в двухфазной системе определим по формуле Литтла:

    $$Ncpg = Lefg*Tsg = 0.228*6.06 = 1.382$$.

    Финальные (стационарные) вероятности определим как частное от деления числа требований, отвечающим заданным условиям (успешное событие), к общему числу требований, поступивших в систему. Для этого в программе были созданы ячейки сохраняемых величин: для вероятности $$Р00$$ — ячейка $$Р_00$$, для вероятности $$Р01$$ — ячейка $$Р_01$$, для вероятности $$Р10$$ — ячейка $$Р_10$$, для суммы вероятностей $$Р11+Рb1$$ (поскольку они равны между собой) — ячейка $$P11b1$$. В соответствии с результатами, приведенными в файле стандартного отчета, получим

    $$P00 = 159/3092 = 0.0514$$ ;

    $$P01 = 501/3092 = 0.162$$ ;

    $$P10 = 982/3092 = 0.318$$ ;

    $$P11 + Pb1 = 1453/3092 = 0.4699$$.

    Проведем контрольную проверку. Для этого сложим вероятности (которые являются несовместными):

    $$0.0514 + 0.162 + 0.318 + 0.4699 = 1.0013$$.

    Поскольку полученный результат практически равен единице, можно считать, что расчет вероятностей произведен успешно.

    Задание 2

  • Выполните прогон программы с датчиками случайных чисел $$RN$$ в соответствии с номером компьютера, за которым выполняется лабораторная работа, т. е. $$RN1$$, $$RN2$$ и т. д. Сравните полученные операционные характеристики с соответствующими характеристиками, определенными при моделировании двухфазной системы в MATLAB.
  • Видоизмените программу так, чтобы можно было построить функцию распределения времени блокировки 1-й фазы.
  • Напишите программу с различными интенсивностями обслуживания в фазах обслуживания. Рассчитайте также операционные характеристики двухфазной системы обслуживания. Сравните с операционными характеристиками, полученными при моделировании в системе MATLAB.
  • Смоделируйте в MATLAB и в GPSS/PC (GPSS World) трехфазную систему обслуживания и рассчитайте операционные характеристики по параметрам примера для двухфазной системы, т. е. $$\lambda = 1.7$$, $$\mu = 0.67$$.
  • Контрольные вопросы

  • Каким видом дифференциальных уравнений описывается многофазная система массового обслуживания?
  • Что называется интенсивностью входного потока требований?
  • Что называется интенсивностью обслуживания многофазной системы?
  • Что называется простейшим потоком требований?
  • Что называется функцией распределения случайной величины?
  • Какова функциональная связь между функцией распределения случайной непрерывной величины и ее плотностью?
  • Могут ли быть многофазные системы с ожиданием? Если могут, то как будет выглядеть схема моделирования многофазной системы с ожиданием?
  • Какие ограничения накладываются на численные значения интенсивности входного потока требований и интенсивности обслуживания в многофазной системе при ее моделировании?
  • Сколько вы знаете аналогов формулы Литтла? Приведите известные вам формулы.
  • Страницы:

    Теоретическая часть

    Анализ многофазных систем массового обслуживания основан на теоретическом материале, взятом из [20].

    Система массового обслуживания может представляться в виде много-фазной модели, когда каждое требование в ней последовательно обслуживается во всех фазах (приборах обслуживания). При этом если очереди перед каждой фазой не допускаются, то система будет называться системой с нулевой вместимостью блоков ожидания [20].

    Работа двухфазной системы обслуживания состоит в следующем. Каждая фаза может быть занята на обслуживание либо свободна. Поскольку перед фазой очередь не допускается, то принимается, что первая фаза обслуживания заблокирована, если обслуживание требования в данной (первой) фазе завершено, а вторая фаза не готова к приему требования по той причине, что в ней не закончено обслуживание. Принимается также, что если первая фаза занята, то очередное входящее требование получает отказ. В системе могут быть следующие состояния: "фаза свободна", "фаза занята", "фаза заблокирована", которые обозначают как $$0$$, $$1$$, $$b$$ соответственно.

    1. Двухфазная система обслуживания

    Схема двухфазной системы обслуживания показана на рис. 1.1.

    (рис 1.1) Модель двухфазной системы обслуживания

    Если состояние первой фазы обозначить символом $$i$$, а состояние второй фазы — символом $$j$$, то множество состояний двухфазной системы обслуживания будет следующим:

    $$\{(i, j)\} = \{(0,0), (1,0), (0,1), (1,1), (b,1)\}.$$

    Примем, что входной поток требований имеет пуассоновское распределение, а обслуживание в фазах осуществляется по экспоненциальному вероятностному закону. Рассматривая вероятности переходов из одного состояния в другое во времени, можно получить следующие дифференциальные уравнения относительно вероятностей состояний $$p_{ij}(t)$$ двухфазной системы:

    $$\frac{dp_{00}(t)}{dt}=-\lambda p_{00}(t)+\mu p_{01}(t)\\ \frac{dp_{01}(t)}{dt}=-(\mu+\lambda) p_{01}(t)+\mu p_{10}(t)+\mu p_{b1}(t)\\ \frac{dp_{10}(t)}{dt}=\lambda p_{00}(t)-\mu p_{10}(t)+\mu p_{11}(t)\\ \frac{dp_{11}(t)}{dt}=\lambda p_{01}(t)-2\mu p_{11}(t)\\ \frac{dp_{b1}(t)}{dt}=\mu p_{11}(t)-\mu p_{b1}(t)$$

    Система (1.2) — это система однородных обыкновенных дифференциальных уравнений с постоянными коэффициентами. Ее можно представить в матричном виде:

    $$\frac{dP(t)}{dt}=AP(t),$$

    где:

    $$P(t)$$ — вектор размера $$5\times 1$$ с элементами $$p_{00}(t)$$, $$p_{01}(t)$$, $$p_{10}(t)$$, $$p_{11}(t)$$, $$p_{b1}(t)$$ ;

    $$A$$ — матрица коэффициентов размера $$5\times 5$$, которая имеет следующий вид:

    $$A= \left[ \begin{array}{ccccc} -\lambda \mu 0 0 0 \\ 0 -(\mu+\lambda) \mu 0 \mu \\ \lambda 0 -\mu \mu 0 \\ 0 \lambda 0 -2\mu 0 \\ 0 0 0 \mu -\mu \\ \end{array} \right]$$

    Для интегрирования системы (1.2) будем задавать естественные начальные условия, т. е. такие, когда в начальный момент времени, равный нулю, вероятность отсутствия требований в системе равна единице, а остальные вероятности в начальный момент времени равны нулю:

    $$p_{00}(0)=1,\qquad p_{01}(0)=p_{10}(0)=p_{11}(0)=p_{b1}(0)=0$$

    2. Трехфазная система обслуживания

    В трехфазной системе каждая из фаз может быть свободной (символ $$0$$ ) либо занятой (символ $$1$$ ), а фазы 1 и 2 могут быть к тому же заблокированы (символ $$b$$ ). Если состояние первой фазы обозначить символом $$i$$, состояние второй фазы — символом $$j$$, а состояние третьей фазы — символом $$k$$, то возможные состояния трехфазной системы будут следующими:

    $$\{(i,j,k)\}= \left\{ \begin{array}{cccccc} (0,0,0) (1,0,0) (0,1,0) (0,0,1) (1,0,1) (1,1,1) \\ (1,1,0) (b,1,0) (1,b,1) (b,b,1) (b,1,1) (0,b,1) \end{array} \right\}$$

    В соответствии с возможными состояниями (1.4) трехфазной системы можно получить следующую систему дифференциальных уравнений 13-го порядка относительно вероятностей состояний $$p_{ijk}(t)$$:

    $$\frac{dp_{000}(t)}{dt}=-\lambda p_{000}(t)+\mu p_{001}(t),\\ \frac{dp_{100}(t)}{dt}=\lambda p_{000}(t)-\mu p_{100}(t)+\mu p_{101}(t),\\ \frac{dp_{010}(t)}{dt}=\mu p_{100}(t)-(\lambda+\mu) p_{010}(t)+\mu p_{011}(t),\\ \frac{dp_{001}(t)}{dt}=\mu p_{010}(t)-(\lambda+\mu) p_{001}(t)+\mu p_{0b1}(t),\\ \frac{dp_{101}(t)}{dt}=\lambda p_{001}(t)-2\mu p_{101}(t)+\mu p_{110}(t)+\mu p_{1b1}(t),\\ \frac{dp_{011}(t)}{dt}=\mu p_{101}(t)-(\lambda+2\mu) p_{011}(t)+\mu p_{b10}(t)+\mu p_{bb1}(t),\\ \frac{dp_{111}(t)}{dt}=\lambda p_{011}(t)-3\mu p_{111}(t),\\ \frac{dp_{110}(t)}{dt}=\lambda p_{010}(t)+\mu p_{111}(t)-2\mu p_{110}(t),\\ \frac{dp_{b10}(t)}{dt}=\mu p_{110}(t)-\mu p_{b10}(t)+\mu p_{b11}(t),\\ \frac{dp_{1b1}(t)}{dt}=\mu p_{111}(t)-2\mu p_{1b1}(t)+\lambda p_{0b1}(t),\\ \frac{dp_{bb1}(t)}{dt}=\mu p_{1b1}(t)-\mu p_{bb1}(t)+\mu p_{b11}(t),\\ \frac{dp_{b11}(t)}{dt}=\mu p_{111}(t)-2\mu p_{b11}(t),\\ \frac{dp_{0b1}(t)}{dt}=\mu p_{011}(t)-(\lambda+\mu) p_{0b1}(t).\\$$

    Система (1.5) — это система обыкновенных однородных дифференциальных уравнений с постоянными коэффициентами. Ее также можно представить в матричном виде:

    $$\frac{dP(t)}{dt}=AP(t),$$

    где:

    $$P(t)$$ — вектор состояний системы 13-го порядка;

    $$А$$ — матрица постоянных коэффициентов размера $$13\times 13$$.

    Для решения системы (1.5) будем использовать естественные начальные условия, т. е.

    $$p_{000}(0)=1,\qquad\forall p_{ijk}(0)=0,\qquad i=0,1,b,\qquad j=0,1,b,\qquad k=0,1,b.$$

    Отметим также, что система линейных дифференциальных уравнений будет иметь нетривиальное решение, если ее характеристический определитель будет равен нулю. В матричном виде получаем так называемое характеристическое уравнение

    $$det[sE-A]=0,$$

    где:

    $$Е$$ — единичная матрица того же размера, что и матрица коэффициентов $$А$$ ;

    $$s$$ — скалярная в общем случае комплексная переменная, относительно которой решается характеристическое уравнение.

    Если действительная часть корней характеристического уравнения (1.7) будет отрицательной, то решение системы дифференциальных уравнений (1.5) с начальными условиями (1.6) будет устойчивым, т. е. будет стремиться к установившимся значениям.

    Таким образом, система дифференциальных уравнений (1.5) с начальными условиями (1.6) представляет собой математическую модель трехфазной системы массового обслуживания с нулевой вместимостью блоков ожидания.

    Схема трехфазной системы обслуживания показана на рис. 1.2.

    (рис 1.2) Модель трехфазной системы обслуживания

    Практическая часть

    Рассмотрим моделирование двухфазной системы массового обслуживания в программных средах MATLAB и GPSS/PC. Сначала выполним моделирование двухфазной системы в MATLAB. Примем, что параметр входного простейшего потока равен $$1.7$$, а интенсивность обслуживания каждой фазы равна $$0.67$$, т. е. $$\lambda = 1.7$$, $$\mu = 0.67$$. В основе моделирования стоит задача интегрирования системы дифференциальных уравнений вида (1.2) на отрезке времени, когда вероятности состояний примут свои установившиеся значения. По установившимся значениям вероятностей рассчитываются операционные характеристики системы. Входными данными программы, таким образом, будут являться интенсивности входного потока и обслуживания, а также матрица коэффициентов системы дифференциальных уравнений.

    1. Пример моделирования в системе matlab

    Программа моделирования оформлена в виде $$М$$ -функции без аргументов и без возвращаемого значения. Это позволит в одном $$М$$ -файле использовать дополнительные $$М$$ -функции.

    Программный код решения примера:

    function twophase;
    clc,close all
    % ВХОДНЫЕ ДАННЫЕ
    L = 1.7;
    M = 0.67;
    global A
    A = [-L, M, 0, 0, 0;
        0, -(L+M), M, 0, M;
        L, 0, -M, M, 0;
        0, L, 0, -2*M, 0;
        0, 0, 0, M, -M];
    
    % ИНТЕРВАЛ ИНТЕГРИРОВАНИЯ
    T = [0, 20];
    % НАЧАЛЬНЫЕ УСЛОВИЯ
    P0 = [1;zeros(length(A)-1,1)];
    % ВЫЗОВ РЕШАТЕЛЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
    [t,P] = ode45(@faza,T,P0);
    
    % ПОСТРОЕНИЕ ДИАГРАММ ВЕРОЯТНОСТЕЙ СОСТОЯНИЙ
    figure(1);
    line(t,P(:,1),'linew',2, 'color','r'),
    line(t,P(:,2), 'marker','o','color', [0,102,102]/255),
    line(t,P(:,3), 'lines','--','linew',2, 'color', 'k'),
    line(t,P(:,4), 'lines','-.','linew',2, 'color', 'b'),
    line(t,P(:,5), 'linestyle',':','linew',2, 'color','m'),
    
     
    str='\bfВероятности состояний двухфазной системы обслуживания:';
     
    title(sprintf('%s %s = %g; %s = %g',str,'\lambda',L,'\mu', M));
    legend('P_0_0(t)','P_0_1(t)','P_1_0(t)','P_1_1(t)','P_b_1(t)');
    xlabel('\bf -  -  -  -  -  -  t -  -  -  -  -  - ');
    ylabel('\bf P(t)');
    %%% ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ СИСТЕМЫ
    % Ncp - СРЕДНЕЕ ЧИСЛО ТРЕБОВАНИЙ В СИСТЕМЕ
    k =[0, 1, 2];
    Pk = [P(end,1);P(end,2)+P(end,3);P(end,4)+P(end,5)];
    Ncp = k*Pk;
    
    fprintf('\n\t ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ ДВУХФАЗНОЙ СИСТЕ-МЫ:\n');
    fprintf('\t Среднее число требований в системе: Ncp = %f\n',Ncp);
    
    % Pf1 - ВЕРОЯТНОСТЬ НАЧАЛА ОБСЛУЖИВАНИЯ 
    Pf1 = P(end,1)+P(end,2);
    fprintf('\t Вероятность начала обслуживания: Pf1 = %f\n',Pf1);
    
    % Pomk - ВЕРОЯТНОСТЬ ОТКАЗА В ОБСЛУЖИВАНИИ  
    Pomk = 1-Pf1;
    fprintf('\t Вероятность отказа: Pomk = %f\n',Pomk);
    
    %  Q - ОТНОСИТЕЛЬНАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ 
    Q = 1-Pomk;
    fprintf('\t Относительная пропускная способность системы: Q = %f\n',Q);
    
    % Lef - ЭФФЕКТИВНАЯ ЧАСТОТА ПОСТУПЛЕНИЯ ТРЕБОВАНИЙ В СИСТЕМУ
    Lef = L*Pf1;
    fprintf('\t Эффективная частота поступления требований в систему: Lef = %f\n',Lef);
    
    % Ab - АБСОЛЮТНАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ 
    Ab = Lef*Q;
    fprintf('\t Абсолютная пропускная способность системы: Ab = %f\n',Ab)
    
    % Ts - ПОЛНОЕ ВРЕМЯ ПРЕБЫВАНИЯ ТРЕБОВАНИЙ В СИСТЕМЕ  
    Ts = Ncp/Lef;
    fprintf('\t Полное время пребывания требования в системе: Ts = %f\n',Ts);
    % Tcp1 - СРЕДНЕЕ ВРЕМЯ ОБСЛУЖИВАНИЯ ОДНОГО ТРЕБОВАНИЯ
    Tcp1 = 2*(1/M);
    fprintf('\t Среднее время обслуживания требования в системе: Tcp = %f\n',Tcp1);
    % Td - СРЕДНЕЕ ВРЕМЯ ЗАДЕРЖКИ 
    Td = Ts - Tcp1;
    fprintf('\t Среднее время задержки в обслуживании: Td = %f\n',Td);
    
    % Финальные (стационарные) вероятности
    fprintf('\n\t Финальные (стационарные) вероятности:\n');
    k = 0;
    for J = 1 : length(P0)
        if J == 1 | J == 2
    fprintf('\t P0%d = %f\n ',J-1,  P(end, J));
        
        elseif J > 2  J < length(P0)
    fprintf('\t P1%d = %f\n ', k,  P(end, J));
    k = k + 1;
       
        else
    fprintf('\t Pb1 = %f\n', P(end,end));
       end
    end
     
    
    % М-функция описания правых частей дифференциальных уравнений
    function f = faza(t,P)
    global A
    f = A*P;

    Результаты моделирования по определению операционных характеристик

    ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ ДВУХФАЗНОЙ СИСТЕМЫ
    	 Среднее число требований в системе: Ncp = 1.345670
    	 Вероятность начала обслуживания: Pf1 = 0.224859
    	 Вероятность отказа: Pomk = 0.775141
    	 Относительная пропускная способность системы: Q = 0.224859
    	 Эффективная частота поступления требований в систему: Lef = 0.382260
    	 Абсолютная пропускная способность системы: Ab = 0.085955
    	 Полное время пребывания требования в системе: Ts = 3.520298
    	 Среднее время обслуживания требования в системе: Tcp = 2.985075
    	 Среднее время задержки в обслуживании: Td = 0.535224
    	 
              Финальные (стационарные) вероятности:
    	 P00 = 0.063570
     	 P01 = 0.161289
     	 P10 = 0.365900
     	 P11 = 0.204626
     	 Pb1 = 0.204615

    Переходные процессы вероятностей состояний показаны на рис. 1.3.

    (рис 1.3) Переходные процессы вероятностей состояний в двухфазной системе

    Задание 1

  • Вычислите по формуле Литтла среднее количество требований в системе.
  • Проверьте нормировочное условие для вероятностей состояний системы в трех точках временного интервала интегрирования.
  • В соответствии с номером компьютера, на котором выполняется лабораторная работа (1, 2, 3 и т. д.), увеличьте интенсивность входного потока на этот номер. Выполните два предыдущих пункта задания.
  • Результаты расчета операционных характеристик запишите в текстовый файл с именем compX.txt, где $$Х$$ — номер компьютера, на котором выполняется лабораторная работа.
  • Напишите программу с различными интенсивностями обслуживания в фазах обслуживания. Рассчитайте также операционные характеристики двухфазной системы обслуживания.
  • 2. Пример моделирования в системе GPSS/PC

    Для моделирования в системе GPSS/PC необходимо подготовить данные по функциям распределения случайных величин для имитации пуассоновского входного потока и экспоненциального обслуживания. В обоих случаях используется экспоненциальное распределение, поскольку интервалы времени между требованиями в пуассоновском потоке распределены по экспоненциальному закону. В рассматриваемом случае параметры пуассоновского потока и экспоненциального обслуживания заданы и равны соответственно $$\lambda = 1.7$$, $$\mu = 0.67$$.

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

    clear all,clc
    L = 1.7; %% Интенсивность входного потока
    M = 0.67; %% Интенсивность обслуживания
    %% Функции экспоненциального распределения
    x = 0 : 0.2 : 20;
    F = 1 - exp(-L*x); 
    F2 = 1 - exp(-M*x);
    %%% Запись в текстовый файл input.txt
    fid = fopen('input.txt', 'w');
    %% Для блока generate
        fprintf(fid, 'puas  function RN1,C50\r\n');
    for J = 1 : length(x)
        if J <= 50
            if mod(J, 5) 
    fprintf(fid, '%g,%g/', F(J), x(J));    
            
            else
    fprintf(fid, '\r\n');  
    fprintf(fid, '%g,%g/', F(J), x(J));    
             end
        end
    end
    fprintf(fid, '\r\n;-----------------------------------\r\n');
    %% Для блоков advance
    fprintf(fid, '\r\nexpM  function RN2,C50\r\n');
    for J = 1 : length(x)
        if J <= 50
            if mod(J, 5) 
    fprintf(fid, '%g,%g/', F2(J), x(J));    
            
            else
    fprintf(fid, '\r\n');  
    fprintf(fid, '%g,%g/', F2(J), x(J));  
             end
        end
    end
    
    fclose(fid);

    В программе функция $$mod()$$ применена для формирования заданного количества массива строк с данными для выбора случайных чисел, распределенных по экспоненциальному закону. Сформированные массивы будут представлены в GPSS-программе.

    GPSS-программа приводится ниже. В ней задано условие обработки 500 требований.

    Программный код решения примера в системе GPSS/PC:

    simulate
    
    puas  function RN5,C50
    0,0/0.28823,0.2/0.493383,0.4/0.639405,0.6/
    0.743339,0.8/0.817316,1/0.869971,1.2/0.907449,1.4/0.934125,1.6/
    0.953112,1.8/0.966627,2/0.976246,2.2/0.983093,2.4/0.987966,2.6/
    0.991434,2.8/0.993903,3/0.995661,3.2/0.996911,3.4/0.997802,3.6/
    0.998435,3.8/0.998886,4/0.999207,4.2/0.999436,4.4/0.999598,4.6/
    0.999714,4.8/0.999797,5/0.999855,5.2/0.999897,5.4/0.999927,5.6/
    0.999948,5.8/0.999963,6/0.999974,6.2/0.999981,6.4/0.999987,6.6/
    0.99999,6.8/0.999993,7/0.999995,7.2/0.999997,7.4/0.999998,7.6/
    0.999998,7.8/0.999999,8/0.999999,8.2/0.999999,8.4/1,8.6/
    1,8.8/1,9/1,9.2/1,9.4/1,9.6/
    1,9.8/
    ;------------------------------
    expM  function RN6,C50
    0,0/0.12541,0.2/0.235092,0.4/0.331019,0.6/
    0.414916,0.8/0.488291,1/0.552465,1.2/0.60859,1.4/0.657677,1.6/
    0.700608,1.8/0.738154,2/0.770992,2.2/0.799712,2.4/0.82483,2.6/
    0.846798,2.8/0.866011,3/0.882815,3.2/0.897511,3.4/0.910364,3.6/
    0.921605,3.8/0.931437,4/0.940035,4.2/0.947556,4.4/0.954133,4.6/
    0.959885,4.8/0.964916,5/0.969316,5.2/0.973164,5.4/0.976529,5.6/
    0.979473,5.8/0.982047,6/0.984299,6.2/0.986268,6.4/0.98799,6.6/
    0.989496,6.8/0.990813,7/0.991965,7.2/0.992973,7.4/0.993854,7.6/
    0.994625,7.8/0.995299,8/0.995889,8.2/0.996404,8.4/0.996855,8.6/
    0.99725,8.8/0.997595,9/0.997896,9.2/0.99816,9.4/0.998391,9.6/
    0.998593,9.8/
    
    tab1 table m1,0,5,12
    tab2 table mp2,0,5,10
    
    ******** Basic Program *******
    5  generate fn$puas
    10  savevalue FULL+,1
    
    ;--- Probability P00 -----------
    15  test E f1,0,met1
    20  test E f2,0,met1
    25  savevalue P_00+,1
    
    ;--- Probability P01 -----------
    30 met1  test E f1,0,met2
    35  savevalue P_01+,1
    
    ;--- Probability P10 -----------
    40 met2  test E f2,0,met3;
    45  savevalue P_10+,1
    
    ;--- Probability P11+Pb1---------
    50 met3  test NE f1,0,met4
    55  test NE f2,0,met4
    60  test NE q2,0,met4
    65  savevalue P_11b1+,1
    
    70 met4  assign 2,1
    75  gate NU 1,exitNOT
    
    ;---------- 1st phase ---------------
    80  seize 1
    85  advance fn$expM
    90  release 1
    95  mark 2
    ;---------- Delay ------------------
    100  queue 2
    105  gate NU 2
    110  depart 2
    120  tabulate tab2
    
    ;---------- 2nd phase ---------------
    125  seize 2
    130  advance fn$expM
    135  release 2
    ;------------------------------------
    
    140  tabulate tab1
    145  terminate 1
    
    150 exitNOT  savevalue exit0+,1 
    155   terminate
    
    start 500
    ;end

    Комментарии к программе

  • Введение таблицы $$tab1$$ с аргументом $$М1$$ (системный стандартный числовой атрибут) — временем пребывания в модели транзакта, обрабатываемого программой в данный момент, позволяет табулировать величину $$М1$$ и найти среднее значение времени пребывания транзакта в модели.
  • Введение таблицы $$tab2$$ с аргументом $$mp2$$ (стандартный числовой атрибут транзакта) — значением времени, равного разности относительного модельного времени и содержимого 2-го параметра текущего транзакта. Табулируется время пребывания транзакта в заблокированном состоянии. Отметка времени осуществляется блоком $$mark$$.
  • В программе использованы стандартные числовые атрибуты $$f1$$, $$f2$$, которые определяют состояния соответствующих устройств. Если устройство свободно, то величина стандартного числового атрибута равна 0, и 1 — во всех остальных случаях.
  • Результат выполнения программы система GPSS/PC оформляет в виде файла стандартного отчета, который имеет следующий вид:

    GPSS/PC Report file REPORT.GPS.  (V 2, # 37349)  01-08-2010 10:28:19   page 1
    
         START_TIME    END_TIME  BLOCKS    FACILITIES  STORAGES   FREE_MEMORY
                0          675     30           2          0        135296
    
     LINE       LOC          BLOCK_TYPE       ENTRY_COUNT   CURRENT_COUNT   RETRY
      5          1            GENERATE             3092              0         0
      10         2            SAVEVALUE            3092              0         0
      15         3            TEST                 3092              0         0
      20         4            TEST                  501              0         0
      25         5            SAVEVALUE             159              0         0
      30        MET1          TEST                 3092              0         0
      35         7            SAVEVALUE             501              0         0
      40        MET2          TEST                 3092              0         0
      45         9            SAVEVALUE             982              0         0
      50        MET3          TEST                 3092              0         0
      55         11           TEST                 2591              0         0
      60         12           TEST                 1768              0         0
      65         13           SAVEVALUE            1453              0         0
      70        MET4          ASSIGN               3092              0         0
      75         15           GATE                 3092              0         0
      80         16           SEIZE                 501              0         0
      85         17           ADVANCE               501              1         0
      90         18           RELEASE               500              0         0
      95         19           MARK                  500              0         0
      100        20           QUEUE                 500              0         0
      105        21           GATE                  500              0         0
      110        22           DEPART                500              0         0
      120        23           TABULATE              500              0         0
      125        24           SEIZE                 500              0         0
      130        25           ADVANCE               500              0         0
      135        26           RELEASE               500              0         0
      140        27           TABULATE              500              0         0
      145        28           TERMINATE             500              0         0
      150       EXITNOT       SAVEVALUE            2591              0         0
      155        30           TERMINATE            2591              0         0
    
    
    FACILITY   ENTRIES  UTIL.   AVE._TIME AVAILABLE  OWNER PEND INTER RETRY DELAY
      1           501  0.800        1.08      1      3090   0     0     0     0
      2           500  0.740        1.00      1         0   0     0     0     0
    
    
    QUEUE        MAX  CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME  AVE.(-0) RETRY
      2           19     0     500       207     2.95        3.98      6.79    0
    
    TABLE            MEAN      STD.DEV. RETRY  RANGE           FREQUENCY  CUM.%
     TAB1             6.06        5.22    0 
                                              -         0          50      10.00
                                            0 -         5         233      56.60
                                            5 -        10         120      80.60
                                           10 -        15          67      94.00
                                           15 -        20          24      98.80
                                           20 -        25           6     100.00
     
    TAB2             3.98        5.03    0 
                                              -         0         207      41.40
                                            0 -         5         137      68.80
                                            5 -        10          97      88.20
                                           10 -        15          40      96.20
                                           15 -        20          18      99.80
                                           20 -        25           1     100.00
    
    XACT_GROUP         GROUP_SIZE       RETRY
     POSITION                  0           0
    
    GPSS/PC Report file REPORT.GPS.  (V 2, # 37349)  01-08-2010 10:28:19   page 2
    
    SAVEVALUE                           VALUE        RETRY
     FULL                              +3092            0
     P_00                               +159            0
     P_01                               +501            0
     P_10                               +982            0
     P_11B1                            +1453            0
     EXIT0                             +2591            0

    Расчет операционных характеристик двухфазной системы по файлу стандартного отчета будем на окончании помечать буквой $$g$$.

    Расчет вероятности отказа в обслуживании определим как отношение числа требований, получивших отказ (число 2591 в сохраняемой ячейке $$EXIT0$$ ), к общему числу (число 3092 в сохраняемой ячейке $$FULL$$ ):

    $$Pomkg = 2591/3092 = 0.838$$.

    Относительная пропускная способность и вероятность того, что вновь поступившее требование будет принято на обслуживание 1-й фазой, равны между собой и определяются как противоположная вероятность отказа в обслуживании, т. е.

    $$Qg = Pf1g = 1 – Pomkg = 1 – 0.838 = 0.162$$.

    Расчет эффективной частоты поступления требований в систему:

    $$Lefg = \lambda*Pf1g = 1.7*0.162 = 0.228.$$

    Абсолютная пропускная способность двухфазной системы:

    $$Abg = Lefg*Qg = 0.228*0.162 = 0.037$$.

    Полное время пребывания требования в системе определяется как среднее значение таблицы с именем $$tab1$$:

    $$Tsg = 6.06$$.

    Среднее время блокировки 1-й фазы определяется как среднее значение таблицы с именем $$tab2$$:

    $$Tdg = 3.98$$.

    Среднее время обработки одного требования в двухфазной системе можно определить двумя путями: как сумму значений полей $$AVE._TIME$$ для устройств 1 и 2 ( $$FACILITY$$ ) и как разность между $$Tsg$$ и $$Tdg$$:

    $$Tcpg = 1.08 + 1.00 = 2.08, (6.06 – 3.98 = 2.08)$$.

    Среднее число требований в двухфазной системе определим по формуле Литтла:

    $$Ncpg = Lefg*Tsg = 0.228*6.06 = 1.382$$.

    Финальные (стационарные) вероятности определим как частное от деления числа требований, отвечающим заданным условиям (успешное событие), к общему числу требований, поступивших в систему. Для этого в программе были созданы ячейки сохраняемых величин: для вероятности $$Р00$$ — ячейка $$Р_00$$, для вероятности $$Р01$$ — ячейка $$Р_01$$, для вероятности $$Р10$$ — ячейка $$Р_10$$, для суммы вероятностей $$Р11+Рb1$$ (поскольку они равны между собой) — ячейка $$P11b1$$. В соответствии с результатами, приведенными в файле стандартного отчета, получим

    $$P00 = 159/3092 = 0.0514$$ ;

    $$P01 = 501/3092 = 0.162$$ ;

    $$P10 = 982/3092 = 0.318$$ ;

    $$P11 + Pb1 = 1453/3092 = 0.4699$$.

    Проведем контрольную проверку. Для этого сложим вероятности (которые являются несовместными):

    $$0.0514 + 0.162 + 0.318 + 0.4699 = 1.0013$$.

    Поскольку полученный результат практически равен единице, можно считать, что расчет вероятностей произведен успешно.

    Задание 2

  • Выполните прогон программы с датчиками случайных чисел $$RN$$ в соответствии с номером компьютера, за которым выполняется лабораторная работа, т. е. $$RN1$$, $$RN2$$ и т. д. Сравните полученные операционные характеристики с соответствующими характеристиками, определенными при моделировании двухфазной системы в MATLAB.
  • Видоизмените программу так, чтобы можно было построить функцию распределения времени блокировки 1-й фазы.
  • Напишите программу с различными интенсивностями обслуживания в фазах обслуживания. Рассчитайте также операционные характеристики двухфазной системы обслуживания. Сравните с операционными характеристиками, полученными при моделировании в системе MATLAB.
  • Смоделируйте в MATLAB и в GPSS/PC (GPSS World) трехфазную систему обслуживания и рассчитайте операционные характеристики по параметрам примера для двухфазной системы, т. е. $$\lambda = 1.7$$, $$\mu = 0.67$$.
  • Контрольные вопросы

  • Каким видом дифференциальных уравнений описывается многофазная система массового обслуживания?
  • Что называется интенсивностью входного потока требований?
  • Что называется интенсивностью обслуживания многофазной системы?
  • Что называется простейшим потоком требований?
  • Что называется функцией распределения случайной величины?
  • Какова функциональная связь между функцией распределения случайной непрерывной величины и ее плотностью?
  • Могут ли быть многофазные системы с ожиданием? Если могут, то как будет выглядеть схема моделирования многофазной системы с ожиданием?
  • Какие ограничения накладываются на численные значения интенсивности входного потока требований и интенсивности обслуживания в многофазной системе при ее моделировании?
  • Сколько вы знаете аналогов формулы Литтла? Приведите известные вам формулы.
  • Вернуться к учебному плану