2次元配列の各行と列の合計が与えられ、配列の各セルに金額を分配する必要があるという問題があります。ロックされて配布に使用できないセルがいくつかあります。また、行/列の合計量は小数値にすることができます。
たとえば、4*3 の 2 次元配列があります。
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 になる可能性があるため、この問題を解決するにはどのようなアプローチ/ライブラリを使用する必要がありますか?