【优化配置】遗传算法求解风电混合储能容量优化配置问题matlab源码
作者:互联网
1 简介
1 引言
风能是一种清洁能源,但由于自然条件的变化,风速和风向不断的、随机的变化,导致风力发电输出功率具有不稳定性和不可预测性,直接影响微电网的调度运行,而通过风力发电系统和储能设备的协调配合,可以提高风力发电技术的可调度性和可控性。
近年来,混合储能的容量配置及控制策略得到广泛的关注。混合储能将容量小、寿命长、功率比较高储能环节与容量比较大、循环次数受限、相对能量比高、功率比低的储能环节结合使用,如将超级电容器与蓄电池混合。但是对混合储能的研究仍然处于初级阶段,而且研究主要集中在控制策略上,对容量配置的研究较少。目前对容量配置的研究大多按照经验配置混合储能的容量,未用定量的分析。本文中风力发电系统的储能装置是蓄电池和超级电容器混合组成的,混合储能系统的容量配置是一个非线性规划问题,利用遗传算法进行求解,配置混合储能装置的全生命周期最小费用。
2 模型分析
基于蓄电池和超级电容器混合储能独立风力发电系统的结构如图 1 所示。当风速比较大时,储能装置处于充电状态,将电能存储起来;当风速比较弱或者峰值负荷时储能装置为负荷供电,以保证系统平稳连续的供电,提高供电可靠性。
2 部分代码
clc;
clear;
close all
%% 基础参数
%风电出力
Pwind=[24.6,22.1,17.5,13.5,10.1,8.5,13.9,23.5,25.8,29.4,35.1,38.9,36.9,32.5,30.3,25,23.2,25.1,27.8,32.3,35.3,35.5,25,10.8,];
%原电网24小时负荷
Pload=[55,50,53.1,49.4,54,49.4,45.6,34.8,30.1,25.2,21.8,10,10.9,11.2,6.3,5.9,5,5.6,18.6,35,36.2,37.1,40.2,25.3];
N = 100; %种群内个体数目
N_chrom = 25; %染色体节点数,也就是每个个体有多少条染色体,其实说白了就是看适应函数里有几个自变量。
iter = 1000; %迭代次数,也就是一共有多少代
mut = 0.2; %突变概率
acr = 0.2; %交叉概率
best = 1;
%每个节点的值的区间
for i=1:24
chrom_range(1,(i+1)) = 0;
chrom_range(2,(i+1)) = 0;
if (Pload(i)-Pwind(i))>=0
chrom_range(2,(i+1)) =(Pload(i)-Pwind(i));
else
chrom_range(1,(i+1)) = (Pload(i)-Pwind(i));
end
end
chrom_range(1,1) = 100;
chrom_range(1,2:25) = -35;
chrom_range(2,1) = 80000;
chrom_range(2,2:25) = 50;
%% 初始化,这只是用于生成第一代个体,并计算其适应度函数
chrom = Initialize(N, N_chrom, chrom_range); %初始化染色体
fitness = CalFitness(chrom, N, N_chrom); %计算适应度
chrom_best = FindBest(chrom, fitness, N_chrom); %寻找最优染色体
fitness_best(1) = chrom_best(end); %将当前最优存入矩阵当中
fitness_ave(1) = CalAveFitness(fitness); %将当前平均适应度存入矩阵当中
%% 用于生成以下其余各代,一共迭代多少步就一共有多少代
for t = 2:iter
chrom = MutChrom(chrom, mut, N, N_chrom, chrom_range, t, iter); %变异,这个进行基因突变处理的函数原理没有懂!!!
chrom = AcrChrom(chrom, acr, N, N_chrom); %交叉
fitness = CalFitness(chrom, N, N_chrom); %计算适应度
chrom_best_temp = FindBest(chrom, fitness, N_chrom); %寻找最优染色体
if chrom_best_temp(end)>chrom_best(end) %替换掉当前储存的最优
chrom_best = chrom_best_temp;
end
%%替换掉最劣
[chrom, fitness] = ReplaceWorse(chrom, chrom_best, fitness);
fitness_best(t) = chrom_best(end); %将当前最优存入矩阵当中
fitness_ave(t) = CalAveFitness(fitness); %将当前平均适应度存入矩阵当中
end
%% 作图
figure(1)
plot( 1:iter, fitness_best, 'b')
grid on
legend( '迭代优化结果')
%e=PlotModel(chrom_best);
figure(2)
t=1:24;
Pwind=[24.6,22.1,17.5,13.5,10.1,8.5,13.9,23.5,25.8,29.4,35.1,38.9,36.9,32.5,30.3,25,23.2,25.1,27.8,32.3,35.3,35.5,25,10.8,];
%原电网24小时负荷
Pload=[55,50,53.1,49.4,54,49.4,45.6,34.8,30.1,25.2,21.8,10,10.9,11.2,6.3,5.9,5,5.6,18.6,35,36.2,37.1,40.2,25.3];
plot(t,Pwind,'-')
hold on
plot(t,Pload,'-o')
hold on
plot(t,chrom_best(2:25),'-.')
legend( '风电出力','电网负荷','蓄电池出力')
%% 输出结果
disp(['最优染色体为', num2str(chrom_best(1:end-1))])
disp(['最优适应度为', num2str(chrom_best(end))])
function fitness = CalFitness(chrom, N, N_chrom)
fitness = zeros(N, 1);
%风电出力
Pwind=[24.6,22.1,17.5,13.5,10.1,8.5,13.9,23.5,25.8,29.4,35.1,38.9,36.9,32.5,30.3,25,23.2,25.1,27.8,32.3,35.3,35.5,25,10.8,];
%原电网24小时负荷
Pload=[55,50,53.1,49.4,54,49.4,45.6,34.8,30.1,25.2,21.8,10,10.9,11.2,6.3,5.9,5,5.6,18.6,35,36.2,37.1,40.2,25.3];
%% 基本参数
etac=0.95;%风电逆变效率
afa=0.7;%不平衡功率基本部分
belta=0.65;%重要负荷占比
lpsp=0.05;%缺电率
%% 蓄电池参数
Ub=12;%蓄电池额定电压
Cb=100;%蓄电池容量
DoD=0.4;%放电深度
etabc=0.75;%充电效率
etabd=0.85;%放电效率
fob=0.1;%运行系数
fmb=0.02;%维护系数
fdb=0.08;%处理系数
Pb=400;%蓄电池单价
3 仿真结果
4 参考文献
基于遗传算法的风电混合储能容量优化配置[J].杨国华,朱向芬,周鑫,丁晓花,卫宁波,马玉娟,王金梅.电气传动. 2015,45(02)
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
标签:25,储能,优化,range,源码,matlab,fitness,chrom,best 来源: https://blog.csdn.net/qq_59747472/article/details/122774372