V2G模型
基于粒子群PSO算法的风光发电与电动汽车充放电协同优化调度matlab程序_电动汽车v2g
1.针对大规模电动汽车无序接入电网给电力系统带来的负荷压力问题,提出一种含不确定性电源的电动汽车有序充放电控制策略。首先,采用电动汽车与电网(V2G,Vehicle-to-grid)互动模式解决电网中光伏发电和风力发电的不稳定性与易波动性。V2G 描述的是电动汽车与电网的互动。当电动汽车需要充电时,通过风光发电机组给电网供电得到电能;当电动汽车闲置时,车载电池组的电流流向电网。 V2G 技术有利于平抑电网负荷波动以及减少电动汽车用户充电成本。其工作原理如图1所示。
2.电动汽车入网、离网时刻近似服从对数正态分布。对于出行时刻,服从正态分布,离开园区时间如下:
对于返程时刻,也服从正态分布,到达园区时间如下:
其中,x 为时间变量;期望值ue=16.47, us=8.43 ;标准差 σe=3.41, σs=2.55 。
3.电动汽车充电负荷行为不仅与电动汽车入网的数,还与日行驶距离有关。将美国交通局得到的传统汽车出行数据拟合(图 3),即可得出电动汽车日行驶里程规律,其服从近似正态分布,其概率密度函数为:
其中d 为行驶距离,um ,σm 分别取 13.7 和 3.9。
4.目标函数:
当处于电网负荷低谷期,可用于电动汽车充电;当处于负荷高峰期,可利用电动汽车车载电池放电。提出了风光发电及电动汽车优化调度模型,平抑效果可由日负荷均方差表示,日负荷均方差越小表示负荷波动越平稳,反之亦然。日负荷方差F为表示如下:
5.约束
(1)充放电时的功率约束:
(2)电池剩余电量的约束:
(4)动力电池 SOC 约束:
(5)可调度时间约束:
6.算例
(1)无序时园区的负荷曲线如下
(2)50辆电动汽车参数:
程序如下:
%%
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;
%% 确定变量
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可调度
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;
。。。。。。。略
程序运行计算结果: