Смекни!
smekni.com

Моделирование 2-х канальной системы массового обслуживания с отказами (стр. 4 из 4)

Листинг программы.

PROGRAM CAN_SMO;

TYPE

CHANNAL = (FREE, CLAIM1, CLAIM2);

TIME = word;

INTENSITY = word;

STATISTICS = word;

VAR

CHANNAL1, CHANNAL2 : CHANNAL;{Каналы }

_T_, t, tc1, tc2 : TIME; {Время}

l1, l2, n1, n2 : INTENSITY; {Интенсивности }

served1, not_served1,

served2, not_served2,

S : STATISTICS; {Статистика}

M,N:INTEGER;{число реализаций}

FUNCTION W(t : TIME; l : INTENSITY) : boolean;{Определяет появилась ли заявка}

Begin {по интенсивности потока l}

if random < l/60 then W := TRUE else W := FALSE;

End;

FUNCTION F(t : TIME; n : INTENSITY) : TIME;{Определяет сколько будет обрабатываться заявка}

Begin {по интенсивности обслуживания заявок n}

F := t +round(60/(n));

End;

BEGIN

M:=0;

WRITELN('ВВЕДИТЕ ЧИСЛО РЕАЛИЗАЦИЙ РАБОТЫ СМО');

READLN(N);

REPEAT

M:=M+1;

writeln(M, '-ая реализация');

randomize;

CHANNAL1 := FREE; CHANNAL2 := FREE;

l1 := 3; l2 := 1; n1 := 2; n2 := 1;

served1 := 0; not_served1 := 0;

served2 := 0; not_served2 := 0;

write('Введите время исследования СМО - Т: '); readln(_T_);

repeat

if tc1 = t then

begin

if CHANNAL1 = CLAIM1 then inc(served1) else inc(served2);

CHANNAL1 := FREE;

writeln('Канал1 выполнил заявку');

end;

if tc2 = t then

begin

if CHANNAL2 = CLAIM1 then inc(served1) else inc(served2);

CHANNAL2 := FREE;

writeln('Канал2 выполнил заявку');

end;

if W(t,l1) then

begin

writeln('Поступила заявка1');

if CHANNAL1 = FREE then

begin CHANNAL1 := CLAIM1; tc1 := F(t,n1); writeln('Канал1 принял заявку1'); end

else if CHANNAL2 = FREE then

begin CHANNAL2 := CLAIM1; tc2 := F(t,n1); writeln('Канал2 принял заявку1'); end

else if CHANNAL1 = CLAIM2 then

begin CHANNAL1 := CLAIM1; tc1 := F(t,n1); inc(not_served2); writeln('Канал1 принял заявку1 вместо заявки2'); end

else if CHANNAL2 = CLAIM2 then

begin CHANNAL2 := CLAIM1; tc2 := F(t,n1); inc(not_served2); writeln('Канал2 принял заявку1 вместо заявки2'); end

else begin inc(not_served1); writeln('заявка1 не обслужена'); end;

end;

if W(t,l2) then

begin

writeln('Поступила заявка2');

if CHANNAL1 = FREE then

begin CHANNAL1 := CLAIM2; tc1 := F(t,n2); writeln('Канал1 принял заявку2');end

else if CHANNAL2 = FREE then

begin CHANNAL2 := CLAIM2; tc2 := F(t,n2); writeln('Канал2 принял заявку2');end

else begin inc(not_served2); writeln('заявка2 не обслужена'); end;

end;

inc(t);

until _T_ = t;

S := served1 + not_served1 + served2 + not_served2;

writeln('время работы СМО ',_T_);

writeln('обслужено каналом1: ' ,served1);

writeln('обслужено каналом2: ',served2);

writeln('Поступило заявок : ',S);

writeln('Обслужено заявок : ',served1+served2);

writeln('Не обслужено заявок : ',not_served1+not_served2);

{writeln('Интенсивность поступления заявок в систему : ',(served1+served2)/_T_:2:3);}

writeln('Абсолютная пропускная способность системы : ',(served1+served2)/T:2:3);

writeln('Вероятность отказа : ',(not_served1+not_served2)/S*100:2:1,'%');

writeln('Относительная пропускная способность системы: ',(served1+served2)/S:2:3);

readln;

UNTIL M>=N;

writeln('моделирование закончено');

END.

Список литературы.

1. Фомин Г.П., Математические методы и модели в коммерческой деятельности. М: Финансы и статистика, 2001.

2. Вентцель Е.С., Овчаров Л.А. Теория вероятностей и её инженерные приложения, М: Наука, 1988.

3. Вентцель Е.С. Исследование операций, М:Наука, 1980.

4. Лифшиц А.Л. Статистическое моделирование СМО, М., 1978.

5. Советов Б.А., Яковлев С.А. Моделирование систем, М: Высшая школа, 1985.

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