自来水管道连接规划模型论文

上传人:ni****g 文档编号:455615882 上传时间:2023-05-17 格式:DOC 页数:30 大小:353KB
返回 下载 相关 举报
自来水管道连接规划模型论文_第1页
第1页 / 共30页
自来水管道连接规划模型论文_第2页
第2页 / 共30页
自来水管道连接规划模型论文_第3页
第3页 / 共30页
自来水管道连接规划模型论文_第4页
第4页 / 共30页
自来水管道连接规划模型论文_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《自来水管道连接规划模型论文》由会员分享,可在线阅读,更多相关《自来水管道连接规划模型论文(30页珍藏版)》请在金锄头文库上搜索。

1、自来水管道连接规划问题自来水管道连接规划模型(一)摘要:自来水是人们日常生活中不可缺少的生活要素,我们分析自来水管道连接最优问题,即在自来水管道铺设过程中在绕开障碍物的前提下的最短路径问题,使自来水管道将各个供水点用最短路径链接。根据对目标点的数据进行筛选与分析,先用面积法排除障碍区域,再对剩余点采用Kruskal算法生成最优路的方案。初始给定的供水点中存在位于障碍区域中的点,需要采用合理的方法排除障碍区域中的点。本文将采用面积分析的方法,提供一种解决障碍区域判定的切实可行的方法,在二维坐标系上标定各点,障碍区域用由阴影覆盖的凸多边形表出,通过对点坐标之间的向量运算判定各点是否位于阴影区域,最

2、终通过Matlab编程实现。在确定并剔除障碍区中的点位后,采用Kruskal算法生成最优路径,对于通过阴影区域的线段,将其权值设定为无穷大,最终通过编程、绘图,给出管道最优连接方案,解决本问题。最后我们对模型进行了整体评价,并提出改进之处。(二)关键词:管道连接 面积法 障碍点筛选 最短路Kruskal算法 权值 最小生成树一. 问题重述自来水是人们日常生活中不可缺少的生活要素,然而自来水管网的组建却有很多问题需要解决。一般来说,我们假设管网中任意两个用户之间存在直线段相连,但是在连接过程中,有些区域是必须绕开的,这些必须绕开的区域我们称为障碍区域。表1给出了若干个可能的用户的地址的横纵坐标,

3、可能的用户的含义是:如果用户的地址不在障碍区域内,那么该用户就是需要使用自来水的用户(即有效用户),否则如果用户的地址在障碍区域内,那么该用户就是无效用户(即不要将该用户连接在网络中)。表2-表5是分别是4个障碍区域必须要覆盖的点的坐标,而对应障碍区域就是覆盖这些要覆盖的点的最小凸集。(1) 请您判定表1中那些用户为有效用户。(2) 请设计算法筛选有效用户之间的有效线段。(3)请设计一个算法将有效用户用有效线段连接起来,并且连接的距离总和最小。表1(见附录一)表2障碍区域1必须要覆盖的点的坐标顶点序号顶点的横坐标顶点的纵坐标13.2060 12.9166217.457119.337734.75

4、76 20表3障碍区域2必须要覆盖的点的坐标顶点序号顶点的横坐标顶点的纵坐标150 30253.746548.4490346.922257.1195433.320739.8050543.112356.3187表4障碍区域3必须要覆盖的点的坐标顶点序号顶点的横坐标顶点的纵坐标154.698270253.746590346.922280表5障碍区域4必须要覆盖的点的坐标顶点序号顶点的横坐标顶点的纵坐标190752809537080二模型假设1, 用户之间以直线连接;2, 障碍区中的用户可以忽略,认为是无效用户;3, 以管道总距离最小为目的;4, 障碍区域是障碍顶点围成的凸多边形区域;5, 在非障碍

5、区用户之间可确保用直线连接,且直线不通过障碍区域;三符号说明表6 论文符号说明符号表示对象A用户点的坐标B障碍区1的各顶点坐标C障碍区2的各顶点坐标D障碍区3的各顶点坐标E障碍区4的各顶点坐标SIGN记录各用户点是否在障碍区,若在对应位置记为1;若不在,则对应位置记为0OUTSIGN无效用户点的序号N有效用户点的个数NUM记录任意两用户点之间可用线段连接起来且不过障碍区的线段DIS连接的长度M最小生成树的点以及连接的信息sum最小生成树管道的总长四问题分析先排除障碍区域。如果用户点位于凸边型障碍物之外,则为有效用户,否则为无效用户。再将任意两个有效用户连接,如果连接通过障碍区域之内,则为无效线

6、段。最后通过有效点和有效连接生成最小生成树,并且连接有效用户点,画出连接路线图形,并计算生成树所成长度。根据对模型的合理假设,障碍区域即为已知若干障碍区顶点围成的凸多边形,故解决此问题的关键在于在已建立的二维坐标系中,寻找到一种合理的算法能够判定出点是否位于障碍区域中。通过直观判断,阴影区域的构成由表7给出:表7 障碍区域构成障碍区域编号构成1由3个无效用户坐标点围成的三角形2由5个无效用户坐标点围成的凸五边形3由3个无效用户坐标点围成的三角形4由3个无效用户坐标点围成的三角形运用面积法进行筛选点,对所有点进行筛选,找到并排除障碍区域中的无效用户,再把任意两个有效用户点之间用线段连接,运用向量

7、法设计筛选线段的程序,筛选出所有不过障碍区的线段。最后设计程序,将所有有效用户点连接起来,并使管道总距离最小。这是一个典型的最小生成树问题,但相较以往最小生成树问题又有着其特别之处,以往的无障碍的情况下只需要使用弗洛伊德算法即可。但因为障碍区域的干扰,这使得坐标系并非是一个连通区域,该无法直接使用。这就需要我们在对问题进行合理假设的前提下,对已有算法进行改良。我们通过对穿过障碍区的线段赋权值为无穷大的方法,利用Kruskal算法,生成最优路径。五模型的建立与求解: 5.1.问题一的模型建立和求解运用向量的方法求解障碍区面积S若障碍区是三角形,对应各顶点坐标分别为(x1,y1),(x2,y2),

8、 (x3,y3)。则a=(x2-x1,y2-y1),b=(x3-x1,y3-y1)。由于三角形面积S=|a|*|b|*sin/2,向量a,b外积的模长|ab|=|a|*|b|*sin;则有S=|ab|/2;若障碍区为五边形,对应点为(x1,y1),(x2,y2), (x3,y3), (x4,y4),(x5,y5)。则划分成三个三角形,各三角形的顶点分别为(x1,y1),(x2,y2), (x3,y3);(x3,y3), (x4,y4),(x5,y5);(x1,y1),(x3,y3), (x5,y5)。再用求三角形面积的方法求解即可。求用户点与任意两个同一障碍区的顶点构成三角形的面积之和S1判断

9、有效用户 如果S=S1,则该用户在障碍区内,为无效用户。反之为有效用户。则筛选完毕的结果如下: 在障碍区的点的序号分别为:4 23 36 99。 无效用户的信息为:(4.0000,48.5982,33.3951);(23.0000,81.3166,87.4367); (36.0000,41.8649,41.1953); (99.0000,6.4781,17.0793);有效用户的个数是:96。 100个点是否在障碍区的情况如下图:5.2连接有效用户 求出过任意两个有效用户点的直线m与过各障碍区中任意两个顶点的直线L的交点坐标,再运用向量法判断该交点是否在以上述两有效用户点为端点上的线段m1和以

10、上述障碍区顶点为端点的线段L1上,然后判断过该两个有效用户点的连接是否有效。运用矩阵的方法求解两直线之间的交点坐标 如果任意两个有效用户点的坐标分别为A(x1,y1)、B(x2,y2),同一障碍区任意两个顶点坐标为M(x3,y3)、N(x4,y4)。则两直线方程分别为:(1)(2);则由解线性方程组的方法有,线性方程组的的系数矩阵为: ;在运用Matlab求解该线性方程组时,不妨把 分别设为: 可以求得=A。判断线段是否为有效线段若求得的交点坐标为P(x,y),则通过向量关系PM=PN,可以求的。若0,则该线段为有效线段;若0,则要考虑向量关系PA=PB,若0,则该线段为有效线段,否则,该线段

11、为无效线段。5.3问题三的模型建立与求解若要在N个用户之间连接自来水管道,由于每一个用户与其余N-1个用户之间都可能连接自来水管道。因此,在N个用户之间,最多可能连接N(N-1)/2条自来水管道然而,在连接N个用户之间的管道时,最少只需连接N-1条管道。也就是说只需要N-1条管道线路就可以把N个用户之间的自来水管道连通。现在要考虑在连接N个用户的自来水管道的同时要保证所有的管道长度之和最短,这就涉及了最优化的问题。利用Kruskal算法思想设计Matlab程序进行最小生成树所需边的筛选,并且设计算法将筛选出来的构成最小生成树的各边连接起来,求出最短路径长度,并画出连接图形。利用Kruskal算

12、法思想求解最小生成树设计96个用户之间的带权图,并作出邻接矩阵DIS,再根据求得的有效线段与无效线段对邻接矩阵进行修改,将邻接矩阵中对应无效线段的位置的值修改为inf,可以得到一个新的邻接矩阵DIS。接下来,用冒泡排序法对所有有效线段长度按从小到大的顺序进行排序。这时,需要借助Kruskal算法进行最小生成树的计算。然后把最小生成树对应边的线段长度、起点、终点信息记录在矩阵EE中。生成最小生成树时,从长度最短的边开始选取。首先不妨设一个196的标记向量l用于记录被选取的点的序号,初始状态向量l的各元素依次为各用户序号,在选取线段为边后,将对应两点的序号m与n取最小值,并将向量l中所有与m位置元

13、素相等的元素位置及所有与n位置的元素相等的元素位置都赋值为该最小值,如此循环知道向量l中所有元素均相等时停止;同时可以设一向量R来依次记录被选点的序号,直到所有用户点被无重复地被记录。在按线段长度从小到大的顺序选择边时,设线段端点用户的序号为m与n。这时需要考虑如下4种情况:如果在向量R中m和n均没有被记录,则该线段可以被选为最小生成树的边,将对应线段的信息记录在矩阵EE中,同时在R中添加记录m和n的值,并按照上述步骤更新向量l。如果在向量R中m被记录而n没有被记录,则该线段可以被选为最小生成树的边,将对应线段的信息记录在矩阵M中,同时在R中添加记录n的值,并按照上述步骤更新向量l。如果在向量

14、R中n被记录而m没有被记录,则该线段可以被选为最小生成树的边,将对应线段的信息记录在矩阵EE中,同时在R中添加记录m的值,并按照上述步骤更新向量l。如果在向量R中m和n均被记录,则需要借助向量l来判断是否该线段可以被选为最小生成树的边:a. 如果向量l中对应的m位置与n位置的元素值相等,则该线段不是最小生成树的边,直接跳过到下一步判断。b. 如果向量l中对应的m位置与n位置的元素值不相等,则该线段是最小生成树的边,将对应线段的信息记录在矩阵M中,同时只需要更新向量l。通过上述方法,即可产生最小生成树,其各边信息记录在矩阵M中。 设计Matlab程序求出最小生成树长度并将各边连接起来要计算最小生成树的长度,只需要借助for循环将M矩阵中记录长度相加即可。具体算发如下: sum=0;for i=1:p-1 sum=sum+M(1,i);endsum可以求得最小生成树的长度为:sum= 653.0196;最后,借助plot函数画出最小生成树的图形。算法如下: hold on; for i=1:100 x=A(i,2); y=A(i,3); plot(x,y,o)end f

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号