TypeError: объект 'GKVariable' не вызывается

Я получаю сообщение об ошибке при запуске следующего кода:

from gekko import GEKKO
m = GEKKO()
U1 = m.Param()
A1 = m.Param()
T2 = m.Var()
T1 = m.Var()
V1 = m.Var()
m.Equation(V1() == U1*A1*(T2-T1))
m.solve()
Traceback (most recent call last):
  File "C:\Users\johnh\Desktop\test.py", line 8, in <module>
    m.Equation(V1() == U1*A1*(T2-T1))
TypeError: 'GKVariable' object is not callable

Как я могу решить эту ошибку?


person saad    schedule 11.03.2020    source источник
comment
Привет и добро пожаловать в SO. Измените свой вопрос каким-нибудь кодом, который вы запускали для создания этого исключения. Одной строки трассировки недостаточно для отладки кем-либо.   -  person medley56    schedule 11.03.2020


Ответы (1)


Ошибка с V1(). Либо оставьте круглые скобки, чтобы сделать это просто V1, либо добавьте производную по времени с помощью V1.dt(). Если это энергетический баланс, вы можете захотеть сделать V1 функцией температуры, например m*cp*T1.dt() с массой m и теплоемкостью cp.

Вот динамическое моделирование:

from gekko import GEKKO
m = GEKKO()
m.time = [0,1,2,3,4,5]
U1 = m.Param(1)
A1 = m.Param(1)
T2 = m.Param(1.1)
T1 = m.Param(1)
V1 = m.Var(0)
m.Equation(V1.dt() == U1*A1*(T2-T1))
m.options.IMODE = 4 
m.solve()
print(V1.value)

Это дает решение V1 = [0,0.1,0.2,0.3,0.4,0.5]

person John Hedengren    schedule 14.03.2020