组合矢量加法最小化问题

时间:2019-03-08 09:59:11

标签: algorithm complexity-theory mathematical-optimization job-scheduling

我正在研究一个问题,感觉它可能类似于数学编程中的现有问题,但是我很难找到任何此类问题。

问题是这样的:我们有 n 个维度为 d 的维向量,这样每个集合都恰好包含了 d +1个向量。在每个集合内,所有向量都具有相同的长度(此外,集合中任何两个向量之间的角度对于任何集合都是相同的,但是我不确定这是否相关)。然后,我们需要从每个集合中精确选择一个向量,并计算这些向量的总和。我们的目标是做出选择,以使向量的总和最小化。

感觉问题似乎与最短向量问题或作业调度的一种变体有关,其中在计算机上调度作业会影响所有计算机或分区问题。

这个问题响了吗?具体来说,我正在寻找解决此问题的方法,因为目前最好的选择是使用ILP,但我认为必须做一些更聪明的事情。

1 个答案:

答案 0 :(得分:3)

我认为这是一个MIQP(混合整数二次编程)或MISOCP(混合整数二阶锥)问题:

让我们

+-------------------+----------+----+
|          timestamp|   eventID|part|
+-------------------+----------+----+
|2018-12-01 11:43:09|event10009| 100|
|2018-12-01 11:43:02|event10003| 100|
|2018-12-01 11:43:11|event10012| 100|
|2018-12-01 11:43:10|event10011| 100|
|2018-12-01 11:43:08|event10007| 100|
|2018-12-01 11:43:02|event10001| 100|
|2018-12-01 11:43:08|event10008| 100|
|2018-12-01 11:43:12|event10013| 100|
|2018-12-01 11:43:09|event10010| 100|
|2018-12-01 11:43:14|event10014| 100|
|2018-12-01 10:11:54| event4357|  43|
|2018-12-01 10:47:33| event6524|  65|
|2018-12-01 10:23:08| event5064|  50|
|2018-12-01 10:23:02| event5060|  50|
|2018-12-01 10:23:39| event5099|  50|
|2018-12-01 10:22:25| event5019|  50|
|2018-12-01 09:16:36| event1042|  10|
|2018-12-01 09:16:03| event1008|  10|
|2018-12-01 09:16:13| event1017|  10|
|2018-12-01 09:17:28| event1092|  10|
+-------------------+----------+----+

那么问题可以表述为:

 v(i,j) be i vectors in group j (data)
 x(i,j) in {0,1}: binary decision variables
 w: sum of selected vectors (decision variable)

如果需要,可以替换为 min ||w|| sum(i, x(i,j)) = 1 for all j w = sum((i,j), x(i,j)*v(i,j)) 。确实,我没有使用角度限制(这是对数据的限制,而不是对模型的决策变量的限制)。选择w变量是为了使我们从每个组中选择一个向量。

可以通过最小化元素平方的和(即最小化范数的平方)来代替最小化2范数。

假设2范数,这是一个MISOCP问题或凸MIQP问题,可以使用许多求解器。对于1-范数和无穷范数,我们可以制定一个线性MIP问题。 MIP求解器广泛可用。