分享: |
制动距离与制动减速度是评价汽车制动性能的重要指标。根据GB 12676制动法规,以充分发出的平均减速度和制动距离来评价整车的制动效能。其中充分发出的平均减速度定义为车辆由0.8倍的初始车速减速至0.1倍的初始车速这个时间段之间的平均减速度。制动距离定义为从驾驶员开始促动制动系统的控制装置至车辆停住所行驶的距离。制动减速度可通过整车的受力情况估算,制动距离却需考虑驾驶员的反应时间,制动过程中防抱死制动系统(Anti-lock Braking System, ABS)电磁阀工作的影响等因素。本文通过实际试验数据与线性回归的方法优化了制动距离计算的经验公式,提升了制动距离计算的准确性。
下面详细分析某N2类车型满载冷态制动过程,随着踏板力的上升,制动减速度逐步增加,当减速度超过路面附着系数后ABS介入,制动减速度开始波动,直至车辆停下。
传统制动距离计算方法是通过将整个制动过程分解为驾驶员的反应阶段、制动减速阶段、ABS工作影响阶段,分别对每个阶段的制动距离进行计算,经过加权得到最终估算的制动距离。
(1)
式中,S为制动距离,v为制动初速度,a1为理论计算的平均减速度,a2为ABS影响造成的减速度波动的最低值,a3为ABS影响造成的减速度波动的最高值,w1、w2、w3为加权系数,其中w1、w2、w3往往根据经验设定。
N2类商用车满载冷态历史数据如表1所示,由于数据较多,部分数据予以隐藏。
表1 N2类商用车满载冷态历史数据
根据此数据,运用Python的matplotlib库可实现数据的可视化,相关代码如下,运行结果如图1所示。
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import pandas as pd
data=pd.read_csv(r".\data\brake_test.txt",sep='\s+')
matplotlib.rcParams['font.family'] = 'FangSong'
fig = plt.figure()
ax1 = fig.add_subplot()
ax1.scatter(data["acc"],data["s"],s=2)
ax1.set_xlim([4.5,8.5])
ax1.set_ylim([15,40])
ax1.set_xlabel("MFDD m/s^2")
ax1.set_ylabel("制动距离m")
plt.show()
图1 N2类商用车满载冷态历史数据
由图可知,制动距离由于驾驶员的不同以及状态不同,即使是同样的平均制动减速度实际制动距离也可能有一定偏差。参照上述公式绘制制动减速度与制动距离的曲线,参照经验值设定驾驶员反应时间为0.35 s,ABS波谷减速度为a/1.1,ABS波峰减速度为a/0.7,运行代码如下,运行结果如图2所示。
a3=np.arange(4.5,9,0.1)
sfu=(60/3.6)*0.35+(60/3.6)**2/2/a3
ss=(60/3.6)*0.35+(60/3.6)**2/2/a3/0.7
sp=(60/3.6)*0.35+(60/3.6)**2/2/a3/1.1
b3=sfu*0.5+ss*0.15+sp*0.35
plt.plot(a3,b3)
plt.show()
图2 理论制动距离计算曲线
可以看到,理论计算的制动距离相较实际制动距离偏差较大,存在较大的优化空间。
由式(1)可知,制动距离与v2/2a存在线性关系。用计算公式表达为
(2)
将车辆试验数据中制动距离与减速度数据提取出来如表1 所示。
根据GB 12676《商用车辆制动系统技术要求及试验方法》可知,N2类商用车制动性能试验初速度要求为60 km/h。利用Python中pandas库可方便进行表格数据的运算,计算v2/2a并列入表格代码如下,可得表2。
import pandas as pd
data=pd.read_csv(r".\data\brake_test.txt",sep='\s+')
data["v^2/2a"]=(60/3.6)**2/2/data["acc"]
表2 计算结果
利用matplotlib库中的scatter方法绘制的制动距离与v2/2a试验数据的散点图,代码如下,运行结果如图3所示。
data["v^2/2a"]=(60/3.6)**2/2/data["acc"]
ax1.scatter(data["v^2/2a"],data["s"],s=8)
plt.tick_params(labelsize=23)
ax1.set_xlabel("v^2/2a",fontsize=30)
ax1.set_ylabel("制动距离m",fontsize=30)
plt.grid()
plt.show()
图3 v 2/2a与制动距离散点图
由图可知,两者的试验数据存在很明显的线性关系,符合线性回归的条件。
Scikit-learn(以下简称sklearn)是开源的Python机器学习库,它基于Numpy和Scipy,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口[3-4]。
sklearn的基本功能主要被分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理,具体可以参考官方网站上的文档。本文主要应用基本功能中的线性回归模型。
线性回归是最简单、应用最广的构建回归模型的算法。其主要优点是线性规模的可扩展性和较高的可解释性。算法把数据记录作为点,目标变量作为Y轴,用一条直线(在两个或多个特征的情况下是平面)拟合这些点。
基于sci-learn库的线性回归算法可以对数据进行线性回归运算,计算出方差最小的参数A、B的值。python代码如下:
x=data["v^2/2a"]
y=data["s"]
y=y.values.reshape(-1, 1)
x=x.values.reshape(-1, 1)
from sklearn.linear_model import LinearRegres sion
lrModel = LinearRegression()
lrModel.fit(x, y)
#对模型进行检验
lrModel.score(x,y)
#查看截距
alpha = lrModel.intercept_[0]
print(alpha)
#查看参数
beta = lrModel.coef_[0][0]
运行可得:alpha=6.455, beta=0.894。其中beta为式(2)中A的值,alpha即为上述公式中B的值。将A/B带入式(2)可得S=0.894×v2/(2a)+6.455,绘制到上述散点图中代码如下,运行结果如图4所示。
ax1.scatter(data["v^2/2a"],data["s"],s=2)
ax1.set_xlabel("v^2/2a")
ax1.set_ylabel("制动距离m")
a1=np.linspace(16,30,20)
b1=a1*0.894+6.454
plt.plot(a1,b1)
plt.show()
图4 线性回归计算参数验证
基于优化后的参数绘制减速度与制动距离曲线,优化前后曲线分别如图5与图6所示。
由图可知,制动距离理论值与实际值偏差有较大改善。为了准确评估模型改善的程度,可计算改善前后两个模型的R2值。其中R为相关系数,是衡量两个变量之间相关程度的系数。R2为判定系数,反应因变量的全部变异能通过回归关系被自变量解释的比例。如R2为0.8,则表示回归关系可以解释因变量80%的变异,也就是如果能控制自变量不变,则因变量的变异程度会减少80%。
图5 优化前制动距离计算曲线
图6 优化后制动距离计算曲线
计算R2的python代码如下:
def r2(true_values, predicted_values):
n = len(true_values)
mean = np.mean(true_values)
residuals =0
total =0
for i in range(n):
residuals += (true_values[i] - predicted_values [i])**2.
total += (true_values[i]-mean)**2.
return 1.0 - residuals /total
r2(data["s"],data["predict"])
经计算,改善前计算出的R2 值为0.897 3,改善后R2 值为0.991 4。由此可知改善后的制动距离计算公式所得结果与试验数据吻合度提升明显,极大地提升了制动距离计算的有效性。
本文根据车辆整个制动过程列出了制动距离求解的一般公式,并解释了公式中需要经验判定的参数。
通过公式明确了自变量与因变量的线性关系,并通过可视化的方法论证了此观点,通过代码展现了Python实现数据可视化的一般过程。
基于Python建立了线性回归模型,明确了最优化的A、B参数的值。
基于优化结果对优化前后的计算模型进行了评估,明确了优化效果。
![]() |
![]() |
![]() |
![]() |
世展网公众号 |
微信小程序 |
销售客服 |
门票客服 |