0

我正在尝试用python实现一个基本问题os Set覆盖的问题,但是纸浆一直给我错误:AttributeError:'LpAffineExpression'对象没有属性'solve'

这就是我要解决的问题

在此处输入图像描述

这是我的代码:

import pulp as lp 

I = ['A','B','C','D'] 
J = ['1','2','3'] 
h = dict(zip(I, [100,400,230,190]))
 
m_dist = [[9,12,3], [5,7,3], [2,5,8], [12,9,6]]
 
d_m_dist = dict(zip(I, [dict(zip(J, m_dist [i])) for i in range(len(I))]))
Dc = 6
 
modelo = lp.LpProblem ('Cobertura', lp.LpMinimize)
 
x = lp.LpVariable.dicts('Se utiliza la instalación ', J, 0, cat = 'Binary')

modelo = lp.lpSum(x[j] for j in J)
for i in I:
     modelo += lp.lpSum(x[j] for j in J) >= 1
modelo.writeLP('Cobertura.lp') 
modelo.solve() 
print('Status', lp.LpStatus[modelo.status])
4

1 回答 1

0

modelo在定义目标时覆盖了变量,因此它不再是pulp.LpProblem. 利用

modelo += lp.lpSum(x[j] for j in J) 

反而。请注意,+=而不是=. 或者,您可以使用addConstraint()andsetObjective()方法而不是依赖于+=运算符的重载,恕我直言,这更简洁:

modelo.setObjective(sum(x[j] for j in J))

for i in I:
     modelo.addConstraint(sum(x[j] for j in J) >= 1)
modelo.writeLP('Cobertura.lp') 
modelo.solve() 
于 2022-01-16T13:28:53.357 回答