* GPSS-МОДЕЛЬ УЗЛА ВЫЧИСЛИТЕЛЬНОЙ СЕТИ
* =======================================
* Система обработки задач трёх типов на двух компьютерах
* с передачей результатов по двум каналам связи
* ============ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ И УСТРОЙСТВ ============
* Переменные для подсчёта решённых задач по типам
QTYPES VARIABLE 0 ; Счётчик задач типа A
QTYPEB VARIABLE 0 ; Счётчик задач типа B
QTYPEC VARIABLE 0 ; Счётчик задач типа C
* Устройства (компьютеры)
COMPUTER STORAGE 2 ; 2 компьютера
* Очереди задач (GPSS автоматически создаёт очереди)
* Queue 1 - для компьютера 1
* Queue 2 - для компьютера 2
* Каналы связи (обслуживающие устройства)
CHANNEL1 SEIZE ; Канал К1
CHANNEL2 SEIZE ; Канал К2
* ============ ПАРАМЕТРЫ РАСПРЕДЕЛЕНИЙ ============
* Интервалы между поступлениями задач
* Средний интервал = 20 мин, λ = 1/20 = 0.05 задач/мин
* Поуассоновский поток реализуется через экспоненциальное распределение
* Время обслуживания:
* Тип A: средн. 10 мин, σ = 1.5 мин (нормальное)
* Тип B: средн. 20 мин, σ = 1.5 мин (нормальное)
* Тип C: средн. 15 мин, σ = 1.5 мин (нормальное)
* Передача: средн. 3.5 мин (экспоненциальное)
* ============ ГЕНЕРАТОР ПОСТУПЛЕНИЯ ЗАДАЧ ============
GENERATE 20,,,,,1 ; Порождение задач каждые 20 мин (в среднем)
* ; Экспоненциальное распределение
* Определение типа задачи по вероятностям
ASSIGN TYPE, RNPO(1) ; Выбор типа задачи случайно
* RNPO(1): 0.4 -> тип A, 0.25 -> тип B, 0.35 -> тип C
BRANCH 1,BEGIN
.4, TYPEA ; 40% - задачи типа A
.65, TYPEB ; 25% - задачи типа B (0.4 + 0.25)
,TYPEC ; 35% - задачи типа C (остальные)
* ============ ВЕТВЬ ЗАДАЧ ТИПА A ============
TYPEA ASSIGN AT, 10 ; Среднее время решения 10 мин
ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
BRANCH 1, QUEUE1
* ============ ВЕТВЬ ЗАДАЧ ТИПА B ============
TYPEB ASSIGN AT, 20 ; Среднее время решения 20 мин
ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
BRANCH 1, QUEUE1
* ============ ВЕТВЬ ЗАДАЧ ТИПА C ============
TYPEC ASSIGN AT, 15 ; Среднее время решения 15 мин
ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
BRANCH 1, QUEUE1
* ============ РАСПРЕДЕЛЕНИЕ НА КОМПЬЮТЕРЫ ============
QUEUE1 TEST NE Q(1), Q(2), COMP1 ; Если очередь 1 короче
BRANCH 1, COMP2 ; Иначе компьютер 2
COMP1 QUEUE 1 ; Встать в очередь 1
SEIZE COMPUTER, 1 ; Захватить место в массиве
DEPART 1 ; Покинуть очередь 1
ADVANCE AT, ST ; Обслуживание с нормальным распред.
RELEASE COMPUTER, 1 ; Освободить компьютер
BRANCH 1, TRANSMIT ; Перейти к передаче
COMP2 QUEUE 2 ; Встать в очередь 2
SEIZE COMPUTER, 1 ; Захватить место в массиве
DEPART 2 ; Покинуть очередь 2
ADVANCE AT, ST ; Обслуживание
RELEASE COMPUTER, 1 ; Освободить компьютер
BRANCH 1, TRANSMIT ; Перейти к передаче
* ============ ПЕРЕДАЧА РЕЗУЛЬТАТОВ ПО КАНАЛАМ ============
TRANSMIT TEST NE FCH1, 1, CHAL1 ; Если канал К1 свободен
BRANCH 1, CHAL2 ; Иначе К2
CHAL1 SEIZE CHANNEL1 ; Захватить канал К1
ADVANCE 3.5, , , 1 ; Передача 3.5 мин (экспонента)
RELEASE CHANNEL1 ; Освободить канал К1
BRANCH 1, COUNT
CHAL2 SEIZE CHANNEL2 ; Захватить канал К2
ADVANCE 3.5, , , 1 ; Передача 3.5 мин (экспонента)
RELEASE CHANNEL2 ; Освободить канал К2
BRANCH 1, COUNT
* ============ ПОДСЧЁТ РЕЗУЛЬТАТОВ ============
COUNT TEST EQ TYPE, 1, COUNTA ; Если тип A
TEST EQ TYPE, 2, COUNTB ; Если тип B
BRANCH 1, COUNTC
COUNTA SAVEVALUE QTYPES, +1 ; Увеличить счётчик A
BRANCH 1, DONE
COUNTB SAVEVALUE QTYPEB, +1 ; Увеличить счётчик B
BRANCH 1, DONE
COUNTC SAVEVALUE QTYPEC, +1 ; Увеличить счётчик C
BRANCH 1, DONE
DONE TERMINATE ; Завершить текущую задачу
* ============ ОКОНЧАНИЕ МОДЕЛИРОВАНИЯ ============
GENERATE 6000 ; Выход через 100 часов
TERMINATE 1 ; Завершить симуляцию
END