Demand timing
Demand timing allows you to configure demand records that can be served earlier or later than the demanded period in multi-period models. You can associate penalty costs for demand fulfilled early or late, as well as limits on demand timing. You can prioritize demand, allowing models to be broken down to reduce overall complexity.
This functionality makes use of columns in the existing Customer Demand and Customer Orders tables. These columns let you define the demand timing and associated penalties:
-
Periods/Time Allowed Early/Late - Specify how many periods period/after the period of demand that the product can be delivered to the customer. In Customer Demand, the columns are Periods Allowed Early and Periods Allowed Late. In Customer Orders, the columns are Time Allowed Early and Time Allowed Late. The time you specify for Customer Orders is converted to the number of periods for early/late fulfillment.
-
Early/Late Delivery Penalty Cost - Define the penalty to be incurred for early/late demand based on the associated cost basis. In both Customer Demand and Customer Orders, the columns are Early Delivery Penalty Cost and Late Delivery Penalty Cost.
-
Early/Late Delivery Penalty Cost Basis - Select the basis by which the early/late delivery penalty cost will be incurred, in terms of quantity-time, weight-time or volume-time. For example, the penalty can be based on EA-DAY (each-day) or KG-MO (kilogram-month). In both Customer Demand and Customer Orders, the columns are Early Delivery Penalty Cost Basis and Late Delivery Penalty Cost Basis.
-
Early/Late Delivery Cost Inflation Factor - Enter the growth factor to apply to the penalty cost to allow for increasing or diminishing penalties over time. In both Customer Demand and Customer Orders, the columns are Early Delivery Cost Inflation Factor and Late Delivery Cost Inflation Factor.
Calculating the number of periods early or late
In Customer Demand, the demand period is determined by the Period. To support early/late demand fulfillment, you populate Periods Allowed Early and Periods Allowed Late. These values are integers. When determining the actual number of periods supported, these values are applied to the demand Period or the combination of the Period and Series Offset Time. They are also compared to the model horizon dates, as demand cannot be served outside the model horizon. For example, assume the following:
Model horizon: 1/1/2023 - 12/31/2024
Periods: quarterly periods
Demand in each period with no Series Offset Time
Example Periods Allowed Early and Periods Allowed Late values:
Demand Period | Periods Allowed Early | Result | Actual periods early | Periods Allowed Late | Result | Actual periods late |
---|---|---|---|---|---|---|
1 | 2 | Both early periods are outside the model horizon | 0 | 2 | Both late periods (Period_002 and Period_003) are within the horizon | 2 |
2 | 2 | Only one early period (Period_001) is within the horizon, the other is outside the model horizon | 1 | 2 | Both late periods (Period_003 and Period_004) are within the horizon | 2 |
3 | 2 | Both early periods (Period_001 and Period_002) are within the horizon | 2 | 2 | Only one late period (Period_004) is within the horizon, the other is outside the model horizon | 1 |
4 | 2 | Both early periods (Period_002 and Period_003) are within the horizon | 2 | 2 | Both late periods are outside the model horizon | 0 |
In Customer Orders, the demand period is determined by the Order Date or the Order Date Formula. To support early/late demand fulfillment, you populate Time Allowed Early and Time Allowed Late. For example, these columns support values such as 45 DAY, 1 MO, etc. When determining the actual number of periods supported, these values are applied to the date as defined by the Order Date or the Order Date Formula. They are also compared to the model horizon dates, as demand cannot be served outside the model horizon. For example, assume the following:
Model horizon: 1/1/2023 - 12/31/2024
Periods: quarterly periods
Order Dates: first date of each period - 1/1/2023, 4/1/2023, 7/1/2023, 10/1/2023
Example Time Allowed Early and Time Allowed Late values:
Order Date | Period | Time Allowed Early | Result | Actual periods early | Time Allowed Late | Result | Actual periods late |
---|---|---|---|---|---|---|---|
1/1/2023 | 1 | 45 | Resulting date (11/17/2022) is outside the model horizon | 0 | 45 | Resulting date (2/15/2023) is within the current period | 0 |
10/1/2023 | 4 | 45 | Resulting date (8/17/2023) is within Period_003 (the previous period) | 1 | 45 | Resulting date (11/15/2023) is within the current period | 0 |
1/1/2023 | 1 | 120 | Resulting date (9/3/2022) is outside the model horizon | 0 | 120 | Resulting date (5/1/2023) is within the next period | 1 |
4/1/2023 | 2 | 120 | Resulting date (12/3/2022) is outside the model horizon | 0 | 120 | Resulting date (7/30/2023) is within Period_003 (the next period) | 1 |
7/1/2023 | 3 | 120 | Resulting date (3/3/2023) is within Period_001 (two periods earlier) | 2 | 120 | Resulting date (10/29/2023) is within Period_004 (the next period) | 1 |
10/1/2023 | 4 | 120 | Resulting date (6/3/2023) is within Period_002 (two periods earlier) | 2 | 120 | Resulting date (1/29/2024) is outside the model horizon | 0 |
Calculating the early/late delivery penalty cost
You can define a cost incurred per unit when demand is delivered early and select the delivery penalty cost basis to apply. The basis values are selected from quantity-time, weight-time and volume-time units of measure. When calculating the unit penalty cost, the early or late delivery penalty cost is first converted based on the associated delivery penalty cost basis. For example, assume the following:
Late Delivery Penalty Cost = 5
Late Delivery Penalty Cost Basis = "KG-DAY"
Product Unit Weight = 1 LB
Base Weight UOM = LB
Base Time UOM = DAY
Quarterly Periods
Period | Penalty cost conversion from KG to LB | Number of days in period | Late Delivery Penalty Cost |
---|---|---|---|
Period_001 | (5 / 2.20462) = 2.267965 | 90 | (2.267965 * 90) = 204.12 |
Period_002 | (5 / 2.20462) = 2.267965 | 91 | (2.267965 * 91) = 206.38 |
Period_003 | (5 / 2.20462) = 2.267965 | 92 | (2.267965 * 92) = 208.65 |
Period_004 | (5 / 2.20462) = 2.267965 | 92 | (2.267965 * 92) = 208.65 |
You can also apply an inflation factor to be applied to the penalty cost. Using the example above, assume an Early Delivery Cost Inflation Factor of 1.5 and 100 units of demand. For the demand originally demanded in Period_001, the penalty cost accounting for inflation would be:
Demand delivered 1 period late = 100 * 204.12 = $20,412.00
Demand delivered 2 periods late = 100 * (204.12 * 1.5) = $30,618.00
Demand delivered 3 periods late = 100 * (204.12 * (1.52)) = $45,927.00
Keep the following in mind when defining the inflation factor:
-
If the inflation factor is below 1, the model favors greater deviation from the requested period. The rationale is that if we are fulfilling the request ahead of or after the expected time, it is acceptable to push it to the earliest/latest possible time.
-
If the inflation factor is above 1, the model aims to fulfill the request as close as possible to the requested period.
-
If the inflation factor equals 1, the penalty rate remains unchanged if we are one or more periods early/late. Instead, the model uses a fixed penalty cost multiplied by the number of periods early/late.
Demand timing output
Columns have been added in a number of Network Optimization output tables, providing details about early and late demand fulfillment, including penalty costs. This information is available in Network Summary, Financial Summary, Network Organization Summary, Network Customer Summary, Network Product Summary and Customer Demand Summary.
Last modified: Friday May 12, 2023