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.x
和 model.d
使用二维索引正确声明,问题是您使用的是双方括号。访问特定索引的正确方法是 model.x[i,j]
.
以下是声明 model.x
、model.d
和 model.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.x
和 model.d
被 model.a
索引两次。另请注意 objective 中总和的书写方式略有不同。
Pyomo 团队, 我需要有关 above-stated 错误的帮助。我已尽我所能,但仍然无法让我的模型工作。下面是我的'Objective Function'的表述,以及错误信息的截图。谢谢。
命令提示符下 运行 代码的错误截图:
假设 model.x
和 model.d
使用二维索引正确声明,问题是您使用的是双方括号。访问特定索引的正确方法是 model.x[i,j]
.
以下是声明 model.x
、model.d
和 model.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.x
和 model.d
被 model.a
索引两次。另请注意 objective 中总和的书写方式略有不同。