【问题标题】:AttributeError: 'LpAffineExpression' object has no attribute 'solve', Error in PullpAttributeError:“LpAffineExpression”对象没有属性“解决”,Pullp 中的错误
【发布时间】:2022-01-16 21:31:05
【问题描述】:

我正在尝试实现一个基础问题 os Setcovering with python,但纸浆一直给我错误:AttributeError: 'LpAffineExpression' object has no attribute '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])

【问题讨论】:

    标签: python pulp set-cover


    【解决方案1】:

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

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

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

    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() 
    

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 2021-01-14
      • 2021-03-18
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多