ошибка при создании 2-го кортежа в качестве входных данных для model.simulate () модели fmu с pyfmi - PullRequest
0 голосов
/ 04 июня 2019

У меня есть fmu, созданный в gt-suite. Я пытаюсь работать с ним в Python, используя пакет PyFMI Python. Мой код

from pyfmi import load_fmu
import numpy as np

model = load_fmu('AHUPIv2b.fmu')

t = np.linspace(0.,100.,100) 
u = np.linspace(3.5,4.5,100)
v = np.linspace(900,1000,100)
u_traj = np.transpose(np.vstack((t,u)))
v_traj = np.transpose(np.vstack((t,v)))

input_object = (('InputVarI','InputVarP'),(u_traj,v_traj))
res = model.simulate(final_time=500, input=input_object, options={'ncp':500})

res = model.simulate(final_time=10)

model.simulate принимает входные данные в качестве одного из своих параметров, говорится в документации

input --
        Input signal for the simulation. The input should be a 2-tuple
        consisting of first the names of the input variable(s) and then
        the data matrix.

InputVarI, InputVarP - входные переменные, а u_traj, v_traj - матрицы данных.

Мой код выдает ошибку выдает ошибку -

TypeError: tuple indices must be integers or slices, not tuple

Объект input_object создан неправильно? Может кто-нибудь помочь с тем, как правильно создать входные кортежи согласно документации?

1 Ответ

1 голос
/ 04 июня 2019

Объект ввода создан неверно. Вторая переменная во входном кортеже должна представлять собой одну матрицу данных, а не две матрицы данных.

Правильный ввод должен быть:

data = np.transpose(np.vstack((t,u,v)))
input_object = (['InputVarI','InputVarP'],data)

См. Также Изменение параметра pyFMI не меняет выходной сигнал симуляции

...