当前位置: 首页 > article >正文

【论文复现】基于改进鲸鱼优化算法的太阳能光伏模型参数提取问题

目录

    • 1.摘要
    • 2.鲸鱼优化算法WOA原理
    • 3.光伏模型
    • 4.改进策略
    • 5.结果展示
    • 6.参考文献
    • 7.代码获取


在这里插入图片描述

1.摘要

太阳能光伏(PV)模型的参数提取是一个复杂的非线性多变量优化问题,通常存在强耦合关系。本文提出了一种改进鲸鱼优化算法(IWOA),用于提取不同光伏模型的参数。尽管原始的鲸鱼优化算法(WOA)在局部开发方面表现出色,但在处理复杂的多峰问题时,容易陷入停滞并出现早期收敛问题。为了克服这一缺陷,IWOA通过引入两种捕食者搜索策略,有效平衡了局部开发与全局探索,从而显著提升了WOA的性能。

2.鲸鱼优化算法WOA原理

SCI二区|鲸鱼优化算法(WOA)原理及实现

3.光伏模型

SDM(单二极管模型)和DDM(双二极管模型)是最常用的太阳能电池电流-电压特性描述模型,这些模型涉及多个需要估计和优化的参数。由于环境变化、非线性特性以及太阳能电池的老化,这些参数的值会随着时间发生变化。

太阳能电池模型

单二极管模型
在这里插入图片描述

SDM的等效电路由一个电流源、一个与二极管并联的电阻和另一个电阻组成,该模型用于描述光伏电池的输出电流:
I = I p h − I D − I s h I D = I R d ( e x p ( V + I ∗ R s n ∗ V t ) − 1 ) I s h = V + I ∗ R s R s h V t = k ∗ T q \begin{aligned} & I=I_{ph}-I_{D}-I_{sh} \\ & I_{D}=I_{Rd}(exp\left(\frac{V+I^{*}R_{s}}{n^{*}V_{t}}\right)-1) \\ & I_{sh}=\frac{V+I^{*}R_{s}}{R_{sh}} \\ & V_{t}=\frac{k^{*}T}{q} \end{aligned} I=IphIDIshID=IRd(exp(nVtV+IRs)1)Ish=RshV+IRsVt=qkT

其中, I p h I_{ph} Iph I D I_D ID分别表示光生电流和二极管电流, I s h I_{sh} Ish是旁路电阻的电流, I R d I_{Rd} IRd是二极管的反向饱和电流。 V V V表示输出电压, V t V_t Vt表示结的热电压。 n n n是二极管的理想因子, R s R_s Rs是串联电阻, k k k是玻尔兹曼常数。输出电流重写为:
I = I p h − I R d ( e x p ( q ∗ ( V + I ∗ R s ) n ∗ k ∗ T ) − 1 ) − V + I ∗ R s R s h I=I_{ph}-I_{Rd}(exp\left(\frac{q^*(V+I^*R_s)}{n^*k^*T}\right)-1)-\frac{V+I^*R_s}{R_{sh}} I=IphIRd(exp(nkTq(V+IRs))1)RshV+IRs

双二极管模型

在这里插入图片描述

双二极管模型等效电路包含两个二极管与电流源、并联电阻和串联电阻并联连接。DDM产生的输出电流I为:
I = I p h − I D 1 − I D 2 − I s h I=I_{ph}-I_{D1}-I_{D2}-I_{sh} I=IphID1ID2Ish

其中, I D 1 I_{D1} ID1 I D 2 I_{D2} ID2分别为二极管的电流:
I D 1 = I R d 1 ( e x p ( V + I ∗ R s n 1 ∗ V t ) − 1 ) I D 2 = I R d 2 ( e x p ( V + I ∗ R s n 2 ∗ V t ) − 1 ) I_{D1}=I_{Rd1}(exp\left(\frac{V+I^*R_s}{{n_1}^*V_t}\right)-1)\\ I_{D2}=I_{Rd2}(exp\left(\frac{V+I^*R_s}{{n_2}^*V_t}\right)-1) ID1=IRd1(exp(n1VtV+IRs)1)ID2=IRd2(exp(n2VtV+IRs)1)
DDM输出电流:
I = I p h − I R d 1 ( e x p ( V + I ∗ R s n 1 ∗ V t ) − 1 ) − I R d 2 ( e x p ( V + I ∗ R s n 2 ∗ V t ) − 1 ) − V + I ∗ R s R s h I=I_{ph}-I_{Rd1}(exp\left(\frac{V+I^{*}R_{s}}{{n_{1}}^{*}V_{t}}\right)-1)-I_{Rd2}(exp\left(\frac{V+I^{*}R_{s}}{{n_{2}}^{*}V_{t}}\right)-1)-\frac{V+I^{*}R_{s}}{R_{sh}} I=IphIRd1(exp(n1VtV+IRs)1)IRd2(exp(n2VtV+IRs)1)RshV+IRs

光伏模块模型

在这里插入图片描述

光伏模块模型的等效电路更加复杂,因为它包含了更多串联和/或并联连接的太阳能电池。光伏模块的输出电流:
I = I p h ∗ N p − I R d ∗ N p ( e x p ( V + I ∗ R s ∗ N s N p n 1 ∗ N s ∗ V t ) − 1 ) − V + I ∗ R s ∗ N s N p R s h ∗ N s N p I=I_{ph}{}^*N_p-I_{Rd}{}^*N_p\left(exp\left(\frac{V+\frac{I^*R_s{}^*N_s}{N_p}}{n_1{}^*N_s{}^*V_t}\right)-1\right)-\frac{V+\frac{I^*R_s{}^*N_s}{N_p}}{\frac{R_{sh}{}^*N_s}{N_p}} I=IphNpIRdNp(exp(n1NsVtV+NpIRsNs)1)NpRshNsV+NpIRsNs
N s N_s Ns表示串联连接的太阳能电池的数量,而 N p N_p Np表示并联连接的太阳能电池的数量。公式可以简化为:
I = I p h − I R d ( e x p ( V + I ∗ R s ∗ N s n 1 ∗ N s ∗ V t ) − 1 ) − V + I ∗ R s ∗ N s R s h ∗ N s I=I_{ph}-I_{Rd}(exp\left(\frac{V+I^*R_s{}^*N_s}{n_1{}^*N_s{}^*V_t}\right)-1)-\frac{V+I^*R_s{}^*N_s}{R_{sh}{}^*N_s} I=IphIRd(exp(n1NsVtV+IRsNs)1)RshNsV+IRsNs

适应度函数

光伏系统的参数估计被视为优化问题,其目标是最小化模拟数据与实测数据之间的误差。使用均方根误差(RMSE)来衡量模拟电流与实测电流之间的差异:
R M S E ( p r e y i ) = 1 M ∗ ∑ k = 1 M F k ( I , V , p r e y i ) RMSE(prey_i)=\sqrt{\frac{1}{M}*\sum_{k=1}^MF_k(I,V,prey_i)} RMSE(preyi)=M1k=1MFk(I,V,preyi)

参数表述为:
F k ( I , V , p r e y i ) = { I p h − I R d ( e x p ( q ∗ ( V + I ∗ R s ) n 3 k ∗ T ) − 1 ) − V + I ∗ R s R s h − f l o r S D M I p h − I R d ( e x p ( V + I ∗ R s n 1 ∗ V t ) − 1 ) − I R d Ω ( e x p ( V + I ∗ R s n 2 ∗ V t ) − 1 ) − V + I ∗ R s R s h − f l o r D D M I p h − I R d ( e x p ( V + I ∗ R s ∗ N s n 1 ∗ N s ∗ V t ) − 1 ) − V + I ∗ R s ∗ N s R s h ∗ N s − l f o r P V m o d u l e \left.F_k(I,V,prey_i)=\left\{ \begin{aligned} & I_{ph}-I_{Rd}\left(exp\left(\frac{q^*(V+I^*R_s)}{n^3k^*T}\right)-1\right)-\frac{V+I^*R_s}{R_{sh}}-florSDM \\ & I_{ph}-I_{Rd}\left(exp\left(\frac{V+I^*R_s}{n_1{}^*V_t}\right)-1\right)-I_{Rd\Omega}\left(exp\left(\frac{V+I^*R_s}{n_2{}^*V_t}\right)-1\right)-\frac{V+I^*R_s}{R_{sh}}-florDDM \\ & I_{ph}-I_{Rd}(exp\left(\frac{V+I^*R_s^*N_s}{n_1{}^*N_s{}^*V_t}\right)-1)-\frac{V+I^*R_s{}^*N_s}{R_{sh}{}^*N_s}-lforPVmodule \end{aligned}\right.\right. Fk(I,V,preyi)= IphIRd(exp(n3kTq(V+IRs))1)RshV+IRsflorSDMIphIRd(exp(n1VtV+IRs)1)IRdΩ(exp(n2VtV+IRs)1)RshV+IRsflorDDMIphIRd(exp(n1NsVtV+IRsNs)1)RshNsV+IRsNslforPVmodule

4.改进策略

鲸鱼优化算WOA在进化过程初期能够快速收敛,但在后期容易陷入局部最优解,导致在处理多峰问题时出现早熟现象。这主要是因为WOA通过系数A在探索与开发之间进行平衡。概率计算:
P ( ∣ A ∣ < 1 ) = P ( ∣ λ ⋅ a ∣ < 1 ) = 0.5 + ∫ 0.5 1 ∫ 1 1 / λ d a d λ = 0.5 + ∫ 0.5 1 ( 1 λ − 1 ) d λ = 0.5 + ( ln ⁡ λ − λ ) ∣ 0.5 1 = ln ⁡ 2 ≈ 0.693 \begin{aligned} & P(|A|<1)=P(|\lambda{\cdot}a|<1)=0.5+\int_{0.5}^{1}\int_{1}^{1/\lambda}\mathrm{d}a\mathrm{d}\lambda \\ & =0.5+\int_{0.5}^{1}\left(\frac{1}{\lambda}-1\right)\mathrm{d}\lambda=0.5+(\ln\lambda-\lambda)|_{0.5}^{1} \\ & =\ln2\approx0.693 \end{aligned} P(A<1)=P(λa<1)=0.5+0.5111/λdadλ=0.5+0.51(λ11)dλ=0.5+(lnλλ)0.51=ln20.693

在进化过程的早期,系数 A A A较大,能够提供足够的扰动,帮助WOA跳出局部最优解。但随着进化的进行, A A A值迅速减小,导致扰动过小,无法有效促进进一步的探索。由此可见,WOA在过度强调开发的同时,容易导致算法提前收敛到局部最优解。为了解决这一问题,并实现开发与探索的有效平衡,本文提出了一种改进鲸鱼优化算法(IWOA),其采用了两种新的猎物搜索策略:
X i t + 1 = X r 1 t − A ⋅ ∣ X i t − X r 1 t ∣ X i t + 1 = X r 2 t − A ⋅ ∣ X g − X r 2 t ∣ \begin{array} {c}X_i^{t+1}=X_{r1}^t-A\cdot|X_i^t-X_{r1}^t| \\ \\ X_i^{t+1}=X_{r2}^t-A\cdot|X_g-X_{r2}^t| \end{array} Xit+1=Xr1tAXitXr1tXit+1=Xr2tAXgXr2t

流程图

在这里插入图片描述

5.结果展示

CEC2019

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

单二极管模型

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
双二极管模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
光伏模块模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.参考文献

[1] Xiong G, Zhang J, Shi D, et al. Parameter extraction of solar photovoltaic models using an improved whale optimization algorithm[J]. Energy conversion and management, 2018, 174: 388-405.

7.代码获取


http://www.kler.cn/a/513702.html

相关文章:

  • AI需要的基础数学知识
  • C/C++、网络协议、网络安全类文章汇总
  • 【回忆迷宫——处理方法+DFS】
  • 基于python+Django+mysql鲜花水果销售商城网站系统设计与实现
  • 3D Vision--计算点到平面的距离
  • pytest+playwright落地实战大纲
  • 嵌入式Linux驱动开发之从设备树到点亮LED
  • 使用 Python 获取淘宝商品描述的 API 接口实现与应用
  • C# 委托和事件(事件)
  • 如何用vscode断点调试Vue.js的项目
  • 在亚马逊云科技上用AI提示词优化功能写出漂亮提示词(上)
  • 解决windows系统远程桌面(或其他全屏应用)全屏后菜单栏不自动消失问题
  • Python多态的概念
  • R语言基础| 回归分析
  • ubuntu下安装gvim
  • 面试-字符串1
  • 解决使用code命令时的bash: code: command not found问题
  • 【JavaScript】for ... 循环语句的使用方法和示例,示例 for 嵌套---九九乘法表
  • SpringBoot项目中替换指定版本的tomcat
  • 7、数组知识点汇总
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)
  • 2024国游销量前20游戏分析:某开放世界武侠(排名11)
  • python基础语句整理
  • c++R赋值原始字符串
  • 【Leetcode 热题 100】118. 杨辉三角
  • Linux(Centos 7.6)命令详解:dos2unix