Source code for utils.run_scenarios

import sys

from utils.parallel_simulations import run_ppacket_sweep_to_csv


[docs] def main(): graph = sys.argv[1] if len(sys.argv) > 1 else "gml" topology = ( sys.argv[2] if len(sys.argv) > 2 else "configurations/network/basic/3_equal_paths.gml" ) coherence = float(sys.argv[3]) if len(sys.argv) > 3 else 0.020 deadline = float(sys.argv[4]) if len(sys.argv) > 4 else 2.0 ppacket_values = [0.9] arrival_rate_values = [1, 3, 5, 7, 9] inst_range_values = [300] # arrival_rate_values = [3] # inst_range_values = [50, 100, 150, 200] simulations_per_point = 20 base_kwargs = { "epr_range": (2, 2), "deadline_range": (deadline, deadline), "memory": 50, "p_swap": 0.5, "coherence": coherence, "time_slot_duration": 1e-4, "graph": graph, } if graph == "gml" and "3_equal_paths" in topology: base_kwargs["end_nodes"] = ["A", "B"] scenarios = [ { "id": 1, "name": "precomputed", "routing_strategy": "static", }, { "id": 2, "name": "proactive", "routing_strategy": "hybrid", "routing": "smallest", }, { "id": 3, "name": "hybrid", "routing_strategy": "rerouting", "routing": "smallest", }, { "id": 4, "name": "wc", "routing_strategy": "dynamic", }, { "id": 5, "name": "nwc", "routing_strategy": "nwc", }, ] for scenario in scenarios: routing_strategy = scenario["routing_strategy"] sim_kwargs = dict( base_kwargs, provisioning=routing_strategy == "rerouting", full_dynamic=routing_strategy in ("dynamic", "nwc", "fastest"), static_routing_mode=routing_strategy == "static", dynamic_mode=( routing_strategy if routing_strategy in ("nwc", "fastest") else "wc" ), ) if "routing" in scenario: sim_kwargs["routing"] = scenario["routing"] print(f"Running {scenario['name']}:") df, raw_csv_path = run_ppacket_sweep_to_csv( ppacket_values=ppacket_values, arrival_rate_values=arrival_rate_values, inst_range_values=inst_range_values, simulations_per_point=simulations_per_point, simulation_kwargs=sim_kwargs, config=topology, keep_seed_outputs=False, ) df.insert(0, "scenario", scenario["id"]) df.to_csv(raw_csv_path, index=False) print(f"Done: {scenario['name']} -> {raw_csv_path}")
if __name__ == "__main__": main()