logo
Моделирование работы автобусного маршрута

Листинг программы

*Модель работы автобусного маршрута

*Определение объектов

NN EQU 25 ; количество мест в автобусе

T1 EQU 24 ; время, затрачиваемое автобусом А на маршрут

D1 EQU 4 ; отклонения во времени T1

T2 EQU 28 ; время, затрачиваемое автобусом В на маршрут

D2 EQU 6 ; отклонения во времени T2

T3 EQU 4 ; время, затрачиваемое на высадку пассажиров

D3 EQU 2 ; отклонение во времени Т3

LL EQU 40 ; максимальная длина очереди

SS EQU 2 ; плата за проезд денежных единиц

Avto_A STORAGE 25 ; автобус А

Avto_B STORAGE 25 ; автобус В

Vr1 VARIABLE (Uniform (1,T1-D1,T1+D1)) ; время прямого пути автобусов А и Б

Vr2 VARIABLE (Uniform (2,T2-D2,T2+D2)) ; время обратного пути автобусов А и Б

Vr3 VARIABLE (Uniform (3,T3-D3,T3+D3)) ; время высадки пассажиров из автобусов А и Б

Vrem QTABLE Och,10,10,20 ; оценивает очередь с именем Och

GENERATE (Exponential(1,0,1)) ; прибытие пассажиров

ADOPT 55 ; принадлежность к одному семейству

TEST LE Q$Och,LL,Otkaz ; отказ, если длина очереди больше L

QUEUE Och ; встать в очередь

TRANSFER BOTH,Avt_A,Avt_B ; предпочтение автобусу А

*описание 1-го автобуса

Avt_A ENTER Avto_A ; занять одно место автобуса А

DEPART Och ; покинуть очередь

ASSEMBLE NN ; автобус рассматривается как единое целое

ADVANCE V$Vr1 ; поездка в один конец

ADVANCE V$Vr3 ; пассажиры выходят

ADVANCE V$Vr1 ; поездка в обратном направлении

LEAVE Avto_A,NN ; освободить автобус

TRANSFER ,Fin

*описание 2-го автобуса

Avt_B ENTER Avto_B ; занять одно место автобуса B

DEPART Och ; покинуть очередь

ASSEMBLE NN ; автобус рассматривается как единое целое

ADVANCE V$Vr2 ; поездка в один конец

ADVANCE V$Vr3 ; пассажиры выходят

ADVANCE V$Vr2 ; поездка в обратном направлении

LEAVE Avto_B,NN ; освободить автобус

Fin SAVEVALUE Kpoezd+,1 ; считаем суммарное количество рейсов

TERMINATE

Otkaz SAVEVALUE Kotk+,1 ; считаем количество отказов

TERMINATE

*сегмент таймера

GENERATE 600

SAVEVALUE Vyr,(NN#SS#X$Kpoezd-SS#X$Kotk)

TERMINATE 1

START 1