【人工智能】蚁群算法(密恐勿入)(二)

简介: 【人工智能】蚁群算法(密恐勿入)

3.算法应用——TSP问题


3.1 TSP旅行商介绍


首先,我们先回顾一下,什么是TSP旅行商问题:

053078959936cd6eb240112dc16f5b00_bcf93c39debf43a09919fcd182d67f20.png假设有一位邮递员,他从初始城市(任意一城市)出发,途径所有城市并回到初始城市,那么他一共会有


(n-1)!


条路径。从中找出那条最短路径,这就是TSP旅行商问题。

如果我们遍历的去找那个最短路径,那么随着城市的增加,计算量大大增加。

d80a9b3350c8e546ff92af5225e17363_fcf14cea7c574cf385317241a5a9a410.png


3.2 利用蚁群算法解决TSP问题


在这里,蚂蚁仅有信息素这一项能力是不够的。所以我们给与蚂蚁一些其他的能力

  • 蚂蚁在一次旅行中不会重复访问相同的城市
  • 蚂蚁可以知晓城市之间的距离。
  • 蚂蚁在路上会释放信息素
  • 蚂蚁在选择下一个城市的概率依靠以下公式:

image.png


参数名称 参数意义 参数设置过大 参数设置过小
信息素因子ɑ 反映了蚂蚁运动过程中路径上积累的信息素的量在指导蚁群搜索中的相对重要程度。取值范围通常在[1, 4]之间。 蚂蚁选择以前已经走过的路可能性较大,容易使随机搜索性减弱 蚁群易陷入纯粹的随机搜索,使种群陷入局部最优
启发函数因子𝛽 反映了启发式信息在指导蚁群搜索中的相对重要程度,蚁群寻优过程中先验性、确定性因素作用的强度取值范围在[0, 5]之间 虽然收敛速度加快,但是易陷入局部最优 蚁群易陷入纯粹的随机搜索,很难找到最优解

2036ab7903212dc9b6b5cda1882a29db_94fb77abe01043a3ae3825e0cfa40faa.png

image.png

例:下图为计算蚂蚁从起点城市2到可达城市的概率(套公式,很好理解):


39fb17fd0e071e9d46228efedb835064_69e40bf6131b45a18ccf929982b76bcb.png


图2. 此图和此节部分内容借鉴于秃头小苏:蚁群算法(实例帮助理解)

OK,蚂蚁有了这些能力后,我们只需要控制一下流程,就可以解决TSP问题了,下面是给出了此问题的一种常用的解决流程

蚁群算法解决TSP问题的算法流程

初始化信息素浓度矩阵image.png,启发式函数image.png,以及蚂蚁的位置。

每只蚂蚁按照信息素和启发式函数的概率选择下一个城市。

记录蚂蚁的路径和距离。

在所有蚂蚁走完所有城市之后,根据蚂蚁走过的路径和距离更新信息素浓度矩阵image.png

如果未达到停止条件,则返回步骤2。


其中,停止条件可以是迭代次数达到预设值或者最佳解不再改变。


起点的选择对最短路径是有影响的。不同的起点可能会导致不同的最短路径。在蚁群算法中,通过随机选择起始点,可以增加搜索的广度,从而有更大的可能性找到全局最优解。


信息素更新的时机一般有两种方式:


在每个迭代周期结束后进行更新,即在所有蚂蚁完成当前迭代周期后,根据其路径长度和信息素更新信息素浓度。

在每只蚂蚁走遍所有城市之后,立即更新信息素浓度。

信息素更新公式:

image.png

其中,ρ是信息素挥发速度,image.png是蚂蚁 k 在迭代 t 中走过路径 i 到 j 所留下的信息素,m 是蚂蚁的数量。


在每个迭代周期结束后进行更新或在每只蚂蚁走遍所有城市之后立即更新信息素浓度均可。


Delta tau 是蚂蚁 k 在迭代 t 中走过路径 i 到 j 所留下的信息素,不同的 Delta tau 规则有以下几种:

image.png


以上规则中,静态规则是最简单的,但是可能会导致信息素的浓度过高或过低,从而影响搜索效果。动态规则可以根据搜索的进展情况动态调整信息素的浓度,适应性更强。最大值规则可以防止信息素浓度过高,但可能会导致搜索无法跳出局部最优解。


例(静态规则):下图为信息素的更新过程,假设初始时各路径信息素浓度为10。

eedfd6a16f9143c67885ce705bf48910_182929a00b1d4471b509cc4872201397.png


总结一下:


蚁群算法流程:


初始化信息素浓度矩阵𝜏_{ij}(t),启发式函数𝜂_{ij},以及蚂蚁的位置。

每只蚂蚁按照信息素和启发式函数的概率选择下一个城市。

记录蚂蚁的路径和距离。

在所有蚂蚁走完所有城市之后,根据蚂蚁走过的路径和距离更新信息素浓度矩阵𝜏_{ij}(t)。

如果未达到停止条件,则返回步骤2。

其中,停止条件可以是迭代次数达到预设值或者最佳解不再改变。


起点的选择对最短路径是有影响的。不同的起点可能会导致不同的最短路径。在蚁群算法中,通过随机选择起始点,可以增加搜索的广度,从而有更大的可能性找到全局最优解。


信息素更新的时机一般有两种方式:


在每个迭代周期结束后进行更新,即在所有蚂蚁完成当前迭代周期后,根据其路径长度和信息素更新信息素浓度。

在每只蚂蚁走遍所有城市之后,立即更新信息素浓度。

信息素更新公式:

image.png

其中,ρ 是信息素挥发速度,image.png是蚂蚁 k 在迭代 t 中走过路径 i 到 j 所留下的信息素,m 是蚂蚁的数量。


在每个迭代周期结束后进行更新或在每只蚂蚁走遍所有城市之后立即更新信息素浓度均可。


Delta tau 是蚂蚁 k 在迭代 t 中走过路径 i 到 j 所留下的信息素,不同的 Delta tau 规则有以下几种:

image.png


相关文章
|
1月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
252 5
|
11月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
941 55
|
3月前
|
机器学习/深度学习 算法 机器人
基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)
基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)
123 0
|
10月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
545 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
5月前
|
数据采集 并行计算 算法
基于蚁群算法求解带时间窗的车辆路径问题
基于蚁群算法求解带时间窗的车辆路径问题
136 0
|
11月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
560 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
10月前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
12月前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
492 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
440 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章

下一篇
oss云网关配置