3

我有大约 700 个元素,想要创建 20 个的组合。可能的组合总数是 [700 C 20] ~ 2.5e+38 个组合。这个大数据集属于图的规范。这是一个图优化问题,因此,我什至想将约束应用于这组组合。

我正在使用R!出于此目的,因为它具有丰富的软件包范围和大型数据集处理能力。我正在使用“组合”包。但问题是,当我尝试计算这个时,我收到以下错误:

combn(theDataSet,20,myFunction)
Error in matrix(r, nrow = len.r, ncol = count) : 
  invalid 'ncol' value (too large or NA)
In addition: Warning message:
In combn(theDataSet, 20, myFunction) : NAs introduced by coercion

对此问题的任何解决方案、替代包或算法表示赞赏。也许有任何处理结果的方法?

由于这是图优化问题,因此也非常感谢任何与此相关的包或算法。

或者,如果有任何其他可用于解决此类问题的工具,请告诉我。

我是电子专业的,所以我不太了解图形优化的高级算法,我不得不采用组合方法。如果有更智能的方法来解决这个问题,我很想知道。

请帮忙。

编辑:

由于你们中的一些人一直在询问实际问题,因此我将对其进行摘要,因为将我的实际作业问题发布在互联网上以逐行回答是不光彩的。

抽象的:

大约有 700 个节点,每个节点每天都必须由机器人充电。机器人(放置在圆顶内)携带一个具有大约 5000 单位能量的源,每个节点需要不同的能量水平(所有节点的平均需求约为 250,但对于某些机器人,它的范围从 120 到 500 单位的节点)。给出了节点到圆顶的距离和节点之间的距离(以维度 701x701 的矩阵形式)。每个机器人一天可以行进多少是有限制的。设计一个算法并编写一个程序(在任何商业可用的规格或包中),以有效地计算所需的机器人数量和所有机器人行进的总距离。

4

2 回答 2

11

您无法生成所有这些组合。这并不一定意味着您的整体问题无法解决。有几种方法:

  1. 用理论分析代替编程。也许您根本不需要运行该作业。
  2. 看看你想对组合的结果做什么,你能利用它的特性来限制你需要的组合集合,只生成有用的组合吗?
  3. 如果您可以在找到某些东西时停止下一阶段的处理,请尝试编写一种可以处理数据流的算法,并在遇到命中时停止。在生成组合时为其提供组合。

任何更具体的事情都取决于了解您打算如何处理组合过程的结果。

于 2012-11-18T15:24:43.870 回答
1

也许你不需要这么多组合。我将使用该卷的代表性样本和/或将其划分并为每组执行的分析结果定义一个数字或索引。这会给我点来绘制,每个点基本上代表一组 N 个组合。我需要更多地了解这些组合代表什么才能提出其他替代方案。

于 2012-11-18T17:17:17.537 回答