问题描述
给定一个 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 求解器。