示例#1
0
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))