当前位置: 首页 > news >正文

基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(PythonMatlab实现)

 💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学习和深度学习。目前熟悉python网页爬虫、机器学习、群智能算法、深度学习的相关内容。希望将计算机和电网有效结合!⭐️⭐️⭐️

                          

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

 0 概述

1 蒙特卡洛模拟方法介绍

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

3 流程图

4 运行结果

 5 结果分析

6 参考文献

7 Matlab代码和Python代码


 0 概述

本文首先介绍蒙特卡洛模拟方法,再结合蒙特卡洛模拟方法、电动汽车充电负荷的影响因素和行驶数据及参数,确立基于蒙特卡洛法的规模化电动汽车充电负荷预测计算方法。根据北京市各用途的电动汽车未来保有量预测数据,对北京市各用途的电动汽车进行负荷预测,得到负荷曲线,并研究负荷曲线和对电网的影响结果。

1 蒙特卡洛模拟方法介绍

    计算机模拟中的蒙特卡洛法也被称为随机抽样技术或统计检验方法,该方法最重要的特点是它是一种基于概率统计理论的方法。随着科学技术的发展和电子计算机的发明,蒙特卡洛法以其描述物理发展特点和物理实验过程的优点,在各个领域得到了广泛的应用。
蒙特卡洛法将目前所解决的问题当作是一种随机事件的概率,也可以将其看作是随机事件的期望值。按照某种实验的方式,通过某随机事件的出现频率来计算该事件的概率,或者是求得其数字特征,将实验所得的结论作为问题的解。采用蒙特卡洛法,在进行模拟计算时一般按照以下步骤进行,若所需解决的问题存在随机性特征,则就能将这个概率过程更加准确的描述和模拟,若问题并不具备随机性,反而是一种确定性问题,就必须认为建立相应的概率过程,而某些相关参量恰好就是该问题的解,整个过程就是将某问题的确定性改造为随机性。
   在建立这种概率模型之后,可将不同的概率模型视为有不同类型的概率分布组成,由此就可获得己知概率分布的随机变量,如此就能成为可以进行蒙特卡罗方法模拟实验的主要方式,所以这种方法也是一种随机抽样。蒙特卡罗模拟的实现便是在已知概率分布所导致的随机数基础上进行的。
一般在建立这种概率模型后可以从中抽样,也就是实现模拟实验,在此之后还应当将其中某个随机变量确定下来,即所需解决问题的解,被称为无偏估计。通过获得多种估计量,例如方差等,就能够通过模拟方法获得问题的解。
   对于本文的研究,依据不同用途电动汽车影响因素的分布函数和设定参数,采用蒙特卡洛法,对各用途电动汽车的日行驶里程、起始充电时间概率分布参数进行随机抽样,计算初始荷电状态和和充电所需时长,进而预测得出各类型的电动汽车充电负荷曲线,最后通过叠加各用途电动汽车的充电负荷曲线得出总的充电负荷曲线。
 

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

根据对各用途电动汽车的充电影响因素进行研究得出了基本参数,包括充电时段起始充电容量分布和起始时间分布等,如表1所示。

 

该表给出了各用途电动汽车在建立充电负荷预测计算时需要的参数:

电动公交车一般进行常规充电,日行驶里程数和起始充电时间服从均匀分布;

电动出租车一般进行快速充电,日行驶里程数服从均匀分布,起始充电时间服从正态随机分布;

电动私家车进行常规充电和快速充电两种补给电能方式,日行驶里程数服从指数分布,起始充电时间服从正态随机分布。在常规充电和快速充电时,不同类型电动汽车的充电功率不尽相同,电动公交车的充电功率近似为电动私家车的五倍,电动出租车的充电功率近似为电动私家车的两倍。

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

(1)根据预测出的北京市各用途电动汽车的保有量,确定电动汽车的市场规模如表2所示。


(2)依据不同用途电动汽车影响因素的分布函数和设定参数,如表1所示,采用蒙特卡洛模拟方法进行仿真,随机抽取日期类型、电动汽车起始充电时间和日行驶里程。
(3)计算车辆的初始荷电状态和充电所需时长。电动汽车动力电池的剩余电量直接关系到电动汽车的充电所需时间。对于电动汽车的充电所需时间,文章运用电动汽车动力电池的荷电状态( state of charge,SOC)来进行计算。假设电池消耗电量与行驶距离成正比,d为已行驶距离,d_{m}为电动模式下最大续航里程。此处假定每种不同用途的电动汽车每公里的耗电量相同,最后一次出行结束时的剩余电量由下式计算所得:【公式比较重要,纯手打】

                 S O C_{1}=\left(S O C_{2}-\frac{d}{d_{m}}\right) \times 100 \%
式中SOC1为完成充电时的电池荷电状态,SOC2为上一次完成充电时的电池荷电状态。

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

                 T=\frac{C(1-S O C)}{P}
(4)计算某一种用途电动汽车在第i个充电负荷计算点时的总充电负荷。本文将每天计算为1440分钟,每15分钟计算一次充电负荷,共计96个充电负荷计算点,计算预测北京市各用途的电动汽车充电负荷,得到各用途电动汽车充电负荷。某一种用途电动汽车的充电负荷的预测计算方法如下:

                  t_{1}=t_{2}+T

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

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

    P_{n, i}=\sum_{1}^{N} P_{t_{i}}P_{i}=\sum_{n c=1}^{N c} P_{n c, i}+\sum_{n t=1}^{N t} P_{n t, i}+\sum_{n b=1}^{N b} P_{n b, i}

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

3 流程图

4 运行结果

部分代码:

%% 私家车负荷预测
for n=1:1:NPt1=zeros(1,1440);  %周一到周日for i=1:1:N1Ts=unifrnd( 1,7,1,1);Ts=round(Ts);%% ============工作日情况============if(Ts>=1&&Ts<=5) %Mon---Frids=exprnd(50.00,1,1);  %指数分布X~E (0.020);1/0.02=50[期望E(x)]if(ds>=180)ds=180;endif(ds<=0)ds=0;endsoc1=1-(ds./dm(1)); %(4-1)Ts1=unifrnd(1,1440,1,1);%% ============工作日情况快充===========if(Ts1>=420&&Ts1<=1080) %时间7:00--18:00ts2=unifrnd(420,1080,1,1);  %均匀分布:[420,1080]ts2=round(ts2); %对充电时长取整ts3=( 1-soc1).*40*60/Ps(2);    %Tts3=round(ts3); %对充电时长取整k=ts2+ts3;  %(4-3)t1=t2+Tif k>1440   %如果充电结束时间大于24时k=k-1440;Pt1(1:k)=Pt1(1:k)+Ps(2); %# 清晨充电Pt1(ts2:1440)=Pt1(ts2:1440)+Ps(2); %晚上24时前充电else      %如果充电结束时间没有过24时,无需在清晨充电Pt1(ts2:k)=Pt1(ts2:k)+Ps(2);  % 充电时段加上充电功率end%% ============工作日情况慢充===========else   %时间18:00--7:00ts2=normrnd( 1150,100,1,1);  %N (1150,100^2)ts2=round(ts2);if(ts2<=1)ts2=1;endts1=(1-soc1).*40*60/Ps(1);ts1=round(ts1);k=ts1+ts2;if k>1440k=k-1440;Pt1(1:k)=Pt1(1:k)+Ps(1);Pt1(ts2:1440)=Pt1(ts2:1440)+Ps(1);elsePt1(ts2:k)=Pt1(ts2:k)+Ps(1);endendend%% =======非工作日情况=========if(Ts>=6&&Ts<=7)ds=exprnd(55.55,1,1);  %X~E(0.018);1/0.018=55.55if (ds>=180)ds=180;endif (ds<=0)ds=0;endsoc1=1-ds./dm(1);Ts1=unifrnd(1,1440,1,1);%% ======非工作日情况快充=====if(Ts1>=420&&Ts1<=1080)  %时间7:00--18:00ts2=unifrnd(420,1080,1,1);  %均匀分布:[420,1080]ts2=round(ts2);ts3=(1-soc1).*40*60/Ps(2);ts3=round(ts3);k=ts2+ts3;if k>1440k=k-1440;Pt1(1:k)=Ptl(1:k)+Ps(2);Pt1(ts2:1440)=Pt1(ts2:1440)+Ps(2);elsePt1(ts2:k)=Pt1(ts2:k)+Ps(2);end%% ======非工作日情况慢充=========else   %时间18:00--7:00ts2=normrnd(1150,150,1,1);ts2=round(ts2);if (ts2<=1)ts2=l;endts1=(1-soc1).*40*60/Ps(1);ts1=round(ts1);k=ts1+ts2;if k>1440k=k-1440;Pt1(1:k)=Pt1(1:k)+Ps(1);Pt1(ts2:1440)=Pt1(ts2:1440)+Ps(1);elsePt1(ts2:k)=Pt1(ts2:k)+Ps(1);endendendPt1(1:1440)=Pt1(1:1440);end%% 公交车负荷预测Pt2=zeros(1,1440);for i=1:1:N2dg=unifrnd(150,200,1,1);  %日行驶里程数%% ========上下限限制======if(dg>=200)dg=200;endif (dg<-0)dg=0;endsoc2=1-(dg./dm(2));tg1=(1-soc1).*300*60/Pg;tg1=round(tg1);tg2=unifrnd(1,1440,1,1);tg2=round(tg2);kg=tg1+tg2;if (kg>1440)kg=kg-1440;Pt2(1:kg)=Pt2(1:kg)+Pg;Pt2(tg2:1440)=Pt2(tg2:1440)+Pg;elsePt2(tg2:kg)=Pt2(tg2:kg)+Pg;endPt2(1:1440)=Pt2(1:1440);end%% ========结束==========

 5 结果分析


研究分析北京市各用途电动汽车充电负荷曲线,我们发现北京市总充电负荷曲线类似于北京市电动私家车的充电负荷曲线,正是由于电动私家车在总电动汽车保有量中占比最大,对总负荷的影响最大。而电动公交车的充电起始时间较为均匀,因此电动公交车的充电负荷曲线分布较为平均,曲线动荡主要来自不同站点的出发时间和到站时间的不同。电动出租车的充电负荷主要集中在电动出租车的常规充电时间节点上,因此电动出租车的充电负荷曲线波动也处于常规充电时间的节点上。

6 参考文献

[1]郑晶晶,闫志杰,李伟,王伟,彭飞云,董海鹰.基于蒙特卡洛法的电动汽车无序充电对电网的影响分析[J].电气传动自动化,2019,41(05):1-5.

[2]蒋林洳,万伟江,丁霄寅,李涛永,张元星,张晶.一种基于直接蒙特卡洛法的电动汽车充电负荷模型[J].供用电,2018,35(04):20-25+13.DOI:10.19421/j.cnki.1006-6357.2018.04.004.

[3]李冰轩. 基于蒙特卡洛法的规模化电动汽车充电负荷预测研究[D].宁夏大学,2018.

[4]陈鹏,孟庆海,赵彦锦.基于蒙特卡洛法的电动汽车充电负荷计算[J].电气工程学报,2016,11(11):40-46.

7 Matlab代码和Python代码

相关文章:

基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(PythonMatlab实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…...

Selenium常用API详解,从入门到进阶(全套)

目录 1、打开页面 2、查找页面元素 3、输入文本 4、点击操作 5、提交操作 6、清除文本 7、获取文本、属性 8、获取页面的标题和URL 9、窗口 9.1、设置窗口大小 9.2、窗口切换 9.2.1、为什么需要窗口切换&#xff1f; 9.2.2、获取句柄的方式 9.2.3、切换句柄 10、…...

自从学会了Python,我实现了壁纸自由(6)

小朋友们好&#xff0c;大朋友们好&#xff01;我是猫妹&#xff01;哈哈哈&#xff0c;又到周末啦&#xff01;这周过得怎么样&#xff1f;马上就要开学了&#xff0c;寒假作业早已写好了吧&#xff1f;开学让人兴奋&#xff0c;上了很久网课都要吐啦&#xff01;开学也让人有…...

Ruby 发送邮件 - SMTP

SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则&#xff0c;由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件&#xff0c;并提供了两个方法 new 和 start: new 方法有两个参数&am…...

Python爱心代码

前言 Python漂浮爱心&#xff0c;具体源码见&#xff1a;Python动态爱心代码_爱心代码-Python文档类资源-CSDN下载 爱心类 class Heart(): #每个爱心&#xff08;爱心类&#xff09; def __init__(self): self.r ra.randint(10,15) #爱心的半径 …...

【二分查找法及其应用】

文章目录一. 前提二. 基本思路三. 代码实现四. 封装在STL中的二分查找算法五. 浮点数二分一. 前提 待查找的序列是有序的&#xff1b;待查找的 a 采取顺序存储结构。 二. 基本思路 设在升序序列 a [ low…high ] 查找的 k &#xff0c; 首先找中间值 mid a [ ( lowhigh )/2 …...

Android 进阶——Framework核心 之Binder Java成员类详解(三)

文章大纲引言一、Binder Java家族核心成员关系图二、Binder Java家族核心成员源码概述1、android.os.IBinder1.1、boolean transact(int code, Parcel data, Parcel reply, int flags) send a call to an IBinder object1.2、String getInterfaceDescriptor()1.3、boolean ping…...

Maven

Maven 1.什么是Maven 官方网站 https://maven.apache.org/ Maven是一款服务于Java平台的自动化构建工具&#xff0c;它可以帮助我们更方便的对项目进行构建、管理项目jar包 &#xff0c;包括: bulid 项目&#xff0c;切换 jar 版本&#xff0c;添加 jar, 删除 jar 包等 1.…...

1947抓住那头牛(队列 广度优先搜索)

目录 题目描述 解析 解题思路 代码部分 代码部分 运行结果 看看len数组中各个位置的标记值 为什么这样做一定是最短路径&#xff1a; 题目描述 农夫知道一头牛的位置&#xff0c;想要抓住它。农夫和牛都位于数轴上&#xff0c;农夫起始位于点N(0<N<100000)&…...

基于linux5.15.5的IMX 参考手册 ---21

基于linux5.15.5的IMX 参考手册 — 21 10.5.2高清多媒体接口&#xff08;HDMI&#xff09;和显示端口&#xff08;DP&#xff09;概述 10.5.2.1测试名称 •mxc_cec_test.out 10.5.2.1.1位置 /unit_tests/HDMI/ 10.5.2.1.2功能 验证HDMI CEC功能并向HDMI接收器发送断电命令。 1…...

Android Dalvik虚拟机 堆初始化流程

前言 上篇文章介绍了dalvik虚拟机启动流程&#xff0c;在dalvik虚拟机启动时调用了dvmGcStartup来启动堆。 本文介绍我们在日常开发使用Java时的堆创建流程。 Dalvik堆介绍 Dalvik虚拟机中&#xff0c;堆是由heap[0] Active堆和heap[1] Zygote堆两部分组成的。其中&#xff…...

0讲(补)——开发前必备基本常识

前言 专栏内容持续补充更新,目前正在进行优惠活动 目录 前言 一、函数的声明和定义 二、预编译 三、串口打印中的printf函数的使用...

JS学习笔记

1.WebAPIs简介导读Web APIs 和JS 基础关联性JS 基础阶段以及 Web APIs 阶段JS基础学习 ECMAScript 基础语法为后面作铺垫&#xff0c;Web APIs 是JS 的应用&#xff0c;大量使用JS基础语法做交互效果①JS 基础阶段我们学习的是ECMAScript 标准规定的基本语法要求同学们掌握JS 基…...

linux005之用户、组管理

linux用户管理简介&#xff1a; 任何使用linux系统的用户&#xff0c;都必须使用一个合法的账号和密码&#xff0c;账号和密码一般都是超级管理员创建&#xff0c;当然普通用户也可以创建用户&#xff0c;前提是必须拥有创建用户权限。 root是linux系统中默认创建的超级用户 创…...

列线图工具_Nomogram

定义 列线图是一种相对传统的分析方法&#xff0c;用于展示自变量和因变量的线性关系&#xff0c;及其特征的重要程度。 现在用SHAP&#xff0c;和机器学习库中的 Feature importance 工具可以实现类似甚至更好效果。不过很多传统的研究领域比较认这种方法。 列线图工具建立在…...

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…...

Python获取搜索引擎结果

前言 想快速获取各个高校的博士招生网站&#xff0c;于是通过python先获取出有可能包含高校博士招生网站的URL&#xff0c;然后通过人为筛选得到了想要的招生网站&#xff08;注意&#xff0c;并非直接爬取&#xff0c;是间接获取的&#xff09;。 整理了一份网站名单&#x…...

2.4.8 PCIe——物理逻辑层——REFCLK

一、概述 pcie的参考时钟由板级输入&#xff0c;提供给IP内PHY层的PLL使用&#xff0c;由PLL产生core_clk和pipe_clk。 二、REFCLK产生方式 Serdes 所用时钟由 PHY 模块内的PLL生成&#xff0c;PLL的参考时钟可以由common clock&#xff08;外部背板提供&#xff09;、separ…...

树莓派4B arm64 搭建 docker+drone+gitea

树莓派4B arm64 搭建 dockerdronegitea 记录时间: 2023年02月10日 树莓派烧录 如何用树莓派搭建一台永久运行的个人服务器&#xff1f; https://mp.weixin.qq.com/s?__bizMzI5NjA0ODkwNA&mid2651847658&idx1&sn267a1257b43d4a76f2a081ed157b77f9&chksmf7b11…...

Java的JDBC编程

目录 1. 打开IDEA&#xff0c;新建Project 2. 引入依赖 &#xff08;1&#xff09;下载驱动包 &#xff08;2&#xff09;将驱动包导入Project 3. 编写代码 &#xff08;1&#xff09;创建数据源 &#xff08;2&#xff09;让代码和数据库服务器建立联系 &#xff08;3&…...

【每日一题】双指针

双指针是算法竞赛中最常用的优化技巧之一&#xff0c;核心思想是利用两个下标同时遍历&#xff0c;将 O(n) 暴力优化到 O(n)。本文系统讲解反向扫描和同向扫描两大类型&#xff0c;配合经典例题和完整代码。一、核心原理 1.1 什么是双指针 双指针&#xff1a;在区间操作时&…...

使用 Taotoken 聚合多模型 API 为创业项目构建智能客服原型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken 聚合多模型 API 为创业项目构建智能客服原型 对于资源有限的创业团队而言&#xff0c;快速验证产品核心场景是至关重…...

基于MCP协议构建Cursor团队数据AI助手:从原理到实战部署

1. 项目概述&#xff1a;为你的AI助手装上团队管理的“X光机” 如果你和我一样&#xff0c;是Cursor的深度用户&#xff0c;并且管理着一个开发团队&#xff0c;那你肯定有过这样的时刻&#xff1a;想知道过去一周团队里谁写代码最勤快&#xff0c;谁用的AI Credits最多&#x…...

构建安全多语言代码沙盒:从原理到实践

1. 项目概述&#xff1a;从“Can I Code?”到“Can I Code!”“let-sunny/canicode”这个项目名&#xff0c;初看有点意思。它不像一个传统的工具库或框架&#xff0c;名字里带着一个问句的意味——“我能编码吗&#xff1f;”。这恰恰是很多初学者&#xff0c;甚至是在特定领…...

CANN/pypto设置立方体切片形状

pypto.set_cube_tile_shapes 【免费下载链接】pypto PyPTO&#xff08;发音: pai p-t-o&#xff09;&#xff1a;Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A2 …...

如何查找SQL中最常见的元素_结合GROUP BY与COUNT

用 GROUP BY COUNT 找出现最多的值&#xff1a;先按目标字段分组&#xff0c;再统计每组行数并降序排列取首行&#xff0c;如 SELECT source, COUNT() FROM users GROUP BY source ORDER BY COUNT() DESC LIMIT 1。怎么用 GROUP BY COUNT 找出字段里出现最多的值直接对目标字…...

生成式AI开发中的法律风险:从数据爬取到模型部署的合规指南

1. 项目概述&#xff1a;生成式AI开发中的法律雷区最近几年&#xff0c;生成式AI的火爆程度有目共睹&#xff0c;从写代码、画图到生成视频&#xff0c;几乎无所不能。但作为一名在技术和合规交叉领域摸爬滚打多年的从业者&#xff0c;我看到的不仅是风口上的狂欢&#xff0c;更…...

MAX3420E USB控制器开发实战与优化技巧

1. MAX3420E USB控制器概述 MAX3420E是一款全速USB外设控制器芯片&#xff0c;广泛应用于嵌入式系统开发中。作为USB协议栈的硬件实现载体&#xff0c;它通过SPI接口与主控MCU通信&#xff0c;减轻了主控处理USB协议的压力。芯片内部集成了USB串行接口引擎(SIE)、端点FIFO缓冲区…...

除了ChatGPT,SSE还能这么用?用Nginx代理构建一个实时日志仪表盘

实时日志监控新思路&#xff1a;基于Nginx与SSE的高效实践 日志监控一直是开发运维工作中的关键环节。传统的轮询方式不仅效率低下&#xff0c;还增加了服务器负担。今天我要分享的是一种基于Server-Sent Events(SSE)技术的实时日志监控方案&#xff0c;结合Nginx反向代理实现…...

Llama 3.2 90B-Vision实战:Groq云推理+Streamlit轻量部署图像描述生成器

1. 项目概述&#xff1a;这不是一个“调API”的玩具&#xff0c;而是一次对多模态工程边界的实测我用Llama 3.2 90B-Vision搭了一个图像描述生成器&#xff0c;上线三天&#xff0c;内部测试团队传了278张图进来——有手机随手拍的早餐煎蛋、模糊的旧照片扫描件、带水印的电商主…...