发明内容
有鉴于此,本发明提供了一种考虑管网可靠性和阀门成本的布局设计和优化方法,可以得到不同成本下的最优阀门布局优化方案,满足实际工程需要。
本发明提供一种供水管网阀门布局设计和优化方法,包括以下步骤:
S1、将管网中的阀门以及管点抽象成点,将管段抽象成边,构建结点-连边图(NE图);
S2、在NE图中利用广度优先搜索识别关断单元(Segment),所述关断单元为阀门关闭后形成的最小管网区域,所述关断单元记录了其包含的边集合和点集合;
S3、新建一个容器,用于记录已计算的布局方案和对应的SV图,若容器未满,将步骤S2中识别的关断单元抽象为图的顶点,将连接两个关断单元的阀门抽象为边,新建Segment-Valve(SV图),若容器已满,则通过新增阀门和移除阀门对已构建完成的SV图进行局部修改,实现SV图的重构;
进一步地,所述SV图的顶点记录了其表示的关断单元的编号、该关断单元内的用户用水量以及管段长度,所述SV图的边记录了阀门编号信息。
进一步地,基于已经构建完成的SV图,通过新增阀门和移除阀门来生成新的SV图,具体过程如下:
新增阀门关断单元分裂算法:在NE图中新增阀门,并修改SV图的顶点、边和邻接表信息;判断新增阀是否为内部阀,在NE图中从需要判断的阀门连接的边出发,搜索其所在的或连接的关断单元,若搜索过程中阀门被访问了两次,那么该阀门为内部阀,否则为边界阀;若新增阀为内部阀,则不会发生分裂,否则发生分裂,将原关断单元分裂为从新增阀的某一条边出发搜索到的新关断单元newSeg以及原关断单元中剩余部分oldSeg,具体过程为:(1)新建关断单元newSeg,所述关断单元newSeg在NE图中从新增阀的某条边出发进行搜索识别得到,newSeg的用水量为搜索到的结点的用水量之和,长度为搜索到的管段长度之和,oldSeg的用水量和长度分别为原关断单元的用水量和长度减去newSeg的用水量和长度;(2)因为新增阀可能会导致内部阀转换为边界阀,此时SV图中没有阀门对应的边,遍历在搜索关断单元newSeg时遇到的所有边界阀,若此边界阀由内部阀转换得到,则需要新增一条newSeg和oldSeg之间的连边,对于其余的边界阀,在分裂前是与oldSeg相连的,分裂后将断开与oldSeg的连接并与newSeg相连,需要修改SV图中的边和邻接表;(3)修改关断单元包含的管段和结点信息,搜索到的管段和结点就是newSeg的管段和结点信息,在原关断单元的结点集合中移除搜索到的结点,再加上新增阀的结点即得到oldSeg的结点,在原关断单元的管段集合中移除搜索到的管段,再加上新增阀连接的新管段即得到oldSeg的管段;
移除阀门关断单元合并算法:判断移除阀是否为内部阀,若在SV图中没有与所述移除阀对应的边,那么该阀门为内部阀,否则为边界阀;若移除阀为内部阀,则不会发生合并,否则进行合并,将移除阀两端连接的关断单元newSeg以及oldSeg合并生成新的关断单元,具体过程为:(1)合并后的新的关断单元的用水量和长度分别是合并前的关断单元oldSeg以及newSeg的用水量和长度之和,并删除SV图中表示newSeg的顶点;(2)移除newSeg与oldSeg之间的所有边,修改newSeg与其余顶点相连的边,将它们还原回与oldSeg相连;(3)修改合并后关断单元包含的管段及结点信息,新的关断单元的管段和结点就是合并之前两个关断单元中管段及结点的并集;(4)在NE图中移除阀门,包括对NE图的顶点、边、以及邻接表进行修改。
S4、利用所述SV图计算供水管网系统的加权欠缺供应量;
进一步地,所述步骤S4的具体步骤为:
S41、确定所述SV图的割点;
S42、计算每一个关断单元的欠缺供应量;
进一步地,对于所述SV图中的非割点,欠缺供应量就是所述非割点所表示的关断单元本身的用水量,对于所述SV图中的割点,需要断开与其余点的联系后再计算欠缺供应量;
S43、计算供水管网系统的加权欠缺供应量:
其中,DSi表示第i个关断单元发生事故后,供水管网服务中断造成的欠缺供应量,li表示第i个关断单元包含的管段长度,ltotal表示管网总长度,n表示关断单元总数。
S5、利用所述NE图、SV图以及加权欠缺供应量基于NSGA-II算法求解得到最优的阀门布局方案集合。
进一步地,所述步骤S5中NSGA-II算法的目标函数是加权欠缺供应量和每一种阀门布局方案的成本。
进一步地,所述步骤S5的具体步骤为:
S51、初始化种群:对阀门候选点进行编码,在NE图中搜索已有阀门连接的边,将可以添加阀门的位置作为基因,采用二进制编码方式,在初始化种群时,每个基因随机取值;
S52、选择,交叉和变异,得到优化后的阀门布局方案;
S53、计算步骤S52中优化后的阀门布局方案的加权欠缺供应量和成本,作为下一次选择的标准;
S54、若当前迭代次数小于设定值,则跳到步骤S52继续迭代,否则输出最终得到的Pareto最优解集,包括阀门应放置的管段位置信息。
本发明提供的技术方案带来的有益效果是:本发明主要面向旧管网改造问题,提出了一种适用性更广的阀门布局优化方法,在考虑经济成本的条件下,可以通过增加阀门有效降低加权欠缺供应量,提高管网可靠性;本发明提出的阀门布局设计和优化方法只需对SV图进行局部修改,便可实现SV图的重构,在计算加权欠缺供应量时,利用图论中的割点,可以有效地降低算法的时间复杂度;本发明不只适用于新管网的阀门布局设计,也可以用于现有管网的改造工程,实现阀门布局的设计和优化,效率良好。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
请参考图1,本发明的实施例提供了一种供水管网阀门布局设计和优化方法,包括以下步骤:
S1、将管网中的阀门以及管点抽象成点,将管段抽象成边,构建NE图,请参阅图2;
S2、在NE图中利用广度优先搜索识别关断单元,所述关断单元是指阀门关闭后形成的水流流通的最小管网区域,所述关断单元记录了其包含的NE图中的边集合和点集合;
具体地,首先在NE图中选择一条边进行访问,然后从这条边的两端结点出发搜索边和顶点,一旦遇到阀门结点,就停止该方向的搜索,把访问到的边和顶点记录到同一个关断单元中,当不能再搜索到新的边和顶点时,说明这个关断单元已经识别完毕;同时,用队列记录访问过程中遇到的阀门,每个阀门有且仅有两条边与之相连,这两条边可能均已被访问,也可能只有一条边被访问过,逐个移除队列中的阀门,直到找到包含未访问边的阀门,并将这条未访问边作为下一个关断单元识别的起点,重复上述过程,当记录阀门的队列为空时算法终止。
S3、将关断单元抽象为图的顶点,将连接两个关断单元的阀门抽象为边,构建SV图,请参阅图3,对应图1所示NE图中识别到的5个关断单元,所述SV图的顶点记录了每个关断单元的编号、关断单元内的用户用水量和该单元包含的管段长度,所述SV图的边记录了阀门编号信息,由于两个关断单元之间可能有多个阀门连接,实际上SV图中两个顶点之间可能存在多条连边;
需要说明的是,常规构建SV图的方法需要搜索整个NE图,时间复杂度为O(N+E),其中N表示NE图中顶点的数量,E表示NE图中边的数量,在遗传算法中采用迭代实现种群的进化时,需要多次构建SV图,常规方法每一次都需要遍历整个NE图来构建SV图,显然十分耗时,且构建完成的SV图只能使用一次,导致内存中将存在大量无用的SV图。鉴于此,本实施例利用一个容器记录已计算的布局方案和对应的SV图,当容器未满时直接新建SV图,当容器已满时,则基于已经构建完成的SV图,通过新增阀门和移除阀门来生成新的SV图,具体过程如下:
内部阀与边界阀的识别:内部阀是指在管网的环状部分,如果只安装有一个阀门,水流可以从环状部分的两侧流入,无论阀门关闭还是打开,都不会起到阻断水流的作用,这样的阀门位于关断单元的内部,称之为内部阀;边界阀是指除了内部阀之外的其余阀门,这样的阀门连接着两个关断单元;判断一个阀门是否为内部阀,在NE图中从这个阀门连接的边出发搜索其所在的或连接的关断单元,若搜索过程中阀门被访问了两次,那么该阀门为内部阀,否则为边界阀,请参阅图4,图中V4为内部阀;
新增阀门关断单元分裂算法:在NE图中新增阀门,并修改SV图的顶点、边和邻接表信息;判断新增阀是否为内部阀,若是则不会发生分裂,否则发生分裂,将原关断单元分裂为从新增阀的某一条边出发搜索到的新关断单元newSeg以及原关断单元中剩余部分oldSeg,具体过程为:
(1)新建关断单元newSeg,所述关断单元newSeg在NE图中从新增阀的某条边出发进行搜索识别得到,newSeg的用水量为搜索到的结点的用水量之和,长度为搜索到的管段长度之和,oldSeg的用水量和长度分别是原关断单元的用水量和长度减去newSeg的用水量和长度;
(2)因为新增阀可能会导致内部阀转换为边界阀,此时SV图中没有阀门对应的边,遍历在搜索关断单元时遇到的所有边界阀,若此边界阀由内部阀转换得到,则需要新增一条newSeg和oldSeg之间的连边,对于其余的阀门,在分裂前是与oldSeg相连的,分裂后将断开与oldSeg的连接并与newSeg相连,需要修改SV图中的边和邻接表;
(3)修改关断单元包含的管段和结点信息,搜索到的管段和结点就是newSeg的管段和结点信息,在原关断单元的结点集合中移除搜索到的结点,再加上新增阀的结点即得到oldSeg的结点,在原关断单元的管段集合中移除搜索到的管段,再加上新增阀连接的新管段即得到oldSeg的管段;
移除阀门关断单元合并算法:判断移除阀门是否为内部阀,需要说明的是,移除阀门时不需要在NE图中搜索关断单元去判断内部阀,只需判断在SV图中有没有与所述移除阀对应的边,若没有那么该阀门为内部阀,否则为边界阀;若是则不会发生合并,否则进行合并,将移除阀两端连接的关断单元newSeg以及oldSeg合并生成新的关断单元,具体过程为:
(1)合并后的新的关断单元的用水量和长度分别是合并前oldSeg与newSeg的用水量和长度之和,并删除SV图中表示newSeg的顶点;
(2)移除newSeg与oldSeg之间的所有边,修改newSeg与其余顶点相连的边,将它们还原回与oldSeg相连;
(3)修改合并后关断单元包含的管段及结点信息,新的关断单元的管段和结点就是合并之前两个关断单元中管段及结点的并集;
(4)在NE图中移除阀门,包括对NE图的顶点、边、以及邻接表进行修改。
分裂与合并的示意图见图5,可以看作由左图中的关断单元1分裂为右图中的关断单元1和5,也可以看作由右图中的关断单元1和5合并为左图中的关断单元1。
S4、利用所述SV图计算供水管网系统的加权欠缺供应量;
具体地,请参考图6,所述步骤S4的具体步骤为:
S41、求解所述SV图的割点;
如果在图中移除某一顶点之后,图不再连通,分为两个或两个以上连通子图,那么这个顶点就是割点。割点的求解方法由Tarjan提出,通过图的深度优先搜索来实现。
S42、计算每一个关断单元的欠缺供应量;
所述欠缺供应量是指因服务终止后无法正常供应的用水量,对于SV图中的非割点,欠缺供应量就是该非割点所表示的关断单元本身的用水量;对于SV图中的割点,需要断开与其余点的联系后再计算欠缺供应量,计算方法如下:
在步骤S2中初始化SV图时,SV图的顶点中记录了对应的关断单元的用水量以及管段长度,将所有关断单元的用水量相加得到管网的总用水量T,将所有关断单元的管段长度相加得到管网的总长度ltotal。首先备份SV图中的该割点与其余点的连边,然后从SV图中断开该割点与其余点的连边,此时SV图不再连通,而被分割为多个连通子图。从水源单元出发,搜索到可以正常供水的关断单元,求出这些关断单元的累计用水量U,那么这些关断单元隔离后系统无法供应的用水量为R=T-U,即得到该割点所表示的关断单元的欠缺供应量,最后恢复该割点与其余点的连边。
S43、计算供水管网系统的加权欠缺供应量,计算公式为:
其中,DSi是第i个关断单元发生事故后,供水管网服务中断造成的欠缺供应量,li是第i个关断单元包含管段的长度,ltotal是管网总长度,n是关断单元总数。
S5、利用NE图、SV图以及加权欠缺供应量基于NSGA-II算法求解得到最优的阀门布局方案集合。
NSGA-II是Deb提出的一种多目标优化方法,NSGA-II利用非支配排序算法和拥挤度共同参与选择,不需要设定共享参数,并且加入了精英保留机制等优点。下面结合本发明实施例提供的供水管网阀门布局设计和优化方法对其做详细说明。
请参阅图7,利用NSGA-II算法求解最优的阀门布局集合的流程图,目标函数为加权欠缺供应量和每一种阀门布局方案的成本,本实施例中单个阀门的成本的计算公式为:
C=-0.0085d2+9.4566d+114.74
其中,C表示单个阀门的成本,d表示阀门口径。
具体地,所述步骤S5的具体过程为:
S51、初始化种群;
首先对安装阀门的位置候选点进行编码,本实施例通过在NE图中搜索已有阀门连接的边,将可以添加阀门的位置作为基因,采用二进制编码方式,具体过程为:在实际工程中,一般将阀门安装在管段的两端,对于已有阀门的管段,每个阀门连接了两条长度不同的边,在短边的两侧都不能再增加阀门,长边靠近阀门的一侧也不能增加阀门,在编码之前,筛选出不能安装阀门的位置,条件是阀门所在的短边的两侧和长边靠近阀门的一侧;每一个基因表示管段上可以添加阀门的一个位置,其中基因为管段编号的两倍表示该管段的起点,为两倍加一则表示该管段的终点,每个基因还对应一个基因值,所述基因值为0或1,0表示该位置不安装阀门,1表示安装阀门;
S52、选择、交叉和变异,得到优化后的阀门布局方案;
首先,计算管网可靠性:请参考图8,用一个容器记录之前计算过的个体,所述个体表示一种阀门布局优化方案,这个容器的大小需提前设定,每次需要计算管网可靠性时,首先判断容器是否已满,如果容器未满,则搜索整个NE图,构建新的SV图,在计算完加权欠缺供应量之后将其添加到容器中;如果容器已满,在容器中找到一个与当前个体最相似的个体,个体之间的差异用不同基因的个数来定义,找最相似的个体是为了通过新增或移除最少的阀门来实现对SV图的修改。
具体地,对于两个个体l1和l2,假设l1为当前要计算的个体,l2为记录中与l1最相似的个体,那么l1中基因值为1且l2中基因值为0的基因所表示的是需要新增的阀门,反之则是要移除的阀门。通过最相似的个体,在记录中可以找到对应的SV图,对SV图执行分裂合并操作,就可以得到当前个体对应的SV图,进而计算出当前个体的加权欠缺供应量。同时,因为已经将最相似个体对应的SV图修改为当前个体对应的SV图,所以在记录中用当前个体替换掉最相似个体。
选择采用二元锦标赛选择,选择的标准是拥挤度比较算子,即每次在父代种群中随机选择两个个体,由拥挤度比较算子选择一个拥有交叉权利的父代个体;交叉是指选择两个有交叉权利的父代个体,对于每一个基因,有一个0-1之间的随机数r来决定是否交换父代个体的基因,如果随机数r>0.5,则交换,如果r<0.5,则不交换;变异是对基因值进行操作,当随机数r<0.01时,基因发生变异,即基因的值由0变为1,由1变为0。
具体地,请参阅图9,其中Pt为上一代的父代种群、Qt为上一代的子代种群,种群规模均为N,首先将Pt、Qt合并得到规模为2N的种群,并进行快速非支配排序:找出群体中非支配解集,记为第一非支配层F1,定义该层所有个体的非支配系数为1,然后再从这些个体出发,寻找第二非支配层F2,依次进行分层,非支配序数越小,个体代表的解决方案越好;然后按照非支配排序结果选取新一代的父代种群Pt+1,比如直接将F1、F2选入作为新一代的父代,若此时还未达到种群规模N,则需要将F3中的一部分再选入,选入的标准为拥挤距离较大的个体,最后利用新一代的父代种群Pt+1进行选择、交叉和变异产生新的子代种群Qt+1;需要说明的是,新一代种群Pt+1和Qt+1将作为下一次迭代的输入,执行相同的操作,直到最大的迭代次数,输出最后一代的结果作为最优解。
其中,拥挤度比较算子定义如下:同一非支配层的个体,初始化拥挤距离为0,根据目标函数的值进行排序,对于两个边缘个体,拥挤系数设为无穷大,对于中间的个体,按下面的公式进行计算:
其中,L[i+1].m和L[i-1].m是指在目标m排序结果中与个体i相邻的两个体。
和
是指目标m的最大值与最小值。
拥挤度比较算子指的是对于不同非支配层的个体,选择非支配层较低的个体,如果两个体在同一非支配层,选择拥挤距离较大的个体。
S53、计算步骤S52中优化后的阀门布局方案的目标函数(加权欠缺供应量和成本),并作为下一次选择的标准;
S54、若当前迭代次数小于设定值,则跳到步骤S52继续迭代,否则输出最终得到的Pareto最优解集,包括阀门应放置的管段位置信息。
最终通过NSGA-II计算得到的是不同成本下的阀门最优组合,请参阅图10,图中每个点表示在对应成本下的最优阀门布局方案,这些解决方案包含了阀门放置的管段和结点信息,图11为最优解集中的一种阀门布局方案。
在本文中,所涉及的前、后、上、下等方位词是以附图中零部件位于图中以及零部件相互之间的位置来定义的,只是为了表达技术方案的清楚及方便。应当理解,所述方位词的使用不应限制本申请请求保护的范围。
在不冲突的情况下,本文中上述实施例及实施例中的特征可以相互结合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。