%%
clc;
clear;
tic
%% 算法参数
parameter;
close all;
global PV_load Power_load number_ car_data soc_end EV_load
MaxIt=300; % Maximum Number of Iterations
nPop=250; % Population Size (Swarm Size)
[all_load]=xlsread('data','Sheet1','b2:d20');%负荷
PV_load=all_load(:,1)*1;%光伏负荷
Power_load=all_load(:,2)*1;%用电负荷
[car_data]=xlsread('data','Sheet1','e2:h51');%无序负荷
% [load_car,car_start,car_leave,car_soc ]= c_car_load(car_number);%电动汽车无序负荷
load_car=car_data(1:48,4);
EV_load=load_car(14:32);%电动汽车无序负荷
car_start =car_data(:,1);
car_leave=car_data(:,2);
car_soc=car_data(:,3)-0.1;
soc_end=soc_endzi();
car_in=car_start;
car_off=car_leave;
%% 确定变量
for i=1:car_number
car_in(i)=fix(car_start(i)/30);
car_off(i)=fix(car_leave(i)/30);
end
diaodu_carin=[];%可调度
diaodu_caroff=[];%可调度
diaodu_soc=[];%可调度
diaodu_socend=[];
jishu=0;%可调度
diaodu_carin_=[];%bu可调度
diaodu_caroff_=[];%bu可调度
diaodu_soc_=[];%bu可调度
diaodu_socend_=[];
jishu_=0;%bu可调度
for i=1:car_number
if car_in(i)>=14&&car_off(i)<=32
jishu=jishu+1;
diaodu_carin(jishu)=car_in(i);
diaodu_caroff(jishu)=car_off(i);
diaodu_soc(jishu)=car_soc(i);
diaodu_socend(jishu)=soc_end(i);
else
jishu_=jishu_+1;
diaodu_carin_(jishu_)=car_in(i);
diaodu_caroff_(jishu_)=car_off(i);
diaodu_soc_(jishu_)=car_soc(i);
diaodu_socend_(jishu_)=soc_end(i);
end
end
[m ,n]=size(diaodu_carin);%n为19,19辆车可调度
number_=zeros(n,1);
for i=1:n
number_(i)=diaodu_caroff(i)-diaodu_carin(i)+1;
end
number_;
sum(number_);
%变量个数最终确定
nVar=sum(number_); % Number of Decision Variables
VarMin=P_discar*30;
VarMax=P_chscar*30;
%% 计算
[ bestPosition, fitValue ] = PSOFUN(@objective,nVar,VarMin,VarMax,MaxIt,nPop)
%变量还原
x=bestPosition;
load_ke=zeros(48,1);
load_1=zeros(48,1);
load_1(diaodu_carin(1):diaodu_caroff(1))=x(1:11);
load_2=zeros(48,1);
load_2(diaodu_carin(2):diaodu_caroff(2))=x(12:19);
load_3=zeros(48,1);
load_3(diaodu_carin(3):diaodu_caroff(3))=x(20:32);
load_4=zeros(48,1);
load_4(diaodu_carin(4):diaodu_caroff(4))=x(33);
load_5=zeros(48,1);
load_5(diaodu_carin(5):diaodu_caroff(5))=x(34:39);
load_6=zeros(48,1);
load_6(diaodu_carin(6):diaodu_caroff(6))=x(40:48);
load_7=zeros(48,1);
load_7(diaodu_carin(7):diaodu_caroff(7))=x(49:65);
load_8=zeros(48,1);
load_8(diaodu_carin(8):diaodu_caroff(8))=x(66:78);
load_9=zeros(48,1);
load_9(diaodu_carin(9):diaodu_caroff(9))=x(79:93);
load_10=zeros(48,1);
load_10(diaodu_carin(10):diaodu_caroff(10))=x(94:109);
load_11=zeros(48,1);
load_11(diaodu_carin(11):diaodu_caroff(11))=x(110:119);
load_12=zeros(48,1);
load_12(diaodu_carin(12):diaodu_caroff(12))=x(120:125);
load_13=zeros(48,1);
load_13(diaodu_carin(13):diaodu_caroff(13))=x(126:143);
load_14=zeros(48,1);
load_14(diaodu_carin(14):diaodu_caroff(14))=x(144:158);
load_15=zeros(48,1);
load_15(diaodu_carin(15):diaodu_caroff(15))=x(159:170);
load_16=zeros(48,1);
load_16(diaodu_carin(16):diaodu_caroff(16))=x(171:179);
load_17=zeros(48,1);
load_17(diaodu_carin(17):diaodu_caroff(17))=x(180:185);
load_18=zeros(48,1);
load_18(diaodu_carin(18):diaodu_caroff(18))=x(186:190);
load_19=zeros(48,1);
load_19(diaodu_carin(19):diaodu_caroff(19))=x(191:201);
load_ke=load_1+load_2+load_3 +load_4 +load_5 +load_6 +load_7 +load_8 +load_9 +load_10 +load_11 +load_12 +load_13 +load_14 +load_15 +load_16 +load_17 +load_18 +load_19 ;
%% 统计充放电
load_zheng=zeros(48,1);
load_fu=zeros(48,1);
for i=1:48
if load_1(i)>=0
load_zheng(i)=load_zheng(i)+load_1(i);
else
load_fu(i)=load_fu(i)+load_1(i);
end
end
for i=1:48
if load_2(i)>=0
load_zheng(i)=load_zheng(i)+load_2(i);
else
load_fu(i)=load_fu(i)+load_2(i);
end
end
for i=1:48
if load_3(i)>=0
load_zheng(i)=load_zheng(i)+load_3(i);
else
load_fu(i)=load_fu(i)+load_3(i);
end
end
for i=1:48
if load_4(i)>=0
load_zheng(i)=load_zheng(i)+load_4(i);
else
load_fu(i)=load_fu(i)+load_4(i);
end
end
for i=1:48
if load_5(i)>=0
load_zheng(i)=load_zheng(i)+load_5(i);
else
load_fu(i)=load_fu(i)+load_5(i);
end
end
for i=1:48
if load_6(i)>=0
load_zheng(i)=load_zheng(i)+load_6(i);
else
load_fu(i)=load_fu(i)+load_6(i);
end
end
for i=1:48
if load_7(i)>=0
load_zheng(i)=load_zheng(i)+load_7(i);
else
load_fu(i)=load_fu(i)+load_7(i);
end
end
for i=1:48
if load_8(i)>=0
load_zheng(i)=load_zheng(i)+load_8(i);
else
load_fu(i)=load_fu(i)+load_8(i);
end
end
for i=1:48
if load_9(i)>=0
load_zheng(i)=load_zheng(i)+load_9(i);
else
load_fu(i)=load_fu(i)+load_9(i);
end
end
for i=1:48
if load_10(i)>=0
load_zheng(i)=load_zheng(i)+load_10(i);
else
load_fu(i)=load_fu(i)+load_10(i);
end
end
for i=1:48
if load_11(i)>=0
load_zheng(i)=load_zheng(i)+load_11(i);
else
load_fu(i)=load_fu(i)+load_11(i);
end
end
for i=1:48
if load_12(i)>=0
load_zheng(i)=load_zheng(i)+load_12(i);
else
load_fu(i)=load_fu(i)+load_12(i);
end
end
for i=1:48
if load_13(i)>=0
load_zheng(i)=load_zheng(i)+load_13(i);
else
load_fu(i)=load_fu(i)+load_13(i);
end
end
for i=1:48
if load_14(i)>=0
load_zheng(i)=load_zheng(i)+load_14(i);
else
load_fu(i)=load_fu(i)+load_14(i);
end
end
for i=1:48
if load_15(i)>=0
load_zheng(i)=load_zheng(i)+load_15(i);
else
load_fu(i)=load_fu(i)+load_15(i);
end
end
for i=1:48
if load_16(i)>=0
load_zheng(i)=load_zheng(i)+load_16(i);
else
load_fu(i)=load_fu(i)+load_16(i);
end
end
for i=1:48
if load_17(i)>=0
load_zheng(i)=load_zheng(i)+load_17(i);
else
load_fu(i)=load_fu(i)+load_17(i);
end
end
for i=1:48
if load_18(i)>=0
load_zheng(i)=load_zheng(i)+load_18(i);
else
load_fu(i)=load_fu(i)+load_18(i);
end
end
for i=1:48
if load_19(i)>=0
load_zheng(i)=load_zheng(i)+load_19(i);
else
load_fu(i)=load_fu(i)+load_19(i);
end
end
load_dis=load_fu(14:32);
% 计算不可调度车辆负荷
%充电时长
T=zeros(31,1);%充电时长储存50-19
% 理论充电时长计算
for i=1:31
T(i)=60*E_car*(soc_max-diaodu_soc_(i))/(elta_car*P_chscar);%理论充电时间
end
% 实际充电时长计算
for i=1:31
if (diaodu_caroff_(i)-diaodu_carin_(i))>T(i)
T(i)=T(i);
else
T(i)=(diaodu_caroff_(i)-diaodu_carin_(i));
end
end
pcha=zeros(1440,1);%负荷储存
for i=1:31
if (diaodu_carin_(i)+T(i))<=1440
for m=fix(diaodu_carin_(i)):fix(diaodu_carin_(i)+T(i))
pcha(m)=P_chscar+pcha(m);
end
else
for n=fix(diaodu_carin_(i)):1440
pcha(n)=P_chscar+pcha(n);
end
for j=1:((diaodu_carin_(i)+T(i))-1440)
pcha(j)=P_chscar+pcha(j);
end
end
end
load=zeros(48,1);
%负荷累加
for i=1:48
- 1
- 2
- 3
- 4
- 5
- 6
前往页