Professional Documents
Culture Documents
Afrr
Afrr
demand_df = pd.read_excel(
r"C:\Users\csika\Desktop\2021_full_imbalance_20221201.xlsx")
targetDemand_with_nan = demand_df['aFRR'].tolist()
targetDemandList = [x for x in targetDemand_with_nan if str(x) != 'nan']
df = pd.read_csv(r"C:\Users\csika\Desktop\FULL_merged_ajanlatok-20210101-
20210102.csv",
sep=';', skipinitialspace=True)
overallCounter = 0
targetDemand = targetDemandList[overallCounter]
# print(targetDemand)
if quarterCategory != 0:
if len(str(supplyProductStartHour)) == 1:
supplyProductTime = "0{}:00-0{}:00".format(supplyProductStartHour,
supplyProductEndHour)
# print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
if supplyProductStartHour == 9:
supplyProductTime = "0{}:00-{}:00".format(supplyProductStartHour,
supplyProductEndHour)
# print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
else:
if supplyProductStartHour == 23:
supplyProductTime = "23:00-00:00".format(supplyProductStartHour -
1, supplyProductStartHour)
# print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
else:
supplyProductTime = "{}:00-{}:00".format(supplyProductStartHour,
supplyProductEndHour)
# print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
else:
if len(str(supplyProductStartHour)) == 1:
supplyProductTime = "0{}:00-0{}:00".format(supplyProductStartHour - 1,
supplyProductStartHour)
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
if supplyProductStartHour == 0:
supplyProductTime = "00:00-01:00"
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
if supplyProductStartHour == 9:
supplyProductTime = "0{}:00-0{}:00".format(supplyProductStartHour -
1, supplyProductStartHour)
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
else:
if supplyProductStartHour == 10:
supplyProductTime = "0{}:00-{}:00".format(supplyProductStartHour -
1, supplyProductStartHour)
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
else:
supplyProductTime = "{}:00-{}:00".format(supplyProductStartHour -
1, supplyProductStartHour)
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
if targetDemand > 0:
problemType = LpMinimize
supplyDirection = "Pozitiv / Positive"
else:
targetDemand = targetDemand * -1
problemType = LpMaximize
supplyDirection = "Negativ / Negative"
afrr_ids = afrr_df.index.astype(str).tolist()
afrr_df.insert(loc=0, column='row_id', value=afrr_ids)
afrr_df['Piac / Market'] = afrr_df['Piac / Market'] + afrr_df['row_id']
afrrVendors = afrr_df['Piac / Market'].tolist()
for i in afrrVendors:
prob += afrrVendorVars[i] <= afrrVendorVolumes[i]
try:
prob.solve()
except:
output_dict["Unique ID"].append(str(uuid.uuid4()))
output_dict["Időpont"].append(demand_df.at[overallCounter, 'Időpont'])
output_dict["Kereslet (MW)"].append(targetDemand)
output_dict["Irány"].append(supplyDirection)
output_dict["Kínálat (HUF)"].append("ERROR")
output_dict["Optimális eredmény?"].append("ERROR")
output_dict["Piac"].append("ERROR")
output_dict["Volumen"].append("ERROR")
output_dict["Maradék Volumen"].append("ERROR")
output_dict['Ár'].append("ERROR")
overallCounter += 1
# print("Status:", LpStatus[prob.status])
for v in prob.variables():
if v.varValue > 0:
if v.name[0] != 'u':
print(v.name, "=", v.varValue)
output_dict["Unique ID"].append(str(uuid.uuid4()))
output_dict["Időpont"].append(demand_df.at[overallCounter,
'Időpont'])
output_dict["Kereslet (MW)"].append(targetDemand)
output_dict["Irány"].append(supplyDirection)
output_dict["Kínálat (HUF)"].append(value(prob.objective))
output_dict["Optimális eredmény?"].append(LpStatus[prob.status])
output_dict["Piac"].append(v.name)
output_dict["Volumen"].append(v.varValue)
output_dict["Maradék Volumen"].append(
afrrVendorVolumes['aFRR /
aFRR{}'.format(v.name[v.name.index("___") + 7:])] - v.varValue)
output_dict['Ár'].append(
afrrVendorCosts['aFRR /
aFRR{}'.format(v.name[v.name.index("___") + 7:])] * v.varValue)
if supplyProductStartHour == 23:
print(demand_df.at[overallCounter, 'Időpont'], supplyProductTime)
overallCounter += 1
print("Done iterating!")
print(json.dumps(output_dict, indent=2))
output_df = pd.DataFrame(output_dict).to_excel(
'MAVIR_PSGA_simplex_output_{}.xlsx'.format(pd.datetime.today().strftime('%Y%m%d-%H
%M%S')))
print("Done exporting!")
print("--- %s seconds ---" % (time.time() - start_time))