[英]No objectives defined for input model. Cannot write legal LP file
I just write my pyomo model and i want to solve them but i got this Error:我刚刚写了我的 pyomo model 我想解决它们但是我得到了这个错误:
ERROR: No objectives defined for input model. Cannot write legal LP file.
错误:没有为输入 model 定义目标。无法写入合法的 LP 文件。
here is my code这是我的代码
import pyomo.environ as pyo
import sys
model = pyo.ConcreteModel()
model.i = pyo.Set(initialize=[1,2,3])
model.j = pyo.Set(initialize=[1,2])
data_d = {1:50 , 2:50 , 3:100}
model.d = pyo.Param(model.i , initialize=data_d)
data_d_p = {1:200 , 2:250 , 3:150}
model.d_p = pyo.Param(model.i , initialize=data_d_p)
model.X = pyo.Var(model.i , model.j ,domain = pyo.NonNegativeIntegers, initialize = 0)
model.Y = pyo.Var(model.i , model.j ,domain = pyo.NonNegativeIntegers, initialize = 0)
model.obj = model.Objective(expr = (model.X[1,1] + model.Y[1,1]) + 2 * (model.X[1,2] + model.Y[1,2]) +
2 * (model.X[2,1] + model.Y[2,1]) + (model.X[2,2] + model.Y[2,2]) +
(model.X[3,1] + model.Y[3,1]) + (model.X[3,2] + model.Y[3,2]) , sense = pyo.minimize)
def xi_constraint_rule(m, i):
return sum(m.X[i,j] for j in m.j)
def yi_constraint_rule(m, i):
return sum(m.Y[i,j] for j in m.j)
def xj_constraint_rule(m, j):
return sum(m.X[i,j] for i in m.i)
def yj_constraint_rule(m, j):
return sum(m.Y[i,j] for i in m.i)
model.first_const = pyo.ConstraintList()
for i in model.i:
model.first_const.add(xi_constraint_rule(model, i) == pyo.value(model.d[i]))
model.second_const = pyo.ConstraintList()
for i in model.i:
model.second_const.add(yi_constraint_rule(model, i) == pyo.value(model.d_p[i]))
model.third_const = pyo.ConstraintList()
for j in model.j:
model.third_const.add(xj_constraint_rule(model, j) >= 0.25 * (xj_constraint_rule(model, j) + yj_constraint_rule(model, j)))
model.fourth_const = pyo.ConstraintList()
for j in model.j:
model.fourth_const.add(xj_constraint_rule(model, j) + yj_constraint_rule(model, j) >= 300)
model.fifth_const = pyo.ConstraintList()
for j in model.j:
model.fifth_const.add(xj_constraint_rule(model, j) + yj_constraint_rule(model, j) <= 500)
how i can solve this Error?我该如何解决这个错误? Thank for your help!
感谢您的帮助!
I want to solve LP problem in pyomo我想解决 pyomo 中的 LP 问题
You have an unfortunate typo in your objective function statement.不幸的是,您的目标 function 声明中有一个拼写错误。 Instead of referencing the Objective construction function in
pyo
, you made a nonsensical model component.您没有在
pyo
中引用 Objective 构造 function,而是创建了一个无意义的 model 组件。
Change this:改变这个:
model.obj = model.Objective(expr = (model.X[1,1] + model.Y[1,1])...
To this:对此:
model.obj = pyo.Objective(expr = (model.X[1,1] + model.Y[1,1])...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.