Мордовский государственный университет имени Н.П. Огарева
Опубликован: 30.11.2010 | Доступ: свободный | Студентов: 3296 / 1995 | Оценка: 4.12 / 4.13 | Длительность: 14:37:00
ISBN: 978-5-9963-0352-6
Лекция 2:

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

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Аннотация: Цель работы: практически освоить моделирование систем массового обслуживания в программных средах MATLAB и GPSS/PC при пуассоновском входном потоке требований, экспоненциальном обслуживании и возможном уходе из очереди также по экспоненциальному закону. Цель моделирования — получение операционных характеристик.

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

Многоканальные системы массового обслуживания — это системы с параллельно включенными приборами обслуживания. Для них принято использовать символику Кендалла, которая состоит из основных четырех позиций вида A/B/m/K/М, где А — закон поступления требований в систему, В — закон обслуживания требований, m — число параллельно функционирующих приборов (каналов, узлов) обслуживания, K — допустимое число требований в системе, т. е. число требований в очереди плюс число требований, принятых на обслуживание. В системе A/B/m/K/М последний символ М — число источников нагрузки [2]. При этом параметры системы постоянны, а процессы в системах рассматриваются с позиций теории размножения и гибели.

Предметом данной лабораторной работы будут системы с простейшим пуассоновским потоком, экспоненциальным обслуживанием и, возможно, экспоненциальном уходом из очереди "нетерпеливых" требований. При сделанных условиях исследуемые системы будут иметь следующие обозначения: M/M/m/K, M/M/m/K с нетерпеливыми требованиями, M/M/m/K/M, где первые буквы М означают пуассоновский поток требований и экспоненциальное обслуживание, а в последнем примере крайняя правая буква М — это число требований, формируемых конечным числом источников нагрузки. В частности, может быть система с отказами, т. е. M/M/m с отказами.

При моделировании сначала требуется составить дифференциальные уравнения относительно вероятностей состояний. Эти уравнения называются дифференциальными уравнениями Колмогорова [2]. При правильном составлении уравнений их решения при заданных начальных условиях стремятся к своим установившимся значениям. Эти значения называются стационарными вероятностями, на основе которых рассчитываются операционные характеристики системы.

Для составления уравнений Колмогорова можно использовать мнемоническое правило [4]. Сначала определим понятие потока вероятности: это такой поток, который переводит систему из одного состояния в другое соседнее и определяется как произведение вероятности P_{i}(t) i -го состояния, из которого происходит переход, на интенсивность потока событий (интенсивность поступления требований или интенсивность обслуживания). Теперь приведем мнемоническое правило составления уравнений Колмогорова: производная вероятности любого состояния равна сумме потоков вероятности, переводящих систему в это состояние, минус сумма всех потоков вероятности, выводящих систему из этого состояния [4].

Прежде чем применять правило Колмогорова, целесообразно изобразить размеченный граф состояний заданной системы. На рис. 2.1 показан пример размеченного графа состояний для системы M/M/3/5 ( m = 3, K = 5, \lambda — интенсивность входного потока требований, \mu — интенсивность обслуживания одним прибором).

Размеченный граф состояний системы М/М/3/5

Рис. 2.1. Размеченный граф состояний системы М/М/3/5

Используем мнемоническое правило составления уравнений Колмогорова для состояния 2, которое обведено окружностью. При этом потоки вероятности будут направлены по стрелкам. Если стрелка входит в окружность, то поток вероятности принимается положительным. Если стрелка выходит из окружности, то поток вероятности будет отрицательным. Относительно каждого состояния можно проводить воображаемую окружность. Дифференциальные уравнения имеют следующий вид:

\frac{dP_{0}}{dt}=-\lambda P_{0}+\mu P_{1};\\
\frac{dP_{1}}{dt}=\lambda P_{0}-(\lambda +\mu) P_{1}+2\mu P_{2};\\
\frac{dP_{2}}{dt}=\lambda P_{1}-(\lambda +2\mu) P_{2}+3\mu P_{3};\\
\frac{dP_{3}}{dt}=\lambda P_{2}-(\lambda +3\mu) P_{3}+3\mu P_{4};\\
\frac{dP_{4}}{dt}=\lambda P_{3}-(\lambda +3\mu) P_{4}+3\mu P_{5};\\
\frac{dP_{5}}{dt}=\lambda P_{4}-3\mu P_{5};\\ ( 2.1)

Для решения систем дифференциальных уравнений типа (2.1) обычно задают естественные начальные условия:

P_{0}(0)=1,\qquad P_{i}(0)=0,\qquad i=\overline{1,5}. ( 2.2)

Если в системе (2.1) производные приравнять нулю, то можно будет получить соотношения для расчета стационарных вероятностей состояний системы. При этом следует использовать нормировочное условие для n = 5:

\sum\limits_{k=0}^{5} P_{k}(t)=1. ( 2.3)

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

2.1. Пример моделирования системы типа М/М/M/K

Система M/M/m/K — это система с пуассоновским входящим потоком требований, с экспоненциальным законом обслуживания в m приборах, с допустимым числом требований в системе, не превышающим K, которое не менее, чем заданное количество приборов обслуживания. Параметры системы постоянны, т. е. \lambda = const, \mu = const. Систему M/M/m/K называют многоканальной системой массового обслуживания с ограниченной длиной очереди.

Пример 1. Проинтегрируйте систему массового обслуживания М/М/4/7 при естественных граничных условиях и параметрах \lambda = 1.23, \mu = 0.678. Рассчитайте операционные характеристики системы [2].

Для решения примера сначала составим дифференциальные уравнения в соответствии с мнемоническим правилом Колмогорова:

\frac{dP_{0}}{dt}=-\lambda P_{0}+\mu P_{1};\\
\frac{dP_{1}}{dt}=\lambda P_{0}-(\lambda +\mu) P_{1}+2\mu P_{2};\\
\frac{dP_{2}}{dt}=\lambda P_{1}-(\lambda +2\mu) P_{2}+3\mu P_{3};\\
\frac{dP_{3}}{dt}=\lambda P_{2}-(\lambda +3\mu) P_{3}+4\mu P_{4};\\
\frac{dP_{4}}{dt}=\lambda P_{3}-(\lambda +4\mu) P_{4}+4\mu P_{5};\\
\frac{dP_{5}}{dt}=\lambda P_{4}-(\lambda +4\mu) P_{5}+4\mu P_{6};\\
\frac{dP_{6}}{dt}=\lambda P_{5}-(\lambda +4\mu) P_{6}+4\mu P_{7};\\
\frac{dP_{7}}{dt}=\lambda P_{6}-4\mu P_{7};\\

Естественные начальные условия:

P_{0}(0)=1,\qquad P_{i}(0)=0,\qquad i=\overline{1,7}.

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

function MMmK;
clc,close 
% Параметры системы
L = 3.52;
M = 0.678;
m = 4;
K = 7; 
%%%%%%%%%%%%%%%%%%%%%%%%
global A
A = [-L,M,0,0,0,0,0,0;
L,-(L+M),2*M,0,0,0,0,0;
0,L,-(L+2*M),3*M,0,0,0,0;
0,0,L,-(L+3*M),4*M,0,0,0;
0,0,0,L,-(L+4*M),4*M,0,0;
0,0,0,0,L,-(L+4*M),4*M,0;
0,0,0,0,0,L,-(L+4*M),4*M;
0,0,0,0,0,0,L,-4*M];
%% Численное интегрирование дифф. уравнений
P0 = [1;zeros(length(A)-1,1)];
T = [0,20];
[t,P] = ode23(@cmo, T, P0);
 
%% Построение диаграммы вероятностей состояний
%% line(t,P,'linew',2) %% с различными цветами
line(t,P(:,1),'linew',2, 'color','r') %% Po
line(t,P(:,2), 'linew',2,'lines','--') %% P1
line(t,P(:,3), 'linew',2,'lines','-.') %% P2
line(t,P(:,4), 'linew',2,'lines',':') %% P3
line(t,P(:,5), 'marker','o', 'color', 'm') %% P4
line(t,P(:,6), 'marker','h', 'color','k') %% P5
line(t,P(:,7), 'marker','p','color','r') %% P6
line(t,P(:,8), 'marker','>') %% P7
grid on
N = length(A)-1;
arr = [0:N]';
str = num2str(arr);
legend(strcat('\bf\itP\rm\bf_', str, '(\itt\rm\bf)'));
title(sprintf('%s Вероятности состояний системы M/M/%d/%d', '\bf\fontsize{12}',m, K));
xlabel('\bf\it\fontsize{12} -  -  -  -  -  -  -  -   t   -  -  -  -  -  -  -  -')
ylabel('\bf\fontsize{12}\itP\rm\bf(\itt\rm\bf)');
set(gca, 'fontweight','bold', 'fontsize',10)

fprintf('\n Стационарные вероятности:\n');
for J = 1 : length(A)
    fprintf('\tP%d = %f\n', J-1, P(end,J));
end
 fprintf('\n\t ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ:\n');
Pnot = P(end,end);

fprintf(' Вероятность отказа Pnot = %f\n', P(end,end));
Q = 1 - Pnot;
fprintf(' Относительная пропускная способность Q = %f\n', Q);
Ab = L*Q;
fprintf(' Абсолютная пропускная способность A = %f\n', Ab);
Pq = sum(P(end, m+1:end));
fprintf(' Вероятность наличия очереди Pq = %f\n', Pq);
Ps = sum(P(end, m:end));
fprintf(' Вероятность загрузки всех каналов обслуживания Ps = %f\n', Ps);
 
Ns = [0:length(A)-1]*P(end,:)';
fprintf(' Среднее количество требований в системе Ns = %f\n', Ns);
fprintf(' Среднее время пребывания требования в системе Ts = %f\n', Ns/L);
Nq = [0:(K-m)]*P(end,m:K)';
fprintf(' Средняя длина очереди Nq = %f\n', Nq);
fprintf(' Среднее время пребывания требования в очереди Tq = %f\n', Nq/L);
 
 
function f = cmo(t,P);
%% Функция описания правых частей 
%% дифференциальных уравнений
global A
f = A*P;

Результат выполнения программы

Стационарные вероятности:
	P0 = 0.004352
	P1 = 0.022604
	P2 = 0.058629
	P3 = 0.101614
	P4 = 0.131597
	P5 = 0.171220
	P6 = 0.221807
	P7 = 0.288176

	 ОПЕРАЦИОННЫЕ ХАРАКТЕРИСТИКИ
 Вероятность отказа: Pnot = 0.288176
 Относительная пропускная способность: Q = 0.711824
 Абсолютная пропускная способность: A = 2.505620
 Вероятность наличия очереди: Pq = 0.812800
 Вероятность загрузки всех каналов обслуживания: Ps = 0.914415
 Среднее количество требований в системе: Ns = 5.175269
 Среднее время пребывания требования в системе: Ts = 1.470247
 Средняя длина очереди: Nq = 1.139458
 Среднее время пребывания требования в очереди: Tq = 0.323710

Среднее время пребывания требования в системе было рассчитано по формуле Литтла. Для расчета среднего времени пребывания требования в очереди использовался аналог формулы Литтла [2].

Диаграмма с вероятностями состояний системы М/М/4/7 показана на рис. 2.2.

Вероятности состояний системы М/М/4/7

Рис. 2.2. Вероятности состояний системы М/М/4/7

Задание 1

  1. Рассчитайте нормировочное условие для трех значений времени.
  2. Определите вероятность того, что в системе будет не более k требований. Значение k выбирайте случайно по равномерному закону из интервала целых чисел [1; 6] (см. help randperm ).
  3. Примените диалоговое окно inputdlg (см. help inputdlg ) для ввода параметров системы.
  4. Напишите программу для произвольно задаваемых параметров системы \lambda, \mu и значений m, K. Предусмотрите также ввод длительности интервала интегрирования.
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Мария Ястребинская
Мария Ястребинская

Добрый день. Я приступила сегодня к самостоятельному изучению курса "Моделирование систем". Хочу понять - необходимо ли отсылать мои решения практических заданий на сайт, (и если да - то где найти волшебную кнопку "Загрузить...") или практические задания остаются полностью на моей совести? (никто не проверяет, и отчётности по ним я предоставлять не обязана?)

P.S.: тьютора я не брала

алена зянтерекова
алена зянтерекова