intpolatn 函数从 GEKKO
最大化目标函数接收整数变量 u_hub_next。 intpolatn 只是为了检查
整数是否落在 windvel[0] 和 windvel[1]
之间以及后续的 elif 语句
,然后返回相应的列表,这取决于哪个 elif 条件
满足 u_hub_next 的值。但是,GEKKO
不断抛出错误 TypeError: object of type 'int' has no len() at the if
conditional,因此代码无法继续执行 python 代码的其余部分。下面给出了一段代码,没有成功的 elif
语句,也没有 gekko
部分:我将不胜感激任何指导。
def intpolatn(u_hub_next):
windvel = np.array([0, 3, 4, 6, 7, 14])
thrust_coeff = np.array([0, 0.9, 0.9, 0.7, 0.83, 0.39])
# print(u_hub_next)
if windvel[0] <= u_hub_next < windvel[1]:
m = 0
c_t = 0
axial = 0
p_u = check_p_u(u_hub_next)
u_hub_next = 0
return [u_hub_next, c_t, axial, p_u]
最佳答案
提取 u_hub_next
的值:
uhn = u_hub_next.value[0]
该值为float
类型,因此使用int(uhn)
将其转换为整数类型或Numpy integer types 之一。以获得更多控制。
关于gekko - 如何将 GEKKO 返回的整数转换回 python 可识别的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67402116/