|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Приложение 2.
Приложение 3. Приложение 4.
Приложение 5.
Приложение 6. Листинг программы. 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. |
|