-1

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 になる可能性があるため、この問題を解決するにはどのようなアプローチ/ライブラリを使用する必要がありますか?

4

1 に答える 1