Simülasyon ([sim])
[sim] tablosu, herhangi bir model için varsayılan çalışma zamanı ayarlarını (knobs) belirtir. Alanların çoğu Sim arayüzüne (facade) (Sim.run) ve entegrasyonları veya haritaları (maps) yürüten runner'a beslenir. Bu tabloyu, modelinizi yükleyen kullanıcılar ve araçlar için "önerilen varsayılanlar" olarak düşünün.
Bilinen Anahtarlar
t0– Başlangıç zamanı. Varsayılan0.0'dır. Hem çalışma zamanı saatini hem de türetilmişNominal dt / Taritmetiğini besler.t_end– Sürekli (ODE benzeri) modeller için bitiş zamanı. Varsayılan1.0'dır.Sim.runarayüzü,Tdeğerini geçersiz kılmadığınızda bunu kullanır.dt– Nominal zaman adımı (veya ayrık harita aralığı). Varsayılan1e-2'dir. Runner bunu, hem adımlama için kullanılan "nominal dt" olarak hem deSim.runiçindedtatlandığında geri dönüş değeri olarak önbelleğe alır.stepper– Varsayılan stepper'ın (adımayıcı) adı (örn. ODE'ler için"rk4", map'ler için"map"). Derleyici, model türüne göre mantıklı bir varsayılan seçer ancak belirli bir entegratörü sabitlemek için bunu buradan geçersiz kılabilirsiniz.record– Varsayılan kayıt davranışını kontrol eden boolean değer. Varsayılantrue'dur.Sim.run,recordolmadan çağrıldığında, durum/yardımcı örneklerinin biriktirilip biriktirilmeyeceğine bu değer karar verir.atol,rtol– Adaptif-stepper toleransları (varsayılan1e-8/1e-5). Bunlar yalnızca yapılandırılmış stepper,Configveri sınıfı aracılığıyla adaptif kontrol sunuyorsa geçerlidir.max_steps– Runner durmadan önceki maksimum adım sayısı (varsayılan1_000_000). Ayrık modeller için,NveyaTsağlamadığınızda varsayılan iterasyon sayısı (N) olarak da hizmet eder.stop– Genelliklepostaşamasında, her adımda değerlendirilen erken çıkış koşulu. Basit bir stringstop = "x > threshold"veya bir tablo yazabilirsiniz: Koşul doğru olduğunda runnerEARLY_EXITfırlatır veResults.statusbu durumu yansıtır.- Ekstra anahtarlar – Diğer tüm girişler (yukarıda listelenen anahtarlar dışındaki her şey)
SimDefaults._stepper_defaultsiçine iletilir ve otomatik olarak aktif stepper'ınConfigalanlarına eşlenir. Bu, kodda stepper adını tekrarlamadantol,max_iterveya herhangi bir enum tipli seçenek gibistepper-specific(stepper'a özgü) varsayılanları geçirmenize olanak tanır.
Çalıştırmalar (Runs) ile Etkileşim
- Çalışma zamanı geçersiz kılmaları (overrides) kazanır – Her halka açık
Sim.runargümanı (t0,T/N,dt,max_steps,recordvb.)[sim]içindeki değerleri geçersiz kılar. Buna**stepper_kwargsaracılığıyla geçirilen ve[sim]ekstralarına göre önceliği olan stepper kwarg'ları da dahildir. - Öncelik zinciri – Stepper yapılandırma varsayılanları şuradan gelir: Stepper sınıfı varsayılanı <
[sim]ekstra alanları <Sim.run(... stepper_kwargs...). Bu birleştirmeConfigMixin.default_configaracılığıyla otomatik olarak gerçekleşir, bu nedenle anahtarları yalnızca bir kez bildirmeniz gerekir. - Ayrık vs. Sürekli –
Sim.run, model türüne (mapvsode) bağlı olarak[sim].t_end/dtdeğerlerini farklı yorumlar. Map'ler için,N/Tatlandığında[sim].max_stepsvarsayılan iterasyon sayısı olur; ODE'ler içint_endvarsayılan entegrasyon ufkudur. - Durdurma koşulu değerlendirmesi –
[sim].stopmevcut olduğunda, derleyici bunu uygun runner'a (phase'e göre pre/post) bağlar. Koşul, olağan ifade bağlamını (states, params, aux, functions, yerleşik makrolar) paylaşır ve taahhüt edilen her adımda kontrol edilir. - Kayıt varsayılanları –
[sim].recordyalnızca varsayılanı ayarlar;Sim.run(record=False)o belirli çağrı için loglamayı yine de devre dışı bırakır. Seçici kayıt (record_vars) kullanırsanız, seçim çalışma zamanına özgü olduğu için[sim]tablosu değişmeden kalır.
Örnekler
[sim]
t0 = 0.0
t_end = 5.0
dt = 0.01
stepper = "rk4"
record = true
atol = 1e-9
rtol = 1e-6
max_steps = 500_000
tol = 1e-8 # stepper yapılandırmasına iletilen ekstra alan
stop = "energy > 100" # erken çıkışı tetikler
Eğer stepper tol adında bir alana sahip bir Config sunuyorsa, bu değer varsayılanını geçersiz kılar ancak yine de daha sonra Sim.run(t, dt, tol=acik_deger) yoluyla geçersiz kılınabilir.
En İyi Uygulamalar
- Yalnızca ihtiyacınız olan stepper'a özgü anahtarları ekleyin, böylece ekstra listesi odaklı kalır.
- Erken çıkış koşulunuzu belgeleyin;
[sim].stopkullandığınızda okuyucular simülasyonun ne zaman ve neden iptal edildiğini bilmelidir. - Varsayılanları fiziksel zaman birimleriyle (saniye, iterasyon) tutarlı tutun, böylece modelinizi kullanan script'lerin sürekli olarak
t0,dtveyat_enddeğerlerini geçersiz kılması gerekmez. [sim]i çoğunlukla güvenli varsayılanlar için kullanın; deneyleri yeniden üretirken veya kaşifleri yönlendirirkenSim.runargümanlarına güvenin.