TypeError: Must be real number not GKvariable
TypeError: Must be real number not GKvariable
我在 运行 以下代码时出错:
from gekko import GEKKO
m= GEKKO()
sigma = m.Var()
m.Equation((0.5*1.225*(Vt**2)*s*b)*(pb*(beta-sigma) \
+ Cndr*((((Vw**2)*Ss*CDy)/((Vt**2)*s) \
- Cyb*(beta-sigma))/Cydr)) + Fw*dc*math.cos(sigma)==0)
m.solve(disp=False)
print(sigma.value)
在上面的代码中,我想找到变量 sigma 的值。所有其他变量都是已定义的常量。在执行上面的代码时,出现了以下错误。
m.Equation((0.5*1.225*(Vt**2)*s*b)*(x[10]*(beta-sigma)
+ Cndr*((((Vw**2)*Ss*CDy)/((Vt**2)*s)
- Cyb*(beta-sigma))/Cydr)) + Fw*dc*math.cos(sigma)==0)
TypeError: Must be a real number, not GKvariable
我认为问题出在 math.cos(sigma)
,因为当我删除它时它起作用了。
如何解决这个错误?
您不能使用标准库中的 math.cos
,因为正如它所说,它需要一个实际数字(如 float
或 int
)。 GEKKO 有自己的函数可以处理 GKvariable
s。您应该使用 m.cos
而不是 math.cos
https://gekko.readthedocs.io/en/latest/model_methods.html#equation-functions
Special function besides algebraic operators are available through GEKKO functions. These must be used (not numpy or other equivalent functions):
我在 运行 以下代码时出错:
from gekko import GEKKO
m= GEKKO()
sigma = m.Var()
m.Equation((0.5*1.225*(Vt**2)*s*b)*(pb*(beta-sigma) \
+ Cndr*((((Vw**2)*Ss*CDy)/((Vt**2)*s) \
- Cyb*(beta-sigma))/Cydr)) + Fw*dc*math.cos(sigma)==0)
m.solve(disp=False)
print(sigma.value)
在上面的代码中,我想找到变量 sigma 的值。所有其他变量都是已定义的常量。在执行上面的代码时,出现了以下错误。
m.Equation((0.5*1.225*(Vt**2)*s*b)*(x[10]*(beta-sigma)
+ Cndr*((((Vw**2)*Ss*CDy)/((Vt**2)*s)
- Cyb*(beta-sigma))/Cydr)) + Fw*dc*math.cos(sigma)==0)
TypeError: Must be a real number, not GKvariable
我认为问题出在 math.cos(sigma)
,因为当我删除它时它起作用了。
如何解决这个错误?
您不能使用标准库中的 math.cos
,因为正如它所说,它需要一个实际数字(如 float
或 int
)。 GEKKO 有自己的函数可以处理 GKvariable
s。您应该使用 m.cos
而不是 math.cos
https://gekko.readthedocs.io/en/latest/model_methods.html#equation-functions
Special function besides algebraic operators are available through GEKKO functions. These must be used (not numpy or other equivalent functions):