首页/文章/ 详情

技术干货 | 基于真实路况和控制调节的燃油经济最优化分析

1天前浏览11


GT Global Conference 2020

Gamma Technologies: Dhaval Lodaya, Jonathan Zeman, and Marcin Okarmus

BorgWarner: Sara Mohon, Philip Keller, John Shutty, Nithin Kondipati


概要

混动汽车的燃油经济性优势能否充分发挥,与行车过程中的能量分配和相关控制调节直接相关,为此,本文将基于P0/P4架构对如何使用动态规划算法来研究和优化混合动力汽车的燃油经济性进行了详细介绍。


目录

1. xEV体系架构中的挑战

2. 经济最优化分析的动机与需求

3. 动态规划

4. 算例

5. 结论


1 、xEV体系架构中的挑战

控制策略是车辆仿真的关键部分。在大多数应用中,控制策略主要是用于控制基于某些规则的运行方式。这种控制策略只适用于解决相对简单、明确、逻辑清晰的问题,但在能耗最小化方面并不适用。


下图展示了一辆拥有多个动力执行机构和动力来源的汽车。根据动力系统结构,可以有多种不同的架构配置,如:P0、P4、P0/P4、P2、P3混合动力等。

xEV架构


驾驶员一般只负责提供加速踏板和制动踏板方面的需求。为了开发出合理的功率分配规则,相应的策略需要考虑体系架构、约束、目标和优化等方面。


选择一个正确的架构和以一种有效的方式管理能量流是会直接影响整车效率,对油耗、驾驶性能和排放都有着显著的影响。


2、经济最优化分析的动机与需求  
 

 


经济最优化的核心理念或核心目标是能够优化任何动力系统架构的燃油经济性,也就是对这类问题的适用性。其次就是以下六方面:


A灵活方便、模块化  

谈到需求,其中一个关键需求是灵活性、模块化和快速模型构建,目的是能够快速构建任何动力系统架构的车辆模型。它应该足够灵活,适合不同类型的分析,如:动力学和运动学模拟,不同的组件及其大小,它还应该是模块化的,可以捕捉不同级别的物理场,从系统级别到详细的组件级别。


GT-Drive+

B系统集成  

系统集成仿真建模是指模型不仅应能考虑不同物理(如:机械、电、热、流等),还应能在同一个模型下将多个物理场进行耦合,同时考虑多个物理场及其之间的关联。

 

多系统集成


C.适应性  

适应性扮演着重要的角色,因为在汽车建模中不仅物理模型和控制非常重要,而且物理模型和控制之间的通讯和集成也是至关重要的。


 

GT-Suite中的控制模块


 

GT&Simulink联合仿真


D.优化方法  

针对这类问题的优化方法有很多,主要分为全局优化、局部优化和启发式策略。动态规划是能够得到全局最优结果的解决方案。

 

动态规划


E.计算时间  

当提到动态规划时,总是伴随着计算时间的问题,因为它是一个计算量庞大的解决方案。因此,并行计算成为在概念设计阶段对不同架构进行迭代,并在最终的控制细化和开发阶段获取最优控制轨迹的关键手段之一。


并行计算  


F.  真实路况  

人们越来越重视实际的驾驶过程。这涉及到模型能否捕获一些不确定因素的影响,如:路线,交通,司机行为等等。因此,实际的驾驶过程也成为经济最优化分析的重要组成部分。

 

GPS路线


3动态规

3.1 优化方法

关于经济最优化,主要有以下几种方法:首先是基于特定规则的启发式策略,它的特点是可以在真实的ECU上面实现实时在线;其次是基于等效消耗最小化策略(ECMS)的局部优化,它在某种程度上也能实现实时在线;最后是基于动态规划(DP)的全局优化,此算法计算量比较大,需离线进行,但得到的却是全局最优控制轨迹。

 

优化方法


3.2动态规划  

动态规划(DP)是一种求解多阶段决策过程的数值方法,该过程考虑了系统的动态特性,并在预先确定的行驶周期内找到最优策略。

      “An optimal policy has the property that whatever the initial decisions are, the remaining decisions must constitute an optimal policy with regards to the state resulting from the first decision.” ——Richard Bellman


      用Bellman的话来说,一个全局最优策略具有这样的性质,即无论之前的决策是什么,剩余的决策必须构成一个由之前决策产生的状态的最优策略。


 
3.3优化原则  

如果 𝑥0 ~ 𝑥𝑘 ~ 𝑥𝑁 是一个最优路线,那么 𝑥𝑘 ~ 𝑥𝑁 也应是一个最优路线。

反证法:如果 𝑥𝑘 ~ 𝑥𝑁 不是一个最优路线, 那么就一定存在一条比路线 𝑥0 ~ 𝑥𝑘 ~ 𝑥𝑁 成本更低的路线:


 

动态规划是一种“全局优化”,因为它在时间上是向后看的。


 
3.4计算流程  
 

所以,ECMS是基于成本函数的局部优化,只能得到次优解,而DP是基于成本函数的全局优化,能得到一个最优解。


4、算例

选择P0/P4混合动力汽车结构的原因是,因为这是最复杂的并行混合动力系统架构之一。

 


运行模式主要包括三类:纯电(EV)、纯油(ICE)和混动(HEV)。具体的工作模式如下:


相应的整车控制逻辑如下:


模拟三种驾驶循环:FTP-75、HWFET、真实路况(Real-World)。

计算结果

      平均油耗:

发动机运行点:

FTP-75 Driving Cycle


HWFET Driving Cycle


Real-World Driving Cycle


电池SOC和能量分配:

FTP-75 Driving Cycle


HWFET Driving Cycle


DP优化后的FTP-75 循环的最佳工作路线:

计算时间对比:

串行计算VS并行计算


状态和控制的离散尺度:


DP解决方案对动力系统架构的适应性

  • 动态规划的解决方案在GT中是通用的,可用于任何传动系统架构

  • 在GT环境中建模可以大大节省开发时间,包括开发基于物理的模型并将其与控件集成



5、结论

本文对如何使用动态规划算法来研究和优化混合动力汽车的燃油经济性进行了详细的介绍。

GT-Suite 实现了系统的灵活性、模块化的快速建模方式,以及集成的仿真环境使评估不同的物理系统成为可能。

适应性是一个亮点,提供了服务于设计的解决方案,减少了集成物理与控制以及单独开发系统和组件级动力学模型的时间。

该解决方案是通用的,适用于任何动力系统架构。

除了能进行标准的路谱计算,还能直接并行化计算真实路况。

并行化能够减少约 91% 的计算时间,从而进一步提高该解决方案在概念级设计阶段的实用性。              

来源:艾迪捷
Marc通用航空航天船舶核能Simulink控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-09-08
最近编辑:1天前
艾迪捷
MBD CAE解决方案专家
获赞 2粉丝 1文章 309课程 0
点赞
收藏
作者推荐

Ansys Fluent边界条件自定义设置(二) ——Fluent Expressions(上)

IDAJ中国 来自:IDAJ中国Ansys技术团队 徐淑君更多资料/视频:产品专栏/Ansys随着仿真工况的日益复杂,在数值模拟中经常会遇到一些无法在界面上直接赋值的边界条件,比如按一定空间位置排列,随时间变化,或和某个变量相关等等。越来越多的工程师希望对边界条件进行自定义设置。Ansys Fluent中有以下几种自定义边界条件的方法:- 利用profile文件赋值- 采用Fluent Expressions定义- 编写UDF今天,我们来了解一下如何采用Fluent Expressions定义边界条件。从2019版本开始,Fluent中加入了和CFX中的表达式功能类似的“Fluent Expression Language”(表达式语言)。它是一种基于Python的解释型的声明式语言,是由数值、变量、运算符、函数组成的可以返回一定值的字符串,例如,Vmax*(5.0*exp(-t-0.3 [s]/2.8 [s]))。表达式可以指定与时间、迭代步、位置、求解变量相关的复杂的边界条件和源项,基于时间和迭代步指定不同的模型和求解器设置。同一个表达式对Windows和Linux都适用。表达式可以取代部分UDF、Scheme、Journal的功能,虽然不能完全取代,但比UDF、scheme更加易学易用,是非常值得学习的一个功能。 表达式的值可以是实数,整数,布尔值或数量。数量是具有量纲的实数。数量格式为<number> [<unit>],例如2324.0 [Pa kg ^ -3 s]。表达式的计算结果可以是实数,布尔值,实数场或布尔值场。例如,2 * StaticPressure在一个区域上计算时,会返回real field(实数场);而average(2 * StaticPressure,[“ inlet”])返回的是一个实数值。表达式包含很多运算符和函数,如下表所示。描述函数运算符+, -, *, /, ** (power), ^ (power), >, >=, <, <=, ==, !=传统AND(<expr>, <expr>, …)IF(<cond>, <true_value>, <false_value>)NOT(<expr>)OR(<expr>, <expr>, …)XOR(<expr>)双曲线acosh(<expr>)asinh(<expr>)atanh(<expr>)cosh(<expr>)sinh(<expr>)tanh(<expr>)数学abs(<expr>)*besselJ(n**, <expr>)*besselY(n**, <expr>)ceil(<expr>)exp(<expr>)floor(<expr>)gradient(<expr>)log(<expr>)log10(<expr>)max(<expr>, <expr>, …)min(<expr>,<expr>, …)mod(<expr>, <expr>)normalize(<expr>,[<location>,…])round(<expr>)sqrt(<expr>)step(<expr>)trunc(<expr>)*besselJ 是第一类贝塞尔函数,besselY 是第二类贝塞尔函数。**n 必须是“double”类型的常量。归约Area([<location>, <location>, …])AreaAve(Field, ['location'])AreaInt(Field, ['location'])*Average(<expr>, [<location>, <location>, …], Weight= <None| 'Area'| 'Volume'| 'Mass'| 'MassFlowRate'| 'AbsMassFlowRate'>)Centroid(['location'])Count(['location'])CountIf(Boolean_Expr, ['location'])Force (['location'], …)MassAve(Field,['location'])MassFlow(['location'])MassFlowAve(Field, ['location'])MassFlowAveAbs(Field, ['location'])MassFlowInt(Field, ['inelt1'], ['inlet2'])MassInt(Field, ['location'])Maximum(<expr>, [<location>, <location>, …])Minimum(<expr>, [<location>, <location>, …])Moment(<point>, ['location'])PressureForce(['location'], …)*Sum(<expr>, [<location>, <location>, …], Weight= <None| 'Area'| 'Volume'| 'Mass'| 'MassFlowRate'| 'AbsMassFlowRate'>)SumIf( Field, Boolean_Expr, ['location'], Weight=[Weight])ViscousForce([<location>, <location>, …])Volume([<location>, <location>, …])VolumeAve(Field, ['location'])VolumeInt(Field, ['location'])三角acos(<expr>)asin(<expr>)atan(<expr>)atan2(<expr>, <expr>)cos(<expr>)sin(<expr>)tan(<expr>)矢量cross(<expr>, <expr>)dot <vector1>, <vector2>)unitVector(<x>, <y>, <z>)<vector>.dirvector(<x>, <y>, <z>, ["unit"]) 不要在单个表达式中使用多个比较运算符,因为该运算将无法 正常工作。 例如,400 [K]> StaticTemperature> 300 [K]将不起作用。要完成此表达式,请使用AND(StaticTemperature> 300 [K],StaticTemperature <400 [K])。 表达式的数据主要来源有场变量、求解变量、科学常数、别名(Aliases)、profiles。Fluent 后处理场变量的子集可用于表达式。求解变量有当前时间Time、当前时间步Timestep、当前时间步长DeltaTime 和全局迭代次数Iteration。科学常数,如下表所示。变量描述值PI圆周率Pi3.14159265358979323846e自然对数的底数e2.71828182845904523536R气体常数8.314472 [J K^-1 mol^-1]avogadro阿伏伽德罗常数6.02214199e23 [mol^-1]boltzmann玻尔兹曼常数1.3806503 [J K^-1]clight光速2.99792458e8 [m s^-1]echarge电子电荷1.60217653e-19 [A s]g重力加速度9.8066502 [m s^-2]planck普朗克常数6.62606876e-34 [J s]stephan斯蒂芬-玻尔兹曼常数5.670400e-08 [W m^-2 K^-2]mupermo磁导率4.0*PI*1.0e-7 [N A^-2]epspermo介电常数1./(clight*clight*mupermo) 利用别名可以引用一些常用的参数,如下表所示。别名变量xPosition.xyPosition.yzPosition.zuVelocity.xvVelocity.ywVelocity.ztTime**在稳态下,时间评估为 0,除非案例在瞬态中运行,然后切换到稳态,在这种情况下,它将评估为瞬态运行的最晚时间。dtDeltaTime**在稳态下,增量时间评估为 0,除非案例在瞬态运行,然后切换到稳态,在这种情况下,它将评估为瞬态运行的最新增量时间。iterGlobal iteration countTStaticTemperaturePStaticPressuremfMassFractionAmagFaceAreaMagnitudevolCellVolumemassCellVolume*Density 可以在表达式中使用profile来指定边界和单元区域条件,用于后处理和归约操作。profile是可以导入到 Fluent 中的表格数据,除了一个或多个因变量列之外,通常还包含 X、Y 和 Z 列(对于空间profile)或时间(对于瞬态profile)。在表达式中使用profile之前,您必须加载一个或多个profile。profile表达式需要以下输入:profile(‘<profile-name>’, ‘<field-name>’, frame=‘<reference-frame-name>’)(reference frame参数仅适用于空间profile)。定义profile表达式后,您可以为所需的边界条件或单元域条件字段选择它。profile表达式示例如图1。图1 profile表达式 来源:艾迪捷

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈