diff --git a/Reports/Thesis/sections/nrv_prediction.tex b/Reports/Thesis/sections/nrv_prediction.tex index daa9c19..136c84d 100644 --- a/Reports/Thesis/sections/nrv_prediction.tex +++ b/Reports/Thesis/sections/nrv_prediction.tex @@ -510,5 +510,48 @@ Linear & [B, Number of quantiles] \\ \label{tab:gru_model_architecture} \end{table} +Multiple experiments are conducted to find which hyperparameters and input features work best for the GRU model. The results of the GRU model are shown in Table \ref{tab:autoregressive_gru_model_results}. + +\begin{table}[H] +\centering +\begin{adjustbox}{width=\textwidth,center} +\begin{tabular}{@{}cccccccccc@{}} +\toprule +Features & Layers & Hidden Size & \multicolumn{2}{c}{MSE} & \multicolumn{2}{c}{MAE} & \multicolumn{2}{c}{CRPS} \\ +\cmidrule(lr){4-5} \cmidrule(lr){6-7} \cmidrule(lr){8-9} +& & & Train & Test & Train & Test & Train & Test \\ +\midrule +NRV & & & & & & & & \\ +& 2 & 256 & 34942.89 & 39838.35 & 142.43 & 150.81 & 81.34 & 85.04 \\ +& 4 & 256 & 34705.61 & 39506.55 & 141.74 & 149.81 & 81.89 & 85.46 \\ +& 8 & 256 & 32885.71 & 37747.11 & 138.16 & 146.67 & 79.99 & 83.67 \\ +& 2 & 512 & 35362.66 & 39955.79 & 143.19 & 150.77 & 84.37 & 87.88 \\ +& 4 & 512 & 38253.89 & 43301.13 & 148.33 & 156.73 & 85.98 & 89.78 \\ +& 8 & 512 & 33131.93 & 37681.71 & 138.93 & 146.62 & 79.64 & 83.08 \\ +\midrule +NRV + Load & & & & & & & & & \\ +& 2 & 256 & 33202.80 & 38427.91 & 138.02 & 147.27 & 79.62 & 84.17 \\ +& 4 & 256 & 33600.73 & 38984.44 & 138.62 & 147.91 & 81.03 & 85.91 \\ +& 8 & 256 & 32828.61 & 38343.98 & 136.82 & 146.44 & 79.42 & 84.22 \\ +& 2 & 512 & 35979.57 & 41496.77 & 144.16 & 153.53 & 83.50 & 88.26 \\ +& 4 & 512 & 32334.73 & 38000.40 & 135.92 & 146.10 & 78.82 & 83.99 \\ +& 8 & 512 & 35177.39 & 41104.28 & 141.79 & 152.13 & 83.79 & 89.13 \\ +\midrule +NRV + Load + PV + Wind & & & & & & & & & \\ +& 4 & 256 & 31594.55 & 39872.46 & 134.11 & 149.34 & 77.52 & 85.91 \\ +& 8 & 256 & 31481.22 & 39704.37 & 133.45 & 148.59 & 77.26 & 85.62 \\ +& 4 & 512 & 31368.31 & 39024.27 & 134.02 & 147.91 & 76.58 & 84.18 \\ +& 8 & 512 & 34566.66 & 42397.86 & 140.13 & 154.00 & 82.09 & 89.87 \\ + +\bottomrule +\end{tabular} +\end{adjustbox} +\caption{Autoregressive GRU quantile regression model results. All the models used a dropout of 0.2 .} +\label{tab:autoregressive_gru_model_results} +\end{table} + + + + \newpage \subsection{Diffusion} diff --git a/Reports/Thesis/verslag.aux b/Reports/Thesis/verslag.aux index ed1f0f5..daf7075 100644 --- a/Reports/Thesis/verslag.aux +++ b/Reports/Thesis/verslag.aux @@ -81,10 +81,12 @@ \newlabel{fig:rnn_model_visualization}{{9}{25}{RNN model input and output visualization\relax }{figure.caption.16}{}} \@writefile{lot}{\contentsline {table}{\numberline {8}{\ignorespaces GRU Model Architecture\relax }}{26}{table.caption.17}\protected@file@percent } \newlabel{tab:gru_model_architecture}{{8}{26}{GRU Model Architecture\relax }{table.caption.17}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Diffusion}{27}{subsection.5.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6}Policies for battery optimization}{27}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Baselines}{27}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{27}{subsection.6.2}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {9}{\ignorespaces Autoregressive GRU quantile regression model results. All the models used a dropout of 0.2 .\relax }}{27}{table.caption.18}\protected@file@percent } +\newlabel{tab:autoregressive_gru_model_results}{{9}{27}{Autoregressive GRU quantile regression model results. All the models used a dropout of 0.2 .\relax }{table.caption.18}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Diffusion}{28}{subsection.5.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6}Policies for battery optimization}{28}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Baselines}{28}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{28}{subsection.6.2}\protected@file@percent } \abx@aux@read@bbl@mdfivesum{D41D8CD98F00B204E9800998ECF8427E} \abx@aux@read@bblrerun -\gdef \@abspage@last{28} +\gdef \@abspage@last{29} diff --git a/Reports/Thesis/verslag.log b/Reports/Thesis/verslag.log index d2dd62e..c87f5fa 100644 --- a/Reports/Thesis/verslag.log +++ b/Reports/Thesis/verslag.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex 2023.9.17) 22 APR 2024 15:47 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex 2023.9.17) 23 APR 2024 16:32 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -1521,7 +1521,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 491--511 [] -[25 <./images/quantile_regression/rnn/RNN_diagram.png>] [26]) [27] (./verslag.aux (./sections/introduction.aux) (./sections/background.aux) (./sections/literature_study.aux)) +[25 <./images/quantile_regression/rnn/RNN_diagram.png>] [26] [27]) [28] (./verslag.aux (./sections/introduction.aux) (./sections/background.aux) (./sections/literature_study.aux)) LaTeX Warning: There were undefined references. @@ -1537,18 +1537,18 @@ Package logreq Info: Writing requests to 'verslag.run.xml'. ) Here is how much of TeX's memory you used: - 26747 strings out of 476025 - 486892 string characters out of 5790017 - 1872388 words of memory out of 5000000 - 46683 multiletter control sequences out of 15000+600000 + 26750 strings out of 476025 + 486953 string characters out of 5790017 + 1877388 words of memory out of 5000000 + 46684 multiletter control sequences out of 15000+600000 603223 words of font info for 88 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 83i,16n,131p,1405b,5180s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on verslag.pdf (28 pages, 4066129 bytes). +Output written on verslag.pdf (29 pages, 4067551 bytes). PDF statistics: - 419 PDF objects out of 1000 (max. 8388607) - 317 compressed objects within 4 object streams - 74 named destinations out of 1000 (max. 500000) + 425 PDF objects out of 1000 (max. 8388607) + 322 compressed objects within 4 object streams + 76 named destinations out of 1000 (max. 500000) 297 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Reports/Thesis/verslag.pdf b/Reports/Thesis/verslag.pdf index 258aa36..5cf8bd1 100644 Binary files a/Reports/Thesis/verslag.pdf and b/Reports/Thesis/verslag.pdf differ diff --git a/Reports/Thesis/verslag.synctex.gz b/Reports/Thesis/verslag.synctex.gz index c18a2e6..02c8be4 100644 Binary files a/Reports/Thesis/verslag.synctex.gz and b/Reports/Thesis/verslag.synctex.gz differ diff --git a/Reports/Thesis/verslag.toc b/Reports/Thesis/verslag.toc index 044184f..73c7a0d 100644 --- a/Reports/Thesis/verslag.toc +++ b/Reports/Thesis/verslag.toc @@ -17,7 +17,7 @@ \contentsline {subsubsection}{\numberline {5.2.3}Linear Model}{16}{subsubsection.5.2.3}% \contentsline {subsubsection}{\numberline {5.2.4}Non-linear Model}{22}{subsubsection.5.2.4}% \contentsline {subsubsection}{\numberline {5.2.5}GRU Model}{25}{subsubsection.5.2.5}% -\contentsline {subsection}{\numberline {5.3}Diffusion}{27}{subsection.5.3}% -\contentsline {section}{\numberline {6}Policies for battery optimization}{27}{section.6}% -\contentsline {subsection}{\numberline {6.1}Baselines}{27}{subsection.6.1}% -\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{27}{subsection.6.2}% +\contentsline {subsection}{\numberline {5.3}Diffusion}{28}{subsection.5.3}% +\contentsline {section}{\numberline {6}Policies for battery optimization}{28}{section.6}% +\contentsline {subsection}{\numberline {6.1}Baselines}{28}{subsection.6.1}% +\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{28}{subsection.6.2}% diff --git a/src/training_scripts/autoregressive_quantiles.py b/src/training_scripts/autoregressive_quantiles.py index 15d5b2d..a07d49f 100644 --- a/src/training_scripts/autoregressive_quantiles.py +++ b/src/training_scripts/autoregressive_quantiles.py @@ -2,7 +2,9 @@ from src.utils.clearml import ClearMLHelper #### ClearML #### clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast") -task = clearml_helper.get_task(task_name="AQR: GRU (2 - 256)") +task = clearml_helper.get_task( + task_name="AQR: GRU (8 - 512) + Load + PV + Wind + NP + QE (dim 5)" +) task.execute_remotely(queue_name="default", exit_process=True) from src.policies.PolicyEvaluator import PolicyEvaluator @@ -28,24 +30,24 @@ data_config = DataConfig() data_config.NRV_HISTORY = True -data_config.LOAD_HISTORY = False -data_config.LOAD_FORECAST = False +data_config.LOAD_HISTORY = True +data_config.LOAD_FORECAST = True -data_config.WIND_FORECAST = False -data_config.WIND_HISTORY = False +data_config.WIND_FORECAST = True +data_config.WIND_HISTORY = True -data_config.PV_FORECAST = False -data_config.PV_HISTORY = False +data_config.PV_FORECAST = True +data_config.PV_HISTORY = True -data_config.QUARTER = False +data_config.QUARTER = True data_config.DAY_OF_WEEK = False -data_config.NOMINAL_NET_POSITION = False +data_config.NOMINAL_NET_POSITION = True data_config = task.connect(data_config, name="data_features") -data_processor = DataProcessor(data_config, path="", lstm=False) +data_processor = DataProcessor(data_config, path="", lstm=True) data_processor.set_batch_size(512) data_processor.set_full_day_skip(False) @@ -68,8 +70,8 @@ else: model_parameters = { "learning_rate": 0.0001, - "hidden_size": 256, - "num_layers": 2, + "hidden_size": 512, + "num_layers": 8, "dropout": 0.2, "time_feature_embedding": 5, } @@ -125,7 +127,7 @@ trainer = AutoRegressiveQuantileTrainer( trainer.add_metrics_to_track( [PinballLoss(quantiles), MSELoss(), L1Loss(), CRPSLoss(quantiles)] ) -trainer.early_stopping(patience=10) +trainer.early_stopping(patience=25) trainer.plot_every(15) trainer.train(task=task, epochs=epochs, remotely=True)