xlron.parameter_flags:
--ACTION_DIM: Dimension of action space
(default: '2')
(an integer)
--[no]ACTION_MASKING: Use invalid action masking
(default: 'true')
--[no]ACTION_OPTIMIZATION: Directly optimise rollout actions using first-order
gradients from differentiable environment
(default: 'false')
--ACTIVATION: Activation function
(default: 'tanh')
--ADAM_BETA1: Adam beta1
(default: '0.9')
(a number)
--ADAM_BETA2: Adam beta2
(default: '0.999')
(a number)
--ADAM_EPS: Adam epsilon
(default: '1e-05')
(a number)
--ADV_CLIP: Advantage clip to range +/- this value
(default: '10.0')
(a number)
--CLIP_EPS: PPO clipping parameter
(default: '0.2')
(a number)
--[no]COMPILE_RR_BOUNDS: AOT-compile run_defrag in reconfigurable routing
bounds (default: interpreted)
(default: 'false')
--CUTSET_BATCH_SIZE: Batch size for cut-set generation (only relevant when
finding cutsets exhaustively for larger networks (40+ nodes) on GPU)
(default: '512')
(an integer)
--[no]CUTSET_EXHAUSTIVE: Use exhaustive search method to find cut-sets (else
shortest paths method). The exhaustive method is recommended unless the
graph is large (40+ nodes), which requires either parallelization of the
search on GPU or use the approximate shortest paths method.
(default: 'false')
--CUTSET_ITERATIONS: Number of iterations per parallel process (only relevant
when finding cutsets exhaustively for larger networks (40+ nodes) on GPU)
(default: '32')
(an integer)
--CUTSET_PARALLEL_PROCESSES: How many parallel processes to launch in
exhaustive cut-sets search.
(default: '1')
(an integer)
--CUTSET_TOP_K: Number of top congested cutsets to return
(default: '256')
(an integer)
--CUTSET_TOP_PCT: If > 0, keep top this percentage of congested cutsets
(overrides CUTSET_TOP_K). The actual count is max(1,
round(total_unique_cutsets * CUTSET_TOP_PCT / 100)).
(default: '0.0')
(a number)
--C_CLIP: Clip importance ratio for GAE accumulation in VTrace-style advantage
calculation (set <= 0 for standard GAE without clipping)
(default: '-1.0')
(a number)
--DATA_OUTPUT_FILE: Path to save JSONL run summary (one JSON object per line)
--[no]DEBUG: Debug mode
(default: 'false')
--[no]DEBUG_LOSS: Debug loss calculation
(default: 'false')
--[no]DEBUG_NANS: Debug NaNs
(default: 'false')
--[no]DETERMINISTIC_OPS: Use deterministic GPU operations
(default: 'false')
--[no]DISABLE_JIT: Disable JIT compilation
(default: 'false')
--[no]DISABLE_NODE_FEATURES: Use node features in the GNN (spectral and
source-dest)
(default: 'false')
--DOWNSAMPLE_FACTOR: Downsample factor to reduce data uploaded to wandb
(default: '1')
(an integer)
--EMULATED_DEVICES: Number of devices to emulate
(an integer)
--[no]ENABLE_X64: Enable x64 floating point precision
(default: 'false')
--[no]ENHANCED_LOGGING: Enable enhanced diagnostic logging for PPO loss
function (valid_frac, clip_frac, ratio stats, valid_mass stats, n_valid
stats, adv stats, gate_frac)
(default: 'false')
--ENT_COEF: Entropy coefficient
(default: '0.0')
(a number)
--ENT_END_FRACTION: Fraction of initial entropy coefficient that is final
entropy coefficient
(default: '0.1')
(a number)
--ENT_SCHEDULE: Enable entropy coefficient scheduling
(default: 'constant')
--ENT_SCHEDULE_MULTIPLIER: Multiply the entropy schedule horizon by this
factor
(default: '1.0')
(a number)
--ENV_WARMUP_STEPS: Number of warmup steps before training or eval
(default: '0')
(an integer)
--EPISODE_DATA_OUTPUT_FILE: Path to save per-episode CSV data output
--EPSILON: Small number to prevent div zero
(default: '1e-08')
(a number)
--[no]EVAL_DURING_TRAINING: Run periodic evaluation during training to track
best model
(default: 'false')
--EVAL_FREQUENCY: Run eval every N increments
(default: '1')
(an integer)
--[no]EVAL_HEURISTIC: Evaluate heuristic
(default: 'false')
--[no]EVAL_MODEL: Load model for evaluation
(default: 'false')
--EVAL_STEPS: Number of steps to run in each evaluation
(default: '100')
(an integer)
--EVAL_TIMESTEPS: Number of timesteps per eval run (0 = use
STEPS_PER_INCREMENT)
(default: '10000')
(an integer)
--EXPERIMENT_NAME: Name of experiment (equivalent to run name in wandb) (auto-
generated based on other flags if unspecified)
(default: '')
--FINAL_LAMBDA: Final lambda parameter for GAE
(default: '0.98')
(a number)
--GAE_LAMBDA: GAE lambda parameter
(a number)
--GAMMA: Discount factor
(default: '0.999')
(a number)
--GAUSSIAN_SIGMA: Sigma for Gaussian smoothing kernel (larger = smoother
landscape)
(default: '0.8')
(a number)
--[no]GAUSSIAN_SMOOTHING: Use Gaussian-smoothed reward for action optimization
(evaluates nearby integer actions weighted by Gaussian kernel)
(default: 'false')
--[no]GNN_OUTPUT_LP: Use GNN for launch power optimization in RSA GN Model
environment
(default: 'false')
--[no]GNN_OUTPUT_RSA: Use GNN for RSA in RSA GN Model environment
(default: 'false')
--[no]IAM_DAMPING: Enable soft damping of actor/entropy losses based on valid
mass (weight w *= clip(valid_mass / VALID_MASS_TARGET, 0, 1))
(default: 'true')
--[no]IAM_GATING: Enable hard gating of actor/entropy losses: zero weight for
steps with fewer than IAM_GATING_MIN_ACTIONS valid actions
(default: 'true')
--IAM_GATING_MIN_ACTIONS: Minimum number of valid actions for a step to pass
the hard gate (2 = need choice, 1 = need any valid action)
(default: '2')
(an integer)
--[no]IAM_RECENTER_CLIP: ABLATION FLAG - recenter the PPO clip on the off-
policy IAM ratio's no-update value (the valid mass). Only used when
OFF_POLICY_IAM is True. The off-policy ratio equals the valid mass (~0.5),
not 1, at no update, so the unit-centred clip floors out negative-advantage
gradients; subtracting log(valid_mass) from the log ratio recenters it to ~1
so both advantage signs get gradient symmetrically. Validated outcome: does
NOT outperform the non-recentered clip (see docs/training.md, off-policy IAM
recommended configuration)
(default: 'false')
--[no]INITIALIZE_ACTIONS_ASCENDING: Initialize actions in ascending order
(default: 'false')
--[no]INITIALIZE_ACTIONS_DESCENDING: Initialize actions in descending order
(default: 'false')
--[no]INITIALIZE_ACTIONS_HEURISTIC: Initialize actions with heuristic
(default: 'false')
--[no]INITIALIZE_ACTIONS_MAX: Initialize actions at max. value
(default: 'false')
--[no]INITIALIZE_ACTIONS_RANDOM: Initialize actions randomly
(default: 'false')
--INITIAL_AVERAGE_REWARD: Initial average reward estimate for reward centering
(default: '0.0')
(a number)
--INITIAL_LAMBDA: Initial lambda parameter for GAE
(default: '0.9')
(a number)
--INPUT_DIM: Dimension of input space
(default: '2')
(an integer)
--[no]KEEP_VF: Load the pre-trained value function
(default: 'false')
--LAMBDA_SCHEDULE_MULTIPLIER: Multiply the GAE-lambda schedule horizon by this
factor
(default: '1.0')
(a number)
--LOGR_CLIP: Log ratio clip to range +/- this value
(default: '10.0')
(a number)
--[no]LOG_ALL_INFO: Log every metric
(default: 'true')
--[no]LOG_LOSS_INFO: Log loss metrics
(default: 'true')
--LR: Learning rate
(default: '0.0005')
(a number)
--LR_END_FRACTION: Fraction of init LR that is final LR
(default: '0.1')
(a number)
--LR_SCHEDULE: Learning rate schedule
(default: 'cosine')
--LR_SCHEDULE_MULTIPLIER: Multiply the LR schedule horizon by this factor
(default: '1.0')
(a number)
--MAX_GRAD_NORM: Maximum gradient norm
(default: '0.5')
(a number)
--MINIBATCH_SIZE: Minibatch size
(default: '1')
(an integer)
--MODEL_PATH: Path to save/load model
--[no]MU_WEIGHT_ACTOR: ABLATION FLAG - weight the per-step actor loss by the
valid mass mu (unmasked policy mass on valid actions). Explicit equivalent
of the per-state, congestion-aware scaling the non-recentered off-policy IAM
ratio (rho ~ mu) applies implicitly but IAM_RECENTER_CLIP removes; combine
with IAM_RECENTER_CLIP + POSITIVE_ADV_ONLY (a ~3x lever there)
(default: 'false')
--[no]NO_TRUNCATE: Do not truncate printed arrays
(default: 'false')
--NUM_DEVICES: Number of devices
(default: '1')
(an integer)
--NUM_ENVS: Number of environments per device
(default: '1')
(an integer)
--NUM_INCREMENTS: Number of increments to log
(default: '1')
(an integer)
--NUM_LAYERS: Number of layers in actor and critic networks
(default: '2')
(an integer)
--NUM_LEARNERS: Number of independent learners i.e. how many independent
experiments to run with a unique set of learned parameters each
(default: '1')
(an integer)
--NUM_MINIBATCHES: Number of minibatches per update
(default: '1')
(an integer)
--NUM_UNITS: Number of hidden units in actor and critic networks
(default: '64')
(an integer)
--NUM_UPDATES: Number of parameter updates (not including multiple epochs)
(calculated in train.py but included here so that it can be passed to the
model)
(default: '1')
(an integer)
--[no]OFF_POLICY_IAM: Use off-policy invalid action masking i.e. log prob
ratio is unmasked policy / masked
(default: 'false')
--OPTIMIZATION_ITERATIONS: Number of optimization iterations
(default: '1000')
(an integer)
--OPTIMIZATION_LEARNING_RATE: Learning rate for gradient-based action
optimization
(default: '0.05')
(a number)
--[no]ORDERED: Order print statements when debugging (must be false if using
pmap)
(default: 'true')
--[no]OVERWRITE_MODEL: Overwrite model saved at MODEL_PATH
(default: 'true')
--[no]PATH_SLOT_ACTIONS: Use 2-part path-slot actions for optimization
(default: 'false')
--[no]PLOTTING: Plotting
(default: 'false')
--[no]POSITIVE_ADV_ONLY: ABLATION FLAG - learn the actor from positive-
advantage steps only (self-imitation style): zero the policy-gradient
contribution of negative-advantage steps. Explicit equivalent of the filter
the non-recentered off-policy IAM clip applies emergently; pairs with
IAM_RECENTER_CLIP. Unlike the emergent filter (which binds only in congested
states with valid mass < 1-eps), this filters every state including the
uncongested mu~1 majority (no measured performance cost; see PO_MU_GATE for
the exact per-state rule)
(default: 'false')
--[no]PO_MU_GATE: ABLATION FLAG - apply POSITIVE_ADV_ONLY only in states with
valid mass < 1 - CLIP_EPS (requires POSITIVE_ADV_ONLY). This is exactly the
per-state rule the non-recentered off-policy IAM clip applies emergently:
negative advantages train two-sided in the uncongested mu ~ 1 lobe and are
filtered only in congested states. Combined with IAM_RECENTER_CLIP +
MU_WEIGHT_ACTOR this makes the explicit stack's actor gradient identical to
the emergent configuration at no-update (see ppo_test.py)
(default: 'false')
--[no]PREALLOCATE_MEM: Preallocate GPU memory
(default: 'true')
--PREALLOCATE_MEM_FRACTION: Fraction of GPU memory to preallocate
(default: '0.95')
--[no]PRINT_FLAGS: Print flags
(default: 'false')
--[no]PRINT_MEMORY_USE: Print memory usage
(default: 'false')
--PRIO_ALPHA: Priority exponent for prioritized experience replay (0.0 =
uniform sampling, 1.0 = fully prioritized)
(default: '0.0')
(a number)
--PRIO_BETA0: Initial importance sampling correction exponent (annealed to 1.0
over training, set to 1.0 to disable)
(default: '1.0')
(a number)
--[no]PROFILE: Enable wall-clock profiling of environment and training
components. On CPU, records fine-grained per-call section timings via host
callbacks. On GPU, records first-call (compilation + first execution)
latency per section. Prints a summary table of call counts, total/mean time,
and percentage breakdown.
(default: 'false')
--PROJECT: Name of project (same as experiment name if unspecified)
(default: '')
--[no]RENDER_CLICK_THROUGH: If true and using human render mode, wait for key
press between rendered requests.
(default: 'false')
--RENDER_EVAL_MODE: Eval-only rendering mode: off, save, or human. Only used
for EVAL_HEURISTIC/EVAL_MODEL runs.
(default: 'off')
--RENDER_FPS: Playback/recording frame rate for eval rendering
(default: '2.0')
(a number)
--RENDER_MAX_STEPS: Max requests/steps to render during eval.
(default: '100')
(an integer)
--RENDER_OUTPUT_FILE: Path to save eval render recording (.gif/.mp4). If unset
and mode includes save, defaults inside the run directory when available.
--RENDER_SCALE: Scale factor for render figure resolution. Lower values render
faster.
(default: '0.6')
(a number)
--[no]RETRAIN_MODEL: Load model for retraining
(default: 'false')
--[no]REWARD_CENTERING: Use reward centering
(default: 'false')
--REWARD_SCALE: Reward scaling factor (multiply all rewards by this value)
(default: '1.0')
(a number)
--REWARD_STEPSIZE: Initial step size for reward centering average reward
update
(default: '0.001')
(a number)
--RHO_CLIP: Clip importance ratio for TD error in VTrace-style advantage
calculation (set <= 0 for standard GAE without clipping)
(default: '-1.0')
(a number)
--ROLLOUT_LENGTH: Number of steps per rollout per environment
(default: '150')
(an integer)
--[no]SAVE_MODEL: Save model (will be saved to --MODEL_PATH locally and
uploaded to wandb if --WANDB is True)
(default: 'false')
--SEED: Random seed
(default: '42')
(an integer)
--[no]SEPARATE_VF_OPTIMIZER: Use a separate optimizer for the value function
(critic) with its own hyperparameters
(default: 'false')
--STEPS_PER_INCREMENT: Number of steps per logging increment
(default: '100000')
(an integer)
--[no]STEP_ON_GRADIENT: Whether to step schedule on gradient update or per
update loop
(default: 'false')
--TEMPERATURE: Temperature for softmax action selection (high temperature,
more exploration) or (low temperature, more exploitation)
(default: '1.0')
(a number)
--TOTAL_TIMESTEPS: Total number of timesteps. For reconfigurable routing
bounds: total requests per trial.
(default: '1000000.0')
(a number)
--TRAJ_DATA_OUTPUT_FILE: Path to save trajectory (actions, etc.) data output
--UPDATE_EPOCHS: Number of epochs per update
(default: '1')
(an integer)
--[no]USE_GNN: Use GNN
(default: 'false')
--[no]USE_RNN: Use RNN-based policy (affects prioritization: trajectory-level
vs sample-level)
(default: 'false')
--[no]USE_TRANSFORMER: Use Transformer architecture
(default: 'false')
--VALID_MASS_LOSS_COEF: Coefficient for valid mass loss term that encourages
the unmasked policy to place probability on valid actions (0.0 = disabled)
(default: '0.0')
(a number)
--VALID_MASS_TARGET: Target valid mass threshold for soft damping of actor and
entropy losses (valid mass below this value linearly damps the loss
contribution). Only used when IAM_DAMPING is True.
(default: '0.05')
(a number)
--VF_ADAM_BETA1: Adam beta1 for VF optimizer (default: same as ADAM_BETA1)
(a number)
--VF_ADAM_BETA2: Adam beta2 for VF optimizer (default: same as ADAM_BETA2)
(a number)
--VF_ADAM_EPS: Adam epsilon for VF optimizer (default: same as ADAM_EPS)
(a number)
--VF_COEF: Value function coefficient
(default: '0.5')
(a number)
--VF_LR: Learning rate for value function optimizer (default: LR / 3)
(a number)
--VF_LR_END_FRACTION: Fraction of init VF LR that is final VF LR (default:
same as LR_END_FRACTION)
(a number)
--VF_LR_SCHEDULE: Learning rate schedule for VF optimizer (default: same as
LR_SCHEDULE)
--VF_MAX_GRAD_NORM: Max gradient norm for VF optimizer (default: same as
MAX_GRAD_NORM)
(a number)
--VF_SCHEDULE_MULTIPLIER: Multiply the value function LR schedule horizon by
this factor
(default: '1.0')
(a number)
--VF_WARMUP_MULTIPLIER: VF LR warmup peak multiplier (default: same as
WARMUP_MULTIPLIER)
(a number)
--VF_WARMUP_STEPS_FRACTION: Fraction of total timesteps for VF LR warmup
(default: same as WARMUP_STEPS_FRACTION)
(a number)
--VF_WEIGHT_DECAY: Weight decay for VF optimizer (default: same as
WEIGHT_DECAY)
(a number)
--VISIBLE_DEVICES: Comma-separated indices of (desired) visible GPUs e.g.
1,2,3
--VML_END_FRACTION: Fraction of initial VALID_MASS_LOSS_COEF that is final
coefficient (>1.0 anneals upward, e.g. 10.0 means final = 10x initial)
(default: '10.0')
(a number)
--VML_SCHEDULE: Valid mass loss coefficient schedule (constant, linear,
cosine)
(default: 'constant')
--VML_SCHEDULE_MULTIPLIER: Multiply the valid mass loss schedule horizon by
this factor
(default: '1.0')
(a number)
--[no]WANDB: Use wandb
(default: 'false')
--WARMUP_MULTIPLIER: Increase the learning rate warmup peak compared to init
(default: '1.0')
(a number)
--WARMUP_STEPS_FRACTION: Fraction of total timesteps to use for warmup
(default: '0.2')
(a number)
--WEIGHT_DECAY: Weight decay for optimizer
(default: '0.0')
(a number)
--action_dtype: Action dtype (int32, must be int for indexing)
--aggregate_slots: Number of slots to aggregate into a single action
(default: '1')
(an integer)
--alpha: Legacy fibre attenuation alpha [dB/km] used by the path-capacity
approximation (e.g., rwa_lightpath_reuse). GN-model environments use
attenuation/attenuation_bar in [1/m].
(default: '0.2')
(a number)
--attenuation: GN-model attenuation coefficient a [1/m] used in ISRS/GN NLI
and ASE calculations.
(default: '4.605111673e-05')
(a number)
--attenuation_bar: GN-model attenuation coefficient a_bar [1/m] used alongside
attenuation in ISRS/GN calculations.
(default: '4.605111673e-05')
(a number)
--attn_mlp_latent: Size of attention MLP latent dimension
(default: '64')
(an integer)
--attn_mlp_layers: Number of attention MLP layers
(default: '1')
(an integer)
--band_data_filepath: Path to band definition CSV file for computing band gaps
in GN model
--band_preference: Comma-separated band preference order for first-fit/last-
fit heuristics in GN model environments (e.g. 'C,L,S,U,E,O'). First-fit
exhausts slots in preferred band order.
--beta_2: Second-order dispersion parameter [ps^2/km] for the legacy path-
capacity calculation (e.g., rwa_lightpath_reuse). GN-model environments use
dispersion_coeff/dispersion_slope instead.
(default: '-21.7')
(a number)
--beta_fec: Pre-FEC BER target for GSNR threshold calculation (used with
--calc_minimum_osnr)
(default: '0.015')
(a number)
--binary_dtype: Binary array dtype, e.g. path-link incidence (int8 in mixed
mode)
--[no]calc_minimum_osnr: Calculate minimum OSNR column from spectral
efficiency using GSNR threshold formula instead of reading pre-specified
values from the modulations CSV
(default: 'true')
--[no]coherent: Add NLI contribution coherently per span
(default: 'true')
--compute_dtype: NN compute dtype (float32, bfloat16). Keep float32 for
stability.
--[no]continuous_operation: If True, do not reset the environment at the end
of an episode
(default: 'false')
--custom_traffic_matrix_csv_filepath: Path to a CSV file specifying a custom
traffic matrix. The CSV should be an NxN matrix (N = number of nodes) where
entry (i, j) gives the relative traffic demand from node i to node j. Leave
blank to use uniform traffic (equal probability for all source-destination
pairs). Ignored when --random_traffic is enabled.
--[no]deterministic: Deterministic evaluation (use mode of action
distribution)
(default: 'false')
--[no]deterministic_requests: Use deterministic requests
(default: 'false')
--[no]differentiable: Enable differentiable mode for gradient-based
optimization (uses straight-through estimators and temperature
approximations)
(default: 'false')
--[no]discrete_launch_power: Discrete launch power values
(default: 'false')
--[no]disjoint_paths: Use disjoint paths (k paths still considered)
(default: 'false')
--dispersion_coeff: Dispersion coefficient D [s/m^2] for GN-model/ISRS
calculations; used to derive beta2 as a function of wavelength.
(default: '1.7e-05')
(a number)
--dispersion_slope: Dispersion slope dD/dlambda [s/m^3] for GN-model/ISRS
calculations; used with dispersion_coeff for frequency-dependent beta2/beta3
terms.
(default: '60.7')
(a number)
--edge_embedding_size: Size of edge embeddings
(default: '128')
(an integer)
--edge_mlp_latent: Size of edge MLP latent dimension
(default: '128')
(an integer)
--edge_mlp_layers: Number of edge MLP layers
(default: '2')
(an integer)
--edge_output_size_actor: Size of edge output for actor (not used)
(default: '0')
(an integer)
--edge_output_size_critic: Size of edge output for critic
(default: '1')
(an integer)
--[no]end_first_blocking: End episode on first blocking event
(default: 'false')
--[no]enforce_band_gaps: Compute and enforce band boundary gaps from CSV data
(non-GN-model multiband envs). GN model envs always enforce band gaps when
band_preference is set.
(default: 'true')
--env_type: Environment type
(default: 'rmsa')
--fec_rate: FEC code rate (e.g. 0.8 = 20%% overhead). In rsa_gn_model it sets
fec_threshold = 1 - fec_rate for the Shannon capacity formula; in
rmsa_gn_model it scales accepted bitrate (effective_bitrate =
requested_bitrate * fec_rate).
(default: '0.8')
(a number)
--float_dtype: Uniform override for BOTH large+small float tiers (float32,
float16, bfloat16)
--gamma: Legacy nonlinear coefficient used by the path-capacity approximation
(e.g., rwa_lightpath_reuse). GN-model environments use nonlinear_coefficient
instead.
(default: '1.2')
(a number)
--global_embedding_size: Size of global embeddings
(default: '8')
(an integer)
--global_mlp_latent: Size of global MLP latent dimension
(default: '16')
(an integer)
--global_mlp_layers: Number of global MLP layers
(default: '1')
(an integer)
--global_output_size_actor: Size of global output for actor
(default: '0')
(an integer)
--global_output_size_critic: Size of global output for critic
(default: '1')
(an integer)
--[no]gnn_layer_norm: Use layer normalization in GNN
(default: 'true')
--guardband: Guard band in slots
(default: '1')
(an integer)
--[no]include_no_op: Whether to include a NO OP action.
(default: 'false')
--[no]incremental_loading: Incremental increase in traffic load (non-expiring
requests)
(default: 'false')
--int_dtype: Uniform override for BOTH large+small int tiers (int32, int16)
--inter_band_gap_ghz: Spectral width of inter-band gap in GHz (~0.2nm at
1550nm). Used in GN model envs to set the physical gap width between bands.
(default: '25.0')
(a number)
--interband_gap_start: Start index of gap between bands [GHz];
repeat this option to specify a list of values
(an integer)
--interband_gap_width: Gap between bands [GHz];
repeat this option to specify a list of values
(an integer)
--k: Number of paths
(default: '5')
(an integer)
--lambda0: Wavelength [nm]
(default: '1550.0')
(a number)
--large_float_dtype: Precision float tier: accumulators, physical SNR/power
(float32 recommended)
--large_int_dtype: Counter int tier: total_requests/timesteps, large indices
(int32 recommended)
--[no]last_fit: Use KSP-FF for path_action, else KSP-LF
(default: 'false')
--launch_power_csv: Path to a CSV file specifying per-slot launch power.
Expected columns: slot_index (int), freq_ghz (float), power_dbm (float).
Slots not present in the file keep the default launch power. Overrides
--power_per_channel and --power_per_channel_per_band.
--launch_power_type: Can be fixed (same power per transceiver), tabular (power
depends on path), or rl (power selected by agent).
(default: 'fixed')
--link_resources: Number of link resources
(default: '5')
(an integer)
--list_of_requests: Traffic request list
(a comma separated list)
--load: Traffic load in Erlangs (arrival_rate = load /
mean_service_holding_time). Also used as the single traffic load point for
capacity bound estimation.
(default: '250.0')
(a number)
--[no]log_actions: Log actions taken and other details
(default: 'false')
--[no]log_path_lengths: Log path length statistics
(default: 'false')
--[no]log_wrapper: Wrap Env in LogEnvWrapper
(default: 'true')
--max_bw: Maximum requested bandwidth
(default: '100')
(an integer)
--max_concentration: For continuous launch power dist.
(default: '20.0')
(a number)
--max_load: Maximum load for load sweep (inclusive).
(a number)
--max_node_resources: Maximum number of node resources
(default: '1')
(an integer)
--max_power: Maximum launch power [dBm]
(default: '0.5')
(a number)
--max_power_per_fibre: Max launch power per fibre [dBm]
(default: '23.0')
(a number)
--max_requests: Maximum number of requests in an episode. For cut-set capacity
bounds: number of requests per trial.
(default: '4.0')
(a number)
--max_snr: Maximum SNR that a link can take (just used for normalization
purposes)
(default: '30.0')
(a number)
--max_traffic: Maximum traffic
(default: '1.0')
--[no]maximise_throughput: Maximise throughput instead of minimising blocking
probability
(default: 'false')
--maximum_path_length_km: Maximum allowed path length in km. Paths exceeding
this distance are replaced with duplicates of the last valid path (or zero-
filled if none exist). None disables filtering.
(a number)
--mean_service_holding_time: Mean service holding time
(default: '25.0')
(a number)
--message_passing_steps: Number of message passing steps
(default: '3')
(an integer)
--min_bw: Minimum requested bandwidth
(default: '25')
(an integer)
--min_concentration: For continuous launch power dist.
(default: '0.1')
(a number)
--min_load: Minimum load for load sweep. When set (along with max_load and
step_load), runs the experiment across a range of loads using a single
compilation. Each swept load re-runs the ENV_WARMUP_STEPS warmup at its own
arrival rate and zeroes the metric counters, so per-load metrics reflect
that load's steady state.
(a number)
--min_node_resources: Minimum number of node resources
(default: '1')
(an integer)
--min_power: Minimum launch power [dBm]
(default: '-5.0')
(a number)
--min_snr: Minimum SNR for any data transmission
(default: '7.0')
(a number)
--min_traffic: Minimum traffic
(default: '0.0')
--[no]mixed_precision: Enable mixed precision: shrink bulk env-state arrays
(occupancy/masks -> float16, bounded indices -> int16, binary -> int8, times
-> float16 when relative_arrival_times) while keeping NN compute/params,
accumulators and physical-layer floats at float32. Cuts env-state memory
~2x. Individual *_dtype flags below override the mixed defaults.
(default: 'false')
--mlp_latent: Size of MLP latent dimension
(an integer)
--[no]mlp_layer_norm: Use layer normalization in MLPs of GNN
(default: 'false')
--mlp_layers: Number of MLP layers
(an integer)
--[no]mod_format_correction: Apply non-Gaussian modulation format correction
(default: 'false')
--modulations_csv_filepath: Modulation format definitions for RSA environment
(default: './xlron/data/modulations/modulations_deeprmsa.csv')
--mscl_interfering_k: Stored routes per node pair in the interfering route set
of the MSCL heuristics (ksp_mscl, mscl_ksp). 1 (default) = the single-route-
per-pair set of the original 2013 formulation; 0 = all k paths, giving the
multi-route MSCL Sequencial/Combinado of dos Santos (2021). Compute and
memory scale linearly with this value.
(default: '1')
(an integer)
--multiple_topologies_directory: Directory containing JSON definitions of
network topologies that will be alternated per episode
--node_embedding_size: Size of node embeddings
(default: '16')
(an integer)
--node_heuristic: Node heuristic to be evaluated
(default: 'random')
--node_mlp_latent: Size of node MLP latent dimension
(default: '128')
(an integer)
--node_mlp_layers: Number of node MLP layers
(default: '2')
(an integer)
--node_output_size_actor: Size of node output for actor
(default: '0')
(an integer)
--node_output_size_critic: Size of node output for critic
(default: '0')
(an integer)
--node_probs: List of node probabilities for selection
--node_resources: Number of node resources
(default: '4')
(an integer)
--noise_data_filepath: Path to GN-model noise CSV. This file provides
transceiver back-to-back SNR and EDFA noise figure values, and can specify
them per band or per sub-band. During GN-model calculations these values set
the transceiver B2B SNR and amplifier noise figure used for each selected
band/sub-band; if omitted, built-in defaults are used.
--nonlinear_coefficient: GN-model nonlinear coefficient [1/W^2] used in
ISRS/GN NLI calculations (rsa_gn_model, rmsa_gn_model).
(default: '0.0012')
(a number)
--[no]normalize_by_link_length: Normalize by link length
(default: 'false')
--num_spectral_features: No. of spectral features
(default: '8')
(an integer)
--num_subchannels: Number of Nyquist subchannels per frequency slot for GN
model NLI calculation. Divides each slot's bandwidth into N subchannels with
effective baud rate B_eff = slot_size / num_subchannels, reducing SPM. XPM
and ASE are unchanged. Best used with slot_size equal to the desired channel
bandwidth (e.g. slot_size=100, num_subchannels=8 models 8x12.5 GHz
subcarriers).
(default: '1')
(an integer)
--num_trials: Number of independent random-seed trials for capacity bound
estimation (used by both cut-set and reconfigurable routing bounds)
(default: '10')
(an integer)
--num_wire_features: Number of spectral features for WiRE positional encodings
(computed from line graph Laplacian)
(default: '8')
(an integer)
--[no]optimise_launch_power: Use deteministic requests from list_of_requests
to optimise launch power
(default: 'false')
--[no]pack_path_bits: Pack path bits to save memory, then unpack when path row
is selected
(default: 'false')
--params_dtype: NN parameter/optimizer dtype (float32, bfloat16). Keep float32
for stability.
--path_heuristic: Path heuristic to be evaluated
(default: 'ksp_ff')
--path_sort_criteria: How paths should be sorted. Must be one of
'spectral_resources' (default), 'hops', 'distance', 'hops_distance',
'capacity' (for RWA-LR only)
(default: 'spectral_resources')
--power_per_channel: Per-channel launch power [dBm]. If None, defaults to
max_power_per_fibre divided equally among slots.
(a number)
--power_per_channel_per_band: Comma-separated per-channel launch power values
[dBm], one per band in band_preference order (e.g. '2.3,2.5' for C,L).
Overrides --power_per_channel.
--raman_gain_slope: Raman gain slope [1/(W*m*Hz)]. Typical value ~0.028
1/(W*km*THz) = 2.8e-17 in SI.
(default: '2.8e-17')
(a number)
--raman_max_bandwidth_thz: Maximum modulated bandwidth in THz for DRA
triangular Raman approximation validity. When DRA is enabled, bands are
trimmed to fit within this limit.
(default: '15.0')
(a number)
--raman_pump_freq_bw: Backward Raman pump frequencies in Hz (comma-separated,
one per pump)
--raman_pump_freq_fw: Forward Raman pump frequencies in Hz (comma-separated,
one per pump)
--raman_pump_power_bw: Backward Raman pump powers in Watts (comma-separated,
one per pump)
--raman_pump_power_fw: Forward Raman pump powers in Watts (comma-separated,
one per pump)
--[no]random_traffic: Generate a new random traffic matrix on each episode
reset, so source-destination pair probabilities vary between episodes. When
False, the traffic matrix is fixed for the entire run (uniform by default,
or loaded from a CSV via --custom_traffic_matrix_csv_filepath).
(default: 'false')
--ref_lambda: Reference wavelength [m]
(default: '1.564e-06')
(a number)
--[no]relative_arrival_times: Don't track the absolute current time, just the
relative time since the last request
(default: 'true')
--reward_dtype: Reward dtype (float32)
--reward_type: Reward type
(default: 'service')
--scale_factor: Scale factor for link capacity (only used in RWA with
lightpath reuse)
(default: '1.0')
(a number)
--slot_size: Spectral width of frequency slot in GHz
(default: '12.5')
(a number)
--slots_per_band: Comma-separated number of slots per band (e.g. '45,45').
Must match number of bands in band_preference. Overrides the default
behaviour of filling entire band width with slots. Gap slots between bands
are still added as normal.
--small_float_dtype: Bulk float tier: occupancy, masks, features (float16 in
mixed mode)
--small_int_dtype: Bounded index int tier: required_slots, node/datarate
(int16 in mixed mode)
--snr_margin: Margin required for estimated SNR for mod. format selection [dB]
(default: '0.5')
(a number)
--[no]sort_requests: Sort requests in descending order of required resources
(default: 'true')
--span_length: Span length [km]
(default: '100.0')
(a number)
--span_lumped_loss_db: Optional per-span lumped loss [dB] compensated by
inline EDFAs in GN model ASE calculations. If unset, no additional lumped
span loss is applied.
(a number)
--step_bw: Step size for requested bandwidth values between min and max
(default: '1')
(an integer)
--step_load: Load step size for load sweep.
(a number)
--step_power: Step size for launch power values between min and max
(default: '0.1')
(a number)
--step_traffic: Step size for traffic values between min and max
(default: '0.1')
--symbol_rate: Symbol rate in Gbaud (only used in RWA with lightpath reuse
(default: '100')
(an integer)
--temperature: Temperature for differentiable function approximations (higher
temp. = closer to original function)
(default: '5.0')
(a number)
--[no]terminate_on_episode_end: If True, treat max_requests reached as
terminated (not truncated). When False (default), reaching max_requests is
treated as truncation.
(default: 'false')
--time_dtype: Time/departure array dtype. float16 is safe with
relative_arrival_times; use float32 for absolute-time continuous_operation
(mixed mode auto-selects float32 in that case).
--topology_directory: Directory containing JSON definitions of network
topologies
--topology_name: Topology name
(default: '4node')
--[no]traffic_array: Use traffic array
(default: 'false')
--traffic_intensity: Traffic intensity (arrival rate * mean holding time)
(default: '0.0')
(a number)
--traffic_requests_csv_filepath: Path to traffic request CSV file
--transformer_actor_mlp_depth: Depth of actor MLP head in transformer
(default: '1')
(an integer)
--transformer_actor_mlp_width: Width of actor MLP head in transformer
(default: '128')
(an integer)
--transformer_actor_pooling: Pooling strategy for actor: 'sum' (default) or
'min_mean_max' (concatenate min/mean/max then project)
(default: 'mean')
--transformer_attention_dropout_rate: Dropout rate for transformer attention
layers
(default: '0.1')
(a number)
--transformer_critic_mlp_depth: Depth of critic MLP head in transformer
(default: '2')
(an integer)
--transformer_critic_mlp_width: Width of critic MLP head in transformer
(default: '128')
(an integer)
--transformer_critic_pooling: Pooling strategy for critic: 'mean' (default) or
'attention' (learned single-query attention)
(default: 'mean')
--transformer_dropout_rate: Dropout rate for transformer layers
(default: '0.1')
(a number)
--transformer_embedding_size: Size of transformer token embeddings
(default: '128')
(an integer)
--[no]transformer_enable_dropout: Enable dropout during training in
transformer
(default: 'false')
--transformer_intermediate_size: Size of intermediate layer in transformer
feed-forward blocks
(default: '256')
(an integer)
--transformer_num_heads: Number of attention heads in transformer
(default: '4')
(an integer)
--transformer_num_layers: Number of transformer encoder layers
(default: '1')
(an integer)
--transformer_obs_type: Type of observation to feed to transformer. 1.
'departure': use departure times. 2. 'occupancy': use link occupancy
(binary). 3. 'capacity': use remaining capacity array (for use with RWA-
LR environment).
(default: 'departure')
--[no]transformer_share_layers: Share encoder layers between actor and critic
in transformer
(default: 'false')
--[no]truncate_holding_time: Truncate holding time to less than
2*mean_service_holding_time
(default: 'false')
--[no]uniform_spans: Use uniform spans (on by default: simplifies
calculations)
(default: 'true')
--[no]use_raman_amp: Enable Distributed Raman Amplification model for NLI
calculation
(default: 'false')
--values_bw: List of requested bandwidth values
--values_bw_probs: Comma-separated sampling probabilities for each value in
values_bw (must match values_bw length; normalised to sum to 1). If unset,
bandwidth values are sampled uniformly.
--virtual_topologies: Virtual topologies
(default: '3_ring')
--warmup_action_type: Action selection method during warmup. None uses the
default for the run mode (RL policy or heuristic). 'heuristic' uses the
heuristic specified by --path_heuristic. 'random' selects random valid
actions.