我正在执行一项任务,我必须向所有美国州分配1至10个配送中心。我在excel中建立了一个模型来计算所有的成本,很明显,作业的目标是找到最便宜的方法。我有50行(对于每个状态)和10列(对于所有可能的DC位置)。我的模型是基于这个矩阵,如果我改变矩阵,成本将立即显示。唯一的限制是每个状态都是由一个DC提供的。
显然,我不能手工完成所有可能的组合,我已经尝试将我的模型转换成一个优化程序(AIMMS),但我已经在excel模型中花费了大量的时间。我在想,如果我有所有可能的矩阵(用R,Matlab或Python生成的,不要在意其中的矩阵),我可以循环我的电子表格,让程序读取成本,以确定最佳选择。从理论上讲,1 DC提供所有状态是可能的,最多为10,因此需要每一个可能的1x50、2x50、3x50 . 10x50矩阵来确定最佳状态。
因此,简单地说,是否有可能生成每个nxm二进制矩阵,最好是在R中,或者在Matlab或Python中,每一行的总和为1?
发布于 2019-05-29 10:49:08
TLDR: No.
让我们看看最简单的例子: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将会更.
https://stackoverflow.com/questions/56358243
复制相似问题