Quickstart

This example runs a small CPU simulation with a fast heuristic solver. It is a better first check than virne alone, because the default configuration trains an RL solver and processes 1,000 VN requests.

Run a Small Experiment

With the environment containing Virne active, run this from any writable directory:

virne \
  solver.solver_name=nrm_rank \
  v_sim_setting.num_v_nets=10 \
  training.use_cuda=false \
  'logger.backends=[console]'

Virne generates a physical network and ten virtual requests, solves each arrival event, and prints a summary. A successful run ends with:

--------------------   Complete   --------------------

The progress bar also shows the running acceptance rate (ac), revenue-to-cost ratio (r2c), and number of in-service requests.

Inspect the Results

Hydra places the run under results/. The most useful files are:

results/virne/nrm_rank/<run-id>/config.yaml
results/virne/nrm_rank/<run-id>/summary.csv
results/virne/nrm_rank/<run-id>/records/*.csv

config.yaml is the fully resolved experiment configuration, summary.csv contains one row of run-level metrics, and records/*.csv contains per-event details. See Metrics for the field definitions.

Override the Configuration

Virne uses Hydra, so any existing configuration value can be overridden with key=value. Prefix a new key with +.

# Select another registered solver
virne solver.solver_name=random_rank

# Load a physical topology from a GML file
virne +p_net_setting.topology.file_path=/path/to/Geant.gml

# Use the offline network system
virne system.if_offline_system=true

# Preview the resolved configuration without running a simulation
virne --cfg job

Use the solver registry for valid solver names and simulation scenarios for the canonical PN and VN settings. Source checkouts retain python main.py as a compatibility alias for the virne command.