Oracle® OLAP DML Reference 11g Release 1 (11.1) Part Number B2812601 


View PDF 
The MODDAMP option specifies a weighting factor that damps out oscillations between iterations when you use the GaussSeidel method for solving simultaneous equations in a model. MODDAMP can allow the solution of models that would otherwise never converge because the oscillation between equations is stable. In these cases, the oscillations never decay without damping.
With the GaussSeidel method, Oracle OLAP tests each model equation for convergence or divergence in each iteration over a block of simultaneous equations. The tests are made by comparing the results of the current iteration to the results from the previous iteration. When MODDAMP specifies a weighting factor that is greater than zero, the value that Oracle OLAP tests and stores after each iteration is a weighted average of the current and previous results. For equations that oscillate between iterations, you can therefore use MODDAMP to damp out the oscillations and either prevent divergence or speed up the convergence of the equations.
Data Type
DECIMAL
Syntax
MODDAMP = {n0.00}
Arguments
A decimal value, greater than or equal to zero and less than one, that specifies the weighting factor. The closer MODDAMP is to 0.00, the more weight is given to the value from the current iteration. The default value is 0.00, which gives full weight to the current iteration.
When MODDAMP is greater than zero, Oracle OLAP calculates the weighted average for the current iteration as follows.
calcvalue * (1  MODDAMP) + weightavg
where:
calcvalue is the value calculated from the model equation in the current iteration.
weightavg is the weighted average calculated in the previous iteration.
Notes
Specifying the Solution Method
The MODDAMP option is used only with the GaussSeidel method for solving simultaneous equations. The MODSIMULTYPE option determines the solution method that is being used. The possible settings for MODSIMULTYPE are GAUSS
, for the GaussSeidel method, and AITKENS
, for the Aitkens deltasquared method.
Effect of MODDAMP on Convergence Speed
MODDAMP is used in calculating the results of all model equations in every simultaneous block, whether they oscillate between iterations or not. For equations that do not oscillate, convergence is slowed down when the value of MODDAMP is greater than zero. Therefore, when your model contains some equations that oscillate and some that do not, you might be able to speed up overall convergence by setting MODDAMP to a small nonzero value, such as 0.20
. A small nonzero value will slow down the convergence of nonoscillating equations only slightly, while speeding up the convergence of oscillating equations.
Stored Weighted Average
When the model equation does not converge or diverge on the current iteration, the weighted average calculated in the current iteration is stored. In the next iteration, Oracle OLAP uses this stored average as weightavg (that is, the weighted average calculated in the previous iteration) in the formula for the weighted average.
In the first iteration over a block, Oracle OLAP uses the starting value of the target variable (or dimension value) as the weightavg (that is, the weighted average calculated in the previous iteration).
Iteration Results Compared
In tests for convergence and divergence in each iteration, Oracle OLAP compares the results of the current iteration to the results from the previous iteration. When MODDAMP is greater than zero, Oracle OLAP tests a comparison value that is calculated as follows.
(weightavg  weightavg) / (weightavg PLUS MODGAMMA)
where weightavg is the weighted average calculated in the previous iteration
For an explanation of the test for convergence, see the MODTOLERANCE option. For an explanation of the test for divergence, see the MODOVERFLOW option.
Options to Control the Solution of Simultaneous Blocks
Altering the value of MODDAMP is just one of the steps you can take in attempting to speed up or attain convergence of a simultaneous block. MODEL lists additional options that you can use to control the solution of simultaneous blocks and provides information on running and debugging models.
Examples
Example 650 Using the Default MODDAMP Value
The following statements trace a model called income.bud
, specify that the GaussSeidel method should be used for solving simultaneous blocks, limit a dimension, and run the income.bud
model.
MODTRACE = YES MODSIMULTYPE = 'GAUSS' LIMIT division TO 'Camping' income.bud budget
These statements produce the following output.
(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS (MOD= INCOME.BUD) ITERATION 1: EVALUATION (MOD= INCOME.BUD) revenue = marketing * 300  cogs ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 35) = 368.650399101 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 36) = 369.209604252 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 37) = 368.718556135 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 38) = 369.149674626 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 39) = 368.771110244 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 40) = 369.103479583 (MOD= INCOME.BUD) END BLOCK 1
The MODDAMP option is set to its default value of 0.00. The equation for the Revenue line item converged in 40 iterations over a block of simultaneous equations. In the trace lines, you can see the results that were calculated for the Revenue line item in the final 6 iterations.
Example 651 Setting MODDAMP to Speed Up the Convergence of a Model
The following statements change the value of MODDAMP and run the income.bud
model.
MODDAMP = 0.2 income.bud budget
These statements produce the following output.
(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS (MOD= INCOME.BUD) ITERATION 1: EVALUATION (MOD= INCOME.BUD) revenue = marketing * 300  cogs (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 1) = 276.200000000 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 2) = 416.187139753 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 3) = 368.021098186 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 4) = 367.209906847 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 5) = 369.271224267 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 6) = 368.965397407 (MOD= INCOME.BUD) END BLOCK 1
In "Using the Default MODDAMP Value", the equation for the Revenue
line item converged in 40 iterations. With MODDAMP set to 0.2
in the current example, the same equation converged in just 6 iterations.