程序名称:基于蒙特卡洛抽样的电动汽车充电负荷计算
实现平台:matlab
代码简介:代码主要主要研究的的是大规模电动汽车的蒙特卡洛模拟,具体包括,首先抽样生成充电功率、电池容量以及电动汽车起始充电时间以及每日行使里程的概率密度分布,在此基础上,进一步计算基于蒙特卡洛模拟法的电动汽车充放电负荷的计算,每一部分的代码都在分块的子文件夹里,代码非常清晰,思路也很明朗,非常好懂,质量很高!代码注释详实,适合参考学习,出图效果非常棒,程序非常精品! 附带参考文献。
参考文献:《主动配电网多源协同运行优化研究_乔珊》第3.2节,完全复现
代码获取方式:【代码分享】基于蒙特卡洛抽样的电动汽车充电负荷计算
【转发收藏】2024年电力系统方向最新研究热点总结/征稿专辑(1)
近期推文汇总/电力系统预测与优化方向论文推荐与matlab代码分享
【转发收藏】优化调度模型使用Gurobi 加速混合整数规划问题求解速度的方法
运行结果展示
% 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( '电车充电总功率');