Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3.1.5.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
424.66 Кб
Скачать

8. Список используемой литературы.

  1. Гмурман В. Е., «Теория вероятностей и математическая статистика». М: Высшая школа, 1977.

  2. Овчаров Л. А., «Прикладные задачи теории массового обслуживания», Москва, Машиностроение, 1969.

  3. ГОСТ 19.105-78. ЕСПД. «Общие требования к программным документам».

  4. Южаков А.А., «Прикладная теория СМО», Пермь, ПГТУ, 2004.

9. Приложения

Приложение 1. Листинги программ моделирования.

{Имитационное моделирование}

const

lambda=3.57; {Интенсивность простейшего входящего потока}

muz=1.213; {Интенсивность простейшего потока освобождения канала}

mu=0.38; {Интенсивность простейшего потока обслуживания заявок}

time_t=1000000; {Время моделирования}

n_kanalov=5; {Число каналов обслуживания}

var

kolvo,otkaz:longint; {Кол-во заявок, кол-во отказов, кол-во выполненных заявок}

vypolneno:real;

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; {Массив, в котором хранится кол-во заявок, выполненных каждым каналом}

Pobs,lambda0,Pzk:real; {Вероятность обслуживания и вероятность занятости канала}

tpk:real; {Среднее время простоя канала}

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+mu/muz;

end;

end;

if (t>=t_z0) then {Генерация прихода новой заявки}

begin

t_z:=-100/lambda*ln((random(1000)+1)/1000); {генерация случайного интервала между заявками}

t_z0:=t_z0+t_z;

inc(kolvo);

for i:=1 to n_kanalov do {Проверяем, есть ли у нас свободные каналы, чтобы поставить заявку на

begin {обслуживание}

if (n[i]=0) then {Если есть свободный канал, то заявка ставится на обслуживание}

begin

t_obs:=-100/muz*ln((random(1000)+1)/1000); {Генерация времени обслуживания заявки}

n[i]:=t+t_obs; {Записываем время окончания обслуживания заявки}

t_zan[i]:=t_zan[i]+t_obs; {Общее время занятости i-го канала}

n_vyp[i]:=n_vyp[i]+1; {Число заявок, выполненных i-тым каналом}

ok:=1; {Заявка поставлена на обслуживание}

break;{Заявка поставлена на обслуживание, поэтому нет }

end; {надобности далее искать свободные каналы}

end;

if (ok<>1) then inc(otkaz); {если заявка не встала на обслуживание, то увеличивается счётчик отказов}

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 tpk:=tpk+(time_t-t_zan[i])/n_vyp[i]; {Вычисление среднего времени простоя канала}

tpk:=tpk/n_kanalov;

Pobs:=vypolneno/kolvo;

lambda0:=Pobs*lambda; {Плотность потоков обслуживаюзщих заявок}

writeln('4islo zajavok ',kolvo);

writeln('vypolneno ',vypolneno:5:4);

writeln('Вероятность обслуживания ',Pobs:5:3);

writeln('Вероятность занятости канала ',Pzk:5:3);

writeln('Среднее время простоя канала ',tpk/100:5:3);

writeln('lambda0 ',lambda0:5:3);

writeln('vero obsluя ',Pobs:5:3);

writeln('ver zanjatosti ',Pzk:5:3);

writeln('srednee vremja prostpja ',tpk:5:3);

readln;

end.

{Расчёт параметров аналитической модели}

program an_model;

const

lambda=3.57; {Интенсивность простейшего входящего потока}

muz=1.213; {Интенсивность простейшего потока освобождения канала}

mu=0.38; {Интенсивность простейшего потока обслуживания заявок}

muz=1.091; {Интенсивность потока обслуживания заявок}

mu=0.383;

const_alfa=5.19431714;{загрузка системы}

n_kanalov=3; {Количество каналов обслуживания}

var

i:integer; {Счётчик}

Pobs,Pzk,tpk:real; {Вероятность обслуживания, вероятность занятости канала, среднее время простоя канала}

function R_func(m:integer;alfa:real):real;

var

i,j:integer;

factorial:longint;

stepen,r_zn:real;

begin

R_zn:=0;

for i:=0 to m do

begin

factorial:=1; {Вычисление факториала}

for j:=0 to i do if (j=0) then factorial:=1 else factorial:=factorial*j;

stepen:=alfa; {Вычисление степени}

for j:=0 to i do stepen:=stepen*alfa;

R_zn:=R_zn+stepen/factorial;

end;

R_func:=R_zn;

end;

begin {Вычисление требуемых параметров аналитической модели}

Pobs:=mu/muz*R_func(n_kanalov-1,const_alfa)/R_func(n_kanalov,const_alfa);

Pzk:=const_alfa/n_kanalov*R_func(n_kanalov-1,const_alfa)/R_func(n_kanalov,const_alfa);

tpk:=1/muz*(1-pzk)/pzk;

lambda0:=Pobs*lambda;

writeln('lambda0 ',lambda0:5:3);

writeln('Вероятность обслуживания ',Pobs:5:3);

writeln('Вероятность занятости канала ',Pzk:5:3);

writeln('Среднее время простояя канала ',tpk:5:3);

end.

Приложение 2. Таблицы результатов моделирования.

Таблица 1. Результаты имитационного моделирования:

Число каналов обслуживания,

Номер реализации

1

0,530

0,704

0,243

2

0,535

0,701

0,237

3

0,538

0,704

0,243

4

0,538

0,701

0,249

5

0,538

0,699

0,228

6

0,529

0,705

0,239

7

0,529

0,707

0,249

8

0,535

0,703

0,254

9

0,531

0,706

0,239

10

0,533

0,701

0,240

среднее

0,5336

0,7031

0,2421

1

0,744

0,642

0,303

2

0,741

0,651

0,287

3

0,742

0,644

0,285

4

0,742

0,649

0,287

5

0,743

0,648

0,299

6

0,738

0,646

0,292

7

0,737

0,654

0,299

8

0,735

0,652

0,302

9

0,742

0,648

0,287

10

0,743

0,648

0,292

среднее

0,7407

0,6482

0,2933

1

0,901

0,587

0,375

2

0,896

0,593

0,372

3

0,894

0,587

0,388

4

0,890

0,594

0,353

5

0,899

0,590

0,374

6

0,891

0,592

0,367

7

0,891

0,593

0,345

8

0,896

0,594

0,371

9

0,897

0,588

0,357

10

0,891

0,519

0,357

среднее

0,8946

0,5837

0,3659

Таблица 2. Сравнение результатов имитационного и аналитического моделирования:

Число каналов обслуживания,

Искомый параметр

Аналитическая модель

Имитационная модель

0,5338

0,5336

0.7131

0,7031

0.2400

0,2421

0,7459

0,7407

0.6531

0,6482

0.3110

0,2933

0,8912

0,8946

0.5923

0,5837

0.3417

0,3659

Приложение 3. Графики, полученные в результате моделирования.

График 1. Зависимость плотности потока обслуживающих заявок от числа приборов для аналитической и имитационной моделей.

График 2. Зависимость вероятности занятости канала от числа приборов для аналитической и имитационной моделей

График 3. Зависимость среднего времени простоя канала от числа приборов для аналитической и имитационной моделей.

Приложение 4. Блок-схема алгоритма имитационной модели.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]