Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 54cac1c2268db633d66eeff1b4faa585 > files > 598

frepple-doc-0.8.1-3.fc15.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>C++ API frePPLe: module_forecast Namespace Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="../styles.css" rel="stylesheet"  type="text/css">
</head>
<body>
<div id="container">

<div id="menubar"> 
<div id="logo" align="center">
<br/><img src='../frepple.bmp' alt="frepple" /><br/>
<a href='http://www.frepple.com/'>
<strong>a Free<br/>Production Planning<br/>Library</strong>
</a>
</div>
<div id="menu">
<br/>
<h3><a href='../Main/HomePage.html'>Main</a></h3>
<h3><a href='../UI/Main.html'>User Manual</a></h3>
<h3><a href='../Tutorial/Main.html'>Tutorial</a></h3>
<h3><a href='../Frepple/Main.html'>Reference Manual</a></h3>
<h3><a href='../Main/FAQ.html'>FAQ</a></h3>
<h3><a href='index.html'>C++ API</a></h3>
<br/>
</div>  
</div>

<div id="content">
<br/>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
      <li><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>module_forecast Namespace Reference</h1>
<p>Module for representing forecast.  
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html">Forecast</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class represents a bucketized demand signal.  <a href="a00072.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00073.html">ForecastBucket</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class represents a forecast value in a time bucket.  <a href="a00073.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00075.html">ForecastSolver</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implementation of a forecast netting algorithm.  <a href="a00075.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html#ab6da5933e0f8c7727413e2ec5d45654a">initialize</a> (const <a class="el" href="a00030.html#abed9d8d8563f8322df35b7b9723d6f4f">CommandLoadLibrary::ParameterList</a> &amp;)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Module for representing forecast. </p>
<p>The forecast module provides the following functionality:</p>
<ul>
<li>A <b>new demand type</b> to model forecasts.<br/>
 A forecast demand is bucketized. A demand is automatically created for each time bucket.<br/>
 A calendar is used to define the time buckets to be used.</li>
</ul>
<ul>
<li>Functionality for <b>distributing / profiling</b> forecast numbers into time buckets used for planning.<br/>
 This functionality is typically used to translate between the time granularity of the sales department (which creates a sales forecast per e.g. calendar month) and the manufacturing department (which creates manufacturing and procurement plans in weekly or daily buckets ).<br/>
 Another usage is to model a delivery date profile of the customers. Each bucket has a weight that is used to model situations where the demand is not evenly spread across buckets: e.g. when more orders are expected due on a monday than on a friday, or when a peak of orders is expected for delivery near the end of a month.</li>
</ul>
<ul>
<li>A solver for <b>netting orders from the forecast</b>.<br/>
 As customer orders are being received they need to be deducted from the forecast to avoid double-counting demand.<br/>
 The netting solver will for each order search for a matching forecast and reduce the remaining net quantity of the forecast.</li>
</ul>
<ul>
<li>A forecasting algorithm to <b>extrapolate historical demand data to the future</b>.<br/>
 The following classical forecasting methods are implemented:<ul>
<li><b>Single exponential smoothing</b>, which is applicable for constant demands .</li>
<li><b>Double exponential smoothing</b>, which is applicable for trended demands.</li>
<li><b>Holt-Winter's exponential smoothing with mutiplicative seasonality</b>, which is applicable for seasonal demands.</li>
<li><b>Croston's method</b>, which is applicable for intermittent demand (i.e. demand patterns with a lot of zero demand buckets).</li>
<li><b>Moving average</b>, which is applicable when there is little demand history to rely on. The forecast method giving the smallest symmetric mean percentage error (aka "smape"-error) will be automatically picked to produce the forecast.<br/>
 The algorithm will automatically tune the parameters for the forecasting methods (i.e. alfa for the single exponential smoothing, or alfa and gamma for the double exponential smoothing) to their optimal value. The user can specify minimum and maximum boundaries for the parameters and the maximum allowed number of iterations for the algorithm.</li>
</ul>
</li>
</ul>
<p>The XML schema extension enabled by this module is (see mod_forecast.xsd): </p>
<pre></pre><pre> &lt;xsd:complexType name="demand_forecast"&gt;
   &lt;xsd:complexContent&gt;
     &lt;xsd:extension base="demand"&gt;
       &lt;xsd:choice minOccurs="0" maxOccurs="unbounded"&gt;
         &lt;xsd:element name="calendar" type="calendar" /&gt;
         &lt;xsd:element name="discrete" type="xsd:boolean" /&gt;
         &lt;xsd:element name="buckets"&gt;
           &lt;xsd:complexType&gt;
             &lt;xsd:choice minOccurs="0" maxOccurs="unbounded"&gt;
               &lt;xsd:element name="bucket"&gt;
                 &lt;xsd:complexType&gt;
                   &lt;xsd:all&gt;
                     &lt;xsd:element name="total" type="positiveDouble"
                       minOccurs="0" /&gt;
                     &lt;xsd:element name="net" type="positiveDouble"
                       minOccurs="0" /&gt;
                     &lt;xsd:element name="consumed" type="positiveDouble"
                       minOccurs="0" /&gt;
                     &lt;xsd:element name="start" type="xsd:dateTime"
                       minOccurs="0"/&gt;
                     &lt;xsd:element name="end" type="xsd:dateTime"
                       minOccurs="0"/&gt;
                   &lt;/xsd:all&gt;
                   &lt;xsd:attribute name="total" type="positiveDouble" /&gt;
                   &lt;xsd:attribute name="net" type="positiveDouble" /&gt;
                   &lt;xsd:attribute name="consumed" type="positiveDouble" /&gt;
                   &lt;xsd:attribute name="start" type="xsd:dateTime" /&gt;
                   &lt;xsd:attribute name="end" type="xsd:dateTime" /&gt;
                 &lt;/xsd:complexType&gt;
               &lt;/xsd:element&gt;
             &lt;/xsd:choice&gt;
           &lt;/xsd:complexType&gt;
         &lt;/xsd:element&gt;
       &lt;/xsd:choice&gt;
       &lt;xsd:attribute name="discrete" type="xsd:boolean" /&gt;
     &lt;/xsd:extension&gt;
   &lt;/xsd:complexContent&gt;
 &lt;/xsd:complexType&gt;</pre><pre> &lt;xsd:complexType name="solver_forecast"&gt;
	&lt;xsd:complexContent&gt;
		&lt;xsd:extension base="solver"&gt;
			&lt;xsd:choice minOccurs="0" maxOccurs="unbounded"&gt;
				&lt;xsd:element name="loglevel" type="loglevel" /&gt;
			&lt;/xsd:choice&gt;
		&lt;/xsd:extension&gt;
	&lt;/xsd:complexContent&gt;
 &lt;/xsd:complexType&gt;
 </pre><p>The module support the following configuration parameters:</p>
<ul>
<li>DueAtEndOfBucket:<br/>
 By default forecast demand is due at the start of the forecasting bucket. Since the actual customer demand will come in any time in the bucket this is a conservative setting.<br/>
 By setting this flag to true, the forecast will be due at the end of the forecast bucket.</li>
</ul>
<ul>
<li>Net_CustomerThenItemHierarchy:<br/>
 As part of the forecast netting a demand is assiociated with a certain forecast. When no matching forecast is found for the customer and item of the demand, frePPLe looks for forecast at higher level customers and items.<br/>
 This flag allows us to control whether we first search the customer hierarchy and then the item hierarchy, or the other way around.<br/>
 The default value is true, ie search higher customer levels before searching higher levels of the item.</li>
</ul>
<ul>
<li>Net_MatchUsingDeliveryOperation:<br/>
 Specifies whether or not a demand and a forecast require to have the same delivery operation to be a match.<br/>
 The default value is true.</li>
</ul>
<ul>
<li>Net_NetEarly:<br/>
 Defines how much time before the due date of an order we are allowed to search for a forecast bucket to net from.<br/>
 The default value is 0, meaning that we can net only from the bucket where the demand is due.</li>
</ul>
<ul>
<li>Net_NetLate:<br/>
 Defines how much time after the due date of an order we are allowed to search for a forecast bucket to net from.<br/>
 The default value is 0, meaning that we can net only from the bucket where the demand is due.</li>
</ul>
<ul>
<li>Forecast_Iterations:<br/>
 Specifies the maximum number of iterations allowed for a forecast method to tune its parameters.<br/>
 Only positive values are allowed and the default value is 10.<br/>
 Set the parameter to 1 to disable the tuning and generate a forecast based on the user-supplied parameters.</li>
</ul>
<ul>
<li>Forecast_smapeAlfa:<br/>
 Specifies how the sMAPE forecast error is weighted for different time buckets. The sMAPE value in the most recent bucket is 1.0, and the weight decreases exponentially for earlier buckets.<br/>
 Acceptable values are in the interval 0.5 and 1.0, and the default is 0.95.</li>
</ul>
<ul>
<li>Forecast_Skip:<br/>
 Specifies the number of time series values used to initialize the forecasting method. The forecast error in these bucket isn't counted.</li>
</ul>
<ul>
<li>Forecast_MovingAverage.buckets<br/>
 This parameter controls the number of buckets to be averaged by the moving average forecast method.</li>
</ul>
<ul>
<li>Forecast_SingleExponential.initialAlfa,<br/>
 Forecast_SingleExponential.minAlfa,<br/>
 Forecast_SingleExponential.maxAlfa:<br/>
 Specifies the initial value and the allowed range of the smoothing parameter in the single exponential forecasting method.<br/>
 The allowed range is between 0 and 1. Values lower than about 0.05 are not advisible.</li>
</ul>
<ul>
<li>Forecast_DoubleExponential.initialAlfa,<br/>
 Forecast_DoubleExponential.minAlfa,<br/>
 Forecast_DoubleExponential.maxAlfa:<br/>
 Specifies the initial value and the allowed range of the smoothing parameter in the double exponential forecasting method.<br/>
 The allowed range is between 0 and 1. Values lower than about 0.05 are not advisible.</li>
</ul>
<ul>
<li>Forecast_DoubleExponential.initialGamma,<br/>
 Forecast_DoubleExponential.minGamma,<br/>
 Forecast_DoubleExponential.maxGamma:<br/>
 Specifies the initial value and the allowed range of the trend smoothing parameter in the double exponential forecasting method.<br/>
 The allowed range is between 0 and 1.</li>
</ul>
<ul>
<li>Forecast_DoubleExponential_dampenTrend:<br/>
 Specifies how the trend is dampened for future buckets.<br/>
 The allowed range is between 0 and 1, and the default value is 0.8.</li>
</ul>
<ul>
<li>Forecast_Seasonal_initialAlfa,<br/>
 Forecast_Seasonal_minAlfa,<br/>
 Forecast_Seasonal_maxAlfa:<br/>
 Specifies the initial value and the allowed range of the smoothing parameter in the seasonal forecasting method.<br/>
 The allowed range is between 0 and 1. Values lower than about 0.05 are not advisible.</li>
</ul>
<ul>
<li>Forecast_Seasonal_initialBeta,<br/>
 Forecast_Seasonal_minBeta,<br/>
 Forecast_Seasonal_maxBeta:<br/>
 Specifies the initial value and the allowed range of the trend smoothing parameter in the seasonal forecasting method.<br/>
 The allowed range is between 0 and 1.</li>
</ul>
<ul>
<li>Forecast_Seasonal_initialGamma,<br/>
 Forecast_Seasonal_minGamma,<br/>
 Forecast_Seasonal_maxGamma:<br/>
 Specifies the initial value and the allowed range of the seasonal smoothing parameter in the seasonal forecasting method.<br/>
 The allowed range is between 0 and 1.</li>
</ul>
<ul>
<li>Forecast_Seasonal_minPeriod,<br/>
 Forecast_Seasonal_maxPeriod:<br/>
 Specifies the periodicity of the seasonal cycles to check for.<br/>
 The interval of cycles we try to detect should be broad enough. For instance, if we expect to find a yearly cycle use a minimum period of 10 and maximum period of 14.</li>
</ul>
<ul>
<li>Forecast_Seasonal_dampenTrend<br/>
 Specifies how the trend is dampened for future buckets.<br/>
 The allowed range is between 0 and 1, and the default value is 0.8.</li>
</ul>
<ul>
<li>Forecast_Croston_initialAlfa,<br/>
 Forecast_Croston_minAlfa,<br/>
 Forecast_Croston_maxAlfa:<br/>
 Specifies the initial value and the allowed range of the smoothing parameter in the Croston forecasting method.<br/>
 The allowed range is between 0 and 1. Values lower than about 0.05 are not advisible.</li>
</ul>
<ul>
<li>Forecast_Croston_minIntermittence:<br/>
 Minimum intermittence (defined as the percentage of zero demand buckets) before the Croston method is applied. When the intermittence exceeds this value, only Croston and moving average are considered suitable forecast methods.<br/>
 The default value is 0.33. </li>
</ul>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ab6da5933e0f8c7727413e2ec5d45654a"></a><!-- doxytag: member="module_forecast::initialize" ref="ab6da5933e0f8c7727413e2ec5d45654a" args="(const CommandLoadLibrary::ParameterList &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* module_forecast::initialize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00030.html#abed9d8d8563f8322df35b7b9723d6f4f">CommandLoadLibrary::ParameterList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>z</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initialization routine for the library. </p>

<p>Definition at line <a class="el" href="a00219_source.html#l00043">43</a> of file <a class="el" href="a00219_source.html">forecast/module.cpp</a>.</p>

</div>
</div>
</div>
<hr size="1"/><address style="align: right;"><small>Documentation generated for frePPLe by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"/></a></small></address>
</div>
</div>
</body>
</html>