Skip to content

EMSR Optimization

Optimization is the most fundamental part of revenue management systems, is it is the process used to tailor the set of products being offered to maximize revenue. It typically occurs after untruncation and forecasting.

PassengerSim offers several different optimization algorithms. One widely used algorithm is called EMSR (expected marginal seat revenue), which has a few variants, generally labels as "A", "B", and "C".

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

  1. The step_type for EMSR optimization is emsr, this is how PassengerSim identifies what to do in this step.

EmsrStep

Bases: RmStep

algorithm instance-attribute

algorithm: Literal['a', 'b', 'emsra', 'emsrb']

Which variant of the EMSR optimization algorithm should be applied.

Currently the "A" and "B" variants are implemented.

kind class-attribute instance-attribute

kind: Literal['leg'] = 'leg'

EMSR is a leg-based optimization algorithm.

The kind parameter is included in the interface for compatability, but setting any value here other than leg will result in an error.

snapshot_filters class-attribute instance-attribute

snapshot_filters: list[Any] = []