2025最新群智能優化算法:山羊優化算法(Goat Optimization Algorithm, GOA)求解23個經典函數測試集,MATLAB

一、山羊優化算法

山羊優化算法(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+(UB?LB)?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?(UB?LB)
    其中, 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?+α?(Xleadert??Xit?)
    其中, 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?(Xrandom??Xit?)
    其中,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+(UB?LB)?rand(d)

算法流程

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

  1. 初始化:隨機初始化山羊種群,計算每個山羊的適應度值,并確定當前最優解。
  2. 迭代過程
    • 探索:使用探索方程更新山羊的位置。
    • 開發:將山羊向當前最優解移動。
    • 跳躍:對部分山羊應用跳躍策略。
    • 篩選:移除并重新生成表現較差的解。
    • 更新最優解:根據新的位置計算適應度值,并更新當前最優解。
  3. 停止條件:當達到最大迭代次數、適應度改進低于預設閾值或種群中解的方差變得可忽略不計時,算法終止。
  4. 輸出結果:返回找到的最優解。

復雜度分析

山羊優化算法的計算復雜度主要由適應度函數評估和山羊位置更新決定。每輪迭代評估 N 個解,假設總共有 (T_{\text{max}}) 輪迭代,則總體復雜度為:
O ( N ? T max ? d ) O(N \cdot T_{\text{max}} \cdot d) O(N?Tmax??d)
這與其他基于群體的算法(如粒子群優化算法和灰狼優化算法)相當。不過,通過引入跳躍策略和寄生蟲回避機制,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 iterationsFunc_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.pswp.cn/diannao/72804.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72804.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72804.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

博弈論算法

一、減法游戲 初始有一個數 n。 兩個玩家輪流操作,每次可以減去 1 到 9 之間的任意整數。 將數減到 0 的玩家獲勝。 可以發現規律: 減法游戲只需要判斷當前數取模是否為0,即可快速判斷勝負。 例題: Leetcode 292. Nim 游戲 …

Excel·VBA江西省預算一體化工資表一鍵處理

每月制作工資表導出為Excel后都需要調整格式,刪除0數據的列、對工資表項目進行排序、打印設置等等,有些單位還分有“行政”、“事業”2個工資表就需要操作2次。顯然,這種重復操作的問題,可以使用VBA代碼解決 目錄 代碼使用說明1&a…

深度學習驅動的跨行業智能化革命:技術突破與實踐創新

第一章 深度學習的技術范式演進與核心架構 1.1 從傳統機器學習到深度神經網絡的跨越 深度學習的核心在于通過多層次非線性變換自動提取數據特征,其發展歷程可劃分為三個階段:符號主義時代的規則驅動(1950s-1980s)、連接主義時代的淺層網絡(1990s-2000s)以及深度學習時代…

嵌入式學習筆記-卡爾曼濾波,PID,MicroPython

文章目錄 卡爾曼濾波卡爾曼濾波的核心思想卡爾曼濾波的數學模型1. 狀態轉移模型(預測系統狀態)2. 觀測模型(預測測量值) 卡爾曼濾波的五個關鍵步驟1. 預測狀態2. 預測誤差協方差3. 計算卡爾曼增益4. 更新狀態5. 更新誤差協方差 卡…

一周熱點-文本生成中的擴散模型- Mercury Coder

一、背景知識 在人工智能領域,文本生成模型一直是研究的熱點。傳統的大型語言模型多采用自回歸架構,從左到右逐個預測下一個標記。這種模型雖然在生成連貫文本方面表現出色,但在速度上存在一定的局限性,因為它需要按順序生成每個標…

Qt調試功能使用方法

QT編程環境 QT在Windows操作系統下的三種編程環境搭建。 方案編程環境編譯器調試器1Qt CreatorMinGW GCCGDB2Qt CreatorMicrosoft Visual C CompilerDebugging Tools for Widows3Microsoft Visual Studio VS自帶VS自帶 方案提及的QT安裝程序及壓縮包均能在官網Index of /off…

vulnhub靶場之【digitalworld.local系列】的mercy靶機

前言 靶機:digitalworld.local-mercy,IP地址為192.168.10.11 攻擊:kali,IP地址為192.168.10.6 kali采用VMware虛擬機,靶機選擇使用VMware打開文件,都選擇橋接網絡 這里官方給的有兩種方式,一…

Fiddler抓取App接口-Andriod/IOS配置方法

Andriod配置方法: 1)確保手機和Fiddler所在主機在同一個局域網中 2)獲取Fiddler所在主機的ip地址,通過cmd命令進入命令編輯器,輸入ipconfig -all,找到IPv4地址,記下該地址 3)對手機…

步進電機軟件細分算法解析與實踐指南

1. 步進電機細分技術概述 步進電機是一種將電脈沖信號轉換為角位移的執行機構,其基本運動單位為步距角。傳統步進電機的步距角通常為 1.8(對應 200 步 / 轉),但在高精度定位場景下,這種分辨率已無法滿足需求。細分技術…

C語言_數據結構總結2:動態分配方式的順序表

0——靜態分配內存的順序表和動態分配內存的順序表的相同之處和不同之處 相同之處 基本操作邏輯相同:無論是靜態分配還是動態分配的順序表,其核心的操作邏輯是一致的。例如插入操作都需要將插入位置之后的元素依次后移,刪除操作都需要將刪除…

Vue 與 Element UI 深度探秘:從 Array.isArray 到動態綁定的技術之旅!?

以下是一篇深入的技術博客&#xff0c;基于我們對 compare-form.vue 和 <w-form-select.vue> 的所有討論&#xff0c;涵蓋 Array.isArray、option-label/option-value、:list 動態綁定、: 語法以及 Vue 2/3 兼容性等問題。博客風格輕松有趣&#xff0c;加入 SVG 圖解和實…

計算機視覺|3D卷積網絡VoxelNet:點云檢測的革新力量

一、引言 在科技快速發展的背景下&#xff0c;3D 目標檢測技術在自動駕駛和機器人領域中具有重要作用。 在自動駕駛領域&#xff0c;車輛需實時、準確感知周圍環境中的目標物體&#xff0c;如行人、車輛、交通標志和障礙物等。只有精確檢測這些目標的位置、姿態和類別&#x…

前端打包優化相關 Webpack

前端打包優化相關 Webpack 打包時間的優化&#xff08;基于 Vue CLI 4 Webpack 5&#xff09; 1. Webpack 配置減少打包時間 1.1 對 JS 配置&#xff1a;排除 node_modules 和 src 中的打包內容 在開發環境下&#xff0c;修改 Webpack 的 JS 規則&#xff0c;排除 /node_m…

leetcode69.x 的平方根

題目&#xff1a; 給你一個非負整數 x &#xff0c;計算并返回 x 的 算術平方根 。 由于返回類型是整數&#xff0c;結果只保留 整數部分 &#xff0c;小數部分將被 舍去 。 注意&#xff1a;不允許使用任何內置指數函數和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。…

Docker 部署 MongoDB 并持久化數據

Docker 部署 MongoDB 并持久化數據 在現代開發中&#xff0c;MongoDB 作為 NoSQL 數據庫廣泛應用&#xff0c;而 Docker 則提供了高效的容器化方案。本教程將介紹如何使用 Docker 快速部署 MongoDB&#xff0c;并實現數據持久化&#xff0c;確保數據不會因容器重啟或刪除而丟失…

信奧賽CSP-J復賽集訓(模擬算法專題)(3):P1089 [NOIP 2004 提高組] 津津的儲蓄計劃

信奧賽CSP-J復賽集訓&#xff08;模擬算法專題&#xff09;&#xff08;3&#xff09;&#xff1a;P1089 [NOIP 2004 提高組] 津津的儲蓄計劃 題目描述 津津的零花錢一直都是自己管理。每個月的月初媽媽給津津 300 300 300 元錢&#xff0c;津津會預算這個月的花銷&#xff0…

日新F1、瑞研F600P 干線光纖熔接(熔接損耗最大0.03DB)

Ⅰ. 設備特性對比與實測驗證 1. 日新F1&#xff08;兩馬達&#xff09;極限參數 切割角度&#xff1a;必須≤0.3&#xff08;雙邊累計誤差&#xff1c;0.6&#xff09; ? 實測案例&#xff1a;切割0.35時&#xff0c;損耗波動達0.05-0.08dB&#xff08;超干線標準&#xff09…

【量化科普】Sharpe Ratio,夏普比率

【量化科普】Sharpe Ratio&#xff0c;夏普比率 &#x1f680;量化軟件開通 &#x1f680;量化實戰教程 在量化投資領域&#xff0c;夏普比率&#xff08;Sharpe Ratio&#xff09;是一個非常重要的風險調整后收益指標。它由諾貝爾經濟學獎得主威廉F夏普&#xff08;William…

數據結構--【順序表與鏈表】筆記

順序表 template <class T> class arrList :public List<T> //表示 arrList 類以公有繼承的方式繼承自 List<T> 類 //公有繼承意味著 List<T> 類的公共成員在 arrList 類中仍然是公共成員&#xff0c;受保護成員在 arrList 類中仍然是受保護成員。 { …

idea中隱藏目錄

可能的解決步驟&#xff1a; 排除目錄的方法是否在2021版本中有變化&#xff1f;應該沒有&#xff0c;還是通過右鍵標記為排除。 用戶可能想完全隱藏目錄&#xff0c;比如在項目視圖中不顯示&#xff0c;這可能需要調整項目視圖的設置&#xff0c;比如取消勾選“顯示排除的文件…