我有一个问题,其中给出了二维数组的每一行和每一列的总和,我们必须在数组的每个单元格中分配数量。将有一些单元格将被锁定,您不能将它们用于分发。此外,行/列的总量可以是十进制值。
例如,我们有一个 4*3 二维数组
A B C
D E F
G H I
J K L
其中每行之和为 10,20,30,35,每列之和为 35,30,30。
E、I 和 K 被锁定,因此方程变为
E = I = K = 0
A + B + C = 10
D + F = 20
G + H = 30
J + L = 35
A + D + G + H = 30
B + H = 30 and
C + F + L = 30
我使用 Python scipy 和 IBM CPLEX(C#) 尝试了线性 f(x) = Min(x) 和二次求解器 f(x) = Min(x^2)。
线性求解器不会优化分布。
二次求解器有助于这种方法,但它不适用于大小大于 10*10 的数组。求解器以不可行状态失败。
考虑到总数可以有十进制值并且矩阵的大小可以达到 100*10000 ,我应该使用什么方法/库来解决这个问题?