正弦余弦算法的樽海鞘群算法
文章目录
- 正弦余弦算法的樽海鞘群算法
- 1.樽海鞘群算法
- 2.正弦余弦算法的樽海鞘群算法
- 2.1 Logistics 映射的种群初始化
- 2.2 正弦余弦算法(SCA)
- 2.3差分演化变异策略
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.python代码
摘要:针对樽海鞘群算法求解精度不高和收敛速度慢等缺点,提出一种正弦余弦算法的樽海鞘群算法(SCS-SA)。引入 Logistics 混沌序列生成初始种群,增加初始个体的多样性;将正弦余弦算法作为局部因子嵌入到樽海鞘群算法中,对樽海鞘个体进行正弦和余弦优化;对最优樽海鞘的领域空间进行差分演化变异策略,增强局部搜索能力。
1.樽海鞘群算法
基础樽海鞘群优化算法算法的具体原理参考,
2.正弦余弦算法的樽海鞘群算法
2.1 Logistics 映射的种群初始化
樽海鞘群体的初始化对 SSA 的收敛速度和寻优精度至关重要。在樽海鞘群初始时,由于没有任何先验知识可使用,基本上大部分群智能算法的初始位置都是随机生成的。初始种群均匀分布在搜索空间,对提高算法寻优有很大帮助。混沌序列具有随机性、遍历性和规律性,通过其产生的樽海鞘群体有较好的多样性。其基本思路是:通过映射关系在[0,1]区间产生混沌序列,然后将其转化到个体的搜索空间。产生混沌序列的模型有许多,本文采用 Logistics 映射生成的混沌序列来初始化樽海鞘群算法群体。Logistics 映射的数学表达式为:
式中: 是混沌参数, 越大,混沌性越好,本文取表示种群规模;
Logistics 混沌映射对初始值的选取非常敏感,给式(6)选取 个具有微小差异的初始值,则可得到 个混沌序列 。然后再将个混沌序列 作逆映射到相应的个体搜索空间变量 。
为
2.2 正弦余弦算法(SCA)
由式(5)追随者位置更新公式可知,第 i 只樽海鞘位置会根据第 i 和 i - 1 只樽海鞘位置坐标中点进行更新。在此过程中并没有判别x i 是否优于原来位置,这种单方向根据第 i 只樽海鞘的位置信息机制,樽海鞘个体之间缺少交流,信息利用率较低。为使群体之间拥有更多的交流机会,进一步优化樽海鞘群算法的探索和开发能力,本文引入正弦余弦算法作为局部优化算子嵌入到樽海鞘群算法中,即在更迭后期对全部樽海鞘个体采用正弦余弦操作,指导樽海鞘个体更新樽海鞘位置,更新公式如下:
式中: 表示 维个体的空间位置;表示每一代最有个体的位置,即食物源位置;$r _1 = a - t × a/T max a = 2r_2$属于区间[0,2π]之间的一个随机数,其决定了应朝向或远离目标的移动距离。
2.3差分演化变异策略
在 SSA 中,樽海鞘链的领导者位置 至关重要,指引群体朝着最优解方向移动,但如果 陷入局部最优,则容易使群体整体搜索出现停滞,对其进行变异操作,搜索邻域空间,可增强算法跳出局部最优的能力。本文采用一种差分演化变异策略(Differential Evolu-tionary Mutation,DEM) 。该策略采用差分演化对领导者位置 进行扰动。更新公式如下:
式中: 是缩放因子; 是区间[1,N]上互不相同的随机整数,代表不同樽海鞘个体;j 是维度;为扰动后的食物源位置。使用式(10)交叉操作选择新的食物源位置。
式中: rand 是[0,1]区间均匀分布的随机数,对每一个维度都要重新产生; 为交叉概率; 是区间[1,D]上随机生成的一个整数,确保 至少有一维不同于 。本文实验中,
正弦余弦算法的樽海鞘群算法步骤如下:
Step 1 初始化个体位置。使用 Logistics 映射生成混沌序列,根据搜索空间的上下限,把混沌序列逆映射为一个 N × d 维的矩阵。
Step 2 计算初始适应度值。根据测试函数计算N 个樽海鞘的适应度值。
Step 3 选定食物源。将 Step2 中计算后的适应度值升序(或降序)排列,适应度值最好的樽海鞘位置选定为食物源位置。
Step 4 更新领导者和追随者位置。确定食物源位置之后,选取种群中一个的樽海鞘个体根据式(2)更新领导者位置,其余的樽海鞘根据式(5)更新追随者位置。
Step 5 正弦余弦指引策略。利用式(8)对 Step4所生成的樽海鞘个体进行正弦或余弦操作,以更新到新的樽海鞘位置。
Step 6 计算适应值。计算更新后种群的适应度值,引入差分演化变异策略,根据式(9)和式(10)更新食物源位置。
Step 7 重复 Step4 - Step6,如果达到设置的精度要求或规定的最大迭代次数,则终止算法,输出全局最优解。
3.实验结果
4.参考文献
[1]陈忠云,张达敏,辛梓芸.正弦余弦算法的樽海鞘群算法[J].计算机应用与软件,2020,37(09):209-214.
5.Matlab代码
6.python代码