The core in modell/kjerne/ is an unmodified copy of sim.py, diagnose.py and forlop.py from den-dynamiske-rettsstaten @2badc25, pinned by sha256. kjor.py is the single entry point; kontroll.py reproduces the note's 22 data files and printed results. Skills: diagnose and forlop (Norwegian). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
20 KiB
Modellkart
Kartet beskriver modellen i notatet Den dynamiske rettsstaten slik koden i modell/kjerne/ regner den, ved
commit 2badc25 i notatets repo (2badc25e5134ee26309bd8c3bd008ac64afe55a4). Filene i modell/kjerne/ er
byte-like kopier av paper/sim.py, paper/diagnose.py og paper/forlop.py ved den commiten, så linjenumrene i
notatets vedlegg C gjelder modell/kjerne/sim.py direkte. Verdiene under er lest fra koden. Ligningsnumre, tabeller og
avsnitt er notatets.
Kartet er for den som vil endre modellen: hva tilstanden er, hvor parameterne står, hvilke ligninger koden regner, og hvilke kontroller som skal holde etter en endring.
(a) Tilstandsvariabler og avledede størrelser
Tidsenhet: måned. Nivåene er normalisert slik at referanselikevekten har K = 1, T = 1 og Λ = 0,80.
| I koden | Symbol | Betyr | Merknad |
|---|---|---|---|
t |
t | tid i måneder | Euler-steg DT = 0,05 |
K |
K_obj | vektet objektiv kriminalitetsbelastning | 1 i referansen; i simulate_chain2 er K = K_A + K_B |
KA, KB |
K_A, K_B | belastning fra alvorlige (A) og øvrige (B) saker | bare simulate_chain2; startverdier 0,4 og 0,6 |
U |
U | opplevd trygghet | start 0,80 |
L |
Λ | tillit | start 0,80; holdes innenfor [10⁻⁴, 1 − 10⁻⁴] etter hvert steg |
T |
T | innsats (politiets) | proporsjonal regel T = T₀ + k_p (K(t − τ) − K*), begrenset til [0, T_max]; eller MPC |
Q |
Q_D | kø i domstolen (modellens ledd med kø) | normaliserte enheter; aldri negativ |
QA, QB |
Q_A, Q_B | kø per sakstype | bare simulate_chain2 |
tauD |
τ_D | saksbehandlingstid = m_D + Q_D / Z_D | tauA, tauB per sakstype |
JD |
J_D | innstrømning til domstolen = ξ_D F | lign. (27) |
RD |
R_D | avgjorte saker = Z_D Q_D / (Q_D + m_D Z_D) | lign. (28) |
Fa, F |
F | fjerningsstrøm = removal(K, L, T) |
lign. (12) og (12′) |
Z |
Z_D | kapasitet i domstolen | ZD0 = 0,10 / 0,95 før sjokket; endogen i simulate_endo |
xi |
ξ_D | andel saker til domstolen (1 − andel ledet utenom) | ≥ xi_min = 0,8 i reglene |
q |
q | prosessuell kvalitet | bare kvalitetssløyfen i simulate_endo |
g |
g | virkning av lang saksbehandlingstid = D / (D + τ_h), D = max(0, τ_D − τ_D^ref) | lign. (30) |
Omega(t, p) |
Ω | strukturelt pådrag | Ω₀, ganget med shock fra t_shock |
tau_ref |
τ_D^ref | saksbehandlingstid i utgangslikevekten | 3 måneder |
tau |
τ | forsinkelse i politiets sløyfe | argument; et helt antall tidssteg |
kp |
k_p | reaktivitet i den proporsjonale regelen | argument, standard 3,0 |
Ligningene slik koden regner dem (deriv, deriv_chain, deriv_chain_xz, court):
- K′ = Ω (1 + χ_D g) − (1 − ξ_D ϑ) F − ϑ R_D − δ K. Uten kjede (
deriv): K′ = Ω − F − δ K. - F = γ′ Λ^η T K / (1 + K / K_sat), γ′ = γ (1 + 1 / K_sat). Med K_sat = ∞ er F = γ Λ^η T K.
- U′ = κ_U (U_eq − U), U_eq = U₀ − ψ (K − 1), begrenset til [0, 1].
- Λ′ = κ_Λ (Λ₀ + μ₁ (U − U₀) + μ₃ q − μ₄ g − Λ) − μ₂ Λ · max(0, T − T_prop K)², T_prop = 1,6.
- Q_D′ = J_D − R_D − ς_D Q_D.
(b) Parameterne
P: grunnmodellen (sim.py, l. 27–40; tabell 3)
| Navn | Verdi | Enhet | Betyr | I notatet |
|---|---|---|---|---|
gamma |
0,125 | per mnd | effektivitet per enhet tiltak; gir γΛT = 0,10 i likevekt | γ; lign. (12), avsnitt 4.3 |
eta |
1,0 | – | tillitselastisitet | η; lign. (12) |
delta |
0,02 | per mnd | naturlig avgang | δ; lign. (12) |
Omega0 |
0,12 | per mnd | strukturelt pådrag ved referansen (gir K = 1 ved T = 1, Λ = 0,8) | Ω₀; lign. (6), avsnitt 3 |
shock |
1,30 | faktor | varig økning i Ω (0,12 → 0,156) | avsnitt 8.1 |
t_shock |
12,0 | mnd | når økningen begynner | avsnitt 8.1 |
T0 |
1,0 | – | grunninnsats | T₀; lign. (11), avsnitt 4.2 |
Tmax |
3,0 | – | kapasitetstak for innsatsen | T^max; lign. (11), (23) |
Kstar |
1,0 | – | målnivå for K | K*; lign. (11) |
kU |
0,25 | per mnd | trygghetens tilpasningsrate | κ_U; lign. (20), avsnitt 6.1 |
U0 |
0,80 | – | trygghet i referansen | U₀; lign. (20) |
psiU |
0,30 | – | hvor mye trygghet faller per enhet K over 1 | ψ; lign. (20) |
kL |
0,10 | per mnd | tillitens tilpasningsrate | κ_Λ; lign. (21), avsnitt 6.1 |
mu1 |
0,50 | – | tillitens følsomhet for trygghet | μ₁; lign. (21) |
mu2 |
0,30 | – | tillitstap ved uforholdsmessig innsats | μ₂; lign. (21) |
Tprop |
1,6 | – | grense for forholdsmessig innsats, T_prop(K) = 1,6 K | T_prop; lign. (21) |
Lam0 |
0,80 | – | tillit i referansen | Λ₀; lign. (21) |
ksat |
∞ | – | politiets halvmetningsnivå (Holling type II); 3 og 1,5 i robusthetsanalysen | K_sat; lign. (12′), avsnitt 8.3, tabell 5 |
Andre konstanter i sim.py:
| Navn | Verdi | Betyr |
|---|---|---|
DT |
0,05 mnd | tidssteg (eksplisitt Euler) |
TEND |
120,0 mnd | horisont for simulate, simulate_chain, simulate_chain2, simulate_soc; standard for simulate_endo |
UPS0 |
0,95 | domstolens utnyttelse før sjokket |
TAU_REF |
3,0 mnd | saksbehandlingstid i utgangslikevekten |
ZD0 |
0,10 / 0,95 ≈ 0,105 | domstolens kapasitet før sjokket |
VARSIGMA |
0,01 per mnd | frafall fra køen (henleggelse, foreldelse) |
J0 |
0,10 | fjerningsstrømmen i referansen, γ Λ₀ T₀ |
MD |
≈ 0,233 mnd | ren behandlingstid m_D, kalibrert i lukket form slik at τ_D = 3 i utgangslikevekten (l. 155) |
MPC (mpc_step, mpc_step_chain; lign. (24), avsnitt 6.3 og 8.1): horisont H = 24 mnd, vekt på innsatsavvik
lamT = 0,05, vekt på tillitsbrudd lamL = 20, myk tillitsgrense Λ₀ − 0,05 = 0,75. Beslutningen tas hver måned.
CH0: domstolen som ledd med kø (l. 157–158; tabell 3, avsnitt 7.3 og 8.2)
| Navn | Verdi | Betyr | I notatet |
|---|---|---|---|
Z |
ZD0 ≈ 0,105 |
kapasitet | Z_D; lign. (28) |
m |
MD ≈ 0,233 mnd |
ren behandlingstid | m_D; lign. (28) |
theta |
0,5 | andel av virkningen som krever dom | ϑ; lign. (29) |
chi |
0,15 | største økning i Ω av lang saksbehandlingstid (celerity) | χ_D; lign. (30), tabell 4 |
mu4 |
0,12 | største tillitstap av lang saksbehandlingstid | μ₄; lign. (30) |
tauh |
9,0 mnd | halvmetningstid for g | τ_h; lign. (30) |
varsigma |
0,01 per mnd | frafall fra køen | ς_D; lign. (28) |
xi |
1,0 | andel saker til domstolen | ξ_D; lign. (27) |
Zfun, xifun |
None |
tidsplan for kapasitet og andel (funksjoner av t) | scenario 3–5, avsnitt 8.2 |
dbr |
None |
trommel–buffer–tau: innsatsen begrenses slik at J_D ≤ dbr · Z_D (0,95 i scenario 6 og 7) |
lign. (32) |
CH2: domstol med to sakstyper (l. 352–354; avsnitt 8.3, tabell 6)
| Navn | Verdi | Betyr |
|---|---|---|
Z, m, chi, mu4, tauh, varsigma |
som CH0 |
|
c |
1 | antall parallelle spor (10 i robusthetsanalysen, med m kalibrert av calibrate_m) |
prio |
True |
A-saker har forrang; False gir felles kø (FIFO) |
piA |
0,4 | alvorlige sakers andel av K |
thetaA, thetaB |
0,8, 0,3 | andel av virkningen som krever dom, per sakstype (vektet 0,5) |
xiA, xiB |
1,0, 1,0 | andel saker til domstolen, per sakstype |
Zfun, xiBfun |
None |
tidsplaner |
dbr |
ikke satt | leses med ch2.get("dbr"); trommel–buffer–tau via T |
Lign. (33). c = 1 gir R = Z Q / (Q + m Z) eksakt; c > 1 bruker Erlang C (erlang_L, rho_of_L).
SOC: rekruttering og vippepunkt (l. 439; avsnitt 8.4, figur 8)
| Navn | Verdi | Betyr |
|---|---|---|
eps |
0,30 | styrken i rekrutteringsleddet ε |
Kh |
2,0 | halvmetningsnivå K_h |
pexp |
4 | bratthet ϱ |
Lign. (34): Ω_soc = ε K^ϱ / (K_h^ϱ + K^ϱ). simulate_soc rekalibrerer Ω₀ slik at K = 1 fortsatt er likevekt, og har et
forbigående sjokk: faktor shock = 1,6 i månedene t_on = 12 til t_off = 36.
ENDO: beslutningsreglene (l. 515–530; tabell 3, avsnitt 8.5)
| Navn | Verdi | Betyr | I notatet |
|---|---|---|---|
lagD |
3,0 mnd | observasjonsforsinkelse for kjedestatistikk | τ_D^obs |
xi_min |
0,8 | gulv: høyst 20 % av sakene til forenklede reaksjoner | ξ_min; lign. (35), (37) |
tau_thr |
6,0 mnd | terskel for observert saksbehandlingstid (desentral regel) | τ_D^gr; lign. (35) |
k_xi |
0,2 / 12 per mnd | forsterkning for påtalepraksis (0,2 per år) | k_ξ; lign. (35) |
tau_xi |
6,0 mnd | tidskonstant for endring av påtalepraksis | τ_ξ |
ups_star |
0,95 | målutnyttelse ved dimensjonering | υ*; lign. (36), (37) |
ups_hi, ups_lo |
1,0, 0,85 | dødsone: bestill over 1, bygg ned under 0,85 | tabell 3 |
kZ |
1,0 | budsjettforsterkning (1 = hele gapet bestilles) | k_Z; lign. (36) |
L1, L2 |
6,0, 24,0 mnd | bestilt kapasitet virker lineært fra 6 til 24 mnd etter vedtak | τ_Z |
tau_down |
36,0 mnd | tidskonstant for nedbygging | τ_ned |
T_clear |
24,0 mnd | restansen avvikles over denne tiden (koordinert regel) | H_Q; lign. (37) |
H_pred |
36,0 mnd | prognosehorisont | H_p; lign. (37) |
period |
12,0 mnd | budsjettsyklus | |
qloop |
False |
kvalitetssløyfen av eller på | avsnitt 8.5 |
mu3 |
0,5 | tillitsvirkning av q | μ₃; lign. (21) |
Lam_star |
0,78 | tillitsmål for kvalitetssløyfen | Λ* |
k_q |
1 / 12 per mnd | forsterkning (1 per år) | k_q |
q_max |
0,2 | øvre grense for q | q_max |
lag_survey |
3,0 mnd | publiseringsforsinkelse for den årlige tillitsmålingen |
Faste verdier i scenarioene (if __name__ == "__main__")
T_TILTAK = 24 (vedtak i måned 24), T_UTV = 24 (utvidelsen realiseres over 24 mnd), XI_UND = 0,8, ZD_UTV = 1,34
(+34 % kapasitet), XI_B_UND = 1 − 0,2 / 0,6 ≈ 0,67 (20 % av alle saker er 33 % av klasse B), TEND4 = 180 mnd for
reglene i avsnitt 8.5.
Konstanter i diagnose.py og forlop.py
diagnose.py bruker ingenting fra sim.py og har egne kopier av regelverdiene: UPS_STAR = 0,95, UPS_HI = 1,0,
T_CLEAR = 24,0, L1, L2 = 6,0, 24,0. Endres ENDO i sim.py, må disse endres likt, ellers regner diagnosen og
forløpet med ulike regler. forlop.py bruker ENDO direkte for regelen og diagnose.T_CLEAR/diagnose.UPS_STAR for
behovet det sammenligner med.
forlop.py: NAA = 24 (modellmåneden for første budsjettvedtak), OBS = NAA − lagD = 21, SLUTT = 180 mnd,
LAM_MYK = Λ₀ − 0,05 = 0,75, K_GULV = 0,80 og T_GULV = 0,50 (under dette regnes forløpet ikke), UPS_FOR_MIN =
ups_lo + 0,01 = 0,86 og UPS_FOR_MAKS = 0,98 (tillatt utnyttelse før økningen), RADER (månedene i tabellen).
forlop.py har en egen kopi av regnestegene i simulate_endo (simuler, bare koord og sched) og kontrollerer i
hver kjøring at den gir bit for bit samme svar som simulate_endo når restansen ikke legges inn. Endres
simulate_endo, må simuler endres likt.
(c) Ligning → funksjon → status
Fra notatets vedlegg C (tabell 12). Av de 39 nummererte ligningene er 18 implementert, 12 forenklet og 9 ikke implementert. Implementert: koden regner ligningen slik den står, i aggregert form (n = 1). Forenklet: koden regner et spesialtilfelle eller en enklere form. Ikke implementert: ligningen hører til rammeverket, men ingen simulering bruker den.
| Ligning | Avsnitt | Hva | Kode (sim.py) |
Status |
|---|---|---|---|---|
| (1) | 1 | naiv beslutningsregel T ← f(K, O) | simulate, l. 66–86; regelen l. 73–75 |
forenklet: f er proporsjonalregelen (11), O er K forsinket med τ |
| (2) | 2.1 | vektet objektiv kriminalitet K_obj | simulate_chain2, l. 369–428 (K = K_A + K_B, l. 395) |
forenklet: to kategorier, allerede alvorlighetsvektet; ellers n = 1 |
| (3) | 2.3 | effektivt kriminalitetspress K̃ | – | ikke implementert: reglene svarer på K_obj |
| (4) | 2.4 | måleligningen | – | ikke implementert: feilfritt estimat |
| (5) | 3 | makrovektor E | – | ikke implementert |
| (6) | 3 | strukturelt pådrag Ω | Omega, l. 45–46; simulate_soc, l. 466 |
forenklet: eksogent, Ω₀ = 0,12, +30 % fra måned 12 (+60 % i månedene 12–36 i figur 8) |
| (7) | 4.1 | tiltaksvektoren v | simulate_endo, l. 564–653 |
forenklet: (T, ξ_D, Z_D, q), én kategori, bare domstolsleddet |
| (8) | 4.1 | observasjonene O | simulate_endo, l. 582–588 og 609–611 |
forenklet: K forsinket med τ, kjedestatistikk med 3 mnd, tillit årlig med 3 mnd |
| (9) | 4.1 | beslutningsregelen Ψ | simulate_endo, l. 590–641 |
forenklet: reglene i 8.5; tilstanden er den sanne, forsinket |
| (10) | 4.2 | forsinkelsen τ | simulate, l. 70, og tilsvarende |
forenklet: én parameter (3, 6 eller 11 mnd) |
| (11) | 4.2 | styringsregelen (PID) | simulate, l. 75; simulate_chain, l. 218; simulate_chain2, l. 397; simulate_soc, l. 463; predict_F, l. 557; simulate_endo, l. 583 |
forenklet: bare det reaktive leddet og metningen (k_i = k_d = 0, T_max = 3) |
| (12) | 4.3 | kriminalitetsdynamikken | deriv, l. 57–58, med removal, l. 49–54; Euler-steget l. 82 |
implementert |
| (12′) | 4.3 | fjerning med metning F_sat | removal, l. 49–54 |
implementert (γ′ = γ(1 + 1/K_sat)); Z_E regnes ikke ut særskilt |
| (13) | 4.4 | dempning a og reaktivitet b | l. 686–688; l. 827–831 | implementert: a = 0,12, b = 0,30 |
| (14) | 4.4 | kritisk forsinkelse τ_c | critical_delay, l. 128–132; største stabile k_p, l. 694–695 |
implementert: τ_c = 7,2 mnd; k_p ≈ 2,3 ved τ = 11 |
| (15) | 4.4 | tommelfingerregelen | l. 696; l. 724–726 | implementert: k_p < 1,4 ved τ = 11 |
| (13′) | 4.4 | a og b med metning | l. 839–848; l. 874–876 | implementert |
| (16) | 5.1 | forventet nytte | – | ikke implementert |
| (17) | 5.1 | oppdagelsesrisiko | – | ikke implementert (fjerningsraten svarer til intensiteten h, l. 399) |
| (18) | 5.1 | deltakelse | – | ikke implementert: pådraget er eksogent |
| (19) | 5.2 | forskyvning mellom kategorier | – | ikke implementert |
| (20) | 6.1 | trygghet U | deriv, l. 59–60, og tilsvarende |
implementert |
| (21) | 6.1 | tillit Λ | deriv, l. 61–62; μ₃q i deriv_chain_xz, l. 543–544 |
implementert; μ₃ = 0 utenom kvalitetssløyfen |
| (22) | 6.2 | samfunnsøkonomisk målfunksjon | – | ikke implementert: MPC minimerer et udiskontert kvadratisk tap over 24 mnd (l. 119–120) |
| (23) | 6.3 | skranker | metningen i regelen; MPC, l. 120 og 123 | forenklet: bare 0 ≤ T ≤ T_max og Λ ≥ 0,75 (myk) |
| (24) | 6.3 | MPC | mpc_step, l. 89–125; mpc_step_chain, l. 240–265 |
forenklet: ett konstant innsatsnivå over H = 24, ingen sluttkostnad |
| (25) | 7.1 | lovgivers handlingsrom | – | ikke implementert: T_max er fast |
| (26) | 7.2 | utnyttelse og køtid per ledd | court, l. 167–178; utskrift l. 732–738 og 783–786 |
forenklet: bare domstolsleddet |
| (27) | 7.2 | J_D = ξ_D F | deriv_chain, l. 182–184; deriv_chain_xz, l. 535–536; simulate_chain2, l. 407–408 |
implementert |
| (28) | 7.3 | domstolskøen R_D, τ_D | court, l. 167–178; init_chain, l. 195–203; m_D l. 154–155 |
implementert: m_D = 0,233, τ_D^ref = 3 |
| (29) | 7.3 | K med domstol | deriv_chain, l. 187 |
implementert |
| (30) | 7.3 | tilbakekoblingene g, Ω^eff, Λ₀ − μ₄g | court, l. 176–177; deriv_chain, l. 186 og 191 |
implementert |
| (31) | 7.3 | a og b med mettet domstol | l. 826–834 | implementert (sluttilstanden i scenario 2) |
| (32) | 7.5 | kapasitetsskranker i kjeden | simulate_chain, l. 226–230; simulate_chain2, l. 400–406 |
forenklet: bare J_D ≤ 0,95 Z_D, håndhevet ved å begrense T |
| (33) | 8.3 | prioritert kø med to sakstyper | court2, l. 329–344; capfun, l. 320–326; simulate_chain2 |
implementert; i tillegg FIFO og c = 10 spor |
| (34) | 8.4 | rekruttering | hill, l. 442–443; simulate_soc, l. 451–476; soc_equilibria, l. 479–491 |
implementert |
| (35) | 8.5 | påtalemyndighetens regel for ξ | simulate_endo, l. 598–604 og 640 |
implementert |
| (36) | 8.5 | budsjettregelen for Z | simulate_endo, l. 614–621 og 628–639 |
implementert |
| (37) | 8.5 | den koordinerte regelen | simulate_endo, l. 605–608 og 622–634; predict_F, l. 548–561 |
implementert |
| – | 8.5 | sløyfen for q | simulate_endo, l. 609–612 og 641 |
implementert |
Merknadene i vedlegg C sier mer om hvert punkt, blant annet hvor koden avviker fra teksten i små ting (grensen på 3 k_ξ per måned i (35), at nedbyggingsmålet i (36) står til ny kapasitet bestilles, og at q også justeres ned).
(d) De fem simulatorene
Alle integreres med eksplisitt Euler, DT = 0,05. Alle tar parameterne som p (standard P), så en endring gjøres
med dict(P, navn=verdi). simulate, simulate_chain, simulate_chain2 og simulate_soc bruker den globale TEND;
simulate_endo har argumentet tend, med standardverdien TEND slik den var da sim.py ble lest inn.
| Funksjon | Dekker | Styring | Datafiler i notatets kjøring | Figur / tabell |
|---|---|---|---|---|
simulate(controller, tau, p, kp) |
grunnmodellen uten kjede: K, U, Λ, T | "P" eller "MPC" |
p3, p6, p11, mpc11, p11d; sat_B, sat_C (med ksat 3 og 1,5) |
figur 4 (regime A–E); figur 7 venstre (sat_C); tabell 5 |
simulate_chain(controller, tau, ch, p, kp, mpc_knows_chain) |
domstolen som ledd med kø, med tidsplaner (Zfun, xifun) og trommel–buffer–tau (dbr) |
"P" eller "MPC" |
kjede_s1–kjede_s5 |
figur 6; tabell 4 |
simulate_chain2(tau, ch2, p, kp) |
domstol med to sakstyper, forrang eller FIFO, c spor | proporsjonal regel | prio_s2, prio_s3, prio_s5 |
figur 7 høyre; tabell 6 |
simulate_soc(controller, tau, p, s, kp, shock, t_on, t_off) |
rekruttering og vippepunkt, forbigående sjokk | "P", ellers fast T = T₀ |
vippe |
figur 8 |
simulate_endo(policy, tau, p, ch, e, kp, tend, xi_sched, Z_sched) |
endogene tiltak: ξ_D, Z_D og q bestemt av regler | politiet: proporsjonal regel; kjeden: "sched", "desentral", "desentral_prog", "koord" |
endo_e5, endo_des, endo_desp, endo_ko |
figur 9; tabell 7 og 10 |
Regimene i figur 4: A = p3 (k_p = 3, τ = 3), B = p6 (τ = 6), C = p11 (τ = 11), D = mpc11 (MPC, τ = 11), E =
p11d (k_p = 1,2, τ = 11). stab.dat og thumb.dat (figur 5) kommer fra critical_delay og tommelfingerregelen, ikke
fra en simulering. sat_B og prio_s5 skrives, men brukes ikke i figurene. Det er 22 datafiler i alt.
Kolonner: p*, p11d: t K U L T; kjede_s*: t K U L T Q tauD; sat_*: t K Ks3 Ks15; prio_s*: t K KA KB tauA tauB tauF KF KAF; vippe: t fast p3 p6 p3cap p6cap; endo_*: t K L T Z xi tauD q (Z relativt til ZD0);
stab, thumb: kp tauc. Tidsseriene skrives med hver tiende rad (write_csv, hver halve måned).
I tillegg: pure_capacity_loop (ren kapasitetssløyfe, merknad 4; bare utskrift), predict_F (prognosen den
koordinerte regelen bruker) og soc_equilibria (likevektene i avsnitt 8.4).
(e) Grensetilfellene koden skriver ut
Regelen i notatet: hver utvidelse har et grensetilfelle som gjenskaper grunnmodellen. sim.py skriver ut avviket.
Tallene under er fra en kjøring av modell/kjerne/sim.py med notatets låste versjoner (numpy 2.5.4, scipy 1.18.1), der
alle 22 datafilene ble byte-like notatets.
| Kontroll | Utskrift | Største avvik |
|---|---|---|
simulate_chain med Z_D = ∞ gjenskaper regime A–D (p3, p6, p11, mpc11) |
Del 2, «grensetilfelle: reproduksjon av regime A-D» | 0 for p3; høyst 3,8·10⁻¹⁵ i K og 2,9·10⁻¹⁴ i T |
simulate_chain med endelig Z_D og ϑ = χ_D = μ₄ = 0 gjenskaper regime A (køen regnes, men virker ikke tilbake) |
samme sted | 0 |
simulate_chain med stor, endelig Z_D (1 og 10) nærmer seg regime A |
samme sted | 4,7·10⁻³ og 3,6·10⁻³ i K (ikke et eksakt grensetilfelle) |
simulate med K_sat = ∞ gjenskaper regime A–C; simulate_chain gjenskaper scenario 2 |
Del 3 (a) | 0 |
simulate_chain2 med FIFO, ϑ_A = ϑ_B = 0,5 og c = 1 gjenskaper scenario 2 |
Del 3 (b), «kontrolltall» | 2,2·10⁻¹⁵ i K, 2,8·10⁻¹³ i τ |
calibrate_m med c = 1 gir MD |
samme sted | 0,2330 mot 0,2330 |
simulate_endo("sched") gjenskaper scenario 2, og med tidsplanene scenario 5 |
Del 4, «faste tidsplaner gjenskaper scenario 2 og 5» | 0 |
simulate_soc har ingen utskrevet grensetilfelle. forlop.py kontrollerer sin egen kopi mot simulate_endo i hver
kjøring (bit for bit, se over). Den som endrer kjernen, kjører kontrollene på nytt og ser at avvikene fortsatt er 0
eller på avrundingsnivå, og at de 22 datafilene er byte-like med mindre endringen skal endre resultatene.