class MatpowerReaderTest(ReaderTest): """ Defines a test case for the MATPOWER reader. """ def setUp(self): """ The test runner will execute this method prior to each test. """ self.reader = MATPOWERReader() def test_case6ww(self): """ Test parsing case6ww.m MATPOWER file. """ self.case = c = self.reader.read(MATPOWER_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case6ww_v1(self): """ Test parsing case6ww version 1 MATPOWER file. """ self.case = c = self.reader.read(MP_V1_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case30pwl(self): """ Test parsing case30pwl.m. """ case = self.case = self.reader.read(PWL_MP_DATA_FILE) self._validate_base(base_mva=100.0) self._validate_object_numbers(n_buses=30, n_branches=41, n_gen=6) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 21, 26, 22, 12]) self._validate_branch_connections(from_idxs=[ 0, 0, 1, 2, 1, 1, 3, 4, 5, 5, 5, 5, 8, 8, 3, 11, 11, 11, 11, 13, 15, 14, 17, 18, 9, 9, 9, 9, 20, 14, 21, 22, 23, 24, 24, 27, 26, 26, 28, 7, 5 ], to_idxs=[ 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 9, 10, 9, 11, 12, 13, 14, 15, 14, 16, 17, 18, 19, 19, 16, 20, 21, 21, 22, 23, 23, 24, 25, 26, 26, 28, 29, 29, 27, 27 ]) # Generator costs. generators = case.generators for g in generators: self.assertEqual(g.pcost_model, "pwl") self.assertEqual(len(g.p_cost), 4) self.assertEqual(g.p_cost[0], (0.0, 0.0)) self.assertEqual(generators[0].p_cost[1], (12.0, 144.0)) self.assertEqual(generators[4].p_cost[2], (36.0, 1296.0)) self.assertEqual(generators[5].p_cost[3], (60.0, 2832.0))
def setUp(self): """ The test runner will execute this method prior to each test. """ self.reader = MATPOWERReader()
def load_matpower(cls, fd): """ Returns a case from the given MATPOWER file object. """ from pylon.io import MATPOWERReader return MATPOWERReader().read(fd)
class MatpowerReaderTest(ReaderTest): """ Defines a test case for the MATPOWER reader. """ def setUp(self): """ The test runner will execute this method prior to each test. """ self.reader = MATPOWERReader() def test_case6ww(self): """ Test parsing case6ww.m MATPOWER file. """ self.case = c = self.reader.read(MATPOWER_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case6ww_v1(self): """ Test parsing case6ww version 1 MATPOWER file. """ self.case = c = self.reader.read(MP_V1_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case30pwl(self): """ Test parsing case30pwl.m. """ case = self.case = self.reader.read(PWL_MP_DATA_FILE) self._validate_base(base_mva=100.0) self._validate_object_numbers(n_buses=30, n_branches=41, n_gen=6) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 21, 26, 22, 12]) self._validate_branch_connections( from_idxs=[0, 0, 1, 2, 1, 1, 3, 4, 5, 5, 5, 5, 8, 8, 3, 11, 11, 11, 11, 13, 15, 14, 17, 18, 9, 9, 9, 9, 20, 14, 21, 22, 23, 24, 24, 27, 26, 26, 28, 7, 5], to_idxs=[1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 9, 10, 9, 11, 12, 13, 14, 15, 14, 16, 17, 18, 19, 19, 16, 20, 21, 21, 22, 23, 23, 24, 25, 26, 26, 28, 29, 29, 27, 27]) # Generator costs. generators = case.generators for g in generators: self.assertEqual(g.pcost_model, "pwl") self.assertEqual(len(g.p_cost), 4) self.assertEqual(g.p_cost[0], (0.0, 0.0)) self.assertEqual(generators[0].p_cost[1], (12.0, 144.0)) self.assertEqual(generators[4].p_cost[2], (36.0, 1296.0)) self.assertEqual(generators[5].p_cost[3], (60.0, 2832.0))
__author__ = 'Richard Lincoln, [email protected]' """ This example demonstrates how to use the state estimator by using data from Problem 6.7 in 'Computational Methods for Electric Power Systems' by Mariesa Crow.""" import sys from pylon import Case, StateEstimator, Measurement, PF, PT, PG, VM from pylon.io import MATPOWERReader from numpy import array DATA_FILE = "../pylon/test/data/case3bus_P6_6.m" # Load the case file. case = MATPOWERReader(case_format=1).read(DATA_FILE) # Specify the measurements. measurements = [ Measurement(case.branches[0], PF, 0.12), Measurement(case.branches[1], PF, 0.10), Measurement(case.branches[2], PT, -0.04), Measurement(case.buses[0], PG, 0.58), Measurement(case.buses[1], PG, 0.30), Measurement(case.buses[2], PG, 0.14), Measurement(case.buses[1], VM, 1.04), Measurement(case.buses[2], VM, 0.98) ] # Specify measurement variances (ordered: PF, PT, QF, QT, PG, QG, VM, VA). sigma = array([0.02, 0.02, 0.0, 0.0, 0.015, 0.0, 0.01, 0.0])
""" This example demonstrates how to use the state estimator by using data from Problem 6.7 in 'Computational Methods for Electric Power Systems' by Mariesa Crow.""" import sys from pylon import Case, StateEstimator, Measurement, PF, PT, PG, VM from pylon.io import MATPOWERReader from numpy import array DATA_FILE = "../pylon/test/data/case3bus_P6_6.m" # Load the case file. case = MATPOWERReader(case_format=1).read(DATA_FILE) # Specify the measurements. measurements = [ Measurement(case.branches[0], PF, 0.12), Measurement(case.branches[1], PF, 0.10), Measurement(case.branches[2], PT, -0.04), Measurement(case.buses[0], PG, 0.58), Measurement(case.buses[1], PG, 0.30), Measurement(case.buses[2], PG, 0.14), Measurement(case.buses[1], VM, 1.04), Measurement(case.buses[2], VM, 0.98) ] # Specify measurement variances (ordered: PF, PT, QF, QT, PG, QG, VM, VA). sigma = array([0.02, 0.02, 0.0, 0.0, 0.015, 0.0, 0.01, 0.0])