From d061bfa9110513376b8b461453356522e063d9ad Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 10:53:41 -0700 Subject: [PATCH 1/7] change renewable to fixed module --- src/pymgrid/modules/renewable_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pymgrid/modules/renewable_module.py b/src/pymgrid/modules/renewable_module.py index 5e657f9d..addab37f 100644 --- a/src/pymgrid/modules/renewable_module.py +++ b/src/pymgrid/modules/renewable_module.py @@ -51,7 +51,7 @@ class RenewableModule(BaseTimeSeriesMicrogridModule): If False, actions are clipped to the limit possible. """ - module_type = ('renewable', 'flex') + module_type = ('renewable', 'fixed') yaml_tag = u"!RenewableModule" yaml_loader = yaml.SafeLoader yaml_dumper = yaml.SafeDumper From 7e58ef30b1cb7ad887c0a0b9988124344b28ee61 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 10:53:50 -0700 Subject: [PATCH 2/7] update renewable module update --- src/pymgrid/modules/renewable_module.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pymgrid/modules/renewable_module.py b/src/pymgrid/modules/renewable_module.py index addab37f..7e870dcb 100644 --- a/src/pymgrid/modules/renewable_module.py +++ b/src/pymgrid/modules/renewable_module.py @@ -87,10 +87,8 @@ def __init__(self, def update(self, external_energy_change, as_source=False, as_sink=False): assert as_source, f'Class {self.__class__.__name__} can only be used as a source.' - assert external_energy_change <= self.current_renewable, f'Cannot provide more than {self.current_renewable}' - info = {'provided_energy': external_energy_change, - 'curtailment': self.current_renewable-external_energy_change} + info = {'provided_energy': self.current_renewable} return 0.0, self._done(), info From b60af450bc92023e68a213ff8485b344a6719013 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 10:54:15 -0700 Subject: [PATCH 3/7] fix check_step in tests --- tests/microgrid/test_microgrid.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/microgrid/test_microgrid.py b/tests/microgrid/test_microgrid.py index b7081e84..88300f32 100644 --- a/tests/microgrid/test_microgrid.py +++ b/tests/microgrid/test_microgrid.py @@ -401,7 +401,6 @@ def check_step(self, microgrid, step_number=0): load_met = min(self.load_ts[step_number], self.pv_ts[step_number]) loss_load = max(self.load_ts[step_number] - load_met, 0) - pv_curtailment = max(self.pv_ts[step_number]-load_met, 0) # Checking the log populated correctly. @@ -419,14 +418,13 @@ def check_step(self, microgrid, step_number=0): self.assertEqual(log_entry('renewable', 'renewable_current'), self.pv_ts[step_number]) self.assertEqual(log_entry('renewable', 'renewable_used'), load_met) - self.assertEqual(log_entry('renewable', 'curtailment'), pv_curtailment) self.assertEqual(log_entry('balancing', 'loss_load'), loss_load) self.assertEqual(log_entry('balance', 'reward'), -1 * loss_load_cost) self.assertEqual(log_entry('balance', 'overall_provided_to_microgrid'), self.load_ts[step_number]) self.assertEqual(log_entry('balance', 'overall_absorbed_from_microgrid'), self.load_ts[step_number]) - self.assertEqual(log_entry('balance', 'fixed_provided_to_microgrid'), 0.0) + self.assertEqual(log_entry('balance', 'fixed_provided_to_microgrid'), self.pv_ts[step_number]) self.assertEqual(log_entry('balance', 'fixed_absorbed_from_microgrid'), self.load_ts[step_number]) self.assertEqual(log_entry('balance', 'controllable_absorbed_from_microgrid'), 0.0) self.assertEqual(log_entry('balance', 'controllable_provided_to_microgrid'), 0.0) From 1515d79311ac66d25ffbc10e4f86d92ecdf2cd38 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 11:17:13 -0700 Subject: [PATCH 4/7] add _get_bounds to renewable module --- src/pymgrid/modules/renewable_module.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pymgrid/modules/renewable_module.py b/src/pymgrid/modules/renewable_module.py index 7e870dcb..a01d1f0f 100644 --- a/src/pymgrid/modules/renewable_module.py +++ b/src/pymgrid/modules/renewable_module.py @@ -85,6 +85,10 @@ def __init__(self, self.name = ('renewable', None) + def _get_bounds(self): + _min_obs, _max_obs, _, _ = super()._get_bounds() + return _min_obs, _max_obs, np.array([]), np.array([]) + def update(self, external_energy_change, as_source=False, as_sink=False): assert as_source, f'Class {self.__class__.__name__} can only be used as a source.' From 80c83882607017e8ae51d9c4e8f0af6a112fcdf6 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 11:17:25 -0700 Subject: [PATCH 5/7] fix failing test_sample_action_with_flex --- tests/microgrid/test_microgrid.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/microgrid/test_microgrid.py b/tests/microgrid/test_microgrid.py index 88300f32..0fa8fb17 100644 --- a/tests/microgrid/test_microgrid.py +++ b/tests/microgrid/test_microgrid.py @@ -352,10 +352,8 @@ def test_sample_action(self): def test_sample_action_with_flex(self): sampled_action = self.microgrid.sample_action(sample_flex_modules=True) - self.assertEqual(len(sampled_action), 2) - self.assertIn('renewable', sampled_action) + self.assertEqual(len(sampled_action), 1) self.assertIn('balancing', sampled_action) - self.assertEqual(len(sampled_action['renewable']), self.n_pvs) def test_state_dict(self): sd = self.microgrid.state_dict() From 45fc605b8464ef70e4456d047b63fe435b878061 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 11:45:00 -0700 Subject: [PATCH 6/7] whitespace --- src/pymgrid/microgrid/microgrid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pymgrid/microgrid/microgrid.py b/src/pymgrid/microgrid/microgrid.py index fc2d132d..a9629388 100644 --- a/src/pymgrid/microgrid/microgrid.py +++ b/src/pymgrid/microgrid/microgrid.py @@ -298,7 +298,7 @@ def run(self, control, normalized=True): for module in modules: if not module.is_sink: sink_amt = 0.0 - elif module.max_consumption < energy_excess: # module cannot dissipate all excess energy + elif module.max_consumption < energy_excess: # module cannot dissipate all excess energy sink_amt = -1.0*module.max_consumption else: sink_amt = -1.0 * energy_excess From 54defb8b909fcc1837f35aeb93bff2011ec878c0 Mon Sep 17 00:00:00 2001 From: ahalev Date: Thu, 18 May 2023 11:45:09 -0700 Subject: [PATCH 7/7] check for overgeneration --- tests/microgrid/test_microgrid.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/microgrid/test_microgrid.py b/tests/microgrid/test_microgrid.py index 0fa8fb17..3b168e4c 100644 --- a/tests/microgrid/test_microgrid.py +++ b/tests/microgrid/test_microgrid.py @@ -390,9 +390,12 @@ def check_step(self, microgrid, step_number=0): obs, reward, done, info = microgrid.run(control) loss_load = self.load_ts[step_number]-self.pv_ts[step_number] + overgeneration = -1 * loss_load + loss_load_cost = self.microgrid.modules.balancing[0].loss_load_cost * max(loss_load, 0) + overgeneration_cost = self.microgrid.modules.balancing[0].overgeneration_cost * max(overgeneration, 0) - self.assertEqual(loss_load_cost, -1*reward) + self.assertEqual(loss_load_cost + overgeneration_cost, -1*reward) self.assertEqual(len(microgrid.log), step_number + 1) self.assertTrue(all(module in microgrid.log for module in microgrid.modules.names()))