Пример установленного раздела PuLP, кажется, делает слишком много работы?
Я пытаюсь решить проблему, очень похожую на приведенный ниже пример: https://pythonhosted.org/PuLP/CaseStudies/a_set_partitioning_problem.html
При этом используется структура оптимизации, называемая PuLP, для назначения мест гостям на свадьбе.
Чтобы обеспечить некоторый контекст, у меня есть N гостей, T столов и максимум S мест за каждым столом. У меня есть матрица затрат (N на N), которая показывает, сколько каждый гость хочет сидеть с другим гостем.
В первом разделе кода они создают список всех возможных таблиц:
possible_tables = [tuple(c) for c in pulp.allcombinations(guests,
max_table_size)]
Это не имеет смысла для меня. Я не ожидал, что генерация таблиц кандидатов будет выполнена вне алгоритма.
Это сильно отличается от просто делать N choose K
чтобы сгенерировать кандидатов, оценить сгенерированные таблицы с использованием матрицы затрат и выбрать лучшие таблицы?
Я не ограничен использованием PuLP. Я смотрел на cvxpy, jump, mini-цинк и т. Д. У меня просто проблемы с тем, как сформулировать цель и ограничение, когда есть такое взаимодействие между элементами выбранных наборов (это как если бы элементы в кнут-мешке ненавидели или любили друг друга!)