File ~\.spyder-py3\gurobi_vrp\gurobi再次修改.py:98 in <genexpr> MODEL.setObjective(gurobipy.quicksum((x[i,j,c] * self.C1 * (abs(t[j,c] - self.DueDate[j])) TypeError: bad operand type for abs(): 'gurobipy.LinExpr'
时间: 2023-06-19 19:07:57 浏览: 155
anaconda3安装包Anaconda3-2021.05-Windows-x86_64.exe
5星 · 资源好评率100%
这错误发生在你使用了一个 `gurobipy.LinExpr` 对象作为 `abs()` 函数的参数。这是不允许的,因为 `abs()` 只能用于数字类型的参数。
要解决这个错误,你需要先计算 `abs()` 函数的参数的值,并将其作为数字传递给 `abs()` 函数。你可以使用 `getValue()` 方法来获取 `gurobipy.LinExpr` 对象的值。例如,如果你想计算 `t[j,c] - self.DueDate[j]` 的绝对值,你可以这样做:
```
abs_value = abs(t[j,c].getValue() - self.DueDate[j])
```
然后,你可以将 `abs_value` 作为参数传递给 `setObjective()` 方法,如下所示:
```
MODEL.setObjective(gurobipy.quicksum((x[i,j,c] * self.C1 * abs_value)))
```
这应该可以解决这个错误。
阅读全文