add.Constrs Gurobi中的嵌套循环

2024-07-03 06:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在拾取节点和传递节点之间添加一些时间约束,并且我想对传递节点的时间高于与其关联的拾取节点的时间这一事实进行建模

这是我的代码:

for i in df_d.id:
m.addConstrs((B[i] >= B[j] for j in df_d.loc[df_d.id == i,"associati"]), name="temporal")

我得到这个错误: enter image description here

结果:

for i in df_d.id:
    for j in df_d.loc[df_d.id == i,"associati"]:
         print(j)

有点像:

enter image description here

所以问题是,当我把j传递给B[j]时,它是一个列表,而不是一个int,我需要遍历这个列表


Tags: 代码nameiniddf列表for节点
2条回答

这似乎有效:

m.addConstrs((B[j] >= B[i]  for index_i,i in df_p.id.items()          
                            for j in df_p.loc[index_i,"associati"]),name="temporal")

Model.addConstrs()的思想是将生成器表达式(循环)合并到表达式中,因此我将其重写为:

m.addConstrs((B[i] >= B[j] for i in df_d.id
                           for j in df_d.loc[df_d.id == i,"associati"]),
             name="temporal")

如果失败,则调查您的数据帧

相关问题 更多 >