Моделирование системы массового обслуживания при помощи языка имитационного моделирования GPSS, страница 3

TESTEP$who,1,exp_profAB1

;если пришел новичок

QUEUEDescendBA1         

;время начала спуска новичка с уровня B

TRANSFER  ,con1

exp_profAB1         TEST E    P$who,2,profAB1

                    QUEUEDescendBA2         

;время начала спуска опытного с уровня B

TRANSFER  ,con1

profAB1QUEUEDescendBA3         

;время начала спуска профессионала с уровня B

con1                TRANSFER  P$SimpleFall,,sfall

;с вероятностью SimpleFall лыжник упал на спуске BA

TRANSFER  ,notsfall

sfallADVANCE   120                                    

;время на то,чтобы встать при падении составляет 2 мин.   

notsfallADVANCE  (normal(5,P$SimpleMean,P$SimpleDispers))

;время на прохождение спуска BA распределено нормально

TEST EP$who,1,exp_profAB2 ;если пришел новичок

DEPARTDescendBA1         

;время окончания спуска новичка с уровня B

TRANSFER  ,desideA

exp_profAB2         TEST E    P$who,2,profAB2

DEPART    DescendBA2         

;время окончания спуска опытного с уровня B

TRANSFER  ,desideA

profAB2             DEPARTDescendBA3         

;время окончания спуска профессионала с уровня B

;спустился снова на уровень A

;лыжник решает ехать ему вверх на подъемнике AB или уйти совсем

desideA             TESTL P$downnumber,11,Adownnumber_great10

;если число пройденных спусков >10 то на Adownnumber_great10

;если число пройденных спусков <11

TRANSFERP$Aup_11less,,continueA

;с вероятностью Aup_11less лыжник идет на подъемник AB

TRANSFER ,quit

;с вероятностью 1-Aup_11less лыжник уходит с трассы

Adownnumber_great10 TRANSFER P$Aup_10great,,continueA     

;с вероятностью Aup_10great лыжник идет на подъемник AB

TRANSFER ,quit

;с вероятностью 1-Aup_10great лыжник уходит с трассы

;посадка на подъмник на уровне B

spaceBCSTORAGE   15             

;ограничение на количество одновременно находящихся людей

continueBENTERspaceBC

;на подъемнике могут одновременно находиться не более 15 чел

GATELSInDoorOpenedBC

;если двери на подъемник открыты занимаем место на подъемнике от B до C

QUEUEelevatorBC

;добавляем лыжника  в очередь на подъемник от B до C

GATE LS   OutDoorOpenedBC

                    DEPART    elevatorBC      ;освобождаемочередь

LEAVEspaceBC        

;освобождаем место на подъемнике

;спуск с уровня C

ASSIGNdownnumber+,1      

;добавляем спуск BC к количеству пройденных спусков

TESTEP$who,1,exp_profBC1

;если пришел новичок

QUEUEDescendBC1         

;время начала спуска новичка с уровня C

TRANSFER  ,con2

exp_profBC1         TEST E    P$who,2,profBC1

QUEUEDescendBC2         

;время начала спуска опытного с уровня C

TRANSFER  ,con2

profBC1QUEUEDescendBC3         

;время начала спуска профессионала с уровня C

con2                TRANSFER  P$HardFall,,hfall  

;с вероятностью HardFall лыжник упал на спуске CB

TRANSFER  ,nothfall

hfallADVANCE   120                          

;время на то,чтобы встать при падении составляет 2 мин.   

nothfallADVANCE   (normal(2,P$HardMean,P$HardDispers))

;время на прохождение спуска CB распределено нормально

TESTEP$who,1,exp_profBC2 ;если пришел новичок

DEPARTDescendBC1         

;время окончания спуска новичка с уровня C

TRANSFER  ,desideB

exp_profBC2         TEST E    P$who,2,profBC2

DEPARTDescendBC2         

;время окончания спуска опытного с уровня C

TRANSFER  ,desideB

profBC2DEPARTDescendBC3          

;время окончания спуска профессионала с уровня C

TRANSFER  ,desideB           

;спустился снова на уровень B

GENERATE 140,,,3

u1                  LOGIC S InDoorOpenedAB

                    ADVANCE 30

                    LOGIC R InDoorOpenedAB

                    ADVANCE 180            

;время подъема на подъемнике AB 3 мин.

LOGIC S OutDoorOpenedAB

                    ADVANCE 30

                    LOGIC R OutDoorOpenedAB

                    ADVANCE 180

                    TRANSFER ,u1

                    GENERATE ,,,1

u2                  LOGIC S InDoorOpenedBC

                    ADVANCE 30

                    LOGIC R InDoorOpenedBC