MODSIMULTYPEオプションは、モデルの連立ブロックを解決するために使用する解法を指定するオプションです。
パラメータ
(デフォルト)Aitkensデルタ2乗法を使用します。連立方程式のブロックで、3回の反復のうち最初の2回の反復では、方程式は前回の反復の値を使用して解決され、結果の収束および発散が判定されます。3回目の反復ごとに、方程式の解決によってではなく、次の推測(next-guess)の計算を行うことで、結果が取得されます。この計算には、先行する3つの反復の結果を使用します。推測の結果では、収束および発散の判定は行われず、常に次の反復へ解決が続行されます。
Gauss-Seidel解法を使用します。連立ブロックの方程式は、ブロックの各反復で解決されます。各反復において、結果の収束および発散判定が行われます。
使用上の注意
連立ブロックの解決
Oracle OLAPでは、連立ブロックの方程式の解決に反復法を使用します。Aitkens解法での次の推測(next-guess)反復を除き、各反復において、現行の反復の結果と前回の反復の結果から比較値が計算されます。比較値が指定した許容範囲内の場合(MODTOLERANCEオプションを参照)、方程式は収束したとみなされます。比較値が大きすぎる場合(MODOVERFLOWオプションを参照)、方程式は発散したとみなされ、ブロックの解決は終了します。
ブロックのすべての方程式が収束すると、そのブロックは解決したとみなされます。いずれかの方程式が発散するか、指定した反復回数内での収束に失敗すると(MODMAXITERSオプションを参照)、ブロック(およびモデル)の解決は失敗し、Oracle OLAPによってエラー・メッセージが表示されます。
次の推測(next-guess)計算
Aitkens法では、次の推測(next-guess)計算を実行するために3つの値が必要です。したがって、連立ブロックにおける最初の3回の反復で、Oracle OLAPによって方程式が解決されます。4番目の反復は、最初の3回の反復の計算の結果を使用する次の推測(next-guess)反復です。
以後、毎回3番目に当たる反復が、前回の推測と中間にはさまる2回の反復の方程式の結果を使用して結果を計算する、次の推測(next-guess)反復となります。たとえば、7番目の反復は、4番目の反復からの推測と5番目および6番目の反復の方程式の結果に基づいた、次の推測(next-guess)計算です。
必要なメモリー容量
通常、Aitkens法は収束が迅速であり、一般にGauss-Seidel法よりも正確な結果を算出します。ただし、先行する3回分の反復の結果を格納するため、Aitkens法のほうがGauss-Seidel法よりも多くのメモリーを必要とします。
通常は、Aitkens法を使用します。Gauss-Seidel法は、システムのメモリー不足が問題となる場合にのみ使用することをお薦めします。
モデルの連立ブロックを解決する際のNA値の処理
方程式の結果を計算し、次の推測(next-guess)計算を行う際、Oracle OLAPではNASKIP2オプションの設定を参照します。NASKIP2は、+
(加算)および-
(減算)演算が実行される際のNA
値の処理方法を制御します。NA
値を含むソリューション変数を指定している場合、NASKIP2の設定が重要になります。ソリューション変数の値は、連立ブロックにおける最初の反復で初期値として使用されるため、ソリューション変数にNA
値があると、方程式の結果がNA
になる場合があります。最初の反復での結果がNA
の場合、その後の反復でも結果がNA
になる可能性があります。そのため、結果がNA
になるのを回避するには、ソリューション変数にNA
値が含まれていないことを確認するか、NASKIP2をYES
に設定してからモデルを実行します。
データ型の問題
INTEGERデータ型の変数にデータを代入した場合、またはディメンションベースのモデルにINTEGERデータ型のソリューション変数を指定した場合に、連立方程式の収束に失敗することがあります。Oracle OLAPでは方程式を計算するたびにデータを10進値に変換しますが、反復と反復の間にその結果をINTEGER変数に格納するために値が四捨五入されることによって、収束が失敗します。
ファンクションの問題
連立方程式に、端数処理された値を生成するファンクション(INSTRB、ROUNDなど)またはデータが不連続になるファンクション(MAX、MINなど)が含まれている場合、連立方程式の収束に失敗することがあります。
開始値の問題
連立ブロックの解決は、開始値に影響されます。たとえば、モデルの2つのモデル値間に比例関係がある場合、開始値がゼロに近いと、収束が阻止されます。したがって、解決する方程式に対して妥当な開始値を使用する必要があります。
方程式の順序
連立ブロックの解決は、方程式の順序にも影響されます。モデルをコンパイルする際、モデル・コンパイラによって、方程式の依存関係に基づいた最適な方程式の順序が決定されます。
連立ブロック内の方程式を特定の順序で解決するには、必要な順序で方程式を記述し、モデルをコンパイルする前にMODINPUTORDERオプションをYES
に設定します。MODINPUTORDERをYES
に設定すると、モデル・コンパイラは、連立ブロック内の方程式をモデルに出現する順序で維持します。
連立方程式を特定の順序で配置し、モデルのコンパイル前にMODINPUTORDERをYES
に設定すると、一部のモデルで収束を促進できる場合があります。ただし、通常は、モデル・コンパイラによって方程式の順序を決定することをお薦めします。
実行レポートの生成
モデルを実行した後、MODEL.XEQRPTプログラムを使用すると、モデルの実行に関するレポートを生成できます。