我正在尝试解决一个非常类似于此处示例的问题: 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-zinc等。当所选集合的元素之间存在这种相互作用时,我只是在如何制定目标和约束方面遇到麻烦(就好像在敲打麻袋问题中的项目令人讨厌一样)或彼此相爱!)