コード例 #1
0
def simulate():
    xml_files = os.listdir('Data\\')
    corrupts = [
        'WHITBYCGS', 'STONE MILLS SF', 'DPNTMTLND', 'HARMON', 'KIPLING',
        'LITTLELONG', 'SILVERFALLS'
    ]
    gens_dict = {}
    sim_grid = Grid()
    for file in xml_files:
        addr = os.path.join('Data', file)
        #print(addr)

        tree = ET.parse(addr)
        root = tree.getroot()
        generators = root[1][1]
        for generator in generators:

            name = generator[0].text
            # Generator Name
            #print(generator[0].tag, generator[0].text)

            if name in corrupts:
                continue  #corrupted generator

            if name not in gens_dict:
                agen = Agent(name, generator[1].text)
                gens_dict[name] = agen
                sim_grid.add_vpp(agen)
            # Generator Fuel Type
            #print(generator[1].tag, generator[1].text)
            '''
            if len(generator[2][0]) < 2:
                # N/A generator
                #pass
                continue
            '''
            outputs = generator[2]

            outs = []
            # print("outputs")
            for sample in outputs:
                # Hour
                # print(sample[0].text)

                if len(sample) > 1:
                    # EnergyMW
                    # print(sample[1].text)

                    outs.append(sample[1].text)
                    gens_dict[name].add_out(sample[1].text)

                else:
                    print("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH")
                    print(generator[1].text, generator[0].text)

            capabilities = generator[3]
            forec = []
            # print("capabilities")
            for sample in capabilities:
                # Hour
                # print(sample[0].text)

                # EnergyMW
                # print(sample[1].text)

                forec.append(sample[1].text)
                gens_dict[name].add_forec(sample[1].text)

            capacities = generator[4]
            caps = []
            # print("capacities")
            for sample in capacities:
                # Hour
                # print(sample[0].text)

                # EnergyMW
                # print(sample[1].text)

                caps.append(sample[1].text)
                gens_dict[name].add_capac(sample[1].text)
            '''
            for i in range(24):
                if forec[i] != caps[i]:
                    print("!!!FFFFFFF!!!!")
                    break
            '''
        # print(len(root[1][1]))

    # print(len(gens_dict))
    # gen = gens_dict['ADELAIDE']
    # gen2 = gens_dict['AMARANTH']
    # gen3 = gens_dict['ARMOW']
    # print(gen.output(34))
    # print(gen2.output(34))
    # print(gen3.output(34))
    # gen2.merge_holon(gen3)
    # gen.merge_holon(gen2)
    # print(gen.output_sum(34))
    #
    #
    # grid = Grid()
    # grid.add_vpp(gen)
    # grid.pay_for_time(34)
    # print(gen.incomes[0] + gen2.incomes[0] + gen3.incomes[0])
    #
    # gen.remove_child(gen2)
    # gen.remove_child(gen3)
    # grid.add_vpp(gen2)
    # grid.add_vpp(gen3)
    # grid.pay_for_time(34)
    # print(gen.incomes[1] + gen2.incomes[1] + gen3.incomes[1])
    # ss = 0
    # for time in range(744):
    #     for vpp in sim_grid.vpps:
    #         ss += abs(vpp.output(time) - vpp.forecast(time))
    #         if time < 24:
    #             #print(vpp.name, time, vpp.output(time), vpp.forecast(time))
    #             pass
    #     if (time + 1) % 24 == 0:
    #         print(ss)
    #         ss = 0

    return sim_grid.run()