Agent-Based Modeling to Simulate Contamination Events and to Analyze
Threat Management Strategies in Water Distribution Systems
Emily M. ZechmanDepartment of Civil EngineeringNorth Carolina State University
Contamination Event Management Strategy
• Management strategy specifies actions and reactions of decision maker– Broadcast no-drink alerts– Flush system– Isolate portion of system– Treat contaminant in-situ
Evaluate a Management Strategy
• Maintain public health
• Maintain fire fighting flows
• Maintain flow to critical care facilities
• Avoid inciting panic due to false alarms
Interaction of Actors during a Contamination Event
Water Distribution
System
Utility Manager
Consumers
Perpetrator
Media
Utilities Operations Staff
Public Health Services
Agent Based Modeling Framework
• Simulate interactions of actors among one another and with water distribution system
• Predict effectiveness of alternative management strategies
Agent Based Model
• A computer program that simulates an actor– Receives information from other agents and the
environment– Has capabilities (set of rules) to decide on an action
Agent Based Model
Environmental Information Action
Agent Based Modeling Frameworkfor WDS Contamination Event
Decision Maker Agent
Demand
Public Broadcast
Unusual Water Quality
at Sensors
Change Hydraulics
Water Distribution
System Model
Exposure
Word-of-mouth
Consumer Agents
156
110 111
45
190117 16
43
97
34 3815
35
58
5
237
22119
36
43
34
138 2
1232
4821
89
675914
9837
54 57 7 11
76 20 34
19
5314
13
4
58
2045
33
1
1
Each Consumer Agent represents 10 households
2510 Residential Consumer Agents
Contaminant Source
Industrial Demand
Residential Demands (# Consumer Agents per node)
37
Illustrative Case Study
Decision Maker Agent
Set of Scenarios
Consumer Agents modeled only
Conservative Decision Maker Agent
Adaptive Decision Maker Agent
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
Decision Maker AgentConsumer Agent
-Drink water once every 4 hrs.
-Ifconsumer agent drinks waterandcontaminant concentration at node > 0 mg/L
then agent is sickened and stops drinking within 2 - 6 hours
Contaminant Source Introduced
12:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
12:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
12:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
4:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
4:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
4:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
5:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
5:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
5:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
6:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
6:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
6:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
7:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
7:20am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
7:40am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
8:00am
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
9:00am
SensorSensor with unusual WQ
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
859 sick consumer agents
794 consumer agents not drinking
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
10:00am
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
Decision Maker AgentConsumer Agent
-If consumer agent stops drinking water, then notify another consumer agent within 10 min - 1 hr
- If agent receives word-of-mouth information, then stop drinking immediately
* Average for 5 random trials
* *
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
Decision Maker AgentConsumer Agent
-If consumer agent receives all-broadcast, then stop drinking within 30 min – 6 hrs.
-If sensors show unusual water quality, then send no-drink broadcast to all consumer agents after 2 hrs.
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
Decision Maker AgentConsumer Agent
-If sensors show unusual water quality, then open hydrant at sensor node after 2 hrs.
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
Decision Maker AgentConsumer Agent
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
6 444 1428
Decision Maker AgentConsumer Agent
-If sensors show unusual water quality, then send targeted broadcast after 2 hrs. Reduce reaction time to 1 hr.
-If consumer agent receives all-broadcast, then stop drinking within 30 min – 6 hrs.
-If consumer agent receives targeted broadcast, then stop drinking within 10 min – 1 hr.
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
6 444 1428
7 375 1437
Decision Maker AgentConsumer Agent
-If sensors show unusual water quality, then add another sensor in the near vicinity after 2 hrs. Reduce reaction time to 1 hr.
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
6 444 1428
7 375 1437
8 400 900
Decision Maker AgentConsumer Agent
-If a sensor shows unusual water quality, then open a hydrant at the sensor node after 2 hrs. Reduce reaction time to 1 hr.
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
6 444 1428
7 375 1437
8 400 900
9 286 1292
Decision Maker AgentConsumer Agent
12:00am
SensorSensor with unusual WQHydrant opened
Contaminant Source Introduced
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
12:20am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
12:40am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:20am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
1:40am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:20am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
2:40am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:20am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
3:40am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
4:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
4:20am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
4:40am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
5:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
5:20am
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
5:40am
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
6:00am
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
7:00am
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
89
5967
13
82
34
43
37
21
SensorSensor with unusual WQHydrant opened
Percentage of Sick Consumer Agents
0 – 20% 20 – 40%40 – 60%60 – 80% > 80%
8:00am
9837
54 57 7
11
76 20 34
19
13
2045
33
1
53
58
1232
48
21
89
5967
13
82
34
43
37
303 Sick Consumer Agents
1175 Consumer Agents Not Drinking
Scenario DrinkWord-of-
mouthBroadcast Reaction
All-Broadcast
Open hydrants
Targeted Broadcast
Add Sensors
Number Sick
Consumer Agents
Number Consumer Agents Not
Drinking
1 872 807
2 706 1246
3 373 2510
4 520 1056
5 339 2510
6 444 1428
7 375 1437
8 400 900
9 286 1292
Decision Maker AgentConsumer Agent
0
500
1000
1500
2000
2500
3000
1 2 3 4 5 6 7 8 9
Scenario
Num
ber
Con
sum
er A
gent
s
Sickened Consumer Agents Consumer Agents Not Drinking
Results for 9 Scenarios
5 6 7 8 9 3 4 1 2
Error bars show range of results for 5 random trials.
Observations and Future Work
• Agent-based modeling framework provides capabilities to model interaction of actors in a water contamination event
• Additional modeling capabilities should be investigated
• Agent-based modeling framework will enable optimization of management strategies
Acknowledgements
• This work is supported by National Science Foundation (NSF) under Grant No. CMS-0540316 under the DDDAS program.
Management Strategies for a Contamination Event
• Strategies based on – Amount of information available– Level and credibility of t threat– Options for containment
• Open fire hydrant flush system• Open/close valves to isolate and flush contaminant• Broadcast to consumers to stop drinking• Inject chemical for in situ treatment
2:50am
SensorSensor with unusual WQHydrant opened
Number of Sick Consumer Agents
0 - 5 5 - 1010 - 2020 - 30 > 30
Evaluating Management Strategies
• Metrics– Measure number of sickened people– Maintain flows for fire fighting and at critical
care facilities
• Water Distribution Model to simulate contaminant plume and actions dictated by management strategy