感谢您的宝贵时间! 我有以下数据:
Name Group ID Grade
Bill A 1 89
Jill A 2 70
Bob A 3 99
Chad A 4 5
Molly B 5 12
Bill B 1 100
Jill B 2 88
我正在使用Pulp来最大化点,但是我只需要B组中的1个和A组中的3个。我遇到的约束是生成没有任何重复名称的列表。所以我收到的是:(2张帐单)
Name Group ID Grade
Bill A 1 89
Jill A 2 70
Bob A 3 99
Bill B 1 100
我自己生成了ID列,希望能够使用它设置约束,但是我失败了多次。 正确的解决方案是这样的:(零重复人员)
Name Group ID Grade
Bill A 1 89
Jill A 2 70
Bob A 3 99
Chad A 4 5
Molly B 5 12
在这里或网络上的任何其他地方都找不到任何可为我提供建议或解决方案的东西。 任何帮助,我们将不胜感激:)
答案 0 :(得分:0)
在不查看变量和代码的情况下还不清楚,但是这个想法是向具有相同名称的条目添加约束:
for name in names:
prob += sum(isEntryUsed[x] for x in range(len(entries)) if entries[x].name == name) <= 1
如果按名称对条目进行分组,则可以更有效地完成此操作。