鱼群算法
好的,我们来详细解释一下鱼群算法。
鱼群算法,全称人工鱼群算法,其英文名称为 Artificial Fish Swarm Algorithm。它是一种模拟自然界鱼群觅食、群聚、追尾和随机行为等群体行为的群体智能优化算法。该算法由中国学者李晓磊博士等人在 2002 年提出,主要用于解决各种优化问题(如函数优化、组合优化、参数估计等)。
核心思想
算法的核心思想是:利用大量简单的“人工鱼”个体,通过模拟鱼群在寻找食物(即优化问题的最优解)过程中的简单局部行为(觅食、聚群、追尾),以及个体之间的信息共享,最终在群体层面上涌现出全局的寻优能力,引导鱼群趋向最优解区域。
关键概念(模拟鱼的行为)
- 人工鱼:
- 每个“人工鱼”代表优化问题的一个候选解。例如,在求解函数最小值时,一条鱼的位置
X = (x1, x2, ..., xn)就代表了问题的一个解向量(n 是问题的维度)。 - 每条鱼能感知自身状态(当前位置、适应度值)和周围一定范围内的环境(其他鱼的位置和适应度值)。
- 每个“人工鱼”代表优化问题的一个候选解。例如,在求解函数最小值时,一条鱼的位置
- 视野范围:
- 定义为
Visual。这是鱼感知周围环境的半径。它决定了鱼在一次行为中能探测到的邻居范围。 - 这是一个关键参数,影响算法的全局搜索和局部搜索能力。
- 定义为
- 步长:
- 定义为
Step。这是鱼在一次移动中允许的最大移动距离。 - 控制着鱼的移动速度和解的更新幅度。
- 定义为
- 拥挤度因子:
- 定义为
δ。这是一个阈值(0 < δ < 1),用于控制鱼群聚集的“拥挤程度”。 - 如果某点周围的鱼群密度过高(超过 δ),即使那里食物更多,鱼也可能选择离开以避免过度拥挤,这有助于算法跳出局部最优。
- 定义为
- 尝试次数:
- 在觅食行为中,鱼会进行若干次(定义为
TryNumber)随机尝试,然后选择最优的方向移动。这增加了探索的随机性和找到更好位置的可能性。
- 在觅食行为中,鱼会进行若干次(定义为
- 适应度值:
- 函数
Y = f(X)。这是评价一个候选解X(即鱼的位置) 好坏的标准。就是需要优化的目标函数值。对于最小化问题,Y 值越小代表位置越好(食物越丰富);对于最大化问题则相反。
- 函数
主要行为(算法操作)
人工鱼主要模拟以下几种行为模式,每条鱼在每一步迭代中根据当前位置和周围环境选择执行其中一种行为(通常是几种行为结果中带来最大收益的那个):
-
觅食行为:
- 模拟: 鱼感知当前位置的食物浓度(适应度值),然后在其视野范围内随机选择一个点
Xj。 - 计算: 比较
Xj的适应度值Yj与当前位置Xi的适应度值Yi。 - 决策:
- 如果
Yj优于Yi(最小化时Yj < Yi, 最大化时Yj > Yi),则朝Xj方向前进一步(移动距离不超过Step)。 - 如果
Yj不优于Yi,则再随机选择一个新的Xj,重复以上过程,直到达到TryNumber次尝试。如果多次尝试后仍未找到更好的点,则执行随机行为。
- 如果
- 目的: 局部探索,尝试在附近找到更好的位置。
- 模拟: 鱼感知当前位置的食物浓度(适应度值),然后在其视野范围内随机选择一个点
-
聚群行为:
- 模拟: 鱼查看其视野范围内 (
Visual内) 的所有邻居鱼。 - 计算:
- 计算视野范围内邻居鱼的数量
nf。 - 计算这些邻居鱼的中心位置
Xc(所有邻居位置的平均值)。 - 计算中心位置
Xc的适应度值Yc。
- 计算视野范围内邻居鱼的数量
- 决策:
- 如果
Yc优于Yi并且 中心位置的鱼群密度不太高 (nf / N < δ,其中N是鱼的总数,δ是拥挤度因子),说明中心位置既好又不拥挤,则朝中心Xc方向前进一步(移动距离不超过Step)。 - 否则 (不满足上述条件): 执行觅食行为。
- 如果
- 目的: 促使鱼群向适应度值高的区域聚集,同时避免过度拥挤导致陷入局部最优。体现了“群聚协作”的优势。
- 模拟: 鱼查看其视野范围内 (
-
追尾行为:
- 模拟: 鱼查看其视野范围内 (
Visual内) 的所有邻居鱼。 - 计算:
- 找出视野范围内适应度值最优 (最小化时最小,最大化时最大) 的那条邻居鱼
Xmin/Xmax及其适应度值Ymin/Ymax。 - 统计视野范围内有多少邻居鱼围绕在
Xmin/Xmax附近(即距离< Visual)。
- 找出视野范围内适应度值最优 (最小化时最小,最大化时最大) 的那条邻居鱼
- 决策:
- 如果
Ymin/Ymax优于Yi并且Xmin/Xmax周围的鱼群密度不太高(nf_min / N < δ或nf_max / N < δ),说明这条最优邻居的位置既好又不拥挤,则朝这条最优邻居Xmin/Xmax的方向前进一步(移动距离不超过Step)。 - 否则 (不满足上述条件): 执行觅食行为。
- 如果
- 目的: 促使鱼群快速向当前已知的局部最优位置移动,加速收敛。体现了“向优者学习”。
- 模拟: 鱼查看其视野范围内 (
-
随机行为:
- 模拟: 鱼在视野范围内随机选择一个方向。
- 操作: 朝该方向随机移动一步(移动距离不超过
Step)。 - 目的: 增加随机性,帮助算法跳出局部最优解,进行全局探索。通常在觅食行为尝试失败后执行。
算法流程(伪代码)
- 初始化:
- 设定算法参数:鱼群数量
N,视野范围Visual,步长Step,拥挤度因子δ,最大尝试次数TryNumber,最大迭代次数MaxIter(或设定收敛精度)。 - 在解空间中随机初始化
N条人工鱼的位置{X1, X2, ..., XN}。 - 计算每条鱼的初始适应度值
{Y1, Y2, ..., YN}。 - 记录当前全局最优解
X_best及其适应度值Y_best(初始时为鱼群中最好的那个)。
- 设定算法参数:鱼群数量
- 迭代优化:
For iter = 1 to MaxIter(或直到满足收敛条件):For each fish i in the swarm:- 模拟执行 觅食行为,计算执行该行为后可能到达的新位置
X_food及其适应度Y_food。 - 模拟执行 聚群行为,计算执行该行为后可能到达的新位置
X_swarm及其适应度Y_swarm。 - 模拟执行 追尾行为,计算执行该行为后可能到达的新位置
X_follow及其适应度Y_follow。 - 行为选择: 比较
Y_food,Y_swarm,Y_follow,选择其中能带来最大收益(即适应度值改善最大)的那个行为产生的位置X_next作为鱼i下一步的位置。 - (或者采用其他策略,如默认执行追尾行为,不满足条件则执行聚群行为,再不满足则执行觅食行为)。
- 更新鱼
i的位置到X_next,并计算其新的适应度值Y_i。
- 模拟执行 觅食行为,计算执行该行为后可能到达的新位置
End For each fish- 检查整个鱼群:更新全局最优解
X_best和Y_best(如果当前鱼群中有比Y_best更好的适应度值出现)。
- 输出结果:
- 算法终止后(达到最大迭代次数或满足收敛条件),输出全局最优解
X_best及其适应度值Y_best。
- 算法终止后(达到最大迭代次数或满足收敛条件),输出全局最优解
优点
- 原理直观,易于理解和实现。
- 对目标函数性质要求低: 不需要目标函数连续、可导,只需能计算适应度值。
- 全局搜索能力强: 通过聚群、追尾行为能较快地趋向有希望的区域;通过觅食和随机行为能有效跳出局部最优。
- 鲁棒性好: 对初值不敏感。
- 并行性: 每条鱼的行为相对独立,适合并行计算加速。
缺点
- 参数敏感: 性能高度依赖于
Visual、Step、δ、N等参数的设置。参数调节可能需要经验或技巧。 - 收敛速度: 在后期可能收敛速度变慢,尤其在最优解附近。
- 精度: 有时候难以达到极高的精度要求。
- 理论基础: 相较于一些经典算法(如遗传算法、粒子群优化),其数学理论基础相对薄弱。
应用领域
鱼群算法广泛应用于各种优化问题,包括但不限于:
- 函数优化
- 组合优化(如旅行商问题 TSP、调度问题)
- 神经网络训练
- 参数估计
- 控制器参数优化
- 图像处理
- 机器学习模型优化
- 资源分配
总结
鱼群算法是一种受自然界鱼群社会行为启发的群体智能优化算法。它通过模拟鱼的觅食、聚群、追尾和随机行为,利用个体感知局部信息和群体信息共享,在解空间中高效地寻找全局最优解或近似最优解。其优点在于简单、鲁棒、全局搜索能力强,对函数要求低;缺点是参数调节对性能影响较大且后期收敛可能较慢。它是一种有效且应用广泛的启发式优化方法。
裸土覆盖检测算法 燧机科技
1970-01-01 08:00:00 至 1970-01-01 08:00:00
AI图像行为算法分析系统 燧机科技
1970-01-01 08:00:00 至 1970-01-01 08:00:00
工装识别算法 工服穿戴检测系统 燧机科技
1970-01-01 08:00:00 至 1970-01-01 08:00:00
结合深度与演化算法的群竞争合作优化算法
将深度与演化算法结合,提岀一种深度演化算法,即群竞争合作优化(GCCO)算法。首先引入生物群模型来模拟群体搜索猎物的自然现象,
资料下载
佚名
2021-04-12 14:13:33
一种头脑风暴算法优化的乳腺MR图像软子空间聚类算法
传统的软子空间聚类算法在对信息量大、强度不均匀、边界模糊的乳腺MR图像进行分割时,易受初始聚类中心和噪声数据的影响,导致算法陷入局部最优,造成误分类。针对该问题,提出一种头脑风暴
资料下载
佚名
2021-04-11 11:22:06
基于显性与隐性时空关联的两种用户激励算法
为在群智感知系统中实现有效的用户激励,提岀基于显性与隐性时空关联的两种用户激励算法。将显性时空关联的用户激励问题转化为集合覆盖问题并利用贪心算法对其进行求解,同时结合显性时空关联
资料下载
佚名
2021-03-21 10:30:56
基于长短时记忆网络的自适应零速检测算法
多运动模式行人航位推算算法采用零速校正消除累计误差,但零速校正错判会导致误差。针对该问题,提出一种基于长短时记忆网络的自适应零速检测算法。构建长短时记忆网络提取不同运动模式下零速区间的三轴加速度、三
资料下载
佚名
2021-03-16 09:25:08
基于SVDPP算法的新型协同过滤推荐算法
为进一步改善个性化推荐系统的推荐效果,通过使用强化学习方法对 SVDPP算法进行优化,提出一种新的协同过滤推荐算法。考虑用户评分的时间效应,将推荐问题转化为马尔科夫决策过程。在此基础上,利用Q-
资料下载
佚名
2021-03-09 17:20:09
6500VA水声功率放大器如何驱动换能器进行鱼群探测?
以及鱼儿的体型,位置,大小等等。那么你知道功率放大器是如何对鱼探仪中必不可少的换能器进行驱动的吗?Aigtek 安泰电子 为你解答! 鱼群探测所以应用的技术 海洋研究和开发所用的水声技术,包括回声探测、被动探测、水声通
2024-01-12 10:11:08
PID算法增量式算法
这里的PID是指控制类的比例-积分-微分算法,而不是进程ID号。PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源、电源管理芯片等领域。一般《自动控制原理》上给的是位置式
算法是什么
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构
哈佛大学研究团队从鱼群当中获得灵感,并研发出了一批鱼类机器人
相比之下,现有的大多数水下机器人则更多地依赖水上的、集中的、明确的沟通,能够协调的复杂性有限。那么鱼群中体现出的这种分散的、自组织的、高度自治的协调方式,长期以来吸引着机器人技术领域中科学家们的兴趣。
2021-03-22 14:06:55
哈佛科学家研发出能自主地同步游泳的鱼群机器人
被称为“Bluebots”的机器鱼能自主地同步游泳。 任何看过海底自然纪录片的人都会惊叹于鱼群表演的复杂编排,那仿佛是一部由数千名演员组成的飞镖式同步芭蕾舞。 这些本能的运动激发了哈佛大学约翰保尔
2021-02-23 09:45:33
HFSS 仿真算法及其应用场景详解:有限元算法、积分方程算法、PO算法
版本的更新,HFSS算法越来越多,针对不同的应用场景对应不同的算法。因此,只有实际工程问题切合合适的算法,才能做到速度和精度的平衡。工程师在了解
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机