def testSolutionValuesCalledBeforeSolve(self): lp = LinearProgramContainer(self.dummy_profile) ng = GridSource(NG, 1e6, 1e6) lp.add_dispatchable_sources(ng) with self.assertRaises(RuntimeError): ng.get_solution_values() with self.assertRaises(RuntimeError): ng.get_nameplate_solution_value()
def testMaxPowerCheaperDispatchable(self): """Two Dispatchable Sources. Cheaper one fills up to max_power.""" lp = self.lp max_power = 1 ng1 = GridSource(NG, 1e6, 1e6, max_power=max_power) ng2 = GridSource(NG2, 2e6, 2e6) lp.add_dispatchable_sources(ng1, ng2) self.assertTrue(lp.solve()) max_power_profile = np.array([max_power, 0, 0, max_power]) remaining = self.demand_profile - max_power_profile npt.assert_almost_equal(ng1.get_solution_values(), max_power_profile) npt.assert_almost_equal(ng2.get_solution_values(), remaining) self.assertAlmostEqual(ng1.get_nameplate_solution_value(), max(max_power_profile)) self.assertAlmostEqual(ng2.get_nameplate_solution_value(), max(remaining))
def testMaxEnergyCheaperDispatchable(self): """Two Dispatchable Sources. Cheaper one fills up to max_energy.""" lp = self.lp max_energy = 1.0 ng1 = GridSource(NG, 1e6, 1e6, max_energy=max_energy) ng2 = GridSource(NG2, 2e6, 2e6) lp.add_dispatchable_sources(ng1, ng2) self.assertTrue(lp.solve()) demand_profiles = self.demand_profile demand_energy = sum(demand_profiles) max_energy_profile = (max_energy / demand_energy) * demand_profiles remaining = demand_profiles - max_energy_profile npt.assert_almost_equal(ng1.get_solution_values(), max_energy_profile) npt.assert_almost_equal(ng2.get_solution_values(), remaining) self.assertAlmostEqual(ng1.get_nameplate_solution_value(), max(max_energy_profile)) self.assertAlmostEqual(ng2.get_nameplate_solution_value(), max(remaining))
def testCheaperDispatchableOnly(self): """Two Dispatchable Sources. Cheaper one should fill demand.""" lp = self.lp ng1 = self.ng ng2 = GridSource(NG2, 2e6, 2e6) lp.add_dispatchable_sources(ng1, ng2) self.assertTrue(lp.solve()) npt.assert_almost_equal(ng1.get_solution_values(), self.demand_profile) npt.assert_almost_equal(ng2.get_solution_values(), np.zeros(4)) self.assertAlmostEqual(ng1.get_nameplate_solution_value(), max(self.demand_profile)) self.assertAlmostEqual(ng2.get_nameplate_solution_value(), 0.0)