首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成所有可定位的二进制nxm矩阵,其中每一行的和为1

如何生成所有可定位的二进制nxm矩阵,其中每一行的和为1
EN

Stack Overflow用户
提问于 2019-05-29 10:18:37
回答 1查看 174关注 0票数 1

我正在执行一项任务,我必须向所有美国州分配1至10个配送中心。我在excel中建立了一个模型来计算所有的成本,很明显,作业的目标是找到最便宜的方法。我有50行(对于每个状态)和10列(对于所有可能的DC位置)。我的模型是基于这个矩阵,如果我改变矩阵,成本将立即显示。唯一的限制是每个状态都是由一个DC提供的。

显然,我不能手工完成所有可能的组合,我已经尝试将我的模型转换成一个优化程序(AIMMS),但我已经在excel模型中花费了大量的时间。我在想,如果我有所有可能的矩阵(用R,Matlab或Python生成的,不要在意其中的矩阵),我可以循环我的电子表格,让程序读取成本,以确定最佳选择。从理论上讲,1 DC提供所有状态是可能的,最多为10,因此需要每一个可能的1x50、2x50、3x50 . 10x50矩阵来确定最佳状态。

因此,简单地说,是否有可能生成每个nxm二进制矩阵,最好是在R中,或者在Matlab或Python中,每一行的总和为1?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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将会更.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56358243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档