10 SIMULATE
20 GENERATE 7,2; генерация транзактов, изображающих заявки
30 VB1 VARIABLE RN1/200+13; вычисление максимально возможного времени пребывания транзакта в очереди
40 ASSIGN 3,0; разница между временем входа транзакта в очередь и текущим моментом времени
50 ASSIGN 2,V$VB1; запись максимального времени
60 ASSIGN 1,X1; время входа транзакта в очередь
70 TEST NE X3,0,ENR; если очередь пуста, переход к проверке занятости АЗС
80 ENO QUEUE OZD; регистрация в очереди
90 SAVEVALUE 3+,1; увеличение размера очереди
100 ADC ADVANCE 1; задержка транзакта в ожидании свободного места на АЗС
110 GATE SF CCL,DPT; если на АЗС есть место, покинуть очередь
120 SAVEVALUE 2,X1; запись текущего времени
130 SAVEVALUE 2-,P1; вычисление разницы между текущим временем и временем входа транзакта в очередь
140 ASSIGN 3,X2; и запись разницы
150 TEST LE P3,P2,DPT; если разница превысила время ожидания, покинуть очередь,
160 TRANSFER,ADC; в противном случае, вновь ожидать одну минуту
170 DPT SAVEVALUE 3-,1; уменьшение числа транзактов в очереди
180 DEPART OZD; транзакт покидает очередь
190 TEST G P3,P2,EN1; если разница не превышает времени ожидания, занять место на АЗС,
|
|
200 TERMINATE; в противном случае, покинуть АЗС
210 ENR GATE SNF CCL,ENO; если на АЗС нет мест, встать в очередь,
220 EN1 ENTER CCL; в противном случае занять свободное место
230 MARK; отметка начала обслуживания транзакта на АЗС
240 TRANSFER.333,CP1,UP1; трети АТП отпускается бензин и ГСМ, а остальным только бензин
250 UP1 SEIZE UPD; транзакт занимает место для отпуска ГСМ
260 ADVANCE 5,1; и обслуживается некоторое время,
270 RELEASE UPD; затем покидает систему отпуска ГСМ
280 CP1 ENTER COM; и занимает место на одной из двух ТРК,
290 ADVANCE 3,1; обслуживается в течение нескольких минут
300 LEAVE COM; и покидает ТРК
310 TABULATE MWT; фиксация времени пребывания транзакта на АЗС
320 TERMINATE; транзакт покидает АЗС
330 GENERATE 1; моделирование времени работы АЗС
340 SAVEVALUE 1+,1; счетчик времени (в минутах)
350 TRM TERMINATE 1; одна минута системного времени истекла
360 CCL STORAGE 8; накопитель – АЗС вместимостью 8 транзактов
370 COM STORAGE 2; накопитель – 2 ТРК емкостью 2 транзакта
380 MWT TABLE M1,15,15,15; описание таблицы распределения общего времени обслуживания транзакта
390 START 480; работа системы в течение 8 часов (60*8=480 часов)
В программе используются следующие объекты:
ПЕРЕМЕННЫЕ И ПАРАМЕТРЫ
VB1 – значение максимально возможного времени ожидания транзактом обслуживания (вычисляется для каждого транзакта в отдельности);
X1 – счетчик системного времени в минутах;
P1 – параметр транзакта, определяющий его время вхождения в очередь;
P2 – максимальное время пребывания транзакта в очереди;
P3 – время пребывания транзакта в очереди (изменяется в процессе движения транзакта внутри очереди);
X2 – переменная, используемая для промежуточных вычислений;
|
|
X3 – количество транзактов в очереди.
УСТРОЙСТВА, НАКОПИТЕЛИ, ОЧЕРЕДЬ И ТАБЛИЦА
OZD – очередь на АЗС;
CCL – накопитель, изображающий АЗС, емкостью 8 транзактов;
UPD – устройство, изображающее систему отпуска ГСМ;
COM – накопитель, изображающий две ТРК, емкостью 2 транзакта;
MWT – таблица распределения общего времени обслуживания транзакта.
Изложенного достаточно, чтобы создать впечатление о языках имитационного моделирования, как альтернативным универсальным языкам средствам имитационного моделирования сложных систем.
Ниже представлена схема проведения имитационных экспериментов с моделями сложных систем.
Схема проведения имитационных экспериментов с моделями сложных систем