🐼蚁群算法ACA
2021-10-15
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

原理

蚁群算法是一种源于大自然生物世界的新的仿生进化算法,由意大利学者M. Dorigo, V. Maniezzo和A. Colorni等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径行为而提出的一种基于种群的启发式随机搜索算法"。蚂蚁有能力在没有任何提示的情形下找到从巢穴到食物源的最短路径,并且能随环境的变化,适应性地搜索新的路径,产生新的选择。其根本原因是蚂蚁在寻找食物时,能在其走过的路径.上释放一种特殊的分 泌物一信息素 (也称外激素),随着时间的推移该物质会逐渐挥发,后来的蚂蚁选择该路径的概率与当时这条路径上信息素的强度成正比。当一条路径上通过的蚂蚁越来越多时,其留下的信息素也越来越多,后来蚂蚁选择该路径的概率也就越高,从而更增加了该路径上的信息素强度。而强度大的信息素会吸引更多的蚂蚁,从而形成一种正反馈机制。通过这种正反馈机制,蚂蚁最终可以发现最短路径。 蚁群算法是对自然界蚂蚁的寻径方式进行模拟而得出的一种仿生算法。 蚂蚁在运动过程中,能够在它所经过的路径.上留下信息素进行信息传递,而且蚂蚁在运动过程中能够感知这种物质,并以此来指导自己的运动方向。因此,由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。
若蚂蚁从A点出发,速度相同,食物在D点,则它可能随机选择路线ABD或ACD。假设初始时每条路线分配一只蚂蚁, 每个时间单位行走一步。 图所示为经过8个时间单位时的情形:走路线ABD的蚂蚁到达终点;而走路线ACD的蚂蚁刚好走到C点,为一半路程
notion image
 
图2表示从开始算起,经过16个时间单位时的情形:走路线ABD的蚂蚁到达终点后得到食物又返回了起点A,而走路线ACD的蚂蚁刚好走到D点。
notion image
 
  • 假设蚂蚁每经过一-处所留下的信息素为1个单位,则经过32个时间单位后,所有开始一起出发的蚂蚁都经过不同路径从D点取得了食物。此时ABD的路线往返了2趟,每一处的信息素为4个单位:而ACD的路线往返了一趟,每一处的信息素为2个单位,其比值为2: 1
  • 寻找食物的过程继续进行,则按信息素的指导,蚁群在ABD路线上增派一只蚂蚁(共2只),而ACD路线上仍然为一只蚂蚁。再经过32个时间单位后,两条线路.上的信息素单位积累为12和4,比值为3: 1
  • 若按以上规则继续,蚁群在ABD路线上再增派-一只蚂蚁(共3只),而ACD路线.上仍然为一只蚂蚁。再经过32个时间单位后,两条线路上的信息素单位积累为24和6,比值为4: 1
  • 若继续进行,则按信息素的指导,最终所有的蚂蚁都会放弃ACD路线,而选择ABD路线。这也就是前面所提到的正反馈效应。
  • 信息素的更新方式有两种: 一是挥发,也就是所有路径上的信息素以一定的比率减少,模拟自然蚁群的信息素随时间挥发的过程:二是增强,给评价值“好”(有蚂蚁走过)的边增加信息素。

算法流程

notion image
 

代码

notion image
 
 
 
notion image
 
TSP问题
notion image

调库实现ACA

notion image
 
ACA_TSP输入参数
入参
默认值
意义
func
-
目标函数
n_dim
-
城市个数
size_pop
10
蚂蚁数量
max_iter
20
最大迭代次数
distance_matrix
-
城市之间的距离矩阵,用于计算信息素的挥发
alpha
1
信息素重要程度
beta
2
适应度的重要程度
rho
0.1
信息素挥发速度
 
 
ACA输出参数
  • de.generation_best_Y 每一代的最优函数值
  • de.generation_best_X 每一代的最优函数值对应的输入值
  • aca.best_y 最优函数值
  • aca.best_x 最优函数值对应的输入值
  • Scikit-opt
  • 模拟退火SA免疫优化算法IA
    目录