Skip to content

Latest commit

 

History

History
145 lines (129 loc) · 18.4 KB

File metadata and controls

145 lines (129 loc) · 18.4 KB

CORDIS Configuration Parameter Reference

Generated automatically from cordis/utils/config.py.

Topology

Parameter Type Default Unit Range Description
type str circle - {circle random
ap_radius_m float 650.0 m > 0 Radius of the circle on which APs are placed (circle layout)
ue_max_radius_m float 1000.0 m > ue_min_radius_m Outer radius of the annulus in which UEs are dropped
ue_min_radius_m float 35.0 m >= 0 Inner radius of the UE placement annulus (minimum UE-origin distance)
tg_max_radius_m float 1000.0 m > tg_min_radius_m Outer radius of the annulus in which targets are dropped
tg_min_radius_m float 35.0 m >= 0 Inner radius of the target placement annulus
ue_min_separation_m float 0.0 m >= 0 (0 disables) Minimum 2-D distance between any two UEs (Stage 24). 0 disables (default), preserving the original area-uniform draw and existing seeds; a positive value enables a rejection sampler that re-draws UEs until all pairwise distances clear the threshold.
ue_target_min_separation_m float 0.0 m >= 0 (0 disables) Minimum 2-D distance between any UE and any target (Stage 24). 0 disables (default); a positive value places targets via a rejection sampler that avoids the already-placed UEs.
n_ap int 6 - >= 2 Total number of APs (
n_ue int 4 - >= 1 Number of single-antenna communication users (N_ue)
n_targets int 1 - >= 1 Number of sensing targets (N_t)
n_ant int 10 - >= 1 Number of antenna elements per AP (M_t = M_r = M)
n_rf_chains int 10 - [1, n_ant] Number of RF chains per AP; limits simultaneous streams (N_RF <= M)
array_type str UCA - {ULA UCA}
antenna_spacing_factor float 0.5 lambda (0, 1] Normalised inter-element spacing d/lambda
n_sensing_rx int 1 - [1, n_ap - 1] Number of APs dedicated to sensing reception (
h_ap_m float 10.0 m > h_ue_m AP antenna height above ground (used in 3GPP path loss)
h_ue_m float 1.5 m > 0 UE antenna height above ground
h_tg_m float 1.5 m >= 0 Target height above ground
grid_n_rows int 3 - >= 1 Number of rows in the AP grid (grid layout only); total APs = rows x cols
grid_n_cols int 2 - >= 1 Number of columns in the AP grid (grid layout only)
grid_spacing_m float 433.0 m > 0 Distance between adjacent APs in the grid

Frequency & Waveform

Parameter Type Default Unit Range Description
carrier_freq_ghz float 3.5 GHz [0.5, 100] (3GPP TR 38.901 validity range) Carrier frequency f_c; determines wavelength and path loss exponents
bandwidth_mhz float 20.0 MHz > 0 Total system bandwidth B
n_subcarriers int 64 - power of 2, >= rb_n_subcarriers Total number of OFDM subcarriers N_sc
rb_n_subcarriers int 12 - >= 1 Number of subcarriers per resource block Q
rb_n_symbols int 14 - >= 1 Number of OFDM symbols per resource block K
subcarrier_spacing_khz float 15.0 kHz > 0 OFDM subcarrier spacing Delta_f (15 kHz = 5G NR numerology 0)
cp_fraction float 0.0714 - (0, 0.25] Cyclic prefix duration as a fraction of the OFDM symbol period

Channel Model

Parameter Type Default Unit Range Description
model str 3gpp_umi_rician - {3gpp_umi_rician} Channel model identifier string (reserved for future model selection)
scenario str UMi - {UMi UMa
environment str StreetCanyon - -
snr_db float 137.0 dB any real (cell-free typical: 124 to 144; default: 137) Transmit SNR = P_max / sigma_n^2; sets per-AP power budget. At B=20 MHz, NF=7 dB, T=290 K, the mapping is P_max[W] = 10^((SNR_dB - 124)/10). Examples: 124 dB = 1 W, 130 dB = 4 W, 134 dB = 10 W, 137 dB = 20 W (default), 140 dB = 40 W, 144 dB = 100 W. The default 137 dB matches the upper end of 5G mMIMO mid-band micro/small-cell conducted power (2-20 W). Note: realistic urban-micro pathloss is ~120-130 dB at 500 m / 3 GHz, so SNR_dB << 120 leaves no link budget
noise_figure_db float 7.0 dB >= 0 Receiver noise figure NF added to thermal noise floor
noise_temp_k float 290.0 K > 0 (standard: 290) Thermal noise reference temperature T_0
tau_f int 200 samples > tau_p + tau_d TDD frame size tau_f in channel uses; must satisfy tau_f >= tau_p + tau_d
tau_p int 10 samples >= 1 Pilot sequence length tau_p; set >= n_ue to avoid pilot contamination
tau_d int 100 samples >= 1 Number of downlink ISAC symbols per TDD frame (tau_d)
pilot_power_db float 120.0 dB any real; 80-130 dB for 3GPP UMi at 50-650 m; 10-30 dB only for no-path-loss toy models Uplink pilot transmit SNR: 10 log10(P_p / sigma_n^2). The RECEIVED pilot SNR at the AP is SNR_rx = (P_p/sigma_n^2) x tau_p x beta_{au}. With 3GPP UMi path loss, beta << 1, so this must be set much higher than the data SNR to compensate. Rule of thumb: pilot_power_db = snr_db +
shadow_fading_los_std_db float 4.0 dB >= 0 Shadow fading standard deviation sigma_SF for LoS links (3GPP UMi: 4 dB)
shadow_fading_nlos_std_db float 7.82 dB >= 0 Shadow fading standard deviation sigma_SF for NLoS links (3GPP UMi: 7.82 dB)
shadow_corr_distance_m float 50.0 m > 0 (3GPP default: 50 m) Shadow fading spatial decorrelation distance D_corr between UEs at a common AP
rician_k_db_mean float 9.0 dB any real Mean Rician K-factor for LoS links (drawn from Gaussian; 3GPP UMi LoS: 9 dB)
rician_k_db_std float 5.0 dB >= 0 Standard deviation of the Rician K-factor (3GPP UMi: 5 dB)
as_azimuth_deg_std_los float 5.0 deg >= 0 Azimuth angular spread (ASD) sigma_phi for LoS links; used to build C_{au}
as_azimuth_deg_std_nlos float 22.5 deg >= 0 Azimuth angular spread (ASD) sigma_phi for NLoS links
as_elevation_deg_std_los float 3.0 deg >= 0 Elevation angular spread (ESD) sigma_theta for LoS links
as_elevation_deg_std_nlos float 7.0 deg >= 0 Elevation angular spread (ESD) sigma_theta for NLoS links
n_spatial_samples int 2000 - >= 100 (typical: 1000-5000) Monte Carlo samples for integrating the spatial correlation matrix C_{au}; higher = more accurate but slower
shared_scatter_rank int 0 - [0, n_ant) Rank r of shared scattering subspace B_a (inter-user correlation); 0 = disabled
shared_scatter_power float 0.1 - [0, 1) Fraction of NLoS power allocated to the shared scattering subspace B_a
estimation_method str MMSE - {MMSE LS
mmwave_n_clusters int 2 - >= 1 Number of mmWave scattering clusters (active when carrier_freq_ghz > 6)
mmwave_n_rays int 10 - >= 1 Number of rays per mmWave cluster
mmwave_cluster_as_deg float 10.0 deg > 0 Per-cluster angular spread for mmWave channel

Sensing & Clutter

Parameter Type Default Unit Range Description
sigma_rcs_sq_db float -3.0 dB any real (typical: -10 to 10) RCS power variance sigma_RCS^2 = E[
swerling_model int 1 - {0 1}
rx_strategy str single_closest_centroid - {single_closest_centroid single_farthest_centroid
los_model str always - {always 3gpp_umi
los_probability_override Optional[float] null - [0, 1] or null Fixed P_LoS value for all targets when los_model='deterministic'; null = use model
multi_static bool true - {true false}
max_tx_aps_per_target int 5 - [1, n_ap - 1] Maximum number of transmit APs illuminating a single target K_tx
max_rx_aps_per_target int 3 - [1, n_sensing_rx] Maximum number of receive APs processing echoes from a single target K_rx
n_snapshots int 20 symbols >= 1 Number of slow-time STAP snapshots T; multiplicative temporal gain in SCNR
sigma_clt Optional[float] null - null OR >= 0 OPTIONAL explicit override for sigma_clt. If null (default), sigma_clt is derived from clutter_cnr_db; if set, this value is used directly (sigma_clt^2 = sigma_clt^2, ignoring CNR).
clutter_cnr_db float -10.0 dB any real (typical: -20 to 0) Clutter-to-noise ratio (CNR); sets sigma_clt^2 = 10^(CNR/10) * sigma_n^2. Used only when sensing.sigma_clt is null (default).
rho_clt_model str constant - {constant jakes
rho_clt_bandwidth float 0.1 - (0, 0.5] Normalised clutter Doppler bandwidth (fraction of PRF); used by jakes/gaussian models
clutter_as_deg float 15.0 deg > 0 Angular spread of clutter returns; controls spatial correlation C_a of clutter
clutter_center_strategy str target_centroid - {target_centroid offset
clutter_offset_az_deg float 60.0 deg any real (typical: 30 to 90) Azimuth offset added to the target azimuth when clutter_center_strategy='offset'; the clutter PAS is centred at (target azimuth + clutter_offset_az_deg). Larger values move the clutter further from the target direction, reducing the geometric coupling between sensing gain and clutter penalty. Ignored by other strategies.

Algorithm: CORDIS-ADMM

Parameter Type Default Unit Range Description
kappa float 0.1 - >= 0 (0 = ignore clutter in objective) Clutter penalty weight kappa in the linear sensing surrogate U_cpu^sens
rho float 1.0 - > 0 (typical: 0.1 to 10) ADMM penalty parameter rho controlling consensus convergence speed
n_max int 250 - >= 1 Maximum number of ADMM iterations N_max before forced termination
eps_pri float 1.0 - > 0 (typical: 0.3 to 1.0; default: 1.0) Primal residual convergence threshold ε_pri. With the auto-balanced ρ (rho=1), residuals settle near 1 in SNR-amplitude units, so tolerances of 0.3-1.0 match the algorithm's natural equilibrium. Values << 0.1 require rho > 1 (risks SCA destabilisation) and often cause ADMM to run to n_max without ever triggering the stop criterion
eps_dual float 1.0 - > 0 (typical: 0.3 to 1.0; default: 1.0) Dual residual convergence threshold ε_dual. Same scaling considerations as eps_pri — keep at O(1) under default rho=1 auto-balance
xi_slack float 10000.0 - >> 1 (typical: 1e3 to 1e5) Slack variable penalty xi >> 0 in P-Central; ensures feasibility of SOC constraint
target_priority_equal bool true - {true false}
warm_start_from_split bool true - {true false}
best_iter_criterion str feasible_then_residual - {residual_norm min_sinr
adaptive_rho bool false - {true false}
rho_mu_balance float 10.0 - > 1 (typical: 5–20; Boyd's default: 10) Boyd's μ threshold for the relative-residual balance test in adaptive ρ. Adapt only when (r_pri/ε_pri) > μ·(r_dual/ε_dual) (or vice-versa).
rho_tau float 1.5 - > 1 (typical: 1.25–2.0) Symmetric multiplicative step for adaptive ρ. τ=2.0 is Boyd's default; we use 1.5 because the SCA-linearised err penalty loses validity at large ρ and a gentler step preserves stability.
rho_max_factor float 3.0 - > 1.0 (typical: 2.0–5.0) Upper bound on the adaptive ρ multiplier (factor × input rho_admm). Default 3.0 — half the empirical instability threshold (~5×) of this SCA-based ADMM.
rho_min_factor float 0.5 - (0, 1.0] (typical: 0.25–0.75) Lower bound on the adaptive ρ multiplier. Default 0.5 — protects against over-shrinking which would produce a near-zero penalty and lose all consensus.
rho_adapt_warmup int 5 iters >= 0 (typical: 3–10) Number of warmup iterations before adaptive ρ engages. Protects against adapting on transient residuals while the SCA gradient is still settling.
rho_adapt_interval int 3 iters >= 1 (typical: 2–5) Minimum iterations between consecutive ρ changes — gives the algorithm time to respond before adjusting again. Acts as cooldown / hysteresis.
early_stop_patience int 30 iters >= 0 (0 disables; typical: 10–30) Patience for early stop (iterations). Bails out when no new best iterate has been recorded for this many consecutive iters. Active under the residual-based criteria (residual_norm, feasible_then_residual); the patience clock starts only once a FEASIBLE incumbent exists (Stage 23 follow-up feasibility gate), so it never stops on a sub-gamma iterate. Set 0 to disable (e.g. the convergence-trace experiment).
early_stop_min_iters int 30 iters >= 0 (typical: 20–50) Warmup before patience-stop can fire. Protects against stopping prematurely on transient improvement in the early iterations.
solver str CLARABEL - {CLARABEL GUROBI

Algorithm: CORDIS-Split

Parameter Type Default Unit Range Description
epsilon_reg float 0.01 - > 0 (typical: 1e-3 to 1e-1) Regularisation parameter epsilon in LR-MMSE precoder (eq. split-comm-bf)
epsilon_nsc float 0.001 - > 0 (typical: 1e-4 to 1e-2) Loading factor epsilon for null-space projection P_perp in NS-C beamformer
target_priority_equal bool true - {true false}
kappa float 1.0 - >= 0 Clutter penalty weight kappa in the P-Split sensing utility U_cpu^sens
xi_penalty float 10000.0 - >> 1 (typical: 1e3 to 1e5) Slack penalty xi >> 0 in P-Split; penalises violation of SINR QoS constraint
solver str CLARABEL - {CLARABEL GUROBI

Simulation Control

Parameter Type Default Unit Range Description
n_trials int 500 - >= 1 Number of independent Monte Carlo realisations
seed int 42 - >= 0 Master random seed; fully determines all random draws when fixed
n_jobs int -1 - -1 or >= 1 Number of parallel workers for Monte Carlo (-1 = all CPU cores)
save_dir str results/ - any valid path Root directory for saved result files (.npz + _meta.json pairs)
tag str `` - any string Short label appended to output filenames for easy identification
metrics List[str] ['sinr_cdf', 'scnr_cdf', 'fronthaul', 'convergence'] - -
benchmarks List[str] ['centralized', 'mrt_centpa', 'zf_centpa', 'random_bf'] - -
log_level str INFO - {DEBUG INFO
log_file Optional[str] null - -
progress_bar bool true - -