This page will provide a few software utilities to be used for the Battle of the Water Sensor Networks.

Important note:

These utilities are provided “as-is” with no warranty of any kind – use them at your own risk!

These programs are illustrative of those that will be used to quantify the objectives for the contributed designs.
They are being made available only so that contributors can check their results, and it is not implied that the contributors need to integrate these codes into their design process in any fashion.

Please contact us if you notice inconsistencies that you believe are due to coding errors or different interpretations of the rules.

Download setup package: (2,011 KB)
Unzip the zip file and run the setup.exe file. Follow the setup instructions.

Utility #1: Build injection data
This utility will allow the user to create the data needed to evaluate the fitness function for a given sensor layout design for the two network examples.


  1. Select the network: Example 1 or Example 2
  2. Select the number of injections events
    • All nodes and all times: this option will create all possible pollution events, for every node in the network and for every quality time step for 24 hours. Please note that this run is very long, for example 1 it will take several hours and for example 2 – days!
    • All nodes X times: this option will create X injection events for each node of the network at random quality time step. For example, for network 1, selecting a value of 10 will create 130 node X 10 = 1300 events.
    • Random events: this option will create injection events at random nodes of the network at random quality time step. User should set the number of events
  3. Since the calculations for Z2 (Expected Population Affected Prior to Detection) is very time consuming the user can select to not build the Z2 data.
  4. Click the “Build data” button to start the computations and sit back :). The window header will show an estimation of the remaining computation time

Utility #2: Calculate Fitness
This utility will allow the user to calculate the fitness function for a given sensor layout design. There are two programs, one for each of the two network examples.


  1. Before running the Calculate Fitness program the Build injection data program must be used.
  2. Type in the node ID of the sensor location in the text box and press the Add button. Repeat the action for each sensor location.
  3. If you want to remove a sensor from the list, select it and press Remove.
  4. Once you have entered all the sensor’s locations click the Calculate Fitness button. The fitness values for each of the four fitness functions will appear.


  1. Z1, Z2 and Z3 are computed only for detected injection events. If the injection is not detected within the simulation duration (see remark 3) then the injection event is not accounted for when calculating the average values. One should note that it is possible to get a good average for Z1 (or Z2 or Z3) if only a few of the injections are detected but in these cases Z4 will be low!
  2. Injection events starts only at the first 24 hours of the simulation.
  3. The total simulation duration used, for both networks, is 96 hours.
  4. The battle rules did not set weights for the four evaluation measures. It seems that Z1, Z2 and Z3 do not compete but they do conflict with Z4. As WE see it, Z1, Z2 and Z3 should be evaluated compared to Z4 separately as a two dimensional, multiobjective problem.

BWSN design objectives calculation example:
This ZIP file contains sample results for the BWSN objectives (Z1, Z2, Z3 and Z4). The Excel file shows the results of the four objectives for Network #1 and for a single injection event. The MS-Word file contains a few explanations and remarks. (Download)

Support: if you need any support or have any comments please contact Elad Salomons: selad at optiwater dot com or use the contact form. If you want to receive a note when this page updates please drop me a note.

Downloadֲ the two networks used in the BWSN –

One comment on “BWSN
  1. thomas Moller says:

    I want to create an pollution matrix.
    Is this a matrix obtained from of” Utility # 1 Build injection data” for just one flow pattern?

    Can you please give me the source code for creating pollution matrix?
    What commands should I use if I want to have the contamination matrix for different water flow patterns?

Leave a Reply

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.