PyFMI - разные результаты между обменом моделями и совместным моделированием?

При моделировании проблемы тележки как FMU в PyFMI я получаю разные результаты, дающие одинаковые данные, в зависимости от того, использую ли я "обмен моделями" или "совместное моделирование". Результаты ME верны, результаты CS кажутся совершенно неверными.

Результаты обмена моделями

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 по умолчанию

Я подозреваю, что это связано с настройками решателя, но они не могут быть установлены в случае CS? Когда я устанавливаю "ncp" на очень большое число, ошибка уменьшается. Большое спасибо за ваши ответы!

результаты совместного моделирования с высоким ncp

Ура

1 ответ

Решение

В OpenModelica Эйлер в настоящее время является единственным поддерживаемым решателем при экспорте FMU совместного моделирования, как указано здесь. Версия 1.16 OpenModelica должна решить эту проблему.

Другие вопросы по тегам