(Matlab实现)基于蒙特卡诺和拉格朗日乘子法的电动车调度【有序、无序充放电】
创始人
2024-05-10 17:13:28
0

目录

1 概述

2 蒙特卡洛模拟方法介绍

3 拉格朗日乘子法

4 规模化电动汽车充电负荷预测计算方法

5 Matlab代码实现

1 概述

电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月,国务院发布加快EV充电基础设施建设的指导意见,指出到2020年充电基础设施能满足500万辆EV充电需求,预计未来几年我国EV的保有量将大幅增长。然而,规模化EV的无序充电会加大电网负荷的峰谷差,并对电力系统的规划、配电网的电能质量和经济运行以及稳定性带来显著的影响,反之.对EV的充电行为进行有序优化控制,充分发挥EV作为分布式储能元件的优势,能够实现削峰填谷、平抑可再生能源出力波动的功能,并为电网提供调峰、调频等辅助服务。本文利用蒙特卡洛模拟法和拉格朗日松弛法模拟出电动汽车负荷曲线,同时求解出无序充电功率曲线,作为有序充电曲线的对比基础。

2 蒙特卡洛模拟方法介绍

计算机模拟中的蒙特卡洛法也被称为随机抽样技术或统计检验方法,该方法最重要的特点是它是一种基于概率统计理论的方法。随着科学技术的发展和电子计算机的发明,蒙特卡洛法以其描述物理发展特点和物理实验过程的优点,在各个领域得到了广泛的应用。

在这篇文章有讲解和代码:蒙特卡罗法(随机模拟法)

蒙特卡洛模拟程序结构非常简单,随机数带入公式计算出结果,虽然没有毕竟最优的过程,模拟次数较少时很难得到满意的结果,而蒙特卡罗方法能够真实地模拟实际问题发生过程,故解决问题也比较实际,这也因此在交通运输、机械仿真、物理实验等常见到蒙特卡洛模拟步骤。

蒙特卡洛模拟用法主要是嵌套于仿真模型中,虽然在比赛中不常用,一般在工业生产中,常会遇到拟定几个方案,这时就可以根据不同的模型及规则条件求得结果的分布情况,以评价方案的优劣。
 

 在这篇文章用Matlab实现:整数规划蒙特卡洛模拟(Matlab实现)


3 拉格朗日乘子法

之前在高中就有一直听到拉格朗日,拉格朗日是一个很牛的大佬。在学习SVM的时候,居然也见到了他的身影。让我们了解一下拉格朗日乘子法的具体内容。

 在学习过程中,有时会遇到一些最优化问题。这里提到的最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值(无论最大最小值都可以转化为最小值),二者均是求解最优化问题的方法不同之处在于应用的情形不同。

一般情况下,最优化问题会碰到下面三种:

无约束条件
等式约束条件
不等式约束条件

基本的拉格朗日乘子法就是求函数f(x_{1},x_{2},....)在约束条件g(x_{1},x_{2},.....)下的极值的方法。其主要思想是将约束条件函数与原函数联立,从而求出使原函数取得极值的各个变量的解。拉格朗日乘子法是在支持向量机为了更好的求解间距的方法。

在求解最优问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法,在有等式约束时使用拉格朗日乘子法,在有不等式约束的时候使用KTT条件。

这篇文章对拉格朗日乘子法有所总结和应用:

(非线性规划Python)计及动态约束及节能减排环保要求的经济调度


4 规模化电动汽车充电负荷预测计算方法

经过原理及模型研究,假定各用途电动汽车均处于无序充电的状态,具体的计算方法如下:



(1)计算车辆的初始荷电状态和充电所需时长。电动汽车动力电池的剩余电量直接关系到电动汽车的充电所需时间。对于电动汽车的充电所需时间,文章运用电动汽车动力电池的荷电状态( state of charge,SOC)来进行计算。假设电池消耗电量与行驶距离成正比,d​为已行驶距离,d_{m}​为电动模式下最大续航里程。此处假定每种不同用途的电动汽车每公里的耗电量相同,最后一次出行结束时的剩余电量由下式计算所得:


式中SOC1为完成充电时的电池荷电状态,SOC2为上一次完成充电时的电池荷电状态。

计算电动汽车充电所需时间T,可以通过将电池容量C、起始荷电状态SOC和充电功率Р求
得,具体公式如下:


(2)计算某一种用途电动汽车在第i个充电负荷计算点时的总充电负荷。本文将每天计算为1440分钟,每15分钟计算一次充电负荷,共计96个充电负荷计算点,计算预测北京市各用途的电动汽车充电负荷,得到各用途电动汽车充电负荷。某一种用途电动汽车的充电负荷的预测计算方法如下:



其中t_{1}​表示第n 台某一种用途电动汽车结束充电的时刻,t_{2}​表示第n台某种用途电动汽车开始充电的时刻,T表示第n台某种用途电动汽车充电所需时间。某一种用途电动汽车在第 i个充电负荷计算点时的总充电负荷P_{n,i}​可由以下方法计算得到

 

P_{t_{i}}​表示第n台电动汽车在第i个充电负荷计算点时的充电负荷,N表示某一种用途电动汽车的保有量。
(3)通过叠加各用途电动汽车的充电负荷得到总的电动汽车充电负荷。第i个充电负荷计算点的总电动汽车充电负荷的计算方式如公式(4-6)所示:


 

式中,Nc,Nt,Nb分别表示在i时刻充电的电动私家车、电动出租车、电动公交车的数量;P_{nc,i}​,P_{nt,i}​,P_{nb,i}​分别表示在i时刻电动私家车、电动出租车、电动公交车的充电负荷大小。

部分代码:

%利用蒙特卡洛模拟法模拟出电动汽车负荷曲线
%同时求解出无序充电功率曲线,作为有序充电曲线的对比基础
clc;clear;
Ntest=100;%仿真程序 车辆数
SOC_end=0.9;
Pbiao=15;%充电功率为15kW
nn=0.9;%充电效率为0.9
Pcharge=Pbiao*nn;%实际充电的功率
Cbattery=30;                     %电池容量
distance=unifrnd(30,80,1,Ntest);     %Ntest辆车 每辆车的单程距离
judge=0.15*distance/Cbattery;            %单程耗电SOCSOC=rand(1,Ntest).*(1-judge)+judge;          %初始SOC......%解有序充电模型%分时电价赋值price=zeros(1,96);for j=1:33-1price(j)=0.365;%谷电价0.365元/kWh endfor j=33:4*8+1-1price(j)=0.869;%峰电价   元/kWh endfor j=4*8+1:4*17+1-1price(j)=0.687;%平电价   元/kWh endfor j=4*17+1:4*21+1-1price(j)=0.869;%峰电价   元/kWh endfor j=4*21+1:4*24+1-1price(j)=0.687;%平电价   元/kWh enddeltaT=15/60;%15min折算成小时cost=0;%购电电价S=zeros(Ntest,96);%充电开始时间折算成96点形式J1=zeros(1,Ntest);J2=zeros(1,Ntest);J3=zeros(1,Ntest);J4=zeros(1,Ntest);for temp=1:NtestJ1(temp) =round(4*time1(temp)+1);J2(temp) =round(4*time2(temp)+1);J3(temp) =round(4*time3(temp)+1);J4(temp) =round(4*time4(temp)+1);end%是否充电记录数组 1表示充电yesfirst=zeros(1,Ntest);yessec=zeros(1,Ntest);
%S(ij)赋初值 也就是无序充电初值 for i=1:Ntest%到达单位后的充电情况if(J2(i)-J1(i)~=0)yesfirst(1,i)=1;jstart=J1(i);jend=J2(i);for temp=jstart:jendS(i,temp)=1;endend.......
lambda=0.1*ones(1,96);%拉格朗日乘子初值v=1;obj=10000000000000000;%初值足够大jingdu=0.1;a=1;b=0.1;die=100;while((v<4)&&(die>jingdu))L=zeros(1,Ntest);x=zeros(1,96); SS=zeros(Ntest,96);%执行智能充电单元run('ZN.m');  myk=1/(a+b*v);temp=5087*ones(1,96);mybsload=bsload(1,1:96);myh=mybsload+Pcharge*sum(S_yx)-temp;Tlambda=lambda;lambda=lambda+myk*myh/norm(myh);die=norm(lambda-Tlambda,2)/norm(Tlambda);v=v+1;endPSS=zeros(1,97);PSS(1,1:96)=sum(SS)*Pbiao;PSS(1,97)=PSS(1,1);Syouxu=bsload+PSS;xt=0:0.25:24;plot(xt,bsload,xt,Swuxu,'r:',xt,Syouxu,'g');legend('电网原负荷','叠加无序充电负荷后','叠加有序充电负荷后');xlabel('时间/h');ylabel('负荷/kW');

5 Matlab代码实现

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...