1.Functional Description
1.1Purpose
This function will generate the forecast numbers for Method 12, Exponential Smoothing with Trend and
Seasonality, if the processing option is set to do so. It will also decide if this method is the Best
Fit forecast.
1.2Setup Notes and Prerequisites
1.3Special Logic
2.Technical Specifications
Method 12- Simulate Exponential Smoothing with Trend and Seasonality
If MonthlyVsWeekly is not equal to '1'
Move 12 to BucketsInYr
Else
Move 52 to BucketsInYr
End
If NumberOfBuckets is less than MonthsBestFit + BucketsInYr
Move '1 to DataError
EndFunction
Else
Move 1 to $$SIM
Call ExponentialSmoothing - B3400880
NumberPeriods
$$SIM
LastBucketPosition
PntrActualValues
PntrExpoForecast = NULL
AlphaFactor
BetaFactor
ForecastAmounts
If MeanAbsoluteDeviation is not equal to '1'
If ForecastAmounts is not equal to '1'
Divide $$SIM by QtyBestFit to get MethodYield
Else
Divide $$SIM by AmtBestFit to get MethodYield
End
Decide if this method is the Best Fit Method
If MethodYield is greater than 1
Subtract 1 from MethodYield to get $SPER
Else
Subtract MethodYield from 1 to get $SPER
End
If $SPER is less than Bestfit
Move $SPER to BestFit
Move C to Method
End
Else
Move zeroes to $TOT
Subtract (MonthsBestFit - 1) from LastBucketPosition to get $X
Do MonthsBestFit times incrementing $Y
If ForecastAmounts is not equal to '1'
Subtract PntrExpoForecast,$Y from
PntrActualSales,$X to
get $DIFF
Else
Subtract PntrExpoForecast,$Y from
PntrActualAmounts,$X
to get $DIFF
End
Add the absolute value of $DIFF to $TOT
End
Divide $TOT by MonthsBestFit to get MethodYield
Decide if this method is the Best Fit Method
If MethodYield is less than BestFit
Move MethodYield to BestFit
Move C to Method
End
End
End
^
D3400875 - Forecast Simulate Method 12
Parameter Name | Data Item | Data Type | Req/Opt | I/O/Both |
---|---|---|---|---|
mnNumberOfBuckets | MATH01 | MATH_NUMERIC | NONE | NONE |
- - - Good Performance Low Value. | ||||
mnQtyBestFit | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
mnAmtBestFit | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
cMethod | EV01 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
cDataError | ERR | char | NONE | NONE |
The Data Field Error Code field is simply a generic data field to pass an error condition flag. This field is one of the fields that make up the
| ||||
cForecastAmounts | EV02 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
mnMethodYield | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
mnBestFit | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
idPtrToActualValues | GENLNG | ID | NONE | NONE |
General purpose ID variable. | ||||
mnLastBucketPosition | MATH02 | MATH_NUMERIC | NONE | NONE |
- - - Good Performance High Value. | ||||
mnNumberOfPeriods | MATH03 | MATH_NUMERIC | NONE | NONE |
- - - Bad Performance Low Value. | ||||
mnAlphaFactor | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
mnBetaFactor | MN29D9 | MATH_NUMERIC | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
mnMonthsBestFit | MATH04 | MATH_NUMERIC | NONE | NONE |
Event point for Math Numeric. | ||||
cSeasonality | EV01 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
cMeanAbsoluteDeviation | EV01 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
cMonthlyVsWeekly | EV01 | char | NONE | NONE |
An option that specifies the type of processing for an event. |
B3400880 Forecast Exponential Smoothing | ||||
B3401050 Forecast Accumulate Actuals |
None |