蜘蛛猴優化算法MATLAB實戰
瀏覽:2257 評論:1 收藏:1
今天給大家分享蜘蛛猴優化算法MATLAB實戰,主要從算法原理和代碼實戰展開。需要了解更多算法代碼的,可以點擊文章左下角的閱讀全文,進行獲取哦~需要了解智能算法、機器學習、深度學習和信號處理相關理論的可以后臺私信哦,下一期分享的內容就是你想了解的內容~
一、算法原理
蜘蛛猴優化算法(Spider Monkey Optimization,SMO) 是通過模擬蜘蛛猴基于裂變-融合社會機制進行覓食的社會行為而衍生的一種算法。該算法的優點在于敏感參數少,魯棒性強且具有良好的全局收斂性。蜘蛛猴優化算法主要包括 以下幾個階段:
(1)種群初始化
通過下式初始化產生 M 只蜘蛛猴:
(2) 局部領導階段
局部領導階段位于種群初始化之后,基于當地領導者和個體成員的經驗調整新的位置。通過使用適應度函數比較新位置和當前位置來進行貪婪選擇。
(3) 全局領導階段
全局領導者階段基于全局領導者和局部組成員的經驗,利用式(4-18)修改自 己的位置
學習階段結束后,對任一局部領導者位置的更新進行決策。如果沒有更新到局部限制次數閾值,則組內所有成員通過隨機初始化或基于全局領導者和局部領導者經驗來更新自己的位置:
(7)全局領導決策階段
在局部領導決策階段之后,如果全局領導者的位置沒有更新到特定的迭代值,則根據全局領導者的決策將種群劃分為更小的組。
蜘蛛猴優化算法的算法流程圖如下圖所示。
二、代碼實戰
clc;clear;close all;TARGET EQUATION((ABS(X)-20)^2+(Y)^2) -100<X<100 -100<Y<100MONKEY DEFINITION=[];=[];=[];GENERAL CONFIGURATIONconfig;confg = repmat(empty_config,1,1);= [-100,-100];=[100,100];= 2;= 50;= 1;= 5;=2000;= 50;= 150;= 30;= 50;= 0.1;=ceil(confg.nPop/confg.nGrp);SMOSM = repmat(empty_particle,confg.nPop,1);LL = repmat(empty_particle,confg.nPop,1);GL = repmat(empty_particle,1,1);SM = Initialize(SM,confg);=Inf;= SetInitialLeaders(SM,GL,LL,confg);for run=1:1for it=1:confg.MaxItSM = LocalLeaderPhase(SM,LL,confg);SM = GlobalLeaderPhase(SM,GL,confg);LL = LocalLeaderLearningPhase(SM,LL,confg);GL = GlobalLeaderLearningPhase(GL,LL,confg);= LocalLeaderDecisionPhase(SM,GL,LL,confg);= GlobalLeaderDecisionPhase(SM,GL,LL,confg);endend=%d Cost=%f Position=(%f %f)\n',it,GL.Cost,GL.Position(1),GL.Position(2));plotData(SM,GL,LL,confg);
function f = CostFunction( VAL )Summary of this function goes hereDetailed explanation goes herex=VAL(1);y=VAL(2);= x^4-4*x^3-2*x^2+5*x+9+y^2-y;f=(abs(x)-20)^2+y^2;end
實驗結果:
文章來源:matlab學習之家
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
4
1
1




















