DATA 420 - Modeling and Simulation - Spring 2024

Systems Dynamics Models II

Possible experience: +50XP

Due: Wednesday, March 13, midnight Friday, March 15, midnight

Overview

Create a Systems Dynamic model of a deadly disease as it sweeps through a panicked population. It can (and should) be heavily based on the SIR model from the class notes.

Your model will build upon SIR in several ways:

Big, big, non-obvious hint about quarantine: in addition to other things, your simulation needs to know, at every point in time, (1) how many exposed people there are running around in the general population, (2) how many infected people there are running around in the general population, (3) how many exposed people are in quarantine, and (4) how many infected people are in quarantine. So it's not quite as simple, as you might have thought, as adding a single "Q" stock to your simulation. Not all people in quarantine are in the same state: some have not yet become Infectious, while others have, and that rate-of-becoming-infectious is the same rate whether you're holed up in a hotel room or mingling about the general population.)

Instructions

  1. Invent a clever name for your disease. It can be light-hearted and whimsical, or grisly and macabre. Come up with some symptoms for it, and a method by which it will be passed from human to human.
  2. On paper, or using some kind of electronic drawing tool, create a stock-and-flow diagram that enhances the original SIR diagram by including additional stocks, flows, and other parameters, as necessary. This will take some focused, unrushed thinking to figure it out.
  3. Show Stephen your stock-and-flow diagram so he can sanity check it and clear you to move on to the next stage.
  4. Begin with the SIR model we wrote in class. Do a git pull or just copy the file to your system from github.
  5. Modify your Python code to incorporate your changes to the stock-and-flow diagram. This will include adding any extra parameters to the runsim() function signature, and if plot=True, adding additional lines lines to your plot. Warning: do not try to code all the above changes all in one go. Instead, add your code to accommodate Death, and make sure it works. Then, add your code to accommodate ongoing Vaccination (the code from 2/22 only has the initial vaccination chunk), and make sure it works. Then add your code to accommodate Quarantine, and make sure it works.
  6. Carefully experiment with different values of your parameters to ensure that the simulation's behavior makes sense. (Take your time here. Don't rush.) Investigate anomalies and curiosities, debugging if necessary.
  7. When you're confident it passes sanity check, produce two plots:
  8. Using a word processing program, write a three-to-five-paragraph blurb of text that (1) describes your fictitious disease and its humorous and/or grisly symptoms and transmission method, (2) describes each of the two plots, and specifies what the takeaway is from each, and (3) summarizes in words what you learned about the model's behavior through running the simulation. These paragraphs should be grammatically correct, with no spelling errors; they should be compelling, intriguing, inspiring, and contain writing worthy of a college student, not a high school or middle school student.
  9. Print out (on a printer) your code, your write-up, and your two plots. Staple them (with a stapler) together with your legible and beautiful stock-and-flow diagram from step 2, above. Type/write your name on the writeup so I know it's you.
  10. Stick your finished packet of paper in the "420" manilla envelope hanging outside my office door in Farmer basement.

Warnings and notes

DO NOT wait anywhere remotely close to the deadline before completing your stock-and-flow diagram. You cannot do that successfully at the last minute. It will require unrushed, uncluttered, unpanicked thought to get right.

I am more than happy — nay, overjoyed — to discuss the stock-and-flow diagram with you in office hours or to answer questions about it over email. Ditto the Python implementation.

Getting help

Come to office hours, or send me email with subject line "DATA 420 System Dynamics II help!!"