Simülasyon Yapılandırması
Bu rehber, çalışma zamanı varsayılanlarının nasıl ayarlanacağını, model durumu/parametre bankasının nasıl düzenleneceğini ve Sim ile çalışırken kayıt (recording) ve kapasite sınırlarının (caps) nasıl kontrol edileceğini açıklar.
Sim.config() ile varsayılanları kalıcı hale getirme
Sim.config(), belirli bir argüman belirtilmediğinde run() komutunun kullanacağı kalıcı varsayılanlar ayarlamanıza olanak tanır. En yaygın simülasyon düğmelerini ve stepper'a özgü Config alanlarını kapsar.
sim.config(
dt=0.01,
max_steps=5000,
record=True,
record_interval=10,
cap_rec=2048,
cap_evt=4,
tol=1e-6, # aktif stepper yapılandırmasına iletilir
)
Öne Çıkanlar:
dt, nominal zaman adımını (veya ayrık modeller için etiket aralığını) ayarlar ve simülasyon durumunda_nominal_dtolarak saklanır. Pozitif olmalıdır.max_steps,N/Tatlandığında varsayılan güvenlik sınırı (sürekli) veya hedef iterasyon sayısı (ayrık) olur.recordverecord_interval, varsayılan günlük kaydı davranışını tanımlar ve geçersiz kılınmadıkça sonrakirun()çağrıları tarafından devralınır.cap_rec/cap_evt, yörünge/olay tamponlarının başlangıç boyutlarını kontrol eder. Gerekirse otomatik olarak büyürler, ancak daha büyük başlangıç kapasiteleri yeniden tahsis işlemlerini (reallocations) azaltabilir.- Ekstra anahtar kelime argümanları
Sim.stepper_config()'e iletilir, böylecetol,max_iterveya diğer stepper düğmelerini global olarak yapılandırabilirsiniz.
run()'a verilen açık argümanların bu varsayılanları her zaman geçersiz kıldığını unutmayın; tekrarlanabilir scriptler için config() ile run(...) geçersiz kılmalarını birlikte kullanın.
Sim.assign() ile durum ve parametreleri ayarlama
Sim.assign(), hiçbir şeyi yeniden derlemeden oturumun mevcut durum ve parametre vektörlerini isme göre günceller.
Temel davranışlar:
- Bir eşleme (mapping) ve/veya anahtar kelime argümanları kabul eder; anahtar kelimeler harita girdilerini geçersiz kılar.
- İsimleri önce
states, sonraparamsiçinde arar; bilinmeyen isimler "bunu mu demek istediniz?" önerileriyle net birValueErrorverir. - Girdileri model veri tipine dönüştürür, hassasiyet kaybı olacaksa bir uyarı verir.
clear_history=True, zamanı, çalışma alanını (workspace), snapshot'ları veya stepper yapılandırmasını değiştirmeden birikmişResultsverisini, segmentleri ve bekleyen etiketleri temizler.- Değişiklikler,
run()komutuna açıkic/paramsargümanları geçmediğiniz sürece bir sonrakirun()için hemen geçerli olur.
Sim'i yeni koşullarla yeniden kullanmak, deneyler arasında parametreleri değiştirmek veya devam etmeden (resume) önce sistemi hazırlamak istediğinizde assign() kullanın.
Kayıt (Recording) seçenekleri
Sim.run(), config() veya [sim] tablosu aracılığıyla belirlediğiniz varsayılanların yanı sıra günlük kaydı üzerinde hassas kontrol sunar.
record(bool): kaydı aç/kapa.Falseolduğunda, yalnızca global zaman ekseni güncellenir; durum/aux tamponları büyümez.record_interval(int): her N'inci adımı yakalar (varsayılan1). Örnekleme sıklığını düşürmek (downsampling) veya hızlı simülasyonları ucuza yakalamak için kullanışlıdır.record_vars: seçici kayıt listesi. Kabul edilebilir girişler:None(varsayılan) : Mevcut tüm durum değişkenleri.- Önek (prefix) olmayan isimler durumlara (states) atıfta bulunur.
"aux.<isim>"açıkça yardımcı değişkenleri hedefler, ancakauxisimlerini önek olmadan göndermek de kabul edilir ve ayırt edilir.- Boş bir liste (
[]), zaman damgalarını, adımları ve bayrakları kaydetmeye devam ederken durum/aux kaydını devre dışı bırakır.
Seçici kayıt, aynı Results tampon düzenini korur ancak yalnızca istenen alt kümeleri doldurur, bu da büyük durum vektörleri için bellek/zaman tasarrufu sağlar.
Ayrıca, bir çalıştırmadan önce cap_rec ve cap_evt ile kayıt kapasitesini ayarlayabilir veya record_interval/record_vars neyin yakalanacağına karar verirken dynlib'in tamponları otomatik olarak büyütmesine izin verebilirsiniz.
Simülasyon ufuklarını (horizons) yönetme
dtnominal adım boyutunu kaydeder. Kalıcı bir varsayılan içinconfig(dt=…)kullanın veya çalıştırma başına geçersiz kılın.T(sürekli) veyaN(ayrık), runner'ın ne kadar ilerleyeceğini tanımlar; her ikisi de atlanırsamax_stepsdevreye girer (varsayılan yine de[sim].max_steps'e saygı duyar).- Haritalarla (
kind="map") çalışırken,Niterasyonları belirler veTtüretilir; ODE'ler içinTbitiş zamanıdır veNçıkarım yoluyla bulunur. max_steps, sürekli modellerde bir güvenlik önlemi olarak uygulanır ve ayrık modellerdeNatlandığında varsayılan iterasyon sayısı olarak işlev görür. Ufuk büyüdüğünde bunu artırın veya kontrolsüz döngülerden kaçınmak için küçültün. Bir runnermax_steps'e ulaşırsa, sessiz ve beklenmedik davranışlardan kaçınmak için bir uyarı verilir.transient, saklananResultsverisini etkilemeden başlangıçtaki ısınma periyodunu (zaman veya iterasyon olarak) atlayabilir.transientperiyodu boyunca hiçbir şey kaydedilmez. Zamanıntransientperiyodundan sonrat0'dan başladığını unutmayın; bu, bazı kullanıcılar için sezgisel olmayabilir.resume=True, sonSessionState'den yeniden başlatmaya izin verir; devam etme (resume) modundaic,params,t0vedt'nin geçersiz kılınamayacağını unutmayın.
Çok aşamalı deneyleri yönetirken bu seçenekleri Sim.reset()/Sim.create_snapshot() ile eşleştirin, böylece ufukları değiştirseniz bile segmentler ve kaydedilen geçmiş üzerinde kontrolü elinizde tutarsınız.
Özet
dt,max_steps, kayıt, kapasiteler ve stepper ayarları için uzun ömürlü varsayılanları bildirmek üzereSim.config()kullanın.- Modeli yeniden oluşturmadan durum/parametre değerlerini güncellemeniz gerektiğinde
Sim.assign()çağırın. - Doğruluk ve bellek arasında denge kurmak için
run(record_vars=…),record_intervalve tampon sınırlarını (caps) kullanın. - Harita veya sürekli sistem simülasyonu yapıp yapmadığınıza bağlı olarak
T,Nvemax_stepsdeğerlerini ayarlayın ve aşamalandırmayı kontrol etmek içintransient/resumekullanın. - Hem tekrarlanabilirlik hem de hıza ihtiyaç duyduğunuzda yapılandırma seçeneklerini snapshot'lar, segmentler ve
setup()ile birleştirin.