ERROR: Constructing component 'objective' from data=None failed: TypeError: 'float' object is not subscriptable

ERROR: Constructing component 'objective' from data=None failed: TypeError: 'float' object is not subscriptable

Pyomo 团队, 我需要有关 above-stated 错误的帮助。我已尽我所能,但仍然无法让我的模型工作。下面是我的'Objective Function'的表述,以及错误信息的截图。谢谢。

命令提示符下 运行 代码的错误截图:

假设 model.xmodel.d 使用二维索引正确声明,问题是您使用的是双方括号。访问特定索引的正确方法是 model.x[i,j].

以下是声明 model.xmodel.dmodel.a 的正确方法。

假设 model.a 是二维的:

model.a = Set(initialize=[(1,1),(1,2),(2,1),(2,2)])
model.d = Param(model.a, default=0)
model.x = Var(model.a)

def _obj_rule(m):
    return sum(m.d[i,j]*m.x[i,j] for i,j in m.a)
model.obj = Objective(rule=_obj_rule)

假设 model.a 是一维的:

model.a = Set(initialize=[1,2,3])
model.d = Param(model.a,model.a,default=0)
model.x = Param(model.a,model.a)

def _obj_rule(m):
    return sum(m.d[i,j]*m.x[i,j] for i in m.a for j in m.a)
model.obj = Objective(rule=_obj_rule)

请注意,要么 model.a 被声明为二维的,要么 model.xmodel.dmodel.a 索引两次。另请注意 objective 中总和的书写方式略有不同。