我正在做一个分配工作,我必须向美国所有州分配最多10个配送中心中的1个。我已经在excel中建立了一个模型来计算所有成本,显然,分配的目标是找到最便宜的方法。我有50行(每种状态)和10列(所有可能的DC位置)。我的模型基于该矩阵,如果我更改矩阵,成本将立即显示。唯一的限制是每个状态都由1个DC供电。
很明显,我无法手动进行所有可能的组合,我试图将我的模型转换为优化程序(AIMMS),但这需要花费我已经放入excel模型中的时间。我在想如果我有所有可能的矩阵(用R,Matlab或Python生成,不在乎),我可以遍历电子表格,让程序读取成本,以确定最佳选择。从理论上讲,它可以通过1个DC提供最多的状态,最多可以提供10个状态,因此需要每个可能的1x50、2x50、3x50 ... 10x50矩阵来确定最佳状态。
那么简而言之,是否有可能生成每个nxm二进制矩阵,并且最好在R的每一行上生成总和为1的矩阵,否则可以在Matlab或Python中生成?
答案 0 :(得分:1)
TLDR:否。
让我们看一个最简单的示例:2 DC。您可能的行将是:
(1,0)
(0,1)
现在,您要构造所有可能的2x50矩阵。它们的数量为2 ^ 50(50行中可能有2行)。等于:
1125899906842624
我们假设每个矩阵存储100个字节。所有2x50矩阵将存储:
(2**50) * 100 / 1024 / 1024 / 1024 / 1024 = 102400
兆字节数据。
要处理所有这些问题(对于普通计算机而言,最乐观的结果)将花费等于:
(2**50) / 10**9 / 60 / 60 = 312
小时。
10x50甚至会更多...