整数规划公式:哪些算法

数据挖掘 Python 算法
2022-02-25 17:39:11

我有一个复杂的问题,我已经简化为一个简单的整数线性规划公式。

给定标量,向量是已知的。特别是 是测量值(例如:每 10 分钟),而是固定的(以前计算的)。考虑到我有: 即,我必须识别(例如:)元素的存在,每个元素的维度为(例如:)。K>0v(t)RnbiRn,i=1,,Kv(t)bi

K>>n,
KK=20nn=2

因此,对于每个固定,我必须解决的问题具有以下公式:t

minimizexivi=1Kbixi2subject toxi{0,1}, i=1,,K.

你知道哪些算法可以解决这个公式吗?特别是我正在寻找一种用 Python 实现的算法。

3个回答

与您在问题的第一句话中所写的相反,您的问题不是整数线性规划 (ILP) 的实例,不能被表述为 ILP 问题。

如果您使用L1范数(而不是L2范数),则可以将其表述为 ILP 问题。您将引入其他变量t1,,tn,添加线性不等式

tj(vi=1Kbixi)jtj

其中表示个系数,然后最小化目标函数()jjt1++tn

使用范数,这不再是 ILP 问题。整数二次规划的一个实例。您可以尝试为混合整数二次规划 (MIQP) 应用现成的求解器。不过,MIQP 总体来说还是挺难的,不知道会不会有效。L2

作为另一种选择,您可以将 MIQP 实例放松为二次规划或半定性规划的实例,求解实数解,然后将每个实数舍入到最接近的整数(或使用随机舍入),并希望得到的结果解决方案“相当不错”。这在计算上可能更可行(因为实数上的二次规划/半定性规划比 MIQP 更容易),但不能保证得到的解决方案的质量;它可能是任意坏的。

您的问题似乎与格中的最近向量问题(CVP)有关,这被认为是困难的。在这里,您有系数为 0 或 1(而不是任意整数)的附加约束。如果不太大,您也许可以使用现有算法,例如LLL 基础缩减我不知道这是否会奏效。n

您可以重新参数化为,其中是一个常数,因此,然后继续使用您最喜欢的优化方法来查找,然后从那里xixi=sigmoid(αzi),ziRαα1zixi

当然,这可能会出现问题,因为不再受限于,但可能足以满足您的用例。xi{0,1}

另一种选择可能是将您的问题建模为贝叶斯线性回归,其中是遵循伯努利分布的随机变量,概率,即xipixiBernoulli(pi)vN(xTb,σ2)

的后验分布将使您能够告诉的值最有可能与观察到的数据相符。这些后验分布可以通过MCMC变分推理来推断pixi

在 Python 中实现贝叶斯模型的三个主要框架是pymc3示例)、edward示例)和pystan示例)。它们三个允许直接实现如上公式的贝叶斯线性回归。