基于MATLAB的风力光伏发电模型模拟以及遗传算法求解混合发电系统最优配置
Posted fpga和matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MATLAB的风力光伏发电模型模拟以及遗传算法求解混合发电系统最优配置相关的知识,希望对你有一定的参考价值。
目录
一、理论基础
风力发电功率模型为:
2个风力发电功率模型
通过GA优化算法对比三个模型算出的结果。
二、案例背景
1.问题描述
由于化石燃料的消耗和污染特性,有必要寻找清洁能源以满足需求。人们正在关注风能和太阳能等可再生能源的使用,因为它们清洁、污染少。风力发电(WPG)和光伏发电(PVG)是在偏远和农村地区提供负荷的最有前景的技术,这些地区的公用事业线路由于地形原因安装不经济。提出了一种带有储能设备的独立混合风/光伏发电系统,该系统将有效地结合风能和太阳能的互补特性,以提高系统的可靠性并降低其成本。在混合动力系统中协调可再生能源、发电设备、储能装置和负载非常复杂,以经济可靠的方式获得电力对于混合动力系统的优化设计也非常重要。
2.思路流程
首先,通过matlab进行建模,然后通过遗传算法二进制编码求解混合发电系统配置优化问题。
三、部分MATLAB程序
遗传算法二进制编码求解混合发电系统配置优化问题
%***************遗传算法二进制编码求解混合发电系统配置优化问题
function [Apv,Aw,Cp,CT,LPSP,Pdump,Pdeficit,SOC,Iteration,BestJ,Bfi]=GASolveHybirdSystemSize(WindDataPV,SolarDataPVR,LoadDataPV,Apv_max,Aw_max,Cb_max)
%**************遗传参数设置
Size=200;%种群大小
G=200;%迭代代数
CodeL=10;%编码长度
%**************问题解约束空间
u1max=Apv_max;
u1min=0;
u2max=Aw_max;
u2min=0;
u3max=Cb_max;
u3min=0;
%**************初始化编码
E=round(rand(Size,3*CodeL));
%**************GA主程序
for k=1:1:G
k
Iteration(k)=k;
for s=1:1:Size
m=E(s,:);
y1=0;y2=0;y3=0;
%*******************解码
m1=m(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
x1=(u1max-u1min)*y1/1023+u1min;
m2=m(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
x2=(u2max-u2min)*y2/1023+u2min;
m3=m(2*CodeL+1:1:3*CodeL);
for i=1:1:CodeL
y3=y3+m3(i)*2^(i-1);
end
x3=(u3max-u3min)*y3/1023+u3min;
%******************适应度函数
[F(s),~,~,~,~,~]=GAFitnessFunction(x1,x2,x3,WindDataPV,SolarDataPVR,LoadDataPV);
end
Ji=1./F;
%*****************第一步:评估适应度
BestJ(k)=min(Ji);
fi=F; %适应度函数
[Oderfi,Indexfi]=sort(fi); %按照适应度大小从小到大排序
Bestfi=Oderfi(Size); %选取最佳适应度
BestS=E(Indexfi(Size),:); %最佳基因序列
Bfi(k)=Bestfi; %记录最佳适应度值
%*****************第二步:选择和复制操作
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size); %选择适应度较好的基因个体
kk=1;
for i=1:1:Size
for j=1:1:fi_S(i) %选择和复制操作
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1;
end
end
%*****************第三步:交叉操作
pc=0.60;%交叉概率
n=ceil(30*rand);
for i=1:2:(Size-1)
temp=rand;
if pc>temp %交叉条件
for j=n:1:30
TempE(i,j)=E(i+1,j);
TempE(i+1,j)=E(i,j);
end
end
end
TempE(Size,:)=BestS;
E=TempE;
%*****************第三步:变异操作
pm=0.1; %变异概率
for i=1:1:Size
for j=1:1:2*CodeL
temp=rand;
if pm>temp %变异条件
if TempE(i,j)==0
TempE(i,j)=1;
else
TempE(i,j)=0;
end
end
end
end
%保证第30个基因个体是最佳基因序列
TempE(Size,:)=BestS;
E=TempE;
end
%**********************解码最佳基因序列对应的各个参数优化值
y1=0;y2=0;y3=0;
m1=BestS(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
m2=BestS(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
m3=BestS(2*CodeL+1:1:3*CodeL);
for i=1:1:CodeL
y3=y3+m3(i)*2^(i-1);
end
Apv=(u1max-u1min)*y1/1023+u1min;
Aw=(u2max-u2min)*y2/1023+u2min;
Cp=(u3max-u3min)*y3/1023+u3min;
%**********************混合发电系统最佳配置的性能参数输出
[~,LPSP,Pdump,Pdeficit,SOC,CT]=GAFitnessFunction(x1,x2,x3,WindDataPV,SolarDataPVR,LoadDataPV);
混合发电系统优化配置算法
%********混合发电系统优化配置算法
clc;
clear all;
close all;
RandStream.setDefaultStream(RandStream('mt19937ar','seed',1));
%********优化参数约束空间
Apv_max=50;%单位为m2
Aw_max=120;%单位为m2
Cb_max=160;%单位为KWH
%********读取当地气候数据
[WindDataPV,SolarDataPVR,LoadDataPV]=ReadLocalClimaticData();
%***************遗传算法二进制编码求解混合发电系统配置优化问题
[Apv,Aw,Cb,CT,LPSP,Pdump,Pdeficit,SOC,Iteration,BestJ,Bfi]=GASolveHybirdSystemSize(WindDataPV,SolarDataPVR,LoadDataPV,Apv_max,Aw_max,Cb_max);
Apv,Aw,Cb,CT,LPSP
四、仿真结论分析
X坐标为风力发电机风轮扫过的面积
Y坐标为光伏组件的面积
Z 坐标为:LPSP(负荷失电率)
五、参考文献
[1]廖萍, 李兴源, 徐娇. 小型风力发电机模型及其接入系统研究[J]. 南方电网技术, 2008, 2(1):5.A02-25
以上是关于基于MATLAB的风力光伏发电模型模拟以及遗传算法求解混合发电系统最优配置的主要内容,如果未能解决你的问题,请参考以下文章
优化调度基于matlab多目标粒子群算法求解风电光伏储能电网发电与需求响应调度优化问题含Matlab源码 239期
优化配置基于matlab遗传算法求解风电混合储能容量优化配置问题含Matlab源码 228期
(MATLAB代码分享可运行)基于NSGA-2算法的多目标水电站电力调度优化