[信息与通信]控制前沿技术.doc_第1页
[信息与通信]控制前沿技术.doc_第2页
[信息与通信]控制前沿技术.doc_第3页
[信息与通信]控制前沿技术.doc_第4页
[信息与通信]控制前沿技术.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

摘要2ABSTRACT2第一章 博弈论311 博弈论告诉我们几点内容31.1.1情景1:不要采取严格的劣势策略31.1.2情景2理性思想下做出的理性判断或许不是最好的选择31.1.3情景三 你将得不到任何东西,除非你知道你想要什么41.1.4情景四 学会换位思考412 博弈论中可能与研究算法将结合的知识点51.2.1 剔除劣势决策和迭代选择51.2.2蚂蚁群中的合作和背叛的现象61.3 博弈论可以解决的一些问题71.3.1 捡到100元的处理方式71.3.2 从博弈论角度看足球比赛应该进行哪路进攻71.3.3 高校的奖学金的评判准则规划问题9第二章 蚂蚁系统解决TSP的研究1321 旅行商问题的四种解决方案142.1.1神经元网络设计方案142.1.2蚂蚁系统算法设计方案:192.1.3遗传算法求解旅行社问题262.1.4人工鱼算法:302.2 TSP问题求解的方法总结:332.3展望:342.4 对于常规问题解决34第三章 两者之间简单实例应用40第四章 总结42致谢42参考文献42摘要先进技术控制理论应用很广泛,涉及到各个领域,但是很多问题都是一些非线性的问题,因此必须找到一种算法可以求解出这些难题,而算法从哪来呢?这就需要人类大量的学习并且掌握各种方法的能力,因此从上世纪末期产生了各种类型的系统算法和解决方案,这些技术优化人类的生活,带给我们启发。本文从课上博弈论和蚂蚁系统出发,做了相关的研究,懂得了一些原理,得出了部分结论,但是希望能将博弈论的知识应用到蚂蚁系统中,并且学会算法的优化,这是下一步我要学习的方向和努力点。ABSTRACTAdvanced technology control theory application is very wide, involving various fields, but many problems are nonlinear problems, so we must find a kind of algorithm that can solve these problems, and where the algorithm come from? This requires we human do a lot of study and enjoy the ability that just to master various methods, At the end of the last century,there comes out various types of algorithm and produced a lot ofsystem solutions, the technology optimization of human life, brings us inspiration.This article embarks from the game theory and ant system in class, do the relevant research, learned some principle, find some conclusions, but I hope be able to apply the knowledge of game theory to the ant system, and learn to algorithm optimization, this is what I want to learn and the direction of the next step and effort.第一章 博弈论11 博弈论告诉我们几点内容首先介绍一下博弈,博弈是由博弈者,决策,收益三部分组成的,我们的目标是根据博弈者的决策来分析各个决策的收益,然后得出想要的结果,前提条件我们的是我们进行一场博弈,有两个人参加,可以选择策略1或者策略2,但是两个人不能商量,所以我们有下面五种情形去考察1.1.1情景1:不要采取严格的劣势策略有一个评分系统,可以选择策略1或者策略2 ,不可以让对方知道,如果两人都是选择策略1,那么都会得到成绩B-,如果两人都选择策略2,那么都得到成绩B+.如果一个人选择策略1一个人选择策略2,那么策略1的人得到A,策略2的人得到C。我和对手的成绩,(,),先是我的成绩然后是对手的成绩得分情况对手的选择策略1策略2我的选择策略1(B-,B-)(A,C)策略2(C,A)(B+,B+)很显然,在这里我们看到,如果我选择策略2,对手选择策略1的话,我得到C,而对手得到的是A,如果对手选择策略2,那我么都得到了B+, 如果我选择策略1,结果正好相反,那么我可以得出结论,选择策略1的收益远远大一现则策略2的收益,因次看来策略2是一个劣势策略,因此我们不要选择严格意义上的劣势策略,1.1.2情景2理性思想下做出的理性判断或许不是最好的选择 我们把上述的表格赋予得分的情形得分情况对手的选择策略1策略2我的选择策略1(0,0)(3,-1)策略2(-1,3)(1,1)但到上面的图标,我们很容易看到我们得分的最大值是3,那么如果我们中间有一类人叫做邪恶的废物,那么他们总是考虑着自己的利益,那么他极大的可能做出的结论是选择策略1,然而,如果对手也是选择的策略1,那么他的得分是0分,而不是他原先想象的3分,因此我们得出的第二个结论是:理性思想下做出的理性判断或许不是最好的选择。这个情景我先做一下囚徒困境的游戏,就是说两个犯人犯罪了,被关在两个房间了,要求他们承认自己的犯罪事实,如果其中一个人把另一个人供出来,而对方没有供出,那么供出的人释放,没供出的人被判刑5年;如果两个人都供出对方,那么他们都获刑两年;如果两个人都没有供出对方,他们将获刑1年;坐牢年限对手的选择供出不供我的选择供出(2,2)(0,5)不供(5,0)(1,1)上面的思路中我们看到是如果做一个邪恶的废物,那么选择供出对方,想着自己被获刑,但是不要忘记了如果对放也供出来,那么两人都将做了两年牢的。因此上述结论是正确的1.1.3情景三 你将得不到任何东西,除非你知道你想要什么由邪恶的废物跳跃到了愤怒的天使从上面的囚徒困境中可以看出,两个犯人可以协商,都不供出对方,那么他们的获刑时间是一年,这是最好的策略,但是万一有人违规,结果他把对方供出,那么他将释放,而苦苦的坐着五年牢,对于这种情景可以签署一个协议,就是万一有以对方违规,我将会变成愤怒的天使,我将会对你做出惩罚。那么我们还是回归到第一个问题上,来看如果两人是协商者,说是都去选择策略2 ,谁也不能背叛,如果有背叛者,那么我作为一个愤怒的天使,将会对你做出惩罚,你原本得分是3 ,我会降低到-1,和我的得分是一样的,但是游戏规则是不能协商,所以降低的最低分数也就是-1,不能再降了,那么请看下面的表格得分情况对手的选择策略1策略2我的选择策略1(0,0)(-1,-1)策略2(-1,-1)(1,1)那么我们得出一张新的表格,判断一下我们可以得出无论你选择那一种方案,收益都是一样的,那么所以说你选择什么都无所谓,对手和你得到的收益是相同的,因此你将得不到任何东西,除非你知道你想要什么。这个也是与我们生活中是一样的,就拿读研究生或者不读研究生来说,其实都还是为了工作,最后的收益其实也差不多,那就看你想要什么东西了,如果你想要的是学历那么读研,如果你想要经验,那么就工作,就这么简单。1.1.4情景四 学会换位思考我们看下面一组对弈得分情况B的选择策略1策略2A的选择策略1(0,0)(-1,-1)策略2(-3,3)(1,1)这种情况是只有一个人是愤怒的天使,两一个人是邪恶的废物,那么从表中看出A邪恶的废物,本来他们的得分是(-1,3),但是作为邪恶的废物,只想着自己的利益,我就会对你惩罚,你想着自己窝将把你的分数从-1降低到-3。而且原先B的策略为(-1,3),我们协商好了选择策略1,但是你背叛了我对你惩罚,将你的分数降低-1明显我们可以看出上表格,如果B择策略1,A择策略1,那么他们得分是0,但是A选择策略2,那么得分差距很大,对B来说是有利的;比较一下,B选择策略1是他的优势策略,那么B很可能选择策略1了,那么当他选择策略1,A的选择选择最好也是策略1了,因此我们得出的结论是学会换位思考那么我们就提出了对于A的收益情况,显然B选择策略1的概率远远大于选择策略2的概率。记B选择策略1的概率为PA选择策略1的得分为p-1A选择策略2的得分为-3p+1*(1-p)=1-4*pp=0.5:0.01:1;Y1=p-1;Y2=1-4*p;Hold on;plot(p,Y1,r);plot(p,Y2);grid on 显然我们可以看出对于A来说,选择策略1是较为好的策略;12 博弈论中可能与研究算法将结合的知识点12.1 剔除劣势决策和迭代选择案例1 游戏的就是从1到100中选择一个数字,然后每个人的平均值算出来再乘以2/3,最接这个数字的人将会作为赢家,分析。首先,我们先看平均数的情况,如果现在100*2/3=67 ,说明你不够理性。如果选择67*2/3=45,选择45-67之间的人,往往认为别人很傻,45*2/3=30,选择30到45之间的人,是普遍认知。那么选择2030之间的人是较为明智的选择,我们得出的结论是显然45-100之间的数字是劣势选择,我们要剔除这些劣势选择,可能用到的算法再优化遗传算法中常常会发生汉明现象,我们可以用这种剔除劣势选择的方法进行设计。案例2 总统选举的现象,又是个政治问题的对待策略,分别记做12345678910那么对于这些策略可以看做是策略1是左翼分子的做法,策略10是右翼分子的做法,中间的5 6 差不多就是中立的态度,那么你想应聘总统尼会选择哪一种策略呢,其中选民的思想均匀分布,会投给与自己意愿最相近的人,每一种策略最少得到10%的投票,那么我们记作u11,2)表示候选人1选择策略1,候选人选择策略2的情况下,候选人得到的收益下面分析一下。U1(1,1)=50%U1(2,1)=90%U1(1,2)=10%U1(2,2)=50%U1(1,3)=15%U1(2,3)=20%U1(1,4)=20%U1(2,4)=25%U1(1,5)=25%U1(2,5)=30%U1(1,6)=30%U1.说明原先的蚂蚁选择合作不能达到稳定进化的效果;同理我们可以考察一下变异的蚂蚁,设原先蚂蚁合作的可能性为b,如果变异蚂蚁选择合作,那么他的收益u1=2(1-b),如果变异的蚂蚁选择背叛,那么收益是u2=3(1-b)+1b,显然对于变异的蚂蚁来说合作也不是产生稳定变异的优势选择,那么我们要想得到原先蚂蚁的稳定基因,就要让原先蚂蚁背叛,变异的蚂蚁合作,那么就很好的得到我们的效果。这个博弈可以应用在人工智能中的;领域,怎样维持一种变量或者模型具有稳定的效果,可以应用这个方面的思想。1.3 博弈论可以解决的一些问题13.1 捡到100元的处理方式 上课老师讲的假如你捡到了100块钱,你应该分给对方多少,如果对方得不到想要的钱,那么他会选择报警,因此我从博弈论中得到的种种结论,得到了下面一种解决方案,我要换位思考,跟他做一个游戏,游戏是这样的,有一顶帽子,我先放钱,我如果放到1块钱,他有两种选择,他放1块钱,那么他得到1+1.5元,如果他放3块钱,他最后得到3+2=5元,意思是他放一元挣到了1.5元,他放3元,证了2块钱,如果他直接把我的一块钱取走了,他挣到了2块钱, 我的另一种选择是开始放3块钱,如果我放三块钱,他完全可以取走,挣到了3块钱,比原先所得的钱都多的很,如果他接着也放3块钱或者三块钱以上,我就会再给他2块钱,但是他放三块钱我再给他2块钱这个规则我没有告诉他,主要是考察他的道德问题,显然我开始放进去三块钱是有一定的道德风险的。如果我的游戏是这样的:我先放进去3块钱,如果他也放进3块钱,最为奖励我给他40元,如果他直接拿走了,说明他不是好人,我不给钱,继续我接着放进10元,看他原则拿钱。然后,再让他做选择,他选择放一块钱,说明他在怀疑我的为人,那么我给他20块钱,如果他放进三块钱,说明他有分享的意识,我给他40元。那么两轮下来就是他最后拿到的钱的数目。1.3.2 从博弈论角度看足球比赛应该进行哪路进攻 我们曾经看到报纸上说足球进攻的经验,说是如果足球运动员从左边扑球,那么你选择右路进攻更容易射进,反之亦然,这是为什么呢?下表是某科学家做的数据统计:问题是:当你是攻击者,你怎么根据守门员的扑球方向决定自己的进攻方向呢?守门员左边扑球守门员右边扑球左路进攻射进概率63.6%94.4%右路进攻射进概率89.3%43.7%下面我们从博弈论角度分析一下: 守门员进攻者守门员走向左边守门员走向右边进攻者左路射门40%,-40%90%,-90%进攻者中路射门60%,-60%60%,-60%进攻者右路射门90%,-90%40%,-40%上述表格解释:百分数代表的是进攻这射进球的概率为了更好的解决问题,显然我们要计算一下收益是多少那么进攻者从左边射门的收益u1(l.p(r)=0.4*(1-p(r)+0.9*p(r)进攻者从左边射门的收益u1(r.p(r)=0.0*(1-p(r)+0.4*p(r)进攻者从左边射门的收益u1(l.p(r)=0.6为了更直观的展现出我们要得到的结论,我们选择matlab作图,程序如下:l=0:0.01:1;h=5;h1=4;h2=9;x1=5*l+4;plot(l,x1,b);title(左路进攻); hold on;x2=-5*l+9;plot(l,x2,r);title(右路进攻);hold on;h3=6;plot(l,h3);title(学号:2121149);plot(l,h1,r);hold on;plot(l,h2,b);hold on;ylabel(进攻者射进的概率);xlabel( 守门员往右的概率);hold off;axis(0,1,4,9);axis square;结论:很容易看出红线和蓝线的交点是(0.5,6.5),那么根据图中我们可以清晰的看到,无论守门员往左还是往右,我们选择中路进攻不是一个好的策略,因此选择中路进攻将是一个劣势决策,那么我们一般不要选择中路进攻; 当守门员在左边时候,意思是往右边的概率越小的话,那么我们采取红线,也就是右路进攻,那么射进的几率将会大一些; 当守门员往右边防守时候,我们进攻应该选择往左,那么射进的概率也会较大一些; 我们之所以做出上面的选择方案是因为那样做我们所得到的收益最大。但是有个特殊情况就是,如果你是个大礼选手,那么相应的就是从中路进攻的概率就会增大很多,那么我们将会得到下面的曲线图:那么我们的收益就会发生一定的变化,显然当我们在交点处做出不同的判断,很容易看出,当守门员扑球意向在中路的时候,那么作为大力选手的队员,完全可以选择从中路进攻。总结:虽然上述过程看着简单,但是两者之间的关系是非线性的,因此可以说是复杂网络,那么我们完全可以又上述问题得出研究复杂网络的科研问题方法,将其简单化,先转换为线性的问题去分析一下,那么我们将会得出较好的解决问题的方案。1.3.3 高校的奖学金的评判准则规划问题由于现象高校的科研水平提高的准则很多,学生的能里有强有弱,但是有可能遇到两个人水平差不多但是又要必须分出高低的问题,奖学金到底应该分给谁呢,做为一个复杂的网络模型,怎么有效的提出一种解决方案成了一个很重要的问题,下面我提出了一种神经元网络的解决方案,目前大学生学业奖学金的评定越来越困难,各项指标都很模糊不好做出抉择,包括论文的发表,专利,数模建模大赛,学习成绩。然后当几个指标单独比较时候,无法抉择哪个更重要一些,所以本文中提出来一个解决方案,可以极大的提高公平性。下面是某个高校奖学金评定表格指标和 结果类别数学建模国家一等奖数学建模国家二等奖数学建模国家二等奖数学建模省级一等奖论文发表在EI和SCI上发明专利实用新型和外观设计性专利学习成绩奖学金等级1是是一篇2个1个第2名一等奖2是是1第三名一等奖3是3个第五名一等奖4是第七名三等奖5是是2个第四名二等奖6是11第六名一等奖7是14第一名一等奖8是是第十名三等奖93第八名三等奖102三等奖114三等奖12是第十一名三等奖13是231二等奖14是222二等奖首先,我们的做法是进行量化,比如成绩按照比例的关系满分是10分,然后比如参加全国数模大赛的人数是:本届大赛共有231所高校、2507支代表队、7521名研究生参加,其中“985”、“211”学校参赛队伍和人数占80%左右。最终评选出一等奖75支队伍(获奖比例为2.991%),二等奖439支队伍,三等奖590支队伍 ,那么我们可以量化得出来一等奖获得者的得分应该和有100人学生学习成绩前三名得分是一样的,那么我们可以简单的在对一等奖获得者做出评判,做一些优劣选择,那么量化结果可以得出,同理我们的论文可以根据相应的发表篇数做出量化,专利也是一样;量化后结果如下:下面是某个高校奖学金评定表格指标和 结果类别数学建模国家一等奖数学建模国家二等奖数学建模国家三等奖数学建模省级一等奖论文发表在EI和SCI上发明专利实用新型和外观设计性专利学习成绩奖学金等级1106.3563.710一等奖29.36.93.79.9一等奖38.298一等奖46.87.8三等奖58.67.468.9二等奖69.5548.7一等奖79.45910一等奖87.66.96.7三等奖997.6三等奖106三等奖119.9三等奖126.35三等奖138.4893.6二等奖146.4866二等奖我们的算法思路如下表:将每个等级的样本对应的哥评价指标的平均主作为各个登记的理想评价指标,即作为Hopfield神经网络的平衡点,如下表所示指标和 结果类别数学建模国家一等奖数学建模国家二等奖数学建模国家三等奖数学建模省级一等奖论文发表在EI和SCI上发明专利实用新型和外观设计性专利学习成绩奖学金等级19.6258.26.76.6763.49一等奖29.386.66653.28.5二等奖39.07.265.654.93.18三等奖理想的登记评价指标编码待分类的等级指标编码:指标和 结果类别数学建模国家一等奖数学建模国家二等奖数学建模国家三等奖数学建模省级一等奖论文发表在EI和SCI上发明专利实用新型和外观设计性专利学习成绩奖学金等级19.58.06.36.85.2838一等奖29.88.26.76.46.95.53.99二等奖Matlab程序class_1=1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;class_2=-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;class_3=-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;save class.mat;sim_1=1 -1 -1;-1 1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;-1 1 -1;sim_2=-1 1 -1;-1 1 -1;-1 -1 1;1 -1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;sim_3=-1 1 -1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;save sim.mat;这样把评判的标准和我们要待分类的数据存在了matlab文档下的目录下% 清空环境变量clear allclc% 导入数据class_1=1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;class_2=-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;class_3=-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;load class.matsim_1=1 -1 -1;-1 1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;1 -1 -1;-1 1 -1;sim_2=-1 1 -1;-1 1 -1;-1 -1 1;1 -1 -1;-1 1 -1;-1 1 -1;-1 1 -1;-1 1 -1;sim_3=-1 1 -1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;-1 -1 1;load sim.mat;% 目标向量T=class_1 class_2 class_3;% 创建网络net = newhop(T);% 导入待分类样本A=sim_1 sim_2 sim_3;% 网络仿真Y=sim(net,9 20,A);% 结果显示Y1=Y20(:,1:3);Y2=Y20(:,4:6);Y3=Y20(:,7:9);% 绘图result=T;A(1);Y(20);result=T;A1;Y20;figurefor p=1:3 for k=1:3 subplot(3,3,(p-1)*3+k) temp=resultp(:,(k-1)*3+1:k*3); m,n=size(temp); for i=1:m for j=1:n if temp(i,j)0 plot(j,m-i,ko,MarkerFaceColor,k); else plot(j,m-i,ko); end hold on end end axis(0 6 0 12) axis off if p=1 title(class num2str(k) elseif p=2 title(pre-sim num2str(k) else title(sim num2str(k) end end endtitle(学号:2121149); %把图的标题写作自己的学号2121149legend(评判准则,待分类的数字量化,评判结果 )%做出标记为评判准则,待分类的数字量化,评判结果结果如下:结果分析:第一个数据应该是一等奖,第二个数据是二等奖,第三个数据是三等奖第二章 蚂蚁系统解决TSP的研究 旅行商问题目标:找到最有的路径,完成 旅行商最优路径,已知十个城市,他们的位置固定,找出最佳的路径 其中第一列表示横坐标,第二列表示纵坐标。、21 旅行商问题的四种解决方案2.1.1神经元网络设计方案Hopfield神经元网络的思想1982年,Hoopfield用能量函数的思想形成一种具有对称连接的递归网络所执行的计算的新方法。这类具有反馈的特殊神经网络在80年代引起了大量的关注,产生了著名的Hopfield网络。尽管Hopfield网络不可能是真正的神经生物系统模型,他们包涵的原理,即在动态的稳定网络中存储信息原理的,是极深刻的。定义能量函数时下面的表达式:当达到平衡状态时候,那么能量最小,在这个问题中,我们只要找到平衡状态,那么我们想要的结果就出来了;下面结合实例看一下原理:定义能量计算一下第二部的A的取值:-0.3*1*1*0.5*(-1)+(-0.5)*0.2*1+1*1*(-0.5=-0.35则,根据规则,A的能量记作是0,同理我们得出上面的结论。可以看出当能量最低点的时候是-0.9,以后就达到了稳定状态,那么(0 1 1)就是我们想要的平衡状态。首先是个城市的横纵坐标在city-location.mat中。保存文档中需要的子程序到目录下,注意的是保存的文件名字要与主函数中所用到的函数名称是一样的,否则调用不出来的,如下图 diff-u.m 和energy.m;其中代码是% % % % 计算dufunction du=diff_u(V,d)global A Dn=size(V,1);sum_x=repmat(sum(V,2)-1,1,n);sum_i=repmat(sum(V,1)-1,n,1);V_temp=V(:,2:n);V_temp=V_temp V(:,1);sum_d=d*V_temp;du=-A*sum_x-A*sum_i-D*sum_d;% % % % % 计算能量函数function E=energy(V,d)global A Dn=size(V,1);sum_x=sumsqr(sum(V,2)-1);sum_i=sumsqr(sum(V,1)-1);V_temp=V(:,2:n);V_temp=V_temp V(:,1);sum_d=d*V_temp;sum_d=sum(sum(V.*sum_d);E=0.5*(A*sum_x+A*sum_i+D*sum_d);清空和定义全局变量clear allclcglobal A D% 导入城市位置load city_location% 计算相互城市间距离distance=dist(citys,citys);% 初始化网络N=size(citys,1);A=200;D=100;U0=0.1;step=0.0001;delta=2*rand(N,N)-1;U=U0*log(N-1)+delta;V=(1+tansig(U/U0)/2;iter_num=10000;E=zeros(1,iter_num);% 寻优迭代for k=1:iter_num % 动态方程计算 dU=diff_u(V,distance); % 输入神经元状态更新 U=U+dU*step; % 输出神经元状态更新 V=(1+tansig(U/U0)/2; % 能量函数计算 e=energy(V,distance); E(k)=e; end % 判断路径有效性rows,cols=size(V);V1=zeros(rows,cols);V_max,V_ind=max(V);for j=1:cols V1(V_ind(j),j)=1;endC=sum(V1,1);R=sum(V1,2);flag=isequal(C,ones(1,N) & isequal(R,ones(1,N);% 结果显示if flag=1 % 计算初始路径长度 sort_rand=randperm(N); citys_rand=citys(sort_rand,:); Length_init=dist(citys_rand(1,:),citys_rand(end,:); for i=2:size(citys_rand,1) Length_init=Length_init+dist(citys_rand(i-1,:),citys_rand(i,:); end % 绘制初始路径 figure(1) plot(citys_rand(:,1);citys_rand(1,1),citys_rand(:,2);citys_rand(1,2),o-) for i=1:length(citys) text(citys(i,1),citys(i,2), num2str(i) end text(citys_rand(1,1),citys_rand(1,2), 起点 ) text(citys_rand(end,1),citys_rand(end,2), 终点 ) title(优化前路径(长度: num2str(Length_init) ) axis(0 1 0 1)legend(学号2121149); grid on xlabel(城市位置横坐标) ylabel(城市位置纵坐标) % 计算最优路径长度 V1_max,V1_ind=max(V1); citys_end=citys(V1_ind,:); Length_end=dist(citys_end(1,:),citys_end(end,:); for i=2:size(citys_end,1) Length_end=Length_end+dist(citys_end(i-1,:),citys_end(i,:); end disp(最优路径矩阵);V1 % 绘制最优路径 figure(2) plot(citys_end(:,1);citys_end(1,1),. citys_end(:,2);citys_end(1,2),o-) for i=1:length(citys) text(citys(i,1),citys(i,2), num2str(i) end text(citys_end(1,1),citys_end(1,2), 起点 ) text(citys_end(end,1),citys_end(end,2), 终点 ) title(优化后路径(长度: num2str(Length_end) ) axis(0 1 0 1) grid on xlabel(城市位置横坐标) ylabel(城市位置纵坐标)legend(学号2121149); % 绘制能量函数变化曲线 figure(3) plot(1:iter_num,E); ylim(0 2000) title(能量函数变化曲线(最优能量: num2str(E(end) ); xlabel(迭代次数); ylabel(能量函数);legend(学号2121149);else disp(寻优路径无效);end从最优路径矩阵中也可以看出的走的顺序是4-9-6-5-3-2-1-7-8-10-42.1.2蚂蚁系统算法设计方案:蚂蚁算法就是近年来出现的,搜索效果良好的一种启发式搜索方法。蚂蚁算法的主要思想,是模拟蚂蚁寻找食物的过程。在蚂蚁在搜索的过程中,会不断分泌外激素。蚂蚁之间通过外激素交流信息,可以很快找到从蚁穴到食物之间的最短路线。蚂蚁算法的核心,就是让蚂蚁以外激素为媒介,互相交流信息,不断搜索更好的旅行路线,从而取得旅行商问题的令人满意的答案。蚁群算法介绍:(1)寻找最短路径的蚁群算法来源于蚂蚁寻食的行为。蚁群寻找食物时会派出一些蚂蚁分头在四周游荡, 如果一只蚂蚁找到食物, 它就返回巢中通知同伴并沿途留下“ 信息素”(外激素pheromone)作为蚁群前往食物所在地的标记。信息素会逐渐挥发,如果两只蚂蚁同时找到同一食物, 又采取不同路线回到巢中, 那么比较绕弯的一条路上信息素的气味会比较淡, 蚁群将倾向于沿另一条更近的路线前往食物所在地。蚁群算法设计虚拟的“蚂蚁”, 让它们摸索不同路线, 并留下会随时间逐渐消失的虚拟“信息素”, 根据“信息素较浓的路线更近”的原则, 即可选择出最佳路线. (2) 为了模拟实际蚂蚁的行为, 首先引进如下记号: 设m是蚁群中蚂蚁的数, (i,j=1,2,.,n)表示城市i 和城市j 之间的距离, 表示t 时刻位于城市i 的蚂蚁的个数, 则有 表示时刻在城市连线上残留的信息素。初始时刻,各条路径上的信息素相等,设。蚂蚁在运动过程中,根据各条路径上的信息素决定转移方向。表示在时刻蚂蚁由城市转移到城市的概率: (1)其中:为先验知识或称为能见度,在TSP问题中为城市转移到城市的启发信息,一般地取,为在路径上残留信息的重要程度;为启发信息的重要程度;与实际蚁群不同,人工蚁群系统具有记忆能力,用以记录蚂蚁K当前所走过的城市,称为禁忌表(下一步不充许选择的城市),集合随着进化过程进行动态调整。经过个时刻,所有蚂蚁完成了一次周游,此时应清空禁忌表,将当前蚂蚁所在的城市置入中准备下一次周游,这时计算每一只蚂蚁走过的路程,并保存最短路径。随着时间推移,以前的信息素会逐渐消失,用参数表示信息消失程度,蚂蚁完成一次循环后,各路径上信息素要根据(2)式作调整: (2)其中,表示第只蚂蚁在本次循环过程中留在路径上的信息素,表示本次循环中各路径上信息素的增量。式中Q是常量,Lk表示第k只蚂蚁的循环路线,即如果蚂蚁经过ij则信息素增量为一个常量除以蚂蚁k的巡回路线长,这里信息素增量只与蚂蚁巡回路线和Q有关系而和具体的dij无关。最后,设置周游次数计数器NC,当达到设定值时结束,最短路径为; 其中公式(1)的解释如下:先构造一个drawroute函数,用于后面我们得调用function DrawRoute(C,R) % DrawRoute.m N=length(R); scatter(C(:,1),C(:,2); hold on plot(C(R(1),1),C(R(N),1),C(R(1),2),C(R(N),2),g) h

温馨提示

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

评论

0/150

提交评论