Главная Обратная связь

Дисциплины:






Точность и вероятность в имитации СМО



 

Обработка интенсивностей потоков запросов имеет несколько особенностей. Интенсивности могут быть числами не целыми и их интерпретация такова: целая часть интенсивности является постоянной величиной, а дробная до точности 0.01 отвечает за вероятностную часть интенсивности. Например, если на СМО поступают запросы с интенсивностью 15.24. Это значит что 15 запросов будет поступать в каждый момент времени, а один дополнительный запрос будет поступать на СМО с вероятностью 0.24 (6 раз из двадцати пяти). Для подтверждения или отвержения дополнительного заказа в каждую единицу времени генерируется случайная величина (от 0.00 до 1) и запрос подтверждается, в данном случае, если она попадает в промежуток [0,0.24] т.е. если случайная величина меньше дробной части интенсивности. В данной СМО только интенсивность поступающих на СМО запросов может быть больше единицы т.к. эта интенсивность за единицу времени, интенсивности ухода из СМО обработанных и “нетерпеливых” запросов изменяется от нуля до единицы т.к. эта интенсивность относительно кол-ва обрабатываемых заказов и стоящих в очереди заказов соответственно. Например, если в очереди стоит k=36 запросов, а интенсивность ухода “нетерпеливых” запросов v=0.1. Это значит что каждый из 36 заказов может покинуть очередь в каждый момент времени с вероятностью 0.1 (или иначе: каждый десятый запрос уходит из очереди в каждый момент времени).

 

Алгоритм имитации работы СМО

 

Имитация СМО осуществляется пошагово специальной программой, которая прилагается к данной работе. Алгоритм ее работы построен на хранении и пошаговом изменении (на каждой итерации), в соответствии с описанными в теоретических разделах правилами, переменных состояния СМО. Алгоритм реализован на языке Pascal в среде разработки Borland Pascal 7.0.

Исходный код программы приведен в приложении, а объяснение переменных следующее:

 

 

П. тип Описание
otkaz integer Кол-во отказов на текущий момент времени
obsluj Integer Кол-во обслуженных
K Integer Счетчик кол-ва заявок
ii Integer Указатель на свободный канал
fin real Время окончания
Tin Array of real Массив для хранения времени поступления заявки и времени затрачиваемой на ее выполнение.
Status Boolen Массив для хранения состояния всех каналов
U TEXT Файловая переменная
n Integer Количество каналов в системе

 

 

Описание Процедур и Функций.

1. TimeIn – функция которая служит для определения времени поступления и ухода заявки.



2. Sta – функция определения свободного канала.

3. WriteZn – для вывода информации о состоянии каналов

 

Текст программы.

 

Uses crt;

const n=4;

TYPE int=array [1..n,1..2] of real;

var b1,b,t,zin,zout,lambda,nu,fin:real;

ii,i,j,otkaz,obsluj:integer;

k:longint;

Tin:int ;

Status: array [1..n] of boolean;

tt:TEXT;

{-------------- Функции пользователя ----------- }

function timein: real;

Begin

timein:=(1-sqrt(1-random(100)/100));

End ;

function sta(var t:real; time:int) : integer;

Label exitt;

var i,j:integer;

Begin

sta:=0;

for i:=1 to n do

if time[i,1]+time[i,2]<t then begin sta:=i; goto exitt; end;

exitt : end;

procedure writezn(var y:int;var tt:text);

var i:integer;

Begin

for i:= 1 to n do

writeln(tt,'Время поступления ',Y[i,1]:2:2,' время обслуживания ',Y[i,2]:2:2,' Окончание ',Y[i,2]+Y[i,1]:2:2)

End;

{--------------- Конец Функций ------------------ }

Begin

Clrscr;

Randomize;

lambda:=12;

nu:=2;

t:=0;

fin:=1.5;

b:=2/lambda;

b1:=2/nu;

otkaz:=0;obsluj:=0;

for i:=1 to n do begin

status[i]:=true;

for j:=1 to 2 do

Tin[i,j]:=0;

End;

{ вычисление времени прихода заявок }

assign(tt,'res.dat');

Rewrite(tt);

t:=0;

k:=1;

Repeat

zin:=b*timein;

t:=t+zin;

if sta(t,Tin)<>0 then begin ii:=sta(t,Tin); tin[ii,1]:=t;

tin[ii,2]:=b1*timein;

obsluj:=obsluj+1;

End

else otkaz:=otkaz+1;

Writezn(Tin,tt);

writeln(tt,'Время прихода ',k,'-ой заявки ',t:2:2);

writeln('free chanel ',ii);

k:=k+1;

Writeln(tt);

writeln(tt,'кол-во отказов = ',otkaz);

writeln(tt,'кол-во обслуженых = ',obsluj);





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...