Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
running ap-placement-coverage-counting simulation simulation

The floorplan as a placement oracle — where do APs both cover the space and count the crowd?

In plain words

Do the best places to put Wi-Fi radios for coverage also happen to be the best places for counting the crowd?

transmitter nine receivers, mixed heights the layout everything measured since rests on
One transmitter and nine receivers placed on the library floor where a ray-traced model said they would hear the most of it. The design claims the layout still covers the walkable floor; the card records whether that claim was ever measured. Schematic of the design, not a measurement.
Why it matters
To cover a floor you spread radios out. To count people you want them where people flow: doors, corridors, the busy hub. If the two placements differ, a network built for coverage counts badly for free.
How it is done
Across dozens of real floor plans, compute the coverage-best and the count-best placements and measure how far apart they are, with a real crowd's footfall as the check.
Where it stands
Simulation suggests different placements for coverage and counting. The 57-floor result is recorded in direct-run logs; its powered campaign seal contains no runs, and field validation remains open.

Asks, formallyAcross real floorplans, the crowd-count-optimal AP placement is materially different from the coverage-optimal one — you cannot get the count for free from a coverage-optimal rollout. Expected: mean placement divergence (1 − corner Jaccard) is large (CI excludes a 0.15 threshold) and counting-optimal tracks the doors/corridors the flow uses. The ray-traced I(C;Φ) discriminates anchor informativeness only where occupancy genuinely varies — an honest dynamic-range limit.

FoundSimulation suggests different placements for coverage and counting.

StandingCollecting data now · last activity 2026-07-13

Room56 ResPlan floors walked by 5 personas (`walk-notebook`, IP-107 agendas); coverage↔counting submodular reduction; 3 ray-traced verify floors.

The room

resplan-12439 · resplan-12439-floor-0 · 52 devices

The floor this experiment runs on — its rooms, walls, furniture and the highlighted sensors placed for it. This is the surveyed layout as last exported; a run's replay below shows the geometry as it was simulated.

The floorplan as a placement oracle: where do APs both cover the space and count the crowd?

Current assessment (2026-09-15)

Simulation suggests different placements for coverage and counting. The 57-floor result is recorded in direct-run logs; its powered campaign seal contains no runs, and field validation remains open.

The reported divergence of 0.718 [0.680, 0.754] is a simulation result over 57 floors. It is not a measured deployment advantage. The geometric surrogate failed across floors, and a wedged simulated agent invalidated the old 57% blind-spot headline. The current campaign index still has no session for c-placement-oracle-powered.

Next evidence needed: Recover an auditable run-to-reduction chain for the powered result and test the ranking on a surveyed hardware layout. Use this study as a placement hypothesis source, with EXP-F4 supplying the independent propagation check.

Basis: Thesis Narrative, the September 10 synthesis, and the September 15 register review. See the review record for evidence sources and outstanding checks.

Earlier protocol and dated results

The methods and observations below retain their original scope. Read their readiness statements and proposed next steps as historical. The current assessment above records what has changed; frozen thresholds have not been retrospectively revised.

The problem, in plain words

Think of a room lit by a few lamps. If you want the whole room lit (coverage), you space the lamps out evenly. If instead you want to watch shadows people cast as they move — to count them — you put the lamps where people walk, and you point them across the busy path. Same lamps, different best positions. Wi-Fi sensing is exactly this: an access point "covers" a floor if its signal reaches everywhere, but it "counts" well only if moving bodies pass through its links often enough to leave a measurable fingerprint on the channel.

The naive assumption in a building rollout is that once you have covered the floor for communication, you can bolt on crowd-counting for free — the APs are already there. This experiment tests that assumption. It also asks a subtler question the field has barely touched: prior work scores hand-designed placements against static seated people (wang2025_2c42 ↗). We have a generative twin that walks crowds through real geometry and ray-traces the CSI they produce, so we can ask the placement question against flowing crowds — the exact open question wang2025 leaves at the end of its paper.

What we are trying to prove

  • Hypothesis (falsifiable): the count-optimal AP set is a materially different set from the coverage-optimal one — placement divergence (1 − Jaccard of the two chosen sets) is large, its CI excludes a 0.15 threshold, and the count-optimal set tracks the doors/corridors the flow uses. If the two sets coincide everywhere, the hypothesis fails and placement is simply an area/anchor-budget problem, not a counting-geometry one.
  • Second claim (the physics is load-bearing): a geometric surrogate cannot stand in for the ray-traced counting signal — if it could (high held-out rank correlation), you would never need the expensive simulator. We expected the surrogate to help; it does not.
  • What a null means. If coverage-optimal were count-optimal, retrofitting counting onto a comms rollout would be free and this whole placement question would collapse. It does not collapse — but note the honest limit: the counting signal is only rankable where the headcount actually varies. Pin the count (a full, static room) and the estimand I(C;Φ) goes to zero by construction — which is why every simulated crowd must enter and leave.

How the experiment works (plain method)

  1. Walk a crowd on each real floor. walk-notebook (IP-107 agendas) sends 5–7 personas — a long-stay worker, a study group, a cafeteria patron, a browser, through-traffic streams — door-to-door across the actual wall layout, each arriving and leaving so the headcount ramps and drains. Output: a footfall surface (where people spend time) and a replayable trajectory.
  2. Cheap screen, corpus-wide (no ray-tracing). A submodular optimiser (coverage_submodular) places k=4 APs two ways — maximise covered footfall (breadth) vs maximise a counting-depth proxy (concentration on flow) — and measures how differently they place: 1 − Jaccard of the two sets. Coverage is provably submodular, so greedy gets within 1−1/e of optimal; counting is not submodular, so greedy there is a heuristic.
  3. Ray-traced kernel, sparse (expensive). On a few verify floors, sionna-csi-runner couples to the crowd and computes the mutual information I(C;Φ) between the live headcount and each anchor's CSI amplitude — the propagation-honest counting signal, with bootstrap CIs.
  4. Coverage-of-demand, separately (c-coverage-meets-crowds / c-coverage-estimator-factorial). For placed anchors, overlay line-of-sight coverage on the footfall and report the one scalar operations cares about: the fraction of real footfall that falls in a sensing blind-spot.

What we've found so far (honest, across three campaigns)

Two of the three campaigns carry real, sealed, run-attached sessions. One does not — read its caveat.

Finding Real number Provenance / caveat
Coverage-opt ≠ count-opt (cheap screen, 57 floors) divergence 0.718 [0.680, 0.754], differ 57/57 Stage-2 geometric proxy, not ray-traced; from direct-run logs, not a sealed session
Real corridor, ray-traced (S3DIS area_5) Jaccard 0.00, per-AP rank ρ −0.23 direct run; 1 crowd seed; single amplitude feature
Real lobby, ray-traced (S3DIS area_4) Jaccard 0.50, rank ρ 0.04 open room ⇒ objectives partly coincide (honest geometry nuance)
Furniture is not neutral count-optimal set moves in both rooms; empty↔furnished MI ρ 0.48–0.62 placement chosen on an empty CAD shell is the wrong placement
Real-crowd motivation (ATC, 18,145 persons) 15-AP coverage grid misses 46% of footfall reconstructed occupancy, not measured CSI
Geometric surrogate for ray-traced MI mean held-out ρ = 0.24 (−0.52…+0.72) the physics sim is load-bearing; "expensive-RSQ" risk confirmed
Per-candidate MI rank stability across seeds Spearman ρ = 0.41 average over seeds before trusting a rank
Ray-traced discrimination (verify floors) spread 0.25 nats where count 1→17; flat where count ≤ 8 honest dynamic-range limit; 28.5 dB/person mechanism
Coverage blind-spot ranking (7 floors, real session, 7 runs) synth 0% · 12419 1% · 16157 1% · 7421 5% · 1374 14% · 147440 22% · 12439 57% rises with area at fixed 4-anchor budget; 12439 is N=1 confounded on 4 axes
The 57% headline, re-examined (real session, 20 runs) was 76% one wedged agent; bounded-influence fix → max wedged share 0.7% the estimator, not the building, produced the number
Clean 2×2×2 factorial (placement × anchor × furniture) placement×anchor interaction +45.8 pp [+43.2,+48.4] → main effect inadmissible you cannot read an anchor-layout main effect; it depends on placement policy
Surrogate+verify (C4) and 3-variant placement_result (C5) not done the deliverable a deployer actually needs is unfinished

The three cautions, plainly. (1) The placement-oracle campaign's latest session 01KXE2P8… stamped a "POWERED GO" with divergence 0.718 — but it ran 0 runs, 0 figures, 0 CPU-hours in 44 s. The numbers are real, but they come from direct sim run executions logged in the campaign note, not from that seal; treat the seal as a write-up, not evidence. (2) The coverage-meets-crowds 57% headline was a single stuck simulated pedestrian — a pedestrian-dynamics artifact, not a coverage fact — and the follow-on coverage-estimator-factorial both fixed it and showed the anchor-layout effect is not separable from placement policy (the interaction dominates). (3) The surrogate failure (ρ=0.24) means there is no cheap path: every floor needs the uncalibrated ray-tracer, and the ray-tracer has never been checked against a real capture.

How to read the figures

Real figures live under _attachments/placement-oracle/ (agendas/, public-day/) and in the two coverage sessions' artefacts/ prefixes.

  • fig_placement_oracle_<floor> (five panels). (1) candidate grid — where an AP can mount (near a wall) vs mid-room; (2) footfall surface — where people went; (3) coverage layer; (4) per-candidate I(C;Φ) heat — the counting-informativeness of each site; (5) the chosen APs for coverage vs counting. The story is panels 3 and 4 disagreeing: bright coverage sites are not bright counting sites.
  • Public-day overlays (public_day_results.ipynb). Coverage × footfall for the S3DIS corridor and lobby, empty vs furnished. Read the corridor as the clean case (fully disjoint) and the lobby as the muddy case (small open room, objectives partly overlap) — the divergence is geometry-dependent, not universal.
  • fig_coverage_summary (coverage-meets-crowds). Blind-spot footfall ranked across 7 floors. Read it with the factorial's corrected CI version — the raw 57% bar is the contaminated one.
  • seed_trace / paired_diff (factorial). The disciplined figures: per-seed paired differences with the interaction plotted first. The honest reading is that the interaction bar excludes 0, so the tempting "hub vs dispersed" main-effect bar must not be read.

Key references

  • wang2025_2c42 ↗ — the static-seated placement baseline whose Open Question 6 (dynamic/flowing crowds) this experiment answers generatively.
  • afghantoloee2021_8628 ↗, zhen2022_bb0b ↗ — indoor sensor/anchor placement optimisation; the OR and deployment framing.
  • zhou2020_6173 ↗, liu2022_8a7a ↗, zou2018_1590 ↗ — device-free CSI counting the placement is meant to serve.
  • cominelli2023_e6ee ↗ — the field scientist's reality check on clean-tensor CSI.
  • helbing2005_94a7 ↗, chen2018_894a ↗, tordeux2016_5e66 ↗ — the crowd-model basis for the footfall surface and the wedge-artifact critique.
  • wang2026_2758 ↗, chen2023_5cbd ↗, jin2025_14eb ↗ — the red-team's sim-to-real gap and the surrogate-repair direction.
  • zhang2026_ccac ↗, guarino2026_e72c ↗ — the reproducibility bar the phantom seal violates.
  • huang2025_060d ↗ — a public real-CSI anchor for the red-team's cross-check demand.
  • chen2018_97e0 ↗, chaudhari2024_6efc ↗, chaudhari2026_85b1 ↗ — the facilities/dual-use value framing.
  • demrozi2021_bf55 ↗ — BLE occupancy, the deployment practitioner's cost basis.

See it run

Trajectory replay of run CNEESSQ4 — press play, scrub the timeline, toggle agent trails and footfall.

Loading replay…

Open the run workbench →

Campaigns & sessions 4 campaigns instantiating this experiment
Campaign Session State Runs Started Report
c-coverage-estimator-factorial R8N2MR9W finished 20 2026-07-07 synthesis →
949Z0ASD finished 20 2026-07-07 synthesis →
c-coverage-meets-crowds 4ZN697ET finished 7 2026-06-25 synthesis →
c-placement-oracle-powered — planned — — —
c-placement-oracle 98HDFER9 finished 0 2026-07-13 synthesis →
QBF585JX finished 7 2026-07-13 synthesis →
Simulation runs the 20 most recent, newest first
Run Date Gate Campaign Replay
CNEESSQ4 2026-07-14 ✓ c-placement-oracle replay →
5AESXWYK 2026-07-14 ✓ c-placement-oracle replay →
N7H8KJ2H 2026-07-14 ✓ c-placement-oracle replay →
92KCZ1T8 2026-07-14 ✓ c-placement-oracle replay →
6NQSSEN2 2026-07-14 ✓ c-placement-oracle replay →
G5C57F1B 2026-07-14 ✓ c-placement-oracle replay →
NB36STQX 2026-07-14 ✓ c-placement-oracle replay →
RV1QPPNR 2026-07-14 ✓ c-placement-oracle replay →
SXG9HHKN 2026-07-14 ✓ c-placement-oracle replay →
XBY52GD6 2026-07-14 ✓ c-placement-oracle replay →
0E8M2NE1 2026-07-14 ✓ c-placement-oracle replay →
CG3RB8E8 2026-07-14 ✗ c-placement-oracle —
ZD30MRBF 2026-07-14 ✓ c-placement-oracle replay →
95VRKNSE 2026-07-14 ✓ c-placement-oracle replay →
547GTCTX 2026-07-13 ✓ c-placement-oracle replay →
JX4V5RTN 2026-07-13 ✓ c-placement-oracle replay →
R2TYKTXZ 2026-07-13 ✓ c-placement-oracle replay →
J5TEA8NW 2026-07-13 ✓ c-placement-oracle replay →
W48MHPMW 2026-07-13 ✓ c-placement-oracle replay →
MV408DA8 2026-07-13 ✓ c-placement-oracle replay →

All exp-csi-crowd runs in the workbench →

Provenance

Data origin
simulated
Domain
csi
Room layout
csi-oracle-grid-resplan-12439

Data types

  • trajectory
  • footfall-surface
  • coverage-map
  • csi-mutual-information