Example #1
0
def main(args):
    generators, loads, _, times, _, data = parsedir()
    generators = [gen for gen in generators if gen.is_controllable]

    gen_data = data["generators"]
    if args["min"] == 0:
        args["min"] = 1.1 * gen_data.pmin.sum()

    if args["max"] == 0:
        args["max"] = 0.99 * gen_data.pmax.sum()

    load_values = np.arange(args["min"], args["max"], args["interval"])
    results = DataFrame(columns=["prices", "committed", "last_committed"],
                        index=load_values)

    committed_gen_names = Index([])

    for load_val in load_values:
        print(load_val)
        loads_times = make_loads_times(Pd=load_val)
        power_system, times = solve_problem(generators,
                                            do_reset_config=False,
                                            **loads_times)
        t = times[0]
        results.loc[load_val, "prices"] = power_system.buses[0].price(t)
        statuses = Series(
            dict([(gen.name, gen.status(t).value)
                  for gen in power_system.generators()]))

        results.loc[load_val, "committed"] = statuses.sum()
        results.loc[load_val, "last_committed"] = statuses[
            statuses == 1].index.difference(committed_gen_names)
        committed_gen_names = statuses[statuses == 1].index

    if (load_values[-1] == 0.99 *
            gen_data.pmax.sum()) and (statuses.sum() != len(generators)):
        print("warning: uncommitted generation:")
        print((gen_data.set_index("name").loc[statuses[statuses == 0].index]))

    results.to_csv(joindir(user_config.directory, "ed_sweep.csv"))

    if args["hide_units_committed"]:
        ax = results.prices.plot(drawstyle="steps")
    else:
        ax = results[["prices", "committed"]].plot(drawstyle="steps",
                                                   secondary_y=["committed"])
        ax.right_ax.set_ylabel("Units committed")

    ax.set_xlabel("System Load (MW)")
    ax.set_ylabel("Estimated System Price ($/MWh)")

    plt.savefig(joindir(user_config.directory, "ed_sweep.png"))
Example #2
0
def main(args):
    generators, loads, _, times, _, data = parsedir()
    generators = filter(lambda gen: gen.is_controllable, generators)

    gen_data = data['generators']
    if args['min'] == 0:
        args['min'] = 1.1 * gen_data.pmin.sum()

    if args['max'] == 0:
        args['max'] = 0.99 * gen_data.pmax.sum()

    load_values = np.arange(args['min'], args['max'], args['interval'])
    results = DataFrame(columns=['prices', 'committed', 'last_committed'],
                        index=load_values)

    committed_gen_names = Index([])

    for load_val in load_values:
        print load_val
        loads_times = make_loads_times(Pd=load_val)
        power_system, times = solve_problem(generators,
                                            do_reset_config=False,
                                            **loads_times)
        t = times[0]
        results.ix[load_val, 'prices'] = power_system.buses[0].price(t)
        statuses = Series(
            dict([(gen.name, gen.status(t).value)
                  for gen in power_system.generators()]))

        results.ix[load_val, 'committed'] = statuses.sum()
        results.ix[load_val, 'last_committed'] = \
            statuses[statuses == 1].index.diff(committed_gen_names)
        committed_gen_names = statuses[statuses == 1].index

    if (load_values[-1] == 0.99 * gen_data.pmax.sum()) and \
        (statuses.sum() != len(generators)):
        print('warning: uncommitted generation:')
        print(gen_data.set_index('name').ix[statuses[statuses == 0].index])

    results.to_csv(joindir(user_config.directory, 'ed_sweep.csv'))

    if args['hide_units_committed']:
        ax = results.prices.plot(drawstyle='steps')
    else:
        ax = results[['prices', 'committed']].plot(drawstyle='steps',
                                                   secondary_y=['committed'])
        ax.right_ax.set_ylabel('Units committed')

    ax.set_xlabel('System Load (MW)')
    ax.set_ylabel('Estimated System Price ($/MWh)')

    plt.savefig(joindir(user_config.directory, 'ed_sweep.png'))
Example #3
0
def main(args):
    generators, loads, _, times, _, data = parsedir()
    generators = filter(lambda gen: gen.is_controllable, generators)

    gen_data = data['generators']
    if args['min'] == 0:
        args['min'] = 1.1 * gen_data.pmin.sum()

    if args['max'] == 0:
        args['max'] = 0.99 * gen_data.pmax.sum()

    load_values = np.arange(args['min'], args['max'], args['interval'])
    results = DataFrame(columns=['prices', 'committed', 'last_committed'], index=load_values)

    committed_gen_names = Index([])

    for load_val in load_values:
        print load_val
        loads_times = make_loads_times(Pd=load_val)
        power_system, times = solve_problem(generators,
                                            do_reset_config=False, **loads_times)
        t = times[0]
        results.ix[load_val, 'prices'] = power_system.buses[0].price(t)
        statuses = Series(dict([(gen.name, gen.status(t).value)
                                for gen in power_system.generators()]))

        results.ix[load_val, 'committed'] = statuses.sum()
        results.ix[load_val, 'last_committed'] = \
            statuses[statuses == 1].index.difference(committed_gen_names)
        committed_gen_names = statuses[statuses == 1].index

    if (load_values[-1] == 0.99 * gen_data.pmax.sum()) and \
            (statuses.sum() != len(generators)):
        print('warning: uncommitted generation:')
        print(gen_data.set_index('name').ix[statuses[statuses == 0].index])

    results.to_csv(joindir(user_config.directory, 'ed_sweep.csv'))

    if args['hide_units_committed']:
        ax = results.prices.plot(drawstyle='steps')
    else:
        ax = results[['prices', 'committed']].plot(drawstyle='steps', secondary_y=['committed'])
        ax.right_ax.set_ylabel('Units committed')

    ax.set_xlabel('System Load (MW)')
    ax.set_ylabel('Estimated System Price ($/MWh)')

    plt.savefig(joindir(user_config.directory, 'ed_sweep.png'))
Example #4
0
def check_pmin():
    user_config.directory = os.path.join(basedir, 'uc')
    generators, loads, _, times, _, data = parsedir()

    assert(data['generators'].pmin.tolist() ==
           map(lambda gen: gen.pmin, generators))
Example #5
0
def check_pmin():
    user_config.directory = os.path.join(basedir, 'uc')
    generators, loads, _, times, _, data = parsedir()

    assert(data['generators'].pmin.tolist() == \
        map(lambda gen: gen.pmin, generators))