The schedule is at the top for easy reference.
Week | Lecture | Sections |
---|---|---|
1 | 1 | 1.1, 1.2, 2.1, 2.2 |
2 | 2.3, 2.4 | |
2 | 3 | 3.1, 3.2 |
4 | 3.3, 3.4 | |
3 | 5 | 4.1, 4.2 |
6 | 4.3, 4.4 | |
4 | 7 | 4.5, 5.1 |
8 | 5.2, 5.3 | |
5 | 9 | 5.4, 6.1 |
10 | 6.2, 6.3 | |
6 | 11 | 6.4, 6.5 |
12 | 6.5, 6.6 | |
7 | 13 | 7.1, 7.2 |
14 | 7.3, 7.4 |
Queueing systems pervade our society, at shops, supermarkets, call centers and so on. It is common in such systems to make trade-offs between the costs of operation (e.g., hiring personnel), and service as perceived by customers (e.g., mean waiting time).
To make such trade-offs one should be able to analyze the behavior of queueing systems and compute relevant key performance indicators. For this purpose we need models of queueing systems. The simple models can typically be solved with mathematical tools, but the analysis of difficult models requires simulation. Although simulation is very powerful, the development of useful simulators is based on profound insight into the behavior of queueing systems, in particular bottlenecks. Moreover, simulators require extensive testing, as (programming) mistakes are easily made. Hence, mathematical models are also key ingredients in the development process of a simulator, to provide insight and suitable testing grounds.
The aim of this course is to equip the students with a set of tools to analyze and improve queueing systems by means of simple mathematical models on the one hand, and simulation on the other. The students should realize that both approaches complement each other: the simulations to analyze realistic queueing systems, the mathematical models to provide intuition, insight and tests.
The course starts with providing a set of simple numerical models (recursions) to analyze and simulate realistic queueing systems. Then we develop mathematical models to analyze single server queueing systems and queueing networks, and show how simulation and analysis interact in the understanding of queueing systems and queueing networks.
See ocasys.
In the course we use the queueing_book.pdf
which is available at github.
The exercises form an integral part of the text; they provide examples, derivations, and theoretical results.
As such, the main text uses, explicitly and implicitly, material developed in the exercises.
It is therefore mandatory to make and understand all exercises in the book.
Exercises assigned per week/lecture relate directly to the reading material per week/lecture.
In the lectures I assume that you solved the exercises of previous lectures; hence, it is important to keep up with doing exercises.
We will open a discussion board on nestor for questions.
You are free to use old exams for extra questions (although the book contains plenty). I will not answer questions about old exams; for that you have to consult your fellow students.
The course consists of seven weeks with two on-line lectures per week. In the lectures we focus on the, perhaps, more difficult parts of the reading material. The rest of the reading material is for self study. I will not record the lectures as I will not discuss material that is not in the queueing book or the assignments.
There are a number of assignments which you have to complete with another student.
The assignments consist of explaning simulation code and redoing a number of simulations.
All information is available in the assignments
directory at github. I made a number of youtube movies to explain how the simulations work.
The rules are like this:
- You have to do each assignment with another student (the same person for each assignment). You can sign up for a group once we opened the groups on nestor.
- For each assignment you have to hand in a pdf file, which is typeset in LaTeX. You should use the template made available on github, and it should include both your names, student ids, a title, and a date. You can find the template on github
- Each assignment contains exercises. Many of these exercises ask you to explain how the simulation code works. The intention is to get you started with simulation (hence a bit of programming) and help you keep up with the course.
- With respect to programming language, you can use my python code, but you are also allowed to build your simulation in R, or C++, or whatever other language you like. As long as you can read my python code, all is ok.
- An assignment for week
$n$ is due at Friday 17h00 in week$n+1$ of the course. - Assignment grades from last year do not carry over.
Note specifically that the python code developed in the book and the simulation is part of the course.
You should be able to understand the code and find mistakes if you are presented with modifications of the code.
For instance, at the exam we can include a question like: “what is the value of a
after the completion of this loop:”
a = 3
for i in range(3):
a += 5
And then you have to provide the answer: “18”.
During the tutorials you work as a group on the assignment for that week. Besides this, you can ask questions about the book or other material.
We will heavily use probability theory, calculus, linear algebra, and programming concepts.
The first part:
- Takes 1 h. You have to turn in the answers for the closed book part before the second hour starts, or hand it over (right away) when the examiner comes at your desk to take it in. . If you don’t, we will not accept that part of your exam
- Is closed book.
- We ask you about (small variations) of the exercises of the queueing book; it will mostly focus on derivations.
- The total number of point for the closed book part is 14 points.
The second part:
- Takes 1 h (was 2h).
- Is open book and consists of about 7 questions. You are allowed to use the book, the solutions, the material for the tutorial, the internet, anything, but NOT fellow students. You have to make the exam on your own.
- Each problems has a weight of 2 points.
- Assumptions and data presented within a problem only apply to that problem. Definitions and symbols will not be explained in the exam; you can find them in the course book.
- The problems ask you to provide the result of a computation. For
instance, “Let
$a=4$ and$b=7$ . Compute$a+b$ .” Then you are supposed to provide the answer$11$ in nestor. - The exam questions will be based on exercises of the book. However, in the exam you have to provide numerical answers. You have to use the computer to carry out the computations; unless you have unprecedented calculation skills. You are free to use whatever language suits you best. I like python, but if you prefer some other language, no problem.
- Hence, you have to bring a laptop to the exam to make this part.
- Ensure that you know how to copy numbers from a pdf file and paste
them into your programming environment or excel for further
processing. Try this as a test:
6.84 7.50 7.77 8.43 8.71 9.25 9.92 10.17 10.32 10.96 11.65 12.20 13.17 13.66 14.34 15.23 15.77 16.56 17.06 17.08 17.86 18.81 19.20 19.95 20.93 21.67 22.49 22.92 23.26 23.78 24.48 25.30 26.20 26.79 26.86 - You should be comfortable with using the python code (or something similar in, e.g., R) of Section 3.4 of the book and the assignments.
- You should be capable of programming simple recursions such as those of Section 7.1 and 7.2 of the book.
- When you are asked to compute a standard deviation or variance,
divide by
$n$ , not by$n - 1$ . - If you need to use Sakasegawa’s formula, you should assume that the results are exact, rather than approximate.
- You should provide your answer in the same unit of time as given in the problem.
- Rouding to 3 significant digits is sufficient.
- You will not be penalized for small deviations in precision from the
expected answer. Specifically, suppose your answer is
$x$ and ours (the correct) is$y$ . Whenever$x/y ∈ [0.95, 1.05]$ we accept your answer as correct. - The exam is personalized: you have your own set of questions (in a random sequence) from a pool of questions and you have to use the data as specified in your exam. Your exam will be provided via Nestor.
- You are not allowed to distribute the exam until 1 hour after the
closing time of the exam, and we rely on your common sense and
honesty to comply with this rule. To help you resist the temptation
to share your exam: the questions will be in random sequence, the
question formulations will be different, e.g., “$a=3, b=4$, what is
$a+b$ ?”, “$a=3, b= 4$, what is$a⋅ b$ ?”, “What is$a × b$ if$a=3, b=6$ ?”, “What is the product of 7 and 8?”. In fact, it is very easy to find many different ways to formulate the same type of question, or formulate questions that are seemingly the same, but differ in the details. So, if you plan to cheat, you will most surely waste a lot of time just figuring out what precise overlap you have with fellow cheaters. And if you don’t get the details right, your answer will be wrong anyway. - After 1 hour after the closing time of the exam on Nestor, you are of course allowed to share and discuss your exam.
- You provide your answers on Nestor in the directory ‘Course Documents/Exam’. Answers are strictly numerical, so we expect no technical problems with this. As long as you have access to Nestor (via computer, mobile phone or tablet), you are safe.
Let me explain why is the exam the way it is, and why, in particular I just check the numerical outcome and not the intermediate derivations. In fact, there are a number of clear advantages.
- Econometricians deal with numbers and computers, in particular at pension funds, in insurance, or finance. In these settings, the numerical work has to be correct. When you make computational errors, nobody cares about your Nobel-winner level understanding of topics and great explanations. The numerical end-results matter, intermediate results are irrelevant.
- You have to learn to pay to attention to details, and check your work. Not checking thoroughly is, simply put, unacceptable. To see why, consider this example: you bring your car to a mechanic to have the tires changed. The mechanic is too lazy to check whether the bolts are tight. As a result, you get an accident, and when you wake up in hospital, your left arm has to be amputated. The anesthesiologist does not see the need to check the type of anesthetic nor the dose you need, so you kidneys are permanently damaged. The surgeon prefers to take a few beers before the operation starts, rather than checking what body part to amputate, so s/he removes your right leg instead of your left arm. The nurses are busy with their phones during the operation, because they find check work sooo boring\ldots Other example, the programs by which your pension is computed over the years is extremely buggy, because the programmer did not like writing tests for the code. As a result, your lose 500 000 Euro on your final pension. I guess you get the point by now. As all people, you find it unacceptable when the mechanic, surgeon, and so on, don’t check their work. Well, you should live by the same principle you expect from others.
- I find it very important that students learn to program, and really use the computer for computational work. As far as I am concerned, students have to learn how to analyze problems in algorithmic steps, implement their ideas in code, and let computer do the computations in milliseconds. In fact, I find learning to programm much more important than learning about queueing theory. Over the years I tried to convince students to start to program, but to no avail. Giving an inducement in the form of an exam seems to work much better.
- An exam is a test in which you are supposed to show that you can perform well under pressure. When a laywer prepares a case, s/he has to perform under pressure; when a surgeon does an operation, s/he has to perform under pressure; when a car mechanic has to repair a car, s/he work under pressure. If these people say to you they make grave errors because they were under pressure, and as a result their work is below par, do you accept that as an excuse\ldots even if you get an accident as a result?
- Some students like this way of testing, others don’t. If I have written exams, the ones that like programming don’t like that in turn. From a population perspective, always some loose, others gain.
- Queueing problems become pretty soon very hard, much too hard for an exam. As long as exams are open book, there is actually not that much that I can reasonably ask at an exam. This current format allows me to test that you know what model to use and to implement and compute that correctly.
- As long as you can use the internet during the exam, you have access to dropbox, mail and so. There are (many) students that share old exams, and what not, via dropbox or otherwise. Written explainations are so simple to exchange that I don’t see much value in checking that.
We advise you to go the lectures and the assignments, but there is no obligation.
Assignments will be graded as a 1, 4, 7, 9, or 10. (For a 10 your work needs to be flawless.) If you don’t turn in an assignment, the grade will default to 1.
<2022-03-09 wo>: Even though the exam duration has been reduced to 2h, the weights of the assignments and the exam/resit will remain the same.
<2022-04-01 vr>: To be clear, you can earn
from sigfig import round
tot = 28 # 14 for the open and closed part each.
def grade(a, c, o):
ga = round(sum(a) / len(a), sigfigs=2)
ge = round(10 * (c + o) / tot, sigfigs=2)
if ge < 5:
g = max(ge, 1)
elif ga >= 6:
g = max(0.75 * ge + 0.25 * ga, ge)
else:
g = 0.75 * ge + 0.25 * ga
final = round(g, sigfigs=1)
print(f"{a=}, {ga=}, {ge=}, {g=}, {final=}")
return final
# some tests
grade(a=[10, 10, 10, 10, 10, 10], c=10, o=5)
grade(a=[10, 10, 10, 10, 10, 10], c=7, o=7)
grade(a=[10, 10, 10, 10, 10, 10], c=6, o=7)
grade(a=[1, 1, 1, 1, 1, 1], c=8, o=14)
grade(a=[1, 1, 1, 1, 1, 1], c=14, o=14)
grade(a=[6, 6, 6, 6, 7, 7], c=14, o=14)
Results of (the) previous year(s) do not carry over to this year. For instance, you have to do the assignments again (if you want to obtain an assignment grade higher than 1).
- dr. N. (Nicky) D. Van Foreest, Duisenberg 666, 050-363 51 78, [email protected].
- dr. X. (Stuart) Zhu, 050 36 38960, [email protected]
- J. (Joost) Doornbos, [email protected]