优化 - 最大化加权贡献的最小值

时间:2014-12-12 21:31:40

标签: algorithm mathematical-optimization

我有一个矩阵。约束是每列只选择一个元素。然后仅使用所选元素计算行总和。目标是最大化行和的最小值。 例如:

矩阵

1 2 3 4 - > 4

2 2 2 2 - > 2 + 2 = 4

3 1 1 3 - > 3

因此,每列所选元素的行和的最小值为min(4,4,3)= 3

如何实现这一目标?除了暴力之外,我无法弄明白,这意味着要经历所有列排列和它们的行总和。看起来这么简单的任务应该有一种更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

通过从3-partition减少来解决这个问题非常困难(准备好几个由3分区输入组成的重复行,每个所需分区一个)。在最坏的情况下,混合整数编程(MIP)求解器可能并不比蛮力好,但它很容易值得一试。假设矩阵a具有m行和n列。在以下整数程序中,当且仅当选择行x(i,j)和列1处的元素a(i,j)时,0-1变量ij

maximize z
subject to
for all i in [1, m], -z + sum for j in [1, n] of a(i,j) x(i,j) >= 0
for all j in [1, n], sum for i in [1, m] of x(i,j) = 1 (or is it <= 1?)
for all i in [1, m], for all j in [1, n], x(i,j) in {0, 1}