融合交通信息的插混汽车能量管理论文_第1页
融合交通信息的插混汽车能量管理论文_第2页
融合交通信息的插混汽车能量管理论文_第3页
融合交通信息的插混汽车能量管理论文_第4页
融合交通信息的插混汽车能量管理论文_第5页
已阅读5页,还剩9页未读 继续免费阅读

融合交通信息的插混汽车能量管理论文.docx 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

融合交通信息与自适应控制的插电式混合动力汽车能量管理策略研究主要方案作为现代汽车发展的重要方向之一,插电式混合动力汽车(PHEV)能够兼顾纯电动汽车及传统燃油车的优点,具有燃油经济性高、尾气排放低及续航里程长等特点。PHEV能量管理将直接影响汽车动力、燃油经济以及排放等性能。另外,随着全球定位系统、地理信息系统及智能交通系统等技术的快速发展,在设计PHEV能量管理步骤时充分考虑道路交通信息,可进一步提升其燃油经济性。为优化PHEV的节能效果,更好解决能量管理步骤的环境适应性问题,

本文以一款装备机械式自动变速器的并联式PHEV为系统研究对象,实施融合交通信息与自适应调节的能量管理策略研究,主要研究与创新如下:(1)对比各类PHEV动力传动系统的构型及优缺点,深入分析确定了论文所采用的混合动力系统的基本结构及工作原理;按照PHEV的动力性要求计算其理论需求功率;借助对国内某城市出租车数据的统计与分析,获取实际工况下动力需求功率分布;结合实际工况需求功率分布对PHEV动力传动系统关键部件进行参数匹配;在此基础上,建立了PHEV动力系统模型,根据所建模型对PHEV的动力性实施仿真实验,验证所匹配参数的合理性。(2)应用模拟退火优化K均值聚类步骤,将实验车采集的路况资料和标准行驶路况数据进行聚类分析,最终划分为四种工况类型。综合电池荷电状态以及实际行驶距离定义等效行驶距离系数用以描述PHEV的行驶距离特性,采用等效行驶距离及工况类型作为行驶工况的基本特征;根据所研究PHEV的各部件特征,采用动态规划算法实施全局最优能量管理求解,同时动态优化四种行驶工况类型下的基本控制策略;分析行驶工况类型和等效行驶距离对PHEV最优能量管理策略的影响,获取不同行驶工况下发动机启动功率、换挡及转矩分配的变化规律。(3)研究全局交通流平均车速信息的获取与处理方法,建立了路网模型模拟实际交通流的变化,计算路网模型的交通流平均车速信息,建立实时工况模型;针对资料采集过程中难以避免的缺失问题,基于K最近邻算法进行交通流平均车速缺失信息补齐;在此基础上,采用小波变换和平滑滤波算法生成汽车行驶工况预期全局交通信息,仿真结果表明:所提出的资料补齐方法能够有效补充缺失的交通信息,且可有效生成用于能量管理策略的预期全局交通信息,为后续PHEV自适应等效燃油消耗最小能量管理策略研究奠定了基础。(4)根据混合动力系统的能量平衡原理,提出了一种自适应等效燃油消耗最小能量管理策略;根据全局交通信息预先确定一对边界等效因子,基于动力系统实时能量变化获得实时概率因子,通过概率因子与边界等效因子实时计算等效因子,实现动力传动系统自适应能量控制;针对三种标准工况以及不同的电池老化特性的情况,通过仿真验证所研究能量管理策略的可行性,结果表明所提出的策略与传统的ECMS相比具有较强的适应性和稳定性,同时在不同电池老化情况下可进一步提升燃油经济性5%-11%。(5)为验证所研究的PHEV自适应能量管理策略,以虚拟交通环境作为PHEV能量管理实验平台,提出了实验平台的搭建思路;实施实时仿真系统、整车控制单元、驾驶操作单元、虚拟场景系统和动态数据监控系统集成;交通仿真环境由虚拟场景仿真软件PreScan和交通流仿真软件VISSIM共同搭建,整车调节器选用D2P对实验平台进行控制;利用NI-PXI作为实时仿真系统模拟动力传动系统各部件的状态变化,采用NI-Veristand软件对实验平台的数据进行动态监控;基于所搭建的仿真实验平台,制定了详细的实验方案并开展硬件在环仿真实验研究,验证了

本文所提出的融合交通信息与自适应调节的PHEV能源管理策略的显著性。✅简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

✅具体问题可以联系QQ或者微信:30040983。仿真代码importnumpyasnp

importmatplotlib.pyplotasplt

fromscipy.optimizeimportminimize

classVariableSpeedLimit:

def__init__(self,num_segments=10,segment_length=500):

self.num_segments=num_segments

self.segment_length=segment_length

self.density=np.zeros(num_segments)

self.speed=np.zeros(num_segments)

self.flow=np.zeros(num_segments)

self.speed_limits=np.ones(num_segments)*120

deffundamental_diagram(self,density,vf=120,kj=180,km=45):

ifdensity<km:

speed=vf

elifdensity<kj:

speed=vf*(1-(density-km)/(kj-km))

else:

speed=0

returnmax(speed,0)

defcalculate_flow(self,density,speed):

returndensity*speed

defupdate_traffic_state(self,density,inflow,outflow,dt=30):

new_density=np.zeros(self.num_segments)

new_density[0]=density[0]+(dt/self.segment_length)*(inflow-self.flow[0])

foriinrange(1,self.num_segments):

new_density[i]=density[i]+(dt/self.segment_length)*(self.flow[i-1]-self.flow[i])

new_density=np.clip(new_density,0,180)

returnnew_density

defoptimize_speed_limits(self,density,min_speed=60,max_speed=120):

defobjective(speed_limits):

total_flow=0

safety_penalty=0

foriinrange(self.num_segments):

speed=min(speed_limits[i],self.fundamental_diagram(density[i]))

flow=density[i]*speed

total_flow+=flow

ifi>0:

speed_diff=abs(speed_limits[i]-speed_limits[i-1])

ifspeed_diff>20:

safety_penalty+=speed_diff**2

return-total_flow+0.1*safety_penalty

bounds=[(min_speed,max_speed)for_inrange(self.num_segments)]

constraints=[]

foriinrange(self.num_segments-1):

constraints.append({

'type':'ineq',

'fun':lambdax,idx=i:30-abs(x[idx]-x[idx+1])

})

result=minimize(objective,self.speed_limits,method='SLSQP',

bounds=bounds,constraints=constraints)

returnresult.x

defincident_detection(self,density,speed,threshold_density=100,threshold_speed=40):

incidents=[]

foriinrange(self.num_segments):

ifdensity[i]>threshold_densityandspeed[i]<threshold_speed:

incidents.append(i)

returnincidents

defapply_incident_control(self,speed_limits,incident_location,upstream_range=3):

controlled_limits=speed_limits.copy()

foriinrange(max(0,incident_location-upstream_range),incident_location):

reduction_factor=1-(0.2*(upstream_range-(incident_location-i)))

controlled_limits[i]=controlled_limits[i]*reduction_factor

controlled_limits[incident_location]=40

returncontrolled_limits

defsimulate_fog_scenario(vsl_controller,duration=3600,dt=30):

time_steps=int(duration/dt)

visibility=np.ones(time_steps)

visibility[20:40]=0.3

visibility[40:60]=0.5

visibility[60:80]=0.8

density_history=[]

speed_history=[]

flow_history=[]

limit_history=[]

density=np.random.uniform(20,40,vsl_controller.num_segments)

fortinrange(time_steps):

vis=visibility[t]

max_safe_speed=120*vis

optimal_limits=vsl_controller.optimize_speed_limits(density)

optimal_limits=np.minimum(optimal_limits,max_safe_speed)

foriinrange(vsl_controller.num_segments):

free_flow_speed=vsl_controller.fundamental_diagram(density[i])

vsl_controller.speed[i]=min(optimal_limits[i],free_flow_speed)

vsl_controller.flow[i]=vsl_controller.calculate_flow(density[i],vsl_controller.speed[i])

inflow=2000+500*np.sin(2*np.pi*t/time_steps)

outflow=vsl_controller.flow[-1]

density=vsl_controller.update_traffic_state(density,inflow,outflow,dt)

density_history.append(density.copy())

speed_history.append(vsl_controller.speed.copy())

flow_history.append(vsl_controller.flow.copy())

limit_history.append(optimal_limits.copy())

return{

'density':np.array(density_history),

'speed':np.array(speed_history),

'flow':np.array(flow_history),

'limits':np.array(limit_history),

'visibility':visibility

}

defevaluate_vsl_performance(results_vsl,results_no_vsl):

total_travel_time_vsl=np.sum(results_vsl['density'])*30/3600

total_travel_time_no_vsl=np.sum(results_no_vsl['density'])*30/3600

avg_speed_vsl=np.mean(results_vsl['speed'])

avg_speed_no_vsl=np.mean(results_no_vsl['speed'])

speed_variance_vsl=np.var(results_vsl['speed'])

speed_variance_no_vsl=np.var(results_no_vsl['speed'])

metrics={

'travel_time_reduction':(total_travel_time_no_vsl-total_travel_time_vsl)/total_travel_time_no_vsl*100,

'avg_speed_vsl':avg_speed_vsl,

'avg_speed_no_vsl':avg_speed_no_vsl,

'speed_variance_reduction':(speed_variance_no_vsl-speed_variance_vsl)/speed_variance_no_vsl*100

}

returnmetrics

defcrash_risk_calculation(speed,density):

risk=np.zeros_like(speed)

foriinrange(len(speed)-1):

speed_diff=abs(speed[i+1]-speed[i])

ifspeed_diff>30:

risk[i]=0.8

elifspeed_diff>20:

risk[i]=0.5

elifspeed_diff>10:

risk[i]=0.2

ifdensity[i]>100:

risk[i]+=0.3

returnrisk

defmain():

vsl=VariableSpeedLimit(num_segments=10,segment_length=500)

results_vsl=simulate_fog_scenario(vsl)

vsl_no_control=VariableSpeedLimit(num_segments=10,segment_length=500)

vsl_no_control.speed_limits=np.ones(10)*120

density=np.random.uniform(20,40,10)

density_history_no_vsl=[]

speed_history_no_vsl=[]

flow_history_no_vsl=[]

fortinrange(120):

foriinrange(10):

vsl_no_control.speed[i]=vsl_no_control.fundamental_diagram(density[i])

vsl_no_control.flow[i]=vsl_no_control.calculate_flow(density[i],vsl_no_control.speed[i])

density=vsl_no_control.update_traffic_state(density,2000,vsl_no_control.flow[-1])

density_history_no_vsl.append(density.copy())

speed_history_no_vsl.append(vsl_no_control.speed.copy())

flow_history_no_vsl.append(vsl_no_control.flow.copy())

results_no_vsl={

'density':np

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论