Anonymous

### Question Description

In this homework assignment you will be building a program to simulate epidemics, which involve the rapid spread of infectious diseases over social networks of contact or physical proximity between people. A social network can be represented by a set of nodes, representing people, connected by edges, denoting relationships between people. In the case of modeling infectious diseases, these relationships could represent physical contacts or close physical proximity between people, allowing for the transmission of disease from one person to another. These relationships are undirected, meaning that either person could transmit the disease to the other person.

Many models have been proposed to simulate epidemics. In this homework assignment, you will implement a model known as the Susceptible-Infected-Recovered or SIR model, which is commonly used in epidemiology. The version of the SIR model we consider operates in discrete time steps. Each node (person) is in one of the three states at each time step: susceptible, infected, or recovered. Initially it is assumed that a few nodes are infected, and all of the other nodes are susceptible. At each time step, each infected node may independently infect a neighbor (another node connected with an edge to the infected node) with a certain infection probability if the neighbor is in the susceptible state. If the infected node is successful at infecting a neighbor, the neighbor node takes on the infected state at the next time step. The last point is crucial—the newly infected neighbor cannot begin infecting nodes until the following time step!

After each infected node has attempted to infect his or her neighbors, he or she independently recovers from the infection with a certain recovery probability. Once a node has recovered, he or she cannot be infected with the disease in the future. This effect simulates the human immune system building up an immunity to the disease. A time step is complete only after each infected node has attempted to infect each of his or her neighbors and has attempted to recover from the infection. The simulation is continued over many time steps, and the nodes will change state as the disease spreads throughout the population and as people recover from the disease.

An example of two simulation runs with 100 people is shown in below. In the simulation on the left, a massive outbreak occurred, and every single person caught the disease, since the number of recovered ended up at 100. On the right, a smaller outbreak occurred, and only around 30 people caught the disease.

Figure 1. Results of two simulation runs from the SIR model you are implementing in this homework assignment.

EECS 1510 Spring 2020 Sections 009/011/093 Instructor: Dr. Kevin S. Xu Introduction to Object-Oriented Programming

In this homework assignment, you will create two new classes, EpidemicUndirectedGraph andEpidemicSimulation, to be placed in the package edu.utoledo.eecs1510.epidemics. The UML diagram for these classes is shown in Figure 2 below. I have provided you with the following files:

• Graph.jar: Java archive containing compiled Node, Edge, Graph, and UndirectedGraphsubclasses based on the solution to Homework Assignment 10.

• xchart-3.6.2.jar: Java archive containing the latest version of the XChart simple charting library for Java. See https://knowm.org/open-source/xchart/ for more info on XChart.

• PlotSeries.java: class with a single static method to plot 3 curves (for susceptible, infected, and recovered) on the same set of axes using XChart.

• TestEpidemic.java: class containing main() method to run the type of simulation shown in Figure 1 above.

Figure 2. UML diagram for this homework assignment. Details of UndirectedGraph class are excluded (see UML diagram from Homework Assignment 10 for details).

EECS 1510 Spring 2020 Sections 009/011/093 Instructor: Dr. Kevin S. Xu Introduction to Object-Oriented Programming

CLASS SPECIFICATION

The specification of the EpidemicUndirectedGraph class is as follows:

The specification of the EpidemicSimulation class is as follows (types of input parameters excluded):

SUBMISSION INSTRUCTIONS

A portion of your grade will be assigned based on adherence to OOP practices. Submit only your fully implemented EpidemicUndirectedGraph.java and EpidemicSimulation.java source files! Place both classes in a package called edu.utoledo.eecs1510.epidemics. Do not include a main() method in your submission!

Since the simulation is a random process, the result each time you run the program will be different. A correctly implemented program should generate SIR curves that look roughly like those in Figure 1 when you run the main() method in TestEpidemic.java. On some runs, however, no outbreak will occur because the initial infected person recovers without infecting anyone, in which case you will see 3 almost flat lines.

### Unformatted Attachment Preview

Student has agreed that all tutoring, explanations, and answers provided by the tutor will be used to help in the learning process and in accordance with Studypool's honor code & terms of service.

This question has not been answered.

Create a free account to get help with this and any other question!

Brown University

1271 Tutors

California Institute of Technology

2131 Tutors

Carnegie Mellon University

982 Tutors

Columbia University

1256 Tutors

Dartmouth University

2113 Tutors

Emory University

2279 Tutors

Harvard University

599 Tutors

Massachusetts Institute of Technology

2319 Tutors

New York University

1645 Tutors

Notre Dam University

1911 Tutors

Oklahoma University

2122 Tutors

Pennsylvania State University

932 Tutors

Princeton University

1211 Tutors

Stanford University

983 Tutors

University of California

1282 Tutors

Oxford University

123 Tutors

Yale University

2325 Tutors