e868c47190
- forward(): divide t per T_END prima di passarlo alla rete, evita saturazione di Tanh per t∈[0,10] e migliora la sensibilità temporale del modello - _pde_scale: include il picco gaussiano della sorgente come denominatore; con GAUSS_SIGMA=0.01 il picco (~60 °C/s) supera T_char/T_END (15), rendendo la loss PDE non normalizzata senza questa correzione - PATIENCE 100→500, SCHED_PATIENCE 30→150: il training ha ora spazio per convergere prima che l'early stopping o lo scheduler blocchino l'ottimizzatore Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# Fisica
|
|
ALPHA = 0.01 # diffusività termica [m²/s]
|
|
K = 1.0 # conducibilità termica [W/m·K]
|
|
L = 1.0 # lunghezza barra [m]
|
|
T0 = 20.0 # temperatura iniziale uniforme [°C]
|
|
|
|
# Sorgente di calore
|
|
X_SRC = 0.35 # posizione della sorgente [m], in [0, L]
|
|
Q_VAL = 150.0 # flusso di calore applicato [W/m²]
|
|
T_STEP = 0.2 # istante di attivazione flusso [s]
|
|
|
|
# Convezione a x=L (Robin)
|
|
H_CONV = 10.0 # coefficiente convettivo [W/m²·K]
|
|
T_AMB = 20.0 # temperatura ambiente [°C]
|
|
|
|
# Dominio temporale
|
|
T_END = 10.0 # fine simulazione [s]
|
|
|
|
# Griglia FDM
|
|
NX = 250 # nodi spaziali
|
|
NT = 15000 # passi temporali (verifica CFL automatica)
|
|
|
|
# Sorgente gaussiana (approssimazione continua del delta di Dirac)
|
|
GAUSS_SIGMA = 0.01 # larghezza del picco gaussiano [m]
|
|
|
|
# Architettura PINN
|
|
HIDDEN_SIZE = 128 # neuroni per layer nascosto
|
|
N_HIDDEN_LAYERS = 4 # numero di layer nascosti
|
|
|
|
# Sampling punti di collocazione
|
|
N_F = 6000 # punti PDE (+ 50% clustering automatico vicino a X_SRC e T_STEP)
|
|
N_IC = 400 # punti condizione iniziale
|
|
N_BC = 400 # punti condizioni al contorno
|
|
|
|
# Training Adam
|
|
EPOCHS = 5000 # epoche massime
|
|
PATIENCE = 500 # early stopping
|
|
LR_ADAM = 1e-3 # learning rate iniziale
|
|
SCHED_FACTOR = 0.5 # ReduceLROnPlateau: fattore di riduzione
|
|
SCHED_PATIENCE = 150 # ReduceLROnPlateau: patience
|
|
SCHED_MIN_LR = 1e-6 # ReduceLROnPlateau: lr minimo
|
|
|
|
# Fine-tuning L-BFGS
|
|
LR_LBFGS = 0.1 # learning rate L-BFGS
|
|
LBFGS_STEPS = 200 # numero di step L-BFGS
|
|
|
|
# Pesi della loss
|
|
W_PDE = 10.0 # peso residuo PDE
|
|
W_IC = 1.0 # peso condizione iniziale
|
|
W_BC = 5.0 # peso condizioni al contorno
|