Esempio n. 1
0
def main(args):
    solar_output_dir = args.solar_output_dir
    solar_plot = args.solar_plot
    input_solar_file = args.input_solar_file
    simulations_num = args.simulations_num
    input_start_time = args.input_start_time
    input_end_time = args.input_end_time
    simulation_start_time = args.simulation_start_time
    simulation_end_time = args.simulation_end_time
    location_coor = args.location_coordinate
    solar_target_scaled_capacity = args.solar_target_scaled_capacity
    args.input_xyid_file = 'deviation.csv'
    args.output_dir = 'midstep_output'
    args.title = None
    args.x_legend = None
    args.target_scaled_capacity = None
    args.scale_by_capacity = 0
    # save (then delete) output file from MapeMaker, but do not show on log
    args.use_output_as_intermidiate = True
    args.plot = False
    if args.sid_feature == "actuals":
        x_name = "forecasts"
    elif args.sid_feature == "forecasts":
        x_name = "actuals"
    upper, cap = deviation(input_start_time, input_end_time,
                           location_coor, input_solar_file, x_name)
    upper = upper[(upper.index >= simulation_start_time)
                  & (upper.index < simulation_end_time)]
    mapemain(args)
    filename = glob.glob(args.output_dir+'/'+'*.csv')
    filename = filename[0]
    after_mape = pd.read_csv(filename)
    after_mape.rename(columns={'Unnamed: 0': 'datetime'}, inplace=True)
    after_mape['datetime'] = pd.to_datetime(after_mape['datetime'])
    after_mape.set_index("datetime", inplace=True)
    after_mape = after_mape[(after_mape.index >= simulation_start_time)
                            & (after_mape.index < simulation_end_time)]
    after_mape = -after_mape
    for i in range(simulations_num):
        after_mape.iloc[:, i] = (after_mape.iloc[:, i]+upper['upper bound'])
    if solar_target_scaled_capacity != None:
        after_mape = after_mape * \
            (solar_target_scaled_capacity/cap)
    if solar_plot == True:
        fig = after_mape.plot()
        fig.figure.savefig('results')
    dir = (solar_output_dir)
    if not os.path.exists(dir):
        os.mkdir(dir)
        after_mape.to_csv(dir + '/simulations.csv')
        print('output saved to' + ' ' + solar_output_dir)
    else:
        raise ValueError('Directory already exists.')

    # delete midstep files
    shutil.rmtree(args.output_dir)
    os.remove('deviation.csv')
Esempio n. 2
0
def main(args):
    args.use_output_as_intermidiate = False
    actual, forecast = load_dataset(args.data_source)
    sum_or_indv_sites(args, args.geographic_scale, actual, forecast)
    if args.geographic_scale == "sum":
        data_forecast, data_actual = sum_or_indv_sites(
            args, args.geographic_scale, actual, forecast)
        if args.output_dir == None:
            raise ValueError("No output directory specified")
        args.input_xyid_file = 'data_sum.csv'
        df = pd.read_csv(args.input_xyid_file)
        start_date = df.iloc[0][0]
        end_date = df.iloc[0][-1]
        start_date = pd.to_datetime(start_date)
        end_date = pd.to_datetime(end_date)
        if args.simulation_start_time == None:
            args.simulation_start_time = start_date
        if args.simulation_end_time == None:
            args.simulation_end_time = end_date
        args.input_sid_file = None
        args.verbosity_output = None
        args.input_start_time = None
        args.input_end_time = None
        args.a = 4
        args.curvature_target = None
        args.mip_gap = 0.3
        args.time_limit = 3600
        args.plot_start_date = 0
        args.verbosity = 2
        args.sid_feature = 'actuals'
        args.base_process = 'ARMA'
        args.load_pickle = False
        args.curvature = False
        args.show_curv_model = False
        args.plot = False
        args.solver = 'gurobi'
        args.title = None
        args.x_legend = None
        mapemain(args)
        os.remove("data_sum.csv")
        name = args.output_dir
        if args.t7k_plot == True:
            filename = glob.glob(name+'/'+'*.csv')
            filename = filename[0]
            df = pd.read_csv(filename, index_col=0)
            df.index = pd.to_datetime(df.index)
            df['actual'] = data_actual
            df['forecast'] = data_forecast
            act = df.pop("actual")
            df.insert(0, act.name, act)
            fore = df.pop("forecast")
            df.insert(0, fore.name, fore)
            df = df.head(50)
            fig = df.plot(style=['--', '--'])
            fig.figure.savefig(name+'/'+name+'_results')
Esempio n. 3
0
def main(args):
    if args.output_dir == None:
        raise ValueError("No output directory specified.")
    args.input_xyid_file = file_path
    df = pd.read_csv(args.input_xyid_file, header=0)  # dataset has a header
    start_date = df.iloc[0][0]
    end_date = df.iloc[-1][0]
    print(start_date, end_date)
    start_date = pd.to_datetime(start_date)
    end_date = pd.to_datetime(end_date)
    if args.simulation_start_time == None:
        args.simulation_start_time = start_date
    if args.simulation_end_time == None:
        args.simulation_end_time = end_date
    print(start_date, end_date)
    if not (end_date >= pd.to_datetime(args.simulation_start_time) >=
            start_date):
        raise ValueError(
            'Invalid start time. Valid date range: 2012-06-02 00:00:00 to 2014-01-01 23:00:00'
        )
    if not (end_date >= pd.to_datetime(args.simulation_end_time) >=
            start_date):
        raise ValueError(
            'Invalid end time. Valid date range: 2012-06-02 00:00:00 to 2014-01-01 23:00:00'
        )

    args.input_xyid_file = file_path
    args.target_scaled_capacity = None
    args.input_sid_file = None
    args.verbosity_output = None
    args.input_start_time = None
    args.input_end_time = None
    args.a = 4
    args.curvature_target = None
    args.mip_gap = 0.3
    args.time_limit = 3600
    args.plot_start_date = 0
    args.verbosity = 2
    args.sid_feature = 'actuals'
    args.base_process = 'ARMA'
    args.load_pickle = False
    args.curvature = False
    args.show_curv_model = False
    args.solver = 'gurobi'
    args.title = None
    args.x_legend = None
    args.scale_by_capacity = 0
    args.use_output_as_intermidiate = False
    mapemain(args)
Esempio n. 4
0
def sum_or_indv_sites(args, sum_or_indv, actual, forecast):

    if sum_or_indv == 'sum':
        data_forecast = forecast.sum(axis=1)
        data_actual = actual.sum(axis=1)
        data_sum = pd.DataFrame(data_forecast, columns=[
                                'forecasts'], index=forecast.index)
        data_sum['actuals'] = data_actual
        data_sum.to_csv('data_sum.csv')
        return data_forecast, data_actual
    else:
        for i in range(0, len(forecast.columns)):
            name = str(forecast.columns[i])
            data = pd.DataFrame(index=forecast.index)
            data['forecasts'] = forecast.iloc[:, i]
            data['actuals'] = actual.iloc[:, i]
            data.to_csv('temp_data_for_individual_sites.csv')
            args.input_xyid_file = 'temp_data_for_individual_sites.csv'
            df = pd.read_csv(args.input_xyid_file)
            start_date = df.iloc[0][0]
            end_date = df.iloc[0][-1]
            start_date = pd.to_datetime(start_date)
            end_date = pd.to_datetime(end_date)
            if args.simulation_start_time == None:
                args.simulation_start_time = start_date
            if args.simulation_end_time == None:
                args.simulation_end_time = end_date
            args.input_sid_file = None
            args.verbosity_output = None
            args.input_start_time = None
            args.input_end_time = None
            args.a = 15
            args.curvature_target = None
            args.mip_gap = 0.3
            args.time_limit = 3600
            args.plot_start_date = 0
            args.verbosity = 2
            args.sid_feature = 'actuals'
            args.base_process = 'ARMA'
            args.load_pickle = False
            args.curvature = False
            args.show_curv_model = False
            args.plot = False
            args.solver = 'gurobi'
            args.title = None
            args.x_legend = None
            args.output_dir = name
            mapemain(args)
            # code for plot goes here
            if args.t7k_plot == True:
                filename = glob.glob(name+'/'+'*.csv')
                filename = filename[0]
                df = pd.read_csv(filename, index_col=0)
                df.index = pd.to_datetime(df.index)
                df['actual'] = actual.iloc[:, i]
                df['forecast'] = forecast.iloc[:, i]
                act = df.pop("actual")
                df.insert(0, act.name, act)
                fore = df.pop("forecast")
                df.insert(0, fore.name, fore)
                df = df.head(50)
                fig = df.plot(style=['--', '--'])
                fig.figure.savefig(name+'/'+name+'_results')

        os.remove('temp_data_for_individual_sites.csv')