diff --git a/Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_1.pdf b/Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87187cdd18b429a07c0007d4b6c728dbb2527c68 Binary files /dev/null and b/Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_1.pdf differ diff --git a/Project3/src/Figures/predicted_vs_true_sample_1.pdf b/Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_2.pdf similarity index 63% rename from Project3/src/Figures/predicted_vs_true_sample_1.pdf rename to Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_2.pdf index 080806b8481c25c8bec2a7a7eab5ad8b87e73507..7434028d9210c91eac7b93bce147ebcc0617dab0 100644 Binary files a/Project3/src/Figures/predicted_vs_true_sample_1.pdf and b/Project3/src/Figures/DoubleSample/predicted_vs_true_both_samples_sample_2.pdf differ diff --git a/Project3/src/Figures/InitialCondition.pdf b/Project3/src/Figures/InitialCondition.pdf deleted file mode 100644 index 916e108fd534bf23a24c7b7c187af03baf9bedd9..0000000000000000000000000000000000000000 Binary files a/Project3/src/Figures/InitialCondition.pdf and /dev/null differ diff --git a/Project3/src/Figures/Optimization/SingleSample/best_loss_theta.pdf b/Project3/src/Figures/Optimization/SingleSample/best_loss_theta.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7c98468b0e8af5d1e37b4f1ed80c983b2e89db8e Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/best_loss_theta.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/best_losses.pdf b/Project3/src/Figures/Optimization/SingleSample/best_losses.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2dbc3ca29e34c74bcff53a91ac59b22fbe0fb6c8 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/best_losses.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/best_predicted_vs_true_single_sample.pdf b/Project3/src/Figures/Optimization/SingleSample/best_predicted_vs_true_single_sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3b509e2bb7969f697673d0423c49bd9db06c4ee1 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/best_predicted_vs_true_single_sample.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/best_prediction_kx_ITERATION.pdf b/Project3/src/Figures/Optimization/SingleSample/best_prediction_kx_ITERATION.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e914f083702a2fe5b0ecaeed4899c2b355dfbce Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/best_prediction_kx_ITERATION.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_0.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ff5f1b6643a5db2918fd03db1a2c56a46e16248b Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_0.pdf differ diff --git a/Project3/src/Figures/loss_theta.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_1.pdf similarity index 59% rename from Project3/src/Figures/loss_theta.pdf rename to Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_1.pdf index 15667db83ac61ba01c5c8fa9dfe8ff96f10ff8cb..a1af6ee52990d634f82a936f223acf0e1bd0916a 100644 Binary files a/Project3/src/Figures/loss_theta.pdf and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_1.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_10.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..22b4aa635bba157af5333eb7f5113439a86aa233 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_10.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_2.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f019371b15094de4ffcdc618e36f961de8a8dce1 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_2.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_3.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f7e03c440fa827eff61e351224207541332f02c8 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_3.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_4.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..aad9824b89ae27c524611b537744d220b1b17798 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_4.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_5.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..11b229bbb5e93e45d6194b80ec7f1d802e861aec Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_5.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_6.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_6.pdf new file mode 100644 index 0000000000000000000000000000000000000000..537991cbb8b09d2747bb38a41f5072c9f9a23741 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_6.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_7.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..affd206dd40978fece6091b733d54d9104dd7635 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_7.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_8.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..71137ffc4ab871708356faf857a4a220def97920 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_8.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_9.pdf b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50df35e3790882bec05d3798a5d19974757b5ce5 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/loss_theta_ITERATION_9.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_0.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ca81a0f2d03b1e8c001af10ca7b4da312bd0e0b6 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_0.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_1.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b2d2165ebc5f618be0b6da3ddce581e323372e60 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_1.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_10.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..602e8dea69d4b24e457bde84de629e80218efa2b Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_10.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_2.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7061e2f656fe93358991b8aaf015591d17e3157c Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_2.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_3.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2c6b5cad88ad65d48e77756bd9a241602e6d44a Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_3.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_4.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b30a9f187bd4d7df33436cb8ed0c6fba1e4c9f3a Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_4.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_5.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d68684560d456c614947ce7e68bcab7f17327f68 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_5.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_6.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_6.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8bf467c71c002a4e735cd55687ef51595b6a02b8 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_6.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_7.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..674d02ccb0e15133eb11fd6a333ba9d0727dac03 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_7.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_8.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ddbcdce63b9508862e87aec2e9560b5df95d8edc Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_8.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_9.pdf b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b6d773b9de6cdb48ca79afb385512c8db228cef7 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/losses_ITERATION_9.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_0.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9515a6c3464d2150137a35204474eb044f71b543 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_0.pdf differ diff --git a/Project3/src/Figures/predicted_vs_true_both_samples_sample_1.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_1.pdf similarity index 65% rename from Project3/src/Figures/predicted_vs_true_both_samples_sample_1.pdf rename to Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_1.pdf index 1bdf500fd46d493e27d635d5659c1e86278c68c9..2959796ea2814d288956a011dce8357dac099e66 100644 Binary files a/Project3/src/Figures/predicted_vs_true_both_samples_sample_1.pdf and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_1.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_10.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..434f81b7fdf899fb41be389d434bc3e09b098af3 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_10.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_2.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..712807c2dca48fabdbe6cf63b006e79f01ce3e74 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_2.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_3.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d039b3fef0a70a1a6cb0f7b9f75ffaa694fabb9d Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_3.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_4.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ec03030d364d25511e87cc799418b17adbb04de1 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_4.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_5.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a0b7d7b1db39a7be0440b1e2e660a2303e3597c Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_5.pdf differ diff --git a/Project3/src/Figures/predicted_vs_true_both_samples_sample_2.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_6.pdf similarity index 60% rename from Project3/src/Figures/predicted_vs_true_both_samples_sample_2.pdf rename to Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_6.pdf index 8321b28b18799d40bca52a8345fda58572862e23..856a2710e1191a19f64c5e9b1307a8844a11b699 100644 Binary files a/Project3/src/Figures/predicted_vs_true_both_samples_sample_2.pdf and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_6.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_7.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f63152cb94b0a1a6ca542379f0ba6921f982854 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_7.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_8.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e312ac188d2dd9b4fbcf0f919328d1338cdfb7e0 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_8.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_9.pdf b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..12bc391686bb8d2d493d1bd4ffc938ca5abf9916 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/predicted_vs_true_single_sample_ITERATION_9.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_0.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..06734e94a6a36ad89f744f57909f5b418b4c54bb Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_0.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_1.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..49f8dcb9c0983ae518c9c7e2ef914c41ae9c4cf0 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_1.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_10.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8474b622a92b4132c93531fd4d62b5c8d8600b3b Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_10.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_2.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c347397ec031c49cfe0a1557e3a3bad4d6087607 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_2.pdf differ diff --git a/Project3/src/Figures/losses.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_3.pdf similarity index 58% rename from Project3/src/Figures/losses.pdf rename to Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_3.pdf index 30dd658aeffbb62590d271fca628f59a571d3777..c4258ad6750d1b8a420aa7c54e848493440d395b 100644 Binary files a/Project3/src/Figures/losses.pdf and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_3.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_4.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8d06b6b7a00dab50e863a82df7dfd596036b8d5 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_4.pdf differ diff --git a/Project3/src/Figures/prediction_kx.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_5.pdf similarity index 83% rename from Project3/src/Figures/prediction_kx.pdf rename to Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_5.pdf index 5d5345eb78cee6d80e955fe83eddccf1afd2f6f6..be4a47b6e7b10ca9c3e419754288dcca12a11d05 100644 Binary files a/Project3/src/Figures/prediction_kx.pdf and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_5.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_6.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_6.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d83c593ef9d2506cf0223227c10ce344e5a6f8e Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_6.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_7.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8099ea23a4075e049a7b3f87192aff76e3407209 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_7.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_8.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98f33cf95df29adda34b928e1155d7b956e8f8e3 Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_8.pdf differ diff --git a/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_9.pdf b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0072882833aaba801dca86364ca780b86f9a204c Binary files /dev/null and b/Project3/src/Figures/Optimization/SingleSample/prediction_kx_ITERATION_9.pdf differ diff --git a/Project3/src/Figures/Optimization/TunerConvergence.pdf b/Project3/src/Figures/Optimization/TunerConvergence.pdf new file mode 100644 index 0000000000000000000000000000000000000000..df817fc4958cf41872783084064333dd8aafe622 Binary files /dev/null and b/Project3/src/Figures/Optimization/TunerConvergence.pdf differ diff --git a/Project3/src/Figures/Optimization/TunerConvergence.png b/Project3/src/Figures/Optimization/TunerConvergence.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd50af546176c906e560aa9c5d9288afbc2ac5f Binary files /dev/null and b/Project3/src/Figures/Optimization/TunerConvergence.png differ diff --git a/Project3/src/HyperParameterOptimization.py b/Project3/src/HyperParameterOptimization.py new file mode 100644 index 0000000000000000000000000000000000000000..79ed06fcb9c3978f5b9c33bc5349b8daf9bca197 --- /dev/null +++ b/Project3/src/HyperParameterOptimization.py @@ -0,0 +1,293 @@ +import numpy as np +import matplotlib.pyplot as plt + +import skopt +from skopt import gp_minimize # Import the skopt library for hyperparameter optimization +from skopt.plots import plot_convergence, plot_objective +from skopt.space import Real +from skopt.utils import use_named_args + +from MCMC import * + +#################################################################################################### +# Setup +#################################################################################################### +n_calls = 11 #!25 + +# MCMC and solver parameters +MCMC_STEPS = 100#!500 +MCMC_SUBSTEPS = 20 +NUMBER_SAMPLES = 1 +if NUMBER_SAMPLES == 1: + FigureFolder = 'Figures/Optimization/SingleSample' +else: + FigureFolder = 'Figures/Optimization/DoubleSample' + +x0, x1 = 0, 4 + +NTime = 500 +T_end = 10 + +# Upwind viscosity parameter (used in flux computation) +M = 1 + +k_i = 9 +k_mu, k_sigma_default = 1., 0.25 + +beta_default = 0.05 + + +# Define hyperparameters for optimization +dim_beta = Real(low=0.01, high=0.1, name='dim_beta') +dim_k_sigma = Real(low=0.1, high=0.4, name='dim_k_sigma') + +dimensions = [ + dim_beta, + dim_k_sigma, +] + +# start parameter for optimization +default_parameters = [ + beta_default, + k_sigma_default, +] + + +#################################################################################################### +# Hyperparameter Optimization +#################################################################################################### +@use_named_args(dimensions=dimensions) +def fitness(dim_beta, dim_k_sigma): + global ITERATION + + print(f'ITERATION: {ITERATION}') + # Print the hyper-parameter configuration + print('beta:', dim_beta) + print('k_sigma:', dim_k_sigma) + print() + + # MCMC + Theta, x_Theta, LOSS_THETA, LOSS_PHI = MCMC( + MCMC_STEPS=MCMC_STEPS, + MCMC_SUBSTEPS=MCMC_SUBSTEPS, + tau=tau, + beta=dim_beta, + gamma=gamma, + k_i=k_i, + k_mu=k_mu, + k_sigma=dim_k_sigma, + u_true=u_true, + number_samples=NUMBER_SAMPLES + ) + + # Get the error + error = LOSS_THETA[-1] + + print(f'Error: {error}') + + if np.isnan(error): + error = 1e10 + + # plotting + # Combine both loss functions + plt.figure() + plt.title('Losses') + plt.plot(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') + plt.plot(LOSS_PHI[:], '--o', color='green', label='$\Phi(\phi$)') + plt.xlabel('Iteration') + plt.ylabel('Loss') + plt.legend() + plt.grid() + plt.savefig(f'{FigureFolder}/losses_ITERATION_{ITERATION}.pdf', bbox_inches='tight') + # plt.show() + plt.close() + + # Only the phi(theta) loss is plotted + plt.figure() + plt.title('Evolution of entropy loss') + plt.loglog(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') + plt.xlabel('Iteration') + plt.ylabel('$\Phi(\Theta)$') + plt.grid() + plt.savefig(f'{FigureFolder}/loss_theta_ITERATION_{ITERATION}.pdf', bbox_inches='tight') + # plt.show() + plt.close() + + # Solve with the final Theta + t_vec, h_final = solve_PDE(Theta, T_end, NTime, x, dx, x_Theta, NUMBER_SAMPLES) + h_final = [extract_positions(t_vec[i], h_final[i], x) for i in range(NUMBER_SAMPLES)] + h_final = np.array([h_final[i].T for i in range(NUMBER_SAMPLES)]) + + colors = ['blue', 'red', 'green', 'purple'] + for sample in range(NUMBER_SAMPLES): + plt.figure() + plt.title(f'Predicted vs True - sample {sample+1}') + for i in range(4): + plt.plot([], [], color=colors[i], label=f'x = {x_observed[i]}') + plt.plot(h_final[sample, i, :], color=colors[i]) + plt.plot(u_true[i, :, sample], '--o', color=colors[i]) + plt.plot([], [], color='black', label='Predicted') + plt.plot([], [], '--o', color='black', label='True') + plt.xlabel('Time') + plt.ylabel('u(x,t)') + plt.legend(ncol=4, loc='upper center', bbox_to_anchor=(0.5, -0.1)) + plt.grid() + if NUMBER_SAMPLES == 1: + plt.savefig(f'{FigureFolder}/predicted_vs_true_single_sample_ITERATION_{ITERATION}.pdf', bbox_inches='tight') + else: + plt.savefig(f'{FigureFolder}/predicted_vs_true_both_samples_sample_{sample+1}_ITERATION_{ITERATION}.pdf', bbox_inches='tight') + # plt.show() + plt.close() + + # Plot the final theta -> prediction for k(x) + plt.figure() + plt.title('Prediction for k(x)') + plt.plot(x_Theta, Theta, '--o', color='blue') + plt.xlabel('$x$') + plt.ylabel('$k(x)$') + plt.grid() + plt.savefig(f'{FigureFolder}/prediction_kx_ITERATION_{ITERATION}.pdf', bbox_inches='tight') + # plt.show() + plt.close() + + # next iteration + ITERATION += 1 + + return error + + + + +#################################################################################################### +# Optimization +#################################################################################################### +ITERATION = 0 + +# Run the hyperparameter optimization +search_result = gp_minimize( + func=fitness, + dimensions=dimensions, + base_estimator='GP',#DUMMY', # ! 'GP', 'RF', 'ET', 'GBRT', 'DUMMY' + acq_func='EI', # Expected Improvement. + n_calls=n_calls, + x0=default_parameters, + random_state=42, +) + +# Save results + timings +with open('data/TunerResults.txt', 'w') as f: + f.write('... Tuner Results and Timings ...\n') + f.write(f'... Tuner results ...\n') + f.write(f'n_calls: {n_calls}\n') + f.write(f'Best error: {search_result.fun}\n') + f.write(f'Best parameters: {search_result.x}\n') + f.write(f'Best beta: {search_result.x[0]}\n') + f.write(f'Best k_sigma: {search_result.x[1]}\n') + +# Save to another file +np.savez( + 'data/TunerResults.npz', + n_calls=n_calls, best_error=search_result.fun, + best_parameters=search_result.x, + best_beta=search_result.x[0], + beta_k_sigma=search_result.x[1], +) + + +# print result +print(search_result.x) + +# Plot convergence +plt.figure() +_ = plot_convergence(search_result) +plt.savefig('Figures/Optimization/TunerConvergence.pdf') +plt.savefig('Figures/Optimization/TunerConvergence.png') +# plt.show() +plt.close() + +# Plot objective +plt.figure() +_ = plot_objective(search_result, show_points=True, size=3.8) +plt.savefig('Figures/Optimization/TunerObjective.pdf') +plt.savefig('Figures/Optimization/TunerObjective.png') +# plt.show() +plt.close() + + + +# Train best one +# MCMC +Theta, x_Theta, LOSS_THETA, LOSS_PHI = MCMC( + MCMC_STEPS=MCMC_STEPS, + MCMC_SUBSTEPS=MCMC_SUBSTEPS, + tau=tau, + beta=search_result.x[0], + gamma=gamma, + k_i=k_i, + k_mu=k_mu, + k_sigma=search_result.x[1], + u_true=u_true, + number_samples=NUMBER_SAMPLES +) + +# plotting +# Combine both loss functions +plt.figure() +plt.title('Losses') +plt.plot(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') +plt.plot(LOSS_PHI[:], '--o', color='green', label='$\Phi(\phi$)') +plt.xlabel('Iteration') +plt.ylabel('Loss') +plt.legend() +plt.grid() +plt.savefig(f'{FigureFolder}/best_losses.pdf', bbox_inches='tight') +# plt.show() +plt.close() + +# Only the phi(theta) loss is plotted +plt.figure() +plt.title('Evolution of entropy loss') +plt.loglog(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') +plt.xlabel('Iteration') +plt.ylabel('$\Phi(\Theta)$') +plt.grid() +plt.savefig(f'{FigureFolder}/best_loss_theta.pdf', bbox_inches='tight') +# plt.show() +plt.close() + +# Solve with the final Theta +t_vec, h_final = solve_PDE(Theta, T_end, NTime, x, dx, x_Theta, NUMBER_SAMPLES) +h_final = [extract_positions(t_vec[i], h_final[i], x) for i in range(NUMBER_SAMPLES)] +h_final = np.array([h_final[i].T for i in range(NUMBER_SAMPLES)]) + +colors = ['blue', 'red', 'green', 'purple'] +for sample in range(NUMBER_SAMPLES): + plt.figure() + plt.title(f'Predicted vs True - sample {sample+1}') + for i in range(4): + plt.plot([], [], color=colors[i], label=f'x = {x_observed[i]}') + plt.plot(h_final[sample, i, :], color=colors[i]) + plt.plot(u_true[i, :, sample], '--o', color=colors[i]) + plt.plot([], [], color='black', label='Predicted') + plt.plot([], [], '--o', color='black', label='True') + plt.xlabel('Time') + plt.ylabel('u(x,t)') + plt.legend(ncol=4, loc='upper center', bbox_to_anchor=(0.5, -0.1)) + plt.grid() + if NUMBER_SAMPLES == 1: + plt.savefig(f'{FigureFolder}/best_predicted_vs_true_single_sample.pdf', bbox_inches='tight') + else: + plt.savefig(f'{FigureFolder}/best_predicted_vs_true_both_samples_sample_{sample+1}.pdf', bbox_inches='tight') + # plt.show() + plt.close() + +# Plot the final theta -> prediction for k(x) +plt.figure() +plt.title('Prediction for k(x)') +plt.plot(x_Theta, Theta, '--o', color='blue') +plt.xlabel('$x$') +plt.ylabel('$k(x)$') +plt.grid() +plt.savefig(f'{FigureFolder}/best_prediction_kx_ITERATION.pdf', bbox_inches='tight') +# plt.show() +plt.close() \ No newline at end of file diff --git a/Project3/src/MCMC.py b/Project3/src/MCMC.py index d2a57b43165522396ac2df4e096853b71b806544..75667502a74b130c2f607af4e12439d0d2bdfabb 100644 --- a/Project3/src/MCMC.py +++ b/Project3/src/MCMC.py @@ -297,8 +297,8 @@ if __name__ == '__main__': # Combine both loss functions plt.figure() plt.title('Losses') - [plt.plot(LOSS_THETA[:][i], '--o', color='red', label='$\Phi(\Theta)$') for i in range(NUMBER_SAMPLES)] - [plt.plot(LOSS_PHI[:][i], '--o', color='green', label='$\Phi(\phi$)') for i in range(NUMBER_SAMPLES)] + plt.plot(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') + plt.plot(LOSS_PHI[:], '--o', color='green', label='$\Phi(\phi$)') plt.xlabel('Iteration') plt.ylabel('Loss') plt.legend() @@ -309,7 +309,7 @@ if __name__ == '__main__': # Only the phi(theta) loss is plotted plt.figure() plt.title('Evolution of entropy loss') - [plt.loglog(LOSS_THETA[:][i], '--o', color='red', label='$\Phi(\Theta)$') for i in range(NUMBER_SAMPLES)] + plt.loglog(LOSS_THETA[:], '--o', color='red', label='$\Phi(\Theta)$') plt.xlabel('Iteration') plt.ylabel('$\Phi(\Theta)$') plt.grid() diff --git a/Project3/src/data/TunerResults.npz b/Project3/src/data/TunerResults.npz new file mode 100644 index 0000000000000000000000000000000000000000..43e6d2932c9f521ca735f5c6f0bce4af6c675854 Binary files /dev/null and b/Project3/src/data/TunerResults.npz differ diff --git a/Project3/src/data/TunerResults.txt b/Project3/src/data/TunerResults.txt new file mode 100644 index 0000000000000000000000000000000000000000..d3f0f66c8ced59b58bd24396bdaaefeb56d41f2d --- /dev/null +++ b/Project3/src/data/TunerResults.txt @@ -0,0 +1,7 @@ +... Tuner Results and Timings ... +... Tuner results ... +n_calls: 11 +Best error: 43.32473738706938 +Best parameters: [0.012075618253727419, 0.25743239807751683] +Best beta: 0.012075618253727419 +Best k_sigma: 0.25743239807751683