加压管网优化器

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月

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JTable无法向新创建的列添加值   java如何调整JEditorPane中编辑区域的大小?   Java通过反射确定未知数组中的数组大小   java Intellij Idea有时无法按其预期的方式构建应用程序   java Swing GUI带有IntelliJ错误“contentPane不能设置为null”从终端编译时   如何将这些通用方法调用从C#转换为Java   在null上找不到java属性或字段“index”   从Java HashMap获取整数值时是否需要调用intValue()方法?   java Android谷歌地图获取相机中的图像块   unix无法捕获JAVA中“who m”命令的输出   java,同时将邮件发送到“收件人”标题“我”中的多个收件人   在java中向链表添加未知数量的节点   无法为Heroku上的discord bot设置java端口   java使用Apache HttpClient进行选项请求   与元素类型“ApplicationName”关联的属性“Application Version”需要java Open quote   Android Studio Java中的两个变量求和