等效燃油消耗ECMS与庞德里亚金最小值原理PMP中协同状态的关系
今儿阅读了一篇文献——《车联网环境下并联混合动力客车控制策略优化研究》,是北理的博士所写的,内容比较翔实。主要是里面的关于ECMS和庞德里亚金最小值原理(PMP)的关系推导很让人印象深刻,故打算把这个过程捋一下。需要说明的是本文同时也参考了文献【2】的第五章主讲PMP的证明过程。
文献【1】首先是将汉密尔顿函数用于能量管理策略,表示的结果就如下式4.49所示,λ(t)是协同状态,而根据PMP(庞德里亚金最小值)原理,协同状态的动态方程可以由公式4.50表示


在文献【2】的第55页,是这样去描述这个过程,公式

和上面文献【1】的公式是表达一样的意思,而公式5.17中的w(SOC)则是类似于惩罚函数一样的东西,主要是判断取值是否超出边界,在文献【2】中w(SOC)的公式如下
。 而公式5.16和5.17之所以要在状态量上加一个*号,就是表达这是最优的取值。
根据电池SOC在文献【1】中的计算公式
,然后作者认为普通混动汽车电池SOC在较小的范围内变动,所以电池开路电压Voc和内阻Rin是常数,与电池SOC无关,所以就推导出公式4.52如下
,然后
,所以协同状态λ就是一个常数。
在文献【2】中是如何推导这个过程的呢?作者把公式5.16和5.17进行变化,利用公式3.4
,公式3.4中的
其实就是dSOC/dt,也就是和文献【1】中的4.51一样。最后得到的结果就如公式5.21所示,
。其中的推导过程其实如下
,紧接着文献【2】里面说开路电压和内阻相对于SOC的变化可以忽略不计,于是
和
都是0,那么公式5.21也变成0了,所以协同状态λ就是一个常数。总的来看,推导过程几乎一致,唯一的区别是文献【2】更准确的说明了Voc和内阻R是相对于SOC的倒数为0,而不是一直是个常数不变。
基于以上的推导过程,文献【1】最终得到的汉密尔顿函数的另一种形式,
,然后再和ECMS的表达式
进行比较,就可以发现等效因子和协同状态λ之间的关系:
要记住上面的推导结论,协同状态λ就是一个常数,但是等效因子s不一定是一个常数,因为开路电压和内阻其实是随时间变化的,电池如果老化了,容量值也会发生变化。
这里必须得说明一下,上面文献【1】中的公式4.59,可以把它稍微变形,因为I=Pm/Voc,而电池SOC的变化 dSOC/dt = I/Qnom,又因为汉密尔顿函数和ECMS等效起来,所以其实可以把ECMS的形式写成
,这样的话可以把电机的功率值替换成电池SOC,实现起来更为直观。
参考文献:
【1】《车联网环境下并联混合动力客车控制策略优化研究》
【2】Hybrid Electric Vehicles Energy Management Strategies,Chapter 5
等效燃油消耗ECMS与庞德里亚金最小值原理PMP中协同状态的关系的更多相关文章
- 机器学习:逻辑回归(scikit-learn 中的逻辑回归)
一.基础理解 使用逻辑回归算法训练模型时,为模型引入多项式项,使模型生成不规则的决策边界,对非线性的数据进行分类: 问题:引入多项式项后,模型变的复杂,可能产生过拟合现象: 方案:对模型正则化处理,损 ...
- 手写线程池,对照学习ThreadPoolExecutor线程池实现原理!
作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...
- 手写一个线程池,带你学习ThreadPoolExecutor线程池实现原理
摘要:从手写线程池开始,逐步的分析这些代码在Java的线程池中是如何实现的. 本文分享自华为云社区<手写线程池,对照学习ThreadPoolExecutor线程池实现原理!>,作者:小傅哥 ...
- WCF初探-17:WCF数据协定之等效性
数据协定等效性特点概述 对于客户端要将某种类型的数据成功发送到服务,或者服务要将数据成功发送到客户端的情况,接收端上并不一定必须存在此发送数据类型. 唯一的要求是两种类型的数据协定应该等效. 要使数据 ...
- 查看JAVA进程中哪个线程CPU消耗最高
一,在centos linux 上查看进程占用cpu过高 top shift+h 查看哪个进程程消耗最高 二,查看JAVA进程中哪个线程消耗最高 2.1 导出java运行的线程信息 ...
- redis内存消耗详解
Redis所有的数据都存在内存中,相对于廉价的硬盘,内存资源还是比较昂贵的,因此如何高效利用redis内存变得非常重要. 内存消耗分析 管理内存的原理和方法 内存优化技巧 一.内存消耗 理解redis ...
- 关于质能等效的两个思想实验 Two Ideological Experiments on Mass-Energy Equivalence
大家知道,物质和能量是等效的,虽然质能方程已暗示了这种等效关系,但并非显而易见.此等效性可以从以下两个思想实验中获知. 实验一:一台电子称上放置一个金属物体,加热它,称的读数将会略微增加.这是因为金属 ...
- golang 如何查看程序执行消耗时间
写代码过程中,有时需要分析代码块的时间消耗. 本文介绍使用time包中的Since函数查看程序执行时间. package main import ( "fmt" "tim ...
- Linux环境下的CPU消耗分析
在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程.在CPU消耗分析中,我们还经常遇到下面几个概念. 上下文切换 ...
随机推荐
- 扯下Python的super()
注: Python 2.7.x 环境下 今晚搜东西无意中看到这篇Understanding Python super() with __init__() methods. 其实这篇老早就看过了, 不过 ...
- 回顾vim,ftp
常用服务器 ftp,ssh FTP是文件传输协议的简称,文传协议,用于internet上控制文件的双向传输 它也是一个应用程序,,基于不同的操作系统有不同的FTP应用程序,都遵循同一种协议以传输文件. ...
- echarts 实现柱状图重叠而不是相互增加
1.引入echart 所需要的js和css,这不再引入 总量的数据是包含分量且大于等于分量 先上效果图: 当我们查看总量时,显示的是将分量的也包含里面,这样就不是叠加的数量了 2.直接上代码 (可复制 ...
- JDBC常用驱动和语法汇总
A. Firebird url=jdbc:firebirdsql:[HOST_NAME]/[PORT:][FULL_PATH_TO_DATABASE_FILE] driver=org.firebird ...
- Caused by: java.io.FileNotFoundException: class path resource [../../resources/config/spring.xml] cannot be opened because it does not exist
在尝试使用Spring的Test的时候遇到了这个错误 原来的代码: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loca ...
- java replaceall 用法:处理特殊字符
public class TryDotRegEx { public static void main(String[] args) { // TODO Auto-generated method st ...
- 让mybatis不再难懂(一)
与hibernate相比,我无疑更喜欢mybatis,就因为我觉得它真的好用,哈哈.它简单上手和掌握:sql语句和代码分开,方便统一管理和优化:当然缺点也有:sql工作量很大,尤其是字段多.关联表多时 ...
- iOS电商常见动画与布局、微信悬浮窗、音乐播放器、歌词解析、拖动视图等源码
iOS精选源码 MXScroll 介绍 混合使用UIScrollView ios 电商demo(实现各种常见动画效果和页面布局) 一行代码集成微信悬浮窗 可拖动,大小的视图,可放置在屏幕边缘. 在使用 ...
- OpenCV Canny 边缘检测
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #i ...
- Protein interaction|insight QUANTA|SYBYL COMPOSER|MODELLER|SWISS_MODEL|WHAT IF|3D-JIGSAW|CPH-ModelGPCRs|Membrane protein|
生命组学 蛋白质之间的互作可以有以下应用: Eg:改变蛋白质基因,从而组改变结构,削弱蛋白质之间的相互作用. Eg:数据模拟出蛋白质的靶点,即结合腔,将此数据存入结合化合物的dataset,用于制药 ...