2025最新智能优化算法:鹰鱼优化算法(HawkFish Optimization Algorithm,HFOA)求解23个经典函数测试集,MATLAB

一、 鹰鱼优化算法

鹰鱼优化算法(HawkFish Optimization Algorithm,HFOA)是2025年提出的一种新颖的元启发式优化算法,灵感来源于鹰鱼的性别转换行为。该算法通过引入双适应度函数、动态聚类和视觉范围调整等机制,有效平衡了搜索空间的探索和开发,避免了局部最优解的陷入,提高了优化效率和解的质量。算法在解决复杂优化问题时表现出色,优于其他传统优化算法。

数学模型

鹰鱼优化算法的数学模型主要基于鹰鱼的性别转换行为和觅食行为。算法中,每个个体(人工鱼)的位置、适应度值、移动方式等都通过数学公式进行描述。

性别转换模型

设 p ( t ) p(t) p(t)表示在时间 t t t时种群中雌性的比例, q ( t ) q(t) q(t)表示雄性的比例:

p ( t ) + q ( t ) = 1 p(t) + q(t) = 1 p(t)+q(t)=1

初始时,假设所有鹰鱼都是雌性,因此 p ( 0 ) = 1 p(0) = 1 p(0)=1且 q ( 0 ) = 0 q(0) = 0 q(0)=0。

设 d ( t ) d(t) d(t)表示在时间 t t t时的食物可用性,其中 d ( t ) > 0 d(t) > 0 d(t)>0表示食物充足, d ( t ) = 0 d(t) = 0 d(t)=0表示没有食物。

雌性比例的变化率可以表示为:

d p d t = − a × p × ( 1 − d ( t ) ) \frac{dp}{dt} = -a \times p \times (1 - d(t)) dtdp=−a×p×(1−d(t))

其中, a a a是一个表示性别变化率的常数。

雄性比例的变化率可以表示为:

d q d t = a × p × ( 1 − d ( t ) ) \frac{dq}{dt} = a \times p \times (1 - d(t)) dtdq=a×p×(1−d(t))

适应度函数

在优化问题中,适应度函数用于评估个体的优劣。对于最小化问题,适应度函数可以定义为:

f i t n e s s ( x ) = f ( x ) fitness(x) = f(x) fitness(x)=f(x)

个体移动模型

每个个体的移动由以下公式决定:

x ( i , j ) = x ( i , j ) + s ( i , j ) × d ( i , j ) x(i,j) = x(i,j) + s(i,j) \times d(i,j) x(i,j)=x(i,j)+s(i,j)×d(i,j)

其中, x ( i , j ) x(i,j) x(i,j)是第 i i i条鱼的第 j j j个位置元素, s ( i , j ) s(i,j) s(i,j)是第 i i i条鱼的步长, d ( i , j ) d(i,j) d(i,j)是第 i i i条鱼的方向向量元素。

动态聚类

计算种群中个体之间的距离矩阵 D D D,其中 D ( i , j ) D(i,j) D(i,j)表示第 i i i条鱼和第 j j j条鱼之间的距离。然后使用基于欧几里得距离的聚类算法将种群划分为 k k k个聚类 C 1 , C 2 , ... , C k C_1, C_2, \ldots, C_k C1,C2,...,Ck。

学习机制

每个个体在子种群内向邻居学习,更新位置的公式为:

x ( i , j ) = x ( i , j ) + w × ( x ( j b e s t , j ) − x ( i , j ) ) x(i,j) = x(i,j) + w \times (x(j_{best},j) - x(i,j)) x(i,j)=x(i,j)+w×(x(jbest,j)−x(i,j))

其中, x ( j b e s t , j ) x(j_{best},j) x(jbest,j)是子种群中最佳个体的第 j j j个位置元素, w w w是学习系数。

步长和方向向量更新

步长和方向向量的更新公式为:

s ( i , j ) = s ( i , j ) + α × r × ( x g l o b a l ( j ) − x ( i , j ) ) s(i,j) = s(i,j) + \alpha \times r \times (x_{global}(j) - x(i,j)) s(i,j)=s(i,j)+α×r×(xglobal(j)−x(i,j))

d ( i , j ) = d ( i , j ) + β × r × ( x ( i , j ) − x l o c a l ( j ) ) d(i,j) = d(i,j) + \beta \times r \times (x(i,j) - x_{local}(j)) d(i,j)=d(i,j)+β×r×(x(i,j)−xlocal(j))

其中, α \alpha α和 β \beta β是学习系数, r r r是0到1之间的随机数, x g l o b a l ( j ) x_{global}(j) xglobal(j)是全局最佳个体的第 j j j个位置元素, x l o c a l ( j ) x_{local}(j) xlocal(j)是局部最佳个体的第 j j j个位置元素。

算法流程

  1. 初始化参数:种群大小 N N N、维度 n n n、子种群数 k k k、全局学习系数 α \alpha α、局部学习系数 β \beta β、子种群学习系数 w w w、最大迭代次数 m a x _ i t e r a t i o n s max\_iterations max_iterations。
  2. 在搜索空间中随机初始化人工鱼种群。
  3. 对于每次迭代:
    • 使用两个适应度函数 f 1 ( x ) f_1(x) f1(x)和 f 2 ( x ) f_2(x) f2(x)评估每条鱼的适应度。
    • 根据适应度更新每条鱼的位置。
    • 移动后重新评估每条鱼的适应度。
    • 将种群聚类成 k k k个子种群以增加多样性。
    • 在每个子种群内执行鱼学习。
    • 更新每条鱼的步长和方向向量。
  4. 返回找到的全局最佳解。

算法描述

鹰鱼优化算法是一种受鹰鱼性别转换行为启发的元启发式优化算法。算法通过模拟鹰鱼的觅食行为和性别转换,动态调整种群中的个体角色和搜索策略,以平衡探索和开发,避免局部最优,提高优化效率。

动态性别转换策略

根据食物可用性 F F F与预定义阈值 F t h r e s h o l d F_{threshold} Fthreshold的比较,动态改变每条鱼的性别。如果 F > F t h r e s h o l d F > F_{threshold} F>Fthreshold,则改变鱼的性别(例如,雄性变为雌性,反之亦然)。

视觉范围调整

为雄性和雌性子种群分配独特的视觉范围 V m a l e V_{male} Vmale和 V f e m a l e V_{female} Vfemale。在评估适应度和更新位置时,每条鱼仅考虑其对应视觉范围内的其他鱼。

位置更新

使用以下公式更新每条鱼的位置:

x f ( t + 1 ) = x f ( t ) + s t e p _ s i z e × ( x c e n t e r − x f ( t ) ) x_f(t+1) = x_f(t) + step\size \times (x{center} - x_f(t)) xf(t+1)=xf(t)+step_size×(xcenter−xf(t))

其中, x f ( t ) x_f(t) xf(t)是鱼 f f f在迭代 t t t时的位置, s t e p _ s i z e step\size step_size是预定义参数, x c e n t e r x{center} xcenter是对应子种群的中心位置。

中心位置计算

子种群 P m a l e P_{male} Pmale或 P f e m a l e P_{female} Pfemale的中心位置计算公式为:

x c e n t e r = 1 ∥ P m a l e ∥ 或 ∥ P f e m a l e ∥ × ∑ x j x_{center} = \frac{1}{\|P_{male}\| \text{或} \|P_{female}\|} \times \sum x_j xcenter=∥Pmale∥或∥Pfemale∥1×∑xj

其中, x j x_j xj是相应子种群中第 j j j条鱼的位置。

邻居搜索

在视觉范围内寻找邻居鱼 N f N_f Nf,并根据最佳邻居鱼 x n b e s t x_{nbest} xnbest更新鱼 f f f的位置:

x f ( t + 1 ) = x f ( t ) + s t e p _ s i z e × ( x n b e s t − x f ( t ) ) x_f(t+1) = x_f(t) + step\size \times (x{nbest} - x_f(t)) xf(t+1)=xf(t)+step_size×(xnbest−xf(t))


二、23个函数介绍

参考文献:

1\] Yao X, Liu Y, Lin G M. Evolutionary programming made faster\[J\]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102. ## 三、部分代码及结果 ```dart clear; clc; close all; warning off all; SearchAgents_no=50; %Number of search solutions Max_iteration=500; %Maximum number of iterations Func_name='F1'; % Name of the test function % Load details of the selected benchmark function [lb,ub,dim,fobj]=Get_F(Func_name); tic; [Best_score,Best_pos,cg_curve]=(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); tend=toc; % figure('Position',[500 500 901 345]) %Draw search space subplot(1,2,1); func_plot(Func_name); title('Parameter space') xlabel('x_1'); ylabel('x_2'); zlabel([Func_name,'( x_1 , x_2 )']) %Draw objective space subplot(1,2,2); semilogy(cg_curve,'Color','m',LineWidth=2.5) title(Func_name) % title('Objective space') xlabel('Iteration'); ylabel('Best score obtained so far'); axis tight grid on box on legend('') display(['The running time is:', num2str(tend)]); display(['The best fitness is:', num2str(Best_score)]); display(['The best position is: ', num2str(Best_pos)]); ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e5429ad6b1a74c218d1c80f6599c4ad3.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0b32310d6b224228a7145780b60c9362.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f70eb3f26a9742a19198a39f3f74f0f0.png) ## 四、完整MATLAB代码见下方名片

相关推荐
撸码到无法自拔9 分钟前
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
人工智能·pytorch·python·深度学习·缓存
OneBlock Community11 分钟前
加密领域 AI Agent 的崛起:DeFAI 如何重塑金融
人工智能·金融
zuozewei18 分钟前
7D-AI系列:模型微调之llama-factory
人工智能·llama
望获linux20 分钟前
工业软件自主化突围:RTOS 如何打破 “协议栈 - 控制器” 生态垄断
linux·人工智能·操作系统·开源软件·嵌入式软件·工业软件
了不起的杰20 分钟前
【算法】:滑动窗口
算法
2301_8076114923 分钟前
47. 全排列 II
c++·算法·leetcode·回溯
weixin_4445793023 分钟前
基于Llama3的开发应用(一):Llama模型的简单部署
人工智能·深度学习·llama
✿ ༺ ོIT技术༻26 分钟前
笔试强训:Day4
c++·算法
yz1.1 小时前
[sklearn] 特征工程
python·机器学习·sklearn
hello_ejb33 小时前
聊聊Spring AI Alibaba的SentenceSplitter
人工智能·python·spring