加压管网优化器
ppno的Python项目详细描述
加压管网优化器v0.1.0
2019年-安德烈斯·加西亚·马丁内斯(ppnoptimizer@gmail.com) 根据apache许可证2.0授权。http://www.apache.org/licenses/
依赖关系
要求: scipy v1.2(www.scipy.org/)和pygmo(https://esa.github.io/pagmo2/)
目的
该程序优化由EPANET2模型定义的压力管网的管径。其结果是选择必要的管道,以满足网络指定节点的最小压力要求。
运行
在命令提示符中键入:“python ppno.py problem.ext”;其中“problem.ext”是数据问题定义文件。
问题定义
文件输入具有与epanet inp文件相似的结构,它必须具有扩展名ext。节由6个节标题标签(“[])表示。这些是:标题,inp,选项,管道,压力和目录。文件以结束行[结束]结束。除了闭合线之外,各部分不必具有预定顺序。
标题部分允许包含对问题的描述。它不是强制性的,并且对扩展行没有限制。 例子: [标题] Fujiwara和Khang在河内的例子,水资源研究,1990年
inp部分包含epanet输入文件(inp)的名称。它必须包含系统中的完整路径,除非它存储在当前路径中。不建议使用空间。 例子: [输入] C:“我的路径”\han.inp
选项部分包含计算选项。必须指定两个选项:首先,算法从一行开始,以单词“algorithm”开头,后跟以下代码:
- “gd”,选择梯度下降;
- “de”,选择差分进化;和
- “da”,选择双重模拟退火。
- “nsga2”选择nsga-ii。 其次,通过在以“波兰语”开头的一行中选择“是”,可以稍微改进小型网络中的最终解决方案。否则,必须注明“否”。 例子: [选项] 方法GD 波兰语是
管道部分包含要根据标识符“id”标注尺寸的管道,每个标识符在epanet模型中都有,然后是要应用的一系列管道。显然,不需要指定模型中存在的所有管道。每根管子排成一行。 例子: [管道] PIP1聚氯乙烯 PIP2聚氯乙烯 PIP3 FD
压力部分包含必须保证最小压力的节点。根据epanet模型,每个节点由其标识符“id”表示,然后是最小压力。不需要指定模型的所有节点。 例子: [压力] 节点2 20.0 节点4 20.0 节点7 5.0
“目录”部分定义了要用于调整大小的管道系列。每行包含以下字段:
- series,定义每个系列名称的字符串;
- 直径,管道的内径;
- 粗糙度,根据EPANET模型中规定的单位确定的摩擦系数;以及
- 成本,每单位管道。 例子: [目录] FD 90.0 0.100 1.00标准差 FD 125.0 0.100 1.56标准差 FD 150.0 0.100 1.75 聚氯乙烯304.8 0.025 45.73 聚氯乙烯406.4 0.025 70.40
必须考虑在每个系列中包含不同类型的材料(不同的粗糙度)。零直径相当于“消除管道”选项。类似地,在现有的直径管道中,不更换管道包括将价格设置为0。 与epanet文件类似,“;”字符是注释标记,这一行上的所有文本都将被忽略。此外,只包含空格或只包含字符“;”前空格的行将被忽略。
结果
程序的结果显示在控制台上,程序将在新的epanet文件中返回标注的网络。解决的文件名包括根据所使用的计算方法的一种指示符:“已解决的问题”、“已解决的问题”、“已解决的问题”或“已解决的问题”。 如果选择对最终解决方案进行优化,则通过“抛光”选项,将生成一个附加文件,该文件的名称包括:“+抛光”。
示例
示例文件夹中包含几个示例问题。
昆卡,2019年6月