Автор: Пользователь скрыл имя, 19 Декабря 2010 в 15:54, лабораторная работа
Объектом исследования данной работы является система противоракетной обороны (ПРО). Будем рассматривать систему ПРО как систему массового обслуживания, т.е. как -канальную систему, на вход которой поступают ракеты противника. Ракеты, пролетающие в пределах полосы налета, могут быть обстреляны любым из каналов данной системы ПРО.
Ширина полосы налета определяется возможностями обстрела всеми n каналами любой цели в пределах полосы налета. Предполагается, что если ракета летит выше пределов полосы налета (слева или справа), то эти ракеты не могут быть обстреляны ни одним из n каналов данной системы ПРО.
Техническое задание 3
Введение 4
Разработка имитационной модели 8
Математическое описание имитационной модели. 8
Описание блок-схемы алгоритма. 9
Анализ полученных результатов 13
Разработка аналитической модели. 14
Математическое описание аналитической модели 14
Расчёт параметров СМО. 16
Анализ полученных результатов моделирования. 18
Выводы 19
Список используемой литературы 20
Приложения 21
Приложение 1 (листинг программы для имитационного моделирования) 21
Приложение 2 (листинг программы для аналитического моделирования) 23
Приложение 3. Таблицы результатов моделирования. 24
Приложение 4. Графики, полученные в результате моделирования. 25
0= P3λ+(6μ+5η)P5 – P4λ - (6μ+4η)P4
0= P4λ+(6μ+6η)P6 – P5λ - (6μ+5η)P5
0= P5λ – P6(6μ+6η)
1=P0
+ P1 + P2 + P3
+ P4 + P5 + P6
Вероятность обслуживания:
Вероятность занятости канала:
Среднее число занятых каналов: k=2.781
В результате аналитического моделирования получены интересующие нас вероятностные характеристики системы. При аналитическом моделировании система ПРО рассматривалась в виде графа гибели и размножения, что позволило определить вероятности состояний из системы уравнений. Также эти характеристики могут быть посчитаны по заранее известным формулам. Результаты аналитического моделирования представлены также в Приложении 3. А требуемые графики в Приложении 4. Также была исследована зависимость вероятностных характеристик системы от числа обслуживающих приборов. При увеличении числа обслуживающих приборов от 2 до 4 были выявлены следующие закономерности: плотности потока обслуживающих заявок возрастает, среднего числа занятых каналов увеличивается.
В процессе выполнения данной индивидуальной работы мы познакомились с системами массового обслуживания на примере системы ПРО с отказами и частичной взаимопомощью. Данная система ПРО была рассмотрена как система массового обслуживания с отказами и частичной взаимопомощью между каналами обслуживания.
Для заданной системы были построены две модели: аналитическая модель и имитационная модель. Обе системы рассматриваются при следующих упрощениях: рассматривается простейший пуассоновский поток входящих заявок, простейший пуассоновский поток обслуживания, а также система работает в стационарном режиме. В аналитической модели можно путем решения алгебраической системы уравнений определить вероятностные характеристики системы: вероятность обслуживания, плотность потока обслуживающих заявок, среднее число занятых каналов.
Имитационная модель строилась с учетом всех особенностей функционирования реальной системы и поэтому она достаточно точно описывает все вероятностные процессы. В основу имитационной модели положено рассмотрение работы системы на некотором отрезке времени. В результате этого можно определить вероятностные характеристики системы.
Также была выявлена зависимость вероятностных характеристик системы от числа обслуживающих приборов, были получены следующие закономерности. Проводя моделирование при увеличении числа обслуживающих приборов от 2 до 4, наблюдаем:
Соответствующие зависимости в виде графиков представлены в Приложении 4.
const
lambda=4.52; {Интенсивность простейшего входящего потока}
mu=0.975; {Интенсивность простейшего потока обслуживания}
eta=0.703; {Параметр нетерпимости заявки}
time_t=1000000; {Время моделирования}
n_kanalov=3; {Число каналов обслуживания}
l=3; {Параметр взаимопомощи}
var
n_svob,p:integer; {кол-во свободных в данный момент приборов}
vypolneno:real;
{Количество выполненных
kolvo,otkaz:longint; {Кол-во заявок, кол-во отказов}
i,ok:integer;
t:longint;
{Текущее время при
t_z0,t_z,t_obs:real; {Интервалы
обслуживания и занятости
n:array[1..n_kanalov] of real;{Массив,
в котором хранится время
t_zan:array[1..n_kanalov] of real;{Массив, в котором хранится общее время занятости каждого канала во время моделирования}
n_vyp:array[1..n_kanalov] of integer;{Массив, в котором хранится кол-во заявок, выполненных каждым каналом}
n_l_z:array[1..n_kanalov] of integer;
Pobs:real; {Вероятность обслуживания }
Lo,tpk,ksr:real; {Среднее
число занятых кан и
n_zero:array[1..l] of integer; {Номера свободных в данный момент каналов обслуживания}
begin
randomize;
t_z0:=0;
kolvo:=0;
otkaz:=0;
vypolneno:=0;
for i:=0 to n_kanalov do {Начальное обнуление параметров}
begin
n_vyp[i]:=0;
t_zan[i]:=0;
end;
for t:=0 to time_t do {Основной цикл моделирования}
begin
for i:=1 to n_kanalov do {Цикл проверки окончания обслуживания заявки}
begin
if ((t>=n[i])AND(n[i]<>0)) then {Если текущее время больше, чем}
begin
n[i]:=0;
vypolneno:=vypolneno+1/n_l_z[
n_l_z[i]:=0;
end;
end;
if (t>=t_z0) then {Генерации прихода новой заявки}
begin
t_z:=-100/lambda*ln((random(
t_z0:=t_z0+t_z;
inc(kolvo);
n_svob:=0;
for i:=1 to l do n_zero[i]:=0; {Обнуляется массив номеров свободных каналов}
p:=1;
for i:=1 to n_kanalov do
{Цикл поиска свободных
begin
if (n[i]=0) then
begin
inc(n_svob);
n_zero[p]:=i;
inc(p);
end;
end;
if (n_svob>=l) then begin {если число свободных каналов больше, чем l, то
поступившая заявка обслуживается l}
t_obs:=-100/(l*mu+eta)*ln((
живания заявки}
for i:=1 to l do {Распределяем обслуживание заявки по l каналам}
begin
n[n_zero[i]]:=t+t_obs; {Записываем время окончания обслуживания заявки}
n_l_z[n_zero[i]]:=l;
t_zan[n_zero[i]]:=t_zan[n_
го канала}
n_vyp[n_zero[i]]:=n_vyp[n_
каналом}
ok:=1;
end;
end
else
if (n_svob>0)AND(n_svob<l) then begin {если число свободных каналов меньше,
чем l, то поступившая заявка обслужи}
t_obs:=-100/(n_svob*mu+eta)*
служивания заявки}
for i:=1 to n_svob do {Распределяем обслуживание заявки по оставшимся сво
бодным каналам}
begin
n[n_zero[i]]:=t+t_obs;
ния заявки}
n_l_z[n_zero[i]]:=n_svob;
t_zan[n_
канала}
n_vyp[n_zero[i]]:=n_
каналом}
ok:=1;
end;
end
else ok:=0;
if (ok<>1) then inc(otkaz); {Если заявка не поставлена на обслуживание, то увели
чивается счё1тчик отказов на еди}
end;
end; {Окончание основного цикла моделирования}
{Вычисление
pzk:=0;
for i:=1 to n_kanalov do pzk:=pzk+t_zan[i]/time_t;
pzk:=pzk/n_kanalov; {Вычисление вероятности занятости канала}
tpk:=0;
for i:=1 to n_kanalov do if
(n_vyp[i]<>0) then tpk:=tpk+(time_t-t_zan[i])/n_
ksr:=pzk*n_kanalov; {Вычисление среднего числа занятых каналаов}
Pobs:=(kolvo-otkaz)/kolvo;
{Вычисление вероятности
writeln('Число заявок ',kolvo);
writeln('Выполнено ',vypolneno:5:0);
writeln('Вероятность обслуживания ',Pobs:5:3); {Вывод результатов моделирования}
writeln('Вероятность занятости канала ',pzk:5:3);
writeln('Среднее
число занятых каналов ',ksr:5:
readln;
end.
uses crt;
const l=4.52;
m=0.703;
n=6;
ll=3;
k=2000;