暴雨雨水管理模型(Storm Water Management Model,SWMM)作为一款免费、开源、功能强大的城市排水系统模拟软件,已经成为高校、科研院所和市政设计单位的首选软件之一。

然而,常规的基于人工试错的SWMM参数定义方法效率非常低,无法解决多个参数的优化取值问题,通常需要对SWMM循环调用或二次开发。常用的开发语言包括C,C#,C++,Matlab,Python等。其中,Python语言简洁性好、易读性以及可扩展性强,非常适合作为SWMM二次开发的入门级语言,并且在此基础上还可以向机器学习领域拓展,具有较好的应用前景。

Python(3.6 or 3.7)环境下运用SWMM主要有两种方法:(1)利用现有软件包(如pyswmm)提供的数据接口进 行模型参数的自定义;(2)对inp文件进行编码和参数自定义。第一种方法简单易操作,缺点是可供调用的数据接口有限;而第二种方法能够对模型中的任一参数进行自定义,缺点是更加复杂。本次博文主要介绍第一种方法,涵盖对Similation,Nodes, Links模块的介绍:

(一)模拟模块(Simulation)

方式一:

>>> from pyswmm import Simulation>>> sim = Simulation('./testmodel.inp')>>> sim.execute()

该方式输出的rpt文件为统计合并后的模拟结果,以及一个out文件,如下所示。

方式二:

>>> from pyswmm import Simulation>>> with Simulation('testmodel.inp') as sim:...     sim.step_advance(300)...     for step in sim:...             print(sim.current_time)2015-11-01 14:05:002015-11-01 14:10:002015-11-01 14:15:002015-11-01 14:20:00

相比于方式一,方式二可以在模拟过程中与模型进行交互,例如在某个时间点对某个参数进行自定义,以及获取任一时刻的模拟结果等,交互性更好。此外,该方法能够生成包含各个时间点模拟结果的rpt文件,以及一个out文件。

(二)节点模块(Nodes)

节点模块的使用方法如下所示:

>>> from pyswmm import Simulation, Nodes>>> with Simulation('./testmodel.inp') as sim:...     node_object = Nodes(sim)...     J1 = node_object["J1"]...     print(J1.invert_elevation)...     print(J1.is_junction())...     for step in sim:...             print(J1.total_inflow)

更多节点模块接口的调用方法详见如下网址:https://pyswmm.readthedocs.io/en/latest/reference/nodes.html.

(三)管线模块(Links)

管线模块的使用方法如下所示:

>>> from pyswmm import Simulation, Links>>> with Simulation('./testmodel.inp') as sim:...     link_object = Links(sim)...     c1c2 = link_object["C1:C2"]...     print(c1c2.flow_limit)...     print(c1c2.is_conduit())...     for step in sim:...             print(c1c2.flow)...             if c1c2.flow > 10.0:...                     c1c2.target_setting = 0.5

更多管线模块接口的调用方法详见如下网址:

https://pyswmm.readthedocs.io/en/latest/reference/links.html.

​pyswmm能够满足工程应用中的部分需求,但是许多重要参数的调用接口并未提供,这就需要采用第二种调用方法,这将在以后的博文中继续讲解。下次博文将会结合研究案例,进一步介绍SWMM耦合优化算法的具体实施过程。

SWMM与Python的那些事 (一)相关推荐

  1. python多线程糗事百科案例

    案例:多线程爬虫 目标:爬取糗事百科段子,待爬取页面URL:http://www.qiushibaike.com/8hr/page/1 要求: 使用requests获取页面信息,用XPATH/re 做 ...

  2. 正则表达式re模式(python爬虫糗事百科热点段子)

    python编程快速上手(持续更新中-) python爬虫从入门到精通 文章目录 python编程快速上手(持续更新中-) python爬虫从入门到精通 非结构化数据与结构化数据提取 概述 非结构化的 ...

  3. 潘石屹 python 知乎_如何看待地产大佬潘石屹微博宣布学习python这件事?对我们有什么启发?...

    补充:潘石屹中午又发了一条微博,解释为什么要学python,基本证实了我的猜测 说实话,看到潘石屹要学python,先是意外,甚至不敢相信,翻他微博亲眼看到这条消息,才确信.房地产大佬,人过五十,想想 ...

  4. 竟然有人用python做这种事 ۦُ۟۟ۖۖۖٛۥۗۙۙۗۡۥٌۚۚۗۛۥۛۚۛۡۥۖۛۛۦُُ۟۟ۖۖۖٛ۟ۗۖۚۥٌُٞۖۛۚ۟ۥٌٌۖۖ۟ۖۦٌ (Python 实现挂机自动锁屏)

    # 基于windows系统 实现思路是检测鼠标坐标超过多久未移动调用系统锁屏# 加载所需模块 import pyautogui,time from ctypes import *# 用于计数 t = ...

  5. python爬虫糗事百科

    #coding:utf-8 import urllib2 import re # 工具类 class Tools(object):remove_n = re.compile(r'\n')replace ...

  6. python参数传递那些事

    一.前言 在python中,函数参数的定义和传递有以下几种方式: 语法 意义 def func(name) 普通参数,可以根据位置匹配,也可以根据key来匹配 def func(name=value) ...

  7. 如何让电脑永不息屏?Python:这事我熟,只需5行代码...

    前言 最近新来的小老弟问我,按照公司规定,电脑只有十分钟就锁屏,但是他不想让电脑在空闲十分钟后锁屏. 于是我问他,是不是想挑战一下公司信息安全? 不过小老弟很机智,来了句公司信息安全大于天,他就是想让 ...

  8. 安装Python那点事,最详细的教程

    我要学编程 小码匠:今天学什么? 老码农:安装环境. 小码匠:为什么还不让我编程啊?我看你明天回来都写代码? 老码农:那是Java的,不是Python的. 小码匠:好麻烦. 安装 小码匠:怎么安装? ...

  9. (python)查看糗事百科文字 点赞 作者 等级 评论

    import requests import re headers = { 'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6. ...

  10. python爬虫案例——糗事百科数据采集

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--糗事百科数据采集 通过python实现糗事百科页面的内容采集是相对来说比较容易的,因为糗事百科不需要登陆,不需要coo ...

最新文章

  1. GigaScience:ASaiM基于Galaxy微生物组分析框架
  2. 开源、开放网络和SDN三者区别—Vecloud微云
  3. 湿度传感器如何工作?
  4. java map初始化方式_java中Map和List初始化的两种方法
  5. 关于stm32F4CAN总线调试
  6. PMP每日三题2022年2月11日
  7. SAP License:外购和自产货物视同销售业务理解
  8. 暴雪2013年内发布linux游戏,只因win8是场灾难?
  9. 转:基于AOP实现Ibatis的缓存配置过期策略
  10. Enterprise Library Policy Injection Application Block 之二: PIAB设计和实现原理
  11. 英特尔第十代处理器为什么不支持win7_为什么7代CPU不支持WIN7,原因是什么
  12. Arduino IDE for ESP8266 项目(1) 点亮灯+按键LED+pwm
  13. 【知识兔】两列Excel数据快速合并为一列,你会哪种方法?
  14. 在东京大学感受_东京最好的街头小吃在哪里找到
  15. 高斯公式_证明_高数
  16. Taro 3.x 开发 APP 记录 (持续记录中。。。)
  17. 【动手学习pytorch笔记】28.机器翻译数据集
  18. python分析方向的第三方库_Python 机器学习方向的第三方库是
  19. String类型——字符串
  20. 日本語トレーニング44

热门文章

  1. Structs详细用法(一)
  2. HCP数据的下载,以及头动文件和CSF文件的所在位置
  3. Abaqus齿轮链条传动仿真案例
  4. 体外诊断(IVD)行业系列四:快速崛起的独立医学实验室
  5. 手机号码归属地查询api [开源]
  6. redhat linux ssh服务,Redhat6开启ssh
  7. Convert excel format exception.You can try specifying the ‘excelType‘ yourself
  8. C#-实现的鼠标钩子
  9. 合成大西瓜小游戏微信小程序源码/微信游戏小程序源码
  10. linux装完系统需要输入密码,在安装Linux系统的过程中,一定要设置root用户的密码 (5.0分)...