ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

MODOVERFLOW

MODOVERFLOWオプションは、モデルの連立ブロックにある方程式が発散したかどうかを判定する際に使用するオプションです。MODOVERFLOWは、方程式が発散したとみなす基準になる、連続する反復における方程式の結果の離散の程度を決定します。


参照:

連立ブロックの解決を制御するオプションのリストは、「モデル・オプション」を参照してください。

データ型

INTEGER

構文

MODOVERFLOW = {n|3}

パラメータ

n

発散の判定に使用するINTEGER値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が発散として判定されると、方程式は発散したとみなされます。

比較値は、次のように判定されます。

(thisResult - prevResult) / (prevResult + MODGAMMA)

ここで、thisResultは現行の反復の結果で、prevResultは前回の反復の結果です。

前述の計算において、MODGAMMAは、比較値が反復間の変化の絶対量と比例的変化との比較の程度を制御するINTEGERオプションです。MODGAMMAのデフォルト値は1です。

発散判定では、比較値が、10のMODOVERFLOW乗より大きいかどうかがOracle OLAPによって判定されます。この判定の計算は次のとおりです。

Comparison value  >  10**MODOVERFLOW

方程式が発散したとみなされるには、比較値が前述の判定を満たす必要があります。MODOVERFLOWのデフォルト値は3です。このデフォルト値では、比較値が1000より大きい場合に、比較値が判定を満たします。

使用上の注意

方程式の発散

方程式が発散すると、エラーが発生します。エラーが発生したときにOracle OLAPが実行するアクションは、MODERRORオプションで制御します。

開発時における迅速な発散

モデルの開発中、MODOVERFLOWに小さい値を使用することで時間を節約できます。特定の連立ブロックで多数の反復を実行する場合、MODOVERFLOWに、より小さな値を指定することで、そのブロックを迅速に発散させることができます。MODOVERFLOWオプションをCONTINUEに設定すると、発散が発生してもモデルの実行は継続され、モデルの他のブロックのデバッグに専念できます。モデルのデバッグ後、MODOVERFLOWに、より大きな値を使用します。

例5-58 MODOVERFLOWのデフォルト値の使用

次の文で、income.estというモデルのトレースを指定し、ディメンションを制限してモデルを実行します。

MODTRACE = YES
LIMIT division TO 'Camping'
income.est budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.EST) BLOCK 1: SIMULTANEOUS 
(MOD= INCOME.EST) ITERATION 1: EVALUATION
(MOD= INCOME.EST) selling = marketing * 3
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 1) = 3
  ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 2) = -997
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 3) = 6.00902708124
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 49) = 34.2715693388
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 50) = -7.22300601861

トレースで、連立方程式のブロックの最初の3回の反復および49回目と50回目の反復でSelling明細項目に対し計算された結果を確認できます。50回の反復後、ブロックは収束に失敗しています。

MODOVERFLOWの値は、デフォルト値の3です。したがって、方程式が発散したと判定するには、その比較値が 1000より大きい必要があります。

例5-59 発散の加速

次の文で、MODOVERFLOWの設定を変更し、income.estモデルを実行します。

MODOVERFLOW = 2
income.est budget

MODOVERFLOWが2に設定されているため、比較値が100より大きい場合、発散の判定を満たします。この例では、Sellingの方程式は2回目の反復で判定を満たします。2回目の反復で、Sellingの比較値は次のように計算されます。

(-997 - 3) / (3 + 1) = 250

この比較値は100より大きいため、Sellingの方程式は2回目の反復で発散します。