Simulation of a turnstile at a football stadium.
Problem Statement
Spectators arrive at a turnstile of a football stadium every 7±7 seconds and queue for admittance. The time to pass through is evenly distributed at 5±3 seconds.A model is required to determine the time taken by 300 people to pass through the turnstile.
Listing
In_use EQU 5 ;Mean time
Range EQU 3 ;Half range
GENERATE 7,7 ;People arrive
QUEUE Turn ;Enter queue
SEIZE Turn ;Acquire turnstile
DEPART Turn ;Depart the queue
ADVANCE In_use,Range ;Use turnstile
RELEASE Turn ;Leave turnstile
TERMINATE 1 ;One spectator enters
**************************************************************
Simulation of a simple telephone system.
A simple telephone system has two external lines. Calls, which originate externally, arrive every 100±60 seconds. When the line is occupied, the caller redials after 5±1 minutes have elapsed. Call duration is 3±1 minutes. A tabulation of the distribution of the time each caller takes to make a successful call is required. How long will it take for 200 calls to be completed?
Listing
* Simple Telephone Simulation
* Time Unit is one minute
Sets STORAGE 2
Transit TABLE M1,.5,1,20 ;Transit times
GENERATE 1.667,1 ;Calls arrive
Again GATE SNF Sets,Occupied ;Try for a line
ENTER Sets ;Connect call
ADVANCE 3,1 ;Speak for 3+/-1 min
LEAVE Sets ;Free a line
TABULATE Transit ;Tabulate transit time
TERMINATE 1 ;Remove a Transaction
Occupied ADVANCE 5,1 ;Wait 5 minutes
TRANSFER ,Again ;Try again
**************************************************************
Simulation of inventory with periodic review.A finished product inventory is controlled by means of a weekly periodic review system. The initial stock is 1000 units. The daily demand varies between 40 and 63 units with equal probability. The target inventory is 1000 units, that is, the order is placed for the difference between the current stock and 1000 units. If the current stock is 800 or more, no order is placed for that week. The company operates a five-day week. The lead time for delivery of an order is one week.
Simulate the inventory system for 200 days and determine if any stockouts occur.
Listing
* Definitions of non Block entities
RMULT 39941
Stock STORAGE 10000 ;Warehouse can hold 10000
Stock TABLE S$Stock,100,100,20 ;Table for inventory amts
Orderqty VARIABLE Target-S$Stock ;Order quantity
Demand VARIABLE RN1@24+40 ;Daily demand
Target EQU 1000 ;Initial stock level
Reorder EQU 800 ;Reorder point
***********************************************************************
* The reorder process
GENERATE 5,,,,1 ;Review xact, Priority=1
TEST L S$Stock,Reorder,Skip ;Is stock < Reorderpt
ASSIGN 2,V$Orderqty ;Parameter 2=Order quantity
Custwait ADVANCE 5 ;Lead time is 5 days
ENTER Stock,P2 ;Stock increases by P2
Skip TERMINATE ;Ordering xact is finished
***********************************************************************
* The daily demand decrements quantity on hand
GENERATE 1 ;Daily demand Transaction
ASSIGN 1,V$Demand ;Parameter 1(P1)=daily demand
TABULATE Stock ;Record daily stock
TEST GE S$Stock,P1,Stockout ;Can order be filled
LEAVE Stock,P1 ;Remove demand from stock
TERMINATE 1 ;Daily timer
Stockout TERMINATE 1 ;Daily timer
***********************************************************************
* Initialize the inventory
GENERATE ,,,1,10 ;Set initial stock
ENTER Stock,Target ;Set init stock level=target
TERMINATE ;Xact is terminated
*********************************************************************
Simulation of a television repair shop.
A television shop employs a single repairman to overhaul its rented television sets, service customers’ sets and do on-the-spot repairs. Overhaul of company owned television sets commences every 40±8 hours and takes 10±1 hours to complete. On-the-spot repairs, such as fuse replacement, tuning and adjustments are done immediately. These arrive every 90±10 minutes and take 15±5 minutes. Customers’ television sets requiring normal service arrive every 5±1 hours and take 120±30 minutes to complete. Normal service of television sets has a higher priority than the overhaul of company owned, rented sets.
1. Simulate the operation of the repair department for 50 days.
2. Determine the utilization of the repairman and the delays in the service to customers.
Listing
; GPSS World Sample File - TVREPAIR.GPS, by Gerard F. Cummings
*****************************************************************
* Television Maintenance Man Model *
*****************************************************************
* Repair of rented sets, one each week *
* Time unit is one minute *
*****************************************************************
GENERATE 2400,480,,,1 ;Overhaul of a rented set
QUEUE Overhaul ;Queue for service
QUEUE Alljobs ;Collect global statistics
SEIZE Maintenance ;Obtain TV repairman
DEPART Overhaul ;Leave queue for man
DEPART Alljobs ;Collect global statistics
ADVANCE 600,60 ;Complete job 10+/-1 hours
RELEASE Maintenance ;Free repairman
TERMINATE ;Remove one Transaction
*****************************************************************
* On the spot repairs
GENERATE 90,10,,,3 ;On-the-spot repairs
QUEUE Spot ;Queue for spot repairs
QUEUE Alljobs ;Collect global statistics
PREEMPT Maintenance,PR ;Get the TV repairman
DEPART Spot ;Depart the ‘spot’ queue
DEPART Alljobs ;Collect global statistics
ADVANCE 15,5 ;Time for tuning/fuse/fault
RETURN Maintenance ;Free maintenance man
TERMINATE
****************************************************************
* Normal repairs on customer owned sets
GENERATE 300,60,,,2 ;Normal TV Repairs
QUEUE Service ;Queue for service
QUEUE Alljobs ;Collect global statistics
PREEMPT Maintenance,PR ;Preempt maintenance man
DEPART Service ;Depart the ‘service’ queue
DEPART Alljobs ;Collect global statistics
ADVANCE 120,30 ;Normal service time
RETURN Maintenance ;Release the man
TERMINATE
*****************************************************************
GENERATE 480 ;One xact each 8 hr. day
TERMINATE 1
* Day counter
*****************************************************************
* Tables of queue statistics
Overhaul QTABLE Overhaul,10,10,20
Spot QTABLE Spot,10,10,20
Service QTABLE Service,10,10,20
Alljobs QTABLE Alljobs,10,10,20
****************************************************************
Simulation of a quality control system.
Problem Statement
A component is manufactured by a sequence of three processes, each followed by a short two minute inspection. The first process requires 20% of components to be reworked. The second and third processes require 15% and 5% of components reworked, respectively. Sixty percent of components reworked are scrapped and the remaining forty percent need reprocessing on the process from which they were rejected.
Manufacturing of a new component commences on average, every 30 minutes, exponentially distributed. The time for the first process is given by the following table.
Time For First Process
Frequency .05 .13 .16 .22 .29 .15
Process time 10 14 21 32 38 45
The second process takes 15±6 minutes and the final process time is normally distributed with a mean of 24 minutes and a standard deviation of 4 minutes.
1. Simulate the manufacturing processes for 100 completed components.
2. Determine the time taken, and the number of components rejected.
Listing
*****************************************************************
RMULT 93211
* Definitions
Transit TABLE M1,100,100,20 ;Transit Time
Process FUNCTION RN1,D7
0,0/.05,10/.18,14/.34,21/.56,32/.85,38/1.0,45
*****************************************************************
GENERATE (Exponential(1,0,30))
ASSIGN 1,FN$Process ;Process time in P1
Stage1 SEIZE Machine1
ADVANCE P1 ;Process 1
RELEASE Machine1
ADVANCE 2 ;Inspection
TRANSFER .200,,Rework1 ;20% Need rework
*****************************************************************
Stage2 SEIZE Machine2
ADVANCE 15,6 ;Process 2
RELEASE Machine2
ADVANCE 2 ;Inspection
TRANSFER .150,,Rework2 ;15% Need rework
*****************************************************************
Stage3 SEIZE Machine3
ADVANCE (Normal(1,24,4)) ;Process 3
RELEASE Machine3
ADVANCE 2 ;Inspection 3
TRANSFER .050,,Rework3 ;5% need rework
TABULATE Transit ;Record transit time
TERMINATE 1
*****************************************************************
Rework1 TRANSFER .400,,Stage1
TERMINATE
Rework2 TRANSFER .400,,Stage2
TERMINATE
Rework3 TRANSFER .400,,Stage3
TERMINATE
An inventory system is controlled by an order point, set at 600 units, and an economic order quantity of 500 units. The initial stock quantity is 700. Daily demand is in the range 40 to 63 units, evenly distributed. The lead-time from ordering to delivery of goods is one week (5 days)Simulate the inventory system for a period of 100 days.Determine the distribution of inventory and the actual daily sales.
Listing
* Initialize and define
INITIAL X$EOQ,500 ;Economic order qty.
INITIAL X$Point,600 ;Order point
INITIAL X$Stock,700 ;Set initial stock=700
Inventory TABLE X$Stock,0,50,20 ;Table of stock levels
Sales TABLE P$Demand,38,2,20 ;Table of sales levels
Var2 VARIABLE RN1@24+40
*********************************************************************
GENERATE ,,,1
Again TEST L X$Stock,X$Point ;Order placed on successful test
ADVANCE 5 ;Lead time = 1 week
SAVEVALUE Stock+,X$EOQ ;Economic order
TRANSFER ,Again ;Cycle transaction again
*********************************************************************
GENERATE 1 ;Daily demand xact
ASSIGN Demand,V$Var2 ;Assign daily demand
TABULATE Inventory ;Record inventory
TEST GE X$Stock,P$Demand ;Make sure order can be filled
SAVEVALUE Stock-,P$Demand ;Remove demand from stock
SAVEVALUE Sold,P$Demand ;X$Sold=Daily demand
TABULATE Sales ;Record daily sales
TERMINATE 1 ;Daily timer
*********************************************************************
Simulation of an electronics manufacturing system.
A manufacturing department of an electronics company makes digital watches. In the dispatch department, the watches are packed by an automatic packing machine, in display packets, in the quantities ordered by retailers. The order size is given by the following function.
Order Size
Frequency .10 .25 .30 .15 .12 .05 .03
Order Size 6 12 18 24 30 36 48
The mean time between order arrivals is 15 minutes, exponentially distributed. The packing time per order is 120 seconds plus 10 seconds per watch packed in the order. The manufacturing department produces the digital watches in lot sizes of 60 units, in 455 minutes.
Simulate 5 days of the company operation to provide the following information:
1. The average number of orders waiting in the packing department.
2. The quantity of watches dispatched each day.
3. The distribution of transit times of orders.
Listing
* Time Unit is one hour *
Sizeorder FUNCTION RN1,D7 ;Order size
.10,6/.35,12/.65,18/.80,24/.92,30/.97,36/1.0,48
Transit TABLE M1,.015,.015,20 ;Transit time
Numbe r TABLE X1,100,100,20 ;No. packed each day
Ptime VARIABLE .0028#P1+0.0334 ;Packing time
Amount EQU 1000 ;Initial stock amount
Stock STORAGE 4000 ;Warehouse holds
; 4000 units
***********************************************************************
GENERATE (Exponential(1,0,0.25)) ;Order arrives
ASSIGN 1,1,Sizeorder ;P1=order size
TEST GE S$Stock,P1,Stockout ;Is stock sufficient?
LEAVE Stock,P1 ;Remove P1 from stock
QUEUE Packing
SEIZE Machine ;Get a machine
DEPART Packing
ADVANCE V$Ptime ;Packing time
RELEASE Machine ;Free the machine
SAVEVALUE 1+,P1 ;Accumulate no. packed
TABULATE Transit ;Record transit time
TERMINATE
Stockout TERMINATE
***********************************************************************
GENERATE 0.75,0.08334,1 ;Xact every 40+/-5 mins
ENTER Stock,60 ;Make 60, Stock
; increased by 60
Stockad TERMINATE
***********************************************************************
GENERATE 8 ;Xact every day
TABULATE Number
SAVEVALUE 1,0
TERMINATE 1
*********************************************************************
GENERATE ,,,1,10 ;Initial stock xact
ENTER Stock,Amount ;Set initial stock
TERMINATE
***********************************************************************
Simulation of a textile factory.
A textile factory produces fine mohair yarn in three departments. The first department draws and blends the raw material, in sliver form, and reduces it to a suitable thickness for spinning, in 5 reducer frames. The second department spins the yarn in one of 40 spinning frames. The final process is in the winding department, where the yarn is wound from spinning bobbins onto cones for dispatch. There are 8 winding frames, to perform the winding operation.The factory works 8 hours per day. The unit of production is 10 kilograms of yarn. Reducing frames produce one unit every 38±2 minutes, while the spinning frames and winding frames produce one unit in 320±20 minutes and 64±4 minutes, respectively.The initial inventory of reduced material is 50 units (in Savevalue Reduced), spun material is 25 units (in Savevalue Spun) and finished yarn is 25 units (in Savevalue Wound). The finished material is dispatched, in a container of capacity 200 units, every two days.
1. Simulate the production process in the textile factory for 5 days
2. Find the distribution of the in-process inventories.
3. Determine the utilization of each of the three types of machines.
Listing
Reducers STORAGE 5 ;Represents 5 reducer frames
Spinners STORAGE 40 ;Represents 40 spinning frames
Winders STORAGE 8 ;Represents 8 winding frames
Reducing TABLE X$Reduced,20,20,20 ;Inventory reduced material
Spinning TABLE X$Spun,20,20,20 ;Inventory spun material
Winding TABLE X$Wound,20,20,20 ;Inventory wound material
INITIAL X$Reduced,50
INITIAL X$Spun,25
INITIAL X$Wound,25
**********************************************************************
GENERATE 0.334,,1 ;Time unit is one hour
QUEUE One ;Enter queue for reducing
ENTER Reducers ;Get a machine
DEPART One ;Depart the queue
ADVANCE 0.634,0.334 ;Process time
LEAVE Reducers ;Leave the machine
*********************************************************************
SAVEVALUE Reduced+,1 ;Reduced inventory up by 1
QUEUE Two ;Queue for spinning process
ENTER Spinners ;Get a spinning machine
DEPART Two ;Depart the queue
ADVANCE 5.334,0.334 ;Process time
LEAVE Spinners ;Free a machine
SAVEVALUE Reduced-,1 ;Reduced inventory down 1
*********************************************************************
SAVEVALUE Spun+,1 ;Spun inventory up by one
QUEUE Three ;Queue for winding process
ENTER Winders ;Get a winding machine
DEPART Three ;Depart the queue
ADVANCE 1.067,0.067 ;Process time
LEAVE Winders ;Free a winding machine
SAVEVALUE Spun-,1 ;Spun inventory down by 1
*********************************************************************
SAVEVALUE Wound+,1 ;Wound inventory up by 1
TERMINATE ;Xact is finished
*********************************************************************
GENERATE 8 ;One xact every day
TABULATE Reducing ;Record inventory of
; process
TABULATE Spinning ;Record inventory of spun
; material
TABULATE Winding ;Record inventory of wound
; material
TERMINATE 1 ;One day has passed
***********************************************************************
GENERATE 16 ;A xact every 2 days
TEST GE X$Wound,200,Notthere ;If not done don’t dispatch
SAVEVALUE Wound-,200 ;200 Kgs produce delivered
TERMINATE ;Xact is finished
Notthere TERMINATE ;Xact is finished
*********************************************************************
Simulation of an Oil Storage Depot.
An oil storage depot distributes three grades of fuel, a) home heating oil, b) light industrial fuel oil, and c) diesel fuel for road vehicles. There is one pump for each grade of fuel, and the demand for each is the same. Orders for fuel oil vary between 3000 and 5000 gallons, in increments of 10 gallons, evenly distributed. The time required to fill fuel trucks is a function of the following.
1. The pumping rate (6, 5 and 7 minutes per 1000 gallons respectively).
2. The order size.
3. The number of vehicles in the depot (30 seconds extra per vehicle).
4. Setup time, a fixed time of two minutes.
The depot can hold a maximum of twelve trucks. The mean arrival rate of trucks is 18 minutes, modified by the following function.
Truck Arrival Rates
Frequency .20 .40 .25 .15
Ratio to mean .45 .60 1.5 2.0
1. Simulate the operation of the oil storage depot for 5 days.
2. Find the distribution of transit times of trucks.
3. What is the total quantity of fuel sold each day?
Listing
; GPSS World Sample File - OILDEPOT.GPS, by Gerard F. Cummings
****************************************************************
* Oil Storage and Distribution Depot
* Time Unit Is One Minute
****************************************************************
RMULT 5631,39941
Arr FUNCTION RN2,C5 ;Arrivals frequency
0,0/0.2,.45/.6,1/.85,1.5/1.0,2
Pumprate FUNCTION P$Type,L3 ;Mins to pump 1000 gals
1,6/2,5/3,7
Gals VARIABLE (RN1@201+300)#10
Type VARIABLE RN1@3+1
Pump VARIABLE (FN$Pumprate#P$Gals)/1000+S$Depot/2+2
Depot STORAGE 12 ;Room for 12 trucks max
Transit TABLE M1,10,10,20 ;Time of truck in depot
Qty TABLE X$Gals,20000,20000,9 ;Qty of oil sold per day
****************************************************************
GENERATE 18,FN$Arr ;Truck arrivals
ASSIGN Gals,V$Gals ;P$Gals=Number of gals
ASSIGN Type,V$Type ;P$Type=Type of oil
ENTER Depot ;Truck enters depot
QUEUE P$Type ;Queue for type of oil
SEIZE P$Type ;Get a pump
DEPART P$Type ;Depart the queue
ADVANCE V$Pump ;Service time pumping
RELEASE P$Type ;Release the pump
LEAVE Depot ;Truck leaves the depot
SAVEVALUE Gals+,P$Gals ;Tally no. of gals sold
TABULATE Transit ;Table of transit times
TERMINATE ;Truck departs
****************************************************************
GENERATE 480 ;One transaction per day
TABULATE Qty ;Record no. of gals sold
SAVEVALUE Sold+,X$Gals ;Record total oil sold
SAVEVALUE Gals,0 ;Savevalue set to 0
TERMINATE 1 ;One day has passed
****************************************************************
Simulation of a pump assembly process.
A manufacturer makes centrifugal pump units which are assembled to customer orders. The orders arrive on average, every 5 hours, exponentially distributed. When the order arrives, two copies are made. The original order is used to obtain a motor from stock and prepare it for assembly (200±100 minutes). The first copy is used to order and adapt a pump (180±120 minutes), and the second copy is used to initiate the manufacture of the baseplate (80±20 minutes).
When the pump and the baseplate are ready, a test fitting is carried out (50±10 minutes). All three components are assembled, when they are available. The unit is then dismantled, and the pump and motor are painted, and the baseplate is galvanized. Final assembly then takes place (150±30 minutes).
1. Investigate the utilization of the manufacturing facilities.
2. Determine the transit times and delays, of customers’ orders.
3. What Facility will be a bottleneck, if orders increase significantly?
4. Simulate the assembly of 50 motor-pump units.
Listing
; GPSS World Sample File - ASSEMBLY.GPS, by Gerard F. Cummings
***********************************************************************
* Assembly of Motor Pump and Baseplate
***********************************************************************
Transit TABLE M1,200,200,20
***********************************************************************
GENERATE (Exponential(1,0,300)) ;New order arrives
SPLIT 2,Factory,1 ;Make 2 copies of order
***********************************************************************
* Purchase Motor Original Transaction Goes Here, P1=1
QUEUE Motor ;Queue for motor
SEIZE Motor ;Get a Facility
DEPART Motor ;Depart the queue
ADVANCE 200,100 ;Take motor from stock
RELEASE Motor ;Free the Facility
TRANSFER ,Tryout ;Send to trial assembly
***********************************************************************
Factory TEST E P1,2,Baseplate ;Is P1=2 ?
QUEUE Pumps ;Join the Queue (P1=2)
SEIZE Pumps ;Get a Facility
DEPART Pumps ;Depart the Queue
ADVANCE 180,120 ;Prepare the Pump
Pump MATCH Plate ;Wait for baseplate
ADVANCE 50,10 ;Check pump on baseplate
RELEASE Pumps ;Free the Facility
TRANSFER ,Tryout ;Send for a tryout
***********************************************************************
Baseplate QUEUE Base ;Join Queue P1 must=3
SEIZE Base ;Get a Facility
DEPART Base ;Depart the Queue
ADVANCE 80,20 ;Make the baseplate
Plate MATCH Pump ;Wait for the pump unit
ADVANCE 50,10 ;Check the pump on baseplate
RELEASE Base ;Free the Facility
***********************************************************************
Tryout GATHER 3 ;Gather 3 units to tryout
ADVANCE 60 ;Trial assembly
TEST E P1,1,Finish ;Is it the motor?(P1=1)
***********************************************************************
SEIZE Paint1 ;Get first paint Facility
ADVANCE 100,20 ;Paint the motor
RELEASE Paint1 ;Free paint Facility 1
TRANSFER ,Build ;Send for assembly
***********************************************************************
Finish TEST E P1,2,Basplate ;Is it the pump?(P1=2)
SEIZE Paint2 ;Get paint Facility 2
ADVANCE 120,30 ;Paint the Pump
RELEASE Paint2 ;Free paint Facility 2
TRANSFER ,Build ;Send for assembly
Basplate SEIZE Galvanize ;Get a Facility
ADVANCE 120,30 ;Galvanize baseplate
RELEASE Galvanize ;Free the Facility
***********************************************************************
Build ASSEMBLE 3 ;Collect 3 units
ADVANCE 150,30 ;Assemble unit
TABULATE Transit ;Record transit time
TERMINATE 1 ;One unit completed
Simulation of a robot operated FMS.
An experimental, robot operated, flexible manufacturing system has two computer numerical control machine tools, an arrival area, and a finished parts area. Components arrive every 150 seconds, exponentially distributed, and are machined on both machines in sequence. The robot takes 8±1 seconds to grip or release components, and 6 seconds to move components from the arrival area to the first machine. Processing time, on the first machine is normally distributed, with a mean of 60 seconds and a standard deviation of 10 seconds. The robot takes 7 seconds, to move from the first machine to the second machine. Machining time on the second machine is 100 seconds, exponentially distributed. Finally, the robot takes 5 seconds, to move components from the second machine, to the finished parts storage area.
Simulate the manufacturing cell operation, for 75 completed parts.
1. Find the distribution of transit times of jobs.
2. Find the utilization of the robot, and the machine tools.
3. Find the maximum storage areas required, in the cell.
Listing
; GPSS World Sample File - ROBOTFMS.GPS, by Gerard F. Cummings
* Experimental Manufacturing Cell
* Two CNC machines and one Robot
* One arrival area and one finished parts area
*******************************************************************
RMULT 78863
Transit TABLE M1,100,100,20 ;Record lead time
*******************************************************************
GENERATE (Exponential(1,0,150)) ;A job arrives
QUEUE One ;Arrival queue
SEIZE Robot ;Get the robot
DEPART One ;Depart the queue
ADVANCE 8,1 ;Robot grips the job
ADVANCE 6 ;Robot moves to machine 1
ADVANCE 8,1 ;Robot place the job
RELEASE Robot ;Free the robot
QUEUE Two ;Wait in next queue
SEIZE Machine1 ;Get first machine
DEPART Two ;Depart the queue
ADVANCE (Normal(1,60,10)) ;Process time
RELEASE Machine1 ;Free machine 1
QUEUE Three ;Join queue for machine 2
SEIZE Robot ;Get the robot
DEPART Three ;Depart the queue
ADVANCE 8,1 ;Robot grips part
ADVANCE 7 ;Robot moves to machine 2
ADVANCE 8,1 ;Robot places the part
RELEASE Robot ;Free the robot
QUEUE Four ;Join queue machine 2
SEIZE Machine2 ;Get machine 2
DEPART Four ;Depart the queue
ADVANCE (Exponential(1,0,100)) ;Process 2
RELEASE Machine2 ;Free machine 2
QUEUE Five ;Queue for exit station
SEIZE Robot ;Get the robot
DEPART Five ;Depart the queue
ADVANCE 8,1 ;Robot grips the part
ADVANCE 5 ;Robot moves to exit
ADVANCE 8,1 ;Robot places the part
RELEASE Robot ;Free the robot
TABULATE Transit ;Transit time
TERMINATE 1 ;Job is completed
*******************************************************************
Simulation of a bicycle factory.
A factory assembles bicycles, employing the following staff, 2 clerks, 3 framers, 1 saddler, 1 handler, 1 wheeler, 1 pedaler, 4 assemblers, and 3 packers. The company commences to assemble a bicycle, every 50±10 minutes. The clerical department prepares the delivery documents, instructions, tool kit and invoice.
Each department withdraws the component required for a particular order from stock, inspects (3±1 minutes) and prepares it for assembly. The frame is manufactured and takes 65 minutes, exponentially distributed. When the components are available, they are assembled. This takes on average 90 minutes, with a standard deviation of 10 minutes. When the delivery documents, tool kit, and the assembled bicycle, are ready, they are packed (40±5 minutes), in preparation for delivery.
1. Find the utilization of the staff in each department.
2. Determine the transit times of customers’ orders.
3. Should the number of staff be changed in any department?
4. Simulate the bicycle factory assembly operation, for 5 days.
Listing
* Bicycle Assembly Model
*********************************************************************
Orders FUNCTION P$Department,L6
1,Order/2,Frame/3,Saddle/4,Handlebars/5,Wheels/6,Pedals
*********************************************************************
Transit TABLE M1,100,100,20
*********************************************************************
Clerks STORAGE 2
Framers STORAGE 3
Saddlers STORAGE 1
Handlers STORAGE 1
Wheelers STORAGE 1
Pedalers STORAGE 1
Builders STORAGE 4
Packers STORAGE 3
*********************************************************************
GENERATE 50,10 ;Order arrives for bicycle
SPLIT 5,Factory,Department ;Make 5 copies of order
Order ENTER Clerks
ADVANCE 80,10 ;Prepare invoice
LEAVE Clerks
Invoice MATCH Bicycle ;Synchronize with bicycle
TERMINATE ;Transaction finished
*********************************************************************
Factory TRANSFER FN,Orders ;Route to correct dept.
*********************************************************************
Frame ENTER Framers
ADVANCE (Exponential(1,0,65)) ;Make frame
ADVANCE 12,2 ;Inspect frame
LEAVE Framers
TRANSFER ,Build ;Send for assembly
*********************************************************************
Saddle ENTER Saddlers
ADVANCE 6,3 ;Get a saddle
ADVANCE 3,1 ;Inspect the saddle
LEAVE Saddlers
TRANSFER ,Build ;Send for assembly
*********************************************************************
Handlebars ENTER Handlers
ADVANCE 4,2 ;Get handlebars
ADVANCE 3,1 ;Inspect handlebars
LEAVE Handlers
TRANSFER ,Build ;Send for assembly
*********************************************************************
Wheels ENTER Wheelers
ADVANCE 3,1 ;Get wheels
ADVANCE 3,1 ;Inspect wheels
LEAVE Wheelers
TRANSFER ,Build ;Send for assembly
*********************************************************************
Pedals ENTER Pedalers
ADVANCE 5,1 ;Get pedals
ADVANCE 3,1 ;Inspect pedals
LEAVE Pedalers
TRANSFER ,Build ;Send for assembly
*********************************************************************
Build ASSEMBLE 5 ;Assemble
ENTER Builders
ADVANCE (Normal(1,90,10)) ;Time for assembling
ADVANCE 35,5 ;Inspect
LEAVE Builders
Bicycle MATCH Invoice ;Wait for paperwork
ENTER Packers
ADVANCE 40,5 ;Pack for dispatch
LEAVE Packers
TABULATE Transit
TERMINATE ;Transaction finished
*********************************************************************
GENERATE 480 ;Timer every day
TERMINATE 1 ;Timer xact finished
*********************************************************************
Simulation of a warehouse and branch inventories.
A manufacturing company makes waste disposal units, which it sells for $200 each. Total annual demand is for 20,000 units. Distribution is through three branches, from a factory warehouse. The lead-time for delivery of an order, from the manufacturing plant to the factory warehouse, is 4 weeks. The lead-time for delivery of an order, from the factory warehouse to the branches is 1 week.
The proposed inventory control method is by an economic order quantity and order point system. The initial stocks, order points, economic order quantities, weekly demand and standard deviation, are shown in the table below, for the factory warehouse and each of the branches.
Inventory Control Parameters
Location Initial Order Economic Weekly Weekly
Stock Point Quantity Demand Std Dev
Warehouse 3400 2100 2300
Branch 1 430 240 115 64 24
Branch 2 600 430 165 128 32
Branch 3 1000 630 200 192 48
Simulate the inventory control system for 75 weeks.
1. Determine the distribution of inventories at the three branches and the factory warehouse.
2. Tabulate the distribution of actual monthly sales.
3. Calculate the average value of the inventories at the branches, and at the factory warehouse.
4. Does the system meet the company’s service policy of one stockout, in eight years?
Listing
; GPSS World Sample File - STOCKCTL.GPS, by Gerard F. Cummings
****************************************************************
* Factory Warehouse and Distributors Inventory
* Time unit is one week
****************************************************************
INITIAL X1,3400 ;Fact warehouse inventory
INITIAL X2,2100 ;Fact warehouse order pnt
INITIAL X3,2300 ;Fact warehouse order qty
INITIAL X$Stock1,430 ;Dist 1 stock initial
INITIAL X$Stock2,600 ;Dist 2 stock initial
INITIAL X$Stock3,1000 ;Dist 3 stock initial
INITIAL X$EOQ1,115 ;Economic order qty 1
INITIAL X$EOQ2,165 ;Economic order qty 2
INITIAL X$EOQ3,200 ;Economic order qty 3
INITIAL X$Point1,240 ;Order point 1
INITIAL X$Point2,430 ;Order point 2
INITIAL X$Point3,630 ;Order point 3
Demand1 VARIABLE (Normal(2,64,24))
Demand2 VARIABLE (Normal(3,128,32))
Demand3 VARIABLE (Normal(4,192,48))
Total VARIABLE P1+P2+P3
Sales TABLE X5,200,200,20
Region_1 TABLE X$Stock1,0,40,20
Region_2 TABLE X$Stock2,0,40,20
Region_3 TABLE X$Stock3,0,40,20
Factory TABLE X1,0,200,20
****************************************************************
* Reordering by Factory Warehouse
GENERATE ,,,1,2 ;Order point xact
Backhere TEST LE X1,X2 ;Factory order point?
ADVANCE 4 ;Lead time is 4 weeks
SAVEVALUE 1+,X3 ;Inv increase by order qty
TRANSFER ,Backhere ;Cycle xact around
****************************************************************
* Reordering at Each of the Distributors
GENERATE 1,,,1 ;First distributor
Distr1 TEST L X$Stock1,X$Point1 ;Order point reached?
ADVANCE 1 ;Lead time = 1 week
SAVEVALUE 1-,X$EOQ1 ;Warehouse supplies
SAVEVALUE Stock1+,X$EOQ1 ;Distr invent increased
TRANSFER ,Distr1 ;Xact finished
GENERATE 1,,,1 ;Second distributor
Distr2 TEST L X$Stock2,X$Point2 ;Order point reached
ADVANCE 1 ;Lead time = 1 week
SAVEVALUE 1-,X$EOQ2 ;Warehouse supplies
SAVEVALUE Stock2+,X$EOQ2 ;Inventory increased
TRANSFER ,Distr2 ;Cycle xact around
GENERATE 1,,,1 ;Third distributor
Distr3 TEST L X$Stock3,X$Point3 ;Order point reached?
ADVANCE 1 ;Lead time = 1 week
SAVEVALUE 1-,X$EOQ3 ;Warehouse supplies EOQ
SAVEVALUE Stock3+,X$EOQ3 ;Distr invent increased
TRANSFER ,Distr3 ;Cycle xact around
****************************************************************
* Weekly Demand at Each Distributor
GENERATE 1,,,,3 ;Priority weekly demand
ASSIGN 1,V$Demand1 ;P1 = Demand distr one
ASSIGN 2,V$Demand2 ;P2 = Demand distr two
ASSIGN 3,V$Demand3 ;P3 = Demand distr three
SAVEVALUE Stock1-,P1 ;Distr 1 Weekly demand
SAVEVALUE Stock2-,P2 ;Distr 2 Weekly demand
SAVEVALUE Stock3-,P3 ;Distr 3 Weekly demand
SAVEVALUE 5+,V$Total ;Accumulate total demand
TABULATE Region_1 ;Record invent distr 1
TABULATE Region_2 ;Record invent distr 2
TABULATE Region_3 ;Record invent distr 3
TABULATE Factory ;Factory warehouse invent
TERMINATE 1
****************************************************************
* Monthly Recording of Sales
GENERATE 4,,,,1 ;Low priority xact monthly
TABULATE Sales
SAVEVALUE 5,0 ;Reset sales=0 each month
TERMINATE ;Xact finished
****************************************************************
Lock and Canal Simulation.
A single lock and narrow canal system joins two navigable waterways. The barge traffic is heavy between the two waterways, and the canal system can take only one barge at a time. The first barge in a particular direction takes 58 minutes, and subsequent barges in the same direction take 46 minutes.
The lock operator has a policy of one-up barge followed by one-down barge.
It has been suggested that a policy of up to six up, followed by up to six down might be more efficient.
Simulate the operation of the lock and canal with the new policy.
Listing
; GPSS World Sample File - LOCKSIMN.GPS, by Gerard F. Cummings
**********************************************************************
* Lock Simulation *
* Time in Hours *
**********************************************************************
* X$Uplimit = Number of barges to go up
* X$Downlimit = Number of barges to go down
* X$Upcount = Number of barges which have passed up
* X$Downcount = Number of barges which have passed down
*
RMULT 94521
Upbarge FUNCTION X$Upcount,D6
1,.967/2,.767/3,.767/4,.767/5,.767/6,.767
Downbarge FUNCTION X$Downcount,D6
1,.967/2,.767/3,.767/4,.767/5,.767/6,.767
Upq QTABLE Upq,.25,.25,20
Downq QTABLE Dnq,.25,.25,20
Upcount TABLE X$Upcount,2,2,20
Dncount TABLE X$Downcount,2,2,20
INITIAL X$Uplimit,6 ;No. of barges to go up
INITIAL X$Downlimit,6 ;No. of barges to go down
**********************************************************************
GENERATE 1.67,.5,.67 ;Up barge arrives
QUEUE Upq ;Join queue
GATE LR Lock ;Gate for the lock
SEIZE Lock ;Get the lock
SAVEVALUE Upcount+,1 ;Accumulate up number
DEPART Upq ;Depart the queue
ADVANCE FN$Upbarge ;Time to service barge
TEST GE X$Uplimit,X$Upcount,Swh1 ;Have enough passed?
TEST NE Q$Upq,0,Swh1 ;Check if Upq is zero
RELEASE Lock ;Free the lock
TERMINATE
**********************************************************************
Swh1 LOGIC S Lock ;Set lock the other way
RELEASE Lock ;Free the lock
TABULATE Upcount ;Record no. passed up
SAVEVALUE Upcount,0 ;Set count to zero
TERMINATE
**********************************************************************
GENERATE 1.67,.5,1 ;Arrival of down barge
QUEUE Dnq ;Enter queue
GATE LS Lock ;Is lock set?
SEIZE Lock ;Get the lock
SAVEVALUE Downcount+,1 ;Accumulate down count
DEPART Dnq ;Depart the queue
ADVANCE FN$Downbarge ;Time for down barge
TEST GE X$Downlimit,X$Downcount,Swh2 ;Down count reached?
TEST NE Q$Dnq,0,Swh2 ;Any down barges left?
RELEASE Lock ;Free the lock
TERMINATE
**********************************************************************
Swh2 LOGIC R Lock ;Set lock for other way
RELEASE Lock ;Free the lock
TABULATE Dncount ;Record down count
Foundry Simulation
A foundry employs 18 molders to process incoming orders which arrive on average every hour, exponentially distributed. The foundry runs on an eight hour day, five day week schedule. Thirty percent of incoming orders are new and seventy percent are repeat orders. New orders require a pattern, which is made in the pattern shop taking 72±24 hours, uniformly distributed. Patterns for repeat orders must be located and cleaned and take 5±3 hours.
Orders vary in size from 6 to 24 components, uniformly distributed. The weight of the individual components varies according to the following table.
Weight Distribution
Frequency .05 .08 .12 .25 .20 .15 .10 .05
Weight of Part 3 6 11 20 28 35 42 50
Molding time is 2 minutes per kilogram weight of component. The due date for orders is determined by the total molding time plus a variable flowtime which typically ranges from 40 to 160 hours, uniformly distributed.
The foreman waits until the pattern is available for an order. Then he releases one job at a time according to due-date. One individual molder completes the entire order.
Casting takes place once a day, one hour before finishing time. When casting commences all molders cease molding and assist in the casting process.
1. Write a GPSS World model to simulate the operation of the foundry.
2. Run the simulation for 10 days.
3. Find the distribution of transit times of all jobs.
4. Tabulate the total weight cast each day.
Listing
; GPSS World Sample File - FOUNDRY.GPS, by Gerard F. Cummings
***********************************************************************
*
* Foundry Simulation Model
* Time Unit Is One Minute
*
***********************************************************************
* P1 = Type of Job
* P2 = Number in the Order
* P3 = Weight of a Component
* P4 = Molding Time per Component
* P5 = Due Date
* P6 = Total Weight per Order
* P7 = Index for Looping
Weight FUNCTION RN1,C8 ;Weight per component in Kgs
0.0,3/.13,6/.25,11/.50,20/.70,28/.85,35/.95,42/1.0,50
Ordertype FUNCTION RN1,D2 ;New order P1=1: Repeat P1=2
0.3,1/1.0,2
Size VARIABLE RN1@19+6 ;Size of order
Ddate VARIABLE V$Mtime#P2+RN1@121+40+C1 ;Due date
Mtime VARIABLE (P3#2) ;Mold time per component
Day VARIABLE (C1/480) ;Day indicator
Total VARIABLE P3#P2 ;Weight per order
Times TABLE M1,400,400,20 ;Transit time
Cast TABLE X$Wtmold,400,400,20 ;Weight cast
Molders STORAGE 18 ;Molders employed
***********************************************************************
GENERATE (Exponential(1,0,60)) ;Jobs arrive every hour
ASSIGN 1,FN$Ordertype ;Type of job
TEST E P1,2,Newjob ;Is it a repeat order?
ADVANCE 300,180 ;Locate pattern
Commence ASSIGN 2,V$Size ;Size of order
ASSIGN 3,FN$Weight ;Weight of component
ASSIGN 4,V$Mtime ;Molding time per component
ASSIGN 5,V$Ddate ;Due date
ASSIGN 6,V$Total ;Total weight of order
GATE SNF Molders,Wait ;Any molders free?
Beg ENTER Molders ;Molder begins order
ASSIGN 7,P2 ;P7=Number in order
Next ADVANCE P4 ;Molding time per component
LOOP 7,Next ;Loop for every component
LEAVE Molders ;Free molder, order complete
SAVEVALUE Wtmold+,P6 ;Sum weight molded each order
UNLINK 1,Beg,1 ;Release next order
TABULATE Times ;Tabulate transit time
TERMINATE ;Destroy xact
*
Newjob ADVANCE 4320,1440 ;Time to make new pattern
TRANSFER ,Commence ;Transfer to commence order
*
Wait LINK 1,P5 ;Link waiting orders in chain 1
*
***********************************************************************
GENERATE 420,,,1,2 ;Start casting operation cycle
Again SUNAVAIL Molders ;Marks start of casting cycle
ADVANCE 60 ;Casting cycle lasts 60 mins
SAVAIL Molders ;Molders free for molding
ADVANCE 420 ;420 mins elapse before casting
TABULATE Cast ;Record total weight cast
SAVEVALUE Totcast+,X$Wtmold ;Accumulate total cast so far
SAVEVALUE Wtmold,0 ;Reset to zero each day
TRANSFER ,Again ;Return xact to start again
**************Timer****************************************************
GENERATE 4800,,,,4 ;Xact every ten days
SAVEVALUE V$Day,X$Totcast ;Records total weight cast
TERMINATE 1 ;Destroy xact
*********************************************************************
Simulation of NC tape preparation.
A computer services company prepares computer numerical control part program tapes for metal-cutting manufacturing industries. Drawings of components are supplied by the manufacturers. A part programmer studies the drawings, and writes a part program manuscript to control the machine tool in cutting the workpiece. The programming takes 90 minutes, exponentially distributed. The manuscript is then typed onto a computer file, processed, and a tape is punched for the computer numerical control machine tool. This process takes 60 minutes on average, exponentially distributed. The tape is then loaded onto an appropriate machine tool for testing and editing. This process takes 70 minutes, exponentially distributed.
The computer services company’s policy is to provide a fast, reliable service to industry. The company wishes to test several queuing disciplines for the processing of orders for the best overall service to customers.
Three possible disciplines of processing waiting jobs have been proposed.
1. First, process those jobs which have the shortest overall processing time.
2. First, process those jobs which have the longest overall processing time.
3. First, process the jobs which have the shortest due-date i.e. those jobs which are required soonest.
The flowtime for jobs is the total processing times (P4=P1+P2+P3), plus 3±1 days. The due-date is the relative clock time when the job arrives plus the allowed flow-time. Lateness is defined as the relative clock time when the job is completed, minus the due-date.
Simulate the processing of 100 orders by the computer services company.
1. Investigate the shortest processing time queue discipline.
2. Find the utilization of the facilities of manuscript writing, tape preparation, and editing.
3. Tabulate the lateness of orders and their transit times.
Listing
* Computer Numerical Control *
* Tape Programming, Loading and Editing *
*********************************************************************
* Queue Discipline — Shortest Processing Time (SPT)
*********************************************************************
* P1 = Process Time for Programming
* P2 = " " " Punching
* P3 = " " " Editing
* P4 = Shortest Processing Time
* P5 = Due Date
* P6 = Longest Processing Time
*********************************************************************
RMULT 66753
Schedparm EQU 4 ;Start with short time
; process first
Var1 VARIABLE P1+P2+P3
Var2 VARIABLE P4+AC1+RN1@160+80
Var3 VARIABLE 10000-P4
Lateness VARIABLE AC1-P5
Transit TABLE M1,100,100,20 ;Tabulate flow times
Late TABLE V$Lateness,-1000,200,20 ;Lateness
*********************************************************************
GENERATE (Exponential(2,0,120)) ;Create new arrivals
ASSIGN 1,(Exponential(3,0,90) ;Programming time
ASSIGN 2,(Exponential(4,0,60)) ;Tape punching time
ASSIGN 3,(Exponential(5,0,70)) ;Tape load and edit time
ASSIGN 4,V$Var1 ;Total processing time
ASSIGN 5,V$Var2 ;Due date time in P5
ASSIGN 6,V$Var3 ;Longest processing time
LINK Program,P$Schedparm,Wrte ;Overall Shortest
Wrte SEIZE Manuscript
ADVANCE P1 ;Part program time
RELEASE Manuscript
UNLINK Program,Wrte,1 ;Unlink one xact
LINK Tape,P$Schedparm,Punch ;Link into chain
Punch SEIZE Tapepunch
ADVANCE P2 ;Punching time
RELEASE Tapepunch
UNLINK Tape,Punch,1 ;Unlink one xact
LINK Edit,P$Schedparm,Loadedit ;Link into chain
Loadedit SEIZE Edit
ADVANCE P3 ;Load and edit time
RELEASE Edit
UNLINK Edit,Loadedit,1 ;Unlink one xact
**********************************************************************
TABULATE Late
TABULATE Transit
TERMINATE 1 ;Job leaves the shop
**********************************************************************
Simulation of traffic at a T-junction.
Cars arrive at a T-junction every 6.28 seconds hyperexponentially distributed (standard deviation = 8.40 seconds). The cars then make a left turn northbound onto a highway. When cars cross the southbound lanes, they must wait in a center aisle which can accommodate a maximum of 8 cars. Each car takes 3.6 seconds (Erlang k=4 ) to cross the traffic lanes. It takes 4 seconds (Erlang k=5 ) to merge with northbound traffic. Southbound traffic arrives every 55±5 seconds and takes 15±5 seconds to pass the T-junction. Northbound traffic arrives every 60±5 seconds and takes 15±5 seconds to pass.
Simulate the traffic at the T-junction for 10 minutes.
1. Determine the transit time of northbound cars turning at the T-junction.
2. Tabulate the actual Erlang service times.
3. Find the maximum number of cars queuing in the lane, waiting to make a left turn.
Listing
; GPSS World Sample File - TRAFFIC.GPS, by Gerard F. Cummings
***********************************************************************
* *
* Traffic at a T-Junction *
***********************************************************************
* Erlang Service Times ...Hyperexponential Arrivals *
* Time Unit is 1/100 Second *
***********************************************************************
* A Hyperexponential Probability Distribution Follows
Hyper FVARIABLE (410+((RN2’L’234)#(1343-410)))#(Exponential(2,0,1))
* f(t) = .234(1/4.10) exp(-t/4.1) + .766(1/13.43) exp(-t/13.43)
***********************************************************************
Aisle STORAGE 8
Mergetime TABLE MP2,100,100,20
Crosstime TABLE MP1,100,100,20
Transit TABLE M1,1000,1000,9
Arrivals TABLE V$Hyper,200,200,20
***********************************************************************
GENERATE V$Hyper,,300 ;Hyperexponential
QUEUE First
GATE SNF Aisle ;Is there room in the aisle?
SEIZE Southlane ;Crosses highway
DEPART First
MARK 1
*———Erlang Distribution——————————————————————
ADVANCE (Gamma(3,0,4,90)) ;Erlang K=4 waiting time
* ;Mean = 360 time units
*———————————————————————————————————
TABULATE Crosstime ;Record crossing time
ENTER Aisle ;Stand in center aisle
RELEASE Southlane
QUEUE Two ;Queue for northlane
SEIZE Northlane
DEPART Two
LEAVE Aisle
MARK 2
* ————Erlang Distribution————————————————————
ADVANCE (Gamma(4,0,5,80)) ;Erlang K=5 waiting time
* ;Mean = 400 time units
* ——————————————————————————————————
RELEASE Northlane
TABULATE Mergetime ;Merge time to north flow
TABULATE Transit
TABULATE Arrivals
TERMINATE
***********************************************************************
GENERATE 5000,500,,,10 ;Southbound traffic
SEIZE Southlane
ADVANCE 1200,300 ;Time to pass junction
RELEASE Southlane
TERMINATE
***********************************************************************
GENERATE 6000,500,,,10 ;Northbound traffic
SEIZE Northlane
ADVANCE 1200,300 ;Time to pass junction
RELEASE Northlane
TERMINATE
***********************************************************************
GENERATE 6000 ;Xact every minute
TERMINATE 1
*********************************************************************
Simulation of customer brand loyalty.
A survey was carried out to assess the brand loyalty of customers to 7 brands of soap powder. The probability of change from one type of powder to another, is given in the table below. It is assumed that the customer will purchase either the same brand of powder again (most likely), or change to some other powder (less likely). Therefore the sum of the probabilities in each row of the matrix is equal to 1. The probability of the market share distribution depends on the number of transitions which have taken place (i.e. the number of successive purchases) and the initial market share of each product.
The purpose of the model is to estimate the market share each powder will achieve, in the long term, assuming that the transition probability matrix will remain the same, and assuming that initially all powders have an equal share of the market.
This process of system changes occurring in sequence is called a Markov Chain.
Probability of Customer Changing From Row to Column
SUDS BUBBLES CLEANPLUS SOAPY
BRANDX CLEARSHINE MARVEL TOTAL
SUDS .39 .12 .17 .13 .10 .04 .05 1.0
BRANDX .13 .32 .10 .15 .12 .09 .09 1.0
BUBBLES .15 .14 .25 .14 .17 .08 .07 1.0
CLEARSHINE .11 .10 .09 .40 .08 .09 .13 1.0
CLEANPLUS .05 .12 .16 .09 .37 .14 .07 1.0
MARVEL .16 .13 .08 .05 .16 .28 .14 1.0
SOAPY .08 .10 .09 .10 .07 .13 .43 1.0
Since the table of transition probabilities has no zeroes, we know that all states are in a single chain, and are aperiodic. This assures the convergence of state probabilities in the theoretical Markov Chain, and assures that the simulation will not be trapped in a proper subset of states.
1) Run the model for 500 Transactions.
2) Determine the market share achieved by each product.
Listing
***********************************************************************
RMULT 98851
Check TABLE X$Brand,1,1,8
*
Transitions MATRIX ,7,7 ;State transition table
*
Powder FUNCTION X$Brand,M7 ;Pick brand transition
1,FN$Suds/2,FN$BrandX/3,FN$Bubbles/4,FN$Clearshine
5,FN$Cleanplus/6,FN$Marvel/7,FN$Soapy
*
*
Suds FUNCTION RN1,D7 ;Transition from Suds
0.390,1/.510,2/.680,3/.810,4/.910,5/.950,6/1.0,7
*
BrandX FUNCTION RN1,D7 ;Transition from BrandX
0.130,1/.450,2/.550,3/.700,4/.820,5/.910,6/1.0,7
*
Bubbles FUNCTION RN1,D7 ;Transition from Bubbles
0.150,1/.290,2/.540,3/.680,4/.850,5/.930,6/1.0,7
*
Clearshine FUNCTION RN1,D7 ;Trans from Clearshine
0.110,1/.210,2/.300,3/.700,4/.780,5/.870,6/1.0,7
*
Cleanplus FUNCTION RN1,D7 ;Transition from Cleanplus
0.050,1/.170,2/.330,3/.420,4/.790,5/.930,6/1.0,7
*
Marvel FUNCTION RN1,D7 ;Transition from Marvel
0.160,1/.290,2/.370,3/.420,4/.580,5/.860,6/1.0,7
*
Soapy FUNCTION RN1,D7 ;Transition from Soapy
0.080,1/.180,2/.270,3/.370,4/.440,5/.570,6/1.0,7
*
Record FUNCTION X$Brand,L7 ;Records numbers
1,Suds/2,BrandX/3,Bubbles/4,Clearshine/5,Cleanplus/6,Marvel/7,Soapy
***********************************************************************
INITIAL X$Brand,1
GENERATE 1,,,,2 ;One xact every minute
TABULATE Check
SAVEVALUE Oldbrand,X$Brand ;Save old brand
SAVEVALUE Brand,FN$Powder ;Find new brand
SAVEVALUE FN$Record+,1 ;Savevalue of chosen brand
; up by one
MSAVEVALUE Transitions+,X$Oldbrand,X$Brand,1 ;Update
TERMINATE 1
Simulation of a solvable queuing network.
When feasible, an analytical solution to queuing systems provides a useful means of estimating the performance of simple systems.This program simulates a system for which the queuing parameters are calculated using the appropriate Pollaczek and Khintchin (P-K) equations. The objective is to verify the results obtained by simulation using GPSS World.The program simulates an interarrival time of 5 seconds( 500 time units), exponentially distributed, and a single service channel. The mean service time is 3 seconds( 300 time units). The average utilization of the server is consequently 60%.
Three modes of service times are investigated.
1. Constant service time.
2. Exponentially distributed service time.
3. Erlang (k=2) service time.
1. Run the simulation for 500 minutes.
2. Determine the queue statistics for each type of service.
3. Compare the simulation results with the predictions of queuing theory.
Listing
* Queuing Theory Verification *
* Time Unit Is 1/100 Of a Second *
**********************************************************************
Transit TABLE M1,250,250,20
Number TABLE Q$Expon,0,1,20
Qconstant QTABLE Constant,200,200,20
Qexpon QTABLE Expon,200,200,20
Qerlang QTABLE Erlang,200,200,20
**********************************************************************
GENERATE (Exponential(1,0,500)) ;Interarrival 5 seconds
QUEUE Constant
SEIZE Facility1
ADVANCE 300 ;Service constant 3 secs
RELEASE Facility1
DEPART Constant
TERMINATE
**********************************************************************
GENERATE (Exponential(1,0,500)) ;Interarrival 5 seconds
QUEUE Expon
SEIZE Facility2
ADVANCE (Exponential(1,0,300)) ;Service time 3 secs Expon
RELEASE Facility2
DEPART Expon
TABULATE Transit
TERMINATE
***********************************************************************
GENERATE (Exponential(1,0,500)) ;Interarrival time 5 secs
QUEUE Erlang
SEIZE Facility3
ADVANCE (Exponential(1,0,150)) ;Erlang K=2 Service 3 secs
ADVANCE (Exponential(1,0,150))
RELEASE Facility3
DEPART Erlang
TERMINATE
***********************************************************************
GENERATE (Exponential(1,0,6000)) ;Random sample,
; Ave. 1 per minute
TABULATE Number
TERMINATE 1
*********************************************************************
Simulation of a supermarket.
Customers arrive by car to shop at a supermarket. The parking lot has space for 650 parked cars. If a customer fails to find a parking space, that customer leaves immediately without shopping. On average a customer can walk to the supermarket from the parking lot in 60 seconds. Shoppers purchase between 5 and 100 items, uniformly distributed. A customer buying 10 items or less, will generally use a basket (70 provided). A customer buying more than 10 items will generally use a cart (650 provided).
Shopping time per customer depends on the number of items purchased (10 seconds per item). Customers select items and then join the shortest queue at one of 17 checkouts. Customers purchasing less than 10 items may choose the express checkout. Checkout time takes 2 seconds per item purchased, plus a time of 25, 30, or 35 seconds. This time depends on the method of payment (cash, check or credit card which are assumed equally likely or probable). After checking out a customer walks to the car (60 seconds), loads goods and leaves the parking lot.
The arrival rate of customers is exponentially distributed, starting at 600 per hour for half an hour, 900 per hour for one hour, 450 per hour for one hour and 300 per hour thereafter.
1. Run the simulation for 3 hours.
2. Determine the transit time of customers.
3. Determine the utilization of the parking lot, carts, baskets and checkouts.
4. Tabulate the number of customers in the supermarket at one minute intervals.
Listing
* Supermarket Simulation Model *
* Time Unit = 1/10 Of a Second *
***********************************************************************
RMULT 1187
First EQU 2
Last EQU 18
Qty VARIABLE (RN1@96+5)
Finance VARIABLE (RN1@3+1)#50+200
Transit TABLE M1,10000,10000,7 ;Time in system
Items TABLE P$Quantity,10,10,10 ;No. of items bought
Shoppers TABLE X$Customers,100,50,12 ;No. of shoppers
Baskt STORAGE 70
Cart STORAGE 650
Park STORAGE 650
Checkout VARIABLE (P$Quantity)#20+P$Payment
Tshop VARIABLE P$Quantity#100
INITIAL X$Customers,0
***********************************************************************
Beg TRANSFER Both,,Los ;Tries to park or leaves
ENTER Park ;Park in parking lot
ADVANCE 600 ;Time to walk from car
SAVEVALUE Customers+,1 ;One more customer
ASSIGN Quantity,V$Qty ;Param quantity = No. items bought
ASSIGN Payment,V$Finance ;Param payment = Method
TEST LE P$Quantity,10,Qcart ;Items >10 Get cart
GATE SNF Baskt,Qcart ;Check basket available
QUEUE Basket ;Queue for a basket
ENTER Baskt ;Get a basket
DEPART Basket ;Leave queue
ASSIGN Carrier,Baskt ;Param carrier assigned baskt
TRANSFER ,Shop ;OK to shop
***********************************************************************
Qcart QUEUE Carts ;Queue for a cart
ENTER Cart ;Get a cart
DEPART Carts ;Depart carts queue
ASSIGN Carrier,Cart ;Param carrier assigned cart
Shop ADVANCE V$Tshop ;Shopping time elapses
TEST LE P$Quantity,10,Norm ;Items < 10 go to express
COUNT L Where,First,Last,1,Q ;Any empty checkouts?
TEST E P$Where,0,Norm ;Some empty checkouts?
QUEUE Xpress ;Queue at express
SEIZE Xpres ;Get express checkout
DEPART Xpress ;Depart express queue
ADVANCE V$Checkout ;Checkout time
RELEASE Xpres ;Free express checkout
LEAVE P$Carrier ;Leave the basket
TRANSFER ,Fin
***********************************************************************
Norm SELECT MIN Minque,First,Last,,Q ;Find minimum queue
QUEUE P$Minque ;Join the min queue
SEIZE P$Minque ;Get the checkout
DEPART P$Minque ;Depart the queue
ADVANCE V$Checkout ;Checkout time
RELEASE P$Minque ;Free the checkout
LEAVE P$Carrier ;Leave the cart
Fin TABULATE Transit ;Record transit time
TABULATE Items ;Record items bought
SAVEVALUE Customers-,1 ;One customer leaves
ADVANCE 600 ;Walk to the car
LEAVE Park ;Leave the car park
TERMINATE
Lost TERMINATE ;One customer lost
***********************************************************************
* Arrivals for 0 - 30 min.
GENERATE (Exponential(1,0,60)),,,300 ;A Customer arrives
TRANSFER ,Beg * Arrivals for 30 - 90 min.
GENERATE (Exponential(1,0,40)),,18000,900 ;Arrival rate after .5 hours
TRANSFER ,Beg * Arrivals for 90 - 150 min.
GENERATE (Exponential(1,0,80)),,54000,450 ;Arrival rate after 1.5 hrs
TRANSFER ,Beg * Arrivals for 150 min +
GENERATE (Exponential(1,0,120)),,90000 ;Arrival after2.5 hours
TRANSFER ,Beg
***********************************************************************
GENERATE 600 ;Xact each minute
TABULATE Shoppers ;Record number of customers
TERMINATE 1
*********************************************************************
Simulation of a port.
A harbor port has three berths 1, 2 and 3. At any given time Berth1 can accommodate two small ships, or one medium ship. Berth2 and Berth3 can each handle one large ship, two medium ships or four small ships.The interarrival time of ships is 26 hours, exponentially distributed, and small, medium, and large ships are in the proportions 5:3:2 respectively. Queuing for berths is on a first come first served basis, except that no medium or small ship may go to a berth for which a large ship is waiting, and medium ships have a higher priority than small ships.Unloading times for ships are exponentially distributed with mean times as follows: small ships, 15 hours; medium ships, 30 hours; and large ships, 45 hours. The loading times are as follows:
· Small ships 24±6 hours uniformly distributed.
· Medium ships 36±10 hours uniformly distributed.
· Large ships 56±12 hours uniformly distributed.
The tide must be high for large ships to enter or leave Berths 2 and 3. Low tide lasts 3 hours, high tide, 10 hours.
1. Run the simulation for 500 days.
2. Determine the distribution of transit times of each type of ship.
3. Determine the utilization of the three berths.
Listing
* Ship and Port Simulation *
* Time in in Hours *
**********************************************************************
Berth1 EQU 1
Berth2 EQU 2
Berth3 EQU 3
Tide EQU 1
Tsmall EQU 1
Tmedium EQU 2
Tlarge EQU 3
*
*———Boolean Variables———————————————————————
Var1 BVARIABLE (R$Berth2’GE’1+R$Berth3’GE’1)#Q3’E’0
Var2 BVARIABLE R$Berth2’GE’1
Var3 BVARIABLE R$Berth3’GE’1
Var4 BVARIABLE SE$Berth1
Var5 BVARIABLE (R$Berth2’GE’2+R$Berth3’GE’2)#Q3’E’0
Var6 BVARIABLE R$Berth2’GE’2
Var7 BVARIABLE R$Berth3’GE’2
Var8 BVARIABLE SE$Berth3#LS1
Var9 BVARIABLE SE$Berth2#LS1
*
*—Size of Berths in relation to small ships—————————————
Berth1 STORAGE 2
Berth2 STORAGE 4
Berth3 STORAGE 4
*
*————Table Definations——————————————————————
Tsmall TABLE M1,30,10,20 ;Small ship transit time
Tmedium TABLE M1,30,10,20 ;Medium ship transit time
Tlarge TABLE M1,30,10,20 ;Large ship transit time
**********************************************************************
*————Day Timer——————————————————————————
GENERATE 24 ;One xact each day
TERMINATE 1 ;Clock operates once/day
**********************************************************************
*————Tide Control————————————————————————
GENERATE ,,0,1
Again LOGIC R Tide ;Cycling xact models the tide
ADVANCE 3 ;Tide is low for 3 hours
LOGIC S Tide ;Tide comes in
ADVANCE 10 ;Tide is high for 10 hrs
TRANSFER ,Again ;Branch back to ‘Again’
**********************************************************************
GENERATE (Exponential(1,0,26)) ;A ship every 26 hrs.
TRANSFER 500,,Inter ;50 % are small
*———Characteristics of small ships are assigned to parameters——
ASSIGN Size,1 ;Type ship small, size=1
ASSIGN Capacity,1 ;Capacity P2=1 Small ship
ASSIGN Quenum,1 ;Queue #1 for small ships
ASSIGN M_Unload,15 ;Mean unload time
ASSIGN M_Load,24 ;Mean load time
ASSIGN Loadsp,6 ;Load time spread
QUEUE P$Quenum ;Join queue-small ships
TRANSFER Both,Pier1,Pier2
*———Assign Berth 1 When Available————————————————
Pier1 GATE SNF Berth1
ASSIGN Berth_Num,1 ;Berth obtained=Berth1
*———Move into Berth and Unload and Load—————————————
Small ENTER P$Berth_num,P$Capacity ;Enter berth using up ; ship capacity
DEPART P$Quenum ;Depart queue
ADVANCE P$M_Unload,(Exponential(1,0,1)) ;Unload time
ADVANCE P$M_Load,P$Loadsp ;Loading time
TEST E P$Size,3,Skipit ;A large ship?
*———When Switch is Set, Tide is High———————————————
GATE LS Tide ;Wait for tide
Skipit LEAVE P$Berth_Num,P$Capacity ;Leave berth by
; ship capacity
TABULATE P$Quenum ;Tabulate transit time
; by ship type
TERMINATE ;Ship sails
**********************************************************************
*———Assign Berth 2 or Berth 3 when available(dependent——————
* on the ship configuration
Pier2 TEST E BV$Var1,1 ;Small ship tries 2 or 3
TRANSFER Both,Bert2,Bert3 ;Try berth2 or berth3
Bert2 TEST E BV$VAR2,1 ;Berth2 available?
ASSIGN Berth_Num,2 ;Assigned to berth2
TRANSFER ,Small
Bert3 TEST E BV$Var3,1 ;Berth3 available?
ASSIGN Berth_Num,3 ;Assigned to berth3
TRANSFER ,Small
*
*———Characteristics of medium ships are assigned to parameters——
Inter TRANSFER 400,,Large ;20% of all ships
; are large
PRIORITY 2 ;All medium ships enter here
ASSIGN Size,2 ;Type ship medium, Size=2
ASSIGN Capacity,2 ;Capacity = 2 Medium ship
ASSIGN Quenum,2 ;Queue 2 for med ships
ASSIGN M_Unload,30 ;Mean unload time
ASSIGN M_Load,36 ;Mean load time
ASSIGN Loadsp,10 ;Load time spread
QUEUE P$Quenum ;Join queue for small ships
TRANSFER Both,Quay1,Quay2
Quay1 TEST E BV$Var4,1 ;Try for berth1
ASSIGN Berth_Num,1 ;Assigned to berth1
TRANSFER ,Small ;Transfer for processing
Quay2 TEST E BV$Var5,1 ;Try for berth 2 or 3
TRANSFER Both,,Quay3 ;Try berth2 first
TEST E BV$Var6,1 ;Is berth2 available?
ASSIGN Berth_Num,2 ;Gets berth2
TRANSFER ,Small ;Transfer for processing
Quay3 TEST E BV$Var7,1 ;Try for berth3
ASSIGN Berth_Num,3 ;Assigned to berth3
TRANSFER ,Small ;Transfer for unload/load
*———Characteristics of large ships are assigned to parameters——
Large PRIORITY 3 ;All large ships; enter here
ASSIGN Size,3 ;Type ship large, Size=3
ASSIGN Capacity,4 ;Capacity=4 Large ship
ASSIGN Quenum,3 ;Queue number 3 for large ships
ASSIGN M_Unload,45 ;Mean unload time
ASSIGN M_Load,56 ;Mean load time
ASSIGN Loadsp,12 ;Load time spread
QUEUE P$Quenum ;Join queue for large ships
TRANSFER Both,First,Second ;Try Berth3 and Berth2
First TEST E BV$Var8,1 ;Try Berth3 first
ASSIGN Berth_Num,3 ;Berth number=3 Entered Berth3
TRANSFER ,Small ;Transfer for unload/load
Second TEST E BV$Var9,1 ;Try berth2 second
ASSIGN Berth_Num,2 ;Berth number=2 Entered Berth2
TRANSFER ,Small ;Transfer for unload/load
**********************************************************************
Simulation of a PBX.
A private automatic branch exchange telephone system has 200 extensions, 30 internal lines, and 30 external lines, 8 signaling units and one operator. Telephone calls last 150 seconds on average, normally distributed with a standard deviation of 30 seconds. The interarrival time of external calls varies inversely with the number of extensions (2500/number of extensions ), exponentially distributed. The interarrival time of internal calls is inversely proportional to the number of free extensions (1260/number of free extensions + 1). The destination of these calls may be internal (66.6%) or external (33.3%). The operator is not required for calls which originate internally. A signaling unit, and an internal line is required for internal calls, and an external line for external calls.Fifteen percent of extensions are engaged when tried, and twenty percent are not answered.The time required to signal is 7±2 seconds, and to ring through to an extension is 6±2 seconds. A caller waits 4±1 seconds to check an engaged tone. The service of an operator takes 9±3 seconds.
Simulate the operation of the private branch exchange telephone system for 1 hour.
1. Determine the utilization of the operator, signaling units, internal and external lines, and the extensions.
2. Sample the number of internal and external calls being processed every minute.
3. Are the number of internal and external lines, and signaling units sufficient?
Listing
; GPSS World Sample File - EXCHANGE.GPS, by Gerard F. Cummings
**********************************************************************
* PBX Telephone System Model
* Time is in seconds
**********************************************************************
Transit TABLE M1,20,20,20
**********************************************************************
Extensions STORAGE 200
Extlines STORAGE 30
Intlines STORAGE 30
Signals STORAGE 8
Operator STORAGE 1
**********************************************************************
* Define variables
Internal VARIABLE 1260/(1+R$Extensions)
External VARIABLE 2500/(R$Extensions+S$Extensions)
*
*Tables for number of calls in progress
Callsint TABLE S$Intlines,2,2,20
Callsext TABLE S$Extlines,2,2,20
**********************************************************************
* Generate calls originating internally
GENERATE (Exponential(1,0,V$Internal)),0,20 ;Calls origin; internal
ENTER Extensions ;An extension is involved
QUEUE Inside ;Queue for signal unit
ENTER Signals ;Get a signaling unit
DEPART Inside ;Leave the queue
ADVANCE 7,2 ;Time to signal
LEAVE Signals ;Leave the signal unit
TRANSFER .333,,Intout ;33% are internal to ext*
Intint TEST GE R$Intlines,1,Breakoff ;Test int line available
ENTER Intlines ;Get and internal line
ADVANCE 4,1 ;Check if engaged
TRANSFER .15,,Busy ;Some extensions engaged
Aline ENTER Extensions ;Another extension involved
ADVANCE 6,2 ;Time to ring extension
TRANSFER .2,,Nogood ;20% not answered
ADVANCE (Normal(2,150,30)) ;Call duration
Nogood LEAVE Extensions ;Leave extension
Busy LEAVE Intlines ;Leave internal line
TRANSFER ,Breakoff
***********************************************************************
* Model internal to external calls
Intout TEST GE R$Extlines,1,Breakoff ;Is an ext line available?
ENTER Extlines ;Get an external line
ADVANCE 4,1 ;Time to check if engaged
TRANSFER .200,,Nobody ;20% are engaged
ADVANCE 6,2 ;Time to answer
TRANSFER .200,,Nobody ;20% do not answer
ADVANCE (Normal(2,150,30)) ;Call duration
TABULATE Transit ;Record transit time
Nobody LEAVE Extlines ;Leave external line
Breakoff LEAVE Extensions ;Free the extension
TERMINATE
"***********************************************************************
* Process calls originating externally
GENERATE (Exponential(1,0,V$External)) ;Calls of external ; origin
TEST GE R$Extlines,1,Nonefree ;Ext line available?
ENTER Extlines ;Get an ext line
QUEUE Outsider ;Queue for operator
ENTER Operator ;Get an operator
DEPART Outsider ;Depart the queue
ADVANCE 9,3 ;Operator service
LEAVE Operator ;Leave the operator
ADVANCE 4,1 ;Is it engaged?
TRANSFER .15,,Engaged ;Some exts engaged
ENTER Extensions ;Get an extension
ADVANCE 6,2 ;Time to ring ext
TRANSFER .200,,Noperson ;20% No answer
ADVANCE (Normal(2,150,30)) ;Call time
TABULATE Transit ;Record transit time
Noperson LEAVE Extensions ;Leave extension
Engaged LEAVE Extlines ;Leave external line
Nonefree TERMINATE
***********************************************************************
GENERATE 3600 ;Transaction each hr
TERMINATE 1 ;Term timer xact
GENERATE 60 ;One xact every min
TABULATE Callsint ;No. of int calls
TABULATE Callsext ;No. of ext calls
TERMINATE
Simulation of a Flexible Manufacturing System.
Two vertical computer numerical control (CNC) machining centers, one horizontal CNC machining center, and a 3-dimensional inspection machine, are linked to form a flexible manufacturing system (FMS). The machines are served by automatically guided vehicles (AGVs) which follow an inductive wire embedded in the floor.Components, fitted to an appropriate fixture, arrive at the arrival station in random order, equally probable, every 12±1 minutes. Sixteen categories of jobs are processed. Each component takes a different machining and inspection time given by a Function called ‘Product’ defined in the model below and based on the following table.
Machining Time
Job Type 1 2 3 4 5 6 7 8
Time 600 700 800 900 1000 1100 1200 1300
Job Type 9 10 11 12 13 14 15 16
Time 1400 1500 1600 1700 1800 1900 2000 2100
One robot loads and unloads components and fixtures to and from the AGVs at the arrival station and finished parts area. A layout of the The robot, machine tools, and automatically guided vehicles are controlled by a central computer.
The robot, machine tools, and automatically guided vehicles are controlled by a central computer.
· Thirty-five percent of components are machined on Machine1.
· Forty-five percent of components are machined on Machine2.
· Twenty percent of components are machined on Machine3.
However, 15% of Machine1 jobs and 10% of Machine2 jobs are subsequently machined on Machine3. Jobs consigned originally to machine 3 are machined solely on that machine. Finally, 4% of all components are inspected at random on Machine4.
The wire in the floor guiding vehicles is divided into fifteen 10-meter sections represented by Facilities 1 to 15. The guided vehicles travel at an average speed of 0.5 meters per second, including loading and unloading times.
1. Simulate the operation of the FMS system for 15 days.
2. Determine the utilization of the machine tools.
3. Find the transit time of components through the production system and the in-process storage.
4. Determine the appropriate number of AGVs for the proposed workload in the FMS.
Listing
; GPSS World Sample File - FMSMODEL.GPS, by Gerard F. Cummings
AGV Model in FMS Factory *
* Time unit is one second
***********************************************************************
* P1 =1 Means machine 1 is req’d first
* P2 =2 Means " 2 " " "
* P3 =3 Means " 3 " " "
***********************************************************************
RMULT 71143
Transit TABLE M1,4000,4000,8 ;Transit time of jobs
Type VARIABLE RN1@16+1 ;Categories of jobs processed
AGV STORAGE 2
Inspect FUNCTION P4,L16
1,1200/2,1350/3,1500/4,1650/5,1800/6,1950/7,2100/8,2250/9,2400/10,2550
11,2700/12,2850/13,3000/14,3150/15,3300/16,3450
Product FUNCTION P4,L16
1,600/2,700/3,800/4,900/5,1000/6,1100/7,1200/8,1300/9,1400/10,1500
11,1600/12,1700/13,1800/14,1900/15,2000/16,2100
*
Mach1 FUNCTION RN1,D3
.35,1/.80,2/1.0,3
***********************************************************************
GENERATE 720,60 ;Xacts are jobs
QUEUE Arrival ;Arrival area queue
ASSIGN 5,FN$Mach1 ;P5 is and index to machines
*——Dummy values are put into parameters 1,2, and 3 so that they
*——will be set up to receive the appropriate value
*——in ASSIGN P5,P5.
*——When P1, P2 or P3 are tested in various test Blocks they must
*——already exist.
ASSIGN 1,6 ;Dummy value
ASSIGN 2,6 ;Dummy value
ASSIGN 3,6 ;Dummy value
*——The contents of parameter 5 is put into the parameter with the
*——same number as the contents value(e.g. If parameter 5 has a
*——value of 3, a 3 is put into parameter 3 indicating processing
*——should start on machine 3.
ASSIGN P5,P5 ;P1=1, P2=2, or P3=3
ASSIGN 4,V$Type ;P4 = Complexity of job
ENTER AGV ;GET AN AGV
SEIZE Robot ;Get robot
ADVANCE 60 ;Time to get an AGV
DEPART Arrival ;Depart arrival queue
ADVANCE 45 ;Robot load job on AGV
RELEASE Robot ;Free the robot
SEIZE 1 ;Get section 1 of track
ADVANCE 20 ;20 second to move 10 M
RELEASE 1 ;Free section 1 of track
TEST E P1,1,Skipone ;Machine 1 req’d?
TRANSFER .10,,Next3 ;10% also go to Machine 3
First SEIZE 3 ;Get section 3 of track
ADVANCE 20 ;Move 10 meters
LEAVE AGV ;Free AGV
QUEUE One ;Queue for machine 1
RELEASE 3 ;Free section 3 of track
SEIZE Machine1 ;Get machine 1
DEPART One ;Depart the queue
ADVANCE FN$Product ;Machining on vertical CNC
RELEASE Machine1 ;Machining center
QUEUE Wipone ;Join work-in-progress
ENTER AGV ;Get an AGV
ADVANCE 60 ;Time to get an AGV
DEPART Wipone ;Depart work-in-progress
***********************************************************************
Second SEIZE 4 ;Get section 4 of track
ADVANCE 20 ;10 section to move 10 M
RELEASE 4 ;Release section 4
TEST E P2,2,Skiptwo ;Is machine 2 req’d?
TRANSFER .15,,Next4 ;15% also go to machine 3
Andthree SEIZE 6 ;Get section 6 of track
ADVANCE 20 ;Move 10 meters
LEAVE AGV ;Free the AGV
QUEUE Two ;JOIN QUEUE TWO
RELEASE 6 ;Free section 6 of track
SEIZE Machine2 ;Get machine 2
DEPART Two ;Depart queue 2
ADVANCE FN$Product ;Process on horizontal
RELEASE Machine2 ;CNC machining center
QUEUE Wiptwo ;Queue work-in-progress
ENTER AGV ;Get an AGV
ADVANCE 60 ;Time to get an AGV
DEPART Wiptwo ;Depart work-in-progress
***********************************************************************
Third TEST E P3,3,Skipthree ;Is machine 3 req’d?
SEIZE 8 ;Get section 8 of track
ADVANCE 20 ;Move 10 meters
LEAVE AGV ;Free AGV
QUEUE Three ;Join queue three
RELEASE 8 ;Free section 8 of track
SEIZE Machine3 ;Get machine 3
DEPART Three ;Depart queue three
ADVANCE FN$Product ;Process on CNC lathe
RELEASE Machine3 ;Free turning center
QUEUE Wipthree ;Queue work in progress
ENTER AGV ;Get an AGV
ADVANCE 60 ;Time for AGV to arrive
DEPART Wipthree ;Depart work-in-progress
***********************************************************************
Fourth SEIZE 9 ;Get section 9 of track
ADVANCE 20 ;Move 10 meters
RELEASE 9 ;Free section 9 of track
TRANSFER .960,,Skipfour ;4% Of components inspected
SEIZE 11 ;Get section 11 of track
ADVANCE 20 ;Move 10 meters
LEAVE AGV ;Free the AGV
QUEUE Four ;Join queue four
RELEASE 11 ;Free section 11 of track
SEIZE Machine4 ;Get Machine 4
DEPART Four ;Depart queue 4
ADVANCE FN$Inspect ;Inspection on 3D machine
RELEASE Machine4 ;Release machine 4
QUEUE Wipfour ;Join work-in-progress
ENTER AGV ;Get and AGV
ADVANCE 60 ;Time for AGV to arrive
DEPART Wipfour ;Depart work-in-progress
***********************************************************************
Fifth SEIZE 12 ;Get section 12 of track
ADVANCE 20 ;Move 10 meters
RELEASE 12 ;Free section 12 of track
SEIZE Robot ;Get a robot
ADVANCE 45 ;Robot unloads job from AGV
RELEASE Robot ;Free the robot
TABULATE Transit ;Record transit time
SAVEVALUE P4+,1 ;One job finished
SEIZE 13 ;Get section 13 of track
ADVANCE 20 ;Recirculate AGV
RELEASE 13 ;Free section 13 of track
SEIZE 14 ;Get section 14 of track
ADVANCE 20 ;Move 10 meters
RELEASE 14 ;Free section 14 of track
SEIZE 15 ;Get section 15 of track
ADVANCE 20 ;Move 10 meters
RELEASE 15 ;Free section 15 of track
LEAVE AGV ;Free AGV
TERMINATE ;Destroy xact
***********************************************************************
Next3 ASSIGN 3,3 ;10% Use machine 1 and 3
TRANSFER First
Next4 ASSIGN 3,3 ;15% Use machine 2 and 3
TRANSFER ,Andthree
***********************************************************************
Skipone SEIZE 2 ;Seize section 2 of track
ADVANCE 20 ;Move 10 meters
RELEASE 2 ;Free section 2 of track
TRANSFER ,Second
***********************************************************************
Skiptwo SEIZE 5 ;Get section 5 of track
ADVANCE 20 ;Move 10 meters
RELEASE 5 ;Free section 5 of track
TRANSFER ,Third
***********************************************************************
Skipthree SEIZE 7 ;Get section 7 of track
ADVANCE 20 ;Move 10 meters
RELEASE 7 ;Free section 7 of track
TRANSFER ,Fourth
***********************************************************************
Skipfour SEIZE 10 ;Get section 10 of track
ADVANCE 20 ;Move 10 meters
RELEASE 10 ;Free section 10 of track
TRANSFER ,Fifth
***********************************************************************
GENERATE 28800 ;Xact every day
TERMINATE 1 ;Destroy timer xact
Simulation of an Ethernet.
A 10 Mbps Ethernet network is currently running satisfactorily with 100 workstations online. It has been determined that network traffic is composed of two classes of messages that are generated with the same proportion at all nodes.The global message arrival pattern in the peak hour can be modeled as a Poisson process, with individual workstations chosen randomly.We are to determine the effect on performance of adding an additional 100 workstations to the network.
Listing
; GPSS World Sample File - ETHERNET.GPS
* Messages arrive exponentially, as one of two types: short
* or long. A Node is selected and held for the duration of
* message transmission and any collision backoffs.
* Each Node on the Ethernet is busy with a single message
* until it is sent, or after some number of collisions (with
* transmission attempts from other nodes) a permanent error
* is declared and the node is released.
* Time is in units of milliseconds. Nodes are presumed
* to be 2.5 m. apart. The node ID numbers are used to
* determine the separation distance when calculating
* the collision window. The propagation delay to an adjacent
* node is 0.01 microsecond. Each bit is transmitted in 0.1
* microsecond. The interframe gap is modelled by having the
* sender hold the Ethernet for an additional delay after it
* has sent its message.
* Messages are represented by GPSS Transactions. Nodes
* and the Ethernet are represented by GPSS Facilities. An
* additional Facility is used during jamming to prevent the
* startup of any new messages.
* A collision results from multiple transmission attempts
* at two or more nodes. The signal propagation delay
* prevents nodes from having simultaneous knowledge of
* each other, thereby leading to this possibility. The time
* interval until the signal from the other node can be
* detected is called the node’s "Collision Window".
* Collisions are represented by removing the transmitting
* Transaction from ownership of the Ethernet and sending it
* to a backoff routine. The new owner jams the Ethernet
* briefly and then goes through the backoff, itself. When a
* Transaction’s message is being sent, the transaction has
* ownership of the Ethernet Facility at priority 0, and can
* be PREEMPTed by Transactions which are at priority 1.
* When a Transaction is jamming, it has ownership of the
* Ethernet Facility at priority 1, and is never itself
* PREEMPTed.
* Arguments:
* 1. Node_Count Number of Nodes 2.5 m. apart
* 2. Min_Msg Bits
* 3. Max_Msg Bits
* 4. Fraction_Short_Msgs Parts per thousand
* 5. Intermessage_Time Global Interarrivals
Node_Count EQU 100 ;Total Ethernet Nodes
Intermessage_Time EQU 1.0 ;Avg. Global Arrival every msec.
Min_Msg EQU 512 ;The Shortest Message in bits
Max_Msg EQU 12144 ;The Longest Message in bits
Fraction_Short_Msgs EQU 600 ;Short Msgs in parts per
thousand
Slot_Time EQU 0.0512 ;512 bit times
Jam_Time EQU 0.0032 ;32 bit times
Backoff_Limit EQU 10 ;No more than 10 backoffs
Interframe_Time EQU 0.0096 ;96 bit times
***********************************************************************
* Definitions of GPSS Functions and Variables.
***********************************************************************
Backoff_Delay VARIABLE Slot_Time#V$Backrandom ;Calc the
Backoff Delay
Backrandom VARIABLE 1+(RN4@((2^V$Backmin)-1))
Backmin VARIABLE
(10#(10’L’P$Retries))+(P$Retries#(10’GE’P$Retries))
Node_Select VARIABLE 1+(RN3@Node_Count)
Collide VARIABLE
ABS((X$Xmit_Node-P$Node_ID)/100000)’GE’(AC1-X$Xmit_Begin)
Msgtime VARIABLE (0.0001)#V$Msgrand
Msgrand VARIABLE
Min_Msg+(RN1’G’Fraction_Short_Msgs)#(Max_Msg-Min_Msg)
***********************************************************************
* The Message Delay Histogram
***********************************************************************
Msg_Delays QTABLE Global_Delays,1,1,20
***********************************************************************
* Main Body of Model
***********************************************************************
* Message Generation
***********************************************************************
GENERATE (Exponential(1,0,Intermessage_Time)) ;Single msg generator
ASSIGN Node_ID,V$Node_Select ;Acquire a Node ID.
ASSIGN Message_Time,V$Msgtime ;Calc and Save XMIT Time.
ASSIGN Retries,0 ;No Collisions at start.
***********************************************************************
* Wait for the Node to finish any previous work.
***********************************************************************
QUEUE Global_Delays ;Start timing
SEIZE P$Node_ID ;Wait for, occupy, the Node.
Try_To_Send PRIORITY 1 ;Don’t Lose Control
SEIZE Jam ;Wait for any
RELEASE Jam ;Jam to end.
TEST E F$Ethernet,1,Start_Xmit ;If Ethernet Free, jump.
***********************************************************************
* The Ethernet is busy. We check to see if we are in the
* Sender’s "Collision Window". If so, this node would
* start transmitting anyway, since the carrier would not
* yet be sensed. In that case, we must initiate a Collision.
If Prop Delay to Sender is >= Xmit Time up till now,
* collide.
***********************************************************************
TEST E V$Collide,1,Start_Xmit ;No Collision. Go
;Wait for it.
* * * * * * * * * * * * Collision * * * * * * * * * * * * *
Collision PREEMPT Ethernet,PR,Backoff,,RE ;Remove the old owner.
SEIZE Jam ;Jam the Ethernet.
ADVANCE Jam_Time ;Wait the Jam Time.
RELEASE Jam ;End the Jam.
RELEASE Ethernet ;Give up the Ethernet.
PRIORITY 0 ;Back to
Backoff ASSIGN Retries+,1 ;Increment the Backoff Ct.
TEST LE P$Retries,Backoff_Limit,Xmit_Error ;Limit
;retries.
ADVANCE V$Backoff_Delay ;Wait to initiate retry.
TRANSFER ,Try_To_Send ;Go try again.
***********************************************************************
* Get the Ethernet, and start sending.
***********************************************************************
Start_Xmit SEIZE Ethernet ;Get Ethernet, wait if necessary
SAVEVALUE Xmit_Node,P$Node_ID ;Identify the sender.
SAVEVALUE Xmit_Begin,AC1 ;Mark the start xmit time.
PRIORITY 0 ;Ensure we can be PREEMPTed.
ADVANCE P$Message_Time ;Wait until Msg. is sent.
ADVANCE Interframe_Time ;Hold the Ethernet for gap.
RELEASE Ethernet ;Give up the Ethernet.
Free_Node RELEASE P$Node_ID ;Give up the node
DEPART Global_Delays ; to the next msg.
TERMINATE ;Destroy the Message.
***********************************************************************
Xmit_Error SAVEVALUE Error_Count+,1 ;Count the Error.
TRANSFER ,Free_Node ; and get out of the way.
***********************************************************************
* Timer Segment
***********************************************************************
GENERATE 1000 ;Each Start Unit is 1 Second.
TERMINATE 1
*********************************************************************
Predator-Prey Model.
A population of rabbits has grown uncontrollably on a small island. The problem is so severe that local farmers expend considerable effort just to break even financially. They want to introduce a population of foxes to bring the situation under control.The problem is to use the Lotka-Volterra predator prey model in PREDATOR.GPS to simulate the phenomenon. What will happen if a population of 80 foxes is released? How many foxes must be released to eradicate the rabbits?
Listing
* Operation:
* Plot Foxes and Rabbits: X 12000; Y 0-3000
* START 1
******************************************************************
* Don’t forget to parenthesize the ODEs.
******************************************************************
Foxes INTEGRATE (FoxRate())
Rabbits INTEGRATE (RabbitRate())
******************************************************************
* The Initial Values
******************************************************************
Foxes EQU 80
Rabbits EQU 1000
******************************************************************
* The Model Parameters
******************************************************************
K_ EQU 0.2000 ;Predator Efficiency
A_ EQU 0.0080 ;Predator Death Rate
B_ EQU 0.0002 ;Foray (Grazing) Factor
C_ EQU 0.0400 ;Prey Birth Rate
******************************************************************
* Discrete Simulation Control Segment
******************************************************************
GENERATE 10000
TERMINATE 1
PROCEDURE FoxRate() BEGIN
Growth Rate for the Fox Population
*******************************************************/
TEMPORARY BirthRate, DeathRate, TotRate;
/* Limit the Variable, so we can experiment safely. */
IF (Foxes < 0) THEN Foxes = 0;
IF (Foxes > 10e50) THEN Foxes = 10e50 ;
BirthRate = K_ # B_ # Foxes # Rabbits;
DeathRate = A_ # Foxes;
TotRate = BirthRate - DeathRate;
RETURN TotRate;
END;
PROCEDURE RabbitRate() BEGIN
/*******************************************************
Growth Rate for the Rabbit Population
*******************************************************/
TEMPORARY BirthRate, DeathRate, TotRate;
/* Limit the Variable, so we can experiment safely. */
IF (Rabbits < 0) THEN Rabbits = 0;
IF (Rabbits > 10e50) THEN Rabbits = 10e50 ;
BirthRate = C_ # Rabbits;
DeathRate = B_ # Foxes # Rabbits ;
TotRate = BirthRate - DeathRate;
RETURN TotRate;
END;
; TRAFFIC.GPS, by Gerard F. Cummings
100 **************************************************
110 * *
120 * TRAFFIC AT A T-JUNCTION *
130 **************************************************
140 * ERLANG SERVICE TIMES ...HYPEREXPONENTIAL ARRIVALS
170 * TIME UNIT IS 1/100 SECOND *
172 *
173 *-------------------------------------------------
175 * A Hyperexponential Probability Distribution Follows
180 HYPER FVARIABLE (410+((RN2'L'234)#(1343-410)))#FN$XPDIS
185 * f(t) = .234(1/4.10) exp(-t/4.1) + .766(1/13.43) exp(-t/13.43)
186 *-------------------------------------------------
188 *
190 AISLE STORAGE 8
200 MERGETIME TABLE MP2,100,100,20
210 CROSSTIME TABLE MP1,100,100,20
220 TRANSIT TABLE M1,1000,1000,9
230 ARRIVALS TABLE V$HYPER,200,200,20
240 XPDIS FUNCTION RN1,C24
0.0,0.0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69
.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.83/.88,2.12
.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5
.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7.0/.9997,8.0
250 **************************************************
320 GENERATE V$HYPER,,300 ;HYPEREXPONENTIAL
330 QUEUE FIRST
340 GATE SNF AISLE ;IS THERE ROOM IN THE AISLE ?
350 SEIZE SOUTHLANE ;
360 DEPART FIRST
370 MARK 1
375 * ---------Erlang Distribution-----------
380 ADVANCE 90,FN$XPDIS ;ERLANG K=4 WAITING TIME
390 ADVANCE 90,FN$XPDIS ;MEAN = 360 TIME UNITS
400 ADVANCE 90,FN$XPDIS
410 ADVANCE 90,FN$XPDIS
415 * ---------------------------------------
420 TABULATE CROSSTIME ;RECORD CROSSING TIME
430 ENTER AISLE ;STAND IN CENTER AISLE
440 RELEASE SOUTHLANE
450 QUEUE TWO ;QUEUE FOR NORTHLANE
460 SEIZE NORTHLANE
470 DEPART TWO
480 LEAVE AISLE
490 MARK 2
495 * ---------Erlang Distribution-----------
500 ADVANCE 80,FN$XPDIS ;ERLANG K=5 WAITING TIME
510 ADVANCE 80,FN$XPDIS ;MEAN = 400 TIME UNITS
520 ADVANCE 80,FN$XPDIS
530 ADVANCE 80,FN$XPDIS
540 ADVANCE 80,FN$XPDIS
545 * ---------------------------------------
550 RELEASE NORTHLANE
560 TABULATE MERGETIME ;MERGE TIME TO NORTH FLOW
570 TABULATE TRANSIT
580 TABULATE ARRIVALS
590 TERMINATE
600 ************************************************
610 GENERATE 5000,500,,,10 ;SOUTHBOUND TRAFFIC
620 SEIZE SOUTHLANE
630 ADVANCE 1200,300 ;TIME TO PASS JUNCTION
640 RELEASE SOUTHLANE
650 TERMINATE
655 ************************************************
660 GENERATE 6000,500,,,10 ;NORTHBOUND TRAFFIC
670 SEIZE NORTHLANE
680 ADVANCE 1200,300 ;TIME TO PASS JUNCTION
690 RELEASE NORTHLANE
700 TERMINATE
710 ************************************************
720 GENERATE 6000 ; XACT EVERY MINUTE
730 TERMINATE 1
740 ************************************************