- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)