APP下载

正弦余弦算法的研究及应用综述

2020-07-17雍龙泉黎延海

计算机工程与应用 2020年14期
关键词:余弦正弦全局

雍龙泉,黎延海 ,贾 伟

1.陕西理工大学 数学与计算机科学学院,陕西 汉中 723000

2.陕西省工业自动化重点实验室,陕西 汉中 723001

1 引言

优化问题来源于人类对某种最优结果的追求,传统优化方法主要包括解析法、迭代法等。自从法国数学家柯西提出最速下降法之后,最优化的理论与算法逐渐形成。随着复杂、不可微、大规模优化问题的出现,优化问题的求解算法也从牛顿法、共轭梯度法、Powell法等发展到智能优化算法。文献[1]中给出了百余种智能优化算法,并对这些算法进行了归类。大体分为如下几类。

(1)仿植物生长算法,包括人工植物优化算法、人工藻类算法、树根优化算法、森林优化算法、入侵杂草优化算法、种子优化算法、花朵授粉优化算法等。

(2)群体智能优化算法,包括蚁群算法、粒子群算法、人工蜂群算法、蛙跳算法、人工鱼群算法、鲸鱼优化算法、细菌觅食算法、细菌趋药性算法、狼群算法、猴群算法、猫群优化算法、灰狼优化算法、布谷鸟优化算法、萤火虫算法、生物地理学优化算法等。

(3)进化算法,包括遗传算法、进化规划、进化策略、分布估计算法、差分进化算法、DNA计算、Memetic算法、文化算法等。

(4)仿自然优化算法,包括模拟退火算法、混沌优化算法、随机分形搜索算法、量子搜索算法、智能水滴优化算法、水波优化算法、人工雨滴算法、云搜索算法、气象模型优化算法、风驱动优化算法、宇宙大爆炸算法、引力搜索算法、极值动力学优化算法、闪电搜索算法、光线优化算法、化学反应优化算法等。

(5)仿人智能优化算法,包括神经网络算法、免疫算法、内分泌算法、人工代谢算法、禁忌搜索算法、和声搜索算法、思维进化算法、社会进化算法、人口迁移算法、头脑风暴优化算法、教与学优化算法等。

近十年涌现了众多优秀的智能优化算法,然而一个算法在某些优化问题上的优异表现并不能保证其在其他问题上的有效性,即不存在一个算法能有效解决所有的优化问题,这便是著名的“无免费午餐”定理(No Free Lunch,NFL)。于是学者们不断尝试开发新的算法。正弦余弦算法(Sine Cosine Algorithm,SCA)是一种新型的群智能优化算法(属于仿自然优化算法),由澳大利亚学者Mirjalili于2016年提出,该算法利用正弦余弦函数的性质,使解震荡性的趋于全局最优,算法中自适应参数和随机性参数较好地平衡了算法的探索和开发能力,并解决了机翼设计问题[2]。正弦余弦算法具有参数少、结构简单、易实现、收敛速度快等优点,在实际应用中具有较优的性能,因此,近三年以来引起了国内外学者的广泛关注。

本文首先给出了正弦余弦算法,接着分析了正弦余弦算法的搜索原理和影响算法性能的主要参数,并对正余弦算法的改进及应用进行了综述,最后展望了正余弦算法的发展前景。

2 正弦余弦算法

2.1 基本的SCA算法

下面给出正弦余弦算法的主要步骤。

初始化算法参数:种群规模N,空间维数D,控制参数a,最大迭代次数Tmax;在可行域空间中随机初始化N个个体组成初始种群;t=1;计算当前每个个体的适应值,并记录最优个体位置P(t);while(t<Tmax)

fori=1toN do //对每一个个体进行更新

forj=1toD do //对每一维上进行更新

根据式r1=a-at/Tmax计算r1的值;

随机产生r2∈U[0,2π],r3∈U[0,2],r4∈

end for

end for

越界处理;

计算每个个体的适应值并更新种群的最优个体位置 P(t);t=t+1;

end while

正弦余弦算法结构简单,容易实现,其最显著的特点是基于正弦函数式(1)和余弦函数式(2)值的变化来达到寻优目的。在正弦余弦算法中,主要有r1,r2,r3,r4四个参数。其中,最关键的是自适应参数r1,控制算法从全局搜索到局部开发的转换。当r1的值较大时,算法倾向于全局搜索;当r1的值较小时,算法偏向于局部开发。该算法利用正弦余弦函数的周期实现全局搜索和局部开发。

图1给出了a=2,Tmax=300与a=2,Tmax=1 000时r1sin(r2)与r1cos(r2)的图像。

当r1>1时,函数r1sin(r2)与r1cos(r2)值才有可能大于1或者小于-1;当r1≤1时,函数r1sin(r2)与r1cos(r2)值必在-1和1之间。根据SCA算法设计原理,算法先进行全局搜索再进行局部开发。当 | r1sin(r2)|>1或者|r1cos(r2)|>1时,算法进行全局搜索;当 | r1sin(r2)|≤1或者|r1cos(r2)|≤1时,算法进行局部开发;如图2所示。

图1 r1sin(r2)与r1cos(r2)的图像

图2 r1=2,r3=1时r1sin(r2)和r1cos(r2)的波动性及算法搜索策略

2.2 SCA算法测试结果

图3 ~6给出了函数图像及收敛性曲线。

本节给出采用SCA算法求解几个优化问题,包括单峰函数与多峰函数,程序用MatlabR2009a编写,参数设置N=30,a=2,Tmax=1 000。表1给出了测试函数,

3 正弦余弦算法分析

SCA中每个个体更新通过下面的迭代实现:

表1 测试函数

图3 函数 f1的图像及SCA算法收敛性曲线

图4 函数 f2的图像及SCA算法收敛性曲线

图5 函数 f3的图像及SCA算法收敛性曲线

图6 函数 f4的图像及SCA算法收敛性曲线

迭代式(3)与(4)各以0.5的概率选取,由于正弦函数平移后便可以得到余弦函数,所以正弦函数和余弦函数的函数值分布是相同的。因此,虽然r2∈U[0,2π]是随机数,但是从概率角度而言,r1sin(r2)与r1cos(r2)的函数值分布几乎相同。

取a=2,Tmax=10 000,r1=a-at/Tmax,r2∈U[0,2π],图7给出了r1sin(r2)与r1cos(r2)函数值的频数分布直方图。

从图3可知,r1sin(r2)与r1cos(r2)频数直方图几乎是等效的。结合图1与r1=a-at/Tmax可以得出,当迭代次数之后,r1<1,于是算法不再进行全局探索。

表2对基本粒子群算法(PSO)、差分进化算法(DE)、和声搜索算法(HS)、正余弦算法(SCA)进行了横向对比,主要列举了算法中影响全局搜索或局部开发的主要参数及更新模式。

图7 函数r1sin(r2)与r1cos(r2)的频数直方图

表2 PSO,DE,HS,SCA四种算法的搜索机制对比

SCA算法主要由4个参数r1,r2,r3,r4决定,算法后期主要进行局部开发,因此与其他智能算法一样,也存在早熟现象;与其他算法不同的是,SCA算法跳出了一般智能优化算法的思路,仅仅利用正弦余弦函数的震荡性趋于最优。

4 正弦余弦算法改进

4.1 参数的改进

(1)对参数r1的改进

鉴于参数r1控制着算法的搜索过程,因此大部分的学者对参数r1的改进做了许多的研究。诸如采用非线性递减的抛物线函数r1=a(1-t/Tmax)2和指数函数r1=aexp(-t/Tmax)。若采用抛物线函数,则当t>(1-1/a)Tmax时r1<1;若采用指数函数,则当t>Tmaxlna时r1<1。王远在文献[3]中给出了更多的参数r1表达式;石磊在文献[4]中构造了一个平衡全局搜索和局部开发、尾部收敛适中的参数r1;刘勇等人对其参数r1展开研究,提出转换参数r1非线性递减的正弦余弦算法[5-9]。表3中给出了6种参数r1的表达式,图8、9给出了参数r1的图像。

图8 参数=1,i=1,2,…,6的图像(横向看)

图9 参数=1,i=1,2,…,6的图像(纵向看)

对转换参数r1的改进,要么采用凸函数、要么采用凹函数;从图9可以看出,同等条件下,当进化代数达到一半时,计算可得r(2)1

(2)对参数r2的改进

石磊在文献[4]中提出了正弦大扰动分布和余弦小扰动分布,对参数r2做了改进;曲良东等人研究了r1sin(r2)和r1cos(r2)函数值的等效性,用式(3)替换式(4),提出了一个简化的正弦余弦算法,称之为正弦算法[5];同样,若用式(4)替换式(3),便可以得到余弦算法。

(3)对参数r3的改进

石远在文献[3]中对参数r3的改进,结合反向学习策略,给出了一种改进的正弦余弦算法,并应用于焊接梁的设计。

(4)增加惯性权重

表3 更多参数r1的表达式

借鉴对基本粒子群算法增加惯性权重得到标准粒子群算法的思路,文献[6]给出了带有正弦余弦权重的粒子群算法;文献[4]给出了带有权重的正弦余弦算法。

为了提升SCA算法的性能,扩展SCA算法的应用领域,研究者们开发了多种SCA算法的变体。

4.2 搜索机制的改进

针对高维优化问题,文献[7]提出了SCA的改进版本(ISCA)。提出了一种引入惯性权重的修正位置更新方程,以加快收敛速度,避免陷入局部最优状态。另外,为了平衡对SCA的探索和开发,使用了一种基于高斯函数的新型非线性转换参数策略。

文献[8]提出了一种新颖的正弦余弦算法改进版本,提高了解的利用能力,并减少了经典SCA搜索方程中存在的多样性溢出问题。算法主要将交叉开发技术与个体最优状态相融合,并引入了自学习和全局搜索机制。

文献[10]提出了一种基于邻域搜索和贪婪Levy变异的改进正弦余弦算法。算法采用指数递减转换参数和线性递减惯性权重的方法来平衡算法的全局搜索能力和局部开发能力。并利用最优个体附近的随机个体代替原算法中的最优个体,使算法容易跳出局部最优,有效地增加了搜索范围。

文献[11]提出了基于Riesz分数阶导数变异策略的改进正弦余弦算法(RFSCA)。新算法采用拟反向学习对种群进行初始化,提高了种群的多样性。采用具有二阶精度的分数阶导数的近似公式,构造了一种新的变异方法来更新最优个体,提高了算法的计算精度。

4.3 与其他算法混合

文献[12]提出了一种增强型脑风暴正弦余弦算法(EBS-SCA)算法。算法采用EBS策略来改善种群多样性,提出了2个新的个体更新策略:个体更新策略与开发策略,实现全局搜索与局部开发之间的有效平衡。

文献[13]将粒子群算法与正弦余弦算法中的位置更新方程和levy飞行方法相结合,提出了基于正弦余弦算法和Levy-flight的混合粒子群优化算法。

为增强正弦余弦算法的全局寻优能力,避免算法陷入局部最优,文献[14]将正弦余弦算法作为一种局部算法嵌入到花授粉中,对花粉个体分别进行正弦和余弦优化,提出一种融合正弦余弦算法的花授粉算法;文献[15]在算法迭代后期,引入正弦余弦操作来更新当前蝙蝠个体的位置,提出了一种融合正弦余弦的蝙蝠算法。

文献[16]在保持SCA算法框架不变的情况下,使用云模型来自适应地调整控制参数,提出了一种基于云模型的正弦余弦算法(CSCA),通过13个具有不同维度的基准测试函数对CSCA进行评估,实验结果表明,CSCA算法在鲁棒性和可扩展性方面优于其他SCA变体。

文献[17]提出了改进的正弦余弦算法,根据扰动率的相反数生成反向种群,并在SCA的搜索方程中增加了自适应机制,从而有助于跳出局部最优。

文献[18]提出了一种多目标正弦余弦算法(MO-SCA)。MO-SCA采用精英非支配排序和拥挤距离方法来获得不同的非支配级别,并分别保留最优解集之间的多样性。更多的改进算法见文献[19-26]。

5 正弦余弦算法应用

目前SCA算法已成功应用到0-1背包问题、城市土地利用空间的优化配置、环境保护、NoC测试中,并获得了较好的结果[27-30]。文献[31]提出了一种正弦余弦算法与稳态遗传算法的混合算法来解决工程设计问题,该算法综合了稳态遗传算法(SSGA)的开发能力和正余弦算法(SCA)的搜索能力,通过SSGA的交叉和变异操作以及SCA的机制生成新一代个体,并将算法应用于两个复杂的工程设计问题。下面结合国内外研究现状,对正弦余弦算法的应用进行分类归纳。

5.1 调度问题

在水热动力系统调度问题(HTS)中,文献[32]提出了一种新的正弦余弦算法,算法合理地利用了SCA的不同控制参数来平衡探索和开发阶段,从而找到接近全局的最优解,并被应用于解决不同的情况(经济负荷调度、经济排放调度、组合经济排放调度)和水热风调度(HTWS)问题。

文献[33]将正弦余弦算法应用于非光滑经济/生态排放负荷调度(EELD)问题,通过同时优化EELD问题中两个相互矛盾的目标——经济和排放,在搜索空间中创建了搜索代理的随机初始种群,获得了帕累托最优解。

短期热液调度的目的是在特定的时间间隔内优化不同热液单元的每小时发电量,以最大程度地降低发电总成本。在兼顾阀点负载效应和传输损耗的情况下,文献[34]将正弦余弦算法用于解决短期热液调度问题,并使用六个具有不同成本函数的不同测试系统,与通过其他最新开发的技术获得的结果进行比较,所提方法在生成成本和仿真时间方面优于现有结果。文献[35]将正弦余弦算法用于解决电力系统经济调度问题。

5.2 控制器优化

文献[36]利用正弦余弦算法优化分数阶串级控制器,研究了可再生能源和实际装置对热系统的影响。提出了一种新的分数阶串级控制器的新组合,使用随机正余弦算法对所有二级控制器的增益和所需参数进行优化,并与传统控制器进行了性能对比,结果表明其性能优于其他控制器。

文献[37]将改进的正弦余弦算法(MSCA)应用于常规PID和模糊PID控制器的设计中,以积分时间绝对误差为目标函数,将过冲、欠冲和稳定时间作为暂态参数,分析了无控制电力系统的动态特性。分析结果表明,基于MSCA的FPID控制器具有较好的瞬态响应特性,其欠冲、超冲和稳定时间均较短。通过改变电力系统的一些重要参数进行鲁棒性分析,表明所提出的FPID控制器对参数变化的敏感性较低。

文献[38]使用正余弦算法来设计自动电压调节器(AVR)系统最优比例积分微分(PID)控制器的参数,采用时域性能指标对所提出的SCA-PID控制器进行了验证。与差分进化(DE)、人工蜂群(ABC)和基于生物地理学的优化(BBO)相比,结果表明方法在改善AVR系统暂态响应方面具有高效性和鲁棒性。

文献[39]提出了一种通过改进的正弦余弦算法(ISCA)优化的自适应模糊逻辑PID控制器(AFPID),并应用于自主发电系统的负载频率控制。

文献[40]对正弦余弦算法中影响算法全局探索和局部开发能力的重要参数进行了调整,使搜索结果更精确,将改进后的算法用于模糊控制器量化因子和比例因子的优化。

5.3 电力系统优化

针对电力系统稳定器的优化设计,文献[41]提出由特征值和基于时域的目标函数组成多目标函数,利用SCA技术实现了该目标函数的最小化和稳定器参数的优化,并测试了用SCA设计的稳定器对不同扰动下电力系统低频振荡的鲁棒性和有效性。通过线性模型稳定性分析和非线性时域仿真,将所提出的基于SCA的PSS(SCAPSS)与基于BAT算法的PSS(BAPSS)和基于共生有机体搜索算法的PSS(SOSPSS)进行结果比较,分析结果表明,该方法能使同步电机转子的低频振荡具有更快的阻尼和最小的超调,在最终解的精度、收敛速度、计算时间、阻尼比、转子角度的确定时间等方面,SCA都优于其他两种算法。

文献[42]根据总成本、总功率损耗、总电压偏差和电压稳定指标,采用正余弦算法对应急电力加载稳定性进行了优化。

文献[43]在标准的正余弦算法的基础上增加了Levy飞行策略,提出了一种基于正余弦技术的最优潮流算法,并应用于不同目标函数下的最优潮流问题。基于系统的运行和经济性能指标,以IEEE30和IEEE118节点系统为例,并与其他优化方法对比,验证了所提算法的有效性和潜力。

为了优化最大功率点跟踪(MPPT),文献[44]给出了一个改进的正弦余弦优化的算法。实验分析表明,在稳态、动态条件下,算法收敛速度快,易于实现,计算量少。

5.4 数据挖掘

文献[45]使用正余弦算法(SCA)来优化自适应神经模糊推理系统(ANFIS)模型中的参数,并用于预测石油消费量。文献[46]给出了一种基于多目标正弦余弦算法(MOSCA)混合预测系统,来同时提高预测精度和稳定性。并以两个风电场采集的8个风速数据为例,对所开发的预测系统进行了性能分析。结果表明,所开发的预测系统在精度和稳定性方面均优于比较模型,是一种有效的风速预测方法。

文献[47]利用正弦余弦算法来优化支持向量回归SVR中的惩罚参数和核参数,提出了一种新的SCA-SVR模型,提高了对未知数据的泛化性能。并在常用基准数据集上,与其他一些元启发式优化算法进行比较,实验结果表明,该模型能够找到SVR参数的最优值。

文献[48]使用改进的自适应正弦余弦算法(ASCA)和快速学习网(FLN)建立了汽轮机热耗率综合预测模型,并应用某600 MW超临界汽轮机组现场运行数据建立汽轮机热耗率预测模型,并将ASCA算法优化的结果与其他方法的结果进行比较,检验了所提方法的有效性。

文献[49]提出了基于最优变分模分解(OVMD)和带有混沌的正弦余弦算法的最小二乘支持向量机(LSSVM);文献[50-53]使用正弦余弦算法来优化支持向量机(SVM)的最佳学习参数,并成功应用于模拟电路故障诊断、年径流丰枯识别、气象预测、故障预报等问题。

5.5 图像处理

文献[54-55]应用正弦余弦优化算法研究多阈值图像分割。文献[56]提出了一种结合极限学习机(extreme learning machine)的正弦余弦算法,并应用于脑病理检测;在三个标准数据集上与其他有效方案进行了严格的比较评估,结果表明,该方法在分类精度和所需特征数方面均优于同类方案,能够实时有效地识别脑病理。

5.6 目标跟踪问题

针对目标跟踪问题,文献[57]提出了正弦余弦优化与差分进化算法的混合算法(SCA-DE),并与其他算法进行了比较研究,结果表明,混合算法能够在各种挑战条件下对任意目标进行鲁棒跟踪。文献[58]提出了一种求解优化问题和目标跟踪问题的混合算法(SCA-PSO),将粒子群算法搜索原理嵌入到SCA中,该算法结合PSO算法的开发能力和SCA算法的搜索能力,实现全局搜索。

5.7 无线传感器网络优化

为了提高无线传感器网络(WSN)的性能,文献[59]提出了一种基于改进正弦余弦算法(ESCA)。ESCA算法引入双曲正弦调节因子和动态余弦波权重系数,并引入基于拉普拉斯和高斯分布的变异策略以平衡算法的全局探索与局部开发能力,将ESCA应用于WSN节点部署优化,结果表明其优化覆盖率优于改进粒子群优化算法、人工蜂群算法、灰狼优化算法和自适应混沌量子粒子群算法。文献[60]采用正弦余弦算法求解无线传感器网络的生存期优化问题,并与遗传算法和粒子群算法进行了比较。

6 结束语

正弦余弦算法通过不断调整正弦函数和余弦函数值来达到寻优目的,算法结构简单,容易实现,提出虽然不到3年,但是已被广泛应用于各类工程优化问题。作为智能优化算法,正弦余弦算法同样也存在早熟收敛、求解精度低等缺点,下一步还有许多工作需要研究。

(1)改进算法。借鉴粒子群算法(PSO)、差分进化算法(DE)、和声搜索算法(HS)、教与学优化算法(TLBO)、生物地理学优化(BBO)等算法的优点,来改进正弦余弦算法,旨在提高种群多样性[61],从而增强算法的全局搜索能力。

(2)算法应用。目前正弦余弦算法大多应用于求解确定性优化问题,在不确定优化,如鲁棒优化、机会约束优化、随机优化、动态多目标优化等领域仍待进一步研究。

(3)理论分析。对正弦余弦算法建立数学模型,从理论上研究其收敛性;通过差分方程、马尔科夫链等数学理论来研究正弦余弦算法的收敛性。

猜你喜欢

余弦正弦全局
Cahn-Hilliard-Brinkman系统的全局吸引子
正弦、余弦定理的应用
量子Navier-Stokes方程弱解的全局存在性
落子山东,意在全局
“美”在二倍角正弦公式中的应用
利用正弦定理解决拓展问题
两个含余弦函数的三角母不等式及其推论
实施正、余弦函数代换破解一类代数问题
正弦、余弦定理在三角形中的应用
分数阶余弦变换的卷积定理