From 298bfca28320e8288470dc91cb0fe3a00bc00c5c Mon Sep 17 00:00:00 2001 From: Stefan Schneider Date: Wed, 16 Dec 2020 12:01:21 +0100 Subject: [PATCH 1/5] update install instructions --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index d24d570ef..b0bb71440 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,7 @@ 'pyyaml>=5.1', 'numpy==1.16.4', 'common-utils', + 'cython', # otherwise sklearn fails 'sklearn', 'pandas', 'tensorflow==1.14.0', From fe41639f7150908242da1eb8b7714ce681dd9e4b Mon Sep 17 00:00:00 2001 From: Stefan Schneider Date: Wed, 16 Dec 2020 12:40:38 +0100 Subject: [PATCH 2/5] update requirements --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b0bb71440..3a636a077 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ 'networkx==2.4', 'geopy', 'pyyaml>=5.1', - 'numpy==1.16.4', + 'numpy>=1.16.5', 'common-utils', 'cython', # otherwise sklearn fails 'sklearn', From 9720bd50769da614bf2560f06759f15b6278a15a Mon Sep 17 00:00:00 2001 From: Stefan Schneider Date: Mon, 4 Jan 2021 12:44:23 +0100 Subject: [PATCH 3/5] random flow scheduling instead of RR-based LB --- src/coordsim/decision_maker/default_decision_maker.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/coordsim/decision_maker/default_decision_maker.py b/src/coordsim/decision_maker/default_decision_maker.py index 05576d812..fd9b25128 100644 --- a/src/coordsim/decision_maker/default_decision_maker.py +++ b/src/coordsim/decision_maker/default_decision_maker.py @@ -39,6 +39,9 @@ def decide_next_node(self, flow: Flow): dest_nodes = [sch_sf for sch_sf in local_schedule.keys()] dest_prob = [prob for name, prob in local_schedule.items()] try: + # TODO: test random weighted scheduling instead of RR-based scheduling below + return np.random.choice(dest_nodes, p=dest_prob) + # select next node based on weighted RR according to the scheduling weights/probabilities # get current flow counts per possible destination node flow_counts = self.params.metrics.metrics['run_flow_counts'][flow.current_node_id][flow.sfc][sf] From 6fd70651fe69a5ffdf565493b14a76ca21ac11e5 Mon Sep 17 00:00:00 2001 From: Stefan Schneider Date: Tue, 5 Jan 2021 17:04:38 +0100 Subject: [PATCH 4/5] back to normal RR-based scheduling --- src/coordsim/decision_maker/default_decision_maker.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/coordsim/decision_maker/default_decision_maker.py b/src/coordsim/decision_maker/default_decision_maker.py index fd9b25128..05576d812 100644 --- a/src/coordsim/decision_maker/default_decision_maker.py +++ b/src/coordsim/decision_maker/default_decision_maker.py @@ -39,9 +39,6 @@ def decide_next_node(self, flow: Flow): dest_nodes = [sch_sf for sch_sf in local_schedule.keys()] dest_prob = [prob for name, prob in local_schedule.items()] try: - # TODO: test random weighted scheduling instead of RR-based scheduling below - return np.random.choice(dest_nodes, p=dest_prob) - # select next node based on weighted RR according to the scheduling weights/probabilities # get current flow counts per possible destination node flow_counts = self.params.metrics.metrics['run_flow_counts'][flow.current_node_id][flow.sfc][sf] From 3f90d94d1a35fa622b9257df8d3e348f74ce46ee Mon Sep 17 00:00:00 2001 From: Stefan Schneider Date: Wed, 6 Jan 2021 09:26:00 +0100 Subject: [PATCH 5/5] fix metric writing: reset run metrics AFTER writing them --- src/coordsim/writer/writer.py | 2 ++ src/siminterface/simulator.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/coordsim/writer/writer.py b/src/coordsim/writer/writer.py index b84770230..bf5818e66 100644 --- a/src/coordsim/writer/writer.py +++ b/src/coordsim/writer/writer.py @@ -218,6 +218,8 @@ def write_network_state(self): placement_output.append(placement_output_row) self.placement_writer.writerows(placement_output) + # reset metrics for run + self.params.metrics.reset_run_metrics() # Wait a timeout then write the states yield self.env.timeout(self.params.run_duration) yield self.env.process(self.write_network_state()) diff --git a/src/siminterface/simulator.py b/src/siminterface/simulator.py index 4bb6cba81..f9674717c 100644 --- a/src/siminterface/simulator.py +++ b/src/siminterface/simulator.py @@ -185,8 +185,8 @@ def apply(self, actions): # Set it in the params of the instantiated simulator object. # self.simulator.params.schedule = actions.scheduling - # reset metrics for steps - self.params.metrics.reset_run_metrics() + # reset metrics for steps; now done in result writer + # self.params.metrics.reset_run_metrics() # Run the simulation again with the new params for the set duration. # Due to SimPy restraints, we multiply the duration by the run times because SimPy does not reset when run()