我正在尝试为优化问题制定一个约束条件,强制解决方案(产品的组合,用二进制数字表示以表示它们是否被选中)按顺序具有特定属性。
假设选择了产品 1、2 和 5,则该解决方案由 [1, 1, 0, 0, 1] 表示。这些产品具有另一个必须有序的属性(位置)。用于检查的 Python 函数是:
def products_in_order(products_selected):
locations = [p.location for p in products_selected]
# locations = [80, 79, 81] (for instance)
return max(locations) - min(locations) <= 2
(这是有效的,因为它们永远不会在同一个位置)
但是,它变得更难了。最大位置是 99,环绕:所以 [98, 99, 0] 也是一个有效的解决方案。
始终恰好选择了三个产品。
感谢您提供的任何帮助,我已经为此苦苦挣扎了很长一段时间。现在我正在枚举所有可能的配置,产生 100 个约束(这让事情变得很慢)。
小红书
最佳答案
我最终用我的一个 friend 提出的元解决方案解决了这个问题。
由于选择位置 X 的产品会推断出其他允许的选择(即 X+1 和 X+2),因此优化产品组而不是单个产品是有意义的。我已经构建了这个并且它工作得很漂亮。
感谢您的回复!
关于python - 制定线性整数规划约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611360/