示例#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))
示例#2
0
 def setUp(self):
     """ The test runner will execute this method prior to each test.
     """
     self.reader = MATPOWERReader()
示例#3
0
 def load_matpower(cls, fd):
     """ Returns a case from the given MATPOWER file object.
     """
     from pylon.io import MATPOWERReader
     return MATPOWERReader().read(fd)
示例#4
0
 def setUp(self):
     """ The test runner will execute this method prior to each test.
     """
     self.reader = MATPOWERReader()
示例#5
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))
示例#6
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])
示例#7
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])