SolverOptions 函数 - Microsoft Excel Visual Basic 2002 参考

返回介绍

SolverOptions 函数

发布于 2019-08-07 字数 4750 浏览 1005 评论 0

本函数允许指定规划求解模型的高级选项。本函数及其参数相当于“规划求解选项”对话框内的选项。


使用本函数之前,必须建立对规划求解加载宏的引用。当 Visual Basic 模块处于活动状态时,单击“工具”菜单中的“引用”,然后选中“可使用的引用”列表框中的“Solver.xla”复选框。如果“Solver.xla”未出现在“可使用的引用”列表框中,请单击“浏览”按钮并打开“OfficeLibrary”子文件夹中的“Solver.xla”。


SolverOptions(MaxTime, Iterations, Precision, AssumeLinear, StepThru, Estimates, Derivatives, Search, IntTolerance, Scaling, Convergence, AssumeNonNeg)


MaxTimeVariant 类型,可选。以秒为单位指定 Microsoft Excel 用于求解该问题所花费时间的最大值。该值必须为正整数。默认值 100 足以解决绝大部分小问题,但该值最大可达 32,767。


IterationsVariant 类型,可选。Microsoft Excel 解决该问题所要进行的最大迭代次数。该值必须为正整数。默认值 100 足以解决绝大部分小问题,但该值最大可达 32,767。


PrecisionVariant 类型,可选。0(零)到 1 之间的数字,用以指定解决该问题时所要达到的精度。默认精度为 0.000001。小数点后零的个数越少(例如 0.0001),表示精度越低。通常,指定的精度越高(该数字越小),规划求解时所花费的时间越长。


AssumeLinearVariant 类型,可选。如果为 True,则规划求解时将假定模型是线性的。这将加快求解速度,但仅应当用于模型中所有的关系均为线性的情况。默认值为 False


StepThruVariant 类型,可选。如果为 True,则在每次试解时都会导致规范求解暂停。可以使用 SolverSolve 函数的 ShowRef 参数来在每次暂停规范求解时运行一个宏。如果为 False,则在每次试解时不暂停规范求解。默认值为 False


Estimates Variant 类型,可选。指定用于估计每个一维基本变量初始值的方法:1 表示正切函数估值,而 2 表示二次方程估值。正切函数估值使用正切向量的线性外插法。二次方程估值使用二次外插法;这将有利于求解高度非线性的问题。默认值为 1(正切函数估值)。


DerivativesVariant 类型,可选。指定目标函数和约束函数的偏导式估值使用向前差分还是中心差分:1 表示向前差分,而 2 表示中心差分。中心差分所需的工作表重新计算较多,但如果求解某些问题时出现“规划求解无法改善解”之类的信息,则使用中心差分将有所帮助。对约束函数在极限值附近变化很陡的情况,应使用中心差分。默认值为 1(向前差分)。


Search Variant 类型,可选。用 Search 选项指定每次迭代时所使用的搜索算法,该搜索算法将决定搜索的方向:1 表示牛顿法,2 表示共轭法。使用准牛顿搜索方法的牛顿法是默认的搜索方法。该方法通常比共轭法所需内存要多,但迭代次数较少。共轭渐进搜索方法所需内存比牛顿搜索方法要少,但其需要更多的迭代次数以达到特定级别的准确程度。如果有较大问题并且存在内存使用问题,可尝试此方法。共轭搜索方法在进入迭代时在连续试验点之间显示程序较慢时尤其有用。


IntToleranceVariant 类型,可选。表示整数允许误差的 0 到 1 之间的小数。本参数仅用于定义了整数约束条件的情况。当在问题中的任意要素上使用了整数约束条件后,该数字代表在优化解中允许这些要素偏离整数的程度,以百分比误差表示。较高的允许误差(允许偏离的百分比)有助于加快求解过程。


ScalingVariant 类型,可选。在两个或多个约束条件之间数量级相差较大的情况下,如果为 True,则规划求解时将自动把这些约束条件调整到同一数量级上。当输入(“规划求解参数”对话框内的“可变单元格”编辑框)和输出(“规划求解参数”对话框内的“设置目标单元格”编辑框和“约束”编辑框)之间数量存在较大差异时此参数比较有用,例如,基于百万美元投资的利润的最大限百分比。如果为 False,则规划求解时将不调整各约束条件的比例。默认值为 False


ConvergenceVariant 类型,可选。表示非线性规划求解的收敛度的 0 到 1 之间的小数。当最后五次迭代中目标单元格值的相对改变量小于此误差时,规划求解将停止,并显示消息“规划求解找到一解,可满足所有的约束及最优状况。”


AssumeNonNegVariant 类型,可选。如果为 True,则规划求解时,将假定所有未在“约束”列表框中显式指明下限值的可变单元格均以 0(零)为下限(即这些单元格只能包含非负值)。如果为 False,则规划求解将仅使用“约束”列表框中指定的下限。


示例


本示例将 Precision 选项设置为 0.001。


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")

上一篇:SolverOkDialog 函数

下一篇:SolverReset 函数

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!