SPOT: A Sensor Placement Optimization Toolkit for Drinking Water
Contamination Warning System Design

William E. Hart1, Jonathan W. Berry2, Regan Murray3,

Cynthia A. Phillips4, Lee Ann Riesen5, Jean-Paul Watson6

Abstract

This paper presents SPOT, a Sensor Placement Optimization Tool. SPOT
provides a toolkit that facilitates research in sensor placement optimization and
enables the practical application of sensor placement solvers to real-world CWS
design applications. This paper provides an overview of SPOT's key features, and
then illustrates how this tool can be flexibly applied to solve a variety of different
types of sensor placement problems.

1 Introduction

Contamination warning systems (CWS) have been proposed as a promising approach for the
early detection of contamination events in drinking water distribution systems [1, 2, 3, 22], The
overall goal of a CWS is to detect contamination events in time to reduce potential public health
and economic consequences. Online sensors will be a critical component of a CWS, and a key
element of CWS design is the optimization of the number and locations of sensors at utility.

This paper describes SPOT, a Sensor Placement Optimization Tool for CWS design in water
distribution systems. SPOT integrates a variety of solvers for sensor placement that have been
developed by Sandia National Laboratories and the Environmental Protection Agency, along
with many academic collaborators [5, 6, 7, 8, 9, 10, 11, 12, 18, 23, 24], SPOT includes (1)
general-purpose heuristic solvers that consistently locate optimal solutions in minutes, (2)
integer-programming heuristics that find solutions of provable quality, (3) exact solvers that find
globally optimal solutions, and (4) bounding techniques that can evaluate solution optimality.
SPOT uses a generic solver formulation that allows a user to specify a wide range of
performance objectives for contaminant warning system design, including population-based
public health measures, time to detection, extent of contamination, volume consumed and
number of failed detections. SPOT has been integrated into the Environmental Protection
Agency's Threat Ensemble Vulnerability Assessment (TEVA)-SPOT tool, which supports
graphical analysis of threat assessment and sensor placement. TEVA-SPOT has been used to
develop sensor placement designs for several large U.S. cities.

In general, users may care about more than one of these performance objectives, so SPOT allows
for the specification of constraints that ensure that multiple performance objectives are
simultaneously satisfied. SPOT facilitates the interactive design and analysis of sensor placement
designs. For example, a SPOT user can integrate expert knowledge during the design process by

1	Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-1318; wehart@sandia.gov

2	Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-1318; jberry@sandia.gov

3	USEPA, 26 W Martin Luther King Dr, Cincinnati OH 45268; Murray.Regan@epa.gov

4	Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-1318; caphill@sandia.gov

5	Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-1318; lafisk@sandia.gov

6	Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-1318; jwatson@sandia.gov


-------
specifying required sensor placements or designating network locations as forbidden. Further,
cost considerations can be integrated by limiting the design with user-specified installation costs
at each location.

This paper summarizes the key features of SPOT, and describes the canonical problem
formulation solved by SPOT solvers. This paper also illustrates the flexibility of this framework
through several simple examples. These examples illustrate how SPOT is used to optimize
performance objectives, minimize costs, perform multi-objective analysis, constrain sensor
placements, and perform optimization with limited memory resources.

2 SPOT Overview

SPOT provides a toolkit that facilitates research in sensor placement optimization and enables
the practical application of sensor placement solvers to real-world CWS design applications. A
wide range of sensor placement optimization formulations and solver techniques have been
developed for CWS design in drinking water systems [6, 10, 13, 14, 15, 16, 17, 20, 21],

Although SPOT certainly leverages much of this work, the goal of SPOT is to develop a toolkit
that can incorporate and evaluate a wide range of sensor placement solvers on a broad class of
CWS design problems. The following sections provide an overview of SPOT that illustrates the
flexibility of this toolkit.

2.1	Contaminants and Contaminant Impacts

SPOT supports a very generic problem formulation that relies on contaminant impacts derived
from an external contaminant transport calculation and impact assessment. An impact
assessment is assumed to come from a set of contamination events, each of which represents a
single location and time of contamination. For example, EPA's TEVA tool calculates
contaminant and public health impacts using EPANET for hydraulic and water quality
calculations and epidemiological models to estimate exposure and disease progression [19],

2.2	Performance Objectives

There are many competing CWS design objectives, such as minimizing exposure to
contaminants, minimizing illness, minimizing the spatial extent of contamination, minimizing
sensor detection time, and minimizing CWS costs. SPOT treats each of these objectives as a
separate contaminant impact assessment (e.g. users can have a different impact assessment for
the extent of contamination and the time to detection for a single contaminant). One or more
contaminant impact assessments can be integrated into SPOT, thereby allowing for trade-offs
between different contaminants, as well as different impacts for single contaminants.

2.3	Problem Formulations

The canonical SPOT formulation is to minimize the mean impact of contamination for CWS
design. SPOT also allows for user-specified weights on the expected impact. Further, SPOT
solvers can optimize other performance objectives like worst-case impact and related robustness
performance measures that trade-off mean- and worst-case impacts.


-------
2.4	Limited-Memory Requirement

The expected application platform for SPOT is 32-bit MS Windows workstations. Consequently,
SPOT supports sensor placement solvers that can work with 4GB of memory, even for water
distribution networks with on the order of 10,000 pipes and junctions. Although SPOT's integer
programming solvers require more than 4GB of memory for these large networks, integer
programming heuristics have been developed that solve a related, reduced-memory formulation.

2.5	Flexible Solvers

The rapid solution of large sensor placement optimization is essential to provide users the ability
to explore a wide range of performance objectives and design trade-offs. Fast heuristic methods
are included in SPOT that can reliably and quickly solve the mean impact sensor placement
formulation. Rigorous performance guarantees are also needed to ensure that the final solution
generated by SPOT is the best one possible. In cases where this cannot be guaranteed, methods
have been developed that can quantify the optimality of the final solution.

3 A Canonical Sensor Placement Formulation

A key principle in the development of SPOT has been the development of mathematical sensor
placement formulations that guide the development of subsequent solvers. The canonical
formulation used in SPOT is the mean-impact formulation, which can be expressed as the
following integer program:

min ZaeA a« ^eca daiXai

s-t- Y^ieCa x«-i = 1	Va G A

xai 8i	\/a (z A..i G Ca

EteL s> < p

Si G {0,1}	Vi G L

0
-------
4 Using SPOT

Conceptually, the process of sensor placement can be decomposed into four steps:

1.	Performing water quality simulations

2.	Computation of impact values

3.	Sensor placement optimization

4.	Analysis of final sensor placement(s)

Although SPOT contains components supporting all of these steps, our examples illustrate how
SPOT can be used for sensor placement optimization (step 3).

The common interface to SPOT's sensor placement solvers is the sp script. The following
sections illustrate the use of sp, to solve the canonical sensor placement formulation described in
Section 3 and related sensor placement problems. These examples use EPANET network
example 3. The sp script has many different options, but the following are commonly used:

—network=

The name of the network that will be analyzed
--objective= 

The sensor placement objectives.

--ub=,

A constraint on the maximal value of an objective.

—costs=

A file containing costs for the installation of sensors
--sensor-locations=

A file containing information about whether network ids are feasible
for sensor placement, and whether a sensor placement is fixed at a
given location.

--solver=

Specifies the type of solver that is used to find sensor placement(s).
--compute-bound

Only compute a bound on the value of the optimal solution.

4.1 Example 1 - A Simple Example

Example 1 shows how to use a heuristic solver to minimize the extent of contamination (EC)
while limiting the number of sensors (NS) to no more than 5.

$	/bin/sp --path=../../../bin --path=../mod --network=testl --

objective=ec --ub=ns,5

Number of Contamination Events: 97
Number of Contamination Impacts: 9458

Validating input for heuristic solver
Number of sensors=5
Obj ective=ec
Statistic=mean

Impact file=/home/wehart/src/spot-th/builds/teva-spot-

s/spot/packages/sp/test/testl ec.impact

Delay=0


-------
Running iterated descent heuristic for ^perfect* sensor model
Iterated descent completed - sensors written to file=testl.sensors

Sensor placement id:

846930886

Number of sensors:

5

Total cost:

0

Sensor node IDs:

19 28 54 63 75

Sensor junctions:

119 141 193 207 239

Impact File:

/home/wehart/src/spot-th/builds/teva-spot-

s/spot/packages/sp/test/testl ec.impact

Number of events:

236

Min impact:

0.0000

Mean impact:

8478.9674

Lower quartile impact:

0.0000

Median impact:

6949.0000

Upper quartile impact:

12530.0000

Value at Risk (VaR) ( 5%):

25960.0000

TCE ( 5%) :

33323.2833

Max impact:

42994.8000



The first output lines summarize the statistics of this network example. Subsequent lines until the
first dashed line are generated by the heuristic optimization solver; for simplicity, this text will
be omitted in subsequent examples. The information between the dashed lines is a summary of
the best sensor placement found. The sensor junctions correspond to the junction labels provided
by the user (e.g. from the EPANET input file). Various impact statistics are given, including the
mean (which is optimized here), and maximum (worst) impact amongst all contamination events.
Robust optimization criteria are also given: Value at Risk (VaR) is the value of the 95 quartile
(the impact that is greater than 95% of the impacts), and the Tail Conditional Expectation (TCE)
is the expectation of the worst 5% of the impacts.

The heuristic solves the sensor placement formulation described in Section 3. Consequently, the
optimality of this solution is evaluated by solving the linear programming relaxation of this
integer program. This can be done in SPOT using the PICO solver:

$	/bin/sp --path=../../../bin --path=../mod --network=testl --

objective=ec --ub=ns,5 —solver=pico --compute-bound

Number of Contamination Events: 97
Number of Contamination Impacts: 9458

Objective lower bound: 8478.96737288

This computation demonstrates that the heuristic has found an optimal solution. This can be
confirmed by running SP with the PICO solver but without the compute-bound option. Without
this option, PICO find a globally optimal solution, though for large applications it may take too
long to run.


-------
4.2 Example 2 - Optimizing Costs

The canonical SPOT formulation makes the tacit assumption that the cost of each sensor
placement is equivalent. In practice this is not likely to be true for a variety of reasons (e.g. see
Berry [8]). SPOT supports the generic specification of sensor placement costs using the costs
option, which is used in conjunction with the 'cost' performance objective. For example,
suppose that the file cost_info contains the following:

119 2.0
141 2.0
193 2.0
207 2.0
239 2.0

default 1.0

This cost information can be used to constrain our previous example. In this case, if the original
locations were too expensive, none of them would be used if other sensor placement locations
were cheaper.

$ /bin/sp --path=.

./../. ./bin -

-path=../mod --network=testl --

objective=ec --ub=cost,

10

—solver=pico

--costs=cost info

Number of Contamination

Events: 97



Number of Contamination

Impacts: 9458



Sensor placement id:



13195



Number of sensors:



10



Total cost:



10



Sensor node IDs:



74 62 38 50

32 16 18 10 24 21

Sensor junctions:



237 206 163

185 149 113 117 101 127 121

Impact File:



/home/wehar

t/src/spot-th/builds/teva-spot-

s/spot/packages/sp/test/testl ec.impact



Number of events:



236



Min impact:



0.0000



Mean impact:



5207.0453



Lower quartile impact:



0.0000



Median impact:



3610.0000



Upper quartile impact:



10416.0000



Value at Risk (VaR) (

5%)

: 14985.0000



TCE (

5%)

: 17332.3583



Max impact:



20170.0000





Similarly, SPOT can minimize costs or the number of sensors while maintaining a given
performance. The following example minimizes the number of sensors while requiring that the
extent of contamination (EC) be no more than 5000 feet.


-------
$ /bin/sp --path=.

./../../bin -

-path=../mod --network=testl --

objective=ns --ub=ec,5000

—solver=pico



Number of Contamination Events: 97



Number of Contamination Impacts: 9458



Sensor placement id:

13459



Number of sensors:

10



Total cost:

0



Sensor node IDs:

75 63 28 38

50 33 54 17 11 21

Sensor junctions:

239 207 141

163 185 151 193 115 103 121

Impact File:

/home/wehar

t/src/spot-th/builds/teva-spot-

s/spot/packages/sp/test/testl ec.impact



Number of events:

236



Min impact:

0.0000



Mean impact:

4675.6708



Lower quartile impact:

0.0000



Median impact:

3610.0000



Upper quartile impact:

6984.0000



Value at Risk (VaR) ( 5%)

: 14490.0000



TCE ( 5%)

: 17874.4083



Max impact:

22450.0000





4.3 Example 3 - Multi-Objective Analysis

The canonical SPOT formulation optimizes a single objective subject to a cost constraint. This
formulation can be generalized to include additional constraints that limit the impact of other
performance objectives. The following example illustrates how the first example can be
extended to re-optimize the solution with respect to a different objective. First, we evaluate the
final sensor placement generated by the heuristic solver using the mass consumed (MC) impact
values.

$ ../../../bin/evalsensor

testl.sensors testl mc.impact

Sensor placement id:



846930886

Number of sensors:



5

Total cost:



0

Sensor node IDs:



19 28 54 63 75

Sensor junctions:





Impact File:



testl mc.impact

Number of events:



236

Min impact:



0.0000

Mean impact:



43636.7076

Lower quartile impact:



220.0020

Median impact:



1909.9500

Upper quartile impact:



105031.0000

Value at Risk (VaR) (

5%)

: 144271.0000

TCE (

5%)

: 144345.0000

Max impact:



144477.0000




-------
Since this sensor placement was generated by optimizing for EC, the MC impacts are likely to be
non-optimal. The following optimization minimizes MC while keeping EC close to its optimal
value. Note that statistics for both impact values are reported, which show that the constraint has
been satisfied while improving (minimizing) the mean MC impact.

$ /bin/sp --path=../../../bin --path=../mod --network=testl --
objective=mc --ub=ns,5 —ub=ec,9000.0

Number of Contamination Events: 97
Number of Contamination Impacts: 9458

Sensor placement id:

1681692777

Number of sensors:

5

Total cost:

0

Sensor node IDs:

2 19 54 63 75

Sensor junctions:

15 119 193 207 239

Impact File:

/home/wehart/src/spot-th/builds/teva-spot-

s/spot/packages/sp/tes

t/testl mc.impact

Number of events:

236

Min impact:

0.0000

Mean impact:

39963.3542

Lower quartile impact:

220.2160

Median impact:

1546.2700

Upper quartile impact:

86439.9000

Value at Risk (VaR) (

5%): 144271.0000

TCE (

5%): 144276.3333

Max impact:

144335.0000

Impact File:

/home/wehart/src/spot-th/builds/teva-spot-

s/spot/packages/sp/tes

t/testl ec.impact

Number of events:

236

Min impact:

0.0000

Mean impact:

8844.6453

Lower quartile impact:

0.0000

Median impact:

6949.0000

Upper quartile impact:

13502.0000

Value at Risk (VaR) (

5%): 25960.0000

TCE (

5%): 35007.4500

Max impact:

42994.8000



SPOT supports an arbitrary number of such constraints. However, in practice only one
additional side constraint can be effectively solved.

4.4 Example 4 - Constraining Sensor Locations

Properties of the sensor locations can be specified with the sensor-locations option. This
option specifies a file that can control whether sensor locations are feasible or infeasible, and
fixed or unfixed. For example, suppose that the file locations contains

infeasible 119 141 193 207 239
fixed 161


-------
Then the following example shows that these restrictions lead to a solution with a value that is
worse than the first example (above) which has an optimal value of 847 8. 9674.

$ /bin/sp --path

=../../../bin --path=../mod --network=testl --

objective=ec --ub=ns,5 -

-sensor-locations=locations

Number of Contamination

Events: 97

Number of Contamination

Impacts: 9458

Sensor placement id:

1804289383

Number of sensors:

5

Total cost:

0

Sensor node IDs:

17 33 37 50 66

Sensor junctions:

115 151 161 185 211

Impact File:

/home/wehart/src/spot-th/builds/teva-spot-

s/spot/packages/sp/test/testl ec.impact

Number of events:

236

Min impact:

0.0000

Mean impact:

9338.7119

Lower quartile impact:

0.0000

Median impact:

7640.0000

Upper quartile impact:

14120.0000

Value at Risk (VaR) ( 5

%): 27335.0000

TCE ( 5

%): 32282.3000

Max impact:

45300.0000



4.5 Example 5 - Limited-Memory Solvers

A key issue for the practical application of SPOT is the memory requirements for SPOT's
heuristic and integer programming solvers. The memory required for sensor placement solvers
can be significantly impacted by the number of junctions at which sensor placement is feasible,
the number of contamination events that are modeled, and the extent to which these events
impact a large fraction of the network. SPOT's solvers can be effectively applied to applications
with 100s of junctions and pipes on 32-bit workstations with 4GB of RAM. However, larger
applications often exceed available memory resources. SPOT includes several mechanisms that
reduce the solver memory requirements, at the expense of a slower run time and possible
inaccuracies in the problem formulation. These modified solvers are able to optimize
applications with 10,000s of junctions and pipes using only a few gigabytes of memory.

Two related strategies have been developed for applying SPOT's integer programming solver
with limited memory; see Berry et al. [4] for further details on these strategies. The first strategy
involves combining contamination events that have very similar impacts. This approach
integrates two or more impact files into an aggregated impact file that contains representative
impact events. Thus, this can be viewed as a preprocessing step for SPOT's optimizers.

The second strategy involves a reformulation of the integer programming formulation to reduce
the number of decision variables and constraints that need to be processed. This method
leverages the fact that many impact values are similar, and thus it makes sense to aggregate


-------
similar impact values together. Two methods are supported for this aggregation process in
SPOT: (ratio) - limits the ratio of the smallest impact to largest impact in a set that is aggregated
together, and (percent) - uses an aggregation threshold that is based on the percent of the
difference of the largest to smallest possible impacts.

Table 1 illustrates the effect of these two aggregation strategies on the size of the integer
program, and the total memory needed to solve the problem (using the PICO integer
programming solver included with SPOT). Further, this table shows that the final solution
computed with the ratio aggregation can be used to compute a lower bound on the value of the
best sensor placement. Note that the zero percent aggregation is the default mechanism used in
SPOT, since this performs a simple aggregation without impacting the final solution.

Percent

Ratio

#

Variables

#

Constraints

#

Nonzeros

Final
Solution

Lower
Bound

Memory
(Kb)

None

None

9558

9466

37421

21781.98

21781.98

39704

0

0.00

4505

4413

22184

21781.98

21781.98

25904

25

0.00

700

608

9127

21804.45

0

18568

50

0.00

571

479

8255

21887.27

0

18028

75

0.00

562

470

7102

21781.98

0

18164

100

1.00

4505

4413

22184

21781.98

21781.98

25904

100

0.75

2010

1918

13089

21781.98

15922.66

20164

100

0.50

1452

1360

11102

21781.98

10513.44

19496

100

0.25

1084

992

9326

21781.98

5125.84

19096

100

0.12

946

854

8568

21804.45

2429.90

18964

Table 1.

mpact o:

? percent and ratio aggregation on a small sensor placement example (EPANET

network 3). 100-percent aggregation with 0-ratio results are omitted, since the integer program
becomes trivially non-interesting in that case.

The sensor placement heuristic solvers generally require much less memory than the integer
programming solver. However, these solvers employ a large matrix of precomputed values that
speeds up the solution of large problems. The heuristic-representation option in SPOT
enables this precomputation to be stored as a sparse matrix, which trades off runtime
performance for space savings.

5 Discussion

The examples above illustrate the flexibility of SPOT's solvers, and the broad applicability of
SPOT's canonical problem formulation. SPOT also supports advanced model formulations for
robust optimization and modeling sensor placement with imperfect sensor detections. However,
these capabilities cannot be effectively applied to large-scale real-world applications, and thus
they remain a subject of ongoing research.

SPOT sensor placement solvers have been integrated into the TEVA-SPOT tool. This tool has
been used for CWS design studies at several large U.S. cities, and it is being used in ongoing
studies within the EPA's Water Sentinel program. We expect that much of this software will be
released under an open-source license in 2007. Contact William Hart (wehart@sandia.gov) for
further information.


-------
Acknowledgements

This work was funded by the National Homeland Security Research Center at the United States
Environmental Protection Agency. We thank Rob Janke and Tom Taxon for feedback on SPOT
and for their patience while issues are being resolved. Sandia is a multipurpose laboratory
operated by Sandia Corporation, a Lockheed-Martin Company, for the United States Department
of Energy under contract DE-AC04-94AL85000.

Bibliography

[1]	Interim Voluntary Guidelines for Designing an Online Contaminant Monitoring System,
American Society of Civil Engineers, 2004.

[2]	Review of State-of-the-Art Early Warning Systems for Drinking Water, U. S.
Environmental Protection Agency, 2005.

[3]	WaterSentinel System Architecture, U. S. Environmental Protection Agency, 2005.

[4]	J. Berry, R. Carr, W. E. Hart and C. A. Phillips, Scalable water network sensor placement
via aggregation, World Environment and Water Resources Congress, Tampa Florida,
2007.

[5]	J. Berry, R. D. Carr, W. E. Hart, V. J. Leung, C. A. Phillips and J.-P. Watson, On the
placement of imperfect sensors in municipal water networks, Proc. Water Distribution
System Symposium, 2006.

[6]	J. Berry, L. Fleischer, W. E. Hart, C. A. Phillips and J.-P. Watson, Sensor Placement in
Municipal Water Networks, J. Water Planning and Resources Management, 131 (2005),
pp.237-243.

[7]	J. Berry, W. E. Hart, C. A. Phillips and J. Uber, A general integer-programming-based
framework for sensor placement in municipal water networks, Proc. World Water and
Environment Resources Conference, 2004.

[8]	J. Berry, W. E. Hart, C. A. Phillips, J. G. Uber and T. M. Walski, Water quality sensor
placement in water networks with budget constraints, Proc. World Water and
Environment Resources Conference, 2005.

[9]	J. Berry, W. E. Hart, C. A. Phillips and J.-P. Watson, Validation and assessment of
integer programming placement models, Proc. World Water and Environment Resources
Conference, 2005.

[10]	J. Berry, W. E. Hart, C. E. Phillips, J. G. Uber and J.-P. Watson, Sensor placement in
municiple water networks with temporal integer programming models, J. Water
Resources Planning and Management, 132 (2006), pp. 218-224.

[11]	J. W. Berry, W. E. Hart and C. A. Phillips, Scalability of integer programming
computations for sensor placement in municipal water networks, Proc. World Water and
Environmental Resources Congress, American Society of Civil Engineers, 2005.

[12]	R. Carr, H. J. Greenberg, W. E. Hart, G. Konjevod, E. Lauer, H. Lin, T. Morrison and C.
A. Phillips, Robust optimization of contaminant sensor placement for community water
systems, Mathematical Programming Series B, 107 (2006), pp. 337-356.

[13]	R. A. Deininger, The Survival of Father Rhine, Journal of the American Water Works
Association, 70 (1987), pp. 78-84.

[14]	A. Kessler, A. Ostfeld and G. Sinai, Detecting Accidental Contaminations in Municipal
Water Networks, Journal of Water Resources Planning and Management, 124 (1998), pp.
192-198.


-------
[15]	A. Kumar, M. L. Kansal and G. Arora, Discussion of Detecting Accidental
Contaminations in Municipal Water Networks', Journal of Water Resources Planning and
Management, 125 (1999), pp. 308-310.

[16]	B. H. Lee and R. A. Deininger, Optimal Locations of Monitoring Stations in Water
Distribution System, Journal of Environmental Engineering, 118 (1992), pp. 4-16.

[17]	B. H. Lee, R. A. Deininger and R. M. Clark, Locating Monitoring Stations in Water
Distribution Systems, Journal, Am. Waterworks Assoc. (1991), pp. 60-66.

[18]	R. Murray, W. Hart and J. Berry, Sensor network design for contamination warning
systems: Tool and applications, Proc. AWWA Congress on Water Security, 2006.

[19]	R. Murray, J. G. Uber and R. Janke, Model for estimating acute health impacts from
consumption of contaminated drinking water, J. Water Planning and Resources
Management, 132 (2006), pp. 293-299.

[20]	A. Ostfeld and E. Salomons, Optimal Layout of Early Warning Detection Stations for
Water Distribution Systems Security, Journal of Water Resources Planning and
Management, 130 (2004), pp. 377-385.

[21]	M. Propato, O. Piller and J. Uber, A Sensor Location Model to Detect Contaminations in
Water Distribution Networks, Proc. World Water and Environmental Resources
Congress, American Society of Civil Engineers, 2005.

[22]	A. Roberson and K. Morley, Contamination Warning Systems for Water: An Approach
for Providing Actionable Information to Decision-Makers, AWWA, 2005.

[23]	J.-P. Watson, H. J. Greenberg and W. E. Hart, A multiple-objective analysis of sensor
placement optimization in water networks, Proc. World Water and Environment
Resources Conference, 2004.

[24]	J.-P. Watson, W. E. Hart and R. Murray, Formulation and optimization of robust sensor
placement problems for contaminant warning systems, Proc. Water Distribution System
Symposium, 2006.


-------