本文研究优化问题中的肾脏算法(Kidney-inspired algorithm, KA) [1],对肾脏算法(KA)存在的缺陷进行了改进,并在许多优化问题中显示出不错的效果。针对KA算法在某些函数上寻优精度低、且容易过早地陷入局部最优的问题。引入了协作算子来增加种群多样性,并在重吸收更新公式上加入缩放因子,达到文章引用: 柯琪, 温洁嫦. 基于缩放因子和协作算子的肾脏算法[J]. 计算机科学与应用, 2018, 8(4): 472-479.
肾脏算法是由Jaddi 等人在2017 年提出的一种基于肾启发式算法的优化算法,它的灵感来自于尿液在人体肾脏中的产生。在肾脏的过程中,尿的形成有四个步骤:过滤、重吸收、分泌、排泄。KA 从初始种群开始,血液中包含水和溶质。在每一次迭代中,通过利用所有溶质的目标函数(MOF)的均值来控制种群中溶质的过滤。过滤后分为两部分,过滤后的血液(FB)和尿原液(W)。尿原液在移动中较优的溶质会被重吸收进入FB, 否则从W 中排泄出去;另一方面, 重吸收进入FB 的溶质不比FB 中最差的溶质为好, 则从FB 中分泌出去。
溶质即是目标函数的解。
然后对所有的解进行排序, 将FB 和W 中的解进行合并, 并更新过滤率,进行下一次迭代。在此算法中,基于当前解和迄今为止发现的最优解,生成趋近当前最优解的新解, 通过迭代寻找出全局最优解[2]。
在算法被提出后, 许多学者对肾脏算法的应用进行了研究。
Wang, Haichao [3]等人将KA 算法应用到主动配电系统规划。
Liang, Yi [4]等人将KA 算法与BP 神经网络结合用来评估预测碳排放。
在所有的优化算法中,主要的目标是找到全局最优[5]。要实现这一目标,就必须在寻优和增加种群多样性之间取得平衡[6]。在KA 算法中,溶质的运动和过滤过程为算法提供了良好的寻优能力,另外重吸收过程为增加种群多样性提供了很好的条件[7]。然而重吸收更新公式可能使算法陷入局部最优,为了提高寻优和增加种群多样性之间的平衡,本文在重吸收更新公式上加入缩放因子[8],避免重吸收后的解聚集在局部最优解的附近,扩大寻优范围。并引入协作算子[9],通过种群间个体的信息互换,增加种群多样性[10]。
本文组织结构如下:第2 章介绍KA 算法;第3 章详细讨论重吸收更新公式缩放因子和协作算子的插入以及改进的算法;第4 章为实验设置和结果分析;第5 章总结。
2. KA 算法 在KA 算法的初始阶段,创建一个随机的种群,并计算它们的目标函数值。然后,通过应用过滤算择较优个体移动到FB (Filtered Blood), 其他稍差一点的个体进入W (Waste), 算法中的FB 表示较优个体的集合,W 表示较差个体的集合。如果一个个体被分配给W,这个算法会给这个个体一次更新,使它有进入FB 中的机会。
如果更新后的个体质量较差,则从W 中排泄出去然后随机加入一个个体。
另一方面,如果一个个体分配给FB,但这个个体并不比FB 中最差的个体要好,就从FB 中分泌出去。最后对FB 的个体进行排序,并更新最优解(bests)。对过滤速率进行更新,并合并FB 和W,进行下一次迭代。
2.1. 虚拟溶质的运动 种群中的个体代表了生物血液中的溶质。在KA 的初始化阶段,和其他的算法一样,生成一个随机