2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB

news2025/3/9 9:45:50

一、山羊优化算法

山羊优化算法(Goat Optimization Algorithm, GOA)是2025年提出的一种新型生物启发式元启发式算法,灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力,有效平衡探索和开发,以解决全局优化问题。

算法原理

山羊优化算法基于山羊的三种关键行为模式来设计其工作机制:

  1. 自适应觅食策略:山羊在觅食过程中会优先选择营养丰富的区域,同时避开不利区域。这种行为被建模为算法中的探索阶段,使候选解能够在解空间中评估多个区域,从而增强全局搜索能力。
  2. 跳跃机制:山羊能够通过突然的跳跃到达难以触及的区域,这有助于它们逃避捕食者和获取新的资源。在算法中,这种跳跃机制被用来帮助解逃离局部最优解,提高收敛速度和全局搜索效率。
  3. 寄生虫回避和环境适应:山羊会本能地避免在寄生虫感染的区域觅食,以确保长期生存和健康。在算法中,这一行为被转化为解的筛选机制,通过动态消除低质量解并重新生成新的候选解,保持种群的多样性和鲁棒性。

算法模型

山羊优化算法的数学模型包括以下几个关键部分:

  • 种群初始化:随机生成初始的山羊种群,每个山羊表示为搜索空间中的一个d维向量,其位置在给定的上下界范围内随机生成。
    X i = ( x i 1 , x i 2 , … , x i d ) X_i = (x_{i1}, x_{i2}, \ldots, x_{id}) Xi=(xi1,xi2,,xid)
    其中,i = 1, 2, …, N,d是决策变量的个数(维度)。初始种群的生成公式为:
    X i = L B + ( U B − L B ) ⋅ rand ( d ) X_i = LB + (UB - LB) \cdot \text{rand}(d) Xi=LB+(UBLB)rand(d)
    其中,rand(d)生成一个d维的随机向量,取值范围在[0,1]之间。

  • 探索阶段:每个山羊通过随机移动来探索搜索空间,其新位置的更新公式为:
    X i t + 1 = X i t + α ⋅ R ⋅ ( U B − L B ) X_i^{t+1} = X_i^t + \alpha \cdot R \cdot (UB - LB) Xit+1=Xit+αR(UBLB)
    其中, X i t X_i^t Xit是第i个山羊在迭代t的位置,α是探索系数,R是从高斯分布N(0,1)中抽取的随机变量。

  • 开发阶段:山羊逐渐向当前最优解移动,以细化解的质量,其位置更新公式为:
    X i t + 1 = X i t + α ′ ⋅ ( X leader t − X i t ) X_i^{t+1} = X_i^t + \alpha' \cdot (X_{\text{leader}}^t - X_i^t) Xit+1=Xit+α(XleadertXit)
    其中, X leader t X_{\text{leader}}^t Xleadert是当前最优解,α’是开发系数。

  • 跳跃策略:通过跳跃机制帮助山羊逃离局部最优解,其位置更新公式为:
    X i t + 1 = X i t + J ⋅ ( X random − X i t ) X_i^{t+1} = X_i^t + J \cdot (X_{\text{random}} - X_i^t) Xit+1=Xit+J(XrandomXit)
    其中,J是跳跃系数, X random X_{\text{random}} Xrandom是随机选择的山羊。

  • 寄生虫回避和解筛选:对于适应度值位于种群最低20%的山羊,将其位置重置为随机生成的新位置,以保持种群的多样性和鲁棒性。重置公式为:
    X i t + 1 = L B + ( U B − L B ) ⋅ rand ( d ) X_i^{t+1} = LB + (UB - LB) \cdot \text{rand}(d) Xit+1=LB+(UBLB)rand(d)

算法流程

山羊优化算法的完整流程如下:

  1. 初始化:随机初始化山羊种群,计算每个山羊的适应度值,并确定当前最优解。
  2. 迭代过程
    • 探索:使用探索方程更新山羊的位置。
    • 开发:将山羊向当前最优解移动。
    • 跳跃:对部分山羊应用跳跃策略。
    • 筛选:移除并重新生成表现较差的解。
    • 更新最优解:根据新的位置计算适应度值,并更新当前最优解。
  3. 停止条件:当达到最大迭代次数、适应度改进低于预设阈值或种群中解的方差变得可忽略不计时,算法终止。
  4. 输出结果:返回找到的最优解。

复杂度分析

山羊优化算法的计算复杂度主要由适应度函数评估和山羊位置更新决定。每轮迭代评估 N 个解,假设总共有 (T_{\text{max}}) 轮迭代,则总体复杂度为:
O ( N ⋅ T max ⋅ d ) O(N \cdot T_{\text{max}} \cdot d) O(NTmaxd)
这与其他基于群体的算法(如粒子群优化算法和灰狼优化算法)相当。不过,通过引入跳跃策略和寄生虫回避机制,GOA 可以提高效率,避免不必要的局部搜索停滞。

参考文献:

[1]nozari, hamed, and Agnieszka Szmelter-Jarosz. “Goat Optimization Algorithm: A Novel Bio-Inspired Metaheuristic for Global Optimization.” Applied Innovations in Industrial Management (AIIM), 2025.

二、23个函数介绍

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

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

三、部分代码及结果



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)]);

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2312072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一) 1. 网络的发展2. 认识协议3. 网络 VS 系统4. 以太网通信原理5. 重谈协议6. 网络中的地址管理 1. 网络的发展 最开始时,计算机之间相互独立。 但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求&#xff0c…

学习threejs,Animation、Core、CustomBlendingEquation、Renderer常量汇总

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Animation常量汇总1.1.1 循…

常用无功功率算法的C语言实现(二)

0 前言 尽管数字延迟法和积分移相法在不间断采样的无功功率计算中得到了广泛应用,但它们仍存在一些固有缺陷。 对于数字延迟法而言,其需要额外存储至少1/4周期的采样点,在高采样频率的场景下,这对存储资源的需求不可忽视。而积分移相法虽然避免了额外的存储开销,但为了抑制…

易基因特异性R-loop检测整体研究方案

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 01.技术简述 R-loop是由DNA:RNA 杂交体和被置换的单链DNA组成的三链核酸结构,广泛参与基因转录、表观遗传调控及DNA修复等关键生物学过程。异常的R-loop积累会导致基因组不稳…

装饰器模式--RequestWrapper、请求流request无法被重复读取

目录 前言一、场景二、原因分析三、解决四、更多 前言 曾经遇见这么一段代码,能看出来是把request又重新包装了一下,核心信息都不会改变 后面了解到这叫 装饰器模式(Decorator Pattern) :也称为包装模式(Wrapper Pat…

STM32-I2C通信协议

目录 一:什么是I2C通信协议 二:I2C通信 三:I2C时序图 四:面试常见问题 一:什么是I2C通信协议 I2C(Inter-Integrated Circuit)协议是一种串口通信协议,用于在集成电路之间传输数…

Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha:控制UI的透明度 类型:float,0.0 ~1.0, 其中 0.0 完全透明,1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…

DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!

从央视到地方媒体,已有多家媒体机构推出AI主播,最近杭州文化广播电视集团的《杭州新闻联播》节目,使用AI主持人进行新闻播报,且做到了0失误率,可见AI正在逐渐取代部分行业和一些重复性的工作,这一现象引发很…

C语言100天练习题【记录本】

C语言经典100题(手把手 编程) 可以在哔哩哔哩找到(url:C语言经典100题(手把手 编程)_哔哩哔哩_bilibili) 已解决的天数:一,二,五,六,八&#xf…

DeepSeek【部署 03】客户端应用ChatBox、AnythingLLM及OpenWebUI部署使用详细步骤

DeepSeek客户端应用 1.ChatBox2.AnythingLLM3.OpenWebUI4.总结 客户端软件提供可视化的模型及参数配置,人性化的对话窗口及文件上传功能,大大降低了大模型的使用门槛。 1.ChatBox Chatbox AI 是一款 AI 客户端应用和智能助手,支持众多先进的…

Python图形编程之EasyGUI: msgbox的用法

1 EasyGUI: msgbox的用法 1.1 基础用法:只显示信息 示例代码: from easygui import * msgbox("Hello, world!")效果: 1.2 扩展用法1:设置标题 示例代码: from easygui import * msgbox("Hello, …

中性点直接接地电网接地故障Simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换) 2.系统仿真图: 3.中性点直接接地电网接地故障基本概念(本仿…

解决Jenkins默认终止Shell产生服务进程的问题

1、Windows环境 Jenkins进行Build steps的使用Execute Windows batch command启动微服务(Jar包),Jenkins会默认终止Shell产生的服务进程,而在命令行能够正常运行的服务进程。 1.1 使用命令行启动服务是正常 使用命令行执行 正常…

RuleOS:区块链开发的“破局者”,开启Web3新纪元

RuleOS:区块链开发的“破冰船”,驶向Web3的星辰大海 在区块链技术的浩瀚宇宙中,一群勇敢的探索者正驾驶着一艘名为RuleOS的“破冰船”,冲破传统开发的冰层,驶向Web3的星辰大海。这艘船,正以一种前所未有的姿…

OpenCV 拆分、合并图像通道方法及复现

视频讲解 OpenCV 拆分、合并图像通道方法及复现 环境准备:安装 OpenCV 库(pip install opencv-python) 内容: 1. 读取任意图片(支持 jpg/png 等格式) 2. 使用 split () 函数拆解成 3 个单色通道&#xf…

基于Python实现的智能旅游推荐系统(Django)

基于Python实现的智能旅游推荐系统(Django) 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat 系统功能实现 总体设计 系统实现 系统首页模块 统首页页面主要包括首页,旅游资讯,景点信息…

C++--迭代器(iterator)介绍---主要介绍vector和string中的迭代器

目录 一、迭代器(iterator)的定义 二、迭代器的类别 三、使用迭代器 3.1 迭代器运算符 3.2 迭代器的简单应用:使用迭代器将string对象的第一个字母改为大写 3.3 将迭代器从一个元素移动到另外一个元素 3.4 迭代器运算 3.5 迭代器的复…

SpringCloud——Consul服务注册与发现

一、为什么要引入服务注册中心 (1)为什么引入 微服务硬编码 IP / 端口的核心问题总结 环境变更敏感:当支付微服务的 IP 或端口修改时,订单微服务必须同步修改所有调用该支付服务的代码或配置,否则将无法正常通信无法…

C语言_数据结构总结5:顺序栈

纯C语言代码,不涉及C 想了解链式栈的实现,欢迎查看这篇文章:C语言_数据结构总结6:链式栈-CSDN博客 这里分享插入一下个人觉得很有用的习惯: 1. 就是遇到代码哪里不理解的,你就问豆包,C知道&a…

人工智能之数学基础:正交矩阵

本文重点 正交矩阵是线性代数中一个重要的特殊矩阵,它在许多领域都有广泛的应用。 什么是正交矩阵 如图所示,当矩阵A满足如上所示的条件的时候,此时我们就可以认为是正交矩阵,需要注意一点矩阵A必为方阵。 正交矩阵的充要条件 …