定义基本求解器模型。 等效于单击“数据分析 | ”组中的“规划求解”,然后在“规划求解参数”对话框中指定选项。
注意
规划求解加载项默认处于禁用状态。 在可以使用此函数之前,必须已安装且已启用规划求解加载项。 有关如何执行该操作的信息,请参阅使用规划求解 VBA 函数。 安装规划求解加载项之后,必须创建对该规划求解加载项的引用。 在 Visual Basic 编辑器中,如果模块处于活动状态,请单击“工具”菜单上的“引用”,然后在“可用的引用”下选择“规划求解”。 如果“规划求解”没有显示在“可使用的引用”下面,请单击“浏览”,然后打开 \Program Files\Microsoft Office\Office14\Library\SOLVER 子文件夹中的 Solver.xlam。
SolverOk ( SetCell、 MaxMinVal、 ValueOf、 ByChange、 Engine、 EngineDesc)
SetCell 是 Variant 类型的可选参数。 引用活动工作表中的一个单元格。 对应于“规划求解参数”对话框中的“设置目标单元格”框。 MaxMinVal 是 Variant 类型的可选参数。 对应于“规划求解参数”对话框中的“最大值”、“最小值”和“值”选项。
MaxMinVal | 指定 |
---|---|
1 | 最大 |
2 | 最小化 |
3 | 匹配特定值 |
ValueOf 是 Variant 类型的可选参数。 如果 MaxMinVal 为 3,则必须指定目标单元格所匹配的值。
ByChange 是 Variant 类型的可选参数。 要更改的单元格或单元格区域,以便在目标单元格中获取所需结果。 对应于“规划求解参数”对话框中的“通过更改单元格”框。
Engine 是 Variant 类型的可选参数。 应用来求解问题的求解方法:2 表示单纯形 LP 方法,1 表示 GRG 非线性方法,或 3 表示演进式方法。 对应于“规划求解参数”对话框中的“选择求解方法”下拉列表。
EngineDesc 是 Variant 类型的可选参数。 另一种以字符串形式指定应用来求解问题的求解方法的方式:“单纯形 LP”、“GRG 非线性”或“演进式”。 对应于“规划求解参数”对话框中的“选择求解方法”下拉列表。
示例
本示例使用规划求解函数来最大化业务问题的毛利润。 SolverOK 函数通过指定 SetCell、MaxMinVal 和 ByChange 参数来定义问题。
Worksheets("Sheet1").Activate
SolverReset
SolverOptions precision:=0.001
SolverOK SetCell:=Range("TotalProfit"), _
MaxMinVal:=1, _
ByChange:=Range("C4:E6")
SolverAdd CellRef:=Range("F4:F6"), _
Relation:=1, _
FormulaText:=100
SolverAdd CellRef:=Range("C4:E6"), _
Relation:=3, _
FormulaText:=0
SolverAdd CellRef:=Range("C4:E6"), _
Relation:=4
SolverSolve UserFinish:=False
SolverSave SaveArea:=Range("A33")
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。