- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
蚁群算法人工智能实验报告蚁群算法人工智能实验报告
人工智能实验报告
姓名:
学号:
班级:
实验时间:
蚁群算法
实验原理:
蚂蚁在觅食过程中可以找出巢穴到食物源的最短路径,为什么?
(1)信息素(pheromone)
(2)正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。
(3)挥发现象:路径上的信息素浓度会随着时间推进而逐渐衰减。
蚁群算法的缺点:
1)收敛速度慢
2)易于陷入局部最优
改进:
1)采用局部优化,设计了三种优化算子。
2)采用蚁群优化算法。
3)其它优化算法
实验内容:
旅行商问题(TSP,traveling salesman problem):
一商人去n个城市销货,所有城市走一遍再回到起点,使所走路程最短。
实验步骤:
算法代码:
%%蚁群算法的优化计算——旅行商问题(TSP)优化
%% 清空环境变量
clear all
clc
%% 导入数据
load citys_data.mat
%% 计算城市间相互距离
n = size(citys,1);
D = zeros(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 = 1; % 信息素重要程度因子
beta = 5; % 启发函数重要程度因子
rho = 0.1; % 信息素挥发因子
Q = 1; % 常系数
Eta = 1./D; % 启发函数
Tau = ones(n,n); % 信息素矩阵
Table = zeros(m,n); % 路径记录表
iter = 1; % 迭代次数初值
iter_max = 200; % 最大迭代次数
Route_best = zeros(iter_max,n); % 各代最佳路径
Length_best = zeros(iter_max,1); % 各代最佳路径的长度
Length_ave = zeros(iter_max,1); % 各代路径的平均长度
%% 迭代寻找最佳路径
while iter = iter_max
% 随机产生各个蚂蚁的起点城市
start = zeros(m,1);
for i = 1:m
temp = randperm(n); %返回n个[0, n]间的随机元素向量
start(i) = temp(1);
end
Table(:,1) = start;
% 构建解空间
citys_index = 1:n; %访问1~n这n个城市
% 逐个蚂蚁路径选择
for i = 1:m
% 逐个城市路径选择
for j = 2:n %各个蚂蚁都需要访问n-1个城市
tabu = Table(i,1:(j - 1)); % 已访问的城市集合(禁忌表)
allow_index = ~ismember(citys_index,tabu); %判断citys_index中元素有没有在tabu中出现,出现用1表示,否则用0表示。
allow = citys_index(allow_index); % 待访问的城市集合
P = allow;
% 计算城市间转移概率
f
文档评论(0)