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 testDispatchableOnly(self): """One Dispatchable Source should fill demand.""" # Test over a few different profiles offset_sin_wave = np.sin(np.linspace(0, 2 * math.pi, 4)) + 2 profiles = [self.demand_profile, np.zeros(4), np.ones(4), np.arange(4) % 2, # 0,1,0,1 offset_sin_wave] for profile in profiles: lp = LinearProgramContainer(pd.DataFrame({DEMAND: profile})) lp.add_demands(GridDemand(DEMAND)) ng = self.ng lp.add_dispatchable_sources(ng) self.assertTrue(lp.solve()) npt.assert_almost_equal(ng.get_solution_values(), profile) self.assertAlmostEqual(ng.get_nameplate_solution_value(), max(profile))
def testAddDispatchableSourceWithProfile(self): """Ensure Dispatchable Source with profile gets error.""" with self.assertRaises(KeyError): lp = LinearProgramContainer(pd.DataFrame({NG: np.ones(4)})) lp.add_dispatchable_sources(GridSource(NG, 1e6, 1e6))