蚁群算法

蚁群优化算法是一种基于蚂蚁行为的随机优化技术,最初用于解决旅行商问题。本文介绍了算法的基本原理、流程,并通过调整alpha、beta、rho三个关键参数分析其对算法性能的影响。实验表明,alpha、beta和rho的合理设置对收敛速度和寻找全局最优解至关重要。
摘要由CSDN通过智能技术生成

蚁群优化算法

蚁群优化(ant colony optimization, ACO)是20世纪 90年代初由意大利学者 M.Dorigo等通过模拟蚂蚁的 行为而提出的一种随机优化 技术。最初用于求解旅行商问题, 现在已经成功用于许多组合 优 化 问 题 。 本 节 课 将 介 绍 ACO算法的基本原理和实现 技术,并通过介绍求解旅行 商问题的ACO算法了解实现 细节。

蚁群算法的基本原理

用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,时间越长,较短路径上积累的信息素浓度逐渐增高,选择该路径的蚂蚁数量越来越多,最终,整个蚁群会在正反馈的作用下集中到最佳的路径上,这就是最优解。

算法流程

在ACO 算法中,人工蚂蚁实际上代表的是一个解的随机构 建过程,从最初的空解开始,通过不断地向部分解添加解 的成分而构建出一个完整的解 • AS算法对TSP的求解主要有两大步骤:

  1. 路径构建
    在这里插入图片描述
  2. 信息素更新
    在这里插入图片描述

准备TSP数据

  1. 不修改参数只手动修改了31个城市点的数据并保存在city2.mat中
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从结果可以看出,这31个数据在AOC算法迭代了大约125次后最短距离和平均距离开始趋于稳定

alpha、beta、rho三个参数的设置

alpha:信息素重要程度因子
beta:启发函数重要程度因子
rho:信息素挥发因子
选取几个范围数据调整alpha(beta = 5,rho = 1时)
  1. alpha = 1
    在这里插入图片描述
  2. alpha = 2
    在这里插入图片描述
  3. alpha = 3
    在这里插入图片描述
  4. alpha = 5
    在这里插入图片描述
  5. alpha =10
    在这里插入图片描述
  6. alpha =15
    在这里插入图片描述

对alpha的结论

取了1,2,3,5,10,15,这几个数据。
由这几个alpha的取值分析得出:当参数alpha的值越大,收敛速度越快。在取值在10,15之后迭代次数在40次后=附近开始趋于稳定。alpha取值为1,2,3,5时,收敛速度较快。在取值5,10,15的时候,收敛速度较慢,迭代变化效果不够明显,所以alpha的取值不宜过大。
alpha指的是蚂蚁在运动过程中所积累的信息素在指导蚁群搜索中的相对重要程度,alpha的值越大,蚂蚁选择以前走过的路径可能性越大,反之,值越小会使得只得到局部最优。
总而言之,alpha取值小时,收敛速度较慢,算法容易得到局部最优解,取值大事,收敛速度较快,易出现过早收敛,

beta的值修改(alpha = 1,rho = 1时)
  1. beta = 5

在这里插入图片描述
3. beta = 1
在这里插入图片描述
4. beta = 7
在这里插入图片描述
5. beta =10
在这里插入图片描述
6. beta = 15
在这里插入图片描述

对beta的结论

原参数beta的取值为5,在改为beta=1时不易收敛,在beta = 15时,迭代次数趋于40的时候接近稳定。beta取值越大,蚂蚁在某个局部点上选择最短路径的可能性越大,但蚁群搜索最优路径的随机性越小,若beta取值偏小,蚁群会随机搜索,蚁群更偏向于根据信息素浓度确定路径,算法收敛变快,从而难以找到最优解。

rho参数(alpha = 1,beta = 5)
  1. rho = 0.1
    在这里插入图片描述
  2. rho = 0.05
    在这里插入图片描述
  3. rho = 0.01
    在这里插入图片描述
  4. rho = 0.5
    在这里插入图片描述
  5. rho = 0.8
    在这里插入图片描述
rho参数的结论

对rho取值了0.1 , 0.01 , 0.05 , 0.5, 0.8几个数据。其中取值为0.01 ,0.05 , 0.5 ,0.8时迭代速度都比取值为0.1时快。当rho参数较小时,未被选取的路径信息素将减少,使得搜索空间减小从而收敛性变大而得到局部最优解,rho取值过大时,无效的路径可以排除搜索但是不能保证有效路径也会被排除,从而影响到最优解的搜索,收敛速度变慢。

以上可得,慎重选择参数范围对算法有着较大影响。

代码

%% 旅行商问题(TSP)优化
%% 清空环境变量
clear all
clc

%% 导入数据
load city2.mat

%% 计算城市间相互距离
fprintf('Computing Distance Matrix... \n');
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;
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值