通信网络的设计问题_第1页
通信网络的设计问题_第2页
通信网络的设计问题_第3页
通信网络的设计问题_第4页
通信网络的设计问题_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通信网络的设计问题摘 要本文针对通讯网络设计问题,使用图论中最小生成树法、节点排除法、网络故障分析法、对比分析法等方法,分别构建普里姆(prim)模型、节点故障模型、链路故障模型等模型,使用matlab软件编辑算法,得到通讯网络总费用最省的铺设方案、可靠性条件下最省铺设方案以及综合条件下最省铺设方案。针对问题一要求,具体要求为使得通信网络的总铺设费用最省,首先使用了简化模型分析、反证法等方法,证明最小生成树算法能测算无向图遍历节点的最省方案,其次应用最小生成树法中的普里姆(prim)算法构造通讯网络总费用最省模型使用matlab软件编程,得到最优铺设方案并作图。针对问题二要求任意一个结点出现故

2、障时,其它结点间仍然能够保持通信畅通的可能性都达到90%时最省铺设方案设计问题,首先使用节点排除法进行处理,找到重要节点,利用树图将节点分类,再通过分类失效节点与有效节点连接达到通畅性要求,最后使用matlab软件编程得出节点故障模型下最省铺设方案。针对问题三要求,任意一条链路被破坏时,能够保持通信畅通的结点都能够达到90%时最省铺设方案设计问题,首先找到重要链路,并分析链路影响的节点,用树图将节点分类,再通过分类失效节点与有效节点连接达到通畅性要求,最后使用matlab软件编程得出链路故障模型下最省铺设方案。针对问题四要求,综合考虑网络的可靠性以及铺设费用确定合理的铺设方案问题,首先对比分析

3、问题二与问题三的节点分类,得出节点稳定性比链路稳定性更重要的结论;再通过节点故障模型分别构造通信畅通的可能性都达到85%、90%、95%时所对应的最低铺设费用,使用matlab软件编程,得到综合考虑下的铺设方案。本文后续对模型进行了误差分析。还基于对问题四中可靠性不仅仅与节点和链路的稳定性有关,还与节点的度有关,故引进节点的度对模型进行改进,并利用蚁群算法建立综合目标下的铺设模型;最后对模型做出了纵向的推广和横向的推广。关键词:网络通讯设计;最小生成树法;故障分析法;蚁群算法;matlab §1 问题的重述一、背景知识传统的通信网络是由传输、交换和终端三大部分组成。传输是传送信息的媒

4、体,交换是各种终端交换信息的中介体,终端是指用户使用的话机、手机、传真机和计算机等。现代电信网是由专业机构以通信设备(硬件)和相关工作程序(软件)有机建立的通信系统,为个人、企事业单位和社会提供各类通信服务的总和。现在计算机网络技术在各个领域的应用范围已经逐步广泛起来,其发展也在不断的推动人类社会逐渐走向信息时代。网络技术的发展不仅促进了社会生产力的提高,也为人们的生活带来了很大的方便。然而,与此同时也存在着很多不足,诸如安全隐患、信息漏洞等,这些对于人们的工作和生活造成了很大的影响。我们在需要在研究通信网络铺设问题时的费用问题时,也要充分考虑其的可靠性。可靠性是其重要的整体指标,通信网络的可

5、靠性不仅与通信设备、链路有关,而且还与网络结构有关。由于网络结构的复杂多变,通信网络的可靠性分析一直是个棘手的问题。二、相关资料180个节点之间的距离表和铺设线路的单位费用表(见附表1);三、要解决的问题问题1要使得通信网络的总铺设费用最省,请建立问题的数学模型,设计求解算法,给出铺设方案,并讨论方案的可靠性;问题2考虑到通信网络结点的可靠性,若要求任意一个结点出现故障时,其它结点间仍然能够保持通信畅通的可能性都达到90%,请建立问题的数学模型,设计求解算法,并给出使总铺设费用最少的铺设方案;问题3:考虑到通信网络链路的可靠性,若要求任意一条链路被破坏时,能够保持通信畅通的结点都能够达到90%

6、,请建立问题的数学模型,设计求解算法,并给出使总铺设费用最少的铺设方案;问题4:综合考虑网络的可靠性以及铺设费用,试确定合理的铺设方案。§2 问题的分析一、问题的总分析 对于问题的总分析,可以给出四个问题整体框架图,见图1图1 四个问题的整体框架图二、对具体问题的分析1对问题一的分析某通信公司拟建一个具有80个结点的通信网络,需要在这些结点之间铺设线路,进行数据传输。我们需要根据附件内容建立数学模型,并设计算法使得通信网络的总铺设费用最省,并证明可靠性。我们引入图论中普里姆算法(prim算法),算法对通信网络的每条路的铺设费用总额进行模拟测算,形成铺设费用的最小生成树,并通过简化模型

7、进行检验算法的可靠性。2对问题二的分析问题要求这80个节点任意一个节点出现故障时,其它节点间仍然能够保持通信畅通的可能性都达到90%,在问题一所得出的最小生成树的的基础上,若其中只有一个重要节点发生故障时,会造成八个节点以上故障,那么通信畅通的可能性就不能达到90%,故通过节点删除法找到重要节点,再从重要节点引起故障的其他失效节点中找到一个节点与其他正常节点连通使得发生故障的节点数少于八个即可,并且改进方案所铺设的费用是最省的。3对问题三的分析问题要求79个链路中任意一条链路被破坏时,能够保持通信畅通的节点都能够达到90%。同样在问题一所得出的最小生成树的的基础上,我们考虑到若其中只要有一个重

8、要链路被破坏时,会造成八个节点以上故障,那么通信畅通的可能性就不能保证达到90%,所以,我们可以通过逐个分析每条链路,找到重要链路,一个链路被破坏会使最小生成树分割成两个部分,其中一部分则是失效的,然后再从重要链路被破坏而引起的其他失效节点中找到一个节点与其他正常节点连通使得发生故障的节点数少于或等于八个,我就能保证通信畅通的可能性达到90%,并且我们要找到的这个节点与其他正常节点连通所铺设的费用是最省的。4对问题四的分析问题要求是综合考虑网络的可靠性以及铺设,试确定合理的铺设方案。首先对比分析问题二与问题三的节点分类,发现问题三中节点的分类包含了问题二中节点的分类,若满足了了节点稳定性的要求

9、,则一定能满足链路稳定性的要求,故得出节点稳定性比链路稳定性更重要的结论;再通过节点故障模型分别构造通信畅通的可能性都达到85%、90%、95%时所对应的最低铺设费用,使用matlab软件编程,综合考虑稳定性和铺设费用得出铺设方案。§3 模型的假设1 两个节点之间的费用仅由节点之间的距离和铺设线路的单位费用决定;2 各节点和各链条间发生故障是相互独立的,节点1发生故障不影响节点2发生故障;3每个节点的重要性是相等的,不存在次级差别;4任意两个节点之间可以进行连接,且一个节点可以连接的节点不受限制;5网路的稳定性与节点所连的链路条数无关,即每个节点和链路出现故障的可能性是相等的;

10、67;4 名词解释与符号说明一、名词解释1最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。2普里姆算法(prim算法) 指可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。二、主要符号说明序号符号符号说明1表示加权连通图的节点集合2表示加权连通图的边集合3表示集合中的任意节点4表示初始的节点集合5表示集合中的元素6表示中的节点但不是中的节点7表示一个0、1变量,0,1分别表示选中和未选中 8表示节点i到节点j铺设线路所花费的费用9z表

11、示所选的铺设方案所花费的总费用10表示最小生成树的链路§5 模型的建立与求解一、问题一的分析与求解1问题的分析问题要求根据附件内容建立数学模型,并设计算法使得通信网络的总铺设费用最省,并证明可靠性;我们引入图论中普里姆算法(prim算法),算法对通信网络的每条路的铺设费用总额进行模拟测算,形成铺设费用的最小生成树,并通过简化模型进行检验算法的可靠性。本文中连通图的顶点为80个通讯网络的节点,所有边的权值为两节点之间的铺设通讯链路的总费用,通过普里姆算法可以得出联通所有顶点并且使总铺设费用最低的树图,即相对于问题一的最优铺设方案。2问题的求解模型总铺设费用最省模型 模型的建立普里姆算法

12、(prim算法)的步骤:从单一点开始,普里姆算法按照以下步骤逐步扩大树中所含节点的数目,直到遍历连通图的所有节点。首先设加权连通图的节点集合为,边集合为,初始化,其中为集合中的任意节点,其次在集合中选取权数最小的边,其中为集合中的元素,而不是,如果存在权数一样的可任选其中之一,再次,将加入到,重复第二第三步,直到。引入一个变量,时说明该路径未被选中,1则表示被选中为总结点数建立的数学模型如下算法流程图见图2图2 问题一的算法流程图为了更好的表现算法内容,用以下简化模型来表示并验证:表1普里姆算法示例图设置一个加权连通图,顶点集合为,边集合为。(为顶点,连线为边,边上数字为权值)选择顶点集合中任

13、意顶点,此处选择为初始点。顶点a、b、c、d都有与直接相连的边,选取其中权重最小的点(图中为a)下一个顶点为距离a或最近的顶点,a距离c为10,距d为6,距b为5;距c为10,距d为15,距b为15;所以最短的距离是a到b得距离为5,连接a与b继续重复上面的步骤。可以发现距离a,b和最短的是b到c得距离为5,连接b和c。最后d与a,b,c, 之中最短的距离为c到d的连线为6,故连接c到d,得出了最小生成树。轨迹为到a到b到c到d 模型可靠性的检验反证法:设生成的树为,假设存在使得总花费;则一定存在一个不属于;将加入,而 在本被其他点连接,加入后会形成一个环;而一定小于环中某一边的权重,这与在生

14、成树时每次都取权重最小值的步骤矛盾;故假设不成立,原模型成立。 模型的求解根据matlab运行结果见表1(程序见附录1),可以得到通信网络的总铺设费用为2947800元。得到的最优铺设方案如图3。表1 问题一结果图连接顺序12345678节点序号346170623647219连接顺序910111213141516节点序号5352737849713连接顺序1718192021222324节点序号4028425366672254连接顺序2526272829304647节点序号1652561851127417连接顺序4849505152535455节点序号10442367564821连接顺序5657

15、585960616263节点序号1129201550327226连接顺序6465666768697071节点序号439637924396569连接顺序7273747576777879节点序号5737482541146080图3最优铺设方案图二、问题二的分析与求解1对问题的分析在问题一所得出的最小生成树的的基础上,我们考虑到若其中只要有一个重要节点发生故障时,会造成八个节点以上故障,那么通信畅通的可能性就不能保证达到90%,所以,我们可以通过节点删除法找到重要节点,然后再从重要节点引起故障的其他失效节点中找到一个节点与其他正常节点连通使得发生故障的节点数少于八个,我们就能保证通信畅通的可能性达到

16、90%,并且我们要找到的这个节点与其他正常节点连通所铺设的费用是最省的。可以给出具体的算法流程图,如图4,图4问题二的算法流程图2对问题的求解我们以节点22为中心节点,可以将最小生成树分成四个大部分:为节点22左边部分,为节点22右上方部分,为节点22右下方部分,即为剩下的部分,即=22 56 54。例如部分,当这部分有节点出现故障时,我们通过或的点与这个故障点引起的失效点之间用最省的方案再铺设一条线路后,保证任一点发生故障后也能使通信畅通的可能性达到90%。通过此方法,我们可以在部分找到重要节点70,部分找到重要节点51,部分找到重要节点77。找到重要节点后,要考虑这三个重要节点任一发生故障

17、时,怎么增加最省的铺设线路问题,然后我们再分别将、分成两个部分,第一部分是重要节点出现故障后造成可靠性小于90%的节点之和,即我们必需增加铺设线路的点,第二部分是重要节点发生故障后不影响可靠性的节点之和。所以可分为:bc=703681466676247692291949285783520802439406379273713425337;可分为:d=303845831596048e=5112463341686573182152439165525可分为:f=71 11 74 7217104415g=772366457757645对于任意节点发生故障时,要通过增加铺设后保证

18、至少有70个节点是通信畅通的。所以这六个部分要考虑连接的方案有:bd和; bf和d;df 和b;b、d和;可以通过matlab编程(见附录程序2)分别计算9条线路各自最小的费用,然后计算4个方案费用。费用最小的方案所对应的线路即是我们要增加的铺设线路。matlab算出的结果见表2:表2 问题二结果图节点1节点2铺设费用6168528817645467152861685282354465102470bd是60-61连接,对应费用为209100元;是2-10连接,对应费用为47000元,所以增加的总费用为256100元。bf是1-72连接,对应费用为78000元;d是15-38连接,对应费用为53

19、600元,所以增加的总费用为131600元。df 是15-38连接,对应费用为53600元, b是61-68连接,对应费用为52800元,所以增加的总费用为106400元。b是61-68连接,对应费用为52800元;d是15-38连接,对应费用为53600元;是2-10连接,对应费用为47000元;所以增加的总费用为153400元。通过比较4个方案,可以得知第三个方案所需要增加的费用是106400元,所以总的铺设费用=+106400=3054200元。增加的路线如图5。图5 任一节点出现故障可靠性达到90%的最优铺设方案图三、问题三的分析与求解1对问题的分析同样在问题一所得出的最小生成树的的基

20、础上,我们考虑到若其中只要有一个重要链路被破坏时,会造成八个节点以上故障,那么通信畅通的可能性就不能保证达到90%,所以,我们可以通过逐个分析每条链路,找到重要链路,一个链路被破坏会使最小生成树分割成两个部分,其中一部分则是失效的,然后再从重要链路被破坏而引起的其他失效节点中找到一个节点与其他正常节点连通使得发生故障的节点数少于或等于八个,我就能保证通信畅通的可能性达到90%,并且我们要找到的这个节点与其他正常节点连通所铺设的费用是最省的。2对问题的求解在第二问的基础上,我们已经将最小生成树分成四个大部分、和。再比如部分,当这部分的一个链路被破坏时,我们通过或的点与这个故障点引起的失效点之间用

21、最省的方案再铺设一条线路后,保证任何一条链路被破坏后也能使通信畅通的可能性达到90%。通过此方法,我们可以在部分找到的重要链路是70与62之间的链路,在部分找到重要链路是18与51之间的链路,在部分找到重要链路是76与77之间的链路。找到三个重要的链路、和后,我们要研究这三个重要链路任一发生故障时,怎么增加最省的铺设线路问题,这三个重要的链路任意一个被破坏时都会导致其所在的部分被分割成两个小的部分,一个部分中的节点都是有效的,一个部分的节点都是失效的。所以我们将分成:= 1342661503270368146667= 62476922919492857835208024394063792737

22、13425337所以我们将分成:= 5130384583159604812684665334173= 182152439165525所以我们将分成:= 7723664577571117472171044157645= 7645=22 56 54比如链路被破坏后,会导致部分的节点都失效,保持通信畅通的节点就不能达到90%,同样,和也是如此,即要保证这三条链路之一破坏时,、和都不能失效,所以要考虑的连接方案有:和; 和;和;、和通过matlab(见附录程序3)算出的结果如表3:表3 问题三结果图节点1节点2铺设费用6168528817645467152861685282354465102470是6

23、1-68连接,对应费用为52800元;是2-10连接,对应费用为47000元,所以增加的总费用为998000元。是8-17连接,对应费用为64500元;是23-54连接,对应费用为46500元,所以增加的总费用为111000元。是46-71连接,对应费用为52800元, 是61-68连接,对应费用为52800元,所以增加的总费用为105600元。是是2-10连接,对应费用为47000元,是23-54连接,对应费用为46500元,;是61-68连接,对应费用为52800元,;所以增加的总费用为146300元。通过比较4个方案,可以得知第一个方案所需要增加的费用最省,费用是是99800元,所以总的

24、铺设费用=+99800=3047600元。图6 任一链路出现故障可靠性达到90%的最优铺设方案图四、问题四的分析与求解1对问题的分析在问题二及问题三的基础上,首先对比分析问题二与问题三的节点分类,发现问题三中节点的分类包含了问题二中节点的分类,若满足了了节点稳定性的要求,则一定能满足链路稳定性的要求,故得出节点稳定性比链路稳定性更重要的结论;再通过节点故障模型分别构造通信畅通的可能性都达到85%、90%、95%时所对应的最低铺设费用,使用matlab软件编程,综合考虑稳定性和铺设费用得出铺设方案。2对问题的求解我们以节点22为中心节点,可以将最小生成树分成四个大部分:为节点22左边部分,为节点

25、22右上方部分,为节点22右下方部分,即为剩下的部分,即=22 56 54。所问题二中可分为:bc=703681466676247692291949285783520802439406379273713425337;问题三中将可分为:= 1342661503270368146667= 6247692291949285783520802439406379273713425337可见问题三中的节点分类包括了问题二中的分类问题二中可分为:d=303845831596048e=5112463341686573182152439165525问题三中将分成:= 513038458

26、3159604812684665334173= 182152439165525利用matlab求解结果见表4。(程序间附录程序4)表4 问题四结果图节点1节点2铺设费用节点1节点2铺设费用26332070636425761382716246510302675342039413000110326340592738363810922431190066751296631011908176451962565364128101962565可见问题三中的节点分类包括了问题二中的分类故节点稳定性的要求更高,即只要满足了节点稳定性就能满足链条稳定性的要求,下面仅考虑节点稳定性需求下的故障模型。当若要求任意一个

27、结点出现故障时,其它结点间仍然能够保持通信畅通的可能性都达到85%时,通过问题二与问题三的模型计算出的最省铺设方案为3047600元。分配方案为:图7 通畅度85%时最省铺设方案同样若要求任意一个结点出现故障时,其它结点间仍然能够保持通信畅通的可能性都达到90%时,通过问题二与问题三的模型计算出的最省铺设方案为3054200元。分配方案为:图8 通畅度90%时最省铺设方案同样若要求任意一个结点出现故障时,其它结点间仍然能够保持通信畅通的可能性都达到90%时,通过问题二与问题三的模型计算出的最省铺设方案为3578800元。分配方案为:图9 通畅度95%时最省铺设方案可见当通畅度从85%增加至90

28、%时,费用仅仅增加了6400元,而当通畅度从90%增加至95%时,费用增加了524600元,故选择90%的通畅度,此时可以满足当一个节点或一个链条出现故障时,其它结点间仍然能够保持通信畅通的可能性都达到90%,且费用适中,可以同时满足稳定性和铺设成本的条件,故本题选择图5所示的铺设方案为综合的最优方案。§6 误差分析一、误差分析1在取得两节点之间的距离数据时由于人工记取数据或者测量距离的工具不标准,会造成读取数据的误差,从而造成模型的误差。2在论文中直接认为总的铺设费用是有距离和节点单位费用决定的,在实际解决问题中,总铺设费用还要考虑其他因素的影响。3在问题二的分析方法中,我们直接认

29、为每个节点之间发生故障的概率是相同的,其实有的节点发生故障的概率大,我们考虑的太理想化,而且有的节点发生故障会导致其他某些节点发生故障的概率增大或者减小。§7 模型的评价与推广一、模型的优点 1本文对问题有合理的猜想、假设、计算以及检验;2按照需要求解的问题灵活选取数据,而不是每次都使用同一个数据;3问题三在求解出来之后又提出一个新思路,并且有一个新的解法。一题两解,并且可以互相验证结果;4研究问题时循序渐进,在求解的过程中慢慢进步,逐步完善。二、模型的缺点1求解问题时用的数据是自己观察,手工计数的,这样得出的数据难免会有些误差,有些没有考虑到的因素;2在最后模型改进的时候,我们提出

30、了思路和解法但是由于时间有限,我们并没有将最后的具体结果计算出来;三、模型的推广1排队论模型我们所研究的排队论是把排队论应用到交通中,道路发生事故时堵车所形成的类似排队现象这种情况运用排队论的相关知识来求解,我们还可以将排队论延伸到其它的领域,比如车站买票、医院取药、通讯服务等其它领域;2交通流模型由于进出匝道或交通事故等原因而形成的交通瓶颈,是导致高速道路交通拥挤和堵塞的最主要的根源,我们通过这个模型不仅仅能够对解决堵车时的排队长度问题还可以解决密度,速度等其他的交通指标;3在解决第三问时,我们发现交通堵塞问题与管道收缩而导致的运动气流中形成激动波过程很相似,所以我们就通过研究后者的模型来类

31、比我们要解决的问题,这种联想类比法也可以推广到其它问题。§8 模型的改进本题中线路的可靠性仅仅考虑了节点和链路的稳定性,在保证连通性的情况下最小化了铺设成本;但未考虑流量因素,流量与节点的度有关,节点的度是指与节点直接连接的链路的数量,流量因素是指:一个节点的度越多,流过这个节点的最大流量就越大。所以,流量可以看作是图中节点的度数之和的增函数。而在节点度之和一定的情况下,各个节点度数的波动越大,度数小的节点就成为流量的约束。因此,流量的大小是节点度数的方差函数。令代表图中度的均值,代表方差构造流量函数: (1)而本文问题一中有铺设成本的目标函数为: (2)将两个因素综合考虑,这里利用

32、线性加权的办法将其综合,首先将式(1)、(2)归一化,然后定义偏好系数,越接近0表是决策者越倾向于费用因素,越接近于1越倾向于流量因素,所以,最终的目标函数为:设置约束条件,其中假定每一个节点的度数属于2,5的闭区间。凡是有节点度数不在词区间的方案都被认为是不可行解。为防止蚂蚁在寻优的过程中产生不可行解,定义(low,up)为度的约束区间。对于每一个节点i,其度,在此定义一个函数:则可以定义罚函数为:预算成本的约束:因为前面推导出了一个新目标函数,所有铺设成本不再是要优化的对象。而在实际过程中,决策放能够承担的最大铺设成本一定不大于预算。所以,定义一个最大预算。根据心理学的知识,决策者对费用的

33、容忍度通常都是在与最小成本的比较中产生的,所以定义一个容忍百分比其取值如下:相应的最大容忍度为。节点稳定性的约束:首先引入一个故障矩阵, 表示在节点和节点之间存在连接线时,连接线出现故障的概率。仍然假定节点不会出现故障,所有故障都来自于链路。而每一条边对于点来说是并联的,利用概率统计的知识,可以求得节点能够正常工作的概率为:令为用户规定的平均最小工作概率。如果在整个网络中所有节点工作的概率的算数平均值大于,则这个网络是可接受的,否则是不可接受的。故由上述分析,这个优化的模型是一个组合优化模型,可以用蚁群算法来求解,这里简要介绍一下蚁群算法的求解过程。1.初始化参数2. 利用概率的方法构建蚂蚁的

34、路径。本文综合考虑了最小成本模型和度约束条件,同时在本模型中又加入了流量及链路概率的影响。如当前位于节点的蚂蚁选择作为下一个节点的概率为:其中,为链路信息素强度; 为一个预先给定的启发式信息,初始值为链路距离的倒数。为本算法设置了启发式信息的优先级:链路如果有一个端点的度为1,则加1 倍,若链路 2 个端点的度都为1,加2 倍。、 是2 个参数,它们分别决定了信息素和启发式信息的相对影响力。代表位于节点的蚂蚁可以直接到达的相邻节点的集合,也就是还没有被蚂蚁访问的节点的集合。step3 本文使用的后台策略是在蚂蚁前进一步时就计算各个约束的值,看是否满足要求,当有一个约束不再满足要求时,蚂蚁不再前

35、行。一轮路径探索完之后,计算目标函数的值,进而挑选出最优的路径。step4 在每一轮路径探索之后,更新信息素,更新规则如下:其中为信息素挥发程度;表示第次循环是否选择了链路,如果先择,否则,是常数。5.当路径探索的论述达到时输出结果。因为蚁群算法有较强的收敛性,故当经过不同次数的迭代实验是,会得出较为相近的结果,此时则为最优的结果,最终的结果可有c语言编程完成。参考文献:1 /wiki/prim%e6%bc%94%e7%ae%97%e6%b3%95 .2 基于蚁群算法的多目标网络铺设策略研究龚承柱1,诸克军1,郭海湘1,2(1. 中国地质大学经济管理

36、学院,武汉 430074;2. 西安交通大学管理学院,西安 710049). 3 姜启源,谢金星,叶俊.数学模型m 北京;高等教育出版社,2011,1.10附录程序1:%a表示权值矩阵%c表示生成树的权和%visit标记是否访问过(1表示访问,0表示未访问),dis记录当前最短距离,r矩阵表示结点序号之间从前往后依次连接clc,cleara=xlsread('date.xls');%权值矩阵(节点之间的费用表=距离*单位费用)l=length(a);a(a=0)=inf;%初始化邻接矩阵dis=zeros(1,l);dis(:)=inf;%初始化dis数组visit=zeros

37、(1,l);result=zeros(l,l);visit(1)=1;dis(1)=0;next=1;c=0;a=zeros(1,80);%初始时刻1点加入集合中r=zeros(2,79);r(1,:)=1:79;%初始化结果矩阵for k=1:l-1; now=next;%now表示计算的当前节点 m=inf;%m保存当前节点到集合的最短距离 for i=1:l; if visit(i)=0%如果没有标记,开始这个点 dis(i)=min(dis(i),a(now,i);%更新这个i点到集合的最短距离,保存到dis中 if(dis(i)<m) m=dis(i); next=i;%记录下

38、最小的那个点,作为下一个计算的点。 end end end c=c+m;%加权值 visit(next)=1;%标记进集合的点 result(k,next)=1;%整合每次标记endfor t=1:79; r(2,t)=find(result(t,:)=1);%按顺序输出节点表示连接过程endr %结果矩阵输出,第一行表示连接顺序,第二行表示表示依次连接节点数c %相应情况下的最省铺设费用程序二:a=xlsread('date.xls'); %权值矩阵(节点之间的费用表=距离*单位费用)n1=1342661503270368146667;n2=51303845831596048

39、12684665334173;n3=772366457757111747217104415;m1=134266150327036814666762476922919492857835208024;m2=5130384583159604812684665334173182152439165525;m3=7723664577571117472171044157645;m4=542256;%输入六个节点分类矩阵x1=m2 m3 m4;x2=m1 m3 m4;x3=m1 m2 m4;l1=length(n1);l2=length(n2);l3=length(n3);l4=length(m1);l5=l

40、ength(m2);l6=length(m3);l7=length(m4);%分别求其长度和两两组合长度t=1; for i=1:l1; for j=1:l2; r(t,:)=n1(i) n2(j) a(n1(i),n2(j) t=t+1; end end for i=1:l1; for k=1:l3; r(t,:)=n1(i) n3(k) a(n1(i),n3(k); t=t+1; end end for j=1:l2; for k=1:l3; r(t,:)=n2(j) n3(k) a(n2(j),n3(k); t=t+1; end end for i=1:l1; for p=1:l5+l6

41、+l7; r(t,:)=n1(i) x1(p) a(n1(i),x1(p); t=t+1; end end for j=1:l2; for q=1:l4+l6+l7; r(t,:)=n2(j) x2(q) a(n2(j),x2(q); t=t+1; end end for k=1:l3; for r=1:l4+l5+l7; r(t,:)=n3(k) x3(r) a(n3(k),x3(r); t=t+1; end end r1=sortrows(r(1:192,:),3); result(1,:)=r1(1,:); r2=sortrows(r(193:360,:),3); result(2,:)

42、=r2(1,:); r3=sortrows(r(361:584,:),3); result(3,:)=r3(1,:); r4=sortrows(r(585:1101,:),3); result(4,:)=r4(1,:); r5=sortrows(r(1102:1997,:),3); result(5,:)=r5(1,:); r6=sortrows(r(1998:2893,:),3);result(6,:)=r6(1,:);%逐个计算最省费用result%输出分类比较下的最省费用及相应连接节点序号程序三:a=xlsread('date.xls'); %权值矩阵(节点之间的费用表=

43、距离*单位费用)n1=1342661503270368146667;n2=5130384583159604812684665334173;n3=772366457757111747217104415;m1=134266150327036814666762476922919492857835208024;m2=5130384583159604812684665334173182152439165525;m3=7723664577571117472171044157645;m4=542256;x1=m2 m3 m4;x2=m1 m3 m4;x3=m1 m2 m4;l1=length(n1);l2=

44、length(n2);l3=length(n3);l4=length(m1);l5=length(m2);l6=length(m3);l7=length(m4); %分别求其长度和两两组合长度t=1; for i=1:l1; for j=1:l2; r(t,:)=n1(i) n2(j) a(n1(i),n2(j); t=t+1; end end for i=1:l1; for k=1:l3; r(t,:)=n1(i) n3(k) a(n1(i),n3(k); t=t+1; end end for j=1:l2; for k=1:l3; r(t,:)=n2(j) n3(k) a(n2(j),n3

45、(k); t=t+1; end end for i=1:l1; for p=1:l5+l6+l7; r(t,:)=n1(i) x1(p) a(n1(i),x1(p); t=t+1; end end for j=1:l2; for q=1:l4+l6+l7; r(t,:)=n2(j) x2(q) a(n2(j),x2(q); t=t+1; end end for k=1:l3; for r=1:l4+l5+l7; r(t,:)=n3(k) x3(r) a(n3(k),x3(r); t=t+1; end end %分别求其长度和两两组合长度 r1=sortrows(r(1:192,:),3); r

46、esult(1,:)=r1(1,:); r2=sortrows(r(193:360,:),3); result(2,:)=r2(1,:); r3=sortrows(r(361:584,:),3); result(3,:)=r3(1,:); r4=sortrows(r(585:1100,:),3); result(4,:)=r4(1,:); r5=sortrows(r(1101:1996,:),3); result(5,:)=r5(1,:); r6=sortrows(r(1997:2562,:),3); result(6,:)=r6(1,:); result %输出分类比较下的最省费用及相应连接

47、节点序号 附录四a=xlsread('date.xls'); %权值矩阵(节点之间的费用表=距离*单位费用)n1=263415032;n2=666736814;n3=79634020248039;n4=28491929;m1=65337341;m2=3159604838458;m3=6645775;m4=17104415;x1=m2 m3 m4;x2=m1 m3 m4;x3=m1 m2 m4;l1=length(n1);l2=length(n2);l3=length(n3);l4=length(n4);l5=length(m1);l6=length(m2);l7=length(

48、m3);l8=length(m4);%求矩阵长度t=1 for i1=1:l1; for j1=1:l5; r(t,:)=n1(i1) m1(j1) a(n1(i1),m1(j1); t=t+1; end end for i1=1:l1; for j1=1:l6; r(t,:)=n1(i1) m2(j1) a(n1(i1),m2(j1); t=t+1; end end for i1=1:l1; for j1=1:l7; r(t,:)=n1(i1) m3(j1) a(n1(i1),m3(j1); t=t+1; end end for i1=1:l1; for j1=1:l8; r(t,:)=n1(i1) m4(j1) a(n1(i1),m4(j1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论