错误:从data = None失败构造组件'objective':TypeError:'float'对象不可订阅

时间:2018-01-11 02:24:18

标签: pyomo

Pyomo团队, 我很乐意帮助解决上述错误。我尽我所能,但仍然无法让我的模型发挥作用。下面是我的“目标函数”的表述,以及错误消息的屏幕截图。谢谢。

enter image description here

命令提示符下运行代码中的错误的屏幕截图: enter image description here

1 个答案:

答案 0 :(得分:0)

假设使用2-D索引正确声明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索引两次。还要注意目标总和的写法略有不同。