Tentative Project Information
General issues:
- The project will count as a double homework assignment.
- The goal is to produce something generally useful to the
SimPy user community. If your project is done well,
it will be submitted to the SimPy project team for
the "Contributed" portion of their Web site, and possible inclusion
into SimPy itself.
- Group sizes must be either two or three; you cannot work alone
on this one..
- Projects must work under SimPy version 1.9 (which I have in
~matloff/Pub/SimPy on CSIF).
- You will submit a written report, in LATEX ,
first in draft form for my comments, then in final form. The report
will clearly explain the project goals, directions for users and an
overview of implementation.
- You will present your project to the class, in a 15-20 minute
talk. Desired length is at least 15-20 minutes, not including time
for questions.
- The project descriptions below are meant to be minimal, and you
are urged to be creative in terms of the details. You will need to
keep me posted on this, and of course are welcome to seek advice from
me.
- You may also propose your own project. To be approved, it must
satisfy the "generally useful" criterion above, and should be of an
appropriate size and scope.
Key dates:
- February 18 (11:59 p.m.): Ranked project
preferences and group compositions due. Let me know by e-mail. In
your preference rankings, let me know whether your preferences are
really strong or not, and if so, why. I believe everyone can get
their first or second preference.
- February 19 (in class): Project assignments
announced, pep talk given. :-)
- March 5 (11:59 p.m.): Rough drafts of written
reports due.
- March 6: Presentations begin.
- March 17 (11:59 p.m.): Final written reports
due.
Project choices:
- SimPy debugging/code verification tool
- supplement to, not replacement for, existing debugging tools
- each thread has its own window, displaying its information:
next line to be executed; next event time if any, passive/action
status; resources/waitevents queued for, if any, etc.
- user hooks
- see SimulationStep
- need very strong knowledge of SimPy internals and
Python foundations
- SimPy has a Tcl/Tk capability, but you may
prefer wxPython or ...
- general SimPy framework for simulating networks
of queues
- have many servers, output from one server routed into another
- jobs can also come in from outside, and can exit the system
- applications: manufacturing, communication networks, computer
I/O systems
- examples:
-
Jackson network, on SimPy Web page (this
is actually a less general version of our project)
-
purchase order chain
- our ALOHA example, with more than one message allowed at a
node at one time
-
Stallings CS examples--packet-switching network, database
server, multiprocessor (starting on p.8)
- project involves:
- you write some SimPy classes (as
subclasses of Process, Resource
etc.) that enable users to simulate any kind of network of
queues as described above
- your code also reads in specifications supplied by the user
in an input file, including nodes, routing, buffer sizes,
service times etc.
- computation of regenerative confidence intervals
- a regeneration point is a point in time at which the
system being simulated in which "time starts over"; see our
PLN unit on inference on simulation output
- we want our simulation output to say, for instance, "We are
95% sure that the long-run average queue size is between 12.2 and
15.8," instead of "We estimate the long-run average queue size to
be 14.0"
- no statistical knowledge needed
- project involves:
- adding a new member method to the Monitor
class, implementing the formula given in the PLN
- devising several additional examples beyond the two in
the PLN; this can probably be done on existing programs, e.g.
in the PLNs or from your homework
- confirming that the examples work, by doing a "simulation
of simulations" (i.e. embedding the SimPy code
within an outer loop)
- writing a clear report so that users know what the method
does and how to apply it
- other queuing disciplines
- addition of new member methods to the Resource
class
- a queuing discipline is a priority policy
- examples:
- implement a few of the most famous policies, again with good
examples needed to teach users
- implement ns-2 in SimPy
- ns-2 is a popular network simulator
- e.g. implement node type in
ns-2 as a subclass of Process
or Resource in SimPy
- implement enough features to demonstrate that the project is
viable
- need to know or learn a bit of Tcl (like Python and Perl)