- •Лабораторная работа №1 Изучение блоков динамической категории gpss/pc: generate, terminate, seize, release, advance
- •20 Transfer .7,chan1,chan2
- •20 Transfer both,chan1,chan2
- •20 Transfer all, chan1,chan4,4
- •Transfer pick,3,6
- •Assign 13,мет1
- •Loop 13, cycl5
- •Лабораторная работа №4 Системы с накопителями: блоки enter, leave, оператор storage. Управление потоком сообщений: блоки gate, test. Операторы variable, fvariable, initial.
- •Leave nak
- •Enter nak
- •20 Gate nu 1,facil2
- •Пример использования арифметических переменных
- •210 Funavail 1,re,facil2, ,re,facil3,re,facil4
- •230 Favail 1
- •510 Sunavail nak
- •530 Savail nak
- •20 Gate snv nak,facil2
- •110 Msavevalue mat2,1,1,c1
- •120 Msavevalue mat2,1,2,100
- •150 Msavevalue mat2-,2,2,2
- •Tabulate ttab1
- •135 Tabulate ttab2
- •70 Tabulate tab1
- •20 Gate snf nak1,exit
- •50 Link waz1,fifo,chan1
- •100 Unlink g waz1,chan1,1,13,16,que2
- •205 Link waz1,fifo
- •Лабораторная работа №9 Создание и управление групп транзактов gpss/pc: блоки join, remove, examine
- •120 Remove gr1,,p23,,,chan2
- •140 Remove gr1,,21
- •Examine gr17,,chan2
- •Examine gr1,6778,chan2
- •Листинг программы
- •Intlines storage 30
- •190 Transfer ,Breakoff
- •390 Terminate
- •570 Nonefree terminate
- •850 Terminate
- •Xact_group group_size retry
- •Лабораторная работа №11
- •Моделирование многофазных систем массового обслуживания
- •I теоретическая часть
- •1.1 Двухфазная система обслуживания
- •1.2 Трехфазная система обслуживания
- •II практическая часть
- •2.1 Моделирование в системе matlab
- •2.2 Моделирование в системе gpss/pc
- •Xact_group group_size retry
- •I теоретическая часть
- •II практическая часть
- •2.1 Моделирование в системе matlab
- •2.2 Моделирование в системе gpss/pc
- •Xact_group group_size retry
2.2 Моделирование в системе gpss/pc
Для моделирования в системе GPSS/PC (GPSS World) необходимо подготовить данные по функциям распределения случайных величин, с помощью которых осуществляется имитация пуассоновского входного потока требований и экспоненциального обслуживания. В обоих случаях моделируется экспоненциальное распределение случайных величин, поскольку интервалы времени между требованиями в пуассоновском потоке распределены по экспоненциальному закону. В рассматриваемом случае параметры пуассоновского потока и экспоненциального обслуживания заданы и равны соответственно λ = 0.33; = 0.678.
Чтобы смоделировать случайные величины, распределенные по экспоненциальному закону с параметром, отличного от единицы, поступают следующим образом:
генерируют значения случайной величины, распределенной по экспоненциальному закону с параметром, равным 1;
находят произведение полученного значения и математического ожидания случайной величины, распределенной по экспоненциальному закону с параметром не равным 1.
Описанная процедура реализована в MATLAB по следующей программе:
%-------------- For GPSS/PC -------------------------
X=0:0.2:8;
px1=(1-exp(-X));
fprintf('\n\t CDF for Input:\n')
q = [px1',1/L*X'];
dlmwrite('zx1',q,',') % 1-st method
type zx1
for J = 1:length(q(:,1))% 2-nd method
fprintf('%g%s%g\n',q(J,1),',',q(J,2))
end
C1=size([px1',1/L*X']);
fprintf('\t Row = %g\t Col = %g',C1)
fprintf('\n')
Y=0:0.25:10;
py1=1-exp(-Y);
fprintf('\n\t CDF for Service:\n')
C2=size([py1',1/M*Y']);
w = [py1',1/M*Y'];
dlmwrite('zx2',w,',') % 1-st method
type zx2
for J = 1:length(w(:,1))% 2-nd method
fprintf('%g%s%g\n',w(J,1),',',w(J,2))
end
fprintf('\t Row = %g\tCol=%g',C2)
fprintf('\n\n\t L = %1.3f\t M = %1.3f\n',L,M)
В программе приводятся два способа получения данных: с помощью функции dlmwrite, которая позволяет записывать данные с необходимым разделителем (в программе запятая) в текстовый файл (в программе это два файла zx1 и zx2) и считывания данных либо непосредственно из текстового файла, либо вывода их в командное окно с помощью команды type.
Второй способ реализован с помощью функции fprintf и вывода результата в командное окно MATLAB.
GPSS-программа приводится ниже. В ней задано время моделирования величиной 969 единиц времени. Генераторы случайных чисел для определения аргумента функций распределения выбраны с номерами 6 и 5 (RN6, RN5). В поле А блоков generate и advance установлена единица, как математическое ожидание экспоненциального распределения с параметром, равным 1.
simulate
expL function RN6,C41
0,0
0.18127,0.60606
0.32968,1.2121
0.45119,1.8182
0.55067,2.4242
0.63212,3.0303
0.69881,3.6364
0.7534,4.2424
0.7981,4.8485
0.8347,5.4545
0.86466,6.0606
0.8892,6.6667
0.90928,7.2727
0.92573,7.8788
0.93919,8.4848
0.95021,9.0909
0.95924,9.697
0.96663,10.303
0.97268,10.9091
0.97763,11.5152
0.98168,12.1212
0.985,12.7273
0.98772,13.3333
0.98995,13.9394
0.99177,14.5455
0.99326,15.1515
0.99448,15.7576
0.99548,16.3636
0.9963,16.9697
0.99697,17.5758
0.99752,18.1818
0.99797,18.7879
0.99834,19.3939
0.99864,20
0.99889,20.6061
0.99909,21.2121
0.99925,21.8182
0.99939,22.4242
0.9995,23.0303
0.99959,23.6364
0.99966,24.2424
expM function RN5,C41
0,0
0.2212,0.36873
0.39347,0.73746
0.52763,1.1062
0.63212,1.4749
0.7135,1.8437
0.77687,2.2124
0.82623,2.5811
0.86466,2.9499
0.8946,3.3186
0.91792,3.6873
0.93607,4.056
0.95021,4.4248
0.96123,4.7935
0.9698,5.1622
0.97648,5.531
0.98168,5.8997
0.98574,6.2684
0.98889,6.6372
0.99135,7.0059
0.99326,7.3746
0.99475,7.7434
0.99591,8.1121
0.99682,8.4808
0.99752,8.8496
0.99807,9.2183
0.9985,9.587
0.99883,9.9558
0.99909,10.3245
0.99929,10.6932
0.99945,11.0619
0.99957,11.4307
0.99966,11.7994
0.99974,12.1681
0.9998,12.5369
0.99984,12.9056
0.99988,13.2743
0.9999,13.6431
0.99993,14.0118
0.99994,14.3805
0.99995,14.7493
tab1 table m1,0,2,12
tab2 table mp2,0,2,10
******** Basic Program *******
10 generate 1,fn$expL
20 assign 2,1
30 gate NU 1,exitNOT
40 seize 1
50 advance 1,fn$expM
60 release 1
70 mark 2
80 gate NU 2
90 tabulate tab2
100 seize 2
110 advance 1,fn$expM
120 release 2
130 tabulate tab1
140 transfer ,exitSERV
150 exitNOT terminate
160 exitSERV terminate
200 generate 969
210 terminate 1
start 1
;end
Файл стандартного отчета после выполнения GPSS-программы:
GPSS/PC Report file REPORT.GPS. (V 2, # 37349) 07-10-2004 21:02:37 page 1
START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY
0 969 18 2 0 102752
LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY
10 1 GENERATE 364 0 0
20 2 ASSIGN 364 0 0
30 3 GATE 364 0 0
40 4 SEIZE 242 0 0
50 5 ADVANCE 242 0 0
60 6 RELEASE 242 0 0
70 7 MARK 242 0 0
80 8 GATE 242 0 0
90 9 TABULATE 242 0 0
100 10 SEIZE 242 0 0
110 11 ADVANCE 242 0 0
120 12 RELEASE 242 0 0
130 13 TABULATE 242 0 0
140 14 TRANSFER 242 0 0
150 EXITNOT TERMINATE 122 0 0
160 EXITSERV TERMINATE 242 0 0
200 17 GENERATE 1 0 0
210 18 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY
1 242 0.278 1.12 1 0 0 0 0 0
2 242 0.262 1.05 1 0 0 0 0 0
TABLE MEAN STD.DEV. RETRY RANGE FREQUENCY CUM.%
TAB1 2.95 2.97 0
- 0 43 17.77
0 - 2 90 54.96
2 - 4 57 78.51
4 - 6 25 88.84
6 - 8 16 95.45
8 - 10 4 97.11
10 - 12 2 97.93
12 - 14 3 99.17
14 - 16 2 100.00
TAB2 0.79 2.25 0
- 0 195 80.58
0 - 2 20 88.84
2 - 4 11 93.39
4 - 6 8 96.69
6 - 8 3 97.93
8 - 10 1 98.35
10 - 12 1 98.76
12 - 14 3 100.00
GPSS/PC Report file REPORT.GPS. (V 2, # 37349) 07-10-2004 21:02:37 page 2
