- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
蚁群算法求解TSP问题概要
广东工业大学
课
程
作
业
课程题目 基于ACO算法 学生姓名 朱美霞 学生学号 2111405091 专业班级 计算机技术
2015 年2月 15日
1. AOC算法的数学模型
(1)、基本参数、信息素浓度公式、择路概率
设蚂蚁的数量为m,城市的数量为n,城市i与城市j之间的距离为dij,t时刻城市i与城市j之间的信息素浓度为tij(t),初始时刻,各个城市间连接路径上的信息素浓度相同,不妨记为tij(0)=t0。
蚂蚁k(k=1,2,..,m)根据各城市间连接路径上的信息素浓度,决定其下一个要访问的城市,设Pijk(t)表示t时刻,蚂蚁k从城市i到城市j的概率,其计算公式为如下:
其中:
(ij(t)为启发式函数,(ij(t)=1/dij,表示蚂蚁从城市i转移到城市j的期望程序;
allowk(k=1,2,…,m)表示蚂蚁k待访问的城市的集合,开始时allowk为其他n-1城市,随着时间推进,其中的元素不断减少,直至为空,表示所有城市访问完,即遍历所有城市。
(为信息素的重要程度因子,其值越大,转移中起的作用越大
(为启发函数的重要程度因子,其值越大,表示启发函数在转移中的作用越大,即蚂蚁以较大的概率转移到距离短的城市。
蚂蚁释放的信息素会随时间的推进而减少,设参数((0(1)表示信息素的挥发度,当所有蚂蚁完成一次循环后,各个城市间连接路径上的信息素浓度,需要实时更新。
tij(t+1)=(1-()tij(t)+(tij,(tij=
其中:
(tijk表示蚂蚁k在城市i与城市j的连接路径上,释放的信息素浓度
(tij表示所有蚂蚁在城市i与城市j的连接路径上,释放的信息素浓度。
(2)、(tijk的计算方法
(tijk=
其中:
Q为常数,表示蚂蚁循环一次释放的信息素的总量;
dij为第k只蚂蚁经过路径的长度,Length;
4. 相关程序
1、访问每个城市一次也仅一次的最短路径,共有30个
2、城市的坐标citys,这是直角坐标,根据二个城市的坐标值,可以用D=可计算出任意二个城市间的距离。
citys = 1304 2312
3639 1315
4177 2244
3712 1399
3488 1535
3326 1556
3238 1229
4196 1004
4312 790
4386 570
3007 1970
2562 1756
2788 1491
2381 1676
1332 695
3715 1678
3918 2179
4061 2370
3780 2212
3676 2578
4029 2838
4263 2931
3429 1908
3507 2367
3394 2643
3439 3201
2935 3240
3140 3550
2545 2357
2778 2826
3、代码
clear all
clc
load citys_data.mat
% 计算城市间相互距离
n = size(citys,1); %城市的个数
D = zeros(n,n); %n行n列的矩阵,即任意二个城市之间的距离
for i = 1:n
for j = 1:n
if i ~= j
D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));
else
D(i,j) = 1e-4;
end
end
end
%% 初始化参数
m = 50; % 蚂蚁数量
alpha
文档评论(0)