예제 #1
0
def static_mreg_svr(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]
    reg = linear_model.LinearRegression()

    gamma_range = [0.0001, 0.000001]
    C_range = [2 ** i for i in range(1, 4, 1)]
    regargs = {
        "epsilon" : 0.1,
        "cv_method" : KFold,
        "cv_args" : {"n_folds" : 10},
        "kernel" : 'rbf',
        "tuned_parameters" : [{
            'kernel': [kernel],
            'C': C_range,
            'gamma': gamma_range}]}

    iargs = {'method':'mreg',
             'timestep': timestep,
             'neighbor_series': nseries,
             'reg' : reg,
             'regargs' : regargs}

    return iargs
def static_forwardcopy(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    return {'method': 'forwardcopy', 'timestep': timestep}, nseries
예제 #3
0
def static_linear(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    return {"method": "linear", "timestep": timestep}, nseries
예제 #4
0
def static_forwardcopy(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    return {'method':'forwardcopy','timestep': timestep}, nseries
예제 #5
0
def static_mreg_lin(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    iargs = {"method": "mreg", "timestep": timestep, "neighbor_series": nseries, "reg": "linear_model"}
    return iargs, nseries
예제 #6
0
def static_mreg_lin(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    iargs = {'method':'mreg',
             'timestep': timestep,
             'neighbor_series': nseries,
             'reg' : 'linear_model'}
    return iargs
예제 #7
0
def static_mreg_knn(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    iargs = {'method':'mreg',
             'timestep': timestep,
             'neighbor_series': nseries,
             'reg' : 'knn',
             'regargs' : {'kfold': 5, 'n' : [5,10,20,50,100], 'variant' : 'uniform'}}

    return iargs
def experiment(method, windpark, windpark_test, damaged, rate):
    args, nseries = argfuncs[method](windpark)
    reconstructed = interpolate(damaged, **args)

    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    turbines = windpark.get_turbines()

    for t in range(len(turbines)):
        turbines[t].add_measurements(\
            repair_nrel(turbines[t].get_measurements()[:10000]))

    # this is the target turbine, use the reconstructed here.
    turbines[-1].add_measurements(reconstructed)

    feature_window, horizon = 3, 3

    mapping = PowerMapping()
    # with damaged
    X = mapping.get_features_park(windpark, feature_window, horizon)
    Y = mapping.get_labels_turbine(target, feature_window, horizon)

    train_to = int(math.floor(len(X)))
    train_step, test_step = 1, 1

    reg = linear_model.LinearRegression()
    reg = reg.fit(X[0:train_to:train_step], Y[0:train_to:train_step])

    # USE THE 2005 YEAR FOR TESTING, WITHOUT DAMAGE
    # predict on second year without damage

    turbines = windpark_test.get_turbines()
    for t in turbines:
        t.add_measurements(repair_nrel(t.get_measurements()[:10000]))
    target_test = windpark_test.get_target()

    XT = mapping.get_features_park(windpark_test, feature_window, horizon)
    test_to = int(math.floor(len(XT)))

    YT = mapping.get_labels_turbine(target_test, feature_window,
                                    horizon)[:test_to]
    y_hat = reg.predict(XT[:test_to])

    mse_y_hat = 0
    for i in range(0, len(y_hat)):
        y = YT[i]
        mse_y_hat += (y_hat[i] - y)**2

    mse_y_hat /= float(len(y_hat))

    return mse_y_hat
예제 #9
0
def static_topologic(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    tloc = (target.longitude, target.latitude)
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]
    nlocs = [(t.longitude, t.latitude) for t in neighbors]

    iargs = {'method' : 'topologic',
             'timestep': timestep,
             'location': tloc,
             'neighbor_series': nseries,
             'neighbor_locations': nlocs}
    return iargs
예제 #10
0
def experiment(method, windpark, windpark_test, damaged, rate):
    args, nseries = argfuncs[method](windpark)
    reconstructed = interpolate(damaged,  **args)

    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    turbines = windpark.get_turbines()

    for t in range(len(turbines)):
        turbines[t].add_measurements(\
            repair_nrel(turbines[t].get_measurements()[:10000]))

    # this is the target turbine, use the reconstructed here.
    turbines[-1].add_measurements(reconstructed)

    feature_window, horizon = 3,3

    mapping = PowerMapping()
    # with damaged
    X = mapping.get_features_park(windpark, feature_window, horizon)
    Y = mapping.get_labels_turbine(target, feature_window, horizon)

    train_to = int(math.floor(len(X)))
    train_step, test_step = 1, 1

    reg = linear_model.LinearRegression()
    reg = reg.fit(X[0:train_to:train_step], Y[0:train_to:train_step])

    # USE THE 2005 YEAR FOR TESTING, WITHOUT DAMAGE
    # predict on second year without damage

    turbines = windpark_test.get_turbines()
    for t in turbines:
        t.add_measurements(repair_nrel(t.get_measurements()[:10000]))
    target_test = windpark_test.get_target()

    XT = mapping.get_features_park(windpark_test, feature_window, horizon)
    test_to = int(math.floor(len(XT)))

    YT = mapping.get_labels_turbine(target_test, feature_window, horizon)[:test_to]
    y_hat = reg.predict(XT[:test_to])

    mse_y_hat = 0
    for i in range(0, len(y_hat)):
        y = YT[i]
        mse_y_hat += (y_hat[i] - y) ** 2

    mse_y_hat /= float(len(y_hat))

    return mse_y_hat
예제 #11
0
def static_mreg_knn(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]

    iargs = {
        "method": "mreg",
        "timestep": timestep,
        "neighbor_series": nseries,
        "reg": "knn",
        "regargs": {"kfold": 5, "n": [5, 10, 20, 50, 100], "variant": "uniform"},
    }

    return iargs, nseries
예제 #12
0
def static_topologic(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    tloc = (target.longitude, target.latitude)
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]
    nlocs = [(t.longitude, t.latitude) for t in neighbors]

    iargs = {
        "method": "topologic",
        "timestep": timestep,
        "location": tloc,
        "neighbor_series": nseries,
        "neighbor_locations": nlocs,
    }
    return iargs
예제 #13
0
def static_mreg_svr(windpark):
    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])
    neighbors = windpark.get_turbines()[:-1]
    nseries = [repair_nrel(t.get_measurements()[:10000]) for t in neighbors]
    reg = linear_model.LinearRegression()

    gamma_range = [0.0001, 0.000001]
    C_range = [2 ** i for i in range(1, 4, 1)]
    regargs = {
        "epsilon": 0.1,
        "cv_method": KFold,
        "cv_args": {"n_folds": 10},
        "kernel": "rbf",
        "tuned_parameters": [{"kernel": [kernel], "C": C_range, "gamma": gamma_range}],
    }

    iargs = {"method": "mreg", "timestep": timestep, "neighbor_series": nseries, "reg": reg, "regargs": regargs}

    return iargs
    mse_y_hat /= float(len(y_hat))

    return mse_y_hat


# generating destroyed measurements which are constant over all
# methods

data = []

for park in parks.keys():
    windpark = NREL().get_windpark_nearest(parks[park], 5, 2004)
    windpark_test = NREL().get_windpark_nearest(parks[park], 5, 2005)

    target = windpark.get_target()
    measurements = repair_nrel(target.get_measurements()[:10000])

    for i in range(2):

        damaged_series = {}
        de = lambda rate: (rate, (destroy(
            measurements, method=destroy_method, percentage=rate)[0]))

        dseries = map(de, rates)
        for rate, series in dseries:
            damaged_series[rate] = series

        # with reconstruction

        def run(pars):
            method, rate = pars
예제 #15
0
def experiment(method, windpark, damaged, rate):
    args = argfuncs[method](windpark)
    reconstructed = interpolate(damaged,  **args)

    error, var, std = scores(measurements, reconstructed)
    return error, var, std

# generating destroyed measurements which are constant over all
# methods

data = []

park = 'reno'
windpark = NREL().get_windpark_nearest(parks[park], 5, 2004)
target = windpark.get_target()
measurements = repair_nrel(target.get_measurements()[:10000])

for i in range(2):
    damaged_series = {}
    de = lambda rate : (rate, (destroy(measurements, method=destroy_method, percentage=rate)[0]))

    dseries = map(de, rates)
    for rate, series in dseries:
        damaged_series[rate] = series

    def run(pars):
        method, rate = pars
        error, var, std = experiment(method, windpark, damaged_series[rate], rate)
        return method, rate, error, var, std

    results = map(run, list(chain(product(methods, rates))))