PyFMI разные результаты обмена моделями и совместного моделирования? - PullRequest
1 голос
/ 10 января 2020

При моделировании проблемы с карполом в качестве FMU в PyFMI я получаю разные результаты, которые дают один и тот же вход в зависимости от того, использую ли я «обмен моделями» или «совместное моделирование». Результаты 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

Приветствия

1 Ответ

3 голосов
/ 12 января 2020

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

...