Автор работы: Пользователь скрыл имя, 12 Ноября 2014 в 13:53, контрольная работа
Системой массового обслуживания (СМО) называется любая система, предназначенная для обслуживания какого-либо потока заявок.
Примерами систем массового обслуживания могут служить:
посты технического обслуживания автомобилей;
посты ремонта автомобилей;
персональные компьютеры, обслуживающие поступающие заявки или требования на решение тех или иных задач;
станции технического обслуживания автомобилей;
Введение……………………………………………………………..……………….3
1 Постановка задачи………………………………………………………....………5
2 Выявление основных особенностей системы……………………………….…...6
3 Алгоритм движения одного транзакта в системе …………………..…………...7
4 Алгоритм функционирования системы во времени………………….………….8
5 Программа на языке высокого уровня Delphi……………………………….….10
6 Программа в среде имитационного моделирования GPSSWorld………….…..20
Заключение…………………………………………………………………….……22
Список литературы…………………………………………………………...…….23
KANAL:=0; // транзакт освобождает канал
k:=k+1;
Time_Kanal[k,2] := Time; // записываем в массив время выхода из канала (для статистики)
{SELECT PATH 1 2 3 OR OUT}
vibor:=0;
if ((v_ocheredi[1]<=v_ocheredi[2]
else begin if ((v_ocheredi[2]<=v_ocheredi[1]
else begin if ((v_ocheredi[3]<=v_ocheredi[1]
end;
if (v_ocheredi[vibor]<10) then begin
vx:=vx+1;
Time_Evm[vx,1] := Time; // время входа в очередь миниПК
v_ocheredi[vibor]:=v_ocheredi[
if (EVM[vibor]=0) then begin // Если обслуживающий ЭВМ свободен, ТО
v_ocheredi[vibor]:=v_ocheredi[
EVM[vibor] := 1; // занимаем ЭВМ
Time_End_Evm[vibor]:=Time+
end;
end else begin j:=j-1; otkaz:=otkaz+1; end;
// После обслуживания проверяем есть ли в очереди кто-то, если есть, а канал уже свободен, возвращаемся к проверке и занятию канала
if (v_ocheredi0 > 0) then Goto povtor_Kanal;
end;
// Проверка трёх очередей и ЭВМ
for o := 1 to 3 do begin
if ((EVM[o]=1)AND(Time=Time_End_
Time_raboti[o] := Time_raboti[o] + Time_miniPK;
EVM[o]:=0; // Освобождаем
vix:=vix+1;
Time_Evm[vix,2] := Time; // время выхода
START:=START+1;
// Подсчёт числа успешно
{TERMINATE} j:=j-1; // транзакт обслужен в ЭВМ, покидает систему
if (v_ocheredi[o]>0) then begin
v_ocheredi[o]:=v_ocheredi[o]-
EVM[o] := 1; // занимаем ЭВМ
Time_End_Evm[o]:=Time+Time_
end;
end;
end;
end;
// Вывод на печать результатов
Form1.Edit1.Text:='
Form1.Edit7.Text:=inttostr(
Form1.Edit2.Text:=inttostr(
// коэффициенты загрузки устройств
if (Time_raboti[0] > Time) then Time_raboti[0] := Time;
Form1.Edit14.Text:=floattostr(
// Средние размеры очередей перед устройствами
Form1.Edit15.Text:=floattostr(
// Максимальные размеры очередей перед устройствами
Form1.Edit16.Text:=floattostr(
// Среднее время в очереди
Form1.Edit17.Text:=floattostr(
// среднее время в канале
Time := 0;
for o := 1 to START_END do Time := Time+ Time_Kanal[o,2]-Time_Kanal[o,
Form1.Edit3.Text:=floattostr(T
// среднее время в миниПК
Time := 0;
for o := 1 to START_END do Time := Time+ Time_Evm[o,2]-Time_Evm[o,1]; // время в канале
Form1.Edit4.Text:=inttostr(
Form1.Edit6.Text:=inttostr(i-
Form1.Edit13.Text := floattostr(otkaz*100/(i-1)); // Печатаем вероятность отказа
end;
end.
Результат работы программы представлен на рисунке 5.
Рисунок 5 – Программа на языке высокого уровня Delphi
6 Программа в среде
имитационного моделирования GP
**источник транзактов**
GENERATE 10,5
**предварительная обработка сигналов в мультиплексном канале**
QUEUE buf_0
SEIZE canal_0
DEPART buf_0
ADVANCE 10,3
RELEASE canal_0
**нахождение наименьшей длины очереди**
SELECT MIN VIBOR,1,3,,Q ; результат записываем в параметр заявки P$VIBOR
**ЭВМ**
TEST L (Q*VIBOR),10,mOUT ; размер выбранной очереди меньше 10, иначе в OUT
QUEUE P$VIBOR
SEIZE P$VIBOR
DEPART P$VIBOR
ADVANCE 33
RELEASE P$VIBOR
SAVEVALUE obs+,1
TERMINATE 1
START 500
**Отказы (переполнения)**
mOUT SAVEVALUE out+,1
TERMINATE
Результат работы программы:
GPSS World Simulation Report - Model.15.1
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 5569.604 17 4 0
NAME VALUE
BUF_0 10000.000
CANAL_0 10001.000
MOUT 16.000
OBS 10003.000
OUT 10004.000
VIBOR 10002.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 557 0 0
2 QUEUE 557 3 0
3 SEIZE 554 0 0
4 DEPART 554 0 0
5 ADVANCE 554 1 0
6 RELEASE 553 0 0
7 SELECT 553 0 0
8 TEST 553 0 0
9 QUEUE 532 29 0
10 SEIZE 503 1 0
11 DEPART 502 0 0
12 ADVANCE 502 2 0
13 RELEASE 500 0 0
14 SAVEVALUE 500 0 0
15 TERMINATE 500 0 0
MOUT 16 SAVEVALUE 21 0 0
17 TERMINATE 21 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
1 168 0.995 32.999 1 518 0 0 0 10
2 168 0.992 32.896 1 520 0 0 0 10
3 167 0.984 32.802 1 522 0 0 0 9
CANAL_0 554 0.991 9.961 1 554 0 0 0 3
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 10 10 178 1 7.027 219.885 221.128 0
2 10 10 178 1 6.941 217.186 218.413 0
3 10 10 176 2 6.521 206.365 208.737 0
BUF_0 6 3 557 20 1.873 18.726 19.424 0
SAVEVALUE RETRY VALUE
OBS
0 500.000
OUT
0 21.000
CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
522 0 5226.759 522 10 11
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
518 0 5569.710 518 12 13
VIBOR 1.000
558 0 5571.780 558 0 1
554 0 5571.881 554 5 6
520 0 5587.116 520 12 13
Заключение
Целью данной контрольной работы было создание имитационной модели системы обработки сигналов на мини-ПК и написание программы, моделирующей данный процесс.
В ходе выполнения контрольной работы были пройдены следующие этапы:
Разработанная программа функционирования системы массового обслуживания содержит следующие выходные данные:
В результате выполнения работы была получена модель, полностью удовлетворяющая потребностям поставленной задачи.
Список литературы
Информация о работе Программа на языке высокого уровня Delphi