如何为GEKKO中的ARX仿真模型设置初始输出值?
解决GEKKO ARX模型设置输出初始值的报错问题
报错原因
你直接传入numpy数组作为arx()的y参数,而该函数要求y必须是Gekko的变量对象(如SV或MV)——这类对象自带name属性,numpy数组不具备,因此触发numpy.ndarray object has no attribute 'name'错误。
修改方法
先手动创建带初始值的Gekko输出变量,再将这些变量传入arx()函数,而非直接传入numpy数组。以下是具体修改示例:
from gekko import GEKKO import numpy as np # 假设p是训练完成的ARX模型参数 m = GEKKO() # 定义输出初始值(示例为2输出的情况) y_init = np.array([1.2, 3.5]) # 创建带初始值的Gekko状态变量(SV)作为输出 y = [m.SV(value=y_init[i]) for i in range(len(y_init))] # 创建输入变量(若无需自定义,可省略此步,让arx自动生成) u = [m.MV() for _ in range(p['nu'])] # 传入已定义的y和u调用arx m.arx(p, y=y, u=u) # 后续仿真逻辑(如设置输入序列、求解等) # ...
关键说明
- 使用
m.SV()(状态变量)定义输出,通过value参数指定初始值;若需要可调整的输出,也可用m.MV()(操纵变量)。 - 输入变量
u同理,若无需自定义初始值或约束,可省略创建步骤,直接调用m.arx(p, y=y),函数会自动生成输入变量。
内容的提问来源于stack exchange,提问作者ht2507
相关产品推荐
相关产品推荐

