蜘蛛猴优化算法MATLAB实战
今天给大家分享蜘蛛猴优化算法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<100
MONKEY DEFINITION
[]; =
[]; =
[]; =
GENERAL CONFIGURATION
config;
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); =
SMO
SM = 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:1
for it=1:confg.MaxIt
SM = 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); =
end
end
%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 here
Detailed explanation goes here
x=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学习之家
点赞 4 评论 1 收藏 1