%% ---------------------------------------------备注-------------------------
%---------------本程序为单微网电动汽车的调度,将电动汽车所有约束条件与电价统一采用粒子群进行优化
%---------------电价采用粒子群更新电价,作为与分时电价的对比;
%---------------程序修改时间:2019-3-18 14:39
%---------------编写人:xiaobin
%%
clc;
clear;
% close all;
format long;
tic;
%% -----------------------------电动汽车运行参数------------------------------
EV_Num=50;%电动汽车的数量
Time_Size=24;%调度时段数
EV_Battery=33;%电动汽车电池容量,33kW
State_Max_Transformation=24; %最大转换次数
Vehicle_Charging_MaxPower=3; %电动汽车充电最大功率
Vehicle_Discharging_MaxPower=3; %电动汽车放电最大功率
EV_SocLowest=0.1;%每辆电动汽车电池荷电状态的下限
Max_Soc=1; %荷电状态的最大值为1
Max_Price=2; %优化调度中的最大电价
Min_Price=0.4; %优化调度中的最小电价
Grid_PowerMax=1096;
%% ---------------------------电动汽车需要用的的数据--------------------------
V_to_G_Time=xlsread('电动汽车出行参数表.xls','EV_Arri_Leav_Time');%储存每辆电动汽车接入电网和离开电网的调度时刻
Vehicle_Soc=xlsread('电动汽车出行参数表.xls','Vehicle_Soc');%储存每辆电动汽车接入电网和离开电网的荷电状态
Vehicle_Index=xlsread('电动汽车出行参数表.xls','Vehicle_Index');%读取在各个时刻接入电网的电动汽车标号
Time_Index=xlsread('电动汽车出行参数表.xls','Time_Index');%读取在各个时刻接入电网的电动汽车标号
EV_timeNumber=xlsread('电动汽车出行参数表.xls','EV_timeNumber');%读取在各个时刻接入电网的电动汽车标号
%% ------------------------微电网参数--------------------------------------
% P_Wind=[140.29,125.64,224.41,175.49,124.56,250,106.25,204.14,144.06,218.44,124.77,114.66,...
% 55.77,37.21,33.06,16.35,53.45,120.28,56.82,23.43,99.55,6.97,55.64,63.8];%风电出力
Basic_load=[135.348,125.861,116.382,108.487,119.696,175.462,240.786,248.807,248.871,268.034,306.303,377.987,...
335.081,287.402,276.325,324.136,446.749,469.099,475.527,485.147,447.013,365.91,321.419,230.767]*2;%选自康师兄推荐文献数据
Grid_Price=zeros(Time_Size,1);%储存配电网分时电价
Microgrid_Price=zeros(Time_Size,1);%储存配电网分时电价
%设置微电网的分时电价
for loop=1:Time_Size
if loop>=1 && loop<8 %0:00-7:00
Microgrid_Price(loop)=0.4;
elseif loop>=8 && loop<12 %7:00-12:00
Microgrid_Price(loop)=2.0;
elseif loop>=12 && loop<14 %12:00-19:00
Microgrid_Price(loop)=1.2;
elseif loop>=14 && loop<17 %19:00-23:00
Microgrid_Price(loop)=2.0;
elseif loop>=17 && loop<21 %23:00-24:00
Microgrid_Price(loop)=2.0;
elseif loop>=21 && loop<=24 %23:00-24:00
Microgrid_Price(loop)=1.2;
end
end
%设置配电网的分时电价
for loop=1:Time_Size
if loop>=1 && loop<8 %0:00-8:00
Grid_Price(loop)=0.365;
elseif loop>=8 && loop<12 %8:00-12:00
Grid_Price(loop)=0.869;
elseif loop>=12 && loop<14 %12:00-14:00
Grid_Price(loop)=0.687;
elseif loop>=14 && loop<17 %14:00-17:00
Grid_Price(loop)=0.687;
elseif loop>=17 && loop<21 %17:00-21:00
Grid_Price(loop)=0.869;
elseif loop>=21 && loop<=24 %21:00-24:00
Grid_Price(loop)=0.687;
end
end
%% -------------------------粒子群参数---------------------------------------
Max_Iteration=50; %迭代次数为100
Particle_Size=50; %粒子数量为50
Vector=7; %每个粒子的向量数 第1-7列分别为:
%------------第1列 第2列 第3列 第4列 第5列 第6列 第7列
%----------放电功率 充电功率 主网交换功率 荷电状态 放电标志位 充电标志位 每时刻的电价
Pop=zeros(Time_Size,Vector,EV_Num,Particle_Size);%定义所有的粒子元素
Pop_Max=zeros(Time_Size,Vector,EV_Num,Particle_Size); %储存所有的粒子元素的最大值
Pop_Min=zeros(Time_Size,Vector,EV_Num,Particle_Size); %储存所有的粒子元素的最小值
Fitness=zeros(Particle_Size,4);%储存每个粒子的适应度函数值,行数为粒子数,列数为每个粒子的4个指标 分别为:1.微电网与配电网的总波动情况 2.购电成本 3.寿命损耗 4.前三项之和
Update_Index=[1,2,7];%储存需要更新向量的标号,即一起更新的有放电功率、充电功率、电价。
Vmax=zeros(Time_Size,Vector,EV_Num,Particle_Size);%储存速度的最大值
Vmin=zeros(Time_Size,Vector,EV_Num,Particle_Size);%储存速度的最小值
Velocity=zeros(Time_Size,Vector,EV_Num,Particle_Size);%储存数组
Velocity_Coefficient=0.1;%速度更新系数
W_Max=0.9;%惯性系数最大值
W_Min=0.4;%惯性系数最小值
C_Individual=0.5;%个体最优的学习因子
C_Global=1.5; %全局最优的学习因子
Storage_Iteration_Optimal=zeros(1,Max_Iteration);
Stop_flag=0;
%% 初始化 速度 的最值
for loop1=1:1:Particle_Size
for loop2=1:1:EV_Num
%% 提取出每辆电动汽车的接入电网和离开电网时间
EV_ArriveTime_Index=V_to_G_Time(1,loop2);%提取出每辆电动汽车的接入电网时间
EV_LeaveTime_Index=V_to_G_Time(2,loop2);%提取出每辆电动汽车的离开电网时间
if EV_ArriveTime_Index<EV_LeaveTime_Index %若接入电网时间小于离开电网时间
for loop3=EV_ArriveTime_Index:EV_LeaveTime_Index
Vmax(loop3,1,loop2,loop1)=Velocity_Coefficient*Vehicle_Discharging_MaxPower;%放电功率更新速度的最大值
Vmin(loop3,1,loop2,loop1)=-Velocity_Coefficient*Vehicle_Discharging_MaxPower;%放电功率更新速度的最小值
Velocity(loop3,1,loop2,loop1)=Vmin(loop3,1,loop2,loop1)+(Vmax(loop3,1,loop2,loop1) - Vmin(loop3,1,loop2,loop1))*rand;%产生放电功率的速度
Vmax(loop3,2,loop2,loop1)=Velocity_Coefficient*Vehicle_Charging_MaxPower;%充电功率更新速度的最大值
Vmin(loop3,2,loop2,loop1)=-Velocity_Coefficient*Vehicle_Charging_MaxPower;%充电功率更新速度的最小值
Velocity(loop3,2,loop2,loop1)=Vmin(loop3,2,loop2,loop1)+(Vmax(loop3,2,loop2,loop1) - Vmin(loop3,2,loop2,loop1))*rand;%产生充电功率的速度
% Vmax(loop3,7,loop2,loop1)=Velocity_Coefficient*(Max_Soc-Min_Price);%电价更新速度的最大值
% Vmin(loop3,7,loop2,loop1)=-Velocity_Coefficient*(Max_Soc-Min_Price);%电价更新速度的最小值
% Velocity(loop3,7,loop2,loop1)=Vmin(loop3,7,loop2,loop1)+(Vmax(loop3,7,loop2,loop1) - Vmin(loop3,7,loop2,loop1))*rand;%产生电价的速度
end
else%接入电网时间大于离开电网时间 ,分为三种情况
% 1.从接入电网时刻到调度时段末端(本程序中为第24时刻)的约束条件
% 2.调度时段末端(本程序为第24时刻)的约束条件
% 3.从1时刻到离开电网时刻的的约束条件
for loop3=EV_ArriveTime_Index:Time_Size
Vmax(loop3,1,loop2,loop1)=Velocity_Coefficient*Vehicle_Discharging_MaxPower;%放电功率更新速度的最大值
Vmin(loop3,1,loop2,loop1)=-Velocity_Coefficient*Vehicle_Discharging_MaxPower;%放电功率更新速度的最小值
Velocity(loop3,1,loop2,loop1)=Vmin(loop3,1,loop2,loop1)+(Vmax(loop3,1,loop2,loop1) - Vmin(loop3,1,loop2,loop1))*rand;%产生放电功率的速度
Vmax(loop3,2,loop2,loop1)=Velocity_Coefficient*Vehicle_Charging_MaxPower;%充电功率更新速度的最大值
Vmin(loop3,2,loop2,loop1)=-Velocity_Coefficient*Vehicle_Charging_MaxPower;%充电功率更新速度的最小值
Velocity(loop3,2,loop2,loop1)=Vmin(loop3,2,loop2,loop1)+(Vmax(loop3,2,loop2,loop1) - Vmin(loop3,2,loop2,loop1))*rand;%产生充电功率的速度
% Vmax(loop3,7,loop2,loop1)=Velocity_Coefficient*(Max_Soc-Min_Price);%电价更新速度的最大值
% Vmin(loop3,7,loop2,loop1)=-Velocity_Coefficient*(Max_Soc-Min_Price);%电价更新速度的最小值
% Velocity(loop3,7,loop2,loop1)=Vmin(loop3,7,loop2,loop1)+(Vmax(loop3,7,loop2,loop1) - Vmin(loop3,7,loop2,loop1))*rand;%产生电价的速度
end
for loop3=1:EV_LeaveTime_Index
Vmax(loop3,
- 1
- 2
前往页