当前位置: 首页 > article >正文

最新智能优化算法:牛优化( Ox Optimizer,OX)算法求解经典23个函数测试集,MATLAB代码

一、牛优化算法

牛优化( OX Optimizer,OX)算法由 AhmadK.AlHwaitat 与 andHussamN.Fakhouri于2024年提出,该算法的设计灵感来源于公牛的行为特性。公牛以其巨大的力量而闻名,能够承载沉重的负担并进行远距离运输。这种行为特征可以被转化为优化过程中的优势,即在探索广阔而复杂的搜索空间时保持强大的鲁棒性。公牛不仅强壮,还具有灵活性、稳健性、适应性和协作能力等特点。这些特点使得OX优化器能够在不断变化的环境和优化需求中有效地找到最优解。
在这里插入图片描述
算法步骤:
参数初始化:首先,定义问题的解空间范围、种群规模以及最大迭代次数等关键参数,并根据需要选择合适的适应度函数来评估个体的优劣。
种群初始化:生成一个初始种群,其中每个个体代表问题的一个候选解。这些个体的位置在解空间中随机分布,以确保初始搜索的多样性。
适应度评估:计算种群中每个个体的适应度值,该值反映了个体在当前解空间中的优劣程度。
繁殖选择
精英策略:保留适应度最高的个体,确保优质解不会因后续操作而丢失。
杂交操作:从当前种群中选择个体进行杂交。杂交过程通过交换两个父代个体的基因信息,生成新的子代个体。这一操作有助于引入新的解特征,扩大搜索范围。
变异操作:对子代个体进行变异。每个个体有较高的概率随机选择一个维度进行微小的随机扰动,这种变异操作能够进一步增强种群的多样性,避免过早收敛。
局部优化器
置换探索:从当前最优解或随机子集中选取个体,通过局部优化器进行置换探索。例如,随机暴露置换群中的元素,并通过应用均匀分布的随机值来修正这些元素,从而生成新的置换。这一过程能够精化解的质量,提高局部搜索的效率。
整体最优解集中消去与鲁棒优化:在每次迭代中,跟踪由局部优化器生成的置换,并将这些置换中的所有解集中到集合S中。对于每个新的解x,检查是否存在另一个解x’∈S,其分量在设定的容差范围内。通过持续集中消去,有效保持算法的推进,确保搜索过程的高效性和鲁棒性。
迭代更新:重复上述步骤,直到达到最大迭代次数或满足其他停止条件。在整个优化过程中,种群逐渐进化,适应度较高的个体更有可能被保留下来,而适应度较低的个体则被淘汰。

在这里插入图片描述

参考文献:
[1]Al Hwaitat AK, Fakhouri HN. The OX Optimizer: A Novel Optimization Algorithm and Its Application in Enhancing Support Vector Machine Performance for Attack Detection. Symmetry. 2024; 16(8):966. https://doi.org/10.3390/sym16080966

二、23个函数介绍

在这里插入图片描述
参考文献:

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

三、部分代码及结果

SearchAgents_no = 100;
Max_iter = 1000;
fn=12;
Function_name=strcat('F',num2str(fn));
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_score,Best_pos,PO_cg_curve]=OX(SearchAgents_no,Max_iter,lb,ub,dim,fobj);
semilogy(PO_cg_curve,'LineWidth',2)
title(Function_name)
xlabel('迭代次数');
ylabel('适应度值');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码见下方名片


http://www.kler.cn/a/549979.html

相关文章:

  • 缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
  • 【transformers.Trainer填坑】在自定义compute_metrics时logits和labels数据维度不一致问题
  • 基于LSTM的情感分析
  • Dockerfile 编写推荐
  • SQL-leetcode—1683. 无效的推文
  • Linux Mem -- AArch64 MTE功能Tag寄存器
  • Redis五种用途
  • 【LeetCode】15.三数之和
  • TDengine 数据备份/还原工具 taosdump
  • vue点击左边导航,右边出现页面步骤
  • 【GO】Golang/C++混合编程 - 初识
  • Linux 目录结构与基础命令学习记录
  • Spring AI发布!让Java紧跟AI赛道!
  • openEuler 22.03 LTS SP4源码编译部署OpenStack-Dalmatian
  • 云原生(五十五) | ECS中自建数据库迁移到RDS
  • 2009年下半年软件设计师上午真题的知识点整理(附真题及答案解析)
  • React.memo 使用详解与最佳实践
  • SpringBoot+微信小程序+数据可视化的宠物到家喂宠服务(程序+论文+讲解+安装+调试+售后等)
  • 使用 DiskPart 命令创建磁盘和卷
  • 基于AWS的证券交易系统架构设计与核心技术实践