Welcome! We have built this library to encourage more researchers to have access to smart stormwater control problems. We want these problems accessible to all populations of researchers — those with experience in controls, but not stormwater; those with experience in stormwater, but not controls; and those without prior experience in either! We have streamlined all of the backend details of running a smart stormwater control problem so that all you have to do is focus on the control algorithm (see below for an example).
To try out how exactly to interact with stormwater networks using our toolbox, we encourage you to first begin with our "toy control problem" which you can access here. Once you feel comfortable with how our toolbox works, we then encourage you really begin to have some fun by interacting with our five benchmarking scenarios: alpha, beta, gamma, delta, and epsilon. These benchmarking scenarios are built using real-world inspired stormwater networks, driving events, and control assets.
To learn more about this work, check out our github repository:
To install and begin working, use:
pip install pystorms
This is how one would go about running a scenario ...
Your control algorithm that generates actions based on state information.
env = pystorms.scenarios.alpha()
done = Falsewhilenot done:
state = env.state()
actions = controller(state)
done = env.step(actions)
For more technical details on what we have developed, and why, please check out our documentation.
If you want to be more involved, please consider the following:
Submit some of your own scenarios to our toolbox! We are looking to expand this library to include far more networks/scenarios with more diverse control needs and that have been implemented with a variety of different hydraulic simulators.
Download our code and hack into it for whatever other needs you may have! We have built this toolbox to be 100% open-source, so if you want to use it for any other application or need that you see fit, by all means, have at it. While the scenarios were built specifically for direct algorithm performance, we have also provided libraries of many other driving events so that you can customize your own research problem.
Continue to follow our work! In the future we plan to (a) develop competitions for novel smart stormwater control problems, and (b) present solutions that have been submitted to us for the scenarios we have developed so you can see how your results perform against others.
Check out our other open-source efforts, including open-storm.org, where we have built open-source sensor nodes for smart stormwater testing and deployment.