The MODOVERFLOW option is used in testing whether any equation in a simultaneous block of a model has diverged. MODOVERFLOW determines how dissimilar the results of an equation must be in successive iterations for the equation to be considered to have diverged.
See:
"Model Options" for a list of all of the options that control the solution of simultaneous blocks.INTEGER
MODOVERFLOW = {n|3}
An INTEGER
value to use in testing for divergence. As Oracle OLAP calculates each equation in a simultaneous block, it constructs a comparison value that is based on the results of the equation for the current iteration and the previous iteration. When the comparison value meets a divergence test, the equation is considered to have diverged.
The comparison value that is tested is as follows.
(thisResult - prevResult) / (prevResult + MODGAMMA)
where thisResult is the result of this iteration and prevResult is the result of the previous iteration
In the preceding calculation, MODGAMMA is an INTEGER option that controls the degree to which the comparison value represents the absolute amount of change between iterations versus the proportional change. The default value of MODGAMMA is 1
.
In the divergence test, Oracle OLAP tests whether the comparison value is greater than 10
to the power of MODOVERFLOW. The calculation for this test is as follows.
Comparison value > 10**MODOVERFLOW
For the equation to be considered to have diverged, the comparison value must meet the test described earlier. The default value of MODOVERFLOW is 3
. With this default, the comparison value meets the test when it is greater than 1000
.
When an equation diverges, an error occurs. The MODERROR option controls the action that Oracle OLAP takes when an error occurs.
Faster Divergence During Development
While you are developing a model, you can sometimes save time by using a small value for MODOVERFLOW. When Oracle OLAP is performing many iterations over a particular simultaneous block, a smaller value of MODOVERFLOW can cause rapid divergence of that block. When you set the MODOVERFLOW option to CONTINUE
, execution of the model will continue when the divergence occurs, and you can concentrate on debugging the other blocks in the model. After you have debugged the model, you can use a larger value for MODOVERFLOW.
Example 6-58 Using the Default MODOVERFLOW Value
The following statements specify a trace for a model called income.est
, limit a dimension, and run the model.
MODTRACE = YES LIMIT division TO 'Camping' income.est budget
These statements produce the following output.
(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
In the trace, you can see the results that were calculated for the Selling
line item in the first three iterations and the forty-ninth and fiftieth iterations over a block of simultaneous equations. The block failed to converge after 50 iterations.
The value of MODOVERFLOW is its default value of 3
. This means that for an equation to meet the divergence test, its comparison value must be greater than 1000
.
Example 6-59 Speeding Up the Divergence
The following statements change the MODOVERFLOW setting and run the income.est
model.
MODOVERFLOW = 2 income.est budget
With MODOVERFLOW set to 2
, any comparison value of more than 100 meets the test for divergence. In this example, the equation for Selling
meets the test in the second iteration. In the second iteration, Oracle OLAP calculates the comparison value for Selling
as follows.
(-997 - 3) / (3 + 1) = 250
Since this comparison value is greater than 100, the equation for Selling
diverges in the second iteration.