HuldaGnodim 发表于 2021-12-4 10:56

第九弹——黑猩猩优化算法

引言

本期我们介绍一个较为新颖的算法——黑猩猩优化算法(Chimp Optimization Algorithm,ChOA)。该算法由M.Khishe等人于2020年提出,主要模拟了黑猩猩对于猎物的攻击、驱赶、拦截和追逐四种社会行为,总体而言性能较佳。无语的是,代码有许多部分与原文叙述并不符,大家习惯就好。
黑猩猩优化算法

在自然界中,黑猩猩群体与其他生物群体有以下两个主要区别:
1.个体多样性:在一群黑猩猩中,个体间的能力、智力并不相似,但它们都是狩猎小组的成员,执行任务时不存在某种歧视。鉴于各自能力不同,黑猩猩会根据自己的特殊能力来负责不同狩猎行动。在算法中,不同曲率、坡度和拦截点的不同模型被用来赋予黑猩猩不同的行为,就像在自然狩猎任务中一样;
2.性动机:除了群体狩猎的巨大优势外,研究表明,黑猩猩的狩猎行为还受到获取肉类后所带来的社会效益影响。黑猩猩获得肉类后即拥有了一定的声望,其可用肉来换取相应的回报,如性爱、被同伴梳毛等。不幸的是,获取一定食物后这种刺激会使黑猩猩忘记它们在狩猎过程中的责任。此时,他们试图趁乱获取肉类,这种无条件行为在算法后期提高了开发阶段和收敛速度。



图1 黑猩猩在捕食过程中的分工



图2 黑猩猩对猎物进行分食

1.驱赶、追逐猎物
分配任务后,黑猩猩们各司其职。在驱赶、追逐猎物的过程中,任何个体都会根据猎物的位置而改变自身位置:




大家回忆一下灰狼、鲸鱼就会发现公式(1)、公式(2)是不是和它们非常像?其中,d 为黑猩猩与猎物间的距离;Xprey为猎物位置;Xchimp为黑猩猩的位置;a、m、c 为系数向量:


在迭代过程中,f 由2线性递减至0(可以参考灰狼优化算法中的参数a),r1、r2为内的一个随机数;m是一个基于某种混沌映射计算出来的混沌向量,它代表了黑猩猩在狩猎过程中性动机的影响,在ChOA算法中,作者选择了高斯混沌映射:
for i=1:max_iter
    if x(i)==0
      x(i+1)=0;
    else
      x(i+1)=mod(1/x(i),1);
    end
    G(i)=x(i)*Value;
end2.攻击方式(开发阶段)
此阶段,黑猩猩能够探索猎物的位置(通过驱赶、拦阻和追逐),然后将其包围。整个狩猎过程通常是由攻击者(某种身份的黑猩猩)完成,驱赶者、拦阻者、追逐者仅仅参与狩猎过程。在算法中,四种黑猩猩分别更新自己的位置,其他黑猩猩根据四者位置进行更新(类似灰狼):




这样看来,猎物的位置是由四个最好的群体估计的,其他黑猩猩随机更新他们在附近的位置(越来越像灰狼了):



图3 黑猩猩的位置更新(这里明明就和灰狼一样好吧?!)

3.社会动机(性动机)
前文提到,当获得一定量食物后部分黑猩猩会不顾个人职责而陷入混乱的抢食状态。与蜻蜓优化算法类似,这一混乱的行为有助于ChOA在迭代后期避免陷入局部最优。原文假设黑猩猩以以同等概率选择正常位置或是由混沌模型生成的位置:


其中μ 为内一随机值。值得一提的是,文中设定若 μ<0.5 且 |a |<1,则利用式(2)更新当前黑猩猩位置,若 μ<0.5 且 |a |>1,则随机选择一个黑猩猩的位置进行更新; 若μ >0.5,则利用式(5)更新当前黑猩猩位置(类似鲸鱼)。对于文中提到的r1、r2,代码中是这样定义的:
%Group 1
C1G1=1.95-((2*l^(1/3))/(Max_iter^(1/3)));
C2G1=(2*l^(1/3))/(Max_iter^(1/3))+0.5;   
....   
r11=C1G1*rand();
r12=C2G1*rand();
....
A1=2*f*r11-f;
C1=2*r12; 所以其实这个“随机”也是做了手脚的。ChOA迭代伪代码如下:


性能测试

前文提到,ChOA中引入了高斯混沌映射,为了讨论不同混沌映射方式的优异性,本期基于ChOA选取Chebyshev Map、Gauss Map、Logistic Map、Singer Map、Sinusoidal Map、Tent Map这六种混沌映射机制进行对比。取种群规模为30,最大迭代次数为500,图4为六种混沌映射机制在100次迭代内的数值分布情况:



图4 六种混沌机制的迭代曲线



图5 六种混沌映射机制对比曲线



图6 六种混沌映射机制对比曲线



图7 六种混沌映射机制对比曲线

由图5~图7可看出对于收敛精度,Singer、Gauss混沌映射优化效果较佳;就收敛速度而言,Tent略胜一筹。
总结

总体而言,ChOA综合了灰狼优化算法、蜻蜓优化算法、鲸鱼优化算法的优点,可谓是实现了强强联合。同时,这也给我们改进算法提供了不少新的思路,像是混沌系数m为什么引在那个地方?为什么四种职业中每一种职业都只有一只猩猩担当?是不是多找几只猩猩担当会有更好的效果?这些问题值得验证。

c0d3n4m 发表于 2021-12-4 10:59

博主好,请问有完整的代码吗

unityloverz 发表于 2021-12-4 11:09

私聊

pc8888888 发表于 2021-12-4 11:16

博主好,可以分享一下完整代码吗

ainatipen 发表于 2021-12-4 11:19

私聊

RedZero9 发表于 2021-12-4 11:22

博主你看看私信,我私信你了
页: [1]
查看完整版本: 第九弹——黑猩猩优化算法