(Matlab实现)基于蒙特卡诺和拉格朗日乘子法的电动车调度【有序、无序充放电】

news2025/1/17 6:19:26

目录

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;            %单程耗电SOC

SOC=rand(1,Ntest).*(1-judge)+judge;          %初始SOC

......

 %解有序充电模型
 
 %分时电价赋值
 price=zeros(1,96);
 for j=1:33-1
     price(j)=0.365;%谷电价0.365元/kWh 
 end
 for j=33:4*8+1-1
     price(j)=0.869;%峰电价   元/kWh 
 end
  for j=4*8+1:4*17+1-1
     price(j)=0.687;%平电价   元/kWh 
  end
  for j=4*17+1:4*21+1-1
     price(j)=0.869;%峰电价   元/kWh 
  end
 for j=4*21+1:4*24+1-1
     price(j)=0.687;%平电价   元/kWh 
 end
 
 deltaT=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:Ntest
    J1(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:jend
           S(i,temp)=1;
       end
   end

.......
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;
  end
  
  PSS=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代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day 7 Spring 整合第三方框架

xml整合第三方框架有两种整合方案:不需要自定义名空间&#xff0c;不需要使用Spring的配置文件配置第三方框架本身内容&#xff0c;例如: MyBatis;需要引入第三方框架命名空间&#xff0c;需要使用Spring的配置文件配置第三方框架本身内容&#xff0c;例如: Dubbo.1 整合MyBati…

Apollo星火计划学习笔记——Control 专项讲解(PID)

文章目录1. PID算法介绍1.1 时间连续与时间离散1.2 位置式与增量式1.3 PID算法扩展2. PID调试方法3. APOLLO代码介绍3.1 PID算法3.2 积分饱和问题3.3 纵向控制代码3.3.1 构造函数3.3.2 加载各种纵向控制的配置参数3.3.3 二阶巴特沃斯低通滤波器《数字信号处理》3.3.4 插值出油门…

PMP考试是什么?适合哪些人来学呢?

PMP&#xff0c;根据PMI的解释&#xff0c;就是项目管理专业人士资格认证&#xff0c;全称如下图&#xff1a;PMP考试是由PMI发起、组织和出题&#xff0c;严格评估项目管理专业人士知识技能是否具有高品质的资格认证考试。PMI&#xff1a;美国项目管理协会&#xff08;Project…

【小米路由器3】breed刷机救砖-nand flash硬改SPI flash-编程器救砖(解决ttl无法救砖问题)

大家好&#xff0c;我是老子姓李&#xff01;&#xff08;gzh&#xff1a;楠瘦&#xff09; 本博文带来【小米路由器3】变砖&#xff0c;ttl无法救砖&#xff0c;硬改焊接一块SPI flash&#xff0c;使用编程器刷入小米路由器mini的breed最终成功救砖。 目录1.引言1.1 背景1.2回…

07MEMS传感器技术 讲座

把同步现象应用于传感器设计。 什么是MEMS&#xff1f; 1.mems芯片是什么意思 MEMS是Micro-Electro-Mechanical System的缩写&#xff0c;中文名称是微机电系统。MEMS芯片简而言之&#xff0c;就是用半导体技术在硅片上制造电子机械系统&#xff0c;再形象一点说就是做一个微…

Vue3——第十一章(内置组件:KeepAlive、Transition、TransitionGroup)

一、KeepAlive <KeepAlive> 是一个内置组件&#xff0c;它的功能是在多个组件间动态切换时缓存被移除的组件实例。 1、基本使用 默认情况下&#xff0c;一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时&#xff0…

elementui el-table表格实现翻页和搜索均保持勾选状态(后端分页)

需求&#xff1a;不管是页面切换还是通过搜索获取数据&#xff0c;都要保持已选中的行保持勾选状态&#xff0c;同时将选中行的内容以标签的形式显示出来&#xff0c;当点击关闭标签时可以对应取消选中状态&#xff0c;点击行中的任意位置也可以切换选中状态&#xff0c;单独勾…

柳叶刀重磅:30年来首个基于新机制的降压药,可持续降压近一年

全球范围内高血压患者约有13亿&#xff0c;其中10%的患者&#xff08;超过1亿&#xff09;为难治性高血压&#xff0c;即接受了3种以上不同种类的降压药治疗后&#xff0c;血压仍然控制不佳。长期不受控的高血压可能对心脏和血管均会造成损伤&#xff0c;进而增加患者发生心脏病…

Learning Saliency Propagation for Semi-Supervised Instance Segmentation

Abstract 实例分割对于建模和注释来说都是一项具有挑战性的任务。由于注释成本高&#xff0c;建模变得更加困难&#xff0c;因为监督的数量有限。我们的目标是利用大量的检测监督来提高现有实例分割模型的准确性。我们提出了ShapeProp&#xff0c;它学习激活对象检测中的显著区…

【CocosCreator入门】CocosCreator下载安装 | 使用Cocos DashBoard下载各个版本的CocosCreator

Cocos Creator 从 v2.3.2 开始接入了全新的 Dashboard 系统&#xff0c;能够同时对多版本引擎和项目进行统一升级和管理&#xff01;Cocos Dashboard 将做为 Creator 各引擎统一的下载器和启动入口&#xff0c;方便大家升级和管理多个版本的 Creator。此外还集成了统一的项目管…

进程间通信的方式(附代码分析)

进程间通信的方式 1. 进程间通信的几种方式 管道 比如 ls | grep 1;也就是将 进程 ls 拿到的结果作为 grep 1 这个进程的输入。实现了进程间的通信。 消息队列 消息队列就是我们的内核给我们创建的一种消息队列。我们可以往其中发送消息&#xff0c;也可以从其中接收消息。 …

C语言实现有序序列判断

一个数组&#xff0c;判断是否有序看上去很简单&#xff0c;有很多种方法。但实际上有一个很严重的问题&#xff0c;就是重复数会影响判断结果。 我这里提供的思路是取连续的三个数进行比较&#xff0c;a, b, c&#xff0c;假设一共n个元素&#xff0c;数组名是arr&#xff0c…

阿里云Imagine Computing创新技术大赛决赛启幕!

2023年1月&#xff0c;由阿里云与英特尔主办&#xff0c;阿里云天池平台、边缘云、视频云共同承办的“新算力 新体验”Imagine Computing创新技术大赛复赛圆满落幕。经过两个多月的激烈角逐&#xff0c;12支入围队伍&#xff0c;从海内外8个国家和地区的6900余支参赛队伍中脱颖…

转到结构化写作后的几点变化

或许是随着公司产品越来越多&#xff0c;公司的手册越来越复杂&#xff0c;用户越来越难找到需要的信息&#xff1b;或许是因为公司管理手册的使用者不满足于长篇大论的文字&#xff0c;希望能够获得只跟他相关的政策、程序等信息。 总之&#xff0c;公司决定从MS Word、非结构…

Pipeline机器学习模型串联

机器学习模型训练时使用 Pipeline 是一个加快效率的串联方法。Pipeline 处理机制就像是把所有模型塞到一个管子里&#xff0c;然后依次对数据进行处理&#xff0c;得到最终的分类结果。 # 模型串联 pipPipeline( [ # 所有模型写…

Matlab Spreadsheet Link安装(早期叫excllink)

我们在Matlab和Excel之间进行数据交互&#xff0c;需要用到Excel link这个组件&#xff08;这是早期的叫法&#xff09;&#xff0c;现在这个组件的名称叫做Spreadsheet Link&#xff0c;这个在我们安装Matlab的时候&#xff0c;要选择相应的组件来安装&#xff08;有可能我们刚…

find命令的常见用法

1.find 命令的常见用法 1.1 基础的打印操作 find命令默认接的命令是-print&#xff0c;它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔&#xff0c;这样就不会分行了。但是一定要注意&#xff0c;-print0针对的是\n转\0&#xff0c;如果查找的文件名本身就含有空格…

高一物理题整理

1 船过河问题 【分析及解答】 这个题的关键是如何理解船的速度&#xff0c;题目假设船的速度是不变的&#xff0c;也就是一直是v2v_2v2​。 列方程如下&#xff1a; {120v1∗10dv2∗10dv2sin⁡θ∗12.5v1v2cos⁡θ\left\{\begin{array}{l} 120 v_1 * 10 \\ d v_2 * 10 \\ d …

【我的渲染技术进阶之旅】解决Cinema 4D制作的3D模型无法导入Blender的问题

文章目录一、问题描述二、分析问题2.1 查看material材质的mtl文件2.2 mtl文件介绍2.3 对比mtl文件和mtl语法并修改2.3.1 norm不对2.3.2 map_Ka、map_Kd 、map_Ks、map_Bump 的格式不对2.5 重新导出obj格式和mtl文件三、总结一、问题描述 今天UI输出了个3D模型给我&#xff0c;…

Spring是如何解决循环依赖的?

一、什么是循环依赖&#xff1f; 循环依赖&#xff1a;说白了就是一个或多个对象实例之间存在直接或间接的依赖关系&#xff0c;这种依赖关系构成了一个环形调用。 第一种情况&#xff1a;自己依赖自己的直接依赖 第二种情况&#xff1a;两个对象之间的直接依赖 第三种情况…