200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【优化求解】基于遗传算法求解电动汽车充电管理优化问题Matlab代码

【优化求解】基于遗传算法求解电动汽车充电管理优化问题Matlab代码

时间:2019-01-07 00:56:09

相关推荐

【优化求解】基于遗传算法求解电动汽车充电管理优化问题Matlab代码

1 简介

在现有的电池技术和充电条件下,快换式充电站成为国内纯电动公交最主要的能量补给摸式。针对电池组充电电费过高和增加配电网峰谷差的问题,以及换电站内快换工位和备用电池空闲的情况,在保证车辆正常运营的前提下,以基金项目:国家863高技术基金项目(AA05A108);中央高校基本科研业务费专项资金资助(YJS084)。The National High Technology Research and Development of China(863 Program) (AA05A108);Fundamental Research Funds for theCentral Universities (YJS084).充电站内全天充电电费最低为目标,建立了充电变功率工况下基于分时电价的换电站经济运行模型,通过遗传智能优化算法合理安排电池组的开始充电时间,降低充电电费,从而实现换电站的经济运行。分别基于北京北土城充电站和上海世博会充电站的实际数据和统计结果进行算例仿真,验证了算法的有效性。结果表明,该算法不仅能降低充电站充电电费,还能降低充电站白天对配电网的负荷压力,补充夜间负荷,减小配电网的峰谷差,在实现充电站经济运行的同时还有助于配电网的经济运行。通过对国内主要大型纯电动公交快换式充电站的建设和后期运营数据的分析,先前已总结了快换式充电站的设计模型,并提出了快换式充电站核心参数的基本配置方法。同时在实际运营数据分析过程中发现,充电站内电池组的充电过程是和车辆回站的时间相关的,主要集中在白天运营时段,快换工位大部分时间处于空闲状态,电池组充满电而闲置的情况也一直存在,这就使得调节电池组的充电时间成为可能。因此,本文在满足车辆正常运营的前提下,以充电站内全天充电电费最低为目标,通过遗传智能优化算法求解出电池组的开始充电时间,合理安排充电,从而实现充电站的经济运行,该运行方式同时有助于配电网的经济运行。​

2 部分代码

clc

clear

%--------------------获取数据-----------------------

PBase=fopen('PBase.txt');

Pbase(1,:)=fscanf(PBase,'%g',[1,inf]); %Pbase 电网基础负荷功率 96个时段

fclose(PBase);

carnum=100;%carnumal 给定接入汽车数量

% carnum0=0.25*carnumal; %carnum0 紧急充电汽车数量

% carnum=carnumal-carnum0;%carnum 常规充电汽车数量

ET=36; %ET 给定汽车电池容量

ptSOC0=normrnd(0.2,0.05,1,carnum);%ptSOC0 服从正态分布的电池状态

pch=[7,1.5];%pch 恒功率充电

Pmax=2400; %Pmax 给定电网允许最大功率

tin=normrnd(19,1,1,carnum); %tin 各电动汽车接入时间

Te=normrnd(7,0.5,1,carnum); %Te 用户设置充电完成时间

timeT=zeros(1,carnum); %timeT 各电动汽车充电所需时间

ptSOC=ptSOC0;

for i=1:carnum

while ptSOC(1,i)<0.9%充电功率 SOC<90%

ptSOC(1,i)=ptSOC(1,i)+0.25*pch(1)/ET;

timeT(1,i)=timeT(1,i)+0.25;

end %充电功率 SOC>=90%

timeT(1,i)=timeT(1,i)+(1-ptSOC(1,i))*ET/pch(2);

end

%--------------------无序充电-----------------------

cartime=carT(carnum,tin,timeT); %以汽车接入时间作为充电开始时间

a=sum(cartime,2);

Ptotal=zeros(1,96);

for i=1:96

Ptotal(1,i)=Pbase(i)+pch(1)*a(i);

end

PTotal=fopen('PTotal.txt','wt');

fprintf(PTotal,'%g \n',Ptotal);

fclose(PTotal);

%--------------------紧急充电-----------------------

%

% tsSOC0=normrnd(0.3,0.05,1,carnum0);%tsSOC0 服从正态分布的电池状态

% tin0=24.*rand(1,carnum0);%tin0 特殊电动汽车接入时间随机分布

% tsSOCe=normrnd(0.8,0.05,1,carnum0);%tsSOCe 用户设置期望电池状态

% timeT0=zeros(1,carnum0);%timeT0 恒功率充电时长

% for i=1:carnum0

% timeT0(1,i)=ET*(tsSOCe(i)-tsSOC0(i))/pch(1);

% end

% cartime=carT(carnum0,tin0,timeT0);%以汽车接入时间作为充电开始时间

% a=sum(cartime,2);

% for i=1:96

% Pbase(i)=Pbase(i)+pch(1)*a(i);

% end

%------------------遗传算法优化---------------------

maxgen=1000;%maxgen 终止进化代数

sizepop=50; %sizepop 种群规模

pcross=0.8; %pcross 杂交概率

pmutation=0.05;%pmutation变异概率

bound=[tin;Te-timeT+24];%bound 约束范围

%种群初始化

ton=zeros(1,carnum); %ton 各电动汽车充电开始时间

carpop=struct('fitness',zeros(1,sizepop),'chrom',[]);

for i=1:sizepop%carpop 初始种群随机赋值

a=rand(1,carnum);

for j=1:carnum

ton(1,j)=bound(1,j)+a(j)*(bound(2,j)-bound(1,j));

end

carpop.chrom(i,:)=ton; %chrom 染色体群,即ton集合

%carpop.fitness(i)=fit1(carnum,ton,timeT,Pbase,pch);

carpop.fitness(i)=fit2(carnum,ton,timeT,Pbase,pch);

end

%找出当前最优解(适应度最小的染色体)

[bestfit,bestindex]=min(carpop.fitness);

bestton=carpop.chrom(bestindex,:);%bestton 最优充电开始时间

avgfit=sum(carpop.fitness)/sizepop;%avgfit 适应度平均值

Ptotal=zeros(1,96); %Ptotal 总负荷功率

cartime=carT(carnum,bestton,timeT);

a=sum(cartime,2);

for i=1:96

Ptotal(1,i)=Pbase(i)+pch(1)*a(i);

end

%--------------------优化结果显示-----------------------

Bestton=fopen('Bestton.txt','wt');

fprintf(Bestton,'%g \n',bestton);

fclose(Bestton);

PT=fopen('PT.txt','wt');

fprintf(PT,'%g \n',Ptotal);

fclose(PT);

figure

plot(y)

xlabel('迭代次数')

ylabel('适应度值')

3 仿真结果

4 参考文献

[1]林英硕, 厚月春, 周昊. 基于遗传算法的电动汽车充放电优化管理问题求解[J]. .

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

5 完整MATLAB代码与数据下载地址

见博客主页头条

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。