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
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
def experiment(method, windpark, damaged, rate): args = argfuncs[method](windpark) reconstructed = interpolate(damaged, **args) error, var, std = scores(measurements, reconstructed) return error, var, std
from numpy import array, zeros, float32, int32 # get windpark and corresponding target. forecast is for the target turbine park_id = NREL.park_id['tehachapi'] windpark = NREL().get_windpark(park_id, 3, 2004) target = windpark.get_target() measurements = target.get_measurements()[300:1000] damaged, indices = destroy(measurements, method="nmar", percentage=.80,\ min_length=10, max_length=100) neighbors = windpark.get_turbines()[:-1] nseries = [t.get_measurements()[300:1000] for t in neighbors] tinterpolated = interpolate(damaged, method='mreg',\ timestep=600,\ neighbor_series = nseries,\ reg = 'linear_model') d = array([m[0] for m in tinterpolated]) y1 = array([m[1] for m in tinterpolated]) #score y2 = array([m[2] for m in tinterpolated]) #speed d_hat = array([m[0] for m in damaged]) y1_hat = array([m[1] for m in damaged]) y2_hat = array([m[2] for m in damaged]) d_true = array([m[0] for m in measurements]) y1_true = array([m[1] for m in measurements]) y2_true = array([m[2] for m in measurements]) d_time = []
gamma_range = [0.0001, 0.000001] C_range = [2 ** i for i in range(-3, 5, 1)] regargs = { "epsilon" : 0.1, "cv_method" : "kfold", "cv_args" : {"k_folds" : 10}, "kernel" : 'rbf', "tuned_parameters" : [{ 'kernel': ['rbf'], 'C': C_range, 'gamma': gamma_range}]} tinterpolated = interpolate(damaged, method = 'mreg',\ timestep=600,\ neighbor_series = nseries,\ reg = 'svr', regargs = regargs) d = array([m[0] for m in tinterpolated]) y1 = array([m[1] for m in tinterpolated]) #score y2 = array([m[2] for m in tinterpolated]) #speed d_hat = array([m[0] for m in damaged]) y1_hat = array([m[1] for m in damaged]) y2_hat = array([m[2] for m in damaged]) d_true = array([m[0] for m in measurements]) y1_true = array([m[1] for m in measurements]) y2_true = array([m[2] for m in measurements])
"epsilon": 0.1, "cv_method": "kfold", "cv_args": { "k_folds": 10 }, "kernel": 'rbf', "tuned_parameters": [{ 'kernel': ['rbf'], 'C': C_range, 'gamma': gamma_range }] } tinterpolated = interpolate(damaged, method = 'mreg',\ timestep=600,\ neighbor_series = nseries,\ reg = 'svr', regargs = regargs) d = array([m[0] for m in tinterpolated]) y1 = array([m[1] for m in tinterpolated]) #score y2 = array([m[2] for m in tinterpolated]) #speed d_hat = array([m[0] for m in damaged]) y1_hat = array([m[1] for m in damaged]) y2_hat = array([m[2] for m in damaged]) d_true = array([m[0] for m in measurements]) y1_true = array([m[1] for m in measurements]) y2_true = array([m[2] for m in measurements])
from numpy import array, zeros, float32, int32 # get windpark and corresponding target. forecast is for the target turbine park_id = NREL.park_id['tehachapi'] windpark = NREL().get_windpark(park_id, 3, 2004) target = windpark.get_target() measurements = target.get_measurements()[300:1000] damaged, indices = destroy(measurements, method="nmar", percentage=.80,\ min_length=10, max_length=100) neighbors = windpark.get_turbines()[:-1] nseries = [t.get_measurements()[300:1000] for t in neighbors] tinterpolated = interpolate(damaged, method='mreg',\ timestep=600,\ neighbor_series = nseries,\ reg = 'linear_model') d = array([m[0] for m in tinterpolated]) y1 = array([m[1] for m in tinterpolated]) #score y2 = array([m[2] for m in tinterpolated]) #speed d_hat = array([m[0] for m in damaged]) y1_hat = array([m[1] for m in damaged]) y2_hat = array([m[2] for m in damaged]) d_true = array([m[0] for m in measurements]) y1_true = array([m[1] for m in measurements]) y2_true = array([m[2] for m in measurements]) d_time = []
# get windpark and corresponding target. forecast is for the target turbine park_id = NREL.park_id['tehachapi'] windpark = NREL().get_windpark(park_id, 3, 2004) target = windpark.get_target() measurements = target.get_measurements()[300:1000] damaged, indices = destroy(measurements, method="nmar", percentage=.80,\ min_length=10, max_length=100) neighbors = windpark.get_turbines()[:-1] nseries = [t.get_measurements()[300:1000] for t in neighbors] tinterpolated = interpolate(damaged, method='mreg',\ timestep=600,\ neighbor_series = nseries,\ reg = 'knn', regargs = {'n': 10, 'variant':'uniform'}) d = array([m[0] for m in tinterpolated]) y1 = array([m[1] for m in tinterpolated]) #score y2 = array([m[2] for m in tinterpolated]) #speed d_hat = array([m[0] for m in damaged]) y1_hat = array([m[1] for m in damaged]) y2_hat = array([m[2] for m in damaged]) d_true = array([m[0] for m in measurements]) y1_true = array([m[1] for m in measurements]) y2_true = array([m[2] for m in measurements])