光伏MPPT控制算法-群智能搜索算法
作者:管理员    发布于:2022-06-23 21:43:40    文字:【】【】【

       在标准环境下,光伏阵列的输出特性曲线呈现单一峰值,但是,我们在实际生活中很难将光伏阵列建立在完全不会受到外界环境影响的地方,在光伏阵列工作过程中,经常会被云朵,树木遮挡,形成局部阴影,为了避免进而导致光伏阵列的输出特性曲线呈现多个峰值:

       在这种情况下,假如我们仍使用传统算法,会出现什么样的情况?

  • 固定电压法:系统稳定后,由于光伏阵列的MPPT控制器并没有对光照强度变化的感知能力,因此只能控制光伏阵列输出端口的电压值恒定为预设的参考电压值,但是绝大多数情况下,局部阴影出现后,参考电压值并不是最大功率点。

  • 曲线拟合法:类似于固定电压法,能够让光伏阵列的输出端口电压值等于标准工况下MPP对应电压值,但是不能实现MPPT。

  • 扰动观察法/电导增量法:通过之前对于算法原理的分析,这两种算法均会控制光伏阵列的工作点从(0,0)开始,通过改变占空比的方法来移动工作点,但是,这两种算法均是通过比较前后两步的功率值大小来判断应该向哪个方向继续移动,这样就会导致很难从一个小的峰值中跳出来,比如以我们上面的四峰值PU特性曲线为例,当光伏阵列的输出电压值为13V时,工作点恰好位于最小的峰值区间内,如果这两种算法的步长较小,很有可能无法从这个局部最优点跳出,当然,在仿真过程中,第一个峰值由于邻域较小,如果步长为0.01,仍可以跳出,但是当光伏阵列的输出端口电压为33V,则几乎无法跳出。

       既然这样,部分学者就提出了或许可以将一些具有较强的全局搜索能力的算法应用在MPPT控制过程中,就可以解决这个问题。那么,我们就可以引出一种比较经典的群智能算法——粒子群算法(Particle Swarm optimization)。

       粒子群算法主要用于多峰值凸优化问题,恰巧与我们上述的局部阴影出现后光伏阵列的输出特性曲线相对应。算法流程图如下:


       网上有很多对于粒子群算法各个步骤的解释,我们这里用通俗的话解释一遍。假设现在有一组人在爬山,为了解释容易,我们把他们分为小A、小B、小C、小D、小E五个人,他们都没有这个地方的地图,而且他们每个人只有一个只能用于通讯的对讲机,和一个测量自己目前海拔(适应度值)的传感器。为了能够登高合影,他们做了一个简单的约定:我们从不同的地方出发,每隔一分钟通过对讲机说一下自己目前的海拔,如果发现别人比自己的海拔值高,我们就往高的那个人的方向走,这样也能够尽快的找到顶峰(全局最优)。

       说干就干,五个人分别从不同的地方出发:



       从左到右分别是小A、小B、小C、小D、小E,他们落地后,使用还把传感器测量所处位置的高度,之后,小C发现,自己的位置是在最高的而其他人的位置均没有自己所处的海拔高,那么,其他四个人就知道了现在应该向小C所在的方向前进:


    在前进过程中,突然,当小D跑到下图的位置时,他发现自己的位置对应的海拔比小C的要高:


       那么,这个时候,小D就会通过对讲机和其他四个小伙伴说:我现在已经到了更高的一个山峰,你们快来!

       这样,其他四个人的运动方向就会变成这样:



       当所有人位于最高峰时,五个人都停止运动,在山峰上静静欣赏美景(逃)。

       那么,回到我们的正题,粒子群算法便是通过这样的一个运动方法来搜寻全局最优值,相较于我们上一节讲的扰动观察法/电导增量法而言,当某一个粒子处于局部最优点时,其他的粒子仍对其有一定的影响,这样就能够让处于局部最优点的粒子具有继续向全局最优点搜索的能力。

       粒子群核心公式有两个,分别为:

       其中,v为每个粒子的速度,k为迭代次数,i为粒子次序,d为目前所在维度(本课题为一维问题,即只有一个变量),w为惯性权重,c1为自我学习系数,c2为社会学习系数,r1、r2为随机数,Pid为第i个粒子历史上最大的适应度值,Pgd为所有的粒子在历史上所经历过的最大适应度值,这里适应度值就是我们刚刚讲到的海拔高度,x为粒子位置,也就是刚刚我们讲到的五个人所在的位置。

       这两个公式表明了粒子的运动方式。V表现出粒子本次运动过程中步长的大小,X表示粒子所处的位置。我们可以先看第一个公式,本次迭代过程中,粒子的速度主要由三部分构成:上一次粒子速度的大小,在历史上最优点的影响,在历史上所有粒子经历过的最优点的影响,这也就反映出来这三个参数的作用:

       惯性权重w调节上一次粒子运动速度对这次的影响大小,惯性权重越大,我们可以理解为,上一次的运动方向越不容易改变,上一次的运动速度对本次的速度的影响越大,速度值越难收敛;

       自我学习系数C1越大,说明粒子对于自身在过去所经历过的最优值越看重,我们可以把他看成一个对于自己的信任程度,C1值越大,该粒子越信任自己,再调整参数过程中,C1较大能够让整个算法不容易陷入局部最优值,但是容易导致系统振荡;

       社会学习系数C2表示了粒子对于其他例子的重视程度,C2值越大,则表示粒子月薪人其他的粒子所经历过的最优点,这种情况下,能够让算法具备较强的全局搜索能力,但是如果在初始状态下粒子分配不均,可能会导致系统陷入局部最优点而且难以跳出。

       以上,就是粒子群算法运行过程解析,其他的群智能算法,比如遗传算法,蚁群算法,布谷鸟搜索算法,细菌觅食算法等等,原理基本相同,只是在不同的算法中,智能体会有不同的运动方式,但是总的来说,均是向着全局最优点收敛。

版权所有 Copyright(C)2013-2020 深圳市龙浩科技有限公司