📜  使用Excel Solver进行优化

📅  最后修改于: 2020-12-01 06:10:59             🧑  作者: Mango


Solver是一个Microsoft Excel加载程序,可以在假设分析中用于优化。

根据O’Brien和Marakas的说法,优化分析是目标搜索分析的更复杂扩展。目标是在一定的约束下找到一个或多个目标变量的最佳值,而不是为变量设置特定的目标值。然后,在指定的约束条件下重复更改一个或多个其他变量,直到发现目标变量的最佳值。

在Excel中,您可以使用求解器在工作表上其他公式单元格的值上受某些约束或限制的情况下,在称为目标单元格的一个单元格中找到公式的最佳值(最大值或最小值或某个值) 。

这意味着规划求解与一组称为决策变量的单元格一起工作,这些单元格用于计算目标单元格和约束单元格中的公式。求解器调整决策变量像元中的值,以满足约束像元上的限制,并为目标像元生成所需的结果。

您可以使用求解器找到各种问题的最佳解决方案,例如-

  • 确定药品生产部门的月度产品组合,以使获利最大化。

  • 在组织中安排劳动力。

  • 解决运输问题。

  • 财务计划和预算。

激活规划求解加载项

在继续寻找解决求解器问题的方法之前,请确保按以下步骤在Excel激活了求解器加载项

  • 单击功能区上的“数据”选项卡。求解器命令应出现在“分析”组中,如下所示。

激活规划求解加载项

如果找不到规划求解命令,请按以下方式激活它-

  • 单击文件选项卡。
  • 单击左窗格中的选项。出现“ Excel选项”对话框。
  • 单击左窗格中的加载项。
  • 在“管理”框中选择“ Excel加载项”,然后单击“转到”。

选择Excel加载项

出现加载宏对话框。检查规划求解加载项,然后单击确定。现在,您应该能够在“数据”选项卡下的功能区上找到“求解器”命令。

求解器加载项

求解器使用的求解方法

您可以根据问题的类型选择Excel Solver支持的以下三种解决方法之一-

LP单面

用于线性问题。求解器模型在以下条件下是线性的-

  • 通过将(更改单元格)和ast(常数)形式的项加在一起来计算目标单元格。

  • 每个约束都满足线性模型要求。这意味着,通过将(变化单元格)和ast(常数)形式的项相加并将总和与常数进行比较,可以评估每个约束。

广义降梯度(GRG)非线性

用于平滑非线性问题。如果目标单元格,任何约束或两者都包含对非(changeing cell)*(constant)形式的变化单元格的引用,则您具有非线性模型。

进化的

用于平滑非线性问题。如果目标单元格,任何约束或两者都包含对非(changeing cell)*(constant)形式的变化单元格的引用,则您具有非线性模型。

了解求解器评估

规划求解需要以下参数-

  • 决策可变单元
  • 约束细胞
  • 客观细胞
  • 解法

求解器评估基于以下内容-

  • 决策变量单元格中的值受约束单元格中的值约束。

  • 目标单元格中值的计算包括决策变量单元格中的值。

  • 求解器使用选定的求解方法在目标单元格中获得最佳值。

定义问题

假设您正在分析制造和销售某种产品的公司的利润。要求您查找下两个季度可用于广告的金额,最多不超过20,000。每个季度的广告水平会影响以下内容-

  • 售出的单位数,间接决定了销售收入的多少。
  • 相关费用,以及
  • 利润。

您可以继续将问题定义为-

  • 查找单位成本。
  • 查找每单位的广告费用。
  • 查找单价。

定义问题

接下来,如下所示设置所需计算的像元。

设置单元格

如您所见,考虑到的是针对Quarter1和Quarter2的计算已完成-

  • 第一季度可出售的单元数量为400,第二季度可出售的单元数量为600(单元– C7和D7)。

  • 广告预算的初始值设置为每季度10000(单元格– C8和D8)。

  • 售出的单位数取决于每单位的广告成本,因此是该季度的预算/ Adv。单位成本。请注意,我们使用Min函数来注意是否为no。在<= no。中出售的产品数量可用单位。 (单元格– C9和D9)。

  • 收入按单价&ast;销售的单位数(单元– C10和D10)。

  • 费用按单位成本&ast;可用单元数进阶该季度的成本(单元格-C11和D12)。

  • 利润是收入–费用(单元格C12和D12)。

  • 总利润是第一季度的利润;第二季度的利润(单元格-D3)。

接下来,您可以设置求解器的参数,如下所示:

设定参数

如您所见,规划求解的参数为-

  • 目标单元格是D3,其中包含您要最大化的总利润。

  • 决策变量单元格为C8和D8,其中包含两个季度(季度1和季度2)的预算。

  • 存在三个约束单元-C14,C15和C16。

    • 包含总预算的单元格C14将约束设置为20000(单元格D14)。

    • 包含编号的单元格C15。在Quarter1中售出的商品数量设置为<= no。 Quarter1(单元格D15)中可用的单元数。

    • 包含编号的单元格C16。在Quarter2中售出的商品数量设置为<= no。 Quarter2中可用单元的数量(单元格D16)。

解决问题

下一步是使用Solver查找解决方案,如下所示-

步骤1-转到功能区上的数据>分析>求解器。将出现“求解器参数”对话框。

求解器参数

步骤2-在“设置目标”框中,选择单元格D3。

步骤3-选择最大。

步骤4-通过更改可变单元格框中选择范围C8:D8。

更改可变单元格

步骤5-接下来,单击添加按钮以添加已确定的三个约束。

步骤6-出现添加约束对话框。设置总预算的约束,如下所示,然后单击添加。

添加约束

步骤7-设置总编号的约束。如下所示在Quarter1中出售的商品数量,然后点击添加。

点击添加

步骤8-设置总编号的约束。如下所示在Quarter2中出售的商品数量,然后单击“确定”。

设置约束

将出现“求解器参数”对话框,其中三个约束添加在“取决于约束”框中。

步骤9-在“选择一种求解方法”框中,选择“ Simplex LP”。

选择求解方法

步骤10-单击解决按钮。将出现“求解结果”对话框。选择“保持求解器解决方案” ,然后单击“确定”。

保持求解器解决方案

结果将显示在您的工作表中。

结果

如您所见,在给定的约束下,产生最大总利润的最优解决方案是-

  • 总利润– 30000。
  • 进阶第一季度预算– 8000。
  • 进阶第2季度预算– 12000。

逐步解决规划求解的解决方案

您可以逐步查看Solver试用解决方案,查看迭代结果。

步骤1-单击“求解器参数”对话框中的“选项”按钮。

出现“选项”对话框。

步骤2-选择显示迭代结果框,然后单击确定。

显示迭代

步骤3-求解器参数对话框出现。单击解决

步骤4-出现“显示试用解决方案”对话框,显示消息-规划求解已暂停,当前解决方案值显示在工作表上

显示试用解决方案

如您所见,当前迭代值显示在工作单元中。您可以停止求解器接受当前结果,也可以继续求解器寻找进一步解决方案。

步骤5-单击继续。

在每个步骤都会显示显示试用解决方案”对话框,最后在找到最佳解决方案后,将出现“求解结果”对话框。您的工作表在每一步都会更新,最后显示结果值。

保存求解器选择

对于使用Solver解决的问题,您具有以下保存选项-

  • 您可以通过保存工作簿在“规划求解参数”对话框中将最后的选择与工作表一起保存。

  • 工作簿中的每个工作表都可以有自己的规划求解选择,所有这些将在您保存工作簿时保存。

  • 您还可以在工作表中定义多个问题,每个问题都有自己的求解器选择。在这种情况下,可以使用“求解器参数”对话框中的“加载/保存”分别加载和保存问题。

    • 单击加载/保存按钮。出现“加载/保存”对话框。

    • 要保存问题模型,请输入要在其中放置问题模型的空单元格的垂直范围内第一个单元格的引用。单击保存。

保存求解器选择

    • 问题模型(求解器参数集)从您指定为参考的单元开始出现。

解算器参数集

    • 要加载问题模型,请为包含问题模型的整个单元格范围输入参考。然后,单击“加载”按钮。