def _parse_file(self, file): """ Parses the given file-like object. """ case = Case() file.seek(0) line = file.readline().split() if line[0] != "function": logger.error("Invalid data file header.") return case if line[1] != "mpc": self._is_struct = False base = "" else: base = "mpc." case.name = line[-1] for line in file: if line.startswith("%sbaseMVA" % base): case_data = line.rstrip(";\n").split() case.base_mva = float(case_data[-1]) elif line.startswith("%sbus" % base): self._parse_buses(case, file) elif line.startswith("%sgencost" % base): self._parse_gencost(case, file) elif line.startswith("%sgen" % base): self._parse_generators(case, file) elif line.startswith("%sbranch" % base): self._parse_branches(case, file) return case
def test_pwl(self): """ Test UDOPF solver with pwl auction case. """ case = Case.load(PWL_FILE) solver = UDOPF(case, dc=True) solution = solver.solve() generators = self.case.generators self.assertTrue(solution["converged"] == True) self.assertTrue(False not in [g.online for g in generators])
# self.store.add((branch_node, NS_PYLON["from_bus"], # self.bus_map[branch.from_bus])) for attr in BRANCH_ATTRS: self.store.add((branch_node, NS_PYLON[attr], Literal(getattr(branch, attr)))) for generator in self.case.generators: g_node = BNode() self.store.add((g_node, RDF.type, NS_PYLON["Generator"])) for attr in GENERATOR_ATTRS: self.store.add( (g_node, NS_PYLON[attr], Literal(getattr(generator, attr)))) file.write(self.store.serialize(format="pretty-xml", max_depth=3)) if __name__ == "__main__": import sys from pylon.case import Case, Bus, Branch from pylon.generator import Generator bus1 = Bus() bus2 = Bus() case = Case(buses=[bus1, bus2], branches=[Branch(bus1, bus2)], generators=[Generator(bus1)]) RDFWriter(case).write(sys.stdout) # EOF -------------------------------------------------------------------------
def setUp(self): """ The test runner will execute this method prior to each test. """ case = self.case = Case.load(DATA_FILE) self.solver = UDOPF(case, dc=True)