Пример установленного раздела 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-цинк и т. Д. У меня просто проблемы с тем, как сформулировать цель и ограничение, когда есть такое взаимодействие между элементами выбранных наборов (это как если бы элементы в кнут-мешке ненавидели или любили друг друга!)

0 ответов

Другие вопросы по тегам