Python Pulp - Избежание дублирующихся записей в решении - PullRequest
0 голосов
/ 10 ноября 2018

Спасибо, что уделили время!У меня есть следующие данные:

    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 для максимизации баллов, но мне нужна только 1 группа B и 3 группы A. Ограничение, с которым у меня возникают проблемы, заключается в создании списка безлюбые дублированные имена.Итак, я получаю следующее: (2 счета)

    Name    Group    ID    Grade
    Bill    A        1     89
    Jill    A        2     70
    Bob     A        3     99
    Bill    B        1     100

Я сгенерировал столбец идентификатора самостоятельно в надежде, что смогу установить с ним ограничение, но мне не удалосьмногократно.Правильным решением было бы что-то вроде: (ноль дублирующих людей)

    Name    Group    ID    Grade
    Bill    A        1     89
    Jill    A        2     70
    Bob     A        3     99
    Chad    A        4     5
    Molly   B        5     12

Я не мог найти ничего здесь или где-либо еще в Интернете, которое давало бы мне совет или решение.Любая помощь с благодарностью:)

1 Ответ

0 голосов
/ 26 ноября 2018

Неясно, не глядя на ваши переменные и код, но идея состоит в том, чтобы добавить ограничения для записей с одинаковыми именами:

for name in names:
    prob += sum(isEntryUsed[x] for x in range(len(entries)) if entries[x].name == name) <= 1

Это можно сделать более эффективно, если вы группируете записи по имени.

...