上面那个模型中x_sol = s1.cbGetSolution(bnewplan1)报错AttributeError: 'list' object has no attribute '_indexed_data'应该怎么修改
时间: 2023-12-16 13:03:28 浏览: 129
在你的代码中,`bnewplan1`是一个二维列表,而`cbGetSolution`方法期望的是一个一维变量列表。因此,你需要将二维列表转换为一维列表,然后再将其传递给`cbGetSolution`方法。
以下是修改后的代码示例:
```python
def mycallback(s1, where=None):
bnewplan1 = s1._x
if where == GRB.Callback.MIPSOL:
x_sol = [var for sublist in bnewplan1 for var in sublist] # 将二维列表转换为一维列表
feasible_solutions.append(x_sol)
```
在这个修改后的代码中,我们使用了一个列表推导式来将二维列表 `bnewplan1` 转换为一维列表 `x_sol`。通过使用 `for sublist in bnewplan1 for var in sublist` 的嵌套循环,我们可以将所有的变量从子列表中提取出来,并构建一个新的一维列表。
请根据你的具体问题进行适当的修改,并确保将一维列表传递给 `cbGetSolution` 方法。
阅读全文