我有 10000 个变量(每个变量都是二进制的)、正系数向量和一个矩阵(), 如果, 然后和th 个变量可以同时取 1,如果取 0 则不可能。目标是最大化它们的加权和。我可以使用什么算法和软件来解决这个问题?
大型二进制编程问题
计算科学
优化
算法
线性求解器
2021-12-14 11:12:48
2个回答
编辑之前的以下答案将“不可能”一词解释为“不可能取 1”。如果我们将其读作“不可能都取 1”,那么这个答案不适用。
如果我正确阅读了这个问题,在我看来,这个问题比最大重量集团问题要容易得多。它似乎是。给定的系数都是正的,因此很明显,给定一组系数的最大加权和将是都为 1 的地方。所以我们希望它们为 1,除非它们不能为 1。初始化为 1,遍历元素,如果这些矩阵元素为 0,则将相应的和设置为 0。然后我们在向量矩阵允许我们拥有,并且加权和最大化。
最好的想法是使用针对您的特定优化问题结构量身定制的算法。
不使用任何专门针对这个问题量身定制的算法,你就有了一个 MINLP,并且没有解决一般大型 MINLP 的真正好方法;在撰写本文时,“大”可能是数百或数千。
格洛弗在将这些问题重新表述为 MILP 方面做了一些工作;基本思想是注意对于,一些有效的不等式成立,比如
您添加这些不等式并将替换为变量。但是,这样的重新表述大大增加了问题中二元变量的数量,所以我怀疑这是一个可行的选择。这个想法的其他版本在重新表述的大小上有所不同,但每个重新表述的大小数量级或多或少是相同的。
其它你可能感兴趣的问题