第10章 经典智能算法——10.3 蚁群算法概述(1)

简介: 第10章 经典智能算法——10.3 蚁群算法概述(1)

10.3  蚁群算法概述(1)


蚁群算法由Dorigo1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。


10.3.1  基本原理


蚁群算法(ACO)是模拟蚂蚁觅食的原理,设计出的一种群集智能算法。蚂蚁在觅食过程中能够在其经过的路径上留下一种称为信息素的物质,其在觅食过程中能够感知这种物质的强度,从而指导自己的行动方向,它们总是朝着该物质强度高的方向移动,因此大量蚂蚁组成的集体觅食就表现为一种对信息素的正反馈现象。

某一条路径越短,路径上经过的蚂蚁越多,其信息素遗留的也就越多,信息素的浓度也就越高,蚂蚁选择这条路径的概率也就越高,由此构成了正反馈过程,从而逐渐逼近最优路径,找到最优路径。

蚂蚁觅食的运行轨迹模式如图10-12所示。蚂蚁以信息素作为媒介而间接进行信息交流,判断洞穴到食物地点的最佳路径。

53a8e94de4de71d36bffe47c9f436bf7_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

10-12  蚂蚁觅食的运行轨迹模式

当蚂蚁从食物地点走到洞穴,或者从洞穴走到食物地点时,都会在经过的路径上释放信息素,从而形成一条含有信息素的路径。蚂蚁可以感觉出路径上信息素浓度的大小,并且以较高的概率选择信息素浓度较高的路径。

人工蚂蚁的搜索主要包括以下3种智能行为。

蚂蚁利用信息素进行相互通信:蚂蚁在所选择的路径上会释放一种叫作信息素的物质,当其他蚂蚁进行路径选择时,会根据路径上的信息素浓度进行选择,这样信息素就成为蚂蚁之间进行通信的媒介。

蚂蚁的记忆行为:一只蚂蚁搜索过的路径在下次搜索时就不再被该蚂蚁选择,因此在蚁群算法中建立禁忌表进行模拟。

蚂蚁的集群活动:通过一只蚂蚁的运动很难到达食物地点,但整个蚁群进行搜索就完全不同。当某些路径上通过的蚂蚁越来越多时,路径上留下的信息素也就越多,导致信息素浓度增大,蚂蚁选择该路径的概率随之增加,从而进一步增加该路径的信息素浓度;而通过的蚂蚁比较少的路径上的信息素会随着时间的推移而挥发,从而变得越来越少。


10.3.2  程序设计


蚁群算法不仅利用了正反馈原理,在一定程度上可以加快进化过程,而且是一种本质并行的算法,个体之间不断进行信息交流和传递,有利于发现较好解。

根据上一节对蚁群算法的介绍,编写蚁群算法MATLAB源程序:


clear all
%%%%%% 初始化 %%%%%%
Ant = 300;      % 妈蚁数量
Times = 80;     % 蚂蚁移动次数
Rou = 0.9;      % 信息素挥发系数
P0 = 0.2;       % 转移概率常数
Lower_1 = -1;   % 设置搜索范围
Upper_1 = 1;
Lower_2 = -1;
Upper_2 = 1;
for i = 1 : Ant
    % 随机设置蚂蚁的初始位置
    X(i, 1) = (Lower_1 + (Upper_1 - Lower_1) * rand);
    X(i, 2) = (Lower_2 + (Upper_2 - Lower_2) * rand);
    Tau(i) = F(X(i, 1), X(i, 2));
end
step = 0.05;
f = '-(x .^ 4 + 3 * y .^ 4 - 0.2 * cos(3 * pi * x) - 0.4 * cos(4 * pi * y) + 0.6)';
[x, y] = meshgrid(Lower_1 : step : Upper_1, Lower_2 : step : Upper_2);
z = eval(f);
figure(1);
subplot(1, 2, 1);
mesh(x, y, z);
hold on;
plot3(X(:, 1), X(:, 2), Tau, 'k*')
hold on;
text(0.1, 0.8, -0.1, '蚂蚁的初始分布位置');
xlabel ('x');
ylabel ('y');
zlabel('f(x,y)');
for T = 1 : Times
    lamda = 1 / T;
    [Tau_Best(T), BestIndex] = max(Tau);
    for i = 1 : Ant
        P(T, i) = (Tau(BestIndex) - Tau(i)) / Tau(BestIndex); % 计算状态转移概率
    end
    for i = 1 : Ant
        if P(T, i) < P0     % 局部搜索
            temp1 = X(i, 1) + (2 * rand - 1) * lamda;
            temp2 = X(i, 2) + (2 * rand - 1) * lamda;
        else                % 全局搜索
            temp1 = X(i, 1) + (Upper_1 - Lower_1) * (rand - 0.5);
            temp2 = X(i, 2) + (Upper_2 - Lower_2) * (rand - 0.5);
        end
        %越界处理
        if temp1 < Lower_1
            temp1 = Lower_1;
        end
        if temp1 > Upper_1
            temp1 = Upper_1;
        end
        if temp2 < Lower_2
            temp2 = Lower_2;
        end
        if temp2 > Upper_2
            temp2 = Upper_2;
        end
        %%%
        if F(temp1, temp2) > F(X(i, 1), X(i, 2))    % 判断蚂蚁是否移动
            X(i, 1) = temp1;
            X(i, 2) = temp2;
        end
    end
    for i = 1 : Ant
        % 更新信息量
        Tau(i) = (1 - Rou) * Tau(i) + F(X(i, 1), X(i, 2));
    end
end
subplot(1, 2, 2);
mesh(x, y, z);
hold on;
x = X(:, 1);
y = X(:, 2);
plot3(x, y, eval(f), 'k*');
hold on;
text(0.1, 0.8, -0.1, '蚂蚁的最终分布位置');
xlabel('x');
ylabel('y');
zlabel('f(x,y)');
[max_value, max_index] = max(Tau);
maxX = X(max_index, 1);
maxY = X(max_index, 2);
maxValue = F(X(max_index, 1), X(max_index, 2));


设定目标函数如下:


function [F] = F(x1, x2)
F = -(x1 .^ 4 + 3 * x2 .^ 4 - 0.2 * cos(3 * pi * x1) - 0.4 * cos(4 * pi * x2) + 0.6);


运行程序得到蚂蚁算法运行前后蚂蚁的位置变化示意图,如图10-13所示。

4adb0ad21fc8b1ca071527691961c673_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

10-13  蚂蚁算法运行前后蚂蚁的位置变化示意图


相关文章
|
2月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
298 0
|
6月前
|
机器学习/深度学习 数据采集 算法
智能限速算法:基于强化学习的动态请求间隔控制
本文分享了通过强化学习解决抖音爬虫限速问题的技术实践。针对固定速率请求易被封禁的问题,引入基于DQN的动态请求间隔控制算法,智能调整请求间隔以平衡效率与稳定性。文中详细描述了真实经历、问题分析、技术突破及代码实现,包括代理配置、状态设计与奖励机制,并反思成长,提出未来优化方向。此方法具通用性,适用于多种动态节奏控制场景。
231 6
智能限速算法:基于强化学习的动态请求间隔控制
|
2月前
|
算法 安全 定位技术
【创新未发表】【无人机路径巡检】三维地图路径规划无人机路径巡检GWO孙发、IGWO、GA、PSO、NRBO五种智能算法对比版灰狼算法遗传研究(Matlab代码实现)
【创新未发表】【无人机路径巡检】三维地图路径规划无人机路径巡检GWO孙发、IGWO、GA、PSO、NRBO五种智能算法对比版灰狼算法遗传研究(Matlab代码实现)
212 40
|
1月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
236 5
|
7月前
|
人工智能 自然语言处理 算法
阿里云 AI 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级
本文介绍了阿里云 AI 搜索开放平台的技术的特点及其在各行业的应用。
774 3
|
3月前
|
机器学习/深度学习 算法 机器人
基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)
基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)
110 0
|
5月前
|
数据采集 并行计算 算法
基于蚁群算法求解带时间窗的车辆路径问题
基于蚁群算法求解带时间窗的车辆路径问题
126 0
|
6月前
|
传感器 人工智能 算法
企业内训|智能调控系统算法与优化——某汽车厂商
5月9日,东北某市,TsingtaoAI团队为某汽车厂商的智能驾驶业务和研发团队交付“智能调控系统算法与优化”课程。 本课程系统化解析智能调控系统的核心算法原理与前沿优化技术,深度融合经典控制、现代控制及模型预测控制(MPC)三大理论体系,聚焦自动驾驶与工业自动化场景的实践需求。课程从硬件层(传感器、异构计算芯片、执行器)到软件层(闭环反馈、实时优化)逐层拆解系统架构,结合车辆横纵向控制等实际案例,详解PID参数整定、LQR最优控制、MPC多目标优化等关键技术。
144 16
|
7月前
|
人工智能 自然语言处理 算法
通义灵码 CCF 算法大会首秀,解码研发智能落地「黄金三角」| 文末领取PPT
通义灵码在首届中国计算机学会(CCF)算法大会现场亮相,与领域学者、企业专家、学生开发者共话大模型与 AI 辅助编程对算法创新和开发效率带来的改变。现场交流讨论氛围热烈,广大开发者对通义灵码表现出高度关注和实践热情。

热门文章

最新文章