Python Pyomo出现错误:检测到常量目标,替换为占位符以防止解算器失败

2024-05-02 10:43:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Pyomo解决一个数学规划问题

这是我的密码:

model = AbstractModel()

*####communities*

model.I = set()

*####suppliers*

model.J = set()

model.c = Param(model.J)  

model.p = Param(model.I)  

model.s = Param(model.J)  

model.e = Param(model.J)  

model.b = Param(model.I)  

决策变量总共有19*6=114

model.q = Var(model.I,model.J,domain = NonNegativeReals) #bought quantity 

目标函数的定义

def obj_expression(model): 
    return sum(model.c[j]*sum(model.q[i,j] for i in model.I) for j in model.J)  
 
      
model.OBJ = Objective(rule=obj_expression)

####q11+q12+q13...q1j >= pi

def cons_1(model, i): 
     return sum(model.q[i,j] for j in model.J) >= model.p[i]
model.vaccine_quantity = Constraint(model.I, rule = cons_1)

疫苗j总量小于供应j

def cons_2(model,j):
    return sum(model.q[i,j] for i in model.I) <= model.s[j]
model.supply = Constraint(model.J, rule = cons_2)

预算

def cons_3(model, i):
    return sum(model.q[i,j] for j in model.J) <= model.b[i]

我的数据:

param J : c        s      e :=

"China 1" 10      1000   0.6

"Russian" 10      700    0.92

"UK"      3       2000   0.76

;
param I :                    p         b   :=  
"Andalucia"                  845      40000

"Aragón"                     132      35000

"Principado de Asturias"     275      10000

"Comunitat Valenciana"       500      40000
;

我已经复习了好几遍,但我不知道问题出在哪里。 警告是:

WARNING: Constant objective detected, replacing with a placeholder to prevent
    solver failure.
WARNING: Empty constraint block written in LP format - solver may error
[    0.05] Processing results
    Number of solutions: 1
    Solution Information
      Gap: 0.0
      Status: feasible
      Function Value: 0.0
]

Tags: inobjformodelreturnparamdefrule