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

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

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

如何在 Solver 中或使用一些 Excel 魔法来指定我需要交换值但不覆盖,因为这种方法总是在各处返回 0?

也许我可以使用一个数学上合理的约束来阻止这些值的改变?

答案1

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

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

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

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

  • 单元格C4:C7保存这些值的初始行顺序 - 这些值C4:C7将由规划求解改变。

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

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

初始工作表设置

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


求解器设置


要将 的约束设置为C4:C7,请从“添加约束”对话框的下拉列表中AllDifferent选择该选项。(请参阅dif此链接有关 Solver 中可用的特殊约束选项的有益讨论。)

差异约束设置

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

求解器解决方案

相关内容