优化算法自私羊群优化算法(SHO)含Matlab源码 1569期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化算法自私羊群优化算法(SHO)含Matlab源码 1569期相关的知识,希望对你有一定的参考价值。

一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:【优化算法】自私羊群优化(SHO)【含Matlab源码 1569期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、自私羊群优化算法简介

自私羊群优化SHO算法是由Fausto于2017年提出的元启发式算法,它主要基于汉密尔顿提出的自私群理论来模拟猎物与捕食者之间的狩猎关系。当群体中的个体受到捕食者的攻击时,为了增加生存机会,群体中的个体产生聚集行为,个体更有可能移动到相对安全的位置(群体的中心位置),并且群体的边缘个体更容易受到攻击,这也导致群体的边缘个体逃离群体,以增加他们被捕食者攻击时的生存机会。该方法假设整个平原是一个解空间,该算法包含两个不同的搜索因子:被狩猎群和狩猎群。每个搜索因子通过一组不同的进化算子指导算法的计算,以便更好地模拟猎物与捕食者关系之间的关系。

(1)初始化种群个体
假设自私羊群体优化算法的群体集合是S,它包含N个种群个体,本文中个体对应三维网络中的面和点。种群中的每一个体被定义为Si=(si,1,si,2,…,si,n),其代表个体在种群中的位置信息,n代表解决方案的大小(设计面总数)。整个种群组的初始化公式如下:

其中xjlow和xjhigh分别表示解空间的下限和上限。算法参数值的范围:i=1,2,…,N和j=1,2,…,n。rand()表示随机函数,生成值的范围落在区间[0,1]内。

在自私羊群优化算法中,整个种群S被分为两个子群:H和P(S=H∪P),H(H=h1,h2,…,hNh)代表一群猎物,P(P=p1,p2,…,pNp)代表一群捕食者。在自然界中,猎物的数量通常多于捕食者的数量。在SHO中,猎物(Nh)的数量占总个体的70%~90%(N),其余的个体被认为是捕食者(Np)。Nh和Np按以下公式计算:

其中,rand()表示一个随机数,其值范围为0.7到0.9,而floor(∙)表示将实数转换为整数的函数。
整个过程都在不断优化点和面,任何形状的图形,捕食者都会遍历所有猎物的信息,因此,三维网格不分模型形状,将随机生成猎物和捕食者。

(2)分配生存价值
在SHO中,为整个种群(S)的每个体(si)分配一个生存值(SVsi),其代表个体的生存能力,有机会在攻击中生存或成功杀死攻击中的猎物。生存价值的数学公式定义如下:

其中,f(⋅)代表目标函数,fbest和fworst分别代表目标函数的最佳值和最差值。对70%~90%的猎物计算生存价值,生存价值最高的为猎物领袖,生存价值越低的为最容易被捕获的猎物。

三、部分源代码

clear all 
clc
SearchAgents=30; 
Fun_name='F1';  
Max_iterations=1000; 
[lowerbound,upperbound,dimension,fitness]=fun_info(Fun_name);
[Best_score,Best_pos,SHO_curve]=sho(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);
figure('Position',[300 300 300 300])
plots=semilogx(SHO_curve,'Color','g');
set(plots,'linewidth',2)
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best fitness score');
axis tight
grid on
box on
legend('SHO')
display(['The best optimal value of the objective function found by SHO is : ', num2str(Best_score)]);
function func_plot(fun_name)

[lowerbound,upperbound,dimension,fitness]=fun_info(fun_name);

switch fun_name 
    case 'F1' 
        x=-100:2:100; y=x; %[-100,100]
        
    case 'F2' 
        x=-100:2:100; y=x; %[-10,10]
        
    case 'F3' 
        x=-100:2:100; y=x; %[-100,100]
        
    case 'F4' 
        x=-100:2:100; y=x; %[-100,100]
    case 'F5' 
        x=-200:2:200; y=x; %[-5,5]
    case 'F6' 
        x=-100:2:100; y=x; %[-100,100]
    case 'F7' 
        x=-1:0.03:1;  y=x  %[-1,1]
    case 'F8' 
        x=-500:10:500;y=x; %[-500,500]
    case 'F9' 
        x=-5:0.1:5;   y=x; %[-5,5]    
    case 'F10' 
        x=-20:0.5:20; y=x;%[-500,500]
    case 'F11' 
        x=-500:10:500; y=x;%[-0.5,0.5]
    case 'F12' 
        x=-10:0.1:10; y=x;%[-pi,pi]
    case 'F13' 
        x=-5:0.08:5; y=x;%[-3,1]
    case 'F14' 
        x=-100:2:100; y=x;%[-100,100]
    case 'F15' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F16' 
        x=-1:0.01:1; y=x;%[-5,5]
    case 'F17' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F18' 
        x=-5:0.06:5; y=x;%[-5,5]
    case 'F19' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F20' 
        x=-5:0.1:5; y=x;%[-5,5]        
    case 'F21' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F22' 
        x=-5:0.1:5; y=x;%[-5,5]     
    case 'F23' 
        x=-5:0.1:5; y=x;%[-5,5]  
end    

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]朱惠娟,王永利,陈琳琳.面向三维模型轻量化的自私羊群优化算法研究[J].计算机工程与应用. 2020,56(03)

以上是关于优化算法自私羊群优化算法(SHO)含Matlab源码 1569期的主要内容,如果未能解决你的问题,请参考以下文章

路径规划基于matlab人工蜂群优化粒子群算法求解最短路径规划问题含Matlab源码 124期

优化选址基于matlab蚁群算法求解电动汽车充电站与换电站选址优化问题含Matlab源码 1182期

优化算法龙格-库塔优化算法含Matlab源码 1799期

优化算法白冠鸡优化算法(COOT)含Matlab源码 1795期

优化算法基于matlab象鼻虫损害优化算法 (WDOA)含Matlab源码 2228期

优化算法基于matlab量子粒子群算法求解单目标优化问题含Matlab源码 2203期