2024最新算法:鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)求解23个基准函数(提供MATLAB代码)

一、鳑鲏鱼优化算法

鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)由Lida Zareian 等人于2024年提出。鳑鲏鱼在交配中,雄性和雌性物种相互接近,然后将精子和卵子释放到水中,但这种方法有一个很大的缺点。幼鱼暴露在各种外部危害中,很容易成为其他动物的猎物。换句话说,这些卵中只有少数会变成鱼------不幸的是,大多数鱼都是被其他水生动物猎杀的。苦鱼有不同的繁殖机制。这种鱼从牡蛎开始。寻找合适的产卵壳的任务是雄性物种的责任。他们需要找到更大的牡蛎,并有更多的空间来容纳它们的卵。当这些鱼找到一个或多个受害者(牡蛎)时,它们就会与敌人对抗。雄性物种具有攻击性行为的原因是其他一些雄性物种也倾向于将牡蛎用于自己。在战斗模式中,雄鱼的体色变暗,并尽其所能保卫自己的领地。在交配阶段,会发生一种称为性选择的现象。在性选择过程中,雌性物种根据颜色和体力选择雄性鱼。

该算法通过创建初始种群、更新参数、评估解决方案、搜索和捕获牡蛎、从其他鱼类中逃脱、走向鱼类积累、鱼类生产、繁殖和不需要的鱼类灭绝,实现优化。

参考文献:

[1] Zareian, L., Rahebi, J. & Shayegan, M.J. Bitterling fish optimization (BFO) algorithm. Multimed Tools Appl (2024). https://doi.org/10.1007/s11042-024-18579-0.

二、23个函数介绍

参考文献:

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、BFO求解23个函数

3.1部分代码

复制代码
close all ;
clear
clc
Npop=30;                
Function_name='F1';     % Name of the test function that can be from F1 to F23 ( 
Tmax=300;              
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_fit,Best_pos,Convergence_curve]=BFO(Npop,Tmax,lb,ub,dim,fobj);
figure('Position',[100 100 660 290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
%Draw objective space
subplot(1,2,2);
semilogy(Convergence_curve,'Color','r','linewidth',3)
title('Search space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
legend('BFO')
saveas(gca,[Function_name '.jpg']);


display(['The best solution is ', num2str(Best_pos)]);
display(['The best fitness value is ', num2str(Best_fit)]);

3.2部分结果

四、完整MATLAB代码

相关推荐
浮生如梦_1 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer3 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
wheeldown4 小时前
【数据结构】选择排序
数据结构·算法·排序算法
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
睡觉谁叫~~~5 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust