Skip to content

Bunch compilation context model ​

1. Overview ​

Compiles flight task bunches into the column generation optimization model, managing the registration of task-time, flow, fleet-balance, flight-link, and flight-capacity constraints and incremental column addition.

1. Dependent Contexts ​

  1. task (Flight Task)
  2. rule (Rule)
  3. framework (gantt_scheduling)

2. Concepts / Entities ​

1. Compilation ​

The set of decision variables for flight task bunches in column generation, specialized as BunchCompilation<FlightTaskBunch, FltX, FlightTask, Aircraft, FlightTaskAssignment>.

xb(k) : Decision variable for bunch b in iteration k, taking values 0 or 1, indicating whether bunch b is selected.

yi : Auxiliary decision variable for flight task i, used in link and fleet balance constraints.

za : Auxiliary decision variable for aircraft a, used in fleet balance constraints.

Represents a connection between two consecutive unrecovered flight legs with a split cost.

prevTaskl : Predecessor task of link l.

succTaskl : Successor task of link l.

splitCostl : Split cost of link l.

3. Fleet Balance CheckPoint ​

A combination of airport and aircraft minor type, used to track aircraft distribution across airports.

airportc : Airport of checkpoint c.

aircraftMinorTypec : Aircraft minor type of checkpoint c.

4. Flight Capacity ​

Tracks passenger and cargo capacity expressions across flight task bunches.

passengeri,cls : Passenger capacity expression for flight task i at class cls.

cargoi : Cargo capacity expression for flight task i.


3. Variables ​

1. Decision Variables ​

xb(k) : Selection variable for bunch b in iteration k, dimensionless, domain {0,1}, indicates whether bunch b is selected for the recovery plan, ∀b∈B(k).

yi : Link auxiliary variable for task i, dimensionless, domain {0,1}, indicates whether task i is covered by a selected bunch, ∀i∈I.

za : Fleet balance auxiliary variable for aircraft a, dimensionless, domain {0,1}, indicates whether aircraft a is used, ∀a∈A.

2. Auxiliary Variables ​

link_slackl : Slack variable for link l, domain [0,+∞), penalizes links not covered by any selected bunch, ∀l∈L.

fleet_slackc : Fleet balance slack variable for checkpoint c, domain [0,+∞), penalizes aircraft distribution deviations, ∀c∈C.


4. Predicates ​

1. Task Type ​

isFlight : Task i is of flight type (Flight or VirtualFlight).

isRecoveryNeeded : Task i requires recovery within the recovery time window.

2. Capacity Type ​

hasPassenger : Aircraft of flight task i has passenger capacity.

hasCargo : Aircraft of flight task i has cargo capacity.


5. Sets ​

1. Bunches ​

B : Universal set of all generated flight task bunches.

B(k) : Subset of bunches generated in iteration k.

Ba : Subset of bunches assigned to aircraft a, ∀a∈A.

Bi : Subset of bunches containing task i, ∀i∈I.

2. Tasks ​

I : Universal set of all flight tasks.

IR : Subset of tasks requiring recovery.

IF : Subset of flight-type tasks.

L : Universal set of all flight links.

LC : Subset of connecting links.

LS : Subset of stopover links.

LI : Subset of connection-time-ignoring links.

4. Checkpoints ​

C : Universal set of all fleet balance checkpoints (airport × minor type combinations).


6. Intermediate Values ​

Description: The number of selected bunches covering link l.

linkl=∑b∈B:b⊃lxb(k),∀l∈L

2. Fleet Balance Expression ​

Description: The number of aircraft arriving at checkpoint c.

fleetc=∑a∈Acza,∀c∈C

3. Passenger Capacity Expression ​

Description: Total passenger capacity for flight task i at class cls.

passenger_capacityi,cls=∑b∈Bicap(b,i,cls)⋅xb(k),∀i∈IF,∀cls∈CLS

4. Cargo Capacity Expression ​

Description: Total cargo capacity for flight task i.

cargo_capacityi=∑b∈Bicap(b,i)⋅xb(k),∀i∈IF

7. Assertions ​

Description: Each link's coverage count must be consistent with the task decision variables of bunches containing it.

∀l∈L(linkl=∑b∈B:b⊃lxb)

2. Fleet Balance Consistency ​

Description: The aircraft count at each checkpoint must match the original plan.

∀c∈C(fleetc=expected_amountc)

8. Constraints ​

1. Task Coverage Constraint ​

[CN]: 任务覆盖约束

Description: Every flight task that requires recovery must be covered by exactly one selected bunch.

s.t.∑b∈Bixb=1,∀i∈IR

[CN]: 链接松弛约束

Description: The link coverage count plus its slack variable must be at least the threshold.

s.t.linkl+link_slackl≥1,∀l∈L

3. Fleet Balance Constraint ​

[CN]: 车队平衡约束

Description: The number of aircraft arriving at each checkpoint plus its slack variable must equal the expected amount.

s.t.fleetc+fleet_slackc=expected_amountc,∀c∈C

9. Objective Function (if applicable) ​

Description: Minimize total recovery cost including bunch costs and slack penalties.

min∑b∈Bcost(b)⋅xb+∑l∈Lλl⋅link_slackl+∑c∈Cμc⋅fleet_slackc

10. Algorithm References ​

Algorithm NameFile PathReferenced InBrief Description
Threshold SlackexampleThresholdSlackSection 3 Auxiliary VariablesThreshold slack function for link and fleet balance

11. Ubiquitous Language ​

TermSymbolDefinition
BunchBAn ordered sequence of flight tasks assigned to a single aircraft
CompilationCompilationThe set of decision variables for column generation
CheckPointCA combination of airport and aircraft minor type
LinkLA connection between two consecutive flight legs
Split CostsplitCostCost allocation for a link

12. Design Decisions ​

DecisionAlternativesRationaleDate
Use threshold slack instead of hard constraintsHard constraints, linear relaxationAllows infeasible solutions with penalty, improving solving flexibility-

13. Change Log ​

VersionChangeReason
v1Initial implementationBasic column generation compilation