gpt4 book ai didi

python - PyFMI 模型交换和联合仿真结果不同?

转载 作者:行者123 更新时间:2023-11-30 21:53:22 25 4
gpt4 key购买 nike

当在 PyFMI 中将 cartpole 问题模拟为 FMU 时,根据我是否使用“模型交换”或“协同模拟”,我会得到不同的结果,给出相同的输入。 ME 结果是正确的,CS 结果似乎完全错误。

模型交换结果

model exchange results

model = load_fmu(fmu='CartPole.fmu', 
kind='ME')

model.set('theta_0', 0)
model.set('m_cart', 20)
model.set('m_pole', 5)
model.set('length', 2)
model.set('poleCartConnection.density', 0)
model.set('f', 0)
res = model.simulate(start_time=0, final_time=10)


plt.plot(res['f'])
plt.plot(res['x'])
plt.plot(res['x_dot'])
plt.plot(res['theta'])
plt.plot(res['theta_dot'])
plt.legend(['f', 'x', 'x_dot', 'theta', 'theta_dot'])
plt.show()

相比(即完全相同,但使用 CS 而不是 ME)

model = load_fmu(fmu='CartPole.fmu', 
kind='CS')

model.set('theta_0', 0)
model.set('m_cart', 20)
model.set('m_pole', 5)
model.set('length', 2)
model.set('poleCartConnection.density', 0)
model.set('f', 0)
res = model.simulate(start_time=0, final_time=10)


plt.plot(res['f'])
plt.plot(res['x'])
plt.plot(res['x_dot'])
plt.plot(res['theta'])
plt.plot(res['theta_dot'])
plt.legend(['f', 'x', 'x_dot', 'theta', 'theta_dot'])
plt.show()

使用默认 ncp 的联合仿真结果

co-simulation results with default ncp

我怀疑这是由于解算器设置造成的,但是这些不能在CS案例中设置?当我将“ncp”设置为非常高的数字时,错误会减少。非常感谢您的回复!

高 ncp 联合仿真结果

co-simulation with high ncp

干杯

最佳答案

在 OpenModelica 中,Euler 是当前导出联合仿真 FMU 时唯一支持的求解器 as stated here 。 OpenModelica 1.16 版本应该可以解决这个问题。

关于python - PyFMI 模型交换和联合仿真结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59685665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com