一、简介
基于matlab实现电动汽车有序充电
二、源代码
clc;
clear;
Ci=32; %电池容量
Pni=7; %充电功率
xiaolv=0.9; %充电效率
Pi=Pni*xiaolv;%实际充电功率
Brl=4*1615*0.8;%变压器容量
SampleNo=150;%代表抽样数
Tranrl=Brl*ones(1,96);%变压器容量数组
%%确定负荷
fhx=[ 1426.39 1445.58 1426.39 1416.39 1426.39 1491.22 1512.84 1523.64 1512.84 1426.39 1399.37 1275.10 1188.66 1048.18 832.06 780.22 768.64 812.06 884.48 1069.70 1170.66 1275.10 1404.78 1426.39 1426.39 ]; %从12点开始算负荷
fhx=0.8*fhx;
ratio=zeros(1,96);
for i=1:96
firstfhx=fhx(floor((i-1)/4)+1)/Brl;
secondfhx=fhx(floor((i-1)/4)+2)/Brl;
if(rem(i,4)==1)
ratio(i)=fhx(floor((i-1)/4)+1)/Brl;
elseif(rem(i,4)==2)
ratio(i)=firstfhx+(secondfhx-firstfhx)/4;
elseif(rem(i,4)==3)
ratio(i)=firstfhx+2*(secondfhx-firstfhx)/4;
else
ratio(i)=firstfhx+3*(secondfhx-firstfhx)/4;
end
end
%% 抽样
load('Parameters250.mat');
interval=zeros(1,96);
EVNoCount=0; %可提供充电的总数目
EVstarttime=zeros(1,SampleNo);
EVssoc=zeros(1,SampleNo);
EVendtime=zeros(1,SampleNo);
startt=12.25;
for t=1:96 %96个时段 从中午12点开始计算,也就是从第50个时段开始计算, 12.25为第一个时间段
starttime=startt+0.25*(t-1);
%%对电动汽车的到达时间及车辆数进行进行抽样
if starttime>24
starttime=starttime-24;
end
o=3.41;u=17.47;
if starttime<=(u-12)
liangshu=@(x)(1./(o.*((2.*pi).^0.5))).*exp(-((x+24-u).^2)./(2.*(o.^2)));%每个刷新时段内的入网量数的概率密度函数
else
liangshu=@(x)(1./(o.*((2.*pi).^0.5))).*exp(-((x-u).^2)./(2.*(o.^2)));%每个刷新时段内的入网量数的概率密度函数
end
s1=quadl(liangshu,starttime-0.25,starttime);%0.25代表刷新时段为0.25小时
intervalNo=round(s1*SampleNo); %该段时间的接入的车辆数目
interval(t)=intervalNo;
%%对初始SOC进行抽样
reasonnumber=0;
for i=1:intervalNo
MU=2.98;
SIGMA=1.14;
R = lognrnd(MU,SIGMA);
socs= 0.9- 15*R/(100*Ci);
while socs<0.1 || socs>=0.3
R = lognrnd(MU,SIGMA);
socs= 0.9- 15*R/(100*Ci);
end
socs=fix(socs*100)/100;
endtimeone=normrnd(8.92,3.24);
while endtimeone>=12 || endtimeone<=2
endtimeone=normrnd(8.92,3.24);
end
endtimeone=ceil((endtimeone*60)/15)+48;
if (starttime>12)||(starttime<endtimeone)
maxJ=endtimeone-t;
if (0.25*maxJ*Pi>((0.9-socs)*Ci))
reasonnumber=reasonnumber+1;
EVstarttime(1,EVNoCount+reasonnumber)=t;
EVssoc(1,EVNoCount+reasonnumber)=socs;
EVendtime(1,EVNoCount+reasonnumber)=endtimeone;
end
end
end
EVNoCount=EVNoCount+reasonnumber;
end
RealEVstarttime=zeros(1,EVNoCount);
RealEVssoc=zeros(1,EVNoCount);
RealEVendtime=zeros(1,EVNoCount);
for i=1:EVNoCount
RealEVstarttime(1,i)= EVstarttime(1,i);
RealEVssoc(1,i)=EVssoc(1,i);
RealEVendtime(1,i)=EVendtime(1,i);
end
clear EVstarttime EVssoc EVendtime;
%%全局优化
dt=0.25;%时间间隔
Snj=binvar(EVNoCount,96);
Transformer=ones(1,96);
Aj=ones(96,1);
re=0.9*ones(EVNoCount,1);
Cend=ones(EVNoCount,1);
Price=[ 0.687 0.687 0.687 0.687 0.687 0.869 0.869 0.869 0.869 0.687 0.687 0.687 0.365 0.365 0.365 0.365 0.365 0.365 0.365 0.365 0.869 0.869 0.869 0.869];
pricekuo=zeros(1,96);
for i=1:95
pricekuo(i)=Price(floor(i/4)+1);
if(floor((i-1)/4)<floor(i/4))
pricekuo(i)=Price(floor(i/4));
end
end
三、运行结果
四、备注
完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【优化求解】粒子群算法之充电站最优布局【Matlab 061期】
【优化求解】遗传算法之多旅行商问题【Matlab 062期】
【优化求解】遗传和模拟退火之三维装箱问题【Matlab 063期】
【优化求解】遗传算法之求最短路径【Matlab 064期】
【优化求解】粒子群之优化灰狼算法【Matlab 065期】
【优化求解】多目标之灰狼优化算法MOGWO 【Matlab 066期】
【优化求解】遗传算法之求解优化车辆发车间隔【Matlab 067期】
【优化求解】磷虾群算法简介【Matlab 068期】
【优化求解】差分进化算法简介【Matlab 069期】
【优化求解】约束优化之惩罚函数法简介【Matlab 070期】
【优化求解】改进灰狼算法之求解重油热解模型【Matlab 072期】
【优化求解】蚁群算法之配电网故障定位【Matlab 073期】
【优化求解】遗传算法之求解岛屿物资补给优化问题【Matlab 137期】
【优化求解】基于matlab冠状病毒群体免疫优化算法(CHIO)【Matlab 138期】
【优化求解】基于matlab之金鹰优化求解算法(GEO)【Matlab 139期】
【优化求解】基于GUI界面之BP神经网络优化求解【Matlab 179期】
【优化求解】基于GUI界面之遗传算法优化求解【Matlab 180期】
【优化求解】基于GUI界面之蚁群算法优化求解【Matlab 181期】
【优化求解】 免疫算法之数值逼近优化分析【Matlab 182期】
【优化求解】 启发式算法之函数优化分析【Matlab 183期】
【优化求解】改进的遗传算法(GA+IGA)之城市交通信号优化【Matlab 184期】
【优化求解】改进的遗传算法GA之城市交通信号优化【Matlab 185期】
【优化求解】改进的遗传算法IGA之城市交通信号优化【Matlab 186期】
【优化求解】罚函数的粒子群算法之函数寻优【Matlab 187期】
【优化求解】细菌觅食算法之函数优化分析【Matlab 188期】
【优化求解】引力搜索算法之函数优化分析【Matlab 189期】
【优化求解】蚁群算法之函数优化分析【Matlab 190期】
【优化求解】多元宇宙优化算法【Matlab 191期】
【优化求解】飞蛾扑火算法(MFO)【Matlab 192期】