Resource constraint is violated by ~0.16 at the terminal period of a transition path

Aperta
#1,216 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
numpy, python
Ambito
backend, data

Direzione di ricerca

Start by tracing the terminal-period calculation in resource_constraint_error and the TPI boundary conditions mentioned in the issue; compare the final period with interior periods using the available TPI pickles or a period-by-industry profile. Determine whether the discrepancy comes from the spending rule, terminal alpha treatment, capital-good closure, or truncation, then document the cause or propose a supported terminal-period exemption.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

The resource constraint is violated by ~0.16 at the final period of a transition path, and the only available remedy is to raise RC_TPI far past its own schema maximum.

Downstream, OG-UK sets p.RC_TPI = 0.2 for exactly this reason, with an in-code comment attributing it to "a known boundary-condition discontinuity in fiscal.py". RC_TPI's paramtools validator is range: {min: 1e-13, max: 0.01}, so 0.2 is 20x the declared maximum and only takes effect by direct attribute assignment after update_specifications.

Measured

Benchmarking OG-UK at production shape (S=80, J=7, T=60, M=1, GS tax functions, ogcore 0.17.0), across four runs — baseline and a CIT reform, each under both TPI_outer_method settings:

baseline  picard    max_RC_error = 0.158020
baseline  anderson  max_RC_error = 0.158019
reform    picard    max_RC_error = 0.160140
reform    anderson  max_RC_error = 0.160146

Identical to six significant figures across solvers, so this is a property of the model at the path boundary, not a solver artifact. Interior periods are reported as well within 1e-4.

Why it is worth fixing rather than tolerating

  • 0.16 is ~1,600x the nominal RC_TPI default of 1e-4, so the transition path's central accounting identity is unverified at its endpoint.
  • Because the check is np.any against a single scalar (#1210), accommodating the terminal period waives the interior too. #1210 proposes separating those; that makes the failure visible but does not remove it.
  • Any country package tracing a full transition inherits the same problem and will reach for the same out-of-contract RC_TPI.

What would help

Either a diagnosis of the terminal discontinuity — is it the tG2 spending rule, the terminal alpha_G/alpha_I treatment, the capital-good closure, or the truncation itself? — or, if it is inherent to truncating at T, an explicit statement to that effect plus a supported way to exempt the terminal period, rather than every downstream model rediscovering the 0.2 workaround.

Happy to help narrow it down if there is a view on the likeliest culprit. I have the four TPI pickles above and can profile resource_constraint_error by period and industry.

Related: #1210 (the check cannot exempt the terminal period), PSLmodels/OG-UK#72 and OG-UK#75 (the downstream workaround and an interim guard).

Lingua principale
Python
Stelle
85
Fork
153
Merge medio
1g 19h
PR unite (30g)
19

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PSLmodels/OG-Core

Tutte le issue di PSLmodels/OG-Core

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.