ForecastSimulateMethod12

Forecast Simulate Method 12

Major Business Rule

Object Name: B3400875

Parent DLL: CMFG

Location: Client/Server

Language: C

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


^

Data Structure

D3400875 - Forecast Simulate Method 12

Parameter NameData ItemData TypeReq/OptI/O/Both
mnNumberOfBucketsMATH01MATH_NUMERICNONENONE

- - - Good Performance Low Value. 

mnQtyBestFitMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

mnAmtBestFitMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

cMethodEV01charNONENONE

An option that specifies the type of processing for an event.

cDataErrorERRcharNONENONE

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 
external parameter data structure of the Data Dictionary Server.

cForecastAmountsEV02charNONENONE

An option that specifies the type of processing for an event.

mnMethodYieldMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

mnBestFitMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

idPtrToActualValuesGENLNGIDNONENONE

General purpose ID variable.

mnLastBucketPositionMATH02MATH_NUMERICNONENONE

- - - Good Performance High Value. 

mnNumberOfPeriodsMATH03MATH_NUMERICNONENONE

- - - Bad Performance Low Value. 

mnAlphaFactorMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

mnBetaFactorMN29D9MATH_NUMERICNONENONE

This is a generic field used as a work field in Everest.

mnMonthsBestFitMATH04MATH_NUMERICNONENONE

Event point for Math Numeric.

cSeasonalityEV01charNONENONE

An option that specifies the type of processing for an event.

cMeanAbsoluteDeviationEV01charNONENONE

An option that specifies the type of processing for an event.

cMonthlyVsWeeklyEV01charNONENONE

An option that specifies the type of processing for an event.

Related Functions

B3400880 Forecast Exponential Smoothing
B3401050 Forecast Accumulate Actuals

Related Tables

None