2' 'ư>HELPA\NhNN:lCONTINUE n((pEXIT&%p=lHALTމPlpdSTEP 1f4߉lg STOP߉X^F%EFSTOP ,,OFFg^w@߉U T߉W Olgp߉.OdlDg|߉lD|ŻOdglDModelsShipport.gpsLFeCFEO$|jL$|j6ojE(((((((((({\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}} {\colortbl\red0\green0\blue0;} \deflang1033\pard\tx1200\tx2400\tx4450\plain\f2\fs20 ; GPSS World Sample File - SHIPPORT.GPS \par ; Based on a model by Gerard F. Cummings \par ********************************************************************** \par * * \par * Ship and Port Simulation * \par * Time in in Hours * \par ********************************************************************** \par Berth1 EQU 1 \par Berth2 EQU 2 \par Berth3 EQU 3 \par Tide EQU 1 \par Tsmall EQU 1 \par Tmedium EQU 2 \par Tlarge EQU 3 \par * \par *------Boolean Variables---------------------------------------------- \par Var1 BVARIABLE (R$Berth2'GE'1+R$Berth3'GE'1)#Q3'E'0 \par Var2 BVARIABLE R$Berth2'GE'1 \par Var3 BVARIABLE R$Berth3'GE'1 \par Var4 BVARIABLE SE$Berth1 \par Var5 BVARIABLE (R$Berth2'GE'2+R$Berth3'GE'2)#Q3'E'0 \par Var6 BVARIABLE R$Berth2'GE'2 \par Var7 BVARIABLE R$Berth3'GE'2 \par Var8 BVARIABLE SE$Berth3#LS1 \par Var9 BVARIABLE SE$Berth2#LS1 \par * \par *--Size of Berths in relation to small ships-------------------------- \par Berth1 STORAGE 2 \par Berth2 STORAGE 4 \par Berth3 STORAGE 4 \par * \par *--------Table Definations-------------------------------------------- \par Tsmall TABLE M1,30,10,20 ;Small ship transit time \par Tmedium TABLE M1,30,10,20 ;Medium ship transit time \par Tlarge TABLE M1,30,10,20 ;Large ship transit time \par ********************************************************************** \par * \par *--------Day Timer---------------------------------------------------- \par GENERATE 24 ;One xact each day \par TERMINATE 1 ;Clock operates once/day \par ********************************************************************** \par * \par *--------Tide Control------------------------------------------------- \par GENERATE ,,0,1 \par Again LOGIC R Tide ;Cycling xact models \par ; the tide \par ADVANCE 3 ;Tide is low for 3 hours \par LOGIC S Tide ;Tide comes in \par ADVANCE 10 ;Tide is high for 10 hrs \par TRANSFER ,Again ;Branch back to 'Again' \par ********************************************************************** \par GENERATE (Exponential(1,0,26)) ;A ship every 26 hrs. \par TRANSFER 500,,Inter ;50 % are small \par * \par *-------Characteristics of small ships are assigned to parameters----- \par ASSIGN Size,1 ;Type ship small, size=1 \par ASSIGN Capacity,1 ;Capacity P2=1 \par ; Small ship \par ASSIGN Quenum,1 ;Queue #1 for \par ; small ships \par ASSIGN M_Unload,15 ;Mean unload time \par ASSIGN M_Load,24 ;Mean load time \par ASSIGN Loadsp,6 ;Load time spread \par QUEUE P$Quenum ;Join queue-small ships \par TRANSFER Both,Pier1,Pier2 \par *-------Assign Berth 1 When Available--------------------------------- \par Pier1 GATE SNF Berth1 \par ASSIGN Berth_Num,1 ;Berth obtained=Berth1 \par *-------Move into Berth and Unload and Load--------------------------- \par Small ENTER P$Berth_num,P$Capacity ;Enter berth using up \par ; ship capacity \par DEPART P$Quenum ;Depart queue \par ADVANCE P$M_Unload,(Exponential(1,0,1)) ;Unload time \par ADVANCE P$M_Load,P$Loadsp ;Loading time \par TEST E P$Size,3,Skipit ;A large ship? \par *-------When Switch is Set, Tide is High------------------------------ \par GATE LS Tide ;Wait for tide \par Skipit LEAVE P$Berth_Num,P$Capacity ;Leave berth by \par ; ship capacity \par TABULATE P$Quenum ;Tabulate transit time \par ; by ship type \par TERMINATE ;Ship sails \par ********************************************************************** \par *-------Assign Berth 2 or Berth 3 when available(dependent------------ \par * on the ship configuration \par Pier2 TEST E BV$Var1,1 ;Small ship tries 2 or 3 \par TRANSFER Both,Bert2,Bert3 ;Try berth2 or berth3 \par Bert2 TEST E BV$VAR2,1 ;Berth2 available? \par ASSIGN Berth_Num,2 ;Assigned to berth2 \par TRANSFER ,Small \par Bert3 TEST E BV$Var3,1 ;Berth3 available? \par ASSIGN Berth_Num,3 ;Assigned to berth3 \par TRANSFER ,Small \par * \par *-------Characteristics of medium ships are assigned to parameters---- \par Inter TRANSFER 400,,Large ;20% of all ships \par ; are large \par PRIORITY 2 ;All medium ships \par ; enter here \par ASSIGN Size,2 ;Type ship medium, \par ; Size=2 \par ASSIGN Capacity,2 ;Capacity = 2 \par ; Medium ship \par ASSIGN Quenum,2 ;Queue 2 for med ships \par ASSIGN M_Unload,30 ;Mean unload time \par ASSIGN M_Load,36 ;Mean load time \par ASSIGN Loadsp,10 ;Load time spread \par QUEUE P$Quenum ;Join queue for small \par ; ships \par TRANSFER Both,Quay1,Quay2 \par Quay1 TEST E BV$Var4,1 ;Try for berth1 \par ASSIGN Berth_Num,1 ;Assigned to berth1 \par TRANSFER ,Small ;Transfer for processing \par Quay2 TEST E BV$Var5,1 ;Try for berth 2 or 3 \par TRANSFER Both,,Quay3 ;Try berth2 first \par TEST E BV$Var6,1 ;Is berth2 available? \par ASSIGN Berth_Num,2 ;Gets berth2 \par TRANSFER ,Small ;Transfer for processing \par Quay3 TEST E BV$Var7,1 ;Try for berth3 \par ASSIGN Berth_Num,3 ;Assigned to berth3 \par TRANSFER ,Small ;Transfer for \par ; unload/load \par * \par *-------Characteristics of large ships are assigned to parameters----- \par Large PRIORITY 3 ;All large ships \par ; enter here \par ASSIGN Size,3 ;Type ship large, Size=3 \par ASSIGN Capacity,4 ;Capacity=4 Large ship \par ASSIGN Quenum,3 ;Queue number 3 for \par ; large ships \par ASSIGN M_Unload,45 ;Mean unload time \par ASSIGN M_Load,56 ;Mean load time \par ASSIGN Loadsp,12 ;Load time spread \par QUEUE P$Quenum ;Join queue for \par ; large ships \par TRANSFER Both,First,Second ;Try Berth3 and Berth2 \par First TEST E BV$Var8,1 ;Try Berth3 first \par ASSIGN Berth_Num,3 ;Berth number=3 \par ; Entered Berth3 \par TRANSFER ,Small ;Transfer for \par ; unload/load \par Second TEST E BV$Var9,1 ;Try berth2 second \par ASSIGN Berth_Num,2 ;Berth number=2 \par ; Entered Berth2 \par TRANSFER ,Small ;Transfer for \par ; unload/load \par ********************************************************************** \par \par \par }