动态变量定义中 pyomo 中的错误消息

Error message in pyomo in dynamic variable definition

我正在尝试使用 pyomo 复制 this article 的最速同步优化。不幸的是,由于语法无效,我收到了一条错误消息。这段代码如下:

def f_x_definition_FLIGHT(model, i):
    return m.f_x_FLIGHT[i] == math.sqrt(2*g*m.y[i])*math.cos(m.angle[i])
m.f_x_FLIGHT = Constraint(m.N_notinitial rule = f_x_definition_FLIGHT)

无效语法出现在第三行,在m.f_x_FLIGHT =...

我也构造了Y轴动态变量为

def f_y_definition_FLIGHT(model, i):
    return m.f_y_FLIGHT[i] == math.sqrt(2*g*m.y[i])*math.sin(m.angle[i])
m.f_y_FLIGHT = Constraint(m.N_notinitial rule = f_y_definition_FLIGHT)

那里没有问题。

动态函数构建为

m.f_x_FLIGHT             = Var(m.N_notinitial, domain = Reals) 
m.f_y_FLIGHT             = Var(m.N_notinitial, domain = Reals) 

所以我找不到语法错误的原因

最后是m.N_notinitial后面少了一个逗号;如果写成m.f_x_FLIGHT = Constraint(m.N_notinitial, rule = f_x_definition_FLIGHT)

,代码工作正常