% clc
% clear
%按照流程图进行蒙特卡洛的电车负荷计算
%先是初始化,该配电网区域的电车日出行总数
N_EV = 2000;
%%
%利用蒙特卡洛方法生成多车行驶里程
km;
%首先,调用函数km
%生成 对数正态分布去生成日行驶里程
for i = 1:N_EV
p_km = rand();
A=find(Fs_km-p_km>0 );
KM(i) = A(1);
end
figure(3)
plot(KM,'*');
title('蒙特卡洛生成多电车当日行驶里程');
xlabel( '电车序号');
ylabel( '当日行驶里程(km)');
%根据各车的行驶里程除以7.5计算出各自所需要的充电量kwh
W = KM / 7.5;
figure(4)
plot(W,'*');
title('蒙特卡洛生成多电车当日行驶后所需充电量');
xlabel( '电车序号');
ylabel( '当日行驶后所需充电量(kWh)');
%根据各车充电量,除以8.5可以得到各车所需要的充电时间。
T = W/8.5;
figure(5)
plot(T,'*');
title('蒙特卡洛生成多电车当日行驶后所需充电时长');
xlabel( '电车序号');
ylabel( '多电车当日行驶后所需充电时长(h)');
%%
%下面是利用蒙特卡洛法,随机生成各车充电开始时刻
% 几个步骤
% 概率密度得到概率分布
% 随机生成rand()与概率分布比较,利用find得到开始时刻
% 处理24这个数值,当发现位置>= 25时,位置改为x-24,而后各个位置赋值8.5
% 最后是把700量车充电负荷累加,观察总电车负荷曲线趋势
ChargeStartTime;
%生成 对数正态分布去生成开始充电的时间
for i = 1:N_EV
p_C = rand();
B=find(Fs_C-p_C >0 );
TC(i) = B(1);
end
figure(8)
plot(TC,'*');
title('蒙特卡洛生成多电车充电开始时刻');
xlabel( '电车序号');
ylabel( '充电开始时刻');
%%
%下面将开始时刻,与充电时长-1叠加,得到的是未修正的充电开始结束时刻位置
TC_Start = TC;
TC_End = ceil( TC + T -1 ) ;
%先给充电功率赋初值
P_Charge = zeros( N_EV , 48 ) ;
P_Charge_End = ( T - floor( T) )*8.5 ; %最后一个时刻的功率比8.5小
for i =1 : N_EV
P_Charge(i,TC_Start(i): TC_End(i)-1 ) = 8.5;
P_Charge(i, TC_End(i) ) = P_Charge_End(i);
end
P_Charge_EV = P_Charge(:,1:24 );
P_Charge_EV = P_Charge_EV + P_Charge(:,25:48 );
P_Charge_EV_Sum = sum( P_Charge_EV ,1);
figure(9)
plot(P_Charge_EV_Sum);
title('电车充电总功率');
xlabel( '时刻');
ylabel( '电车充电总功率');
% D=P_Charge_EV_Sum;
% DD=P_Charge_EV_Sum;
DDD=P_Charge_EV_Sum;
% figure(10)
% plot(D);
% hold on
% plot(DD);
% hold on
% plot(DDD);
% title('电车充电总功率');
% xlabel( '时刻');
% ylabel( '电车充电总功率');