Using Simscript on Linux
Setting Things Up
To set up your Linux account to use SIMSCRIPT II.5 do the following:
Using Simscript
Writing and Modifying SIMSCRIPT II.5 Programs
Save the following programs to your directory:
- mm1ss.sim: Single Server Queuing System
(A hard copy of the program was handed out in class.)
- machine.sim: Machine Breakdowns (Prob. 1.22)
(Also handed out in class.)
- phones.sim: Phone Lines Simulation
- Follow the instructions above to compile and run mm1ss.sim.
- Adding Utilization:
Open mm1ss.sim in emacs and add code to compute the utilization of
the server. Utilization of the server is a time-average statistic so
you need an accumulate statement. Furthermore, utilization is the
proportion of time the server is busy. As you recall to compute
utilization you compute the
area under the curve B(t) where B(t) is the number of servers busy
at time t. In SIMSCRIPT this number is one of the attributes of
a resource -- in this program, it is N.X.SERVER (this is the number
of servers busy at a given time). So, add to the preamble the statement
accumulate UTILIZATION as the average of N.X.SERVER
Now all you need to do is add a statement to print UTILIZATION
at the end of the simulation (where should this go?). Compile and
run the program to make sure it works.
- Now copy mm1ss.sim into the file tandem.sim.
- Modeling the Tandem System:
Open tandem.sim in emacs and modify it as discussed in class to
simulate the tandem queuing system in problem 1.14. Remember the
SERVER resource declaration in the preamble doesn't change; however, you
need to change the creation of the resources in main. You also
need to modify the CUSTOMER process. SIMSCRIPT will automatically
keep the average in queue statistics and utilization for each
of the servers (for each queue created for the resource). When
the results are printed you now need to use subscripts to print out
utilizations for each queue --- UTILIZATION(1)
and UTILIZATION(2) instead of just UTILIZATION
(similar for queue length). Be sure to label each in the output!
Finally, since DELAY is just an ordinary variable you need to have
two separate variables -- say DELAY1 and DELAY2 -- for the delay
and two separate variables for the average delays (you could use arrays
but we'll wait for that). Add this
in the appropriate places and be sure to print out both averages.
- A Bus Maintenance Facility: Copy tandem.sim to a file bus.sim.
Modify bus.sim to model the bus facility described in problem #1.30 on
page 105. There are very few changes needed -- two changes involve
random number functions. Note also that it would be best to express
time in hours since all parameters are given in hours.
Finally, note that there are now 2 servers at the
second queue (for the repair station) and hence the utilization needs
to be divided by 2 to get the per worker utilization.
- Modeling Phone Calls: The program phones.sim models a system
such as a call center with phone calls coming in. The center has a
certain number of phone lines with no facility for putting someone
on hold. If a call comes in and all lines are busy the call is
lost. Since there is no queuing of calls, no resource is needed to
model the calls. An integer indicating the number of busy lines
and one indicating the total number of available lines suffices.
Study the code for the program. Note that the main routine is written
with a loop that runs the simulation several different times for
different numbers of phone lines. The user enters the maximum and
minimum number of lines to simulate. Compile and run the program
to see how it works. Try input of 8 calls per minute with an average
length of a call of 4 minutes. Run the simulation for 20 to 25 lines
and for 24 hours.
Now revise the program to do problem #1.29 on pages 104-105 of the text.
DUE DATES: Problems #1 - 5 above should be completed by Thursday,
March 13. Problem #6 by Tuesday, March 18.
Using the Simulations to Answer Questions
Both problems 1.29 and 1.30 ask questions to be answered. That means
analyzing the output which, of course, means using confidence intervals.
- For #1.29, run the program with various numbers of lines until
you get a reasonable range that you think the answer would fall in.
Then for some lines in that range (for example, you may decide the
number of lines should be in the range 25 - 30) run the program
at least 10 times (10 replications --- each with different stream
combinations). Use Minitab to construct confidence intervals
from your results. Then use your confidence intervals to determine
the number of lines. Give reasons for your answer.
- Problem 1.30 says replicate the simulation 5 times -- that's not
enough. You should replicate it at least 10 times, then construct
confidence intervals for each of the performance measures. To make
this easier, add a loop to main to perform the replication and add
code to print the results (only the numbers) to a file that is
suitable for importing into Minitab. Run the program with at least
10 replications and construct t-confidence intervals for each
performance measure.
- Problem 1.30 asks whether the facility could handle a quadrupling
of buses into the system.
- What is the interarrival time if the number of buses coming in
quadruples? Think carefully about this.
- The problem asks if you can answer the question without simulation.
Can you? Why or why not?
- Run your program for a quadrupling of the buses. What happens?
Can the system handle it? Give reasons for your answer.
- Run your program to test each of the following scenarios. In each
case, run the program 10 times and compute t-confidence intervals for
the performance measures.
- the arrival rate of the buses triples
- the arrival rate of the buses quadruples but a new inspection
station is opened (with one queue serving both stations).
State your conclusions: would the facility be able to handle either
of the above scenarios? why or why not?
DUE DATE: Thursday, March 20, 2003