WHOLE-CABIN BOARDING SIMULATION RESEARCH LOG Version: Research Log v4 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 ====================================================================== Experiment Seed --------------- 1783725060901 Experimental Conditions ----------------------- Experiment number: 4 Purpose: Preserve the existing movement and event architecture while identifying which passenger directly blocks each unresolved passenger and reconstructing the longest frozen dependency chain. 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 received 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 moved more than one aisle tile per tick. Standing passenger space: One standing passenger occupied one aisle tile. External operational factors: Excluded. No luggage, overhead-locker delays, family grouping, 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. New Evidence Collected ---------------------- For each passenger: - aisle movement count; - stationary ticks; - blocked ticks; - last movement tick; - direct blocking passenger ID; - blocker-change count; - seat-event requests; - failed seat-event starts. For each scenario: - longest passenger dependency chain; - dependency-chain length; - terminal reason; - passengers with a direct blocker; - total blocked ticks; - total stationary ticks; - total seat-event requests; - total failed seat-event starts. Overall Result -------------- - All 30 scenarios again reached the stall condition. - Dependency-chain reconstruction worked. - Longest chains ranged from short local tails to chains containing more than thirty passengers. - Every examined longest chain terminated at: WAITING_FOR_SEAT_EVENT - Every scenario again reported zero passengers abandoned inside an active seat event. - NEXT_AISLE_TILE_OCCUPIED remained the dominant aggregate blocking reason. - Failed seat-event starts were often extremely high, commonly numbering in the thousands. - Near-complete scenarios generated shorter and more localised chains. - Early-collapse scenarios generated longer chains and frequently left large populations outside the aircraft. Principal Findings ------------------ 1. The suspected dependency mechanism was directly observed. Experiment 4 moved beyond global counters and reconstructed sequences such as: P179 -> P165 -> P50 -> ... -> P288 -> WAITING_FOR_SEAT_EVENT This shows that ordinary aisle passengers are not independently stalled. They form linked chains in which each occupied next tile is another unresolved passenger. 2. Chain length reflects the scale of the frozen region. Examples included: - Scenario 1: dependency length 35; - Scenario 2: dependency length 29; - Scenario 6: dependency length 21; - Scenario 7: dependency length 6; - Scenario 9: dependency length 6. The shorter chains occurred in scenarios that had boarded most of the cabin. Long chains were associated with broader aisle saturation. 3. Near-complete failure is local rather than global. Scenario 7 seated 286 of 306 passengers and had no passengers waiting outside. Its longest chain contained only six passengers. Scenario 9 seated 231 of 245 passengers and also had no passengers waiting outside. Its longest chain also contained six passengers. These results indicate that the architecture may function across almost the entire cabin and then freeze around a very small local dependency. 4. Early-collapse failure propagates to the aircraft door. Several scenarios still had more than one hundred passengers waiting outside. Those passengers were not direct members of an aisle dependency chain because they had never entered the aisle dataset. Nevertheless, their exclusion was an indirect consequence of the frozen internal chain. 5. The seat-event transaction remains a strength. Every Experiment 4 scenario reported: Remaining inside seat event: 0 The stand-yield-sit-reseat transaction completes once it begins. The unresolved condition occurs before the next event can start. 6. WAITING_FOR_SEAT_EVENT is the common terminal condition. The longest dependency chains did not terminate at an active event, middle-bank reservation or generic aisle boundary. They terminated at a passenger already at the assigned row and waiting to start the next seat event. This makes the terminal row passenger the most plausible critical node in the frozen dependency structure. 7. Failed event starts quantify event starvation. Examples included more than 3,000 failed event starts in individual scenarios. This means the same row passenger may repeatedly request an event while the required yield space remains occupied. 8. The Experiment 4 indirect-impact counter exposed a measurement-direction issue. The field: Passengers indirectly affected by root reported zero because the code defined the first passenger in the longest chain as the root. In graph terms, that passenger depends on everyone ahead and does not normally have other passengers depending on it. The critical influence actually runs in the opposite direction: - the terminal row passenger blocks the passenger immediately behind; - that passenger blocks another; - the effect propagates backward toward the entrance. Experiment 5 must therefore reverse the graph and measure fan-out from blocker to blocked passengers. Experiment 4 Conclusion ----------------------- The core hypothesis is now strongly supported: A passenger waiting at a row becomes the terminal node of a frozen aisle chain. The queue behind that passenger forms a sequence of direct dependencies, and the internal chain can prevent further passengers from entering the aircraft. The next diagnostic step is not another linear chain. It is a reverse dependency tree showing how many passengers each critical blocker affects directly and indirectly. ====================================================================== EXPERIMENT 5 — DEPENDENCY FAN-OUT AND CRITICAL-BLOCKER TREE ====================================================================== Planned Purpose --------------- Preserve all movement and event rules from Experiment 4 while reversing the dependency graph. Experiment 4 followed: blocked passenger -> blocking passenger Experiment 5 will additionally construct: blocking passenger -> directly blocked passengers This will identify the passenger whose unresolved state affects the largest subtree of other passengers. 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 external operational delays; - 1,500-tick stall detector; - maximum 30,000 ticks; - 30 scenarios. New Evidence to Collect ----------------------- For every stalled scenario: - direct dependency fan-out for each blocker; - number of direct dependants; - number of indirect descendants; - critical blocker passenger ID; - critical blocker row, seat and aisle; - dependency-tree depth; - total passengers in the critical blocker tree; - readable dependency tree; - number of terminal row-event nodes; - number of separate frozen components; - number of unresolved passengers not connected to an internal dependency tree; - outside passengers recorded separately from internal tree membership. Interpretation Goal ------------------- Experiment 5 should answer: - Which passenger is the critical blocker? - How many passengers depend on that passenger directly? - How many are affected through longer chains? - Is there one dominant frozen component or several independent components? - How much of the outside queue is downstream of a blocked entrance? - Are near-complete stalls controlled by one small tree while early collapses contain several large components? Experiment 5 remains diagnostic. No recovery or priority policy will be introduced until the critical-blocker tree has been observed across a full batch. ====================================================================== 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. Stable stalls form before the next seat event can begin. 4. Experiment 4 directly reconstructed long aisle dependency chains. 5. The terminal node of the longest chains is consistently a passenger waiting at the assigned row. 6. Long chains correspond to broad saturation; short chains correspond to near-complete local failures. 7. Passengers outside the aircraft are an indirect consequence of internal dependency trees even though they are not yet represented inside the aisle graph. 8. Experiment 5 must reverse the dependency direction and identify the critical blocker with the largest direct and indirect fan-out. ====================================================================== END OF RESEARCH LOG v4 ======================================================================