Excel VBA教程:SolverOptions函数

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Excel VBA教程:SolverOptions函数·示例

本示例将 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")

上页:Excel VBA教程:SolverOkDialog函数 下页:Excel VBA教程:SolverReset函数

Excel VBA教程:SolverOptions函数

Excel VBA教程:SolverReset函数 Excel VBA教程:SolverSave函数
Excel VBA教程:SolverSolve函数 Excel VBA教程:SQLBind函数
Excel VBA教程:SQLClose函数 Excel VBA教程:SQLError函数
Excel VBA教程:SQLExecQuery函数 Excel VBA教程:SQLGetSchema函数
Excel VBA教程:SQLOpen函数 Excel VBA教程:SQLRequest函数
Excel VBA教程:SQLRetrieve函数 Excel VBA教程:SQLRetrieveToFile函数
Excel VBA教程:隐藏的语言元素 Excel VBA教程:向文档中添加控件
Excel VBA教程:向用户窗体中添加控件 Excel VBA教程:应用程序对象事件
Excel VBA教程:图表对象事件 Excel VBA教程:控件和对话框事件
Excel VBA教程:在某一 Microsoft Office 应用程序中控制其他 Microsoft Office 应用程序 Excel VBA教程:创建自定义对话框
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号