Skip to content

Forecasting

Forecasting is a key part of revenue management systems. You need to know how many customers of each type you should expect, so you can tailor the set of products being offered to maximize revenue.

In PassengerSim, forecasting is included as a step within an RM system, typically within the DCP process, after untruncation and before any optimization.

example.yaml
rm_systems:
  basic_emsr_b:
    processes:
      DCP:
      - step_type: untruncation
        algorithm: em
        kind: leg
      - step_type: forecast #(1)!
        algorithm: additive_pickup #(2)!
        kind: leg #(3)!
      - step_type: emsr
        algorithm: b
        kind: leg

  1. The step_type for forecasting must be forecast, this is how PassengerSim identifies what to do in this step.
  2. Several different algorithms are available for forecasting, see below for details.
  3. Forecasts can be made at the leg or path level, see below for details.

ForecastStep

Bases: RmStep

algorithm instance-attribute

algorithm: Literal[
    "exp_smoothing",
    "additive_pickup",
    "multiplicative_pickup",
]

Forecasting algorithm.

There are several available forecasting algorithms:

exp_smoothing is an exponential smoothing model. This model uses the alpha parameter to control the amount of smoothing applied. It does not (currently) incorporate trend effects or seasonality.

additive_pickup is an additive pickup model, which generates a forecast by considering the "pickup", or the number of new sales in a booking class, in each time period (DCP). This model is additive in that the forecast of demand yet to come at given time is computed as the sum of forecast pickups in all future time periods. This forecasting model does not consider the level of demand already accumulated, only the demand expected in the future. The forecast is made considering the results from the prior 26 sample days. The additive pickup model ignores the value of the alpha parameter, and it can safely be omitted when using this algorithm.

multiplicative_pickup is a multiplicative pickup model. This model is in development.

kind class-attribute instance-attribute

kind: Literal['leg', 'path', 'hybrid'] = 'leg'

Level of collected demand data that should be used for forecasting.

Hybrid forecasting is primarily a path-based forecast, but it includes EM untruncation of yieldable demand.

alpha class-attribute instance-attribute

alpha: float = 0.15

Exponential smoothing factor.