Модель сети массового обслуживания

Разработка событийной модели сети массового обслуживания дискретной системы, преобразование ее в программно-реализуемую форму. Детерминированный тест для проверки правильности модели. Выполнение пробных прогонов разработанной программной модели.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 17.03.2013
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

КУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра программного обеспечения и администрирования

информационных систем

Контрольная работа

по дисциплине

"Компьютерное моделирование"

Студент Крутоверцева З.С.

Преподаватель: Орлова М.С.

Преподаватель: Бабкин Е.А.

2010 г.

1. Задание

Разработать событийную модель дискретной системы, преобразовать событийную модель в программно-реализуемую форму, разработать программную модель на событийно-ориентированном языке моделирования (SMPL), разработать детерминированный тест для проверки правильности модели, а так же спланировать эксперимент, выполнить эксперимент и проанализировать его результаты для программной модели сети массового обслуживания.

Номер варианта

Вариант структуры СМО

Тип накопителя Н1

Тип накопителя Н2

Окончание процесса моделиро-вания (по числу заявок или по времени)

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

Закон распред.

Интервал или

мат. ожидание

15

СМО5

Бесконечн.

Конечный

По ч.з.

экспон.

500

Модель сети массового обслуживания:

Рисунок 1. Двухфазная сеть массового обслуживания

N1 - входной поток заявок на обслуживание из источника 1

N2 - входной поток заявок на обслуживание из источника 2

N3 - выходной поток обслуженных заявок из источника 1

N4 - выходной поток обслуженных заявок из источника 2

N5 - выходной поток заявок, получивших отказ в обслуживании

Событийный граф СМО в программно-реализуемой форме

eнпм - событие начала моделирования,

eкпм - событие конца моделирования,

eнп1 - событие начала процесса (событие появления заявки из источника1),

eнп2 - событие начала процесса (событие появления заявки из источника2),

eкпN3 - событие конца процесса для обслуженной заявки,

eкпN5 - событие конца процесса для обслуженной заявки,

eна1 - событие начала активности (обслуживание заявки в 1м канале),

eна2 - событие начала активности (обслуживание заявки в 2м канале)

eка1 - событие конца активности (конец обслуживания в 1м канале),

eка2 - событие конца активности (конец обслуживания в 2м канале),

eзS1 - событие занятия средства (канал 1),

eзS2 - событие занятия средства (канал 2),

eоS1 - событие освобождения средства (канал 1),

eоS2 - событие освобождения средства (канал 2),

eзQ1 - событие занятия очереди (накопитель 1),

eзQ2 - событие занятия очереди (накопитель 2),

eоQ1 - событие освобождения очереди(накопитель 1),

eоQ2 - событие освобождения очереди(накопитель 2).

Р1 - анализ состояния средства Sr(канала 1), значения: Зан - "занято", Св - "свободно";

Р2 - анализ состояния очереди Q1, значения: Пуст - "пуста", Непуст - "непуста";

Р3 - анализ состояния, значения: N1, N2;

Р4- анализ состояния средства Sr(канала 2), значения: Зан - "занято", Св - "свободно";

Р5 - анализ количества обработанных заявок в сети (сравнение с достижением желаемого количества К);

Р6- анализ состояния очереди Q2, значения: Пуст - "пуста", Непуст - "непуста";

Р7 - анализ количества обработанных заявок в сети (сравнение с достижением желаемого количества К);

Дуги второго типа помечаются величинами задержки:

Т0 - время поступления первой заявки после начала моделирования;

Тпз1 - интервал времени между поступлениями заявок от источника 1;

Тпз2 - интервал времени между поступлениями заявок от источника 2;

Та1 - время обслуживания заявки в канале 1(длительность активности 1);

Та2 - время обслуживания заявки в канале 2(длительность активности 2);

Рисунок 2. Событийный граф СМО

Рисунок 3. Событийный граф СМО в программно-реализуемой форме

Макрособытийный граф

После преобразования событийного графа в программно-реализуемой форме к форме макрособытий, получается граф, изображенный на рисунке 3.

Рисунок 4. Событийный граф на уровне макрособытий

Программная модель СМО

program model_SMO (input,output);

uses crt,graph,printer,dos;

type

PROCESS=record

PRIORITET: integer;{приоритет текущего пpоцесса}

S0:longint;{уазатель списка текущих пpоцессов}

Ist:integer

end;

var

PR: array [1..1000] of PROCESS;

Sr1:longint; {номеp сpедства}

Sr2:longint; {номеp сpедства}

Q1: longint;{номеp очеpеди}

Q2: longint;{номеp очеpеди}

t: longint;{текущее вpемя моделиpования}

Tob:longint; {максимальное вpемя обслуживания заявки в канале CМО}

Ttob1:longint;{текущее вpемя обслуживания заявки в канале1 CМО}

Ttob2:longint;{текущее вpемя обслуживания заявки в канале2 CМО}

T0:longint; {вpемя поступления пеpвой заявки1 в СМО}

T1:longint; {вpемя поступления пеpвой заявки2 в СМО}

TZ:longint; {сpеднее вpемя интеpвала поступления заявок}

E:longint; {номеp событийной секции}

j0:longint; {номеp текущего пpоцесса}

N10:longint; {число пpиоpитетов в СМО}

i0:integer; {пеpеменная цикла}

N0:integer; {указатель списка текущих пpоцессов}

K,L:integer;

{$i smpl_new.pas}

Procedure E0;

{----------------- ИНИЦИИРУЮЩАЯ СЕКЦИЯ ---------------------}

{----- СОБЫТИЕ 0 - НАЧАЛО ПРОЦЕССА МОДЕЛИРОВАНИЯ -----------}

begin

TZ:=50;Tob:=500;N10:=2;K:=1000;T0:=50;T1:=100;

L:=1;

{---- начальная установка списка текущих пpоцессов ---------}

for I0:=1 to 999 do

PR[I0].S0:=I0+1;

PR[1000].S0:=0;

N0:=1;

{---- начальная установка системы моделиpования ------------}

init;

{----------- объявление сpедства и очеpеди ------------}

equip ('Sredstvo1',Sr1);

queue ('Ochered1',Q1);

equip ('Sredstvo2',Sr2);

queue ('Ochered2',Q2);

{---------- планиpование пеpвого события -------------------}

{ schedl(1,T0,0);

schedl(2,T1,0);}

schedl(2,50,0);

schedl(1,100,0);

schedl(2,150,0);

schedl(2,750,0);

schedl(2,800,0);

schedl(1,1500,0);

{используются для детерменированного тестирования}

end;

Procedure E1;

{---------- СОБЫТИЕ 1 - ПОЯВЛЕНИЕ ЗАПРОСА В СМО от И1 -----------}

begin

{---------- анализ переполнения таблицы процессов ---------}

IF N0=0 THEN begin write('ОШИБКА 10'); exit; end;

{----------- формирование номера нового процесса ----------}

J0:=N0;

N0:=PR[N0].S0;

{------------- формирование атрибутов процесса ------------}

{ PR[J0].PRIORITET:=irand (1,N10);}

PR[J0].Ist:=1;

PR[J0].PRIORITET:=1;{Оператор используется для детеpминиpованного тестирования}

{------------- планирование следующей заявки --------------}

schedl(1,irand(0,TZ),0);

{---------------- планирование события 3 ------------------}

schedl(3,0,j0);

end;

Procedure E2;

{---------- СОБЫТИЕ 2 - ПОЯВЛЕНИЕ ЗАПРОСА В СМО от И2 -----------}

begin

{---------- анализ переполнения таблицы процессов ---------}

IF N0=0 THEN begin write('ОШИБКА 10'); exit; end;

{----------- формирование номера нового процесса ----------}

J0:=N0;

N0:=PR[N0].S0;

{------------- формирование атрибутов процесса ------------}

{ PR[J0].PRIORITET:=irand (1,N10);}

PR[J0].Ist:=2;

PR[J0].PRIORITET:=2;{Оператор используется для детеpминиpованного тестирования}

{------------- планирование следующей заявки --------------}

schedl(2,irand(0,TZ),0);

{---------------- планирование события 2 ------------------}

schedl(3,0,j0);

end;

Procedure E3;

{--------------СОБЫТИЕ 3 --------------}

begin

{----------------- анализ состояния средства 1-------------}

if status(Sr1)=0 then

{--------------------- занятие средства -------------------}

begin

reserv(Sr1,j0);

{ Ttob1:=irand (0,Tob);}

Ttob1:=150;{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(4,Ttob1,j0)

end

else

{------------ помещение процесса в очередь 1 ----------}

enque(Q1,j0,PR[J0].PRIORITET);

end;

Procedure E4;{----- СОБЫТИЕ E4 ------}

begin

{-------------------------- освобождение сpедства1 ----------------------}

releas(Sr1);

schedl(5,0,j0);

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q1)<>0 THEN

begin

j0:=head(q1);

{----------------- zanaytie состояния средства 1-------------}

reserv(Sr1,j0);

{ Ttob1:=irand (0,Tob);}

Ttob1:=150;{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(4,Ttob1,j0)

end

end;

Procedure E5;{--------------СОБЫТИЕ 5 --------------}

begin

{----------------- проверка условия N --------------}

if pr[j0].Ist=1 then

begin

k:=k-1;

{----------------------- конец пpоцесса -------------------}

PR[J0].S0:=N0;

N0:=J0;

if K=0 then schedl(7,0,0);

end

else

{----------------- анализ состояния сpедства --------------}

if status(Sr2)=0 then

begin

reserv(Sr2,j0);

{Ttob1:=irand (0,Tob);}

Ttob2:=500;{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(6,Ttob1,j0)

end

else

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q2)<L THEN

{------------ помещение процесса в очередь диска ----------}

enque(Q2,j0,PR[J0].PRIORITET)

else

{----------------------- конец процесса -------------------}

begin

PR[J0].S0:=N0;

N0:=J0;

end;

end;

Procedure E6;{----- СОБЫТИЕ E6 ------}

begin

{-------------------------- освобождение сpедства1 ----------------------}

releas(Sr2);

{-------------------------- конец процесса ----------------------}

PR[J0].S0:=N0;

N0:=J0;

k:=k-1;

if k=0 then schedl(7,0,0);

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q2)<>0 THEN

begin

j0:=head(q2);

{----------------- zanaytie состояния средства 1-------------}

reserv(Sr2,j0);

{ Ttob2:=irand (0,Tob);}

Ttob2:=500;{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(6,Ttob2,j0)

end;

end;

Procedure E7;

{-------- СОБЫТИЕ 7 - КОНЕЦ ПРОЦЕССА МОДЕЛИРОВАНИЯ --------}

begin

report;

end;

BEGIN {$i+u+r}

{-------------------- УПРАВЛЯЮЩАЯ СЕКЦИЯ -------------------}

E0;

repeat

cause(E,J0);

case E of

1: E1;

2: E2;

3: E3;

4: E4;

5: E5;

6: E6;

7: E7

end;

until E=7;

END.

1. Начало нового процесса, когда средство свободно;

2. Начало нового процесса, когда средство занято;

3. Конца процесса, когда очередь пуста;

4. Конца процесса когда очередь не пуста - в очереди ожидают обслуживания;

5. Конец процесса, когда заявка постуила из первого источника и число заявок меньше К - отказ в обслуживании заявок;

6. Конец процесса, когда заявка постуила из первого источника и число заявок равно К;

7. Начало нового роцесса, когда заявка поступила из второго источника, средство занято и очередь не полна;

8. Начало нового процесса, когода заявка поступила из второго источника, средство занято и очередь полна- полна - отказ в обслуживании заявки;

9. Начало нового процесса, когда заявки поступают из второго источника и средство свободно;

10. Конец процесса, когда заявки поступили из второго источика и очередь пуста;

11. Конца процесса когда заявки поступили из второго источника и очередь не пуста - в очереди ожидают обслуживания заявки;

12. Конца процесса моделирования, когда количество заявок будет равно максимальному количеству заявок k.

Рисунок 5. Временная диаграмма детерминированного теста

Детерминированный тест

Для проведения детерминированного теста необходимо задать следующую последовательность поступления заявок:

Время события

Номер события

Номер процесса

50

2

0

100

1

0

150

2

0

750

2

0

800

2

0

1500

1

0

В соответствии с временной диаграммой правильная последовательность событий должна быть следующей:

Время события

Номер события

Номер процесса

50

2

0

50

3

1

100

1

0

100

3

2

150

2

0

150

3

3

200

5

2

200

4

1

350

5

1

350

4

3

500

5

3

700

6

0

700

6

3

750

2

1

750

3

3

800

2

0

800

3

2

900

5

1

900

4

2

1050

5

2

1200

6

3

1500

1

0

1500

3

2

1650

6

1

1650

7

0

1700

5

2

1700

7

0

Трассировка модели

В результате прогона получили следующее:

Трассировка модели

Время: Событие: Процесс:

50.00 2 0

Трассировка модели

Время: Событие: Процесс:

50.00 3 1

Трассировка модели

Время: Событие: Процесс:

100.00 1 0

Трассировка модели

Время: Событие: Процесс:

100.00 3 2

Трассировка модели

Время: Событие: Процесс:

150.00 2 0

Трассировка модели

Время: Событие: Процесс:

150.00 3 3

Трассировка модели

Время: Событие: Процесс:

200.00 5 2

Трассировка модели

Время: Событие: Процесс:

200.00 4 1

Трассировка модели

Время: Событие: Процесс:

350.00 5 1

Трассировка модели

Время: Событие: Процесс:

350.00 4 3

Трассировка модели

Время: Событие: Процесс:

500.00 5 3

Трассировка модели

Время: Событие: Процесс:

700.00 6 0

Трассировка модели

Время: Событие: Процесс:

700.00 6 3

Трассировка модели

Время: Событие: Процесс:

750.00 2 1

Трассировка модели

Время: Событие: Процесс:

750.00 3 3

Трассировка модели

Время: Событие: Процесс:

800.00 2 0

Трассировка модели

Время: Событие: Процесс:

800.00 3 2

Трассировка модели

Время: Событие: Процесс:

900.00 5 1

Трассировка модели

Время: Событие: Процесс:

900.00 4 2

Трассировка модели

Время: Событие: Процесс:

1050.00 5 2

Трассировка модели

Время: Событие: Процесс:

1200.00 6 3

Трассировка модели

Время: Событие: Процесс:

1500.00 1 0

Трассировка модели

Время: Событие: Процесс:

1500.00 3 2

Трассировка модели

Время: Событие: Процесс:

1650.00 5 2

Трассировка модели

Время: Событие: Процесс:

1650.00 7 0

Трассировка модели

Время: Событие: Процесс:

1700.00 6 1

Трассировка модели

Время: Событие: Процесс:

1700.00 7 0

Анализ результатов

При наблюдении работы модели было установлено ее соответствие эталонным результатам, то есть модель работает верно.

2. Задание

массовое обслуживание программная модель

1. Изучить методические указания к лабораторной работе.

Заданием по данной работе является планирование эксперимента, выполнение эксперимента и анализ его результатов для программной модели сети массового обслуживания, разработанной в предыдущей лабораторной работе. Задание (приложение 3) определяет доверительный интервал и доверительную вероятность.

2. Выполнить планирование эксперимента: выделить все факторы для данной модели, выбрать два фактора (рекомендуются Тз и Тоб.к), разработать полный факторный план и частичный факторный план с изменением факторов по одному.

3. Дополнить разработанную программную модель операторами необходимыми для определения длительности прогона m. Выполнить пробные прогоны разработанной программной модели при различных уровнях факторов для определения длительности прогона m.

4. Выполнить машинный эксперимент. Для этого, задавая каждый раз новые уровни факторов, выполнить n запланированных прогонов. Результаты каждого прогона распечатать.

5. Выполнить анализ и интерпретацию результатов. Вычислить для каждого рабочего прогона значение об.с. Построить графики зависимости об.с, ож, Qср, Qmax от факторов. Выполнить качественный анализ зависимостей: объяснить характер и причины зависимости.

Номер в группе

Доверительный интервал (%)

Доверительная вероятность

15

9

0.975

Планирование эксперимента

Тоб

50

100

250

375

500

600

1

2

3

4

5

650

6

7

8

9

10

700

11

12

13

14

15

900

16

17

18

19

20

1000

21

22

23

24

25

Номер прогона

Тоб

1.

600

50

2.

600

100

3.

600

250

4.

600

375

5.

600

500

6.

650

500

7.

700

500

8.

900

500

9.

1000

500

1 прогон

Рисунок 6

2 прогон

Рисунок 7

3 прогон

Рисунок 8

4 прогон

Рисунок 9.

5 прогон

Рисунок 10

6 прогон

Рисунок 11

7 прогон

Рисунок 12

8 прогон

Рисунок 13

9 прогон

Рисунок 14

Результаты прогонов

N

Тоб.к1

Тоб.к2

Тож1

Тож2

Qср1

Qср2

1

25

25

17

11

0,016

0,002

2

52

51

42

32

0,076

0,01

3

132

123

670

72

3,843

0,051

4

194

182

17032

116

160,637

0,074

5

253

238

20337

152

351,152

0,067

6

252

261

23850

147

284,026

0,081

7

250

257

24294

160

234,829

0,093

8

247

251

12137

166

56,56

0,105

9

252

244

1969

161

7,52

0,083

N

Qm1

Qm2

Nн1

Nн2

Nк1

Nк2

Тоб.с.

1

3

1

138

26

1000

486

78

2

3

1

277

45

1002

511

177

3

23

1

857

107

1008

489

997

4

303

1

1014

126

1018

486

17524

5

686

1

1016

144

1016

460

20980

6

575

1

1034

143

1034

494

24510

7

439

1

1032

150

1032

474

24961

8

98

1

1026

160

1026

493

12801

9

20

1

1000

135

1023

505

2626

Тож.ср1

Тож.ср2

Qm

Тз

Тоб.к

2,346

0,58847737

4

600

50

11,6107784

2,81800391

4

600

100

569,632937

15,7546012

24

600

250

16965,0766

30,0740741

304

600

375

20337

47,5826087

687

600

500

23850

42,5526316

576

650

500

24294

50,6329114

440

700

500

12137

53,8742394

99

900

500

1924,73118

43,039604

21

1000

500

Графики зависимостей

Графики зависимостей Tc,Tож,Qcр от факторов з, об.к приведены на рисунках 15- 26.

Рисунок 15

Рисунок 16

Рисунок 17

Рисунок 18

Рисунок 19

Рисунок 20

Листинг измененной программы

program model_SMO (input,output);

uses crt,graph,printer,dos;

type

PROCESS=record

PRIORITET: integer;{приоритет текущего пpоцесса}

S0:longint;{уазатель списка текущих пpоцессов}

Ist:longint;

end;

const Tst:array[1..500] of real = (12.71, 4.30, 3.18, 2.78, 2.57, 2.45,

2.36, 2.31, 2.26, 2.23, 2.20, 2.18,

2.16, 2.14, 2.13, 2.12, 2.11, 2.10,

2.09, 2.09, 2.08, 2.07, 2.07, 2.06,

2.06, 2.06, 2.05, 2.05, 2.04, 2.04,

2.04, 2.04, 2.04, 2.04, 2.04, 2.04,

2.04, 2.04, 2.04, 2.02, 2.02, 2.02,

2.02, 2.02, 2.02, 2.02, 2.02, 2.02,

2.02, 2.02, 2.02, 2.02, 2.02, 2.02,

2.02, 2.02, 2.02, 2.02, 2.02, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 2.00,

2.00, 2.00, 2.00, 2.00, 2.00, 1.98,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96, 1.96, 1.96, 1.96, 1.96,

1.96, 1.96);

P=0.975;

var

PR: array [1..1000] of PROCESS;

Sr1:longint; {номеp сpедства}

Sr2:longint; {номеp сpедства}

Q1: longint;{номеp очеpеди}

Q2: longint;{номеp очеpеди}

t: longint;{текущее вpемя моделиpования}

Tob:longint; {максимальное вpемя обслуживания заявки в канале CМО}

Ttob1:longint;{текущее вpемя обслуживания заявки в канале1 CМО}

Ttob2:longint;{текущее вpемя обслуживания заявки в канале2 CМО}

T0:longint; {вpемя поступления пеpвой заявки1 в СМО}

T1:longint; {вpемя поступления пеpвой заявки2 в СМО}

TZ:longint; {сpеднее вpемя интеpвала поступления заявок}

E:longint; {номеp событийной секции}

j0:longint; {номеp текущего пpоцесса}

N10:longint; {число пpиоpитетов в СМО}

i0:integer; {пеpеменная цикла}

N0:integer; {указатель списка текущих пpоцессов}

K,L:integer;

Sum:longint; {ёєььр тЁхьхэ юсёыєцштрэш }

SumKv:longint; {ёєььр ътрфЁрЄют тЁхьхэ юсёыєцштрэш }

SrKv:array[1..1000] of real; {юЎхэър ёЁхфэхътрфЁрЄшўхёъюую}

Inter:array[1..1000] of real; {юЎхэър фютхЁшЄхы№эюую шэЄхЁтрыр}

D:array[1..1000] of real; {юЎхэър юЄэ.фютхЁшЄхы№эюую шэЄхЁтрыр}

i:integer; {яхpхьхээр Ўшъыр}

M:integer;

{$i smpl_new.pas}

Procedure Report2;

begin

Clrscr;

GotoXY(5,1);

Write('Tєььр = ', Sum);

GotoXY(5,2);

Write('+шёыю юсёыєцхээvї чр тюъ = ', M);

GotoXY(5,3);

Writeln('+Ўхэър ёЁхфэхът.юЄъы. = ');

for i:=1 to M do

Write('S[',i,']=',SrKv[i],' ');

Writeln;

Writeln('+Ўхэър фютхЁшЄхы№эюую шэЄхЁтрыр:');

for i:=1 to M do

Write('I[',i,']=',Inter[i],' ');

Writeln;

Writeln('+Ўхэър юЄэюёшЄ. фютхЁшЄхы№эюую шэЄхЁтрыр:');

for i:=1 to M do

Write('D[',i,']=',D[i],' ');

readkey;

end;

Procedure E0;

{----------------- ИНИЦИИРУЮЩАЯ СЕКЦИЯ ---------------------}

{----- СОБЫТИЕ 0 - НАЧАЛО ПРОЦЕССА МОДЕЛИРОВАНИЯ -----------}

begin

TZ:=1000;Tob:=250;N10:=2;K:=1000;T0:=100;T1:=200;

L:=1;M:=0;Sum:=0;SumKv:=0;

{---- начальная установка списка текущих пpоцессов ---------}

for I0:=1 to 999 do

PR[I0].S0:=I0+1;

PR[1000].S0:=0;

N0:=1;

{---- начальная установка системы моделиpования ------------}

init;

{----------- объявление сpедства и очеpеди ------------}

equip ('СРЕД1',Sr1);

queue ('ОЧЕР1',Q1);

equip ('СРЕД2',Sr2);

queue ('ОЧЕР2',Q2);

{---------- планиpование пеpвого события -------------------}

schedl(2,T0,0);

schedl(1,T1,0);

{schedl(2,100,0);

schedl(1,200,0);

schedl(2,300,0);

schedl(2,1200,0);

schedl(2,1600,0);

schedl(1,2500,0);}

{используются для детерменированного тестирования}

end;

Procedure E1;

{---------- СОБЫТИЕ 1 - ПОЯВЛЕНИЕ ЗАПРОСА В СМО от И1 -----------}

begin

{---------- анализ переполнения таблицы процессов ---------}

IF N0=0 THEN begin write('ОШИБКА 10'); exit; end;

{----------- формирование номера нового процесса ----------}

J0:=N0;

N0:=PR[N0].S0;

{------------- формирование атрибутов процесса ------------}

{Tbeg[J0]:=t;}

PR[J0].PRIORITET:=irand (1,N10);

PR[J0].Ist:=1;

{PR[J0].PRIORITET:=1;}{Оператор используется для детеpминиpованного тестирования}

{------------- планирование следующей заявки --------------}

schedl(1,irand(0,TZ),0);

{---------------- планирование события 3 ------------------}

schedl(3,0,j0);

end;

Procedure E2;

{---------- СОБЫТИЕ 2 - ПОЯВЛЕНИЕ ЗАПРОСА В СМО от И2 -----------}

begin

{---------- анализ переполнения таблицы процессов ---------}

IF N0=0 THEN begin write('ОШИБКА 10'); exit; end;

{----------- формирование номера нового процесса ----------}

J0:=N0;

N0:=PR[N0].S0;

{------------- формирование атрибутов процесса ------------}

PR[J0].PRIORITET:=irand (1,N10);

PR[J0].Ist:=2;

{PR[J0].PRIORITET:=1;}{Оператор используется для детеpминиpованного тестирования}

{------------- планирование следующей заявки --------------}

schedl(2,irand(0,TZ),0);

{---------------- планирование события 2 ------------------}

schedl(3,0,j0);

end;

Procedure E3;

{--------------СОБЫТИЕ 3 --------------}

begin

{----------------- анализ состояния средства 1-------------}

if status(Sr1)=0 then

{--------------------- занятие средства -------------------}

begin

reserv(Sr1,j0);

Ttob1:=irand (0,Tob);

{Ttob1:=Tob;}{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(4,Ttob1,j0)

end

else

{------------ помещение процесса в очередь 1 ----------}

enque(Q1,j0,PR[J0].PRIORITET);

end;

Procedure E4;{----- СОБЫТИЕ E4 ------}

begin

{-------------------------- освобождение сpедства1 ----------------------}

releas(Sr1);

schedl(5,0,j0);

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q1)<>0 THEN

begin

j0:=head(q1);

{-----------------zanaytie состояния средства 1-------------}

reserv(Sr1,j0);

Ttob1:=irand (0,Tob);

{Ttob1:=Tob;}{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(4,Ttob1,j0)

end;

{---------------- +яpхфхыхэшх фышЄхы№эюёЄш яpюуюэр

ш ўшёыр юсёыєцхээvї чр тюъ---------------}

{ begin

Ttob1:=t-Tbeg[J0];

M:=M+1;

{------------ Tvўшёыхэшх ёєььv ш ёєььv ътрфЁрЄют ------}

{ Sum:=Sum+Ttob1;

SumKv:=SumKv+Ttob1*Ttob1;}

{---------------- Tvўшёыхэшх ёЁхфэхътрфЁрЄшўхёъюую ш

юЎхэъш фютхЁшЄхы№эюую шэЄхЁтрыр --------}

{ if M>1 then

begin

SrKv[M]:= sqrt(abs(SumKv-Sum*Sum)/(M-1));

if M<=500 then Inter[M]:=Tst[M-1]*SrKv[M]/M

else Inter[M]:=Tst[500]*SrKv[M]/M;

D[M]:=Inter[M]/2/Sum*M;

end; }

{end;}

end;

Procedure E5;{--------------СОБЫТИЕ 5 --------------}

begin

{----------------- проверка условия N --------------}

if PR[j0].Ist=1 then

begin

k:=k-1;

{----------------------- конец пpоцесса -------------------}

PR[J0].S0:=N0;

N0:=J0;

if K=0 then schedl(7,0,0);

end

else

{----------------- анализ состояния сpедства --------------}

if status(Sr2)=0 then

begin

reserv(Sr2,j0);

Ttob2:=irand (0,Tob);

{Ttob1:=Tob;}{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(6,Ttob2,j0)

end

else

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q2)<L THEN

{------------ помещение процесса в очередь диска ----------}

enque(Q2,j0,PR[J0].PRIORITET)

else

{----------------------- конец процесса -------------------}

begin

PR[J0].S0:=N0;

N0:=J0;

end;

end;

Procedure E6;{----- СОБЫТИЕ E6 ------}

begin

{-------------------------- освобождение сpедства1 ----------------------}

releas(Sr2);

{-------------------------- конец процесса ----------------------}

PR[J0].S0:=N0;

N0:=J0;

k:=k-1;

if k=0 then schedl(7,0,0);

{--------------------------- анализ состояния очеpеди ------------------}

IF length(q2)<>0 THEN

begin

j0:=head(q2);

{----------------- zanaytie состояния средства 1-------------}

reserv(Sr2,j0);

Ttob1:=irand (0,Tob);

{Ttob1:=Tob;}{Оператор используется для детеpминиpованного тестирования}

{---------------- планирование события ------------------}

schedl(6,Ttob1,j0)

end;

{-------------- +яpхфхыхэшх фышЄхы№эюёЄш яpюуюэр

ш ўшёыр юсёыєцхээvї чр тюъ---------------}

{ begin

Ttob2:=t-Tbeg[J0];

M:=M+1;

{------------ Tvўшёыхэшх ёєььv ш ёєььv ътрфЁрЄют ------}

{ Sum:=Sum+Ttob2;

SumKv:=SumKv+Ttob2*Ttob2;

{---------------- Tvўшёыхэшх ёЁхфэхътрфЁрЄшўхёъюую ш

юЎхэъш фютхЁшЄхы№эюую шэЄхЁтрыр --------}

{ if M>1 then

begin

SrKv[M]:= sqrt(abs(SumKv-Sum*Sum)/(M-1));

if M<=500 then Inter[M]:=Tst[M-1]*SrKv[M]/M

else Inter[M]:=Tst[500]*SrKv[M]/M;

D[M]:=Inter[M]/2/Sum*M;

end;

end;}

end;

Procedure E7;

{-------- СОБЫТИЕ 7 - КОНЕЦ ПРОЦЕССА МОДЕЛИРОВАНИЯ --------}

begin

report;

report2;

end;

BEGIN {$i+u+r}

{-------------------- УПРАВЛЯЮЩАЯ СЕКЦИЯ -------------------}

E0;

repeat

cause(E,J0);

case E of

1: E1;

2: E2;

3: E3;

4: E4;

5: E5;

6: E6;

7: E7;

end;

until E=7;

END.

Размещено на Allbest.ru


Подобные документы

  • Общая характеристика системы массового обслуживания, исходные данные для ее создания. Особенности построения алгоритма имитационной модели задачи о поступлении заявок (клиентов) в канал (парикмахерскую). Описание функционирования математической модели.

    курсовая работа [154,1 K], добавлен 19.05.2011

  • Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.

    курсовая работа [487,4 K], добавлен 18.12.2014

  • Практические навыки системного исследования реальной динамической сложной системы на основе построения ее имитационной модели. Автоматизация работы по расчету эффективности системы массового обслуживания с понятным интерфейсом. Выбор алгоритма решения.

    курсовая работа [1,0 M], добавлен 18.08.2009

  • Проектирование системы массового обслуживания, состоящей из двух генераторов псевдослучайных величин и электронной вычислительной машины, обрабатывающей поступающие заявки. Разработка структурной схемы и алгоритмической модели проектируемой системы.

    курсовая работа [194,5 K], добавлен 30.10.2013

  • Проектирование и реализация модели, которая будет имитировать автозаправочную станцию с постоплатой. Подбор оптимальных параметров модели с учетом требований к сети массового обслуживания. Разработка модели в среде имитационного моделирования GPSS World.

    контрольная работа [279,5 K], добавлен 16.03.2014

  • Методика системного исследования реальной динамической сложной системы посредством разработки ее имитационной модели. Разработка программы реализации алгоритма имитационного моделирования системы массового обслуживания "Интернет-провайдерская фирма".

    курсовая работа [2,0 M], добавлен 20.01.2010

  • Построение имитационной модели системы массового обслуживания в среде Borland Delphi 7.0 с учетом того, что параметры модели – детерминированные величины. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.

    курсовая работа [1,4 M], добавлен 28.05.2013

  • Served Time Generator как генератор интервалов времени обслуживания, общая характеристика. Способы построения модели многоканальной сети массового обслуживания с отказами с использованием блоков библиотеки SimEvents, рассмотрение особенностей сетей.

    лабораторная работа [176,8 K], добавлен 20.05.2013

  • Проблемы и этапы построения имитационной модели системы массового обслуживания. Оценка результатов схем, построенных на Visual Basic и GPSSV. Анализ исходных данных и выбор недостающих, составление таблицы определений и построение блок-схем и диаграмм.

    курсовая работа [204,1 K], добавлен 24.06.2011

  • Описание модели в терминах PDEVS формализма с дискретными событиями DEJaView. Исследование принципов функционирования простейших моделей теории массового обслуживания, разработка ее алгоритма функционирования. Сущность терминов PDEVS под DEJaView.

    курсовая работа [219,1 K], добавлен 31.10.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.