Real-time Control of Stormwater Networks using Horizon Planning

Ann Arbor's Stormwater Network

network

State of Stormwater

stormwater

Larger Infrastructure

network Chicago Sewers (4 Billion USD)

Urban Flooding

flooding

Smarter Stormwater Network

stormwater

Real-time Control using Horizon Planning

  1. Model of the network
  2. Algorithms
    • Centralized Control
    • Distributed Control
  3. Results
  4. Future work

Network Model

Network ~ $G(N,A)$

  • Nodes $(N)$: Storage elements in the network
    • Max Capacity for $i^{th}$ node : $C_i$
    • Volume at time $t$ in $i^{th}$ node : $V^t_i$
    • Outflow at time $t$ from $i^{th}$ node : $x^t_i$
    • Inflow at time $t$ to $i^{th}$ node from rain : $q^t_i$
  • Links $(A)$: Routing Elements
    • Max flow carrying capacity in $i^{th}$ link : $u_i$
    • Total flow through $i^{th}$ link for $T$ horizon : ${Vx}^T_i$

Network dynamics

  • Mass balance $$ V_i^t = V_i^{t-1} + q_i^{t} + \sum_{j} x_{ji}^{t-\delta_{ji}} - \sum_{j} x_{ij}^{t}$$

$\delta_{ji}$ is the travel time between nodes

  • Physical constraints on outflows from nodes $$ q_{out} \leq \sqrt{2 \times g \times water\ depth} \times C_D $$
In [5]:
## Linearizing square root
height  = np.linspace(0,1000,100)/100    # (volume/area)
outflow = np.sqrt(2*9.81*height)         # Generate the outflows 
coeffws = np.polyfit(height, outflow, 1) # Get the first order polyfit 
plt.plot(height, outflow, label = "True")
plt.plot(height, coeffws[0]*height + coeffws[1], label = "Linearized")
plt.ylabel("Outflows (cu.m per sec)");plt.xlabel("Water Level (m)");plt.legend()
Out[5]:
<matplotlib.legend.Legend at 0x10dc92828>

Linearized constraint $$ q^t_{out} \leq 1.13047751 \times V^t_i/A_i + 3.65949363 $$

Control Algorithm

  1. Centralized Control : Single Master Problem
  2. Distributed Control : Master Problem and a set of sub-problems

Centralized Control Algorithm

Objective Function $$ \min \sum^N_{i} \sum^T_t V_i^t $$ Constraints

Mass Balance: $$ V_i^t = V_i^{t-1} + q_i^{t} + \sum_{j} x_{ji}^{t-\delta_{ji}} - \sum_{j} x_{ij}^{t}\ \text{for}\ \forall t\ \text{and}\ \forall i \in N$$ Flow thresholds: $$ x_{ij}^t \leq u_{ij}\ \text{for}\ \forall t\ \text{and}\ \forall ij \in A$$

Outflow limitation: $$ x_{ij}^t \leq f(V_{ij}^{t-1}) \ \text{for}\ \forall t\ \text{and}\ \forall ij \in A$$

Distributed Control Algorithm

network

Master Problem Objective $$ \max \sum^N_i V_{ij}^i $$ Constraints

Mass Balance: $$ V_i = V_i^0 + \sum_{j} V_{ji} - \sum_{i} V_{ij} $$ Maximum Volume Movement: $$ V_{ij} \leq T \times u_{ij} $$

Sub Problem $$ \max \sum^T_t x_{ij}^t $$ Constraints

Mass Balance: $$ V_i^t = V_i^{t-1} + q_{i}^t - \sum_j x_{ij}^t $$ Physical Constraints: $$ x_{ij}^t \leq 1.13047751 \times V^t_i/A_i + 3.65949363 $$ Constraint from Master Problem: $$ \sum_t x_{ij}^t \leq V_{ij} $$

$ q_i^t $ inflows into the node

Results :

Three Ponds

Centralized Controller

3ponds

Centralized Controller : Coordination

3ponds

Distributed Controller

dist_controller

Issues to be addressed

  1. Outflow is limited
  2. Spikes in the flows
  3. Horizon time

Thank you.