智能优化算法:自私羊群优化算法

智能优化算法:自私羊群优化算法-附代码

@[toc]
摘要:自私羊群优化 (Selfish Herds optimization,SHO) 算法是由 Fausto 于 2017 年提出的元启发式算法。该算法主要模拟羊群受到捕食者攻击时的自私行为(尽量聚集到牧群中心远离捕食者),它具有易于理解和实施的特点。

1.算法原理

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

1.1 初始化种群个体

假设自私羊群体优化算法的群体集合是 S ,它包含N 个种群个体,种群中的每一个体被定义为 S_i=(s_{i,1},s_{i,2},…,s_{i,n}) ,其代表个体在种群中的位置信息,n 代表解决方案的大小。整个种群组的初始化公式如下:
s_{i,j}=x_j^{low} +rand(0,1).(x_j^{high}-x_j^{low})\tag{1}
其中 x^{low}_jx^{high}_j分别表示解空间的下限和上限。算法参数值的范围:i=1,2,..,Nj=1,2,...,nrand()表示随机函数,生成值的范围落在区间[0,1]内。

在自私羊群优化算法中,整个种群 S 被分为两个子群:HP(S = H ∪ P) ,H(H = h_1,h_2,…,h_{Nh}) 代表一群猎物,P(P = p_1,p_2,…,p_{Np})代表一群捕食者。在自然界中,猎物的数量通常多于捕食者的数量。在 SHO 中,猎物 (N_h) 的数量占总个体的 70%~90% (N) ,其余的个体被认为是捕食者 (N_p) 。 N_hN_p按以下公式计算:
N_h=floor(N.rand(0.7,0.9))\tag{2}

N_p = N- N_h \tag{3}

其中,rand() 表示一个随机数,其值范围为 0.7到 0.9,floor() 表示将实数转换为整数的函数。

1.2 分配生存价值

在 SHO 中,为整个种群 (S) 的每个体 (s_i) 分配一个生存值 (SV_{si}) ,其代表个体的生存能力,有机会在攻击中生存或成功杀死攻击中的猎物。生存价值的数学公式定义如下:
SV_{si}=\frac{f(s_i-f_{worst})}{f_{best}-f_{worst}}\tag{4}
其中,f () 代表目标函数,f_{best}f_{worst}分别代表目标函数的最佳值和最差值。对 70%~90%的猎物计算生存价值,生存价值最高的为猎物领袖,生存价值越低的为最容易被捕获的猎物。

1.3 算法的结构

基于 SHO 的算法的结构主要包括四个方面:① 猎物(被捕食者)领袖的运动;② 猎物追随者的跟随运动或逃脱运动;③ 捕食者的狩猎运动;④ 捕食阶段和恢复阶段。

1.3.1 猎物领袖的运动

猎物的领导者被定义为猎物种群中最大的生存价值。定义公式如下:
h_L=(SV_{h_j}=max(SV_{h_i})),i\in{1,2,...,N}\tag{5}
猎物领袖的位置更新如下:
h_L=\begin{cases} h_L+2.\alpha.\varphi_{h_L,p_M}.(p_M-h_L),SV{h_L}=1\\ h_L+2.\alpha.\varphi_{h_L,x_{best}}.(x_{best}-h_L),SV_{h_L}<1 \end{cases}\tag{6}
\alpha代表区间[0,1]之间的随机数,\alpha 越大,位置更新越快,捕获的猎物越多;\alpha 越小,捕获的猎物越少。 \varphi 代表个体之间的吸引力,p_M代表猎物的相对危险位置, \varphip_M定义如下:
\varphi_{h_i,h_j}=SV_{h_j}.e^{-||h_i-h_j||^2}\tag{7}

p_M = \frac{\sum_{i=1}^{N_p}SV_{p_i}.p_i}{\sum_{i=1}^{N_p}SV_{p_i}}\tag{8}

1.3.2 猎物追随者的跟随运动或逃脱运动

在猎物种群中,猎物追随者分为跟随猎物 (H_F) 和逃生猎物 (H_D) ,跟随猎物又分为优势猎物 (H_d) 和下属猎物 (H_s) 。其定义如下:
H_F=\{h_i\neq h_L|SV_{h_i}\geq rand(0,1)\} \tag{9}

H_D=\{h_i\neq h_L|SV_{h_i}< rand(0,1)\} \tag{10}

H_d = \{h_i\in H_F|SV_{h_i}\geq SV_{h_u} \} \tag{11}

H_s = \{h_i\in H_F|SV_{h_i}< SV_{h_u} \} \tag{12}

其中 SV_{h_u}代表猎物生存价值的平均值,定义如下:
SV_{h_u}=\frac{\sum_{i=1}^{N_h}SV_{h_i}}{N_h}\tag{13}
跟随猎物的位置更新公式如下:
h_i=\begin{cases} h_i+2.(\beta.\varphi_{h_i,h_j}.(h_L-h_i)+r.\varphi_{h_i,h_j}.(h_{c_i}-h_i)),h_i \in H_d \\ h_i+2.\delta.\varphi_{h_i,h_M}.(h_M - h_i),h_i \in H_s \end{cases} \tag{14}
其中,β ,r,\delta 表示区间[0,1]内的随机数形式,h_{c_i}表示局部最优个体,h_M表示猎物的相对安全位置,其定义如下:
h_{c_i} = (\frac{h_j \in H,h_j\neq [h_i,h_L]|SV_{h_j}>SV_{h_i}}{r_{i,j}=min||h_i,h_j||})\tag{14}

h_M =\frac{\sum_{i=1}^{N_h}SV_{h_i}.h_i}{\sum_{i=1}^{N_h}SV_{h_i}} \tag{15}

其中 r_{i,j}代表猎物个体之间的欧几里德距离。逃生猎物的位置更新公式如下:
h_i=h_i + 2.(\beta,\varphi_{h_i,x_{best}}.(x_{best}-h_i)+r.(1-SV_{h_i}).e)\tag{16}
其中,x_{best}表示全局最优位置,βr 表示在区间[0,1]内的随机数,β 表示距离猎物领袖位置,β 越小,表示距离越近;r表示控制随机偏移值的长短,r越小,表示偏移值越小。 e 表示空间解中的随机方向。

1.3.3 捕食者的狩猎运动

在捕食者种群中,捕食者的位置更新公式如下:
p_i=p_i+2.\rho.(h_r-p_i)\tag{17}
其中,ρ 代表区间[0,1]之间的随机数,ρ 值越大,位置更新越远,越容易忽略猎物。h_r是基于捕食概率从猎物种群中随机选择的猎物,捕食概率 (θ_{p_i},h_j) 定义如下:
\theta_{p_i,h_j} = \frac{w_{p_i,h_j}}{\sum_{m=1}^{N_h}w_{p_i,h_m}}\tag{18}
w_{p_i,h_j}表示捕食者和猎物之间的吸引力,吸引力的数学公式定义如下:
w_{p_i,h_j} = (1- SV_{h_j}).e^{-||p_i-h_j||^2}\tag{19}
其中||p_i-h_j||^2代表 p_ih_j之间的欧几里德距离。

1.3.4 捕食阶段和恢复阶段

捕食阶段:每个猎物都有一个危险的区域,如果它属于这个领域,很可能被捕食者捕杀。危险域通常是一个圆,其半径定义为:
R = \frac{\sum_{j=1}^{n}|x_j^{low}-x_j^{high}|}{2.n}\tag{20}
危险区域的猎物收集定义如下:
T_{p_i}=\{ h_j \in H | SV_{h_j}<SV_{p_i},||p_i-h_j||\leq R\}\tag{21}
猎物在危险区域被猎杀的概率定义如下:
u_{p_i,h_i} = \frac{w_{p_i,h_i}}{\sum_{h_m \in T_{p_i}}w_{p_i,h_i}},h_j \in T_{p_i} \tag{22}
恢复阶段:在 SHO 中,被捕食者猎杀的所有猎物都将被新生的猎物所取代,新的猎物将通过交配操作产生,SHO通过交配概率选择交配猎物,其定义如下:
\sigma_{h_j}=\frac{SV_{h_j}}{\sum_{h_m\in M}SV_{h_m}}\tag{23}
其中 M 代表一群没有被捕食者捕杀的猎物集,交配操作定义如下:
h_{new}=mix([h_{r_1,1},h_{r_2,2},...,h_{r_n,n}])\tag{24}
函数 mix() 用于从不同个体 (s = r_1,r_2,…,r_n) 中选择维度组件。

算法流程如下:

1.Input
2.Begin

3.利用公式初始化所有个体 S

4.定义羊群成员和捕食者的个数,利用公式(1)并将S 分为两组:H 与 P
5.For entire S do

6.利用公式(3)计算生存值
7.End For
8.While(t <Max number of iterations)

9.执行自私羊群移动操作

  1. For each selfish herd

  2. IF leader of the herd

  3. 利用公式(5)为羊群领袖更新位置

  4. Else

  5. 利用公式(3)和(16)更新羊群跟随或逃离运动

  6. End IF

  7. End For

  8. 捕食者移动操作

  9. For each predators

  10. For each selfish herd

  11. 利用公式(18)计算追逐概率

  12. End For

  13. 利用公式(17)更新捕食者位置

  14. End For

  15. 利用公式(3)重新计算 H 和 P 中每个成员的生存值

  16. 利用公式(20)计算危险域半径 R

  17. 利用公式(21)、(22)执行捕食阶段

  18. 利用公式(23)、(24)执行恢复阶段

  19. t = t + 1

  20. End while

  21. 返回羊群领导者位置

  22. Output 最优值

  23. End

2.算法结果

算法结果

3.参考文献

[1] Fausto F,Cuevas E,Valdivia A,et al.A global optimization
algorithm inspired in the behavior of selfish herds[J].
BioSystems,2017,160:39-55.

[2] 朱惠娟,王永利,陈琳琳.面向三维模型轻量化的自私羊群优化算法研究[J].计算机工程与应用,2020,56(03):42-48.

4.Matlab代码

https://mianbaoduo.com/o/bread/aJicmJ0=

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容