Рассмотрим работу телефонной сети, имеющей 50 абонентских линий связи, причем одновременно может быть задействовано не более 10 связей между абонентами. Каждый абонент может соединиться с остальными, если свободны его входная линия связи и входная линия вызываемого абонента. Из 50 линий для организации связи могут использоваться любые две свободных линии. Необходимо промоделировать работу телефонной сети для 1000 вызовов. Интервалы между вызовами и длительность разговора распределены по экспоненциальному закону. Предусматривается, что первые 15 вызовов образуют переходной процесс в сети и эти данные не нужно учитывать при моделировании. Модель этой системы разработал Джеффри Гордон для GPSS/H.
Приведенный текст программы модифицирован для GPSS World.
Программа:
*Origin: System simulation
*Author: Geoffrey Gordon
*Description: Simulation of a telephone system
*
* SIMULATION OF A TELEPHONE SYSTEM - MODEL 2 (president line)
POISS FUNCTION RN1.C24; Функция интервалов
; между вызовами
0.0,0.0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69 0.6,0.915/0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,7.12 0.9,2.3/0.92,2.52/0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5 0.98,3.9/0.99,4.6/0.995,5.3/0.998,6.2/0.999,7/0.9997,8
|
|
2 GENERATE 12,FN$POISS; Генерация вызова
3 TESTG V$FREELN,2,ABND; Система заполнена?
4 ASN1 ASSIGN 1,V$L1NE; Нет, указать номер
; входной линии абонента,; вызывающего другого; для разговора
5 GATE LR *1,ASN1; Проверка занятости
;линии
6 ASN2 ASSIGN 2,V$LINE; Выбор адресата связи
TESTNE P1,P2,ASN2; Повторить, если адресат
; совпадает со входной; линией абонента
8 LOGIC S *1; Установить выходную
; линию абонента занятой
TRANSFER BOTH,,BLKD; Дождаться связи
Ю GETL ENTER LNKS; Установить связь
И GATE LR *2,BUSY; Проверка занятости
12 LOGIC S *2; Установить адресата
; занятым
13 ADVANCE 120,FN$POISS; Разговор
14 LOGIC R *1; Установить входную
; линию абонента;свободной
15 LOGIC R *2; Установить адресата
; свободным
LEAVE LNKS; Освободить связь
17 СКСН TESTG CH$WAIT,O,MTRM; Есть ли ожидающие
; вызовы?
GATE LR 1,GETF; Проверить, свободна ли
; выходная линия?
UNLINK WAIT,GETL,1,2,1,GETF; Установить связь с первым ожидающим вызовом
MTRM TERMINATE 1
GETF UNLINK WAIT,GETL,1; Подключить первый
; ожидающий вызов
TRANSFER,MTRM
ABND TERMINATE; Отказаться от вызова
BLKD LINK WAIT,P1; Ожидать в порядке
; поступления вызовов
25 BUSY LOGIC R *1; Освободить линию
LEAVE LNKS; Освободить связь
TRANSFER,CKCH
LNKS STORAGE 10; Количество
; одновременных связей; между абонентами
29 LINE VARIABLE X$NRLINES#RNl/1000+l < Выбор линии
30 FREELN VARIABLE X$NRLINES-2#S$LNKS-CH$WAIT > Номер свободной линии
Операторы управления GPSS World
31 INITIAL X$NRLINES,50; Количество линий
; для связи
START 15,NP; 15 проходов
RESET; Сброс статистики