Skip to content

Column Generation: The Mathematical Core

Because the number of possible legal crew pairings in an airline network is too vast to enumerate, modern airline crew optimization systems rely on an advanced operations research algorithm known as Column Generation.

In the Jeppesen ecosystem, the solver uses Column Generation to break the combinatorial explosion of the crew pairing problem into manageable pieces.


1. The Master Problem vs. The Subproblem

Column Generation splits the optimization task into two interacting mathematical phases:

The Master Problem (The Optimizer)

The Master Problem is a Set Covering problem. It looks at a restricted pool of valid pairings (columns) and attempts to select the best combination to cover all flights at the lowest cost.

The Subproblem (The Pairing Generator)

The Master Problem does not know all possible pairings. It relies on the Subproblem (the Pairing Generator) to create them dynamically. The optimization engine generates a sequence of flights from a given flight network.

2. The Generation Loop

The relationship between the Optimizer, the Generator, and Rave forms a continuous loop:

sequenceDiagram
    participant Master as Optimizer (Master Problem)
    participant Sub as Generator (Subproblem)
    participant Rave as Rave Rule Engine

    loop Column Generation Iteration
        Master->>Sub: Request new pairings with negative reduced cost
        Sub->>Sub: Build new flight sequences
        Sub->>Rave: Is this sequence a valid pairing?
        Rave-->>Sub: True/False + Cost Value
        Sub-->>Master: Return valid, profitable pairings (Columns)
    end
    Master->>Master: Solve final Integer Program

3. Why Rave is Critical to the Subproblem

During the Subproblem phase, the generator blindly pieces together flights based on mathematical profitability. It has to check all these feasibility rules to ensure whether the sequence forms a valid pairing. If Rave evaluates the rules efficiently, the Subproblem runs quickly; if rules are misconfigured, the generation process bottlenecks.