Increased patience for AQR

This commit is contained in:
2024-04-23 21:02:40 +02:00
parent 12bff03d69
commit f691ab384b
7 changed files with 79 additions and 32 deletions

View File

@@ -510,5 +510,48 @@ Linear & [B, Number of quantiles] \\
\label{tab:gru_model_architecture} \label{tab:gru_model_architecture}
\end{table} \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 \newpage
\subsection{Diffusion} \subsection{Diffusion}

View File

@@ -81,10 +81,12 @@
\newlabel{fig:rnn_model_visualization}{{9}{25}{RNN model input and output visualization\relax }{figure.caption.16}{}} \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 } \@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}{}} \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{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 }
\@writefile{toc}{\contentsline {section}{\numberline {6}Policies for battery optimization}{27}{section.6}\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 {6.1}Baselines}{27}{subsection.6.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Diffusion}{28}{subsection.5.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{27}{subsection.6.2}\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@bbl@mdfivesum{D41D8CD98F00B204E9800998ECF8427E}
\abx@aux@read@bblrerun \abx@aux@read@bblrerun
\gdef \@abspage@last{28} \gdef \@abspage@last{29}

View File

@@ -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 entering extended mode
restricted \write18 enabled. restricted \write18 enabled.
file:line:error style messages 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. 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: Here is how much of TeX's memory you used:
26747 strings out of 476025 26750 strings out of 476025
486892 string characters out of 5790017 486953 string characters out of 5790017
1872388 words of memory out of 5000000 1877388 words of memory out of 5000000
46683 multiletter control sequences out of 15000+600000 46684 multiletter control sequences out of 15000+600000
603223 words of font info for 88 fonts, out of 8000000 for 9000 603223 words of font info for 88 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191 1141 hyphenation exceptions out of 8191
83i,16n,131p,1405b,5180s stack positions out of 10000i,1000n,20000p,200000b,200000s 83i,16n,131p,1405b,5180s stack positions out of 10000i,1000n,20000p,200000b,200000s
</Users/victormylle/Library/texlive/2023/texmf-var/fonts/pk/ljfour/public/bbm/bbm12.600pk></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertinust1math/LibertinusT1Math.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinBiolinumT.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinBiolinumTB.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineT.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineTB.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineTI.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/stix/stix-mathcal.pfb> </Users/victormylle/Library/texlive/2023/texmf-var/fonts/pk/ljfour/public/bbm/bbm12.600pk></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertinust1math/LibertinusT1Math.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinBiolinumT.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinBiolinumTB.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineT.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineTB.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/libertine/LinLibertineTI.pfb></usr/local/texlive/2023/texmf-dist/fonts/type1/public/stix/stix-mathcal.pfb>
Output written on verslag.pdf (28 pages, 4066129 bytes). Output written on verslag.pdf (29 pages, 4067551 bytes).
PDF statistics: PDF statistics:
419 PDF objects out of 1000 (max. 8388607) 425 PDF objects out of 1000 (max. 8388607)
317 compressed objects within 4 object streams 322 compressed objects within 4 object streams
74 named destinations out of 1000 (max. 500000) 76 named destinations out of 1000 (max. 500000)
297 words of extra memory for PDF output out of 10000 (max. 10000000) 297 words of extra memory for PDF output out of 10000 (max. 10000000)

Binary file not shown.

Binary file not shown.

View File

@@ -17,7 +17,7 @@
\contentsline {subsubsection}{\numberline {5.2.3}Linear Model}{16}{subsubsection.5.2.3}% \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.4}Non-linear Model}{22}{subsubsection.5.2.4}%
\contentsline {subsubsection}{\numberline {5.2.5}GRU Model}{25}{subsubsection.5.2.5}% \contentsline {subsubsection}{\numberline {5.2.5}GRU Model}{25}{subsubsection.5.2.5}%
\contentsline {subsection}{\numberline {5.3}Diffusion}{27}{subsection.5.3}% \contentsline {subsection}{\numberline {5.3}Diffusion}{28}{subsection.5.3}%
\contentsline {section}{\numberline {6}Policies for battery optimization}{27}{section.6}% \contentsline {section}{\numberline {6}Policies for battery optimization}{28}{section.6}%
\contentsline {subsection}{\numberline {6.1}Baselines}{27}{subsection.6.1}% \contentsline {subsection}{\numberline {6.1}Baselines}{28}{subsection.6.1}%
\contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{27}{subsection.6.2}% \contentsline {subsection}{\numberline {6.2}Policies using NRV predictions}{28}{subsection.6.2}%

View File

@@ -2,7 +2,9 @@ from src.utils.clearml import ClearMLHelper
#### ClearML #### #### ClearML ####
clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast") 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) task.execute_remotely(queue_name="default", exit_process=True)
from src.policies.PolicyEvaluator import PolicyEvaluator from src.policies.PolicyEvaluator import PolicyEvaluator
@@ -28,24 +30,24 @@ data_config = DataConfig()
data_config.NRV_HISTORY = True data_config.NRV_HISTORY = True
data_config.LOAD_HISTORY = False data_config.LOAD_HISTORY = True
data_config.LOAD_FORECAST = False data_config.LOAD_FORECAST = True
data_config.WIND_FORECAST = False data_config.WIND_FORECAST = True
data_config.WIND_HISTORY = False data_config.WIND_HISTORY = True
data_config.PV_FORECAST = False data_config.PV_FORECAST = True
data_config.PV_HISTORY = False data_config.PV_HISTORY = True
data_config.QUARTER = False data_config.QUARTER = True
data_config.DAY_OF_WEEK = False 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_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_batch_size(512)
data_processor.set_full_day_skip(False) data_processor.set_full_day_skip(False)
@@ -68,8 +70,8 @@ else:
model_parameters = { model_parameters = {
"learning_rate": 0.0001, "learning_rate": 0.0001,
"hidden_size": 256, "hidden_size": 512,
"num_layers": 2, "num_layers": 8,
"dropout": 0.2, "dropout": 0.2,
"time_feature_embedding": 5, "time_feature_embedding": 5,
} }
@@ -125,7 +127,7 @@ trainer = AutoRegressiveQuantileTrainer(
trainer.add_metrics_to_track( trainer.add_metrics_to_track(
[PinballLoss(quantiles), MSELoss(), L1Loss(), CRPSLoss(quantiles)] [PinballLoss(quantiles), MSELoss(), L1Loss(), CRPSLoss(quantiles)]
) )
trainer.early_stopping(patience=10) trainer.early_stopping(patience=25)
trainer.plot_every(15) trainer.plot_every(15)
trainer.train(task=task, epochs=epochs, remotely=True) trainer.train(task=task, epochs=epochs, remotely=True)