Two-Cell Planning Walkthrough
A fixed Ankara baseline, azimuth recommendation, overlap trade-off and portable project/report evidence with recorded API inputs.
Can changing only two planning Cells' azimuths serve more modeled demand without excessive duplicate service? This walkthrough records a baseline, a recommendation and an alternative with less overlap in a small Ankara area. It uses public planning inputs; measured real-world RF accuracy remains unestablished, and the result does not approve a deployment.
Exact inputs and scope
Use a complete Git LFS checkout and the default
ankara-open-planning@2026.07 pack from Getting Started. Download the separate two-Cell
walkthrough project using the link's Save link as action, or use the
file in your checkout. The legacy first-use
sample remains an input-only example; its first-run UI selects
nearby Cells dynamically and is not this fixed comparison.
The walkthrough project contains two selected records and their complete planning RF profiles, dataset ID/version/hashes and priorities. It intentionally contains no computed results: import it and evaluate on the matching runtime.
| Planning record | API Cell ID | Longitude | Latitude | Baseline azimuth |
|---|---|---|---|---|
LTE-26380 |
26380 |
32.8279 | 39.9279 | 90° |
LTE-26381 |
26381 |
32.8283 | 39.9270 | 90° |
These are OpenCellID-derived planning records, not verified physical sites or operator-authoritative RF identities. Coordinates identify the existing public pack records, not a new measurement campaign. Demand attributes are heuristic planning weights, not measured traffic or population.
The recorded run used A.T.O.M 0.13.0, source
fc0f1e489110bbd30277c3454e4db95e0ca302d6, Go
1.26.10 on macOS arm64, and model/version
urban_short_range. Exact hashes and the complete
canonical request are in the recorded evidence.
Buildings SHA-256 is
d952a853b1146fe4e4136c2d8bac1b8e2c7152b33d78b0d9f82399350bfd50fc;
Cells SHA-256 is
c460c254d8748df52305d141b2f5e5147757a00b9d0581d8670084aa29ee3bd8.
Keep these settings fixed throughout:
| Input | Value |
|---|---|
| Technology / frequency / bandwidth | 4G, 2.6 GHz, 20 MHz |
| Model | urban_short_range (3GPP UMa median outdoor
planning) |
| Rays / radius / beam | 120 rays per Cell / 400 m / 120° |
| Conducted TX power / absolute TX gain | 30 dBm / 25 dBi |
| RX gain / system and polarization losses | 0 dBi / 0 dB each |
| TX height / RX height | 25 m / 1.5 m |
| Horizontal / vertical pattern | Ideal sector / flat |
| Mechanical and electrical tilt / pattern orientation | 0° each |
| Receiver sensitivity / calibration offset | Manual −115 dBm / 0 dB |
| Demand / residential / propagation reach / reduce overlap / radio quality priorities | 100 / 50 / 50 / 20 / 0 |
| Constraints / search | None / existing default coordinate search |
The fixture also freezes load 70%, reuse 1, channel CH-1, noise figure 7 dB and sample spacing 40 m. Radio quality is disabled in this optimization, so no SINR or throughput conclusion follows from those settings. Only azimuth changes; power, locations, heights, frequency and patterns remain fixed. The default bounded search and retained Pareto frontier do not prove a global optimum.
Evaluate and preserve the baseline
- Open the app at
http://localhost:8080(Docker) orhttp://localhost:5173(Go + Vite). In the project menu, choose Import and selectankara-two-cell-walkthrough.atom-project.json. Import creates a separate project. - Check Network mode with 2 selected. In Inventory, confirm the two records and their fixed per-Cell profiles. Do not replace them by drawing an area or opening the dynamic first-run sample.
- In Data, confirm the dataset/version and model. Stop if the project shows Dataset differs from this project. Replacing a pack or accepting a different model makes the numeric example inapplicable.
- Select Evaluate Network. Wait for Ready, then open Results. Record the baseline row below. The map rays show propagation; served buildings and overlap have their own populations and are not ray blockage percentages.
- Choose Save Version to preserve the evaluated baseline. In Plan → Scenarios, give it a readable baseline name. Keep it available for comparison before changing the plan.
Optimize and inspect the trade-off
- Open Simulate → Propagation → Advanced analysis, check the five Optimization priorities above, and choose Optimize Network. This runs RF; changing priorities later only reranks the retained alternatives until you explicitly search again.
- In Results → Optimization, choose View
comparison to inspect Baseline vs Recommended.
The recommended azimuths are 240° / 130° in API Cell
order
26380/26381. Optimization loads these into the working draft; verify them before saving. - Open Results → Solutions and inspect the alternative 240° / 110°, using Show all if necessary. Choose its point or row to inspect it; inspection alone does not apply it. Use the explicit apply action only if you want that plan in the draft.
- Compare all three on the same domain and priorities:
| Metric | Baseline 90° / 90° | Recommended 240° / 130° | Alternative 240° / 110° |
|---|---|---|---|
| Normalized optimization score (0–100) | 40.0089 | 81.4048 | 80.6990 |
| Served demand weight / relevant weight | 115 / 305 | 305 / 305 | 305 / 305 |
| Covered residential buildings | 167 | 338 | 327 |
| Overlapping buildings | 109 | 4 | 0 |
| Normalized propagation reach (reach-score units) | 13,418.6562 | 14,970.5508 | 14,559.8919 |
The recommendation gains 190 demand-weight units and 171 residential buildings, while removing 105 overlapping buildings, relative to the baseline. Its score increases 41.3959 points; that score is a weighted planning utility, not a coverage percentage or confidence level.
The zero-overlap alternative keeps all 305 demand-weight units but gives up 11 residential buildings and about 410.66 normalized reach-score units relative to the recommendation. It illustrates why the highest weighted score and minimum overlap need not select the same plan. The domain contains 601 relevant residential buildings; neither result means all homes or all outdoor locations are covered. Propagation reach is distance-normalized: each ray contributes up to 100 score units, capped at the lesser of its radius and 500 m. It is not metres, geographic area, user coverage or a path length between the Cells.
Save the chosen plan and export review evidence
- Choose the recommendation or explicitly apply the inspected alternative. Keep the baseline Version for comparison. Run Evaluate Network for the chosen current azimuths so the retained execution matches the exact plan you are saving, then choose Save Version. Read any stale/history notice before using a result.
- Use Results → Compare to select the baseline and chosen saved evidence. Confirm matching dataset and model identity before interpreting deltas. A changed radius, frequency or priority is a different comparison.
- Open the project menu and choose Export. Keep the
.atom-project.jsonoutside browser storage. Import it in a separate browser profile and confirm both preserved inputs/Versions. Imported IDs are remapped; provenance records the source identity. Historical results can remain readable without being a new live run, and some map layers require an explicit rerun. - In Review → Report, choose Markdown to generate and download a report from the chosen saved Version, or use PDF / Print and save the print output. These files are separate from project export. Choose Review package for a local ZIP containing both HTML and Markdown reports, the project and manifest. See the report reader guide for lineage and A4 print settings.
- A reviewer should receive the editable project plus a readable report/review package. Check the project/scenario/Version and any source Run, dataset/model, UTC timestamp, complete RF settings and the unestablished-accuracy boundary. A project file does not include the separate Run History database, generated report store or coverage surfaces.
Reproduce the recorded API comparison
With the Go API already running on the matching pack, run from the repository root using Node 24 or newer:
node scripts/reproduce-planning-walkthrough.mjs http://localhost:8080 /tmp/atom-walkthrough-evidenceThe script uses the same project importer and request builder as the
frontend. It checks dataset hashes and model version, sends two
sequential RF requests (Evaluate and Optimize), checks the
recorded fingerprint and comparison, and writes
request.json, meta.json,
baseline.json, optimization.json and
summary.json into the output directory. The recorded
scenario fingerprint is
network-6fe95eaddbb92e9ba9a3bf0fa5384544. These JSON files
are execution evidence, not importable portable projects or UI
reports.
No request is automatically retried. If the API is busy
(429), wait for its Retry-After before
rerunning. A changed dataset, model, fixture or result fails the
comparison; keep the output and investigate instead of silently
replacing the recorded values. This command verifies the API
calculation; the UI steps above separately exercise preservation and
reporting.