From d5d94ca3e5bd00f431584c2888a6637a387779f6 Mon Sep 17 00:00:00 2001 From: Youngjoon Lee <5462944+youngjoon-lee@users.noreply.github.com> Date: Thu, 8 Aug 2024 15:14:30 +0900 Subject: [PATCH] add session 2.1 --- mixnet/cmd/queuesim.py | 2 +- mixnet/cmd/queuesim_merge.py | 2 +- mixnet/cmd/queuesim_plot.py | 2 +- mixnet/queuesim/paramset.py | 71 ++++++++++++++++++++++++++++++++ mixnet/queuesim/test_paramset.py | 2 + 5 files changed, 76 insertions(+), 3 deletions(-) diff --git a/mixnet/cmd/queuesim.py b/mixnet/cmd/queuesim.py index 98a8728..a6bfd4c 100644 --- a/mixnet/cmd/queuesim.py +++ b/mixnet/cmd/queuesim.py @@ -11,7 +11,7 @@ if __name__ == "__main__": ) parser.add_argument("--exp-id", type=int, required=True, help="Experiment ID (>=1)") parser.add_argument( - "--session-id", type=int, required=True, help="Session ID (>=1)" + "--session-id", type=float, required=True, help="Session ID (>=1)" ) parser.add_argument( "--queue-type", diff --git a/mixnet/cmd/queuesim_merge.py b/mixnet/cmd/queuesim_merge.py index 6e21fc7..6391a62 100644 --- a/mixnet/cmd/queuesim_merge.py +++ b/mixnet/cmd/queuesim_merge.py @@ -11,7 +11,7 @@ if __name__ == "__main__": ) parser.add_argument("--exp-id", type=int, required=True, help="Experiment ID (>=1)") parser.add_argument( - "--session-id", type=int, required=True, help="Session ID (>=1)" + "--session-id", type=float, required=True, help="Session ID (>=1)" ) parser.add_argument("--indir", type=str, required=True, help="input directory") parser.add_argument( diff --git a/mixnet/cmd/queuesim_plot.py b/mixnet/cmd/queuesim_plot.py index d727a04..9d0acd0 100644 --- a/mixnet/cmd/queuesim_plot.py +++ b/mixnet/cmd/queuesim_plot.py @@ -12,7 +12,7 @@ if __name__ == "__main__": ) parser.add_argument("--exp-id", type=int, required=True, help="Experiment ID (>=1)") parser.add_argument( - "--session-id", type=int, required=True, help="Session ID (>=1)" + "--session-id", type=float, required=True, help="Session ID (>=1)" ) parser.add_argument( "--csv-path", type=str, required=True, help="input CSV file path" diff --git a/mixnet/queuesim/paramset.py b/mixnet/queuesim/paramset.py index 707bc6b..00a9925 100644 --- a/mixnet/queuesim/paramset.py +++ b/mixnet/queuesim/paramset.py @@ -18,6 +18,7 @@ class ExperimentID(Enum): class SessionID(Enum): SESSION_1 = 1 SESSION_2 = 2 + SESSION_2_1 = 2.1 EXPERIMENT_TITLES: dict[ExperimentID, str] = { @@ -57,6 +58,8 @@ def build_parameter_sets( return __build_session_1_parameter_sets(exp_id, queue_type) case SessionID.SESSION_2: return __build_session_2_parameter_sets(exp_id, queue_type) + case SessionID.SESSION_2_1: + return __build_session_2_1_parameter_sets(exp_id, queue_type) case _: raise ValueError(f"Unknown session ID: {session_id}") @@ -247,3 +250,71 @@ def __build_session_2_parameter_sets( ) return sets + + +def __build_session_2_1_parameter_sets( + exp_id: ExperimentID, queue_type: TemporalMixType +) -> list[ParameterSet]: + sets: list[ParameterSet] = [] + + for num_nodes in [20, 200, 2000]: + peering_degree_list = [4, 6, 8] + min_queue_size_list = [10, 50, 100] + transmission_rate_list = [1, 10, 100] + num_sent_msgs = 1000 + num_senders_list = [num_nodes // 10, num_nodes // 5, num_nodes // 2] + num_iterations = 20 + + match exp_id: + case ExperimentID.EXPERIMENT_1: + for ( + peering_degree, + min_queue_size, + transmission_rate, + ) in itertools.product( + peering_degree_list, + min_queue_size_list, + transmission_rate_list, + ): + sets.append( + ParameterSet( + num_nodes=num_nodes, + peering_degree=peering_degree, + min_queue_size=min_queue_size, + transmission_rate=transmission_rate, + num_sent_msgs=1, + num_senders=1, + queue_type=queue_type, + num_iterations=num_iterations, + ) + ) + case ExperimentID.EXPERIMENT_4: + for ( + peering_degree, + min_queue_size, + transmission_rate, + num_senders, + ) in itertools.product( + peering_degree_list, + min_queue_size_list, + transmission_rate_list, + num_senders_list, + ): + sets.append( + ParameterSet( + num_nodes=num_nodes, + peering_degree=peering_degree, + min_queue_size=min_queue_size, + transmission_rate=transmission_rate, + num_sent_msgs=num_sent_msgs, + num_senders=num_senders, + queue_type=queue_type, + num_iterations=num_iterations, + ) + ) + case _: + raise NotImplementedError( + f"Experiment {exp_id} not implemented for session 2" + ) + + return sets diff --git a/mixnet/queuesim/test_paramset.py b/mixnet/queuesim/test_paramset.py index bb5bf8c..a655525 100644 --- a/mixnet/queuesim/test_paramset.py +++ b/mixnet/queuesim/test_paramset.py @@ -48,6 +48,8 @@ class TestParameterSet(TestCase): (ExperimentID.EXPERIMENT_4, SessionID.SESSION_1): pow(3, 6), (ExperimentID.EXPERIMENT_1, SessionID.SESSION_2): pow(3, 4), (ExperimentID.EXPERIMENT_4, SessionID.SESSION_2): pow(3, 6), + (ExperimentID.EXPERIMENT_1, SessionID.SESSION_2_1): pow(3, 4), + (ExperimentID.EXPERIMENT_4, SessionID.SESSION_2_1): pow(3, 5), } for queue_type in TemporalMixType: for (exp_id, session_id), expected_cnt in cases.items():