Excel 求解器 - 防止同名结果

Excel Solver - Prevent Identically Named Results

这可能听起来有点奇怪,也许我只是在这个问题上错过了树林中的森林,但是有没有办法强制 Excel 求解器仅 return 一个实例结果?作为一个简短的例子,假设我们对各种对象(颜色、动物和形状)的喜爱程度有一些结果。我们希望求解器 return 此列表中的三个最优选的对象。

红色 (400) 狗 (120) 圆形 (100) 红色 (400) 猫 (90) 方形 (75) 蓝色 (90) 马 (60) 三角形 (70) 绿色 (80) 蛇 (30) 长方形 (40) 黄色 (40) 兔子 (20) 五角大楼 (15)

当然,这个例子中的问题被简化了。基本上,我的问题在于我想要每种类型中的一种,即红色、狗和圆形,但我一直得到红色、红色(再次)和狗,因为总数更高。我想定义一种方法来防止 Solver returning 两个名称相同的值。我只是想不通,而且 Google 似乎也没有产生任何可行的回应。

不清楚您的数据是如何设置的,这可能会影响您设置求解器问题的方式,但这是一种方法(注意 - 此方法仅在您有 200 个或更少的值可供选择时才有效)。

  1. 为 "Category" 创建 A 列。这将具有 "Color"、"Animal" 和 "Shape".
  2. 等值
  3. B 列用于 "Type",并包含您提供的信息。 (例如,狗、猫、...红色、蓝色、...圆形、方形...)
  4. C 列是 B 列中显示的类型的值或分数,同样是您提供的信息。
  5. D 列包含规划求解将处理的字段,我们称它为 "Selected"。 Selected 将是 0 或 1。
  6. E列为选择结果,简单计算,=C2*D2,往下填。
  7. 将单元格 H2 设为 E 列的总和。这将是求解器的 objective。
  8. 使 G3 到 G5 成为 "Category" 中的值(颜色、动物、形状)。
  9. 使 H3 到 H5 成为每个类别中的总选定值。即=SUMIF($A:$A,"="&G3,$D:$D)往下填。

工作簿看起来像这样...

...由此,您可以使用以下设置求解器...

  1. 设置Objective: 是$H
  2. 至:设置为最大。 (即您正在寻找最喜欢的)
  3. 通过更改可变单元格:设置为 $D:$D
  4. 受约束:有四个条目。 $D:$D = binary; $H = 1; $H = 1; $H = 1
  5. Select a Solving Method: 设置为 Evolutionary。您可以使用 GRG Nonlinear,但需要更长的时间。

对话框如下所示...

...结果如下,符合您的条件...