Моделирование системы массового обслуживания
Содержание
Введение
…………………………………………………………………………..
1. Постановка
задачи………………………………………………..…………
2. Выявление
основных особенностей системы…
3. Алгоритм имитационной
модели……………………………………..........
4. Программа на языке высокого уровня Delphi…………………….…………9
5. Программа в среде имитационного моделирования GPSS World...……….15
6. Планирование
эксперимента………………………………………………
Заключение……………………………………………………
Список
литературы……………………………………………………
Введение
Моделирование
- наиболее мощный универсальный метод
исследования и оценки эффективности
систем, поведение которых зависит
от воздействия случайных
Применение
универсальных языков программирования
при реализации имитационных моделей
позволяет исследователю
Актуальность подобных задач в нашем мире не вызывает сомнения, поскольку благодаря предварительно смоделированной системе удается гораздо быстрее и дешевле выяснить наиболее сложные и случайные моменты работы реальной системы, вычислить ее временные и иные характеристики.
1. Постановка задачи
Целью данной курсовой работы является создание математической модели и исследование следующего процесса:
Информационно-поисковая
библиографическая система
Смоделировать процесс работы системы за 8 ч. Определить среднюю и максимальную длину очереди к терминалу, а также коэффициенты загрузки технических средств системы.
Реализация математической модели в данной курсовой работе будет проведена с помощью языка высокого уровня – Delphi, дополнительные расчеты сделаны с помощью GPSS.
2. Выявление основных особенностей процесса
Для описания подобных процессов, прежде всего, используют структурные схемы, которые отражают физические составляющие элементы системы для лучшего понимания системы. Приведем структурную схему (рис 1).
Рисунок 1 – Структурная схема
На структурной схеме (рисунок 1) изображены следующие элементы моделируемой системы:
- пользователи;
- терминал,
используемый для ввода и
- первая
ЭВМ, обеспечивающая поиск
- вторая
ЭВМ, обеспечивающая поиск
Пользователи обращаются к услугам системы каждые 5±2 мин. Если очередь к терминалу превышает 10 человек, то пришедший пользователь получает отказ. Если пользователю необходима информация по научно-техническим вопросам (что возможно произойдет с вероятностью 0.7), то данную заявку обрабатывает первая ЭВМ в течении 6±4 мин. Если по медицинским – то вторая в течении 3±2 мин. Полученные результаты выводятся на печать.
Для описания нашей СМО, как непрерывно-стохастических процессов, используют Q-схемы, отражающие элементы и структуру СМО. В соответствии с построенной концептуальной моделью и символикой Q-схем структурную схему данной СМО (рис.1) можно представить в виде, показанном на рис.2,
Рисунок 2 – Q-схема
Источник И имитирует процесс поступления заданий, которые поступают через 5±2 минут. Канал К1 – время обращения пользователей к терминалу. Канал К2 - работа первой ЭВМ в течении 6±4 минут, канал К3 – второй ЭВМ в течении 3±1 минуты. Накопитель Н имеет емкость 10. Клапан регулирует процесс поступления заявок в накопитель. Если накопитель Н заполнен, то заявки отправляются в отказ. На выходе получаем обслуженные заявки.
Кроме этого для удобства в дальнейшей разработке программы, имитирующей данный процесс, необходимо построить граф состояний исследуемого процесса. Данная схема приведена на рисунке 3.
Состояние системы:
S0 – начальное
S1 – прием запроса, очереди нет
S2 – обработка запроса, очереди нет
S3 – прием запроса, очередь H < 10
S4 – прием очереди, обработка запроса, потери при H > 10
Рисунок 3 – Граф состояний
3. Создание алгоритма имитационного моделирования.
При имитационном моделировании реализующий модель алгоритм воспроизводит процесс функционирования системы во времени. Имитируются элементарные явления, составляющие процесс, с сохранением их логической структуры и последовательности протекания во времени.
Рисунок 4 – Схема алгоритма имитационной модели
4. Программа на языке высокого уровня с кратким описанием
Ниже представлен внешний вид и листинг программы, выполненной в среде программирования Delphi. Каждая процедура и все параметры имеют краткое описание, заключенное в комментариях.
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
GroupBox5: TGroupBox;
Label21: TLabel;
Label23: TLabel;
Label24: TLabel;
Label22: TLabel;
Label25: TLabel;
Label26: TLabel;
XPManifest1: TXPManifest;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Button2: TButton;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i, currenttime, queue, lastarrival, nextarrival, totalarrived, totallost,
processedbymedpc, processedbytechpc, connectionstart, connectionend, totalconnected,
medpcprocessstart, medpcprocessend, techpcprocessstart, techpcprocessend,
terminalstate, medpcstate, techpcstate, techpcstartout, medpcstartout,
techpcworktime, medpcworktime, terminalworktime,avequeue,
implementation
{$R *.dfm}
procedure reset(Sender: TObject); forward;
procedure terminalidle(Sender: TObject); forward;
procedure terminalbusy(Sender: TObject); forward;
procedure techpcidle(Sender: TObject); forward;
procedure techpcbusy(Sender: TObject); forward;
procedure medpcidle(Sender: TObject); forward;
procedure medpcbusy(Sender: TObject); forward;
procedure techpcout(Sender: TObject); forward;
procedure medpcout(Sender: TObject); forward;
procedure reset(Sender: TObject);
begin
randomize;
Form1.Label4.Caption:=
Form1.Label8.Caption:=
Form1.Label12.Caption:=
Form1.Label14.Caption:=
Form1.Label16.Caption:=
Form1.Label18.Caption:=
Form1.Label20.Caption:=
Form1.Label2.Caption:='
Form1.Label6.Caption:='
Form1.Label10.Caption:='
currenttime:=0;
queue:=0;
lastarrival:=0;
nextarrival:=random(5)+3;
totalarrived:=0;
totallost:=0;
processedbymedpc:=0;
processedbytechpc:=0;
connectionstart:=0;
connectionend:=0;
totalconnected:=0;
medpcprocessstart:=0;
medpcprocessend:=0;
techpcprocessstart:=0;
techpcprocessend:=0;
terminalstate:=0;
medpcstate:=0;
techpcstate:=0;
techpcstartout:=0;
medpcstartout:=0;
techpcworktime:=0;
medpcworktime:=0;
terminalworktime:=0;
avequeue:=0;
maxqueue:=0;
form1.timer1.interval:=100;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
reset(Sender);
timer1.Enabled:=true;
end;
procedure terminalidle(Sender: TObject);
begin
if (queue=0) then exit;
dec(queue);
connectionstart:=currenttime;
connectionend:=random(3)+1;
terminalstate:=1;
end;
procedure terminalbusy(Sender: TObject);
begin
if (connectionstart+
then
begin
if (random(100)<70)
then
begin
techpcstate:=1;
techpcprocessstart:=
techpcprocessend:=random(9)+2;
end
else
begin
medpcstate:=1;
medpcprocessstart:=
medpcprocessend:=random(3)+2;
end;
inc(totalconnected);
terminalstate:=2;
end;
end;
procedure terminalwait(Sender: TObject);
begin
end;
procedure techpcidle(Sender: TObject);
begin
end;
procedure techpcbusy(Sender: TObject);
begin
if (techpcprocessstart+
then
begin
techpcstate:=2;
techpcstartout:=currenttime;
end;
end;
procedure medpcidle(Sender: TObject);
begin
end;
procedure medpcbusy(Sender: TObject);
begin
if (medpcprocessstart+
then
begin
medpcstate:=2;
medpcstartout:=currenttime;
end;
end;
procedure techpcout(Sender: TObject);
begin
if (techpcstartout+1=currenttime)
then
begin
techpcstate:=0;
terminalstate:=0;
inc(processedbytechpc);
end;
end;
procedure medpcout(Sender: TObject);
begin
if (medpcstartout+1=currenttime)
then
begin
medpcstate:=0;
terminalstate:=0;
inc(processedbymedpc);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(currenttime);
Form1.Label4.Caption:=
Form1.Label8.Caption:=
Form1.Label12.Caption:=
Form1.Label14.Caption:=
Form1.Label16.Caption:=
Form1.Label18.Caption:=
Form1.Label20.Caption:=
Form1.Label22.Caption:='0.'+
Form1.Label24.Caption:='0.'+
Form1.Label26.Caption:='0.'+
if ((currenttime=480))// and (terminalstate=0) and (techpcstate=0) and (medpcstate=0))
then
begin
form1.timer1.enabled:=false;
exit;
end;
if (lastarrival+nextarrival=
then
begin
lastarrival:=currenttime;
nextarrival:=random(5)+3;
inc(totalarrived);
if (queue<10)
then inc(queue)
else inc(totallost);
end;
case terminalstate of
0: begin form1.label2.Caption:='
1: begin form1.label2.Caption:='
2: begin form1.label2.Caption:='
end;
case techpcstate of
0: begin form1.label6.Caption:='
1: begin form1.label6.Caption:='
2: begin form1.label6.Caption:='Вывод ответа'; inc(techpcworktime); techpcout(Sender); end;
end;
case medpcstate of
0: begin form1.label10.Caption:='
1: begin form1.label10.Caption:='
2: begin form1.label10.Caption:='Вывод ответа'; inc(medpcworktime); medpcout(Sender); end;
end;
avequeue:=avequeue+queue;
label28.Caption:=floattostr(
if queue>maxqueue then begin maxqueue:=queue;
label30.Caption:=inttostr(
end;
if (totalconnected <>0) then Form1.Label34.Caption:=
if (processedbytechpc <>0) then Form1.Label35.Caption:=
if (processedbymedpc <>0) then Form1.Label36.Caption:=
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Interval:=1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
reset(Sender);
end;
end.
Пример работы и внешний вид программы
Рисунок 5 – Главное окно программы
5. Среда имитационного
Кроме этого, используя gpss, можно смоделировать данный процесс при условии, что емкость очереди ограничена одним сообщением.
Листинг программы:
TOENTER STORAGE 10 ;терминал для вывода информации
GENERATE 5,2 ;пользователь обращается к услугам каждые 5+-2 минуты
GATE SNF TOENTER,BYE ;если в очереди к терминалу ожидают 10 пользователей, то вновь прибывшие получают отказ
QUEUE QTOENTER ;организация очереди, увеличение на единицу
ENTER TOENTER ;вход в накопитель TOENTER
SEIZE TER ;занятие устройства TER
DEPART QTOENTER ;уменьшение очереди на единицу
ADVANCE 2,1 ;соединение с информационными компьютерами
LEAVE TOENTER ;выход из накопителя
TRANSFER 0.7,MED,TEHN ;вероятность обращения к ПК1 - 0.7
TEHN SEIZE IBM1 ;занятие устройства IBM1
ADVANCE 6,4 ;обработка информации на ПК1
ADVANCE 1,0 ;вывод полученной информации на печать
RELEASE IBM1 ;освобождение устройства IBM1
TRANSFER ,VIVOD ;безусловный переход к завершению процесса
MED SEIZE IBM2 ;занятие устройства IBM2
ADVANCE 3,1 ;обработка информации на ПК2
ADVANCE 1,0 ;вывод полученной информации на печать
RELEASE IBM2 ;освобождение устройства IBM1
TRANSFER ,VIVOD ;безусловный переход к завершению процесса
VIVOD RELEASE TER ;освобождение устройства TER
BYE TERMINATE ;завершение работы системы
GENERATE 480 ;процесс работы системы за 8ч
TERMINATE 1
START 1
Результаты моделирования:
GPSS World Simulation Report - Untitled.139.1
Wednesday, December 19, 2012 18:29:12
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 23 3 1
NAME VALUE
BYE 21.000
IBM1 10003.000
IBM2 10004.000
MED 15.000
QTOENTER 10001.000
TEHN 10.000
TER 10002.000
TOENTER 10000.000
VIVOD 20.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 93 0 0
2 GATE 93 0 0
3 QUEUE 67 0 0
4 ENTER 67 9 0
5 SEIZE 58 0 0
6 DEPART 58 0 0
7 ADVANCE 58 0 0
8 LEAVE 58 0 0
9 TRANSFER 58 0 0
TEHN 10 SEIZE 43 0 0
11 ADVANCE 43 1 0
12 ADVANCE 42 0 0
13 RELEASE 42 0 0
14 TRANSFER 42 0 0
MED 15 SEIZE 15 0 0
16 ADVANCE 15 0 0
17 ADVANCE 15 0 0
18 RELEASE 15 0 0
19 TRANSFER 15 0 0
VIVOD 20 RELEASE 57 0 0
BYE 21 TERMINATE 83 0 0
22 GENERATE 1 0 0
23 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
TER 58 0.987 8.166 1 76 0 0 0 9
IBM1 43 0.630 7.029 1 76 0 0 0 0
IBM2 15 0.113 3.631 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
QTOENTER 10 9 67 1 7.831 56.105 56.955 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
TOENTER 10 1 0 10 67 1 8.075 0.807 0 0
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
95 0 481.705 95 0 1
76 0 483.380 76 11 12
96 0 960.000 96 0 22
6. ПЛАНИРОВАНИЕ ЭКСПЕРИМЕНТА
Планирование эксперимента - это процедура выбора числа и условий проведения опытов, необходимых и достаточных для получения достоверного результата.
Планирование эксперимента использует следующие понятия:
- объект
- факторы
- отклик
- математическая модель,
В качестве объекта используется черный ящик.
Факторы - это переменные величины, соответствующие способом воздействия внешней среды на объект.
Совокупность экспериментов для всех возможных комбинаций факторов и их уровней называется полным факторным экспериментом.
Отклик - реакция объекта на воздействие факторов, которые определяют поведение изучаемой системы. Отклик зависит от природы процесса или объекта.
Математическая модель будет описана как:
При этом bjj показывает степень влияния фактора на объект. Если bjj положительные, то свойство при возрастании фактора увеличивается, если отрицательные, то свойство уменьшается.
где bi – коэффициенты, учитывающие степень вклада фактора xi в модель.
b0 – математическое ожидание отклика в заданных условиях.
Коэффициенты bi определяются на основе серии опытов. Определяем их на основе полного факторного эксперимента (ПФЭ).
Количество опытов считаем по формуле:
N = pk,
где р – количество уровней фактора,
к – количество факторов,
N–количество опытов.
Таблица 1 – Локальная область планирования эксперимента
| уровни |
факторы | ||
α |
β |
γ | |
+1 |
7 |
3 |
4 |
0 |
5 |
2 |
3 |
-1 |
3 |
1 |
2 |
p=2 (нижний и верхний придел изменения величины).
k=3 (α - время прибытия пользователей, β – время на установление связи с ПК, γ – время обработки информации на ПК2).
α=5±2, β =2±1, γ=3±1
N = 23= 8.
Таблица 2 – Матрица планирования
№ |
Матрица планирования |
Рабочая матрица |
Результат эксперимента ПК2обсл | |||||||||
|
x0 |
x1 |
x2 |
x3 |
x1 x2 |
x1 x3 |
x2 x3 |
x1 x2 x3 |
α |
β |
γ | ||
1 |
+1 |
-1 |
-1 |
-1 |
+1 |
+1 |
+1 |
-1 |
3 |
1 |
2 |
151 |
2 |
+1 |
+1 |
-1 |
-1 |
-1 |
-1 |
+1 |
+1 |
7 |
1 |
2 |
186 |
3 |
+1 |
-1 |
+1 |
-1 |
-1 |
+1 |
-1 |
+1 |
3 |
3 |
2 |
150 |
4 |
+1 |
+1 |
+1 |
-1 |
+1 |
-1 |
-1 |
-1 |
7 |
3 |
2 |
195 |
5 |
+1 |
-1 |
-1 |
+1 |
+1 |
-1 |
-1 |
+1 |
3 |
1 |
4 |
187 |
6 |
+1 |
+1 |
-1 |
+1 |
-1 |
+1 |
-1 |
-1 |
7 |
1 |
4 |
198 |
7 |
+1 |
-1 |
+1 |
+1 |
-1 |
-1 |
+1 |
-1 |
3 |
3 |
4 |
181 |
8 |
+1 |
+1 |
+1 |
+1 |
+1 |
+1 |
+1 |
+1 |
7 |
3 |
4 |
215 |
Рассчитываем коэффициенты bi:
bi =
= 182
= 8
= 1.87
= 15.25
= 4.1
= -4.3
= 0.37
= 1.62
Полином математической модели выглядит следующим образом:
y = 182+8x1+1.87x2+15.25x3+4.1x1x2
- Проверка на адекватность модели по F-критерию Фишера.
F = S2aд/S2(y),
Где S2(y) – дисперсия параметра оптимизации (выходной величины).
S2aд – дисперсия адекватности.
S2(y) = 0,8
S2aд = ,
yiтеор – выходная величина, получаемая по математической модели.
f = N-mb, где mb – количество коэффициентов bi.
y1теор = 182 – 8 - 1.87 - 15.25 + 4.1 - 4.3 + 0.37 - 1.62 = 155.4
y2теор = 182 + 8 - 1.87 - 15.25 + 4.1 + 4.3 + 0.37 + 1.62 = 183.3
y3теор = 182 – 8 + 1.87 - 15.25 - 4.1 - 4.3 - 0.37 + 1.62 = 153.4
y4теор = 182 + 8 + 1.87 - 15.25 + 4.1 + 4.3 - 0.37 - 1.62 = 190
y5теор = 182 – 8 - 1.87 + 15.25 + 4.1 - 4.3 - 0.37 + 1.62 = 188.4
y6теор = 182 + 8 - 1.87 + 15.25 + 4.1 - 4.3 - 0.37 - 1.62 = 201.1
y7теор = 182 – 8 + 1.87 + 15.25 - 4.1 - 4.3 + 0.37 - 1.62 = 181.4
y8теор = 182 + 8 + 1.87 + 15.25 + 4.1 + 4.3 + 0.37 - 1.62 = 217.5
S2aд =
=41.15
F = 41.15/0.8 = 52.25
Табличное значение F-критерия Фишера:
α = 0,05.
k1 = f = N- mb = 1, – число степеней свободы большей дисперсии.
k2 = N(m-1) = 8 – число степеней свободы меньшей дисперсии.
Fтабл = 5.32
F>Fтабл =>модель неадекватна.
- Проверка значимости коэффициентов по t-критерию Стьюдента.
S2bj = S2(y)/N = 0.8/8 = 0.1.
Определяем t-критерий для каждого коэффициента:
tj=:
t1 = =80
t2 = = 18.7
t3 = = 152.5
t12 = =41
t13 = = 43
t23 = = 3.7
t123 = = 16.2
Табличное значение t-критерия Стьюдента:
р = 0,95
k = n(m-1)=8
tтабл = 2.3
t1>tтабл, t2>tтабл, t3>tтабл, t12>tтабл, t13>tтабл, t23>tтабл , t123>tтабл=>все коэффициенты значимы.
- Определение доверительного интервала.
bj- tтабл*(S(y)/ ≤ bj ≤ bj+ tтабл*(S(y)/
Доверительный интервал для b0:
182 – 2.3*(0.8/) ≤ b0 ≤ 182 + 2.3*(0.8/)
181.35 ≤ b0 ≤ 182.65
Доверительный интервал для b1:
8– 2.3*(0.8/) ≤ b1 ≤ 8+ 2.3*(0.8/)
7.35 ≤ b1 ≤ 8.65
Доверительный интервал для b2:
1.87– 2.3*(0.8/) ≤ b2 ≤ 1.87+ 2.3*(0.8/)
1.22 ≤ b2 ≤ 2.52
Доверительный интервал для b3:
15.25– 2.3*(0.8/) ≤ b3 ≤ 15.25+ 2.3*(0.8/)
14.6 ≤ b3 ≤ 15.9
Доверительный интервал для b12:
4.1– 2.3*(0.8/) ≤ b12 ≤ 4.1+ 2.3*(0.8/)
3.45 ≤ b0 ≤ 4.75
Доверительный интервал для b13:
-4.3 – 2.3*(0.8/) ≤ b13 ≤ -4.3 + 2.3*(0.8/)
-4.95 ≤ b1 ≤ -3.65
Доверительный интервал для b23:
0.37 – 2.3*(0.8/) ≤ b23 ≤ 0.37 + 2.3*(0.8/)
-0.28 ≤ b2 ≤ 1.02
Доверительный интервал для b123:
1.62 – 2.3*(0.8/) ≤ b123 ≤ 1.62 + 2.3*(0.8/)
0.97 ≤ b3 ≤ 2.27
Заключение.
В ходе курсовой работы мной было выполнено моделирование 8 часовой работы терминала, была определена средняя и максимальная длина очереди. Так же была написана программа, учитывающая все факторы, определенные в задании. Был проведен полный факторный эксперимент, рассматривающий степень влияния времени на генерацию заявки, времени на обслуживания запроса и время на перфорацию запроса на системное время. Также в результате исследования, было выяснено, что с помощью языка программирования GPSS можно составить искомую модель и проанализировать результаты её работы и экономическую эффективность модели. В процессе выполнения курсового проекта была разработана имитационная модель системы обработки информации на языке высокого уровня Delphi.
Список литературы
- Боев
В. Д. Моделирование систем. Инструментальные
средства GPSS World. - Санкт-Петербург:BHV-Санкт-
Петербург, 2004 г. - 368 с. - Сапожников Н.Е. Математическое моделирование на ПК: Учеб.пособие. 2-е изд., перераб. и доп. – Севастополь: СНУЯЭиП, 2006. – 380 с.: ил.
- Фленов М.Е. Библия Delphi. – СПб.: БХВ-Петербург, 2004г.-880.: ил.
- Кудрявцев Е.М. GPSSWorld. Основы имитационного моделирования различных систем. – М.: ДМК Пресс, 2003. – 320 с.

- Моделирование системы обработки непрерывно - дискретного потока входных данных
- Моделирование системы обслуживания погрузочно-разгрузочных работ
- Моделирование системы обслуживания с отказами
- Моделирование системы подрессоривания трёхосного автомобиля КамАЗ
- Моделирование системы программы автоматизации учета коммерческого проката роликов в сети гипермаркетов ЗАО «Тандер»
- Моделирование системы «Радиостанция»
- Моделирование системы социально-педагогической деятельности по профилактике жестокого обращения с ребенком в семье
- Моделирование систем в ТК
- Моделирование систем массового обслуживания
- Моделирование систем массового обслуживания
- Моделирование систем массового обслуживания
- Моделирование системы автоматического регулирования температуры
- Моделирование системы автоматического регулирования температуры
- Моделирование системы адаптации персонала