第二十八弹——人工生态系统优化算法
本期我们介绍人工生态系统优化(Artificial Ecosystem-based Optimization,AEO)算法。该算法由zhao等人于2019年提出,主要模拟了地球生态系统中的能量流动过程。算法中引入生产算子以平衡算法的勘探和开发,消费算子用于提升算法的探索能力;分解算子旨在增强算法的开发性能。因思路新奇,试验结果良好,故在多个领域得到广泛应用。
相信在高中生物课上大家都学过生态系统的相关知识,有没有感觉图1非常熟悉?
![](https://pic1.zhimg.com/v2-e302dba00af4910d64f68142eb675148_r.jpg)
言归正传。首先我们来看一下作者在原文中给出的五条设定:
(a).种群中的生态系统包括三种生物:生产者、消费者和分解者。
(b).一个群体中只有一个生产者。
![](https://pic2.zhimg.com/v2-4896cd8a8335616fd5a729ed667704e5_r.jpg)
(c).一个种群中只有一个分解者。
(d).一个种群中的其他个体都是消费者,每一个消费者随机被选为食肉动物、草食动物或杂食动物,概率相同。
(e).种群中每个个体的能量水平由其函数适应度值来评估。
图2为自然界中的能量流动,图3为能量流动的模拟图:
![](https://pic2.zhimg.com/v2-96423198b7e17310d71869dc289272c1_r.jpg)
![](https://pic1.zhimg.com/v2-e14b88c29f6fb4628ad55d74e4715640_r.jpg)
生产者
在整个生态系统中,生产者能够利用CO2、水、阳光及分解者提供的营养来产生能量。因此,在算法中生产者由当前最差个体扮演,而分解者由当前最优个体扮演。生产者的数学模型为:
![](https://pic4.zhimg.com/v2-1cac9af90e9d487a95cf0bef13e9e4a3_r.jpg)
其中,n为种群规模,T 为最大迭代次数,U、L为搜索搜空间上、下限;r1为[0,1]内一随机值,r为[0,1]内的随机向量。图4给出了生产者在2D、3D空间中20次迭代内的收敛行为:
![](https://pic1.zhimg.com/v2-4b4cfdc22d1dcdee4487e464f1574cec_r.jpg)
消费者
生产者提供能量后,如果当前消费者为食草动物,它将只以生产者为食;若为食肉动物,它将随机选择能量较高的消费者为食;若为杂食动物,它可同时选择能量较高的消费者或是生产者为食。因此,这里有三种位置更新方式:
(a)食草动物:
![](https://pic4.zhimg.com/v2-a262597b865db66d1215069a5ada6a3b_r.jpg)
注意式中的x1为之前提到的生产者,参数C 为具有莱维飞行特性的消费因子:
![](https://pic2.zhimg.com/v2-07564b737571c7f81df77a02619f3b51_r.jpg)
式中N(0,1)为呈正态分布、均值为0、标准差为1的概率密度函数。
(b).食肉动物:
![](https://pic4.zhimg.com/v2-37f6921306ccf49743c08b4ae1f3c5cf_r.jpg)
式中xj 为具有较高能量水平的消费者,对于杂食动物就是消费者或生产者。
(c).杂食动物:
![](https://pic4.zhimg.com/v2-7044e38263e92c12d68656f22bdbcaa3_r.jpg)
式中r2为[0,1]内一随机数。图5展示了在2D、3D空间中200个样本内消费者的行为:
![](https://pic2.zhimg.com/v2-68f961592b890fe94ca7ae6aa9a5ba6d_r.jpg)
分解者
在生态系统中分解者扮演了一个非常重要的角色,他可以为生产者提供必要的营养。算法中通过控制分解因子D及权重系数e、h来更新消费者的空间位置:
![](https://pic3.zhimg.com/v2-2406ad0566bf583549c1e104bc4f81d2_r.jpg)
式中,xn为分解者的位置,r3为[0,1]内一随机数。至此,可得算法迭代伪代码:
![](https://pic3.zhimg.com/v2-6f31c2cec7aaeb243f9f01e89a4aa25e_r.jpg)
本期我们将AEO算法与往期的秃鹰搜索优化算法(BES)、人工水母优化算法(JS)、算法优化算法(AOA)、法医调查算法(FBI)、海洋捕食者算法(MPA)、黑猩猩优化算法(ChOA)、精子群优化算法(SSO)在种群规模30,最大迭代次数1000,维度30的条件下针对部分标准测试函数进行测试:
![](https://pic2.zhimg.com/v2-649da76f3f2e54581c8c243bd49cabc5_r.jpg)
![](https://pic1.zhimg.com/v2-578cd9f81b761bb302b64d3c5feaf630_r.jpg)
![](https://pic2.zhimg.com/v2-a8dbaa71e671f43861f443aa79aeecb1_r.jpg)
可以看出,AEO算法在这三个标准测试函数上的性能属实一般,跳出局部最优值的能力也有待提升。
总体来讲,AEO算法模型简单,易于实施,可操作性非常好,但是性能还是有些不尽人意。文中取生产者,分解者各只有一个个体,这样对于消费者而言引导性较弱,而且陷入局部最优值后仅凭借莱维飞行的随机性不足以产生较好的脱离作用,所以很期待有较好的AEO算法改进版本。如有读者需要代码可三连后私聊哦~