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')
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')
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)
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')