Rung 1 workbench

loading…
Surface
sites
min roof m · apart m
what apart is for, and where its default comes from
apart is the least distance between two candidate SITES. It exists only because generation is blind to coverage — it stops the tallest-first walk clustering on one roof. Derived from physics when you leave it alone: free-field reach at your threshold ÷ 3, so here. Smaller means MORE candidates, not a coarser map. Larger than the coverage radius and the selection becomes a plain sort, because sites that far apart cannot overlap.
at
right-size, losing at most % of covered people
what Evaluate sirens chooses, and what "optimal siren" means here
The catalogue is every distinct device in the Vilnius network (model, rated power, declared level at 30 m), from the open-data layer via tools/siting/siren_catalogue.py; add types to siren_catalogue.json by hand. Every spectrum in it is a declared placeholder — one level split flat across the bands, omnidirectional — until a datasheet replaces it.

Placement is the same greedy as Evaluate, run with the loudest ticked type, because a quieter siren never reaches a cell a louder one does not. Then each kept site is right-sized: from the least important site up, it is given the smallest ticked type that loses no covered person given its neighbours. Without prices that is the only defensible meaning of "optimal siren" — the same coverage for the least rated power — and the saving is reported in watts. A cost per type turns this into a cost objective the day one exists.

Right-sizing is re-done for the set that is ON: Keep best, a How-many row, a site switched off or moved all re-size the rest. How many? still counts sirens of the loudest type. The page's Lw box is Evaluate's; this button uses the catalogue's levels, and at the page's 40 dB threshold a 121 dB siren reaches tens of kilometres in free field — the reach shown beside each type is at the current threshold, so set the threshold you mean before pressing.
threshold dB · Lw dB
maximise
sites at least m apart (0 = no limit)
why the chosen sites cluster, and what sites apart costs
The greedy maximises what maximise says, and on covered people that means it goes where the people are and keeps going. It is not trying to spread. Two sirens 400 m apart in a dense district can genuinely both earn their place, because at street level most of what one covers is shadowed and the second one lights different streets.

Spreading is a planning decision, and it costs coverage. Measured on a synthetic city with a dense core, 225 candidates, top 15, Lw 113 dB at a 40 dB threshold:
  0 m — 57.3% of people, nearest neighbours 379 / 485 m
  600 m — 55.9%, 649 / 730 m
  800 m — 53.4%, 812 / 900 m
  1000 m — 44.5%, 1006 / 1095 m
  1400 m — 29.7%, 1445 / 1490 m


So 600–800 m roughly doubles the spacing for one to four points of coverage, and past 1000 m it falls off a cliff. The reason is the source, not the objective: one siren at Lw 113 dB reached 1.29 km at the furthest and lit 0.51 km² — a tenth of the open disc that radius would give, the rest being shadow. A separation larger than a siren's own reach leaves holes by construction. Raise Lw before raising this.

If what you want is territory rather than residents, that is the covered area objective, not this control: the same 15 sites chosen on area sat 886 / 1425 m apart and reached 28.3% of people against 57.3%.
what maximise weighs — and what the census may not be used for
maximise chooses what a covered cell is worth. Covered people is now the 2021 census on a 100 m grid — real population, not a stand-in — and it is the default wherever the census covers the AOI. The census is used at its own 100 m resolution and is never resampled. A census cell counts as covered when its centre is covered, and it then contributes all of its residents. Nothing finer than 100 m is produced, drawn or stored — 100 m gridding is the disclosure control on the underlying microdata, and a finer picture would imply access nobody has. Built density stays selectable as the thing it replaced, and the two choices this page already made on AREA are due to be re-measured against population: the ranking surface and the objective itself. Both are recorded in docs/siting_workbench_state.md as open. The numbers below are the built-density measurements and have not yet been redone.

On area alone the greedy reaches only 24.3% of the coverable densely built cells at k=15, because a dense cell is expensive — mostly roof, and the streets between are shadowed — so cheap open ground wins and the old town stays dark. Built density raises that to 40.0% for 18% of the raw km² (k=30: 46.0% → 63.8% for 13%). It is a crude stand-in for where people are, not population; a population raster replaces this array and nothing else.
what at changes, and why 80 m ranks like 20 m
at is the receiver PITCH — how finely the coverage grid is sampled. Nothing to do with the spacing above. A coarse pitch is OPTIMISTIC about people: measured on Alytus at 30 m against coarser pitches with the same 102 sites (W128), the top 15 read +6.5 % / +14 % / +17 % people covered at 60 / 120 / 240 m, and the greedy's top 15 shared 8 / 10 / 5 of its sites with the 30 m ranking. The reachable ceiling itself holds within 0.1 % at every pitch. Use a coarse pitch to explore, the 30 m surface pitch before you commit to a number — and read a coverage figure at 120 m as an upper bound. (The earlier claim that 80 m ranks like 20 m was measured on AREA, top five; on people it does not hold to that degree.)
buildings
buildings changes the picture and not one number
buildings changes the PICTURE and nothing else — km², the greedy and every number below are identical in all three. A built cell holds no receiver and never will: a level at 1.5 m inside a building is exactly the trap the engine removed from its own output, and the city's published map still has it. But a reader who does not know that sees lit streets between dark blocks and concludes the buildings are not covered, which is a different claim and a wrong one. covered if their facade is gives each footprint one value — the loudest point on its own perimeter, which is the quantity END facade points report — and draws it at a lower opacity, so derived never looks like evaluated. drawn, never coloured invents nothing and only stops the blocks reading as holes.
Analytic. No GPU, no simulation.
for rung 2
what How many? answers, and what it cannot
It reads the greedy's own curve and says how many sites it took to reach each share of the population, then a ceiling: what EVERY candidate switched on at once reaches. The ceiling is the honest end of the question. People outside it are not a selection problem — no ranking of these candidates reaches them, and the answer is a louder Lw, a lower threshold, or candidate sites where there are none.

What it is not is a proof of the minimum. Choosing the best k of n sites is maximum coverage, which is NP-hard, and the usual greedy guarantee of 1 − 1/e does not even apply here: that needs a submodular objective, and this one is not. Sound adds, so a site can raise another site's marginal value by carrying cells closer to the threshold. So these counts are what the greedy needed — an upper bound on the true minimum, not the minimum.

The same non-submodularity is why the ceiling can sit above where the greedy stopped: it halts when no SINGLE remaining site adds anything, while two of them together still can. When that gap is non-zero it is reported, because it is the measured size of what a greedy leaves on the table.
A candidate is the highest surface in a 20 m cell, not a building. A cell can straddle two abutting buildings, and can sit on an antenna or a chimney rather than a mountable roof — cand_00 is the TV Tower. Nothing here knows about ownership, access or structural capacity, which is what this review is for.
reading and editing this list
Click a name to drop or restore it. Drag a marker onto another roof — the roof height and source z follow the surface underneath. On the map a solid marker is kept and a hollow red one is dropped; kept sites always draw on top, and ranked ones above those.
OpenStreetMap raster.
what this surface decides
This drives the RANKING as well as the colour. Elevation is what the source's horizon depends on; above ground ranks the building and cannot see a hill, which is why high ground gave few candidates. Measured, 30 sites: 28.40 / 27.10 / 27.03 km² for elevation / prominence / above ground. But area is not people — elevation wins partly by covering empty high ground while the dense centre loses sirens. The population raster is now in (2021 census, 100 m) and this comparison has not been re-run against it; expect it to move.
0 m
0
showing every roof
move the cursor over the map |