ฅฅ533 2024-03-14 17:18 采纳率: 0%
浏览 10
已结题

城轨列车制动模型参数辨识

是否有关于制动模型(一阶纯时滞惯性环节)参数辨识的代码?已知输入输出,但是用MATLAB的ident模块进行辨识最后得到的传递函数不对,没有延迟环节了,而且拟合度只有60-70%。感觉可能是处理数据时出现了问题,输入的是目标加速度没有问题,现在设置的输出是实际的加速度,感觉不太对,因为不是连续时间了,是单独拿出来一组速度数据进行计算出来的加速度,每个制动级位对应一个实际加速度(这个实际加速度是我用好几组实际速度计算每组对应的加速度之后求平均算出来的),这样就是离散的数据了。感觉应该是在确定的某一制动级位下,实际的速度(连续时间)作为输出,分好几组数据作为输出。论文和书里面是把参数辨识问题转换为了优化问题进行处理的,优化目标就是使得模型响应与实际响应误差最小。因此我觉得应该不能直接使用MATLAB的辨识工具箱了,所以我上面算的是错的。

  • 写回答

10条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-14 17:18
    关注

    引自免费微信小程序:皆我百晓生

    针对城轨列车制动模型参数辨识问题,您提到的模型是一阶纯时滞惯性环节,其传递函数形式一般可以表示为:

    [ G(s) = \frac{K}{1 + Ts} e^{-\theta s} ]

    其中,( K ) 代表比例系数,( T ) 是时间常数,( \theta ) 是纯时滞。

    在处理离散数据时,确实需要将连续时间模型转换为离散时间模型,并且采用合适的采样时间进行辨识。MATLAB 的 ident 工具箱对于简单的系统可能直接适用,但对于包含纯时滞环节的复杂系统,可能需要定制化方法或使用优化工具箱(如 fmincon)结合目标函数来求解辨识问题。

    这里提供一个基于Python和SciPy库实现参数辨识的大致思路与代码框架,假设您的数据已经存放在两个数组中:target_acc 为目标加速度序列,measured_acc 为实际测得的加速度序列。

    import numpy as np
    from scipy.optimize import minimize
    
    # 定义一阶纯时滞系统的离散传递函数
    def dt_system(K, T, theta, Ts, u):
        # 这里u是输入信号序列(目标加速度)
        # 根据离散系统的公式转换连续时间模型为离散时间模型
        # 对于一阶纯时滞环节,可参考Z变换方法进行转换
        # ...
        
        # 计算输出响应
        y = ...  # 基于K, T, theta, Ts和u计算出y序列
        return y
    
    # 定义误差函数,即模型预测值与实际测量值之间的均方误差
    def error_function(params, target_acc, measured_acc, Ts):
        K, T, theta = params
        model_output = dt_system(K, T, theta, Ts, target_acc)
        
        # 计算均方误差
        mse = np.mean((model_output - measured_acc)**2)
        return mse
    
    # 初始猜测参数
    initial_guess = [1.0, 1.0, 0.1]  # K, T, theta的初始值
    
    # 实际数据的采样时间Ts
    Ts = ...  # 请替换为实际的采样时间
    
    # 运行优化算法
    result = minimize(error_function, initial_guess, args=(target_acc, measured_acc, Ts), method='L-BFGS-B')
    
    # 输出辨识得到的最优参数
    optimal_params = result.x
    print("Optimal parameters: K =", optimal_params[0], "T =", optimal_params[1], "theta =", optimal_params[2])
    

    请注意,在上述代码中,dt_system 函数的具体内容需要根据离散时间系统理论对一阶纯时滞环节进行转化。同时,辨识过程可能受到噪声、采样频率等因素的影响,你可能需要对数据进行预处理(例如平滑、去趋势等),或者在优化过程中加入约束条件以保证物理意义上的合理性。

    此外,由于实际应用中可能存在多个制动级位下的不同数据集,你可能需要整合这些数据,或者分别针对每一套数据进行辨识并综合评估结果。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见