2' 'ư>HELPA\NhNN:l$CONTINUE n((EXIT&%p=lHALTމPl$dSTEP 1v4߉lg STOP߉X^F%EFSTOP ,,OFFg^w@߉U$T߉W$O{gp߉.Od{Cg|߉{C|ŻOdg{CModelsSchr6a.gpsLFeCFEOiLiiE(((((((((({\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 * Adapted from "Simulation Using GPSS", by Thomas J. Schriber \par * Oil Tanker Accomodation at a Port \par * \par *Loc Operation A,B,C,D,E,F,G Comments \par * \par * Function Definitions \par * \par Mean FUNCTION P1,L4 ;Mean service time for tanker type \par 1,18/2,24/3,36/4,21 \par Spred FUNCTION P1,L4 ;Service time spread for tanker ty \par 1,2/2,3/3,4/4,3 \par Type FUNCTION RN1,D3 ;Distribution of 'other tanker' ty \par .25,1/.8,2/1,3 \par * \par * Storage Capacity Definition \par * \par BERTH STORAGE 3 ;Provide 3 berths \par * \par Tab1 EQU 1 \par Tab2 EQU 2 \par Tab3 EQU 3 \par Tab4 EQU 4 \par Tab1 TABLE M1,20,10,9 ;Port residence time, 'tanker type \par Tab2 TABLE M1,20,10,9 ;Port residence time, 'tanker type \par Tab3 TABLE M1,40,10,9 ;Port residence time, 'tanker type \par Tab4 TABLE MP3,20,10,9 ;Port residence time, proposed tan \par * \par * Variable Definitions \par * \par GoIn BVARIABLE (1-SF$Berth)#(1-F$Tug)#(1-LS$Storm) \par GoOut BVARIABLE (1-F$Tug)#(1-LS$Storm) \par Space VARIABLE 48#N$Here \par * \par * Model Segment 1 (Storm Generating Segment) \par * \par GENERATE ,,,1 ;Seed the storm segment \par Next ADVANCE (Exponential(1,0,48)) ;Storm is on its way \par LOGIC S Storm ;Storm arrives, set storm signal \par ADVANCE 4,2 ;The storm is storming \par LOGIC R Storm ;Storm is over, turn storm switch \par TRANSFER ,Next ;Go bring on the next storm \par * \par * Model Segment 2 (Initialization Segment For Proposed Tankers) \par * \par GENERATE ,,,5 ;Bring the proposed tankers into t \par ASSIGN 1,4 ;Code proposed tankers with P1 val \par Here ADVANCE V$Space ;Space out times of their first po \par MARK 3 ;Set P3 = arrival time at port \par TRANSFER ,Port ;Jump into major model segment \par * \par * Model Segment 3 (Port Activities, Cycling of Proposed Tankers) \par * \par GENERATE 11,7 ;'Other tankers' arrive at port \par ASSIGN 1,FN$Type ;Set P1 = tanker-type code \par Port TEST E SF$Berth,0 ;Wait until all ok for movement in \par TEST E F$Tug,0 ;Wait until all ok for movement in \par TEST E LS$Storm,0 ;Wait until all ok for movement in \par TRANSFER Sim,,Port \par SEIZE Tug ;Update tug status to 'busy' \par ENTER Berth ;Update berth status \par ADVANCE 1 ;Tanker is being moved into berth \par RELEASE Tug ;Tug now no longer needed \par ASSIGN 2,FN$Spred ;Set P2 = service time spread \par ADVANCE FN$Mean,P2 ;Tanker is being loaded \par TryLeave TEST E F$Tug,0 ;Wait for tug \par TEST E LS$Storm,0 ;Wait until all is ok fro leaving \par TRANSFER Sim,,TryLeave \par SEIZE Tug ;Update tug status to 'busy' \par ADVANCE 1 ;Tanker is being moved out of bert \par RELEASE Tug ;Tug is no longer needed \par LEAVE Berth ;Berth is now available for other \par TABULATE P1 ;Record residence time in port \par TEST NE P1,4,Cycle ;Sieve out the proposed tankers \par TERMINATE ;'Other tankers' leave \par Cycle ADVANCE 240,24 ;Proposed tankers make their round \par MARK 3 ;Set P3 = time of return to port \par TRANSFER ,Port ;Tanker is back at port \par * \par * Model Segment 4 (Timer Segment) \par * \par GENERATE 8760 ;Timer arrives after 1 year \par TERMINATE 1 ;Shut off the run \par \par \par }