【优化配置】基于matlab遗传算法求解风电混合储能容量优化配置问题【含Matlab源码 228期】
一、简介
1 引言
风能是一种清洁能源,但由于自然条件的变化,风速和风向不断的、随机的变化,导致风力发电输出功率具有不稳定性和不可预测性,直接影响微电网的调度运行,而通过风力发电系统和储能设备的协调配合,可以提高风力发电技术的可调度性和可控性。
近年来,混合储能的容量配置及控制策略得到广泛的关注。混合储能将容量小、寿命长、功率比较高储能环节与容量比较大、循环次数受限、相对能量比高、功率比低的储能环节结合使用,如将超级电容器与蓄电池混合。但是对混合储能的研究仍然处于初级阶段,而且研究主要集中在控制策略上,对容量配置的研究较少。目前对容量配置的研究大多按照经验配置混合储能的容量,未用定量的分析。本文中风力发电系统的储能装置是蓄电池和超级电容器混合组成的,混合储能系统的容量配置是一个非线性规划问题,利用遗传算法进行求解,配置混合储能装置的全生命周期最小费用。
2 模型分析
基于蓄电池和超级电容器混合储能独立风力发电系统的结构如图 1 所示。当风速比较大时,储能装置处于充电状态,将电能存储起来;当风速比较弱或者峰值负荷时储能装置为负荷供电,以保证系统平稳连续的供电,提高供电可靠性。
3 其他见参考文献
二、部分源代码
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 = zeros(N, N_chrom);%存放染色体的矩阵
fitness = zeros(N, 1);%存放染色体的适应度
fitness_ave = zeros(1, iter);%存放每一代的平均适应度
fitness_best = zeros(1, iter);%存放每一代的最优适应度
chrom_best = zeros(1, N_chrom+1);%存放当前代的最优染色体与适应度
%% 初始化,这只是用于生成第一代个体,并计算其适应度函数
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))])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]欧名勇,陈仲伟,谭玉东,文明,周志成.基于峰谷分时电价引导下的电动汽车充电负荷优化[J].电力科学与技术学报,2020年9月
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/122230566
- 点赞
- 收藏
- 关注作者
评论(0)