python - 制定线性整数规划约束

标签 python matlab mathematical-optimization linear-programming

我正在尝试为优化问题制定一个约束条件,强制解决方案(产品的组合,用二进制数字表示以表示它们是否被选中)按顺序具有特定属性。

假设选择了产品 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/

相关文章:

python - 如何获取函数的返回值?

python - 如何按名称为特定行和列分配值?

建立排名/评分系统的数学模型

python - xtol 在 minimize(method='Nelder-Mead') 中的作用是什么?

ruby - 如何在 Ruby 中顺序创建 PI

python - 在 pyspark 中累积数据帧的最有效方法是什么?

python - 如何使用 python,BeautifulSoup 获取跨度值

matlab - 如何更改条形图中条形的颜色?

matlab - 如何在 MatLab 中求解精确微分方程?

arrays - 生成并显示分数系列