APP下载

基于TS-FOA算法的光伏组件参数辨识

2022-06-29罗俊杰

计算机技术与发展 2022年6期
关键词:果蝇组件局部

张 洁,罗俊杰

(南京邮电大学 计算机学院,江苏 南京 210023)

0 引 言

相较于传统能源,光伏能源更加清洁且有着易获取和低价等优点,这使得近些年来光伏能源在全部能源使用的占比越来越高,光伏产业规模也逐年扩增,同时光伏产业的技术要求也随之提升。由于光伏组件工作在室外,气温、沙尘、降雨等因素都导致了光伏组件功率模型的不确定性,带来许多安全问题。为获得光伏组件的功率模型情况,通常会选取合适的组件模型,使用多种参数辨识算法基于获取的大规模的光伏数据来对光伏组件模型中的未知参数进行辨识[1],所得到的模型参数对光伏产业的效率计算、最大功率点追踪和未知效率预测等都有着重要的意义。

历经数年的发展,如今在光伏组件参数辨识领域已经涌现出不少优秀的算法。文献[2]提出了自适应进化粒子群优化BP神经网络(AEPSO-BPNN)辨识方法,在粒子群算法中引入自适应和重构策略以此优化BP神经网络,避免BP神经网络在迭代后期陷入局部最优解。文献[3]在传统的HHO算法中引入了多种策略,延长了迭代后期的局部搜索时间,并且缩小了搜索空间,提高了在光伏电站模型参数辨识中的寻优效率。张海宁[4]使用基于递推的最小二乘法对光伏组件逆变器进行模型参数辨识,实验结果表明该算法步骤简单、计算量小,在多次辨识中一致性较高,通用型较强。文献[5-6]中都引用了自适应函数对传统的粒子群算法进行优化,使用了自适应调整策略来控制全局和局部搜索,以此提高算法的收敛精度,实验结果表明引入自适应函数优化后有着更高的求解精度和寻优效率。此外还有许多文献提出了一系列模拟动物行为的搜索算法,如鲸鱼优化算法、灰狼算法、闪电算法、飞蛾火焰算法和蝙蝠优化算法等,仿真结果都表明此类算法都有着不错的寻优能力,能在光伏系统模型辨识中快速找到最优解[7-9]。

针对光伏组件参数辨识问题,该文提出了一种基于禁忌搜索算法优化的果蝇算法(TS-FOA)的参数辨识方法。该方法利用果蝇算法在全局搜索的高效性,并引入禁忌搜索算法对后期寻优方向进行限制,这样同时拥有禁忌搜索算法和果蝇算法的寻优特点,可以有效避免在搜索过程中陷入局部最优解并有效提高寻优效率。之后,采用某光伏电站的实测数据,使用TS-FOA算法对模型进行参数辨识仿真实验,验证了TS-FOA算法的实用性和高效性。

1 光伏组件数学模型

在理想的情况下,光伏组件模型等效为一个二极管和一个光伏板(电流源)的并联,通常称之为单二极管的等效基础模型,而在实际的工程中,内部组件都存在损耗,故需要在理想模型基础上加上几个等效的电阻,得到的光伏电池等效模型如图1所示。

图1 光伏电池的等效模型

根据二极管的特性和图1中的模型,可以得到流过内部二极管的电流ID的计算公式为:

(1)

式中,ID和I0分别为模型中流经二极管的电流和反向饱和电流;IL和UL分别表示光伏电池系统实际输出电流和输出电压;A为二极管的理想因子,取值由系统组件结构和材料决定;q为电子电荷,q=1.6×10-19C;k为Botzman系数,k=1.38×10-23J/K;T为光伏模块某种工况下的绝对温度。

继续按照图1中规定的参考模型,并结合公式(1)和基尔霍夫定律可以得到如式(2)的光伏组件I-V的表达式。

IL=Iph-ID-Ish=

(2)

式中,Iph和Ish分别为光伏组件光电效应产生的电流和流经并联电阻Rsh的电流;Rs和Rsh分别为模型上的串联电阻和并联电阻。

公式(2)便是目前光伏组件系统中最基础的表达式,目前大多数对光伏组件性能的研究都是基于此表达式。在光伏系统性能的研究中,常需要对光伏组件中最大功率点MPPT(maximum power point tracking)进行跟踪控制,以此获得组件最大的电力输出,所以就需要确定此时模型中的IL和UL,但是在式(2)中I0、Iph、Rs、Rsh和A这五个参数都是不确定的,五个参数都与组件的工作实况有关,难以求解,故需要这五个参数进行参数辨识。

参数辨识求解的最终结束标志是目标函数到达了预期的最值范围,所以在参数辨识之前,还需要建立一个适当的目标函数,首先将式(1)进行如下变形可得:

(3)

选择均方根误差RMSE作为寻优过程中的目标函数。

(4)

式中,i为第i次数据的变形差值。

2 算法模型

2.1 果蝇优化算法

果蝇优化算法(fruit fly optimization algorithm,FOA)是基于果蝇觅食的复杂关系衍生出的一种全局范围下的寻优方法[10]。基于仿生学原理研究,果蝇群体凭借敏锐的嗅觉和视觉,对食物有着非常强的感知能力,可以依据食物的味道寻找食物的方位,味道越浓说明离目标食物越近反之味道越淡距离越远,根据味道浓度便可以继续飞向该目标位置,在到达一个新位置后,继续通过嗅觉判断食物方位,直到找到食物源为止。

如图2所示:Fly Group为果蝇群体的初始所在位置;Flyi是果蝇群体中飞出去的单只果蝇的位置;Di为单只果蝇距离起点的距离。通过Di可以计算出味道判定值Si,再基于预先设定的味道浓度判定函数SmellFuntion(Si),可以得到单只果蝇此时位置的味道浓度Smelli,从而选取味道浓度最优的方向,将整个Fly Group朝着该方向移动,继续迭代直到达到终止条件为止。

图2 果蝇群体觅食示意图

2.2 禁忌搜索算法

禁忌搜索算法(tabu search,TS)基于对局部领域搜索算法的优化[11],使用领域搜索的规则得到跳转位置更佳到领域位置以此来到达寻优的目的。TS算法在此基础上模仿人脑的记忆模式建立出禁忌表,使用禁忌表来记录已经到过的位置,避免了对局部最优解的重复搜索,再引入了特赦规则的概念,以特赦机制保证局部搜索的同时不会遗漏掉其他最优解。

图3是禁忌搜索算法寻优示意图。

图3 禁忌搜索算法寻优示意图

科研中常用爬山寻峰图来表示TS算法的寻优过程[12],如图3所示:Highi为各个位置的目标值;山顶位置Highmax是寻优过程中最终期望到达的极值位置,位于“山顶”。通过在山峰中坐标的位置Locationi计算出周围的Highi,选取目标值最佳的坐标位置,判断该坐标点是否存在于禁忌表T中,若不存在则将初始位置High0向该坐标点移动,继续迭代直至达到终止条件为止。

2.3 禁忌搜索算法优化的果蝇算法

FOA算法利用果蝇群体的协作能力进行寻优,具有良好的全局搜索能力,但是由于果蝇寻优过程中存在着不确定性,也导致了FOA易于快速陷入局部最优解,无法给出精确的解。其次,由于光伏组件参数辨识问题中需要辨识的参数较多,导致FOA算法难以处理类似的高维度问题,会导致后期迭代效果较差,迭代时间长;TS算法是基于传统的局部搜索算法的改进,代码简单且容易实现,在引入禁忌表和特赦规则后,具有较强的局部寻优能力,但是在全局搜索的应用上表现一般,迭代时间较长。

基于FOA算法和TS算法的各自特点,该文将TS算法的思想融合到FOA算法中,提出一种禁忌搜索算法优化的果蝇算法(TS-FOA)来对光伏组件进行参数辨识[13]。TS-FOA算法使用FOA算法对辨识过程进行一个全局的快速搜索,得到已经在最优解附近的小规模子群解,之后融合TS算法的禁忌表机制和特赦机制来避免FOA算法的局部最优问题,对已有的小规模子群进行一个局部搜索,最终快速、精确地得到最优解。

TS-FOA算法的具体执行步骤如下:

步骤1:设定果蝇群体的群体规模FlySize和FOA算法最大的迭代查找次数MaxGen_FOA,初始化果蝇群体Fly Group所在的位置为X0,该位置包括在光伏组件参数辨识过程中需要辨识的参数I0、Iph、Rs、Rsh和A,即为一个五维参数:

X0=[Iph_0,I0_0,A0,Rs_0,Rsh_0]

(5)

步骤2:为第i只果蝇飞出群体的方位进行随机赋值。

(6)

步骤3:得到单只果蝇的新位置后,先计算Flyi距离原点的距离Di,并得到该果蝇的味道浓度判定值Si。

(7)

(8)

步骤4:将Flyi的味道浓度判定值Si代入到味道判定函数SmellFuntion(Si)中,从而得到Flyi的味道浓度值Smelli,基于光伏组件数据的特点,该文选取式(4)的均方根误差RMSE作为味道判定函数SmellFuntion(Si)的判定函数,以此转化为一个以式(9)为目标函数的最值寻优问题[14]。

Smelli=SmellFunction(Si)

(9)

步骤5:遍历查找种群中味道浓度值Smelli最佳的果蝇,并记录最佳味道浓度值best_smell和最佳果蝇Flyi的下标best_index。

[best_smell,best_index]=Smelli

(10)

步骤6:使用best_smell更新此时的最佳味道浓度值BestSmell,并将果蝇群体坐标替换为当前最佳位置,即视作将果蝇群体Fly Group朝着Flybest_smell移动。

BestSmell=best_smell

(11)

(12)

步骤7:判断终止条件,即该位置浓度是否最佳,并且已经达到最大的迭代查找次数MaxGen_FOA,否则转入步骤2继续进行迭代寻优查询。若达到终止条件,转入步骤8继续执行TS算法搜索。

步骤8:设定TS算法最大的迭代查找次数MaxGen_TS,设定最大等待步数N,初始化当前所在的位置Location0为步骤7中已经到达终止条件的小规模子群X0,即Location0=X0=[Iph_0,I0_0,A0,Rs_0,Rsh_0],初始化禁忌表空表T。

步骤9:通过当前坐标Location0获得当前可达的位置坐标Locationi。

步骤10:获得了Locationi后,代入到最佳高度计算函数High(Locationi)中,在此使用式(4)的均方根误差RMSE作为最佳高度计算函数High(Locationi),得到各个坐标点的目标值,再对Locationi的集合进行排序。

Highi=High(Locationi)

(13)

Highi=Sort(Highi)

(14)

步骤11:从Locationi的集合中选取高度目标值Highk最大的Locationk,判断Locationk是否已经存在禁忌表T中,若已存在则选取其他Locationk,若不存在将Locationk加入到禁忌表T中,并更新Location0。

Locaton0=Locationk

(15)

T.add(Locationk)

(16)

步骤12:判断是否达到终止条件,TS算法中终止条件包括:已达到最大的迭代查找次数MaxGen_TS或者在当前Location0停留步数已经达到最大等待步数N,此时即可终止计算。若未达到终止条件,转入步骤9继续进行迭代寻优搜索。

此外,需要对TS-FOA算法中的特赦规则进行设定,根据上文所述,在迭代过程中可能会出现较优解属于禁忌表的情况,为此设定特赦规则为:若候选位置状态优于当前位置状态,则可以跳出禁忌表限定,更新当前位置状态为最佳状态[15]。TS-FOA算法流程如图4所示。

图4 TS-FOA算法流程

3 算例分析

该文使用的是南通理工学院提供的光伏单晶硅固定电站运行监测数据,选取某日7时到下午6时每10分钟的监测数据作为本次参数辨识的实验数据集。在使用相同数据集的条件下,选取传统粒子群算法(PSO)、未使用TS机制优化的果蝇算法(FOA)和提出的TS-FOA算法进行实验训练,使用Matlab进行算法模拟和测试并比较结果,以说明该算法相较于其他算法具有的迭代速度快和精度高等优势。

迭代次数都设定为25次,此时各算法参数辨识结果如表1所示。在表1的条件下,限定三种算法的迭代次数都为25次并使用相同的数据集对参数进行辨识。

表1 各算法参数辨识结果

由表1可得,在传统FOA算法中引入了TS算法的机制提升了同迭代次数下参数辨识的准确率,此外相较于传统的PSO算法,TS-FOA算法的精度同样有着较大的提升。

图5 各算法辨识结果与实测数据曲线图

由图5可得,TS-FOA算法的参数辨识曲线和实测数据曲线拟合度最佳,误差较小。PSO算法曲线相较于TS-FOA算法曲线的拟合略差,在中午时段会出现偏差,而传统FOA算法曲线和实测数据曲线相差最大,较难满足一些情况下精度的要求。

为了得到不同迭代次数下TS-FOA算法的性能参数,在Matlab的算法中设定不同的迭代次数对PSO算法、FOA算法和TS-FOA算法进行参数辨识,结果如图6所示。

图6 各算法不同迭代次数下实验数据

由图6可得,在限定迭代次数的情况下,TS-FOA算法在大约20次迭代的条件下便可以完成全局收敛,获得最优解,并且在三种算法中TS-FOA算法可以得到最佳的目标函数值。PSO算法由于自身的限制,在迭代次数较少的情况下目标函数值改变不大,即陷入了局部最优解的情况。传统的FOA算法有着较好的全局搜索能力,但是在局部搜索中表现较差,即使在迭代次数较大的情况下,相较于TS-FOA算法存在较大的误差,并且在迭代的初期也出现了陷入了局部最优解的情况。

4 结束语

为了解决光伏组件的参数辨识问题,该文基于传统的FOA算法引入TS算法机制,提出了TS-FOA算法模型,其中使用了禁忌表机制和特赦机制对FOA算法进行优化,优化了FOA算法易于陷入局部最优解的问题,同时也提升了参数辨识的寻优精度。使用光伏组件实测数据集对TS-FOA算法进行的实验测试表明,相较于PSO算法和FOA算法,TS-FOA算法有着更高的精确度以及更短的收敛时间,能够快速迭代以得到最优解,大大提高了光伏组件参数辨识的效率。

猜你喜欢

果蝇组件局部
Android系统上移动组件化应用框架设计
日常的神性:局部(随笔)
果蝇遇到危险时会心跳加速
创建Vue组件npm包实战分析
智能机械臂
舰载雷达TR组件冲击计算方法分析
凡·高《夜晚露天咖啡座》局部[荷兰]
果蝇杂交实验教学的改进策略
小果蝇助力治疗孤独症
果蝇杂交实验教学的改进策略