SolverOptions 函數

本函數能讓您指定 [規劃求解] 模式的進階選項。 此函數及其引數對應至 [規劃求解選項] 對話方塊中的選項。

注意 預設不會啟用規劃求解增益集。 使用本函數之前,必須先安裝並啟用規劃求解增益集。 如需如何安裝並啟用規劃求解增益集的詳細資訊,請參閱使用規劃求解 VBA 函數。 安裝規劃求解增益集之後,必須建立對規劃求解增益集的參照。 在模組作用中的 Visual Basic 編輯器中,按一下 [工具] 功能表上的 [參照],然後選取 [可用參照] 下的 [規劃求解]。 如果 [規劃求解] 沒有出現在 [可用的參考] 底下,按一下 [瀏覽],然後開啟 \Program Files\Microsoft Office\Office14\Library\SOLVER 子資料夾中的 Solver.xlam。

SolverOptions (MaxTimeIterationsPrecisionAssumeLinearStepThruEstimatesDerivativesSearchOptionIntToleranceScalingConvergenceAssumeNonNegPopulationSizeRandomSeedMultiStartRequireBoundsFactorRateMaxSubproblemsMaxIntegerSolsSolveWithoutMaxTimeNoImp)

MaxTime 選擇性的 Variant。 ) 規劃求解會花費在幾秒內 (的最大時間量來解決問題。 此值必須是正整數。

迭 代 選擇性的 Variant。 規劃求解將用於解決問題的反復專案數目上限。 此值必須是正整數。

精度 選擇性的 Variant。 介於 0 (零) 和 1 之間的數位,指定必須滿足條件約束 (包括整數條件約束) 的有效位數。 預設有效位數為 0.000001。 例如,小數位數 (0.0001) 表示精確度較低。 一般而言,您指定的精確度越高 () 數目越小,規劃求解所需的時間就越多才能觸達解決方案。

AssumeLinear 選擇性的 VariantTrue 是表示 讓規劃求解假設基礎模型為線性。 這會加速解決方案程式,但只有在模型中的所有關聯性都是線性時,才應該使用它。 預設值為 FalseStepThru 選擇性的 VariantTrue 是表示 讓規劃求解在每個試用版解決方案暫停。 您可以使用SolverSolve函式的ShowRef引數,在每次暫停時傳遞要執行的宏。 False 表示無法在每個試用版解決方案暫停規劃求解。 預設值為 False

估計 選擇性的 Variant。 指定在每個一維搜尋中用來取得基本變數初始估計的方法:1 代表正切估計值,2 代表二次方估計值。 正切值估計會使用正切向量的線性外推。 二次方估計值使用二次方外推;這可能會改善高度非線性問題的結果。 預設值為 1 (正切估計值) 。

衍生物 選擇性的 Variant。 針對目標和條件約束函式之部分衍生的估計值指定正向差異或中央差異:1 代表正向差異,2 代表中央差異。 中央差異需要進行更多工作表重新計算,但可能會有助產生訊息的問題,指出規劃求解無法改善解決方案。 當條件約束的值快速變更接近其限制時,您應該使用中央差異。 預設值為 1 (正向差異) 。

SearchOption 選擇性的 Variant。 使用 [搜尋 ] 選項來指定要在每個反復專案中用來決定搜尋方向的搜尋演算法:1 代表 Newton 搜尋方法,2 代表結合的搜尋方法。 使用准 Newton 方法的 Newton 是預設的搜尋方法。

IntTolerance 選擇性的 Variant。 介於 0 (零) 和 100 之間的十進位數,指定整數 最佳百 分比容錯。 只有在已定義整數條件約束時,才會套用此引數;它會指定規劃求解可以在找到可行的整數解決方案時停止,其目標在真正整數最佳解決方案目標最已知系結的這個百分比內。 較大的百分比容錯通常會加速解決方案程式。

縮放 選擇性的 Variant。 如果目標或條件約束因數個大小的訂單而不同,例如,根據百萬元投資將收益百分比最大化,請將此選項 設為 True ,讓規劃求解在計算期間將目標和條件約束值內部調整為類似的大小順序。 如果此選項為 False,規劃求解會使用目標和條件約束的原始值來執行其計算。 預設值為 True

收斂 選擇性的 Variant。 介於 0 (零) 和 1 之間的數位,指定 GRG 非線性解決演化解決 方法的聚合容錯。 針對 GRG 方法,當目標儲存格值的相對變更小於最後五次反覆運算的這個容錯時,規劃求解會停止。 針對 Evolutionary 方法,當 99% 以上的母體成員具有相對值,也就是百分比的差異小於此容錯時,規劃求解就會停止。 在這兩種情況下,規劃求解都會顯示訊息「規劃求解已聚合至目前的解決方案。 滿足所有條件約束。」

AssumeNonNeg 選擇性的 VariantTrue 是表示 讓規劃求解假設下限為 0 (零) 對於 [條件 約束 ] 清單方塊中沒有明確下限的所有決策變數儲存格 (儲存格必須包含非負值) 。 False 表示規劃求解只使用 [ 條件約束 ] 清單方塊中指定的限制。

PopulationSize 選擇性的 VariantTrue 是表示 讓規劃求解假設下限為 0 (零) 對於 [條件 約束 ] 清單方塊中沒有明確下限的所有決策變數儲存格 (儲存格必須包含非負值) 。 False 表示規劃求解只使用 [條件約束] 清單方塊中指定的限制。

RandomSeed 選擇性的 Variant。 正整數會指定 Evolutionary Solving 方法所使用之亂數產生器的固定種子,以及用於全域優化的 Multistart 方法。 這表示,規劃求解每次在未變更的模型上執行時,都會找到相同的解決方案。 零值指定規劃求解每次執行時,應該針對亂數產生器使用不同的種子,每次在未變更的模型上執行時,可能會產生不同的解決方案。

MultiStart 選擇性的 VariantTrue是表示 在呼叫SolverSolve時,使用 Multistart 方法搭配GRG 非線性解析方法進行全域優化。 False表示呼叫SolverSolve時,求解只會執行GRG Solve 方法一次,而不執行多重入門。

RequireBounds 選擇性的 Variant如果 有任何變數未同時定義下限和上限,則為 True 會使 Evolutionary Solve 方法和 multistart 方法立即從對 SolverSolve 的呼叫傳回,且值為 18。 如果為 False ,則這些方法會嘗試在所有變數上不限於界限的情況下解決問題。

變異率 選擇性的 Variant。 介於 0 (零) 和 1 之間的數位,指定 Evolutionary Solving 方法對現有母體成員進行「變動」的比率。 較高的變化率通常會增加母體的多樣性,而且可能會產生更好的解決方案。

MaxSubproblems 選擇性的 Variant。 規劃求解會在整數條件約束的問題,以及透過 Evolutionary Solve 方法解決的問題中探索的子問題數目上限。 此值必須是正整數。

MaxIntegerSols 選擇性的 Variant。 可行 (或整數可行的最大數目) 解決器會考慮整數條件約束的問題,以及透過 Evolutionary Solve 方法解決的問題。 此值必須是正整數。

SolveWithout 選擇性的 VariantTrue 是表示 讓規劃求解忽略任何整數條件約束,並解決問題的「默示」。 False 表示規劃求解在解決問題時使用整數條件約束。

MaxTimeNoImp 選擇性的 Variant。 使用 Evolutionary Solve 方法時, (在幾秒內) 規劃求解會繼續解決,而不需要找到大幅改善的解決方案來新增到母體中。 此值必須是正整數。

範例

此範例將 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")

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應