Update test.py

- removed unused/duplicate imports
- organized parameters
- input values got rounded!
This commit is contained in:
NormannK 2024-09-19 22:00:09 +02:00 committed by Daniel Molkentin
parent 226608dc9e
commit 709211784b

380
test.py
View File

@ -1,335 +1,95 @@
from flask import Flask, jsonify, request #!/usr/bin/env python3
import numpy as np import numpy as np
from datetime import datetime from datetime import datetime
from modules.class_optimize import *
# from modules.class_load import *
# from modules.class_ems import *
# from modules.class_pv_forecast import *
# from modules.class_akku import *
# from modules.class_strompreis import *
# from modules.class_heatpump import *
# from modules.class_load_container import *
# from modules.class_eauto import *
from modules.class_optimize import *
from pprint import pprint from pprint import pprint
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from modules.visualize import *
from deap import base, creator, tools, algorithms from deap import base, creator, tools, algorithms
import numpy as np
import random
import os
# Import necessary modules from the project
from modules.class_optimize import optimization_problem
from modules.visualize import *
start_hour = 10 start_hour = 10
# PV Forecast (in W)
pv_forecast = [ pv_forecast = [
0, 0, 0, 0, 0, 0, 0, 0, 8.05, 352.91, 728.51, 930.28, 1043.25,
0, 1106.74, 1161.69, 6018.82, 5519.07, 3969.88, 3017.96, 1943.07,
0, 1007.17, 319.67, 7.88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.04, 335.59,
0, 705.32, 1121.12, 1604.79, 2157.38, 1433.25, 5718.49, 4553.96,
0, 3027.55, 2574.46, 1720.4, 963.4, 383.3, 0, 0, 0
0,
0,
8.05499380056326,
352.906710152794,
728.510230116837,
930.282113186742,
1043.25445504815,
1106.74498341506,
1161.69140358941,
6018.82237954771,
5519.06508185542,
3969.87633262384,
3017.96293205546,
1943.06957539177,
1007.17065928121,
319.672404988219,
7.87634136648885,
0,
0,
0,
0,
0,
0,
0,
0,
0,
5.04340865393592,
335.585179721385,
705.32093965119,
1121.11845108965,
1604.78796905453,
2157.38417470292,
1433.25331647539,
5718.48693381975,
4553.95522042393,
3027.5471975751,
2574.46499468404,
1720.39712914078,
963.402827741714,
383.299960578605,
0,
0,
0
] ]
# Temperature Forecast (in °C)
temperature_forecast = [ temperature_forecast = [
18.3, 18.3, 17.8, 16.9, 16.2, 15.6, 15.1, 14.6, 14.2, 14.3, 14.8, 15.7,
17.8, 16.7, 17.4, 18.0, 18.6, 19.2, 19.1, 18.7, 18.5, 17.7, 16.2, 14.6,
16.9, 13.6, 13.0, 12.6, 12.2, 11.7, 11.6, 11.3, 11.0, 10.7, 10.2, 11.4,
16.2, 14.4, 16.4, 18.3, 19.5, 20.7, 21.9, 22.7, 23.1, 23.1, 22.8, 21.8,
15.6, 20.2, 19.1, 18.0, 17.4
15.1,
14.6,
14.2,
14.3,
14.8,
15.7,
16.7,
17.4,
18,
18.6,
19.2,
19.1,
18.7,
18.5,
17.7,
16.2,
14.6,
13.6,
13,
12.6,
12.2,
11.7,
11.6,
11.3,
11,
10.7,
10.2,
11.4,
14.4,
16.4,
18.3,
19.5,
20.7,
21.9,
22.7,
23.1,
23.1,
22.8,
21.8,
20.2,
19.1,
18,
17.4
] ]
# Electricity Price (in Euro per Wh)
strompreis_euro_pro_wh = [ strompreis_euro_pro_wh = [
0.00033840228, 0.0003384, 0.0003318, 0.0003284, 0.0003283, 0.0003289, 0.0003334,
0.00033180228, 0.0003290, 0.0003302, 0.0003042, 0.0002430, 0.0002280, 0.0002212,
0.00032840228, 0.0002093, 0.0001879, 0.0001838, 0.0002004, 0.0002198, 0.0002270,
0.00032830228, 0.0002997, 0.0003195, 0.0003081, 0.0002969, 0.0002921, 0.0002780,
0.00032890228, 0.0003384, 0.0003318, 0.0003284, 0.0003283, 0.0003289, 0.0003334,
0.00033340228, 0.0003290, 0.0003302, 0.0003042, 0.0002430, 0.0002280, 0.0002212,
0.00032900228, 0.0002093, 0.0001879, 0.0001838, 0.0002004, 0.0002198, 0.0002270,
0.00033020228, 0.0002997, 0.0003195, 0.0003081, 0.0002969, 0.0002921, 0.0002780
0.00030420228,
0.00024300228,
0.00022800228,
0.00022120228,
0.00020930228,
0.00018790228,
0.00018380228,
0.00020040228,
0.00021980228,
0.00022700228,
0.00029970228,
0.00031950228,
0.00030810228,
0.00029690228,
0.00029210228,
0.00027800228,
0.00033840228,
0.00033180228,
0.00032840228,
0.00032830228,
0.00032890228,
0.00033340228,
0.00032900228,
0.00033020228,
0.00030420228,
0.00024300228,
0.00022800228,
0.00022120228,
0.00020930228,
0.00018790228,
0.00018380228,
0.00020040228,
0.00021980228,
0.00022700228,
0.00029970228,
0.00031950228,
0.00030810228,
0.00029690228,
0.00029210228,
0.00027800228
] ]
# Overall System Load (in W)
gesamtlast = [ gesamtlast = [
676.712691350422, 676.71, 876.19, 527.13, 468.88, 531.38, 517.95, 483.15, 472.28,
876.187995931743, 1011.68, 995.00, 1053.07, 1063.91, 1320.56, 1132.03, 1163.67,
527.13496018672, 1176.82, 1216.22, 1103.78, 1129.12, 1178.71, 1050.98, 988.56,
468.8832716908, 912.38, 704.61, 516.37, 868.05, 694.34, 608.79, 556.31, 488.89,
531.379343927472, 506.91, 804.89, 1141.98, 1056.97, 992.46, 1155.99, 827.01,
517.948592590007, 1257.98, 1232.67, 871.26, 860.88, 1158.03, 1222.72, 1221.04,
483.146247717859, 949.99, 987.01, 733.99, 592.97
472.284832630916,
1011.67951144825,
995.004317471209,
1053.06955100748,
1063.9080395892,
1320.56143113193,
1132.02504127723,
1163.67246837107,
1176.81613875329,
1216.21914051274,
1103.77675478374,
1129.12158352941,
1178.70748410006,
1050.97894301995,
988.55813665172,
912.383030600675,
704.613809064162,
516.371536532904,
868.049462163551,
694.342395302237,
608.791374542592,
556.310160150771,
488.88509383088,
506.910948217211,
804.891484351704,
1141.97850300923,
1056.97012155463,
992.46421110044,
1155.98941936038,
827.012550864246,
1257.97979633947,
1232.66876472966,
871.261677859026,
860.884647456424,
1158.02879027548,
1222.71811626233,
1221.03860924522,
949.989048056282,
987.007654562746,
733.993140774617,
592.972573276025
] ]
# Start Solution (binary)
start_solution = [ start_solution = [
1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1,
0,
0,
1,
1,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
] ]
parameter= {"preis_euro_pro_wh_akku": 10e-05,'pv_soc': 80, 'pv_akku_cap': 26400, 'year_energy': 4100000, 'einspeiseverguetung_euro_pro_wh': 7e-05, 'max_heizleistung': 1000,"gesamtlast":gesamtlast, 'pv_forecast': pv_forecast, "temperature_forecast":temperature_forecast, "strompreis_euro_pro_wh":strompreis_euro_pro_wh, 'eauto_min_soc': 0, 'eauto_cap': 60000, 'eauto_charge_efficiency': 0.95, 'eauto_charge_power': 11040, 'eauto_soc': 54, 'pvpowernow': 211.137503624, 'start_solution': start_solution, 'haushaltsgeraet_wh': 937, 'haushaltsgeraet_dauer': 0}
# Define parameters for the optimization problem
parameter = {
"preis_euro_pro_wh_akku": 10e-05, # Cost of storing energy in battery (per Wh)
'pv_soc': 80, # Initial state of charge (SOC) of PV battery (%)
'pv_akku_cap': 26400, # Battery capacity (in Wh)
'year_energy': 4100000, # Yearly energy consumption (in Wh)
'einspeiseverguetung_euro_pro_wh': 7e-05, # Feed-in tariff for exporting electricity (per Wh)
'max_heizleistung': 1000, # Maximum heating power (in W)
"gesamtlast": gesamtlast, # Overall load on the system
'pv_forecast': pv_forecast, # PV generation forecast (48 hours)
"temperature_forecast": temperature_forecast, # Temperature forecast (48 hours)
"strompreis_euro_pro_wh": strompreis_euro_pro_wh, # Electricity price forecast (48 hours)
'eauto_min_soc': 0, # Minimum SOC for electric car
'eauto_cap': 60000, # Electric car battery capacity (Wh)
'eauto_charge_efficiency': 0.95, # Charging efficiency of the electric car
'eauto_charge_power': 11040, # Charging power of the electric car (W)
'eauto_soc': 54, # Current SOC of the electric car (%)
'pvpowernow': 211.137503624, # Current PV power generation (W)
'start_solution': start_solution, # Initial solution for the optimization
'haushaltsgeraet_wh': 937, # Household appliance consumption (Wh)
'haushaltsgeraet_dauer': 0 # Duration of appliance usage (hours)
}
# Initialize the optimization problem
opt_class = optimization_problem(prediction_hours=48, strafe=10, optimization_hours=24) opt_class = optimization_problem(prediction_hours=48, strafe=10, optimization_hours=24)
# Perform the optimisation based on the provided parameters and start hour
ergebnis = opt_class.optimierung_ems(parameter=parameter, start_hour=start_hour) ergebnis = opt_class.optimierung_ems(parameter=parameter, start_hour=start_hour)
#print(ergebnis)
#print(jsonify(ergebnis)) # Print or visualize the result
pprint(ergebnis)