-
Notifications
You must be signed in to change notification settings - Fork 0
Home
In one sentence: NetworkModel_EU measures how far today's pharmacy network is from the best one the road network allows; this wiki explains why the model is built as it is, how to run it and how to read its results.
Where this sits: Before everything — this page is the map of the wiki. The pipeline it maps runs GeoDMS → Arrow → Julia LP → sweep → rounding → scenarios → deck; The pipeline in plain words walks it once, Branches data and environment says which code and data produced which number.
Object Vision builds it for JRC (project CRISP-EU): GeoDMS computes road travel times on a TomTom network, Julia optimises pharmacy locations on them, GeoDMS maps the answer.
| When | Question | Formal pages | |
|---|---|---|---|
| Pharmacies (current) | 24 May 2026 (first pharmacy λ-sweep, a9ef6cc) → now, branch ServiceAccess
|
How much less travel at today's pharmacy count (S1); how many fewer pharmacies at today's travel (S2)? | Pharmacy service access · Lambda sweep method · Pharmacy results September 2026 |
| Schools | Branch forked 20 Oct 2025 (b765147, from the road-network model Jip started in 2023); school optimisation in Julia Feb → May 2026, same branch, earlier commits |
Which schools to keep open, balancing travel against under-enrolment? | Service allocation procedure |
The tool is a linear programme (LP; Glossary) that charges a price λ per open pharmacy and minimises travel plus that charge. Solving it once per price traces the frontier (Glossary): for each number of pharmacies, the lowest total travel the road network allows. Today's network sits above it; S1 drops straight down, S2 moves straight left — The lambda sweep and the Pareto frontier.
Why the subject changed from schools to pharmacies in May 2026 is not recorded in the repository. In the model, every pupil had to be served and a small school paid a shortfall penalty; a pharmacy client may be left unserved at a fixed price and each open location simply costs λ. The school formulation survives as run_scenario in lp_run.jl — Alternatives not pursued, Decision log.
-
GeoDMS (
cfg/) builds the road network per study area and landbody, and writes each populated 1 km² cell's road times to its choice set as Arrow files, once for today's pharmacies and once for candidate cells. → GeoDMS OD matrix and choice set · Scope rules and data gaps -
Julia (
settings.jl,lp_run.jl,lambda_sweep_simplex.jl) scores today's network — the baseline ★ (Glossary) — and builds one LP per area under two travel-cost shapes, LINEAR and LOGISTIC, because they reward different things. → The facility location model explained · Travel cost functions -
The sweep re-solves that LP along a ladder of prices (
win the code; the € label on λ is a placeholder) and rounds each fractional solution to a real open set, giving a lower and an upper bound on the true optimum. → The lambda sweep and the Pareto frontier · From LP fractions to real pharmacies - Scenarios. No ladder price lands exactly on today's count or travel, so S1 and S2 are pinned by bisection between neighbouring points (#52); the deck tables interpolate instead. The open sets return to GeoDMS for maps and go to JRC as location files. → Scenarios S1 S2 S3
-
doc/turns the sweep logs into deck data, charts, slides and CSVs; nothing there solves anything, so every number on the results page traces back to a log line. → Deck and charts pipeline · Log lines and output files
15 September 2026. This wiki describes
ServiceAccessat e25416b (10 September), the GitHub head. The results page and the committeddoc/deck_data.jsonare the 3 September data generation (41 disjoint areas, Italy on the ESPON list with 12 991 pharmacies, LINEAR S1 −26 % / S2 −34 %). The 11–12 September regeneration of #52, #53 and #44 (216ac77: 43 disjoint areas, OECD Italy 20 621, S1 −23 % / S2 −30 %) is not on GitHub — only on Maarten's machine. Never mix them; the tells and the per-area provenance are in Branches data and environment.
- Branches data and environment — which code and data produced which number.
- The pipeline in plain words — the whole chain once, on a toy area.
- The facility location model explained — what one LP solve decides.
- Travel cost functions — LINEAR vs LOGISTIC, and why both run.
- The lambda sweep and the Pareto frontier — why one price picks one point; the charts.
- From LP fractions to real pharmacies — rounding, and what the gap certifies.
- Scenarios S1 S2 S3 — reading S1/S2 off the frontier; three S1 definitions.
- Scope rules and data gaps — why a data gap must not look like headroom.
- Metrics aggregation and ranking — the aggregated frontier over all areas and the ranked lists.
- Pharmacy results September 2026 — now the numbers make sense.
- As needed: Running a sweep end to end, Log lines and output files, Code walkthrough settings, Code walkthrough lp_run, Code walkthrough lambda_sweep_simplex, Decision log, Background theory, FAQ, Glossary.
- A fresh checkout re-renders the deck but cannot sweep: the Arrow inputs and the sweep logs are not in the repository, only on Maarten's machine. → Running a sweep end to end
- The 12 September generation is unpushed (see State of play); the results page is one generation behind the issues.
- Open: #54 — FRI's LP curve has a dent because its July and September points were solved on different candidate sets; FRI is being re-swept, and sixteen other areas mix a July sweep with September points. → The lambda sweep and the Pareto frontier · Branches data and environment
- 4 September: the catchment-cap ladder was dropped and €100 000 declared a placeholder. Dates, reasons, effects of every such change: Decision log.
Start here — Home · The pipeline in plain words · Branches data and environment
Understanding the method — The facility location model explained · Travel cost functions · The lambda sweep and the Pareto frontier · From LP fractions to real pharmacies · Scenarios S1 S2 S3 · Scope rules and data gaps · Metrics aggregation and ranking · Background theory
Working with the code — GeoDMS OD matrix and choice set · Code walkthrough settings · Code walkthrough lp_run · Code walkthrough lambda_sweep_simplex · Running a sweep end to end · Log lines and output files · Deck and charts pipeline · Installation of Julia
Reference — Lambda sweep method · Pharmacy service access · Pharmacy results September 2026 · Decision log · Alternatives not pursued · FAQ · Glossary · Service allocation procedure
Repository: ObjectVision/NetworkModel_EU.
Start here
Understanding the method
- The facility location model explained
- Travel cost functions
- The lambda sweep and the Pareto frontier
- From LP fractions to real pharmacies
- Scenarios S1 S2 S3
- Scope rules and data gaps
- Metrics aggregation and ranking
- Background theory
Working with the code
- GeoDMS OD matrix and choice set
- Code walkthrough settings
- Code walkthrough lp_run
- Code walkthrough lambda_sweep_simplex
- Running a sweep end to end
- Log lines and output files
- Deck and charts pipeline
- Installation of Julia
Reference
- Lambda sweep method
- Pharmacy service access
- Pharmacy results September 2026
- Decision log
- Alternatives not pursued
- FAQ
- Glossary
- Service allocation procedure
External