暴雨雨水管理模型(Storm Water Management Model,SWMM)作为一款免费、开源、功能强大的城市排水系统模拟软件,已经成为高校、科研院所和市政设计单位的首选软件之一。当前,SWMM在科研与工程实践中的应用主要集中在以下5个方面:1. 排水系统设计与优化改造;2. 调蓄池设计与优化改造;3. 泵站集群控制与优化调度;4. 低影响开发设计;5. 内涝模拟。基本涵盖了城市水环境管理的方方面面,其重要性不言而喻。然而,常规的基于人工试错的SWMM参数定义方法效率非常低,无法解决多个参数的优化取值问题,通常需要对SWMM循环调用或二次开发。常用的开发语言包括C#,C++,Matlab,Python等,其中Python语言简洁性好、易读性以及可扩展性强,非常适合作为SWMM二次开发的入门级语言,并且在此基础上还可以向机器学习领域拓展,具有较好的应用前景。因此,本文主要介绍python环境下的SWMM调用。
python(3.6 or 3.7)环境下运用SWMM主要有两种方法:(1)利用现有软件包(如pyswmm)提供的数据接口进行模型参数的自定义;(2)对inp文件进行编码和参数自定义。对比来说,第一种方法的优点为简单易操作,缺点是可供调用的数据接口有限;而第二种方法的优点是能够对模型中的任一参数进行自定义,非常灵活,缺点是更加虽然复杂。本次博文主要介绍第一种方法,涵盖对Similation,Nodes, Links模块的简要介绍:
(一)模拟模块(Simulation)
方式一:
该方式输出的rpt文件为统计合并后的模拟结果,以及一个out文件,如下所示。
方式二:
相比于方式一,方式二可以在模拟过程中与模型进行交互,例如在某个时间点对某个参数进行自定义,以及获取任一时刻的模拟结果等,交互性非常好。此外,该方法能够生成包含各个时间点模拟结果的rpt文件,以及一个out文件。
(二)节点模块(Nodes)
节点模块的使用方法如下所示,更多接口调用方法请见https://pyswmm.readthedocs.io/en/latest/reference/nodes.html。
(三)管线模块(Links)
管线模块的使用方法如下所示,更多接口调用方法请见https://pyswmm.readthedocs.io/en/latest/reference/links.html。
pyswmm能够满足工程应用中的部分需求,但是许多重要参数的调用接口并未提供,这就需要采用第二种方法,这将在以后的博文中继续讲解。下次博文将会结合案例介绍SWMM耦合优化算法的具体实施过程。