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 个或更少的值可供选择时才有效)。
- 为 "Category" 创建 A 列。这将具有 "Color"、"Animal" 和 "Shape".
等值
- B 列用于 "Type",并包含您提供的信息。 (例如,狗、猫、...红色、蓝色、...圆形、方形...)
- C 列是 B 列中显示的类型的值或分数,同样是您提供的信息。
- D 列包含规划求解将处理的字段,我们称它为 "Selected"。 Selected 将是 0 或 1。
- E列为选择结果,简单计算,
=C2*D2
,往下填。
- 将单元格 H2 设为 E 列的总和。这将是求解器的 objective。
- 使 G3 到 G5 成为 "Category" 中的值(颜色、动物、形状)。
- 使 H3 到 H5 成为每个类别中的总选定值。即
=SUMIF($A:$A,"="&G3,$D:$D)
往下填。
工作簿看起来像这样...
...由此,您可以使用以下设置求解器...
- 设置Objective: 是
$H
- 至:设置为最大。 (即您正在寻找最喜欢的)
- 通过更改可变单元格:设置为
$D:$D
- 受约束:有四个条目。
$D:$D = binary
; $H = 1
; $H = 1
; $H = 1
- Select a Solving Method: 设置为 Evolutionary。您可以使用 GRG Nonlinear,但需要更长的时间。
对话框如下所示...
...结果如下,符合您的条件...
这可能听起来有点奇怪,也许我只是在这个问题上错过了树林中的森林,但是有没有办法强制 Excel 求解器仅 return 一个实例结果?作为一个简短的例子,假设我们对各种对象(颜色、动物和形状)的喜爱程度有一些结果。我们希望求解器 return 此列表中的三个最优选的对象。
红色 (400) 狗 (120) 圆形 (100) 红色 (400) 猫 (90) 方形 (75) 蓝色 (90) 马 (60) 三角形 (70) 绿色 (80) 蛇 (30) 长方形 (40) 黄色 (40) 兔子 (20) 五角大楼 (15)
当然,这个例子中的问题被简化了。基本上,我的问题在于我想要每种类型中的一种,即红色、狗和圆形,但我一直得到红色、红色(再次)和狗,因为总数更高。我想定义一种方法来防止 Solver returning 两个名称相同的值。我只是想不通,而且 Google 似乎也没有产生任何可行的回应。
不清楚您的数据是如何设置的,这可能会影响您设置求解器问题的方式,但这是一种方法(注意 - 此方法仅在您有 200 个或更少的值可供选择时才有效)。
- 为 "Category" 创建 A 列。这将具有 "Color"、"Animal" 和 "Shape". 等值
- B 列用于 "Type",并包含您提供的信息。 (例如,狗、猫、...红色、蓝色、...圆形、方形...)
- C 列是 B 列中显示的类型的值或分数,同样是您提供的信息。
- D 列包含规划求解将处理的字段,我们称它为 "Selected"。 Selected 将是 0 或 1。
- E列为选择结果,简单计算,
=C2*D2
,往下填。 - 将单元格 H2 设为 E 列的总和。这将是求解器的 objective。
- 使 G3 到 G5 成为 "Category" 中的值(颜色、动物、形状)。
- 使 H3 到 H5 成为每个类别中的总选定值。即
=SUMIF($A:$A,"="&G3,$D:$D)
往下填。
工作簿看起来像这样...
...由此,您可以使用以下设置求解器...
- 设置Objective: 是
$H
- 至:设置为最大。 (即您正在寻找最喜欢的)
- 通过更改可变单元格:设置为
$D:$D
- 受约束:有四个条目。
$D:$D = binary
;$H = 1
;$H = 1
;$H = 1
- Select a Solving Method: 设置为 Evolutionary。您可以使用 GRG Nonlinear,但需要更长的时间。
对话框如下所示...
...结果如下,符合您的条件...