(self, microgrid, step_number=0)
| 397 | self.assertFalse(nonmodular.architecture['genset']) |
| 398 | |
| 399 | def check_step(self, microgrid, step_number=0): |
| 400 | |
| 401 | control = microgrid.get_empty_action() |
| 402 | self.assertEqual(len(control), 0) |
| 403 | |
| 404 | obs, reward, done, info = microgrid.step(control) |
| 405 | loss_load = self.load_ts[step_number]-self.pv_ts[step_number] |
| 406 | loss_load_cost = self.microgrid.modules.balancing[0].loss_load_cost * max(loss_load, 0) |
| 407 | |
| 408 | self.assertEqual(loss_load_cost, -1*reward) |
| 409 | |
| 410 | self.assertEqual(len(microgrid.log), step_number + 1) |
| 411 | self.assertTrue(all(module in microgrid.log for module in microgrid.modules.names())) |
| 412 | |
| 413 | load_met = min(self.load_ts[step_number], self.pv_ts[step_number]) |
| 414 | loss_load = max(self.load_ts[step_number] - load_met, 0) |
| 415 | pv_curtailment = max(self.pv_ts[step_number]-load_met, 0) |
| 416 | |
| 417 | # Checking the log populated correctly. |
| 418 | |
| 419 | log_row = microgrid.log.iloc[step_number] |
| 420 | log_entry = lambda module, entry: log_row.loc[pd.IndexSlice[module, :, entry]].sum() |
| 421 | |
| 422 | # Check that there are log entries for all modules of each name |
| 423 | self.assertEqual(log_row['load'].index.get_level_values(0).nunique(), self.n_loads) |
| 424 | |
| 425 | self.assertEqual(log_entry('load', 'load_current'), -1 * self.load_ts[step_number]) |
| 426 | self.assertEqual(log_entry('load', 'load_met'), self.load_ts[step_number]) |
| 427 | |
| 428 | if loss_load == 0: |
| 429 | self.assertEqual(log_entry('load', 'load_met'), load_met) |
| 430 | |
| 431 | self.assertEqual(log_entry('renewable', 'renewable_current'), self.pv_ts[step_number]) |
| 432 | self.assertEqual(log_entry('renewable', 'renewable_used'), load_met) |
| 433 | self.assertEqual(log_entry('renewable', 'curtailment'), pv_curtailment) |
| 434 | |
| 435 | self.assertEqual(log_entry('balancing', 'loss_load'), loss_load) |
| 436 | |
| 437 | self.assertEqual(log_entry('balance', 'reward'), -1 * loss_load_cost) |
| 438 | self.assertEqual(log_entry('balance', 'overall_provided_to_microgrid'), self.load_ts[step_number]) |
| 439 | self.assertEqual(log_entry('balance', 'overall_absorbed_from_microgrid'), self.load_ts[step_number]) |
| 440 | self.assertEqual(log_entry('balance', 'fixed_provided_to_microgrid'), 0.0) |
| 441 | self.assertEqual(log_entry('balance', 'fixed_absorbed_from_microgrid'), self.load_ts[step_number]) |
| 442 | self.assertEqual(log_entry('balance', 'controllable_absorbed_from_microgrid'), 0.0) |
| 443 | self.assertEqual(log_entry('balance', 'controllable_provided_to_microgrid'), 0.0) |
| 444 | |
| 445 | return microgrid |
| 446 | |
| 447 | def test_run_one_step(self): |
| 448 | microgrid = self.microgrid |
no test coverage detected