目录

一、蚁群算法特点

二、基本蚁群算法及其流程

三、改进蚁群算法

1.精英蚂蚁系统

2.最大最小蚂蚁系统

3.基于排序的蚁群算法

4.自适应蚁群算法

四、例题


一、蚁群算法特点

(1)自组织算法
组织力和组织指令来自系统内部
(2)并行算法
蚂蚁搜索过程彼此独立,仅通过信息素进行通信
(3)正反馈算法
信息素堆积是一个正反馈的过程

二、基本蚁群算法及其流程

算法初始时刻,将m只蚂蚁随机放到n座城市,同时,将每只蚂蚁的禁忌表tabu的第一个元素设置为它当前所在城市。此时个路径上的信息素相等,接下来每只蚂蚁根据路径上残留的信息素量和启发式信息(两城市距离)独立地选择下一座城市,在时刻t,蚂蚁k从城市i转移到城市j的概率为:

当所有蚂蚁完成一次周游后,各路径上的信息素更新:

其中表示本次迭代中边上信息素的增量,即

表示第k只蚂蚁在被刺迭代中留在边上的信息素两,如果蚂蚁没有经过,则其值为零。

M。Dorigo提出了3中蚂蚁系统,上面这种称为ant-cycle模型,另外两种模型称为ant-quantity模型和ant-density模型,其差别主要在于

ant-quantity模型

ant-density模型

实验结果表明,ant-cycle模型比ant-quantity和ant-density模型有更好的性能。这是因为ant-cycle模型利用全局信息更新路径上的信息素量,而ant-quantity和ant-density模型使用局部信息

三、改进蚁群算法

1.精英蚂蚁系统

该算法将已经发现的最好解称为,而该路径在修改信息素轨迹时,人工释放额外的信息孙,以增强正反馈的效果。信息素修改功式为

式中,式调整影响权重的参数,而由下式给出

是已知最优路径的长度

2.最大最小蚂蚁系统

该算法主要有三方面不同

1)每次循环,只有一只蚂蚁进行信息素过呢更新,该蚂蚁可以是本次循环最优解,也可以是全局最优解

2)信息素轨迹量的值域限制在

3)信息素初始值设置在

3.基于排序的蚁群算法

蚂蚁按旅行长度排名(短的靠前),蚂蚁释放的信息素的量要和蚂蚁的排名相乘。每次循环中,排名前位的蚂蚁和精英蚂蚁才允许释放信息。排名第位的蚂蚁乘以系数

4.自适应蚁群算法

自适应地改变的值。的初始值;当算法求得的最优值在次循环内没有明显改进时,减为

四、例题

求函数 的最小值,其中 x的取值范围为 [–5,5],y的取值范围为 [–5,5]。这是一个有多个局部极值的函数,其函数值图形如下图所示。

解:仿真过程如下:

(1)初始化蚂蚁个数 m = 20,最大迭代次数 G = 500,信息素蒸发系数 Rho = 0.9,转移概率常数 P0 = 0.2,局部搜索补偿 step = 0.1。

(2)随机产生蚂蚁初始位置,计算适应度函数值,设为初始信息素,计算状态转移概率。

(3)进行位置更新:当状态转移概率小于转移概率常数时,进行局部搜索;当状态转移概率大于转移概率常数时,进行全局搜索,产生新的蚂蚁位置,并利用边界吸收方式进行边界条件处理,将蚂蚁位置界定在取值范围内。

(4)计算新的蚂蚁位置的适应度值,判断蚂蚁是否移动,更新信息素。

(5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。

%%%%%%%%%%%%%%%%%%%%蚁群算法求函数极值%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;               %清除所有变量
close all;               %清图
clc;                     %清屏
m=20;                    %蚂蚁个数
G_max=200;               %最大迭代次数
Rho=0.9;                 %信息素蒸发系数
P0=0.2;                  %转移概率常数
XMAX= 5;                 %搜索变量x最大值
XMIN= -5;                %搜索变量x最小值
YMAX= 5;                 %搜索变量y最大值
YMIN= -5;                %搜索变量y最小值
%%%%%%%%%%%%%%%%%随机设置蚂蚁初始位置%%%%%%%%%%%%%%%%%%%%%%
for i=1:mX(i,1)=(XMIN+(XMAX-XMIN)*rand);X(i,2)=(YMIN+(YMAX-YMIN)*rand);Tau(i)=func(X(i,1),X(i,2));
end
step=0.1;                %局部搜索步长
for NC=1:G_maxlamda=1/NC;[Tau_best,BestIndex]=min(Tau);%%%%%%%%%%%%%%%%%%计算状态转移概率%%%%%%%%%%%%%%%%%%%%for i=1:mP(NC,i)=(Tau(BestIndex)-Tau(i))/Tau(BestIndex);end%%%%%%%%%%%%%%%%%%%%%%位置更新%%%%%%%%%%%%%%%%%%%%%%%%for i=1:m%%%%%%%%%%%%%%%%%局部搜索%%%%%%%%%%%%%%%%%%%%%%if P(NC,i)<P0temp1=X(i,1)+(2*rand-1)*step*lamda;temp2=X(i,2)+(2*rand-1)*step*lamda;else%%%%%%%%%%%%%%%%全局搜索%%%%%%%%%%%%%%%%%%%%%%%temp1=X(i,1)+(XMAX-XMIN)*(rand-0.5);temp2=X(i,2)+(YMAX-YMIN)*(rand-0.5);end%%%%%%%%%%%%%%%%%%%%%边界处理%%%%%%%%%%%%%%%%%%%%%%%if temp1<XMINtemp1=XMIN;endif temp1>XMAXtemp1=XMAX;endif temp2<YMINtemp2=YMIN;endif temp2>YMAXtemp2=YMAX;end%%%%%%%%%%%%%%%%%%蚂蚁判断是否移动%%%%%%%%%%%%%%%%%%if func(temp1,temp2)<func(X(i,1),X(i,2))X(i,1)=temp1;X(i,2)=temp2;endend%%%%%%%%%%%%%%%%%%%%%%%更新信息素%%%%%%%%%%%%%%%%%%%%%%%for i=1:mTau(i)=(1-Rho)*Tau(i)+func(X(i,1),X(i,2));end[value,index]=min(Tau);trace(NC)=func(X(index,1),X(index,2));
end
[min_value,min_index]=min(Tau);
minX=X(min_index,1);                           %最优变量
minY=X(min_index,2);                           %最优变量
minValue=func(X(min_index,1),X(min_index,2));  %最优值
figure
plot(trace)
xlabel('搜索次数');
ylabel('适应度值');
title('适应度进化曲线')
%%%%%%%%%%%目标函数
%%%%%%%%%%%%%%%%%%%%%%%适应度函数%%%%%%%%%%%%%%%%%%%%%%%
function value=func(x,y)
value =20*(x^2-y^2)^2-(1-y)^2-3*(1+y)^2+0.3;
end

蚁群算法ACO求解连续函数最值问题相关推荐

  1. 蚁群算法ACO求解TSP问题

    目录 一.蚁群算法特点 二.基本蚁群算法及其流程 三.改进蚁群算法 1.精英蚂蚁系统 2.最大最小蚂蚁系统 3.基于排序的蚁群算法 4.自适应蚁群算法 四.例题 一.蚁群算法特点 (1)自组织算法 组 ...

  2. 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)

    <蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...

  3. 【智能优化算法】蚁群算法ACO

    文章目录 [智能优化算法] 蚁群算法 1. 简介 1.1 简介 1.2 蚁群流程图 1.3 分类(可以不看) 2. 算法 2.1 参数讲解 2.2 计算公式 1) 转移概率公式 2) 启发式因子计算公 ...

  4. 万字长文带你了解蚁群算法及求解复杂约束问题【源码实现】

    蚁群算法 蚁群算法是一种源于大自然生物世界的新的仿生进化算法,由意大利学者M. Dorigo, V. Maniezzo和A. Colorni等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径行为而 ...

  5. 智能优化算法之蚁群算法(ACO)

    蚁群算法优缺点 优点 蚁群算法是一种本质上的并行算法.每只蚂蚁搜索的过程彼此独立,仅通过信息激素进行通信.不仅增加了算法的可靠性,也使得算法具有较强的全局搜索能力. 蚁群算法是一种自组织的算法. 蚁群 ...

  6. 基于蚁群算法(ACO)的函数寻优代码详解

    前言   蚁群算法与遗传算法一并属于启发式算法,其原理有一定的相似性.   蚁群算法的仿生原理可以这样举例:在不远处的地上有一块奶糖,这时候你用手放个蚂蚁在地上,在无其他因素影响的情况下,这只蚂蚁会爬 ...

  7. 图说蚁群算法(ACO)附源码

    PS:再过几天就可以返校收拾东西了,想想还有点小激动呐hhh~回想疫情宅家的这半年,真是一段充满了焦虑.惊喜.忙碌.充实又时而无聊的时光...返校只能待三天又让人有点小遗憾呐.就想着趁还在家这几天,把 ...

  8. 蚁群算法求函数最值c语言,蚁群算法代码(求函数最值)

    蚁群算法简单应用 function [F]=F(x1,x2) %目标函数 F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7); End f ...

  9. 4-1蚁群算法(ACO)原理

    查看完整原理请点击http://www.daimapi.com/algorithm4_1/ 1ACO原理 蚁群算法最早是由Marco Dorigo等人在1991年提出,他们在研究新型算法的过程中,发现 ...

最新文章

  1. 用 Javascript 获取页面大小、窗口大小和滚动条位置
  2. 记录一次【模仿真实环境】的内网漫游
  3. 树莓派第三代跨越发展,采用64位处理器内建WiFi及蓝牙
  4. 倡导国际农民丰收节贸易会-万祥军:中国-中东欧谋定启动
  5. 如何提取SAP UI5应用的技术信息
  6. Redis服务器的启动过程分析
  7. 获取网页中选中的文字
  8. YbtOJ#732-斐波那契【特征方程,LCT】
  9. cmd进入python环境_python2和python3同时存在,如何CMD中进入不同的环境
  10. [强]用VC++6.0编译调试汇编程序
  11. Java笔记-Integer或Long转String时补0(补零)
  12. linux sed写文件内容,Linux学习——文本处理:sed
  13. 7-6 红豆生南国 (25 分)
  14. 基于LiteOS Studio零成本学习LiteOS物联网操作系统
  15. Polygon Mesh Processing读书笔记——1三角网格Triangle Meshes
  16. 安卓版App开发心得
  17. Cmake编译 OPENCV_DNN_CUDA 报错: CMake Error at modules/dnn/CMakeLists.txt:39 (message):
  18. win7nodejs压缩包配置环境变量
  19. smoothstep(),平滑阶梯函数,平滑过渡函数
  20. 卡内基梅隆大学计算机专业录取难,跨专业申请卡内基梅隆大学计算机录取

热门文章

  1. 吃什么怎么吃关系着民族的命运
  2. Python实现线性判别分析教程
  3. [Mysql] LAST_DAY函数 | DATE_ADD函数 | DATE_SUB函数
  4. 深度模型(一):LSTM
  5. Jupyter notebook中自定义支持天软TSl语言的魔术命令
  6. dis的前缀单词有哪些_以ir dis为前缀的单词各20个,要多种词性
  7. Pr 入门教程如何向影片中的剪辑添加过渡效果?
  8. 几行代码解决百度云视频变成 8秒净网公告问题(滑稽)
  9. Python 变量作用域问题 函数名.变量名
  10. Python绘制地理图--Cartopy基础