WHOLE-CABIN BOARDING SIMULATION RESEARCH LOG Version: Research Log v2 Purpose ------- This document is a running research diary rather than a formal publication. It records the experimental conditions, findings, anomalies, hypotheses and architectural decisions from each batch experiment. The project combines: - global tick-driven aisle movement; - local event-driven seat-access transactions; - randomised passenger order and cabin population; - explicit evidence collection through repeatable batch experiments. External operational factors are deliberately excluded at this stage so the structural behaviour of the movement architecture can be isolated. ====================================================================== KEY TERMINOLOGY ====================================================================== Boarding Tick ------------- One global simulation time-step. During a tick, aisle movement decisions are calculated from the state at the beginning of the tick and then applied synchronously. Event ----- A local state transition such as: - blocker stands; - blocker enters the aisle; - target passenger sits; - blocker reseats; - local aisle flow resumes. Events progress at tick boundaries. Hybrid Execution ---------------- The combined use of: - tick-driven global aisle movement; and - event-driven local seat-access behaviour. Waiting To Enter ---------------- A passenger has been created and assigned a seat but has not yet entered the aircraft aisle dataset. Moving In Aisle --------------- A passenger occupies an aisle tile and is progressing towards the assigned row. Waiting At Row -------------- A passenger has reached the assigned row but cannot yet begin the seat-access event. Seat Event ---------- The complete local interaction in which blockers stand, temporarily occupy aisle tiles, the target passenger sits, and blockers reseat. Temporary Aisle Reoccupation ---------------------------- A seated blocker leaves the seat row and temporarily occupies one aisle tile. Middle-Bank Reservation ----------------------- A deterministic mechanism that allows only one passenger from either aisle to use a particular middle seat bank at one time. Entry Headway ------------- The number of ticks separating passenger admissions into an aisle. A lower headway creates a more tightly packed entry stream. Structural Congestion --------------------- Congestion produced by the architecture itself, including: - random passenger order; - aisle occupancy; - seat interference; - blocker yield-space requirements; - middle-bank coordination. Operational Congestion ---------------------- Congestion caused by external real-world factors that remain excluded for now, including: - cabin baggage and overhead lockers; - families; - passengers needing assistance; - crew intervention; - boarding policies; - late arrivals; - passengers retrieving belongings. Recovery -------- The ability of the system to continue seating passengers after congestion forms. Stall ----- A scenario state in which no additional passenger becomes seated for a defined number of consecutive ticks. Deadlock -------- A stable configuration that cannot resolve under the current movement and event rules without an additional recovery rule. Congestion Fingerprint ---------------------- A concise diagnostic summary of the stalled system, including: - passengers still outside; - passengers in aisle; - passengers waiting at rows; - most congested row; - most congested aisle; - dominant blocking reason; - stall classification. ====================================================================== EXPERIMENT 1 — BASELINE WHOLE-CABIN BATCH ====================================================================== Experiment Seed --------------- 1783720126122 Experimental Conditions ----------------------- Purpose: Establish the first whole-cabin baseline and observe naturally emerging congestion without automatic recovery or early stall detection. Cabin configurations: - 2-4-2 - 3-3-3 - 3-4-3 Occupancy options: - 80% - 85% - 90% - 95% - 98% Passenger order: Random within each independently generated aisle queue. Seat assignment: Every passenger receives one unique seat. Middle-bank aisle assignment: Random but fixed for each passenger. A passenger cannot switch aisle because the middle seat bank physically separates the two aisle datasets. Entry headway: Randomly selected per scenario from: - 0-0 - 0-1 - 0-2 - 1-2 - 1-3 Walking speed: Uniform. Each passenger may move at most one aisle tile per tick. Standing passenger space: One standing passenger occupies one aisle tile. Seat events: Blockers stand, move into available yield tiles, the target sits, blockers reseat, and aisle flow resumes. External factors: Excluded. No luggage, families, crew intervention, boarding groups, priority boarding, passenger assistance or operational delays. Stopping rule: Maximum of 30,000 ticks. Scenarios: 30. Overall Result -------------- - 30 scenarios executed. - 0 scenarios reached complete boarding. - All 30 scenarios reached the 30,000-tick limit. - Average waiting time was approximately 6,010 ticks. - Several scenarios came very close to completion. - The best baseline runs seated more than 95% of the cabin. - The weakest runs stalled much earlier. Principal Findings ------------------ 1. The simulation successfully generates realistic congestion. The system produced: - aisle queues; - seat-access interference; - blocker yield events; - temporary aisle reoccupation; - left/right aisle imbalance; - passengers remaining outside the aircraft. 2. Independent aisle behaviour was confirmed. The two aisle datasets frequently developed very different movement totals, maximum occupancies and seat-event counts. 3. Passenger ordering appeared more influential than occupancy alone. Some 80% occupancy scenarios performed worse than 95-98% scenarios, suggesting that the order in which passengers reach their rows can dominate simple density. 4. Middle-bank reservation generally worked. Reservation denials were usually rare, indicating that the reservation mechanism itself was not the main source of failure. 5. Several scenarios nearly completed. Examples included runs with only three, eleven or sixteen passengers remaining. This indicated that the architecture was capable of moving almost the entire population before entering a stable unresolved state. 6. One conflict counter behaved pathologically. A single scenario recorded a very large opposite-aisle conflict count. This was later interpreted as the same unresolved conflict being counted repeatedly on each tick rather than thousands of independent conflict events. Initial Four-Stage Interpretation --------------------------------- The baseline commonly progressed through: 1. rapid initial boarding; 2. increasing seat interference; 3. localised congestion pockets; 4. persistent waiting chains. The final recovery stage was identified as the principal weakness. Research Conclusion from Experiment 1 ------------------------------------- The architecture could create and measure congestion, but it lacked sufficient diagnostics to explain why the final waiting chains did not recover. ====================================================================== EXPERIMENT 2 — STALL DIAGNOSTIC BATCH ====================================================================== Experiment Seed --------------- 1783721190900 Experimental Conditions ----------------------- Purpose: Identify when boarding progress stops and determine which passenger states and blocking reasons dominate the stalled configuration. All movement, cabin, occupancy, queue, seat assignment and external-factor conditions remained the same as Experiment 1. New diagnostic condition: A scenario is declared stalled after 1,500 consecutive ticks without any additional passenger becoming seated. Stopping rule: - successful completion; or - 1,500 consecutive ticks without a new seated passenger; or - 30,000 maximum ticks. New evidence collected: - waiting-to-enter count; - moving-in-aisle count; - waiting-at-row count; - in-seat-event count; - last passenger movement; - longest unchanged passenger; - dominant blocking reason; - final aisle snapshots; - longest unresolved row and aisle. Scenarios: 30. Overall Result -------------- - All 30 scenarios triggered the stall detector. - Stalls were detected much earlier than 30,000 ticks. - Typical stall detection occurred at approximately 2,200-2,500 ticks. - No stalled scenario had passengers abandoned inside an active seat event. - The dominant blocking reason was almost always: NEXT_AISLE_TILE_OCCUPIED - One near-complete run seated 242 of 245 passengers. - Several runs still had passengers outside the aircraft when the interior became immobile. Principal Findings ------------------ 1. The event transaction itself is generally completing. Every stalled scenario reported: Remaining inside seat event: 0 This is a major architectural strength. Once a stand-yield-sit-reseat transaction starts, it usually completes. 2. The dominant failure is at the boundary between aisle movement and event initiation. Passengers reach rows and need blockers to enter the aisle. However, the required yield tiles may already be occupied by the queue behind them. 3. The central circular dependency is: Target passenger waits at assigned row ↓ Seat blockers need empty aisle yield tiles ↓ Required yield tiles contain queued passengers ↓ Queued passengers cannot move because the target passenger blocks the row This is the strongest current explanation for the stable stall. 4. Passengers outside the cabin are a significant emergent result. Some scenarios had dozens or more than one hundred passengers still waiting to enter. The aircraft interior became saturated before the complete population could be admitted. This was not inserted as a special rule. It emerged naturally from the interaction between admission, aisle occupancy and seat access. 5. Entry headway appears important. A moderate headway of 1-2 ticks performed best in this batch. Very tight admission often produced early saturation, while wider headways did not guarantee recovery. 6. Passenger order remained highly influential. Scenarios with the same cabin, occupancy and headway could produce substantially different completion percentages. 7. Rear-row and front-row stalls both occurred. Rear-row stalls suggest terminal yield-space limitations. Front-row stalls are especially damaging because they obstruct nearly the entire population behind them. 8. Opposite-aisle conflict counts require refinement. When the same conflict remains unresolved for many ticks, the code currently counts it repeatedly. Future code should distinguish: - unique conflict episodes; and - ticks spent in conflict. Key Near-Complete Diagnostic Scenario ------------------------------------- Configuration: 3-3-3 Occupancy: 85% Passengers: 245 Seated: 242 Remaining: 3 Diagnostic state: - 0 waiting to enter; - 1 moving in aisle; - 2 waiting at rows; - 0 inside seat event. Dominant reason: ACTIVE_SEAT_EVENT_AHEAD Interpretation: The broad architecture can nearly complete boarding. The remaining weakness may be concentrated in terminal-row event space rather than general cabin congestion. Current Research Hypothesis --------------------------- The main structural failure is not insufficient simulation time. It is a circular space-allocation problem. More ticks do not resolve a stable configuration in which: - a target blocks the row; - blockers require yield space; - queued passengers occupy the yield space; - queued passengers cannot pass the target. ====================================================================== EXPERIMENT 3 — REPEATED STALL-DIAGNOSTIC BATCH ====================================================================== Experiment Seed --------------- 1783723669589 Important Repository Note ------------------------- The Experiment 3 results file contains the stall-diagnostic fields from Experiment 2, but it does not contain the planned congestion-fingerprint fields or Type A-F classifications. Therefore, this run is recorded honestly as a repeated stall-diagnostic batch. It remains scientifically valuable because it tests whether the Experiment 2 findings reproduce under a new random seed. This repository distinction is one reason all future source code, console output, results text and CSV output now carry an explicit experiment number. Experimental Conditions ----------------------- Experiment number: 3 Purpose: Repeat the stall-diagnostic architecture under a new random experiment seed and test whether the earlier congestion findings reproduce. Cabin configurations: - 2-4-2 - 3-3-3 - 3-4-3 Occupancy options: - 80% - 85% - 90% - 95% - 98% Passenger order: Random within each independently generated aisle queue. Seat assignment: Every passenger receives one unique seat. Middle-bank aisle assignment: Random but fixed for each passenger. Entry-headway options: - 0-0 - 0-1 - 0-2 - 1-2 - 1-3 Walking speed: Uniform; no passenger moves more than one aisle tile per tick. Standing passenger space: One standing passenger occupies one aisle tile. External operational factors: Excluded. No luggage, overhead-locker delay, families, crew intervention, boarding policy, passenger assistance or late arrivals. Stall rule: 1,500 consecutive ticks without an additional passenger becoming seated. Maximum rule: 30,000 ticks. Scenarios: 30. Overall Result -------------- - All 30 scenarios triggered the stall detector. - No scenario completed full boarding. - Average stall-detection time was 2,283.17 ticks. - Average waiting time was 744.08 ticks. - Every scenario again reported zero passengers abandoned inside an active seat event. - NEXT_AISLE_TILE_OCCUPIED dominated 29 of 30 scenarios. - Scenario 10 instead reported WAITING_FOR_SEAT_EVENT as its dominant reason. Reproducibility Finding ----------------------- Experiment 3 strongly reproduced the central Experiment 2 result: The local seat-event transaction generally completes, but stable queues form at the boundary between aisle movement and the initiation of the next seat event. This is no longer a one-batch anomaly. It appeared again across a new set of 30 random scenarios. Completion Range ---------------- The strongest runs included: - Scenario 10: 207 of 216 seated, approximately 95.8%. - Scenario 13: 194 of 204 seated, approximately 95.1%. - Scenario 22: 208 of 228 seated, approximately 91.2%. - Scenario 29: 198 of 228 seated, approximately 86.8%. The weakest runs included: - Scenario 25: 103 of 306 seated, approximately 33.7%. - Scenario 24: 130 of 353 seated, approximately 36.8%. - Scenario 17: 145 of 353 seated, approximately 41.1%. - Scenario 5: 111 of 259 seated, approximately 42.9%. This wide spread confirms that passenger ordering and the location of the first stable obstruction are highly influential. Passengers Remaining Outside ---------------------------- The number still waiting to enter ranged from zero in near-complete runs to very large populations, including: - 105; - 120; - 132; - 155; - 160; - 176. This remains one of the most important emergent findings. The model does not explicitly stop admission as an airline policy. Instead, the cabin loses the ability to accept additional passengers because its internal aisle state has become saturated. Small Number of Row-Waiting Passengers -------------------------------------- Most stalled runs had only about three to ten passengers waiting at their rows. A small number of row-level passengers can therefore immobilise dozens of aisle passengers and prevent many more from entering. This supports the circular yield-space hypothesis. Seat-Event Milestone -------------------- Every Experiment 3 scenario recorded: Remaining inside seat event: 0 This repeated evidence allows the seat-event transaction to be treated as a current architectural strength rather than the main failure source. Near-Completion Transition -------------------------- Scenario 10 was especially informative: - 207 of 216 seated; - zero waiting to enter; - four moving in the aisle; - five waiting at rows; - dominant reason: WAITING_FOR_SEAT_EVENT; - longest unresolved row: 30. This suggests that the failure mechanism changes as completion approaches. Earlier collapse: - queue saturation; - NEXT_AISLE_TILE_OCCUPIED; - many passengers outside or compressed in the aisle. Late collapse: - a small unresolved tail; - passengers already inside; - waiting for local event initiation; - terminal or near-terminal row sensitivity. Left/Right Aisle Imbalance -------------------------- Several scenarios showed one aisle performing far more movement and seat events than the other. This confirms that congestion is often local rather than whole-aircraft and that one aisle can become nearly dormant while the other continues progressing. Experiment 3 Conclusion ----------------------- The Experiment 2 diagnosis is reproducible. The dominant system weakness is not failure during an active seat transaction. It is the dependency chain formed when: - a passenger waits at a row; - the required yield tiles are occupied; - queued passengers cannot pass; - passengers outside cannot enter; - the same local conditions repeat indefinitely. The next experiment should identify which passenger is directly blocking which other passenger and reconstruct the dependency chain rather than merely count global blocking reasons. ====================================================================== EXPERIMENT 4 — WAIT HISTORY AND DEPENDENCY-CHAIN ANALYSIS ====================================================================== Planned Purpose --------------- Preserve the same movement and event architecture while adding passenger-level evidence explaining who is waiting because of whom. Experimental Conditions ----------------------- The following remain controlled and unchanged: - the same three cabin configurations; - the same occupancy options; - random seat allocation; - random passenger order; - fixed middle-bank aisle assignment; - the same entry-headway options; - uniform walking speed; - one standing passenger per aisle tile; - no luggage or external operational delays; - 1,500-tick stall detector; - 30 scenarios. New evidence to collect ----------------------- For every passenger: - total aisle moves; - total ticks spent stationary; - number of blocked ticks; - number of times the blocking passenger changed; - last successful movement tick; - seat-event requests; - failed seat-event starts; - blocking passenger ID; - blocking chain depth at stall. For every stalled scenario: - the head passenger of each frozen chain; - the longest dependency chain; - a readable chain such as: P17 -> P44 -> P102 -> row-event P61; - whether the chain ends at: - a row passenger; - an occupied yield tile; - the aisle boundary; - an active event; - an unresolved middle-bank reservation; - number of passengers indirectly affected by the head blocker. Experiment 4 is still diagnostic rather than corrective. No recovery rule will be introduced until the dependency evidence identifies the precise mechanism that should be changed. ====================================================================== CONTROL-VARIABLE POLICY ====================================================================== External factors remain excluded until the structural dependency mechanism is understood. Future operational experiments may later introduce: - cabin luggage; - random luggage-storage duration; - full overhead lockers; - passengers returning to find storage; - family groups; - passenger assistance; - crew intervention; - policy-based boarding groups. Each operational factor must be introduced in a separately named experiment so its effect can be compared against the structural baseline. ====================================================================== RUNNING CONCLUSIONS ====================================================================== 1. The hybrid tick/event architecture is functioning. 2. Active seat events normally complete correctly. 3. Complete boarding remains unreliable under unrestricted random ordering. 4. The dominant failure is reproducibly associated with frozen aisle dependency chains and unavailable yield space. 5. A small number of passengers waiting at rows can indirectly prevent a much larger population from moving or entering the cabin. 6. Passenger order can outweigh occupancy percentage in individual scenarios. 7. Near-complete and early-collapse runs likely represent different forms or stages of the same dependency mechanism. 8. Experiment 4 must identify direct and indirect passenger dependencies before any recovery policy is designed. ====================================================================== END OF RESEARCH LOG v3 ======================================================================