Computational Procedure
Chapter Overview
Once all input data have been specified, the user must define the number of iterations and times of day when the hazard will occur. Note that the time of day selected is the time of hazard occurrence, not the time of warning. All computations are relative to the hazard occurrence.
The computation process is the same for each alternative in LifeSim. The program will:
- Calculate agricultural damages if they are included as part of the simulation.
- Prepare alternative data.
- Run simulation for the user-defined number of iterations for each hazard occurrence time selected.
- Redistribute the population based on first alert received and mobilization methods.
- If included, calculate life loss of exposed population.
- Calculate direct economic damages if included as part of the simulation.
- The average life loss over all iterations is used to determine average labor loss and capital loss for indirect economic damages.
This chapter defines a LifeSim simulation from initiation to the final state of evacuees (clear, no hazard, or low/high hazard). This chapter also discusses how the input data are prepared for each alternative and how the population is redistributed using evacuation groups and vertical evacuation. Agricultural damage, property damage, and ECAM are based on maximum conditions and/or duration.
Preprocessing - Preparation of Alternative Data
Preprocessing the Hydraulic Data
Before the warning and evacuation simulation can begin, the hydraulic data are processed to define a flood time-series at each structure and road segment. This process extracts the necessary data from the hydraulic input during the simulation process. When time-dependent hydraulic data are used as input (all options except Summary Grids), depth and velocity hydrographs are extracted from the hydraulic data at each structure and road. All other necessary hydraulic parameters can be derived from those data such as arrival time, instantaneous depth times velocity, or duration of flooding. The preprocessed hydraulic data are saved with the model and can be used for multiple simulations as long as there are no changes to the road network, structure inventory, or hydraulic input.
In order to conserve computational time and memory, the depth and velocity hydrographs are simplified to reduce the number of data points. The Ramer-Douglas-Peucker algorithm is used to reduce the hydrograph points as demonstrated in Figure. The algorithm concentrates data points in regions of the hydrograph with sharp changes and thins the data points where change is minimal between points and a linear interpolation can represent the curve. LifeSim uses a default tolerance of 0.01 for eliminating points. In Figure, the original hydraulic data contained 6,000 data points (blue line) but was reduced to 27 points (orange) using the Ramer-Douglas-Peucker algorithm. LifeSim applies a linear interpolation between the remaining data points with very little error introduced (black line). The strategy is particularly useful for reducing memory during long dry periods where zero depth data storage is not needed. Fewer data points also significantly reduce simulation lookup times when comparing hydraulic data to the willingness to enter a flooded road, for example.

In structures, the depth is sampled from the terrain at the structure point. For roads, the midpoint of the road is used as the sampling point and the depth is then reduced by any vertical offset. The midpoint assumption may result in problems for particularly long or steep roads (see Linework). Conditions may change along the length of road that should be represented with more detail. In this case, users should divide the road into multiple representative segments. As demonstrated in Figure, the Roslyndale Ave single road segment is now sampled at two locations: once at the midpoint of the dry segment and once at the midpoint of the flooded segment.

Preprocessing the Road Network
The road network is imported as GIS linework (a series of polyline segments for roads and points for destinations) and pre-processed for simulation. LifeSim first assigns each node in the network a node identification (ID) value. Then, LifeSim identifies road segments as either one-way or two-way. If the road is identified as two-way, the road is split into two components: one segment in one direction and another in the reverse direction, as shown in Figure.

On the other hand, if the road is identified as one-way, only a single segment and direction are needed. Segments are connected based on their coincident start point or endpoint locations in GIS. Each line segment has several properties besides the starting and ending nodes including length, unimpaired travel time (at free-flow speed), and other attributes used to determine the fastest path to a destination.
Destinations are related to the road network by road segments with the shortest perpendicular distance to the destination points. If a destination is located nearest to a line segment's endpoint (side A in Figure), then LifeSim identifies that node as a destination. If instead a destination is between the start and endpoint of a segment, then the segment is split so that traffic can approach the destination from both sides. A new node is inserted where the line was broken and it becomes the destination node (side B in Figure).

Now that all the road and destination connections are represented, LifeSim will find the fastest path from any node along the road network to a destination. The optimal path (a.k.a. shortest travel time) to a destination is found using Dijkstra's shortest path algorithm with a binary heap data structure to improve efficiency. From each node, the next node on the fastest path to a destination is stored, resulting in a table similar to Figure. Although several pathfinding mechanisms are available (A*, D*, and others), Dijkstra's method was selected for its ability to quickly determine shortest paths for all nodes in the network.
The lookup table is used to determine the fastest route to a destination from any node in the network. For example, the shortest path from node #5 in Figure is 5, 4, 2, 1, 0, destination. In LifeSim, the user may select to limit the destinations an evacuee will initially consider. For example, evacuation orders may dictate to stay away from a certain area. To accommodate the categorization, a unique table is constructed for each EPZ (where destination assignments are made). The full network graph includes all allowable destinations with the fastest path to a destination defined for each node.

During the simulation, the starting road network is updated with traffic density and flood information. Vehicles traveling the road network may encounter traffic or flooding, in which case they would potentially re-route their course (more details in Evacuating with Traffic Simulation). For example, if a traffic jam is on the segment from node 2 to 1, a re-route may select a diversion through node 3 as the fastest way to reach the destination.
Preprocessing the Structure Inventory
The structure inventory includes attributes assigned to each structure. Before an evacuation iteration starts, the structure inventory must be updated with additional information such as:
- Structure stability criteria based on the user-defined rules.
- Which EPZ the structure is in.
- Which output polygon the structure is in (for summarizing results).
- Initial evacuation path from the structure to a destination.
Each structure in the inventory is geographically associated to its assigned EPZ polygon, output summary polygon, and closest road segment. The EPZ assignment allows each structure to be associated with an initial road network graph. Once the closest road to a structure is identified, the initial path for evacuation can be defined. Each of the two nodes on the nearest road segment has a defined path to the nearest destination. The faster of the two directions is selected based on the travel time to those nodes from the entry location on the road, plus the time from that node to the destination.
Preprocessing for Each Iteration
Each iteration is a complete simulation of the warning, evacuation, and subsequent consequences for a single event. After each iteration a sampling of all the uncertain parameters occurs. This sampling happens at the beginning of each new iteration. The information in Preprocessing - Preparation of Alternative Data above is defined once for each alternative because it does not change with each new iteration. This is the outermost loop of LifeSim's Monte Carlo simulation, as shown graphically in Figure.
The random sampling process begins with preparing iteration seed numbers for use in a random number generator. The reason for seeding the random number generator is to make results reproducible with the same input. Otherwise two users with identical input could have different results. Each iteration is given a seed number that is quasi-random, unique, and reproducible. For example, if the alternative specifies 100 iterations, the model will create 100 quasi-random seed numbers in a seed set.

Each alternative may be repeated for different times of hazard occurrence with the same number of iterations each. The same seed set is used for each time of day so that the i-th iteration for one time of day has the same seed as all i-th iterations for other times of day. This allows users to compare results more directly between times of day (all else being equal) and produces a discernable pattern in the results. Note the middle two loops of Figure.
Within each iteration, a random number generator is defined for sampling uncertainty and seeded with the iteration's random seed number. Then the warning, evacuation, and consequences simulation proceeds to its end and the next iteration begins.
The Monte Carlo simulation allows users to see the impact of uncertain parameters on the range of model results. Confidence in the results is built as several iterations with different parameters show agreement. More discussion of the uncertainty sampling is included in Uncertainty and Sampling Methods with an exhaustive list of parameters sampled during each iteration.
Note that this process is not testing for convergence on some parameter, but merely a user-defined number of iterations which provides output as a distribution of results. The number of iterations specified is important. It is up to the user to determine if enough iterations are computed to reach convergence of results. The user must balance the increased run time from each additional iteration with the accuracy and confidence gained in the results.