0

我是使用 pyomo 的新手并遇到以下错误:/var/folders/dk/932rtpm52sg0jdzzkz81mhn00000gn/T/tmp7Psz4a.pyomo.lp:5:缺少约束部分

我的约束是:

matrix_bis = np.ones((size_node, size_node))
c11_param = matrix_bis.copy()
c11_param = np.tril(c11_param)
param11 = np.dot(c11_param, m.Y)

# Constraints
def c11_rule(m,j):
    for e in node_set:
        return (data.ix[e, 'cp_min'], c11_param[e,j]*m.Y[e], data.ix[e, 'cp_max']/interval)
    else:
        return pe.Constraint.Skip
m.c11 = pe.Constraint(node_set, rule = c11_rule)

非常感谢任何帮助。

4

1 回答 1

0

我不确定这是否是您的错误的原因,但我看到的第一个问题是您不需要约束规则内的 for 循环。通过将约束声明为对 node_set 的索引,规则将自动为 node_set 中的每个值调用一次。看起来你正在区分 c11_param 中的索引“e”和索引“j”,所以我猜你想索引 node_set 的叉积上的约束。您也不需要 Constraint.Skip。也许是这样的:

def c11_rule(m, j, e):
    return (data.ix[e,'cp_min'], c11_param[e,j]*m.Y[e], data.ix[e, 'cp_max']/interval)
m.c11 = Constraint(node_set, node_set, rule=c11_rule)
于 2017-03-30T17:37:30.143 回答