在MS Excel 2010中使用规划求解时如何重用现有值


1

我需要使用规划求解在Excel中设计流程布局。我有一列值,我已将其指定为“通过更改单元格”,并且应该更改这些值以便找到最小结果。问题是,我无需更改这些值,而是需要切换它们的位置,直到找到最佳组合。

如何在规划求解中或使用一些Excel魔术来指定需要互换但不被覆盖的值,因为这种方法总是到处返回0?

也许我可以使用数学上合理的约束条件,以防止这些值发生变化?

Answers:


1

给定交换约束,您真正要问的是:在一组值的所有重新排序中,这些值的哪个排列可使目标函数最小化?

可以构造此问题,以便Solver可以找到解决方案。关键是使用值的顺序,而不是值本身,因为Solver的数量会发生变化,以便找到目标函数的最小值。Solver具有内置的机制来置换这些值。

下图显示了说明示例的工作表设置。

  • 单元格A4:A7包含需要重新排序以找到最小值的值。

  • 单元格C4:C7保留这些值的初始行顺序-中的值C4:C7是那些将由Solver更改的值。

  • 中的公式E4:E7查找A4:A7与中的行顺序相对应的值C4:C7

  • 单元格C9拥有在我的示例中将最小化的公式-请注意,该公式取决于中的值E4:E7,而不取决于中的值A4:A7

初始工作表设置

接下来是问题的求解器设置。在这里,您需要将单元格的约束设置为C4:C7AllDifferent并将求解方法设置为Evolutionary


求解器设置


要设置约束C4:C7AllDifferent,选择的选项dif从上添加约束对话框的下拉列表。(请参阅此链接,以获得对Solver中可用的特殊约束选项的有益讨论。)

dif约束设置

我发现没有必要通过例如在解决方案搜索中设置时间限制或迭代限制来摆弄求解方法的可选设置。由于只有四个变量单元格和非常简单的目标函数,Solver只需几秒钟即可找到解决方案。产生最小解的行顺序显示在中C4:C7,值的顺序显示在中E4:E7

解算器解决方案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.