网站大量收购闲置独家精品文档,联系QQ:2885784924

蚁群算法--第四次作业.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
蚁群算法--第四次作业蚁群算法--第四次作业

题目 请以100个城市的旅行商问题为例,写出使用20只人工蚂蚁进行旅行商问题求解的基本步骤。 次数 第四次作业 姓名 周璐 学号班级 7班 正文 Q: 请以100个城市的旅行商问题为例,写出使用20只人工蚂蚁进行旅行商问题求解的基本步骤。 A:核心公式: 是信息素浓度因子;是可见度因子,通常取为城市间距离的倒数;和用来控制信息素和可见度的相对重要性;为蚂蚁k的可访问城市集合 ;Q为常量。 数据结构: 信息素矩阵(100×100阶,记录信息素浓度) 可见度矩阵(100×100阶,通常取为距离(i, j)的倒数) 禁忌表Tabu(20×100阶,记录蚂蚁k走过的城市) 初始化: 20蚂蚁随机分布到100个城市 环游: 按照第一个核心公式计算转移概率 蚂蚁依次选择路径直到返回出发点 更新信息素浓度 按照第二个核心公式计算t+1时刻的信息素浓度 停止条件 全部蚂蚁选择了同一条路线 算法运行到最大迭代次数 旅行商问题代码思路大体如下: /****************************************************************************/ /初始化蚁群 /****************************************************************************/ m=20; //蚁群中蚂蚁的数量,当m接近或等于城市个数n时,本算法可以在最少的迭代次数内找到最优解 n=20; //表示TSP问题的规模,亦即城市的数量,这里为100 D[100][100]={…}; //表示城市完全地图的赋权邻接矩阵,记录城市之间的距离 Nc_max=200; //最大循环次数,即算法迭代的次数,亦即蚂蚁出动的拨数(每拨蚂蚁的数量都是20) alpha=1; //蚂蚁在运动过程中所积累信息(即信息素)在蚂蚁选择路径时的相对重要程度,alpha过大时,算法迭代到一定代数后将出现停滞现象 beta=5; //启发式因子在蚂蚁选择路径时的相对重要程度 rho=0.5; //(0rho1)表示路径上信息素的衰减系数(亦称挥发系数、蒸发系数),1-rho表示信息素的持久性系数 Q=100; //蚂蚁释放的信息素量,对本算法的性能影响不大 /****************************************************************************/ /变量初始化 /****************************************************************************/ eta=1/D; //启发式因子,这里设为城市之间距离的倒数 pheromone=ones(n,n); //信息素矩阵,这里假设任何两个城市之间路径上的初始信息素都为1 tabu_list=zeros(m,n); //禁忌表,记录蚂蚁已经走过的城市,蚂蚁在本次循环中不能再经过这些城市。当本次循环结束后,禁忌表被用来计算蚂蚁当前所建立的解决方案,即经过的路径和路径的长度 Nc=0; //循环次数计数器 routh_best=zeros(Nc_max,n); //各次循环的最短路径 length_best=ones(Nc_max,1); //各次循环最短路径的长度 length_average=ones(Nc_max,1);//各次循环所有路径的平均长度 while NcNc_max //将m只蚂蚁放在n个城市上 rand_position=[]; for (i=1;iceil(m/n);i++) rand_position=[rand_position,randperm(n)]; end tabu_list(i,0)=(rand_position(1:m));//这里i从0取到19,1:m表示随着i的增大而讲tabu_list从随机位置1初始化到位置m。将蚂蚁放在城市上之后的禁忌表,第i行表示第i只蚂蚁,第i行第一列元素表示第i只蚂蚁所在的初始城市 /****************************************************************************/ /m只蚂蚁按概率函数选择下一座城市,在本次循环中完成各自的周游 /****************************************************************************/ for j=

文档评论(0)

skewguj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档