如何修复:TypeError:只能添加LpConstraintVar,LpConstraint,LpAffineExpression或True对象

时间:2019-05-16 09:35:34

标签: python pulp

我正在尝试使用PuLP创建LP。通过计算.csv的行并为每行添加一个来生成决策变量。当我要创建目标函数时,它会返回TypeError。

optimale_bestellmenge = ""
for rownum, row in data.iterrows():
    for i, schedule in enumerate(decision_variables):
        if rownum == i:
            formula = sqrt(2 * row['Kosten'] *row['bedarf'] / row['hkosten'])
            optimale_bestellmenge += formula

prob += optimale_bestellmenge
print ("Zielfunktion: " + str(optimale_bestellmenge))

我确实知道什么是TypeError,但是我不知道应该如何将公式转换为哪种Type。这是完整的错误:

Traceback (most recent call last):
  File "C:/Users/T/Desktop/optimizer/eoq.py", line 62, in <module>
    optimales_eoq_modell(budget)
  File "C:/Users/T/Desktop/optimizer/eoq.py", line 37, in optimales_eoq_modell
    prob += optimale_bestellmenge
  File "C:\Users\T\AppData\Local\Programs\Python\Python37\lib\site-packages\pulp\pulp.py", line 1358, in __iadd__
    raise TypeError("Can only add LpConstraintVar, LpConstraint, LpAffineExpression or True objects")
TypeError: can only concatenate str (not "float") to str

我已经尝试过使用str()函数转换公式,但是TypeError仅更改为:

TypeError: Can only add LpConstraintVar, LpConstraint, LpAffineExpression or True objects

1 个答案:

答案 0 :(得分:0)

这是一个字符串:

optimale_bestellmenge = ""

这是一个浮点数:

formula = sqrt(2 * row['Kosten'] *row['bedarf'] / row['hkosten'])

这是您要在字符串中添加浮点数的方法:

optimale_bestellmenge += formula

如果只希望formula数字出现在optimale_bestellmenge字符串的末尾,请执行以下操作:

optimale_bestellmenge += str(formula)

如果要继续将formula中的数字添加到optimale_bestellmenge中,请将optimale_bestellmenge的定义更改为浮点数或整数:

optimale_bestellmenge = 0