光伏模型参数估计:山羊优化算法(Goat Optimization Algorithm, GOA)求解光伏模型参数辨识问题,免费提供完整MATLAB代码链接

一、太阳能光伏(PV)模型介绍

本文针对光伏参数估计问题,采用单二极管模型(SDM)、双二极管模型(DDM)、三二极管模型(TDM)、光伏组件模型(MM)四类主流模型,均基于电流-电压(I−VI-VI−V)非线性特性构建,以均方根误差(RMSE)为参数寻优目标函数。 下图中(a)~(d)分别为单二极管(SDM)、双二极管(DDM)、三二极管模型(TDM)和光伏组件模型(MM)。

参考文献:

1 Gao S , Wang K , Tao S , et al. A state-of-the-art differential evolution algorithm for parameter estimation of solar photovoltaic modelsJ. Energy Conversion and Management, 2021, 230:113784.


1 单二极管模型(Single Diode Model, SDM)

1.1 模型结构

单二极管模型由光生电流源IphI_{ph}Iph单个二极管串联电阻RsR_sRs 、**并联电阻RshR_{sh}Rsh**构成,是工程最常用简化模型,结构简单、计算量小。

1.2 输出电流公式

输出电流ILI_LIL满足:
IL=Iph−Isdexp⁡(q(VL+RsIL)akT)−1−VL+RsILRsh I_L = I_{ph} - I_{sd} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} IL=Iph−Isdexp(akTq(VL+RsIL))−1−RshVL+RsIL

1.3 符号定义

  • IphI_{ph}Iph:光生电流(A)
  • IsdI_{sd}Isd:二极管反向饱和电流(μA)
  • VLV_LVL:输出电压(V)
  • RsR_sRs:串联电阻(Ω)
  • RshR_{sh}Rsh:并联电阻(Ω)
  • aaa:二极管理想因子
  • q=1.60217646×10−19 Cq=1.60217646×10^{-19}\ \text{C}q=1.60217646×10−19 C:电子电荷量
  • k=1.3806503×10−23 J/Kk=1.3806503×10^{-23}\ \text{J/K}k=1.3806503×10−23 J/K:玻尔兹曼常数
  • TTT:电池绝对温度(K)

1.4 待估参数

5个 :X={Iph,Isd,Rs,Rsh,a}\boldsymbol{X}=\{ I_{ph}, I_{sd}, R_s, R_{sh}, a \}X={Iph,Isd,Rs,Rsh,a}


2 双二极管模型(Double Diode Model, DDM)

2.1 模型结构

在SDM基础上增加第二个二极管 ,分别模拟扩散电流复合电流损耗,低辐照下精度更高。

2.2 输出电流公式

IL=Iph−Isd1exp⁡(q(VL+RsIL)a1kT)−1−Isd2exp⁡(q(VL+RsIL)a2kT)−1−VL+RsILRsh \begin{aligned} I_L =& I_{ph} - I_{sd1} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_1 k T} \\right) - 1 \\right \\ &- I_{sd2} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_2 k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} \end{aligned} IL=Iph−Isd1exp(a1kTq(VL+RsIL))−1−Isd2exp(a2kTq(VL+RsIL))−1−RshVL+RsIL

2.3 符号定义

  • Isd1I_{sd1}Isd1:扩散二极管饱和电流(μA)
  • Isd2I_{sd2}Isd2:复合二极管饱和电流(μA)
  • a1a_1a1:扩散二极管理想因子
  • a2a_2a2:复合二极管理想因子

2.4 待估参数

7个 :X={Iph,Isd1,Isd2,Rs,Rsh,a1,a2}\boldsymbol{X}=\{ I_{ph}, I_{sd1}, I_{sd2}, R_s, R_{sh}, a_1, a_2 \}X={Iph,Isd1,Isd2,Rs,Rsh,a1,a2}


3 三二极管模型(Triple Diode Model, TDM)

3.1 模型结构

新增第三个二极管 ,模拟商用太阳能电池晶界泄漏电流,拟合精度最高但复杂度与计算量最大。

3.2 输出电流公式

IL=Iph−Isd1exp⁡(q(VL+RsIL)a1kT)−1−Isd2exp⁡(q(VL+RsIL)a2kT)−1−Isd3exp⁡(q(VL+RsIL)a3kT)−1−VL+RsILRsh \begin{aligned} I_L =& I_{ph} - I_{sd1} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_1 k T} \\right) - 1 \\right \\ &- I_{sd2} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_2 k T} \\right) - 1 \\right \\ &- I_{sd3} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_3 k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} \end{aligned} IL=Iph−Isd1exp(a1kTq(VL+RsIL))−1−Isd2exp(a2kTq(VL+RsIL))−1−Isd3exp(a3kTq(VL+RsIL))−1−RshVL+RsIL

3.3 符号定义

  • Isd3I_{sd3}Isd3:第三二极管饱和电流(μA)
  • a3a_3a3:第三二极管理想因子

3.4 待估参数

9个 :X={Iph,Isd1,Isd2,Isd3,Rs,Rsh,a1,a2,a3}\boldsymbol{X}=\{ I_{ph}, I_{sd1}, I_{sd2}, I_{sd3}, R_s, R_{sh}, a_1, a_2, a_3 \}X={Iph,Isd1,Isd2,Isd3,Rs,Rsh,a1,a2,a3}


4 光伏组件模型(PV Module Model, MM)

4.1 模型结构

由大量电池串/并联 构成,以SDM为单元,考虑串联数NsN_sNs与并联数NpN_pNp。

4.2 输出电流公式

ILNp=Iph−Isdexp⁡(q(VL/Ns+RsIL/Np)akT)−1−VL/Ns+RsIL/NpRsh \frac{I_L}{N_p} = I_{ph} - I_{sd} \left \\exp\\left( \\frac{q(V_L / N_s + R_s I_L / N_p)}{a k T} \\right) - 1 \\right - \frac{V_L / N_s + R_s I_L / N_p}{R_{sh}} NpIL=Iph−Isdexp(akTq(VL/Ns+RsIL/Np))−1−RshVL/Ns+RsIL/Np

4.3 符号定义

  • NsN_sNs:串联电池数量
  • NpN_pNp:并联电池组数

4.4 待估参数

5个 :X={Iph,Isd,Rs,Rsh,a}\boldsymbol{X}=\{ I_{ph}, I_{sd}, R_s, R_{sh}, a \}X={Iph,Isd,Rs,Rsh,a}


5 目标函数(参数估计误差)

均方根误差RMSE作为优化目标,最小化模型计算值与实测值的偏差。

5.1 单组数据误差

  • SDM:
    fi(VL,IL,X)=Iph−Isdexp⁡(q(VL+RsIL)akT)−1−VL+RsILRsh−IL f_i(V_L,I_L,X) = I_{ph} - I_{sd} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} - I_L fi(VL,IL,X)=Iph−Isdexp(akTq(VL+RsIL))−1−RshVL+RsIL−IL
  • DDM:
    fi(VL,IL,X)=Iph−Isd1exp⁡(q(VL+RsIL)a1kT)−1−Isd2exp⁡(q(VL+RsIL)a2kT)−1−VL+RsILRsh−IL \begin{aligned} f_i(V_L,I_L,X) =& I_{ph} - I_{sd1} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_1 k T} \\right) - 1 \\right \\ &- I_{sd2} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_2 k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} - I_L \end{aligned} fi(VL,IL,X)=Iph−Isd1exp(a1kTq(VL+RsIL))−1−Isd2exp(a2kTq(VL+RsIL))−1−RshVL+RsIL−IL
  • TDM:
    fi(VL,IL,X)=Iph−Isd1exp⁡(q(VL+RsIL)a1kT)−1−Isd2exp⁡(q(VL+RsIL)a2kT)−1−Isd3exp⁡(q(VL+RsIL)a3kT)−1−VL+RsILRsh−IL \begin{aligned} f_i(V_L,I_L,X) =& I_{ph} - I_{sd1} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_1 k T} \\right) - 1 \\right \\ &- I_{sd2} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_2 k T} \\right) - 1 \\right \\ &- I_{sd3} \left \\exp\\left( \\frac{q(V_L + R_s I_L)}{a_3 k T} \\right) - 1 \\right - \frac{V_L + R_s I_L}{R_{sh}} - I_L \end{aligned} fi(VL,IL,X)=Iph−Isd1exp(a1kTq(VL+RsIL))−1−Isd2exp(a2kTq(VL+RsIL))−1−Isd3exp(a3kTq(VL+RsIL))−1−RshVL+RsIL−IL
  • MM:
    fi(VL,IL,X)=Iph−Isdexp⁡(q(VL/Ns+RsIL/Np)akT)−1−VL/Ns+RsIL/NpRsh−ILNp f_i(V_L,I_L,X) = I_{ph} - I_{sd} \left \\exp\\left( \\frac{q(V_L / N_s + R_s I_L / N_p)}{a k T} \\right) - 1 \\right - \frac{V_L / N_s + R_s I_L / N_p}{R_{sh}} - \frac{I_L}{N_p} fi(VL,IL,X)=Iph−Isdexp(akTq(VL/Ns+RsIL/Np))−1−RshVL/Ns+RsIL/Np−NpIL

5.2 总体RMSE公式

RMSE(X)=1N∑i=1Nfi(VL,IL,X)2 RMSE(X) = \sqrt{\frac{1}{N} \sum_{i=1}^N f_i(V_L,I_L,X)^2} RMSE(X)=N1i=1∑Nfi(VL,IL,X)2

  • NNN:实验数据点数

6 模型对比总结

模型 二极管数 待估参数 精度 复杂度 适用场景
SDM 1 5 通用工程、快速仿真
DDM 2 7 低辐照、高精度需求
TDM 3 9 最高 大面积工业硅电池
MM 1(组串) 5 实际光伏组件系统

二、山羊优化算法

山羊优化算法(Goat Optimization Algorithm, GOA)是2025年提出的一种新型生物启发式元启发式算法,灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力,有效平衡探索和开发,以解决全局优化问题。
参考文献:

1nozari, hamed, and Agnieszka Szmelter-Jarosz. "Goat Optimization Algorithm: A Novel Bio-Inspired Metaheuristic for Global Optimization." Applied Innovations in Industrial Management (AIIM), 2025.

原文链接:https://blog.csdn.net/weixin_46204734/article/details/146115384

三、算法求解及部分结果

复制代码
close all
clear
clc
addpath('Benchmark_Solar_Cell');
func_flag=2;%1-6(共有6种模型,对应论文里面的6种模型)
fobj = @(x)evaluate_normal_fitness(x,func_flag);
Prfobj = @(x)Prevaluate_normal_fitness(x,func_flag);
[lb,ub,Dim]=PV_Xrange(func_flag);
SearchAgents_no=30; % 种群大小(可以修改)
Max_iteration=200; % 最大迭代次数(可以修改)
Result=Prfobj(bestX);
Result.curve=curve;
save Result Result %保存结果

%% 显示结果
display(['算法获得的最佳参数为:', num2str(bestX)]);
display(['算法获得的RMSE为:', num2str(fMin)]);

%% 画图
plotFigure;%画图

(1)模型一求解结果:





(2)模型二求解结果:





结果说明:

Pre_I为算法的预测电流

actual_I是真实电流

actual_V_data是真实电压

Pre_P是预测功率

actual_P是真实功率

AbsError是真实电流与预测电流的绝对误差

x是算法优化得到的最佳参数

curve是算法的收敛曲线,即RMSE随迭代次数的曲线图

MeanError是算法获得的RMSE

四、私信/点击下方名片免费获取完整MATLAB代码链接

相关推荐
过期动态36 分钟前
【LeetCode 热题 100】接雨水
java·数据结构·算法·leetcode·职场和发展
春日见37 分钟前
5分钟入门强化学习之动态规划算法与实现
大数据·人工智能·python·算法·机器学习·计算机视觉
bug和崩溃我都要43 分钟前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴1 小时前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
scx_link1 小时前
线性回归的总结:
算法·机器学习·线性回归
郝亚军1 小时前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
青山师1 小时前
动态规划算法深度解析:从状态转移方程到工业级优化
数据结构·算法·面试·动态规划·代理模式·java面试
zhangjw341 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试
蝈理塘(/_\)大怨种1 小时前
类和对象 (上)
java·开发语言
黎阳之光1 小时前
数智透明·安全兜底|黎阳之光透明矿山,AI+数字孪生守护矿山生命线
人工智能·物联网·算法·安全·数字孪生