3.1 Построение блок схемы
Рисунок 2 − Блок схема в терминалах GPSS
3.2 Моделирование работы госпиталя Листинг программы
INITIAL X$MESTO,0; Ячейке "Место" присваиваем значение 0 CAR1 STORAGE 5; Емкость МКУ "Пятиместная машина" равна 5
CAR2 STORAGE 3; Емкость МКУ "Трехместная машина" равна 3
PALATA1 STORAGE 20; Емкость МКУ "Палата интенсивной терапии" равна 20
PALATA2 STORAGE 6; Емкость МКУ "Операционная" равна 6
PALATA3 STORAGE 20; Емкость МКУ "Реанимация" равна 20
PALATA4 STORAGE 25; Емкость МКУ "Хирургия" равна 25
PALATA5 STORAGE 30; Емкость МКУ "Терапия" равна 30 ERLANG FUNCTION RN1,C25; Задаем закон распределения Эрланга
0.000,0.000/0.221,0.500/0.393,1.000/0.528,1.500/0.632,2.000
0.713,2.500/0.777,3.000/0.826,3.500/0.865,4.000/0.895,4.500
0.918,5.000/0.936,5.500/0.950,6.000/0.961,6.500/0.970,7.000
0.976,7.500/0.982,8.000/0.986,8.500/0.989,9.000/0.991,9.500
0.993,10.000/0.995,10.500/0.996,11.000/0.997,11.500/0.998,12.000 NOR FUNCTION RN2,C50; Задаем нормальный закон распределения
0,0/0.0013499,9/
0.00204696,9.3875/0.00305642,9.775/0.00449413,10.1625/
0.00650796,10.55/0.00928214,10.9375/0.0130406,11.325/
0.0180485,11.7125/0.0246108,12.1/0.0330681,12.4875/
0.0437873,12.875/0.0571489,13.2625/0.0735293,13.65/
0.0932785,14.0375/0.116696,14.425/0.144004,14.8125/
0.175324,15.2/0.21065,15.5875/0.249838,15.975/
0.29259,16.3625/0.338461,16.75/0.386865,17.1375/
0.437097,17.525/0.488366,17.9125/0.539828,18.3/ 0.59063,18.6875/0.639953,19.075/0.687048,19.4625/
0.731273,19.85/0.772116,20.2375/0.809213,20.625/
0.842351,21.0125/0.871463,21.4/0.896616,21.7875/
0.917988,22.175/0.935849,22.5625/0.950529,22.95/
0.962394,23.3375/0.971826,23.725/0.9792,24.1125/
0.98487,24.5/0.989157,24.8875/0.992346,25.275/
0.994678,25.6625/0.996355,26.05/0.997542,26.4375/
0.998368,26.825/0.998933,27.2125/0.999313,27.6/ GENERATE 45,FN$ERLANG; Генерируем транзакты согласно закону Эрланга второго порядка со средним значением 45 минут
QUEUE STATISTIKA,1; Ставим транзакт в очередь, увеличиваем на 1 длину очереди
TRANSFER .7,MEST3,MEST5; С вероятностью 0.7 переходит к оператору с меткой MEST5 и с вероятностью 0.3 к оператору с меткой MEST3
MEST5 QUEUE QCARMEST5; Присоединение к очереди
GATE SNF CAR1; (Впустить) Если память CAR1 не заполнена, то транзакт проходит дальше
ENTER CAR1; Транзакт входит в устройство
LEAVE CAR1; Освобождаем устройство CAR1
DEPART QCARMEST5; Выход из очереди
TRANSFER ,HOSPITAL
MEST3 QUEUE QCARMEST3; Присоединение к очереди
GATE SNF CAR2; (Впустить) Если память CAR2 не заполнена, то транзакт проходит дальше
ENTER CAR2; Транзакт входит в устройство
LEAVE CAR2; Освобождаем устройство CAR2
DEPART QCARMEST3; Выход из очереди
TRANSFER ,HOSPITAL HOSPITAL SEIZE DOCTORS; Активируются доктора для осмотра раненных и больных
ADVANCE 4,2; Время осмотр раненных и больных
RELEASE DOCTORS; Прекращение работы докторов INTTER TRANSFER .85,,OPERAC; С вероятностью 0.15% раненных и больных направят в палату интенсивной терапии
INTTER1 GATE SNF PALATA1; (Впустить) Если память PALATA1 не заполнена, то транзакт проходит дальше
ENTER PALATA1; Транзакт входит в устройство
fun1 FUNCTION RN3,C2;
0,1440/1,2060
ADVANCE fn$fun1; Время предоставление помощи распределено в интервале 1440-2060
SAVEVALUE MESTO+,(PALATA1); Прибавим к количеству мест в палатах
LEAVE PALATA1; Освобождаем устройство PALATA1
TERMINATE; Удаляем транзакт OPERAC TRANSFER .7,,REANIM; С вероятностью 0.25% раненных и больных направят в операционную
GATE SNF PALATA2; (Впустить) Если память PALATA2 не заполнена, то транзакт проходит дальше
ENTER PALATA2; Транзакт входит в устройство
fun2 FUNCTION RN4,C2;
0,20/1,120
ADVANCE fn$fun2; Время предоставление помощи распределено в интервале 20-120
SAVEVALUE MESTO+,(PALATA2); Прибавим к количеству мест в палатах
LEAVE PALATA2; Освобождаем устройство PALATA2
DEPART STATISTIKA,1; Освобождаем очередь
TRANSFER .55,INTTER1,REANIM1; 0.55% переходит к оператору с меткой REANIMACIJa1 и с вероятностью 0.45% к оператору с меткой INTENSIVNAJa TERAPIJa1 REANIM TRANSFER .42,,HIRURG; С вероятностью 0.35% раненных и больных направят в палату реанимации
REANIM1 GATE SNF PALATA3; (Впустить) Если память PALATA3 не заполнена, то транзакт проходит дальше
ENTER PALATA3; Транзакт входит в устройство
fun3 FUNCTION RN5,C2;
0,2880/1,3660
ADVANCE fn$fun3; Время предоставление помощи распределено в интервале 2880-3660
SAVEVALUE MESTO+,(PALATA3); Прибавим к количеству мест в палатах
LEAVE PALATA3; Освобождаем устройство PALATA3
DEPART STATISTIKA,1; Освобождаем очередь
TERMINATE; Удаляем транзакт HIRURG TRANSFER .4,,TERAP; С вероятностью 0.15% раненных и больных направят в палату хирургии
GATE SNF PALATA4; (Впустить) Если память PALATA4 не заполнена, то транзакт проходит дальше
ENTER PALATA4; Транзакт входит в устройство
fun4 FVARIABLE (1800+60#FN$NOR)
ADVANCE V$fun4; Время предоставление помощи
SAVEVALUE MESTO+,(PALATA4); Прибавим к количеству мест в палатах
LEAVE PALATA4; Освобождаем устройство PALATA4
DEPART STATISTIKA,1; Освобождаем очередь
TERMINATE; Удаляем транзакт TERAP GATE SNF PALATA5; (Впустить) Если память PALATA5 не заполнена, то транзакт проходит дальше
ENTER PALATA5; Транзакт входит в устройство
fun5 FUNCTION RN7,C2;
0,1200/1,2200
ADVANCE fn$fun5; Время предоставление помощи распределено в интервале 1200-2200
SAVEVALUE MESTO+,(PALATA5); Прибавим к количеству мест в палатах
LEAVE PALATA5; Освобождаем устройство PALATA5
TERMINATE; Удаляем транзакт GENERATE 14400
TERMINATE 1
START 1 Отчет выполнения работы:
GPSS World Simulation Report - HOSPITAL.30.1
Wednesday, May 21, 2016 22:09:48 START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 14400.000 57 1 7 NAME VALUE
CAR1 10001.000
CAR2 10002.000
DOCTORS 10017.000
ERLANG 10008.000
FUN1 10010.000
FUN2 10011.000
FUN3 10012.000
FUN4 10013.000
FUN5 10014.000
HIRURG 42.000
HOSPITAL 16.000
INTTER 19.000
INTTER1 20.000
MEST3 10.000
MEST5 4.000
MESTO 10000.000
NOR 10009.000
OPERAC 26.000
PALATA1 10003.000
PALATA2 10004.000
PALATA3 10005.000
PALATA4 10006.000
PALATA5 10007.000
QCARMEST3 10016.000
QCARMEST5 10018.000
REANIM 34.000
REANIM1 35.000
STATISTIKA 10015.000
TERAP 50.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 157 0 0
2 QUEUE 157 0 0
3 TRANSFER 157 0 0
MEST5 4 QUEUE 109 0 0
5 GATE 109 0 0
6 ENTER 109 0 0
7 LEAVE 109 0 0
8 DEPART 109 0 0
9 TRANSFER 109 0 0
MEST3 10 QUEUE 48 0 0
11 GATE 48 0 0
12 ENTER 48 0 0
13 LEAVE 48 0 0
14 DEPART 48 0 0
15 TRANSFER 48 0 0
HOSPITAL 16 SEIZE 157 0 0
17 ADVANCE 157 0 0
18 RELEASE 157 0 0
INTTER 19 TRANSFER 157 0 0
INTTER1 20 GATE 37 0 0
21 ENTER 37 0 0
22 ADVANCE 37 3 0
23 SAVEVALUE 34 0 0
24 LEAVE 34 0 0
25 TERMINATE 34 0 0
OPERAC 26 TRANSFER 133 0 0
27 GATE 37 0 0
28 ENTER 37 0 0
29 ADVANCE 37 0 0
30 SAVEVALUE 37 0 0
31 LEAVE 37 0 0
32 DEPART 37 0 0
33 TRANSFER 37 2 0
REANIM 34 TRANSFER 96 0 0
REANIM1 35 GATE 81 0 0
36 ENTER 81 0 0
37 ADVANCE 81 20 0
38 SAVEVALUE 61 0 0
39 LEAVE 61 0 0
40 DEPART 61 0 0
41 TERMINATE 61 0 0
HIRURG 42 TRANSFER 37 0 0
43 GATE 22 0 0
44 ENTER 22 0 0
45 ADVANCE 22 5 0
46 SAVEVALUE 17 0 0
47 LEAVE 17 0 0
48 DEPART 17 0 0
49 TERMINATE 17 0 0
TERAP 50 GATE 15 0 0
51 ENTER 15 0 0
52 ADVANCE 15 0 0
53 SAVEVALUE 15 0 0
54 LEAVE 15 0 0
55 TERMINATE 15 0 0
56 GENERATE 1 0 0
57 TERMINATE 1 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
DOCTORS 157 0.043 3.964 1 0 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
STATISTIKA 47 42 157 0 32.293 91.719 91.719 0
QCARMEST3 1 0 48 48 0.000 0.000 0.000 0
QCARMEST5 1 0 109 109 0.000 0.000 0.000 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
CAR1 5 5 0 1 109 1 0.000 0.000 0 0
CAR2 3 3 0 1 48 1 0.000 0.000 0 0
PALATA1 20 17 0 11 37 1 4.430 0.221 0 0
PALATA2 6 6 0 2 37 1 0.181 0.030 0 0
PALATA3 20 0 0 20 81 1 16.939 0.847 2 0
PALATA4 25 20 0 7 22 1 3.794 0.152 0 0
PALATA5 30 30 0 4 15 1 1.710 0.057 0 0 SAVEVALUE RETRY VALUE
MESTO 0 1640762.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
121 0 14425.712 121 37 38
159 0 14433.200 159 0 1
144 0 14453.548 144 22 23
122 0 14479.375 122 37 38
126 0 14598.423 126 37 38
148 0 14648.865 148 22 23
129 0 14847.141 129 37 38
140 0 14898.040 140 45 46
127 0 15075.318 127 37 38
128 0 15085.622 128 37 38
130 0 15214.167 130 37 38
136 0 15219.862 136 37 38
135 0 15233.041 135 37 38
138 0 15420.978 138 37 38
131 0 15464.193 131 37 38
134 0 15505.077 134 37 38
151 0 15872.995 151 45 46
141 0 15986.998 141 37 38
158 0 16085.520 158 22 23
145 0 16122.907 145 37 38
153 0 16130.567 153 45 46
142 0 16187.107 142 37 38
149 0 16711.908 149 37 38
156 0 16787.949 156 45 46
146 0 16881.024 146 37 38
147 0 17032.489 147 37 38
150 0 17041.851 150 37 38
157 0 17130.831 157 45 46
152 0 17643.890 152 37 38
160 0 28800.000 160 0 56
По результатам программы видно, что за 10 суток в госпиталь было доставлено 109 человек на пятиместных автомобилях и 48 человек на трех местных. В итоге было доставлено 157 человека, все они прошли осмотр у врачей и были направлены в соответствующие палаты.
В палату интенсивной терапии было направленно 37 человека, но 3 человек не успел получить помощь в заявленное моделируемое время.
В операционную было направленно 37 человек, все удачно получили медицинскую помощь.
В палату реанимации было направленно 81 человек, но 20 человек не успел получить помощь в заявленное моделируемое время.
В палату хирургии было направленно 22 человек, но 5 человек не успел получить помощь в заявленное моделируемое время.
В палату терапии было направленно 15 человек, все удачно получили медицинскую помощь.
В виду того, что некоторые люди побывали в двух видах палат так, как были направлены в реанимацию или палату интенсивной терапии то необходимое количество мест в палатах за 10 суток составило 164.
Исходя из отчета среднее время пребывание транзактов в очереди то есть пребывания в госпитале 91,719.
|