资源简介
可以运行的一种蚁群算法代码,下载既用,方便学习。可以用此算法做一些优化;
代码片段和文件信息
%% I. 清空环境变量
clear all
clc
%% II. 导入数据
load citys_data.mat
%% III. 计算城市间相互距离
n = size(citys1);
D = zeros(nn);
for i = 1:n
for j = 1:n
if i ~= j
D(ij) = sqrt(sum((citys(i:) - citys(j:)).^2));
else
D(ij) = 1e-4;
end
end
end
%% IV. 初始化参数
m = 50; % 蚂蚁数量
alpha = 1; % 信息素重要程度因子
beta = 5; % 启发函数重要程度因子
rho = 0.1; % 信息素挥发因子
Q = 1; % 常系数
Eta = 1./D; % 启发函数
Tau = ones(nn); % 信息素矩阵
Table = zeros(mn); % 路径记录表
iter = 1; % 迭代次数初值
iter_max = 200; % 最大迭代次数
Route_best = zeros(iter_maxn); % 各代最佳路径
Length_best = zeros(iter_max1); % 各代最佳路径的长度
Length_ave = zeros(iter_max1); % 各代路径的平均长度
%% V. 迭代寻找最佳路径
while iter <= iter_max
% 随机产生各个蚂蚁的起点城市
start = zeros(m1);
for i = 1:m
temp = randperm(n);
start(i) = temp(1);
end
Table(:1) = start;
citys_index = 1:n;
% 逐个蚂蚁路径选择
for i = 1:m
% 逐个城市路径选择
for j = 2:n
tabu = Table(i1:(j - 1)); % 已访问的城市集合(禁忌表)
allow_index = ~ismember(citys_indextabu);
allow = citys_index(allow_index); % 待访问的城市集合
P = allow;
% 计算城市间转移概率
for k = 1:length(allow)
P(k) = Tau(tabu(end)allow(k))^alpha * Eta(tabu(end)allow(k))^beta;
end
P = P/sum(P);
% 轮盘赌法选择下一个访问城市
Pc = cumsum(P);
target_index = find(Pc >= rand);
target = allow(target_index(1));
Table(ij) = target;
end
end
% 计算各个蚂蚁的路径距离
Length = zeros(m1);
for i = 1:m
Route = Table(i:);
for j = 1:(n - 1)
Length
- 上一篇:卡尔曼滤波器matlab
- 下一篇:zw_Matlab余弦相似度算法.zip
相关资源
- Dstar(动态路径规划)算法62845
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 光纤传输中的分布傅立叶算法matlab实
- k近邻算法matlab实现
- matlab编写的susan算法程序
- matlab-图像处理算法
- matlab链码提取算法
- matlab 数字图像对比度拉伸算法
- 数字图像处理radon matlab变换算法代码
- 主动轮廓模型算法matlab程序
- MATLAB 实现各类常见算法
- 数字信号处理 理论算法与实现 胡广书
- 基于BP神经网络的盲均衡算法 C程序(
- 基于harris算法的角点检测matlab原代码
- 图像匹配matlab源程序sift算法
- matlab编写的量子遗传算法
- 用蚁群算法求解TSP问题的matlab程序
- 粒子群算法matlab工具箱
- Matlab图像分割边缘提取算法
- prony 算法
- 蚁群算法论文+源代码
- 基于粒子群算法的非合作博弈的matl
- 协同进化遗传算法求解函数优化问题
- pri传统分选算法
- 基于RSSI的VIRE定位算法
- 相关向量机的快速算法
- Gardner_for _MPSK(PSK的符号同步算法)
- 粒子群算法优化pid源码 matlab仿真.ra
- 系数绝对值最大 图像融合MATLAB算法
评论
共有 条评论