✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 具体问题可以私信或扫描文章底部二维码。
(1)整车动力传动系统建模与基础换挡策略制定
在重型商用车机械式自动变速器(AMT)的研究中,整车动力传动系统建模是基础且关键的一步。通过Truck Sim和MATLAB/Simulink建立的联合仿真平台,集成了发动机模型、传动系统模型、挡位决策模型以及整车纵向动力学模型。这一平台不仅能够模拟发动机的动态响应,还能模拟传动系统的工作状态和整车的动力学行为。实车试验验证了仿真平台的准确性,为挡位决策的开发提供了可靠的仿真平台基础
。在此基础上,分析了基本换挡策略的类型与特点,并采用解析法设计了以车速和油门开度为控制参数的基础动力性与经济性挡位决策方法。同时,从动力性、经济性以及驾驶性三方面构建了商用车AMT挡位决策评价指标,为挡位决策优化及其对比分析提供了基础评价指标
。
(2)基于数据驱动的整车质量估计方法研究
为了提高重型商用车整车质量估计的准确性与稳定性,本研究提出了基于数据驱动的整车质量估计方法。首先利用车联网平台获取预见性的道路信息,如道路坡度、道路曲率等,并将这些道路信息应用于整车质量估计与挡位决策系统中。接着,利用RBF神经网络对车辆行驶历史数据进行学习,通过学习后的数据与实际采集数据的对比计算置信因子,用置信因子来表征车辆行驶状态。采用带遗忘因子的最小二乘法对整车质量进行估计,并利用置信因子对控制增益进行修正,从而获得更加精准的估计值。通过实车数据仿真以及实车试验,验证了所提出的基于数据驱动的整车质量估计方法的有效性,所提出的算法对整车质量估计误差在2%左右
。
(3)弯道、坡道工况下换挡策略优化问题研究
针对弯道、坡道工况下的换挡策略优化问题,本研究建立了考虑多维因素影响的换挡策略架构。分析挡位决策影响因素,通过对整车状态以及预见性道路状态输入、动力传动系统限制计算、换挡策略选择以及最终挡位决策计算四个步骤,完成考虑多维因素影响的换挡策略,并针对坡道、弯道工况提出相应的换挡策略。通过仿真分析的方法验证了所提出的坡道与弯道工况换挡策略的有效性
。
(4)基于双层控制架构的多时间尺度的预见性挡位决策方法研究
为了提升挡位决策系统对未来不确定性行驶工况的适应性,降低车辆燃油消耗,本研究提出了基于双层控制架构的多时间尺度的预见性挡位决策方法。构建基于长短期记忆神经网络模型的车速预测模型,对未来工况车速进行预测。将通过车联网平台获取的预见性道路信息以及对车辆在预测时域内状态的预测作为输入,构建基于双层控制架构的多时间尺度的预见性挡位决策方法。上层基于动态规划(Dynamic Programming, DP),建立兼顾经济性以及驾驶性的挡位决策优化问题,采用DP算法对长时域内的挡位序列进行优化,并将优化后的挡位序列作为下层控制器在预测时域内的挡位决策依据。下层控制器结合车辆短时域内的预测工况信息,建立考虑经济性的挡位决策优化问题,基于Levenberg-Marquardt算法进行短时域内的挡位实时优化。通过仿真验证了所提出的预见性挡位决策方法相比于经济性换挡策略可以进一步降低燃油消耗
import numpy as np
def F(x, y):
# 定义目标函数,这里以一个简单的非线性函数为例
return (x - 3)**2 + (y - 2)**2
def partial_derivate_xy(F):
# 计算目标函数的偏导数
def partial_x(x, y):
return 2 * (x - 3)
def partial_y(x, y):
return 2 * (y - 2)
return partial_x, partial_y
def damping_newton(x, y, F, l):
fx = F(x, y)
grad_x, grad_y = partial_derivate_xy(F)
grad = np.array([grad_x(x, y), grad_y(x, y)])
H = np.matmul(grad, grad.T) + l * np.eye(2)
g = - grad * fx
vec_delta = np.matmul(np.linalg.inv(H), g)
vec_opt = np.array([[x], [y]]) + vec_delta
x_opt = vec_opt[0][0]
y_opt = vec_opt[1][0]
rho = (F(x_opt, y_opt) - F(x, y)) / (np.matmul(grad.T, vec_delta))
if rho < 0.25:
l *= 2
if rho > 0.75:
l *= 0.5
return x_opt, y_opt, vec_delta, l
def optimizer(x0, y0, F, th=0.0001):
x = x0
y = y0
l = 1
while True:
x_opt, y_opt, vec_delta, l = damping_newton(x, y, F, l)
if np.linalg.norm(vec_delta) < th:
break
x = x_opt
y = y_opt
return x, y
# 初始值
x0 = 2.
y0 = 2.
# 优化
result_x, result_y = optimizer(x0, y0, F)
print("Optimized (x, y) =", result_x, result_y)