【优化配置】遗传算法求解风电混合储能容量优化配置问题matlab源码

1 简介

1 引言

风能是一种清洁能源,但由于自然条件的变化,风速和风向不断的、随机的变化,导致风力发电输出功率具有不稳定性和不可预测性,直接影响微电网的调度运行,而通过风力发电系统和储能设备的协调配合,可以提高风力发电技术的可调度性和可控性。

近年来,混合储能的容量配置及控制策略得到广泛的关注。混合储能将容量小、寿命长、功率比较高储能环节与容量比较大、循环次数受限、相对能量比高、功率比低的储能环节结合使用,如将超级电容器与蓄电池混合。但是对混合储能的研究仍然处于初级阶段,而且研究主要集中在控制策略上,对容量配置的研究较少。目前对容量配置的研究大多按照经验配置混合储能的容量,未用定量的分析。本文中风力发电系统的储能装置是蓄电池和超级电容器混合组成的,混合储能系统的容量配置是一个非线性规划问题,利用遗传算法进行求解,配置混合储能装置的全生命周期最小费用。

2 模型分析

基于蓄电池和超级电容器混合储能独立风力发电系统的结构如图 1 所示。当风速比较大时,储能装置处于充电状态,将电能存储起来;当风速比较弱或者峰值负荷时储能装置为负荷供电,以保证系统平稳连续的供电,提高供电可靠性。

【优化配置】遗传算法求解风电混合储能容量优化配置问题matlab源码

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 仿真结果

【优化配置】遗传算法求解风电混合储能容量优化配置问题matlab源码

【优化配置】遗传算法求解风电混合储能容量优化配置问题matlab源码

4 参考文献

基于遗传算法的风电混合储能容量优化配置[J].杨国华,朱向芬,周鑫,丁晓花,卫宁波,马玉娟,王金梅.电气传动. 2015,45(02)​

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

上一篇:Codeforces Round #756 (Div. 3) A. Make Even


下一篇:COMPFEST 13 - Finals Online Mirror (Unrated, ICPC Rules, Teams Preferred)(replay)