Исследование и программная реализация моделей систем массового обслуживания
Марковские случайные процессы и потоки событий. Предельные вероятности состояний, уравнения Колмогорова. Процесс гибели и размножения. Одноканальная система с неограниченной очередью и ограниченной длиной очереди. Многоканальная система с отказами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.12.2015 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
def = {'2','5','.9','.5'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
%--------------------
if isempty(answer)~=1
%--------------------
n=str2num(answer{1});
m=str2num(answer{2});
lambda=str2num(answer{3});
mu=str2num(answer{4});
%Расчет характеристик СМО M/M/n
rho=lambda/mu;
rho_n=rho/n;
disp('Характеристики СМО M/M/n')
disp('------------------------')
disp('Исходные данные')
disp('---------------')
disp(['Число каналов: ',num2str(n)])
disp(['Интенсивность потока заявок: ',num2str(lambda)])
disp(['Интенсивность потока обслуживаний: ',num2str(mu)])
disp(['Коэффициент нагрузки канала: ',num2str(rho)])
disp(['Приведенный коэффициент нагрузки канала: ',num2str(rho_n)])
disp(['Число выводимых вероятностей нахождения в очереди: ',num2str(m)])
if rho_n>=1
disp('------------------')
disp('Результаты расчета')
disp('------------------')
disp('Приведенный коэффициент нагрузки канала не меньше единицы.')
disp('Стационарного режима не существует.')
disp('Очередь неограниченно возрастает.')
warndlg('Удельная нагрузка должна быть меньше единицы'...
,'Измените исходные данные')
else
k=1:n;
pv=rho.^k./factorial(k);
r=1:m;
pv(n+1:n+m)=pv(n)*rho_n.^r;
p0=1/(1+sum(pv(1:n))+pv(n)*rho_n/(1-rho_n));
p=[p0 pv*p0];
figure('Name','Вероятности состояний СМО M/M/n',...
'NumberTitle','off')
bar(0:n+m,p), hold on
bar(n+1:n+m,p(n+2:n+m+1),'g')
grid
xlim([-1 n+m+1])
xlabel('k')
ylabel('p_k')
P_idle=p0; P_block=0;
P_nq=sum(p(1:n+1));
P_q=p(n+1)*rho_n/(1-rho_n);
Q=1; A=lambda;
k_mean=rho;
r_mean=p(n+1)*rho_n/(1-rho_n)^2;
z_mean=k_mean+r_mean;
title(['\lambda = ',num2str(lambda),', \mu = ',num2str(mu)])
disp('------------------')
disp('Результаты расчета')
disp('------------------')
disp('Вероятности состояний:')
for k=0:n+m;
disp(['p(',num2str(k),') = ',num2str(p(k+1))])
end
disp(['Сумма выведенных вероятностей: ',num2str(sum(p))])
disp(['Вероятность простоя: ',num2str(P_idle)])
disp(['Вероятность отказа: ',num2str(P_block)])
disp(['Вероятность отсутствия очереди: ',num2str(P_nq)])
disp(['Вероятность наличия очереди: ',num2str(P_q)])
disp(['Относительная пропускная способность: ',num2str(Q)])
disp(['Абсолютная пропускная способность: ',num2str(A)])
disp(['Среднее число занятых каналов: ',num2str(k_mean)])
disp(['Среднее число заявок в очереди: ',num2str(r_mean)])
disp(['Среднее число заявок в системе: ',num2str(z_mean)])
disp(['Среднее время обслуживания: ',num2str(k_mean/lambda)])
disp(['Среднее время ожидания: ',num2str(r_mean/lambda)])
disp(['Среднее время пребывания в системе: ',num2str(z_mean/lambda)])
end
%--------------------
end
%--------------------
ПРИЛОЖЕНИЕ Г
Текст программы расчета характеристик СМО с неограниченной очередью на VBA
Private Sub UserForm_Click()
End Sub
Private Sub ПолеЗаявки_Change()
End Sub
Private Sub ПолеОбслуживания_Change()
End Sub
Private Sub ПолеЧисло_Change()
End Sub
Private Sub ФлажокДиаграмма_Click()
End Sub
Private Sub КнопкаОтмена_Click()
РасчетСМО.Hide
End Sub
Private Sub КнопкаРасчет_Click()
Dim N, L, M, R, S, SS, PS As Double
Dim I, NP, NM, IC As Integer
Dim P(), X() As Double
If IsNumeric(ПолеКаналы.Text) = False Then
ir = MsgBox("Введите правильно значение числа каналов!", vbExclamation)
ПолеКаналы.SetFocus
Exit Sub
End If
If IsNumeric(ПолеЗаявки.Text) = False Then
ir = MsgBox("Введите правильно значение интенсивности потока заявок!", vbExclamation)
ПолеЗаявки.SetFocus
Exit Sub
End If
If IsNumeric(ПолеОбслуживания.Text) = False Then
ir = MsgBox("Введите правильно значение интенсивности потока обслуживаний!", vbExclamation)
ПолеОбслуживания.SetFocus
Exit Sub
End If
If IsNumeric(ПолеЧисло.Text) = False Then
ir = MsgBox("Введите правильно значение числа вероятностей!", vbExclamation)
ПолеЧисло.SetFocus
Exit Sub
End If
N = CInt(ПолеКаналы.Text)
L = CDbl(ПолеЗаявки.Text)
M = CDbl(ПолеОбслуживания.Text)
NP = CInt(ПолеЧисло.Text)
R = L / M
If R / N < 1 Then
NM = N + NP
ReDim P(NM), X(NM)
For I = 0 To NM
X(I) = I
Next I
S = 0
For I = 0 To N
X(I) = I
S = S + R ^ I / Application.WorksheetFunction.Fact(I)
Next I
SS = R ^ (N + 1) / ((N - R) * Application.WorksheetFunction.Fact(N))
P(0) = 1 / (S + SS)
For I = 1 To N
P(I) = R ^ I / Application.WorksheetFunction.Fact(I) * P(0)
Next I
S = R ^ N / Application.WorksheetFunction.Fact(N)
For I = 1 To NP
P(N + I) = S * (R / N) ^ I * P(0)
Next I
PS = N * R ^ (N + 1) * P(0) / ((N - R) ^ 2 * Application.WorksheetFunction.Fact(N))
Worksheets(1).Cells(5, 1).Value = "Исходные данные:"
Worksheets(1).Cells(6, 1).Value = "-число каналов:"
Worksheets(1).Cells(6, 4).Value = N
Worksheets(1).Cells(7, 1).Value = "-интенсивность потока заявок:"
Worksheets(1).Cells(7, 4).Value = L
Worksheets(1).Cells(8, 1).Value = "-интенсивность потока обслуж.:"
Worksheets(1).Cells(8, 4).Value = M
Worksheets(1).Cells(9, 1).Value = "-коэффициент нагрузки канала:"
Worksheets(1).Cells(9, 4).Value = R
Worksheets(1).Cells(10, 1).Value = "Результаты расчета:"
Worksheets(1).Cells(11, 1).Value = "-вероятность отказа:"
Worksheets(1).Cells(11, 4).Value = 0
Worksheets(1).Cells(12, 1).Value = "-отн. пропускная способность:"
Worksheets(1).Cells(12, 4).Value = 1
Worksheets(1).Cells(13, 1).Value = "-ср. число занятых каналов:"
Worksheets(1).Cells(13, 4).Value = R
Worksheets(1).Cells(14, 1).Value = "-ср. число заявок в очереди:"
Worksheets(1).Cells(14, 4).Value = PS
Worksheets(1).Cells(15, 1).Value = "-вероятности состояний:"
For I = 0 To NM
IC = I + 16
Worksheets(1).Cells(IC, 1).Value = I
Worksheets(1).Cells(IC, 2).Value = P(I)
Next I
If ФлажокДиаграмма = True Then
For I = 0 To NM
If P(I) <= 0.000001 Then P(I) = 0
Next I
Call Diagramma(NM, X, P)
End If
Else
ir = MsgBox("Финальные вероятности не существуют и очередь неограниченно возрастает.", vbExclamation)
End If
End Sub
Private Sub ПолеКаналы_Change()
End Sub
Sub Diagramma(NM, X, P)
Range("E20").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("E20")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = X
ActiveChart.SeriesCollection(1).Values = P
ActiveChart.SeriesCollection(1).Name = "Вероятности состояний СМО"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"
ActiveChart.HasLegend = False
End Sub
ПРИЛОЖЕНИЕ Д
Текст программы расчета характеристик СМО с ограниченной очередью в MATLAB
%Характеристики многоканальной СМО
%с ограниченной длиной очереди M/M/n:m
clc
clear all, close all
%Ввод исходных данных
prompt = {'Число каналов СМО M/M/n:m:','Число мест в очереди',...
'Интенсивность потока заявок:',...
'Интенсивность потока обслуживаний:'};
dlg_title = 'Ввод данных';
num_lines = 1;
def = {'2','3','2','2'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
%--------------------
if isempty(answer)~=1
%--------------------
n=str2num(answer{1});
m=str2num(answer{2});
lambda=str2num(answer{3});
mu=str2num(answer{4});
%Расчет характеристик СМО M/M/n:m
rho=lambda/mu;
rho_n=rho/n;
k=1:n;
pv=rho.^k./factorial(k);
r=1:m;
pv(n+1:n+m)=pv(n)*rho_n.^r;
p0=1/(1+sum(pv));
p=[p0 pv*p0];
figure('Name','Вероятности состояний СМО M/M/n:m',...
'NumberTitle','off')
bar(0:n+m,p), hold on
bar(n+1:n+m,p(n+2:n+m+1),'g')
grid
xlim([-1 n+m+1])
xlabel('k')
ylabel('p_k')
P_idle=p0; P_block=p(end);
P_nq=sum(p(1:n+1)); P_q=sum(p(n+2:n+m+1));
Q=1-P_block; A=lambda*Q;
k_mean=A/mu;
r_mean=sum(r.*p(n+2:n+m+1));
z_mean=k_mean+r_mean;
title(['\lambda = ',num2str(lambda),', \mu = ',num2str(mu)])
disp('Характеристики СМО M/M/n:m')
disp('--------------------------')
disp('Исходные данные')
disp('---------------')
disp(['Число каналов: ',num2str(n)])
disp(['Число мест в очереди: ',num2str(m)])
disp(['Интенсивность потока заявок: ',num2str(lambda)])
disp(['Интенсивность потока обслуживаний: ',num2str(mu)])
disp(['Коэффициент нагрузки канала: ',num2str(rho)])
disp(['Приведенный коэффициент нагрузки канала: ',num2str(rho_n)])
disp('------------------')
disp('Результаты расчета')
disp('------------------')
disp('Вероятности состояний:')
for k=0:n+m;
disp(['p(',num2str(k),') = ',num2str(p(k+1))])
end
disp(['Вероятность простоя: ',num2str(P_idle)])
disp(['Вероятность отказа: ',num2str(P_block)])
disp(['Вероятность отсутствия очереди: ',num2str(P_nq)])
disp(['Вероятность наличия очереди: ',num2str(P_q)])
disp(['Относительная пропускная способность: ',num2str(Q)])
disp(['Абсолютная пропускная способность: ',num2str(A)])
disp(['Среднее число занятых каналов: ',num2str(k_mean)])
disp(['Среднее число заявок в очереди: ',num2str(r_mean)])
disp(['Среднее число заявок в системе: ',num2str(z_mean)])
disp(['Среднее время обслуживания: ',num2str(k_mean/lambda)])
disp(['Среднее время ожидания: ',num2str(r_mean/lambda)])
disp(['Среднее время пребывания в системе: ',num2str(z_mean/lambda)])
%--------------------
end
%--------------------
ПРИЛОЖЕНИЕ Е
Текст программы расчета характеристик СМО с ограниченной очередью на VBA
Private Sub НадписьНагрузка_Click()
End Sub
Private Sub НадписьЧисло_Click()
End Sub
Private Sub ПолеВремя_Change()
End Sub
Private Sub ПолеЗаявки_Change()
End Sub
Private Sub ПолеОбслуживания_Change()
End Sub
Private Sub ПолеЧисло_Change()
End Sub
Private Sub ФлажокДиаграмма_Click()
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub КнопкаОтмена_Click()
РасчетСМО.Hide
End Sub
Private Sub КнопкаРасчет_Click()
Dim N, NP, L, M, R, S, S1, S2, PS, NQ As Double
Dim I, NM, IC As Integer
Dim P(), X() As Double
If IsNumeric(ПолеКаналы.Text) = False Then
ICh = MsgBox("Введите правильно значение числа каналов!", vbExclamation)
ПолеКаналы.SetFocus
Exit Sub
End If
If IsNumeric(ПолеЗаявки.Text) = False Then
ir = MsgBox("Введите правильно значение интенсивности потока заявок!", vbExclamation)
ПолеЗаявки.SetFocus
Exit Sub
End If
If IsNumeric(ПолеОбслуживания.Text) = False Then
ir = MsgBox("Введите правильно значение интенсивности потока обслуживаний!", vbExclamation)
ПолеОбслуживания.SetFocus
Exit Sub
End If
If IsNumeric(ПолеЧисло.Text) = False Then
ir = MsgBox("Введите правильно значение наибольшего числа заявок в очереди!", vbExclamation)
ПолеЧисло.SetFocus
Exit Sub
End If
N = CInt(ПолеКаналы.Text)
L = CDbl(ПолеЗаявки.Text)
M = CDbl(ПолеОбслуживания.Text)
NP = CDbl(ПолеЧисло.Text)
R = L / M
NM = N + NP
ReDim P(NM), X(NM)
For I = 0 To NM
X(I) = I
Next I
S = 0
For I = 0 To N
S = S + R ^ I / Application.WorksheetFunction.Fact(I)
Next I
S1 = 0
S2 = 0
For I = 1 To NP
S1 = S1 + (R / N) ^ I
S2 = S2 + I * (R / N) ^ I
Next I
S1 = S1 * R ^ N / Application.WorksheetFunction.Fact(N)
P(0) = 1 / (S + S1)
NQ = S2 * R ^ N / Application.WorksheetFunction.Fact(N) * P(0)
For I = 1 To N
P(I) = R ^ I / Application.WorksheetFunction.Fact(I) * P(0)
Next I
For I = 1 To NP
P(N + I) = R ^ (N + I) / (N ^ I * Application.WorksheetFunction.Fact(N)) * P(0)
Next I
Worksheets(1).Cells(5, 1).Value = "Исходные данные:"
Worksheets(1).Cells(6, 1).Value = "-число каналов:"
Worksheets(1).Cells(6, 4).Value = N
Worksheets(1).Cells(7, 1).Value = "-интенсивность потока заявок:"
Worksheets(1).Cells(7, 4).Value = L
Worksheets(1).Cells(8, 1).Value = "-интенсивность потока обслуж.:"
Worksheets(1).Cells(8, 4).Value = M
Worksheets(1).Cells(9, 1).Value = "-коэффициент нагрузки канала:"
Worksheets(1).Cells(9, 4).Value = R
Worksheets(1).Cells(10, 1).Value = "-длина очереди:"
Worksheets(1).Cells(10, 4).Value = NP
Worksheets(1).Cells(11, 1).Value = "Результаты расчета:"
Worksheets(1).Cells(12, 1).Value = "-вероятность отказа:"
Worksheets(1).Cells(12, 4).Value = P(N + NP)
Worksheets(1).Cells(13, 1).Value = "-отн. пропускная способность:"
Worksheets(1).Cells(13, 4).Value = 1 - P(N + NP)
Worksheets(1).Cells(14, 1).Value = "-ср. число заявок в очереди:"
Worksheets(1).Cells(14, 4).Value = NQ
Worksheets(1).Cells(15, 1).Value = "-ср. число занятых каналов:"
Worksheets(1).Cells(15, 4).Value = R * (1 - P(N + NP))
Worksheets(1).Cells(16, 1).Value = "-вероятности состояний:"
For I = 0 To NM
IC = I + 17
Worksheets(1).Cells(IC, 1).Value = I
Worksheets(1).Cells(IC, 2).Value = P(I)
Next I
If ФлажокДиаграмма = True Then
For I = 0 To N + NP
If P(I) <= 0.000001 Then P(I) = 0
Next I
Call Diagramma(NM, X, P)
End If
End Sub
Private Sub ПолеКаналы_Change()
End Sub
Sub Diagramma(NM, X, P)
Range("E20").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("E13")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = X
ActiveChart.SeriesCollection(1).Values = P
ActiveChart.SeriesCollection(1).Name = "Вероятности состояний СМО"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"
ActiveChart.HasLegend = False
End Sub
Размещено на Allbest.ru
...Подобные документы
Торговый центр как однофазная многоканальная система с одной очередью конечной длины Структура и элементы моделей системы массового обслуживания. Очередь и дисциплины ее обслуживания. Принципы и этапы моделирования средств массового обслуживания на ЭВМ.
лабораторная работа [93,2 K], добавлен 04.06.2009Построение модели одноканальной системы массового обслуживания с отказами с использованием блоков библиотеки SimEvents. Проведение экспериментов, определение статистических и вероятностных характеристик системы в стационарном режиме; листинг моделей.
лабораторная работа [384,4 K], добавлен 20.05.2013Система массового обслуживания как одна из основных моделей, используемых инженерами-системотехниками, примеры: телефонные станции, ремонтные мастерские, билетные кассы. Характеристика и особенности многоканальной системы массового обслуживания.
контрольная работа [404,2 K], добавлен 19.11.2012Сравнительный анализ характеристик эффективности функционирования многолинейных систем массового обслуживания с отказами по пропускной способности, среднему числу заявок и времени их пребывания в системе. Оценка ожидаемого дохода и дисперсии дохода СМО.
курсовая работа [721,8 K], добавлен 16.05.2015Программные средства имитационного моделирования систем массового обслуживания. Программная среда Matlab, ее структура и основные компоненты, функциональные особенности, а также назначение. Разработка подсистем моделирования. Инструкция пользователя.
дипломная работа [3,3 M], добавлен 10.07.2017Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.
курсовая работа [487,4 K], добавлен 18.12.2014Методика и особенности составления имитационной модели системы массового обслуживания (СМО). Анализ и статистическая обработка показателей эффективности СМО путем решения уравнения Колмогорова, их сравнение с результатами аналитического моделирования.
курсовая работа [609,2 K], добавлен 31.01.2010Понятие, назначение и классы систем массового обслуживания. Создание имитационной модели вычислительного центра коллективного пользования в среде Matlab Simulink. Построение многоканальных СМО с отказами каналами; расчет показателей их эффективности.
курсовая работа [864,6 K], добавлен 26.06.2014Проектирование и реализация модели, которая будет имитировать автозаправочную станцию с постоплатой. Подбор оптимальных параметров модели с учетом требований к сети массового обслуживания. Разработка модели в среде имитационного моделирования GPSS World.
контрольная работа [279,5 K], добавлен 16.03.2014Системы, описывающие массовое обслуживание. Разработка системы массового обслуживания для магазинов. Постановка в очередь, порядок обслуживания, выбывание из очереди, периодичность попадания в нее. Описание программного модуля, листинг программы.
курсовая работа [171,8 K], добавлен 20.01.2010Построение имитационной модели системы массового обслуживания, список и содержание ее активностей. Блок-схема алгоритма моделирования и текст процедуры. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.
курсовая работа [4,0 M], добавлен 28.05.2013Served Time Generator как генератор интервалов времени обслуживания, общая характеристика. Способы построения модели многоканальной сети массового обслуживания с отказами с использованием блоков библиотеки SimEvents, рассмотрение особенностей сетей.
лабораторная работа [176,8 K], добавлен 20.05.2013Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.
курсовая работа [499,6 K], добавлен 25.12.2013Разработка вероятностных моделей реальных систем обслуживания. Особенности систем массового обслуживания (СМО), удовлетворяющих потребности населения в услугах определенного вида. Требования к функциям СМО на примере медицинского кабинета с тремя врачами.
курсовая работа [3,6 M], добавлен 15.11.2015Основное назначение систем массового обслуживания (СМО): обслуживание потока заявок. Моделирование СМО для стоянки такси, определение характеристик эффективности работы в качестве статистических результатов моделирования. Схема процесса функционирования.
курсовая работа [1,2 M], добавлен 27.12.2011Основные элементы системы массового обслуживания, ее модель, принципы и задачи работы. Выбор входных распределений. Построение генераторов случайных чисел. Логика работы программы, планирование эксперимента. Результаты моделирования и рекомендации.
курсовая работа [2,5 M], добавлен 05.11.2009Программа, моделирующая систему массового обслуживания. Изучение режима функционирования обслуживающей системы и исследование явлений, возникающих в процессе обслуживания. Описание программного модуля, руководство пользователя для работы с программой.
курсовая работа [277,5 K], добавлен 20.01.2010Определение характеристик системы массового обслуживания – вероятность обслуживания заявки, занятости любого канала системы, среднее число занятых каналов. Описание блок-схемы алгоритма. Разработка имитационной и аналитической моделей и их сравнение.
курсовая работа [860,4 K], добавлен 24.12.2013Создание библиотеки классов имитационного моделирования и реализация алгоритма имитационного моделирования системы массового обслуживания "Модель комиссионного магазина". Использование для разработки среды программирования C++. Словарь предметной области.
курсовая работа [581,0 K], добавлен 23.01.2013Характеристика системы массового обслуживания, куда поступают заявки обслуживания. Особенности моделирования системы массового обслуживания. Имитация работы системы массового обслуживания с относительными приоритетами. Отчеты полного факторного плана.
курсовая работа [1,1 M], добавлен 14.07.2012