【问题标题】:how to get different cell groups each add up to a certain number如何获得不同的细胞组,每个细胞组加起来一定数量
【发布时间】:2016-10-22 20:00:58
【问题描述】:

我有一个 excel 文件,其中有一列包含代表文件大小的数字,每个数字都是一个浮点数,最大小数位为两位(例如:23.04)。总细胞数为(277 个细胞)。我想自动对加起来达到(1000)或尽可能接近该数字(1000)的细胞进行分组。所有细胞的总和是 (5739.49) 所以,应该有 (4) 组细胞,每组加起来是 (1000),最后一组(第 5 组)无关紧要它加起来有多少。现在:

  • 我知道这可以在每个组的 excel 中使用“THE SOLVER”来解决,但我 不确定我应该使用哪些约束以及哪种求解方法(即单纯形法、GRG 非线性或进化法)方法,因为我不熟悉它

提前谢谢你

【问题讨论】:

  • Excel 中的标准求解器的 maximum limit for decision variables 为 200。您的问题有 277 个(每个单元格属于哪个组)。
  • 我知道,我们可以先取前 200 个值

标签: excel solver


【解决方案1】:

正如我在评论中提到的,Excel 中的标准求解器对决策变量的最大限制为 200。

此示例仅限于 200 个变量 - 如果您有高级求解器,则可以扩展解决方案。这是使用 Excel 2016 完成的。

工作表设置

  1. A 列包含尺寸数据。
  2. B 列包含 A 列中的每个成员将属于的“组”。它最初使用公式=RANDBETWEEN(1,5) 填充。然后使用复制/选择性粘贴 - 值覆盖它。
  3. D 列包含聚合组,标记为 1 到 5。
  4. E 列包含每个组内的聚合大小。它是用=SUMIF($B$2:$B$201,"="&D2,$A$2:$A$201)计算的
  5. F 列包含每个组的目标值(组 1 到 4 为 1000,组 5 被忽略)。
  6. G 列包含每组目标值的平方误差。它是用=(E2-F2)^2计算的
  7. 单元格 G7 将是“设置目标”单元格,是误差平方和。它是用=SUM(G2:G5) 计算的

下面是使用求解器之前设置工作表的屏幕截图。

求解器设置

求解器是按照以下标准设置的...

  1. “设置目标:”是$G$7
  2. “收件人:”是“分”
  3. “通过更改可变单元格:”为 $B$2:$B$201
  4. “受约束:”包括:$B$2:$B$201 <= 5$B$2:$B$201 = integer$B$2:$B$201 >= 1
  5. “选择求解方法:”是Evolutionary。注意:您可以使用 GRG,但速度会慢很多。
  6. 在“选项”的“所有方法”选项卡的“使用整数约束求解”区域中,确保选中Ignore Integer Constraints

下面是求解器参数对话框的屏幕截图:

解决方案

您的最佳区域可能是“平坦的”,因此有多种可能的解决方案。

下面是我生成的解决方案的屏幕截图...

【讨论】:

  • 感谢您的努力并花时间回答我,我一定会尝试...好主意您如何使用类似于神经网络中的最小化概念
  • 你是如何安排A列中的哪个值属于B列中的哪个组的?
  • 我在另一个示例中尝试了您的解决方案,其中我使用误差函数作为差异的绝对值,即 ABS(E-F),因为我的初始错误范围从负到正,而且它们的值是相当的
  • 误差平方去掉符号,类似于绝对值。
  • B 列的初始值是使用 RANDBETWEEN 函数随机选择的,如帖子中所述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2014-09-09
  • 2019-01-08
相关资源
最近更新 更多