寻找 NxM 数组的每列 x 数和每行 y 数的最佳选择

问题描述

给定一个 NxM 的正整数数组,如何选择整数以便在每行中有最多 x 个选择、每列中有 y 个选择的情况下实现最大的值总和。这是我在制作 NCAA 游泳阵容时试图面对的问题的抽象。每个游泳运动员在每个事件中都有一个时间,可以使用 USA Swimming Power Points Calculator 将其转换为整数,越高越好。一旦你转换了这些时间,我想为每个项目分配不超过 3 名游泳运动员,每个游泳运动员不超过 3 场比赛,以便使力量得分的总和最大化。我认为这与 Weapon-targeting assignment problem 类似,但该问题允许武器类型多次攻击同一个目标(在我的情况下允许单个游泳者在同一事件中比赛两次)并且这对我不起作用案件。有人知道 wta 问题的这种变化被称为什么吗?如果知道的话,您知道我可以寻找的任何解决方案或资源吗?

解决方法

这是一个数学模型:

数据

Let a[i,j] be the data matrix
and   
    x: max number of selected cells in each row 
    y: max number of selected cells in each column 

(注意:这有点不寻常:我们通常为变量保留名称 x 和 y。这些约定有助于提高可读性)。

变量

 δ[i,j] ∈ {0,1} are binary variables indicating if cell (i,j) is selected.

优化模型

 max sum((i,j),a[i,j]*δ[i,j])
 sum(j,δ[i,j]) ≤ x   ∀i
 sum(i,j]) ≤ y   ∀j
 δ[i,1}

这可以输入任何 MIP 求解器。