示例#1
0
def test_ac_solve(filename):
    net = Parser().parse(filename)
    mis1 = net.bus_P_mis
    NR().solve_ac(net)
    mis2 = net.bus_P_mis
    
    assert abs(mis1) >= abs(mis2)
示例#2
0
def test_tnep_solution():
    """
    Para verificar la solucion,
    La sobrecarga maxima que sea menor al 105%
    """
    # Get cases
    parser = Parser()
    cases = [data_path + i for i in ['test_3_max.raw', 'test_3_min.raw']]
    nets = list(map(parser.parse, cases))
    for net in nets:
        NR().solve_ac(net)

    # Get parameters
    parameters = Parameters()
    parameters.read_excel(data_path + 'test_3.xlsx')

    model = TNEP()
    nets_solved, resultado = model.solve(nets, parameters)

    for net in nets_solved:
        NR().solve_dc(net)

    dfs = list(map(Reports().branches, nets_solved))
    max_per_case = [max(df['Carga %']) for df in dfs]

    assert max(max_per_case) <= 105.0
示例#3
0
def test_dc_solve(filename):
    mis = lambda x: x.P
    net = Parser().parse(filename)
    mis1 = sum(map(mis, net.loads)) - sum(map(mis, net.generators))
    NR().solve_dc(net)
    mis2 = sum(map(mis, net.loads)) - sum(map(mis, net.generators))
    
    assert abs(mis1) >= abs(mis2)
示例#4
0
def test_parser_write(filename):
    parser = Parser()
    net1 = parser.parse(filename)

    parser.write('tmp.raw', net1)
    net2 = parser.parse('tmp.raw')

    pfnet.tests.compare_networks(TestCase(), net1, net2)
    os.remove('tmp.raw')
示例#5
0
    def __init__(self, parent=None):
        super().__init__(parent)        
        self.setupUi(self)

        # Botones
        self.agregarCaso.clicked.connect(self.addRAW)
        self.quitarCaso.clicked.connect(self.removeRAW)

        self.agregarCandidatos.clicked.connect(self.addExcel)
        self.Plantilla.clicked.connect(self.createTemplate)

        # Botones Optimizar
        self.Optimizar.clicked.connect(self.runTNEP)
        self.reporteTNEP.clicked.connect(self.TNEPReport)

        # Botones Output
        self.generarResultados.clicked.connect(self.writeCases)

        # Botones Generar archivos
        self.seleccionarOutput.clicked.connect(self.addExcelReport)
        self.exportarOutput.clicked.connect(self.exportarLastReport)

        # Ribbon - File
        self.actionSalir.triggered.connect(self.exit)

        # Ribbon - Flujos
        self.actionResolver_NR.triggered.connect(self.runPFNR)
        self.actionResolver_DC.triggered.connect(self.runPFDC)
        self.actionForzar_FS.triggered.connect(self.runPFFS)

        # Ribbon - Reportes
        self.actionBarras.triggered.connect(lambda: self.reports("buses"))
        self.actionGeneradores.triggered.connect(lambda: self.reports("generators"))
        self.actionLineas.triggered.connect(lambda: self.reports("branches"))

        # Scenarios y memoria para DF
        self.scenarios = {}
        self.solved_nets = {}
        self.tnepReport = None
        self.lastReport = []

        # Power System Optimization Back End
        self.parser = Parser()
        self.params = Parameters()
        self.report = Reports()
        self.NR = NR()
        self.TNEP = TNEP()
示例#6
0
def test_basic():
    """
    To debug the problem
    """
    # Get cases
    parser = Parser()
    cases = [data_path + i for i in ['test_3_max.raw', 'test_3_min.raw']]
    nets = list(map(parser.parse, cases))

    # Get parameters
    parameters = Parameters()
    parameters.read_excel(data_path + 'test_3.xlsx')

    model = TNEP()
    nets_solved, resultado = model.solve(nets, parameters)

    for net in nets_solved:
        assert len(net.branches) == 3
示例#7
0
def test_mendoza():
    """
    To debug the problem
    """
    # Get cases
    parser = Parser()
    cases = [data_path + 'Mendoza.raw']
    nets = list(map(parser.parse, cases))

    # Get parameters
    parameters = Parameters()
    parameters.read_excel(data_path + 'Mendoza.xlsx')

    # Solve model
    model = TNEP()
    nets_solved, results = model.solve(nets, parameters)

    assert (results['status'] == 1)
示例#8
0
def test_96():
    parser = Parser()
    cases = [data_path + f"RTS-96-{i}.raw" for i in range(1, 6)]
    nets = list(map(parser.parse, cases))

    [br for net in nets for br in net.branches if br.in_service == False]

    for net in nets:
        NR().solve_dc(net)

    dfs = list(map(Reports().branches, nets))

    # Get parameters
    parameters = Parameters()
    parameters.read_excel(data_path + 'RTS-96.xlsx')

    model = TNEP()
    model.options['ens'] = 1e6
    model.options['penalty'] = 5e2
    model.options['rate factor'] = 0.7
    nets_solved, resultado = model.solve(nets, parameters)

    assert resultado["br_builded"] == 4
示例#9
0
def test_basic_ens():
    """
    To debug the problem with ens
    """
    # Get cases
    parser = Parser()
    cases = [data_path + i for i in ['test_3_max.raw', 'test_3_min.raw']]
    nets = list(map(parser.parse, cases))

    # Get parameters
    parameters = Parameters()
    parameters.read_excel(data_path + 'test_3_ens.xlsx')

    model = TNEP()
    model.options['ens'] = 1e2
    nets_solved, resultado = model.solve(nets, parameters)

    for net in nets_solved:
        assert len(net.branches) == 2

    load_p = sum([sum(l.P for l in net.loads) for net in nets])
    load_p_solved = sum([sum(l.P for l in net.loads) for net in nets_solved])

    assert load_p - load_p_solved - resultado['r_dem'] <= 1e-2
示例#10
0
def test_parser_read(filename):
    net = Parser().parse(filename)

    assert isinstance(net, pfnet.Network)
示例#11
0
def test_parser_read_multiple():
    parser = Parser()
    nets = list(map(parser.parse, cases))

    assert len(nets) == len(cases)
示例#12
0
def test_bus_reports(filename):
    net = Parser().parse(filename)
    df = Reports().buses(net)

    assert len(net.buses) == len(df.axes[0])
示例#13
0
def test_gen_reports(filename):
    net = Parser().parse(filename)
    df = Reports().generators(net)

    assert len(net.generators) == len(df.axes[0])