From f691ab384b3ab4bcc24f26d1b777344e22793092 Mon Sep 17 00:00:00 2001 From: Victor Mylle Date: Tue, 23 Apr 2024 21:02:40 +0200 Subject: [PATCH] Increased patience for AQR --- Reports/Thesis/sections/nrv_prediction.tex | 43 ++++++++++++++++++ Reports/Thesis/verslag.aux | 12 +++-- Reports/Thesis/verslag.log | 20 ++++---- Reports/Thesis/verslag.pdf | Bin 4066129 -> 4067551 bytes Reports/Thesis/verslag.synctex.gz | Bin 194120 -> 202115 bytes Reports/Thesis/verslag.toc | 8 ++-- .../autoregressive_quantiles.py | 28 ++++++------ 7 files changed, 79 insertions(+), 32 deletions(-) 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 258aa3600ad6607cb1147e22b7d6bbb29dd9deb5..5cf8bd1225398cd571455b4017b34562c0d2178e 100644 GIT binary patch delta 11322 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 delta 9986 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 GAr1f+>f&ht 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)