diff --git a/.github/workflows/classroom.yml b/.github/workflows/classroom.yml index 92a4edd..b58bdff 100644 --- a/.github/workflows/classroom.yml +++ b/.github/workflows/classroom.yml @@ -16,8 +16,11 @@ jobs: uses: actions/checkout@v4 - name: Hello world test id: hello-world-test - uses: education/autograding-python-grader@v1 + uses: education/autograding-command-grader@v1 with: + test-name: Hello world test + setup-command: sudo -H pip3 install pytest + command: pytest timeout: 5 max-score: 5 - name: Autograding Reporter diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index 763a95f..0000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Docker Image CI - -on: - pull_request: - branches: [ "main" ] - # Allow mannually trigger - workflow_dispatch: - -jobs: - - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Build the Codespaces container image - run: docker build . --file .devcontainer/Dockerfile diff --git a/.gitignore b/.gitignore index 4ded053..fdf3903 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ *.pyc .coverage *.egg-info/ +*.pt \ No newline at end of file diff --git a/README.md b/README.md index da21a6d..088a122 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,18 @@ -# Autograding Example: Python -This example project is written in Python, and tested with pytest. +# Project 23: Reliable Surrogate Models of Noisy Data -## The assignment -The tests are failing right now because the method isn't outputting the correct string. Fixing this up will make the tests green. -## Setup command +This project was part of the 2024 Bayesian Optimization Hackathon for Chemistry and Materials (https://ac-bo-hackathon.github.io/). The goal of this project was to explore the impact of noisy measurements on the performance of various Bayesian optimizers. We explored this problem using both the BayBE package as well as BoTorch. The BoTorch version evaluated the impact of incorporating noise assumptions in the surrogate model, while the BayBE approach uses the default BayBE model which does incorporate some noise assumptions (?). We used the 2-dimensional Schwefel function as a minimization target. This function has a global minimum at ~[420, 420]. We mainly evaluated the optmimization methods in the range of [-50,50]. Over this range the Schwefel function has high frequency optimizations leading to many local minima, making this a challenging optimization problem. -See `postCreateCommand` from [`devcontainer.json`](.devcontainer/devcontainer.json). +## Guide to Project: -## Run command -`pytest` +1. BoTorch arm: The BoTorch half of the project can be viewed in the `analyse_grid_experiment.ipynb`, `botorch_results_plots.ipnb`', and `line_plot.ipynb` notebooks. Source code is in `run_experiment.py`. `run_grid_botorch.py`, and `run_grid_experiments.py`. -## Notes -- pip's install path is not included in the PATH var by default, so without installing via `sudo -H`, pytest would be unaccessible. +2. The BayBE half of the project can be viewed in the `noisy_optimization_BayBE_original_bounds.ipynb` (for [-50,50] bounds) and `noisy_optimization_BayBE_extendedBounds.ipynb` (for [0,500] bounds). Source code is in src/baybe_utils. + +## Team + +- Darby Brown +- Karim Ben Hicham +- Joe Manning +- Brenden Pelkie +- Utkarsh Pratiush diff --git a/analyse_grid_experiment.ipynb b/analyse_grid_experiment.ipynb new file mode 100644 index 0000000..9b17e32 --- /dev/null +++ b/analyse_grid_experiment.ipynb @@ -0,0 +1,1438 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-03-28 23:45:15,122\tINFO worker.py:1558 -- Calling ray.init() again after it has already been called.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started 1 2 noise 10 budget 30 seed 0, time: 1.00s\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 0, total time: 0.000 seconds.\n", + "Started 2 2 noise 10 budget 30 seed 0, time: 2.13s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[ 39.7946, -50.0000]], dtype=torch.float64), tensor([882.1972], dtype=torch.float64)\n", + "Started 3 2 noise 20 budget 30 seed 0, time: 3.25s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started 4 2 noise 20 budget 30 seed 0, time: 4.37s\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-22.9021, -8.9259]], dtype=torch.float64), tensor([838.9029], dtype=torch.float64)\n", + "Started 5 10 noise 10 budget 30 seed 0, time: 5.51s\n", + "\u001b[36m(worker pid=21600)\u001b[0m Starting iteration 2, total time: 4.108 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "Started 6 10 noise 10 budget 30 seed 0, time: 6.65s\n", + "Started 7 10 noise 20 budget 30 seed 0, time: 7.79s\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 28.1781, -50.0000]], dtype=torch.float64), tensor([916.3048], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started 8 10 noise 20 budget 30 seed 0, time: 8.94s\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-12.7701, -7.1403]], dtype=torch.float64), tensor([880.6680], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0mStarted 9 2 noise 10 budget 30 seed 1, time: 10.13s\n", + "\n", + "Started 10 2 noise 10 budget 30 seed 1, time: 11.48s\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 3, total time: 9.211 seconds.\u001b[32m [repeated 12x across cluster]\u001b[0m\n", + "Started 11 2 noise 20 budget 30 seed 1, time: 12.75s\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 19.8383, -13.8344]], dtype=torch.float64), tensor([851.0293], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "Started 12 2 noise 20 budget 30 seed 1, time: 14.01s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started 13 10 noise 10 budget 30 seed 1, time: 15.27s\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[-4.0885, -4.4151]], dtype=torch.float64), tensor([859.9963], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 4, total time: 14.475 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ -2.3311, -25.0347]], dtype=torch.float64), tensor([845.3985], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-43.2568, -9.9327]], dtype=torch.float64), tensor([858.0034], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m Starting iteration 6, total time: 20.949 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 50., -50.]], dtype=torch.float64), tensor([853.1866], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[4.6972, 0.5243]], dtype=torch.float64), tensor([852.7343], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 6, total time: 23.759 seconds.\u001b[32m [repeated 11x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 7.8979, -27.8577]], dtype=torch.float64), tensor([816.3171], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-41.7001, -19.7992]], dtype=torch.float64), tensor([834.9580], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 9, total time: 32.832 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ -3.4078, -32.0686]], dtype=torch.float64), tensor([820.5409], dtype=torch.float64)\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 50.0000, -32.3497]], dtype=torch.float64), tensor([791.0505], dtype=torch.float64)\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-34.1875, 36.2613]], dtype=torch.float64), tensor([836.2319], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 10, total time: 38.054 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 5.2522, -8.2017]], dtype=torch.float64), tensor([866.1509], dtype=torch.float64)\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-46.5142, 50.0000]], dtype=torch.float64), tensor([829.1963], dtype=torch.float64)\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 10, total time: 41.094 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 5.2899, -32.8627]], dtype=torch.float64), tensor([812.7245], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-18.3506, -27.5281]], dtype=torch.float64), tensor([798.8012], dtype=torch.float64)\u001b[32m [repeated 9x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 7x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 11, total time: 45.223 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 3.2589, -33.8143]], dtype=torch.float64), tensor([825.7982], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-30.2566, -27.0914]], dtype=torch.float64), tensor([797.1991], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 12, total time: 50.454 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 7.2373, -29.8487]], dtype=torch.float64), tensor([795.9076], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-50.0000, -19.9661]], dtype=torch.float64), tensor([857.3711], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 13, total time: 55.355 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 11.8526, -28.3617]], dtype=torch.float64), tensor([767.2271], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-24.7510, -30.9211]], dtype=torch.float64), tensor([808.5573], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 50.0000, -17.2480]], dtype=torch.float64), tensor([736.8433], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 12, total time: 57.665 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[38.4051, 50.0000]], dtype=torch.float64), tensor([835.7031], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[ 40.3226, -12.8266]], dtype=torch.float64), tensor([827.7604], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 16, total time: 69.325 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[50., 50.]], dtype=torch.float64), tensor([762.9765], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 50.0000, -23.6988]], dtype=torch.float64), tensor([775.0076], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 14, total time: 69.723 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-50., -50.]], dtype=torch.float64), tensor([915.1133], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 41.1306, -24.0083]], dtype=torch.float64), tensor([815.3022], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 15, total time: 75.540 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[50.0000, -2.2373]], dtype=torch.float64), tensor([789.9104], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 50.0000, -28.7868]], dtype=torch.float64), tensor([762.5755], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 20, total time: 86.525 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[50.0000, -9.9561]], dtype=torch.float64), tensor([815.4584], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ -8.7837, -32.1145]], dtype=torch.float64), tensor([866.3542], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 21, total time: 92.081 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[40.0832, -6.2144]], dtype=torch.float64), tensor([840.2569], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 3.3151, 50.0000]], dtype=torch.float64), tensor([816.5994], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 22, total time: 98.173 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-25.1044, 50.0000]], dtype=torch.float64), tensor([776.6532], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 8.3266, 50.0000]], dtype=torch.float64), tensor([785.5709], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=16224)\u001b[0m Starting iteration 20, total time: 103.254 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[-27.1338, -29.3408]], dtype=torch.float64), tensor([806.4444], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 11.7550, -20.6524]], dtype=torch.float64), tensor([817.1873], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 20, total time: 106.290 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[50.0000, 20.1912]], dtype=torch.float64), tensor([867.6270], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 50.0000, -14.1050]], dtype=torch.float64), tensor([823.7826], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 25, total time: 118.353 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[-50.0000, -17.6397]], dtype=torch.float64), tensor([828.9475], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[ 50.0000, -13.8943]], dtype=torch.float64), tensor([795.2972], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 22, total time: 116.780 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-50.0000, -7.0270]], dtype=torch.float64), tensor([884.2838], dtype=torch.float64)\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 11.5881, -28.4256]], dtype=torch.float64), tensor([820.9236], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 10.3265, -38.3447]], dtype=torch.float64), tensor([842.7911], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 27, total time: 128.574 seconds.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m New candidate: tensor([[50.0000, 46.3396]], dtype=torch.float64), tensor([753.8016], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 50.0000, -27.0164]], dtype=torch.float64), tensor([809.2819], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m Starting iteration 20, total time: 132.525 seconds.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[50., 50.]], dtype=torch.float64), tensor([763.6005], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 25.7630, -16.6807]], dtype=torch.float64), tensor([808.9346], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 25, total time: 133.565 seconds.\u001b[32m [repeated 11x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[42.8940, 50.0000]], dtype=torch.float64), tensor([792.8038], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 30.9688, -28.6224]], dtype=torch.float64), tensor([828.3876], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "Started 14 10 noise 10 budget 30 seed 1, time: 145.49s\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 1, total time: 4.049 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-50., -50.]], dtype=torch.float64), tensor([903.5702], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ -8.4299, -28.6028]], dtype=torch.float64), tensor([820.0672], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "Started 15 10 noise 20 budget 30 seed 1, time: 151.66s\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 2, total time: 9.295 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[31.3218, -5.0777]], dtype=torch.float64), tensor([886.3668], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ -3.9800, -50.0000]], dtype=torch.float64), tensor([873.1629], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started 16 10 noise 20 budget 30 seed 1, time: 156.41s\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 3, total time: 14.962 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-26.1165, 44.1587]], dtype=torch.float64), tensor([810.5547], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[ -3.1083, -11.8278]], dtype=torch.float64), tensor([846.2030], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 2, total time: 9.647 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-25.6619, 50.0000]], dtype=torch.float64), tensor([790.4702], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 7.2330, -26.9222]], dtype=torch.float64), tensor([789.4201], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 8x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 4, total time: 19.373 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[-15.2542, -10.3626]], dtype=torch.float64), tensor([835.2637], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 13.9418, -34.5552]], dtype=torch.float64), tensor([809.1237], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 2, total time: 9.338 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-24.6997, 47.8755]], dtype=torch.float64), tensor([765.0407], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ -0.6654, -12.1565]], dtype=torch.float64), tensor([788.3081], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 8, total time: 37.944 seconds.\u001b[32m [repeated 11x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[-5.1859, -7.0773]], dtype=torch.float64), tensor([799.1559], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[ -0.8872, -24.8199]], dtype=torch.float64), tensor([812.2661], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=16224)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 5, total time: 21.111 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-50.0000, 40.9712]], dtype=torch.float64), tensor([879.9357], dtype=torch.float64)\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ -5.2461, -25.6446]], dtype=torch.float64), tensor([852.7321], dtype=torch.float64)\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 43.2992, -38.5375]], dtype=torch.float64), tensor([819.8991], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 6, total time: 25.745 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[-32.0303, 50.0000]], dtype=torch.float64), tensor([806.4923], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 50.0000, -10.4556]], dtype=torch.float64), tensor([790.5641], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 10, total time: 48.259 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[-14.4521, -20.6974]], dtype=torch.float64), tensor([788.0802], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m New candidate: tensor([[ 48.5349, -38.2677]], dtype=torch.float64), tensor([807.3869], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 10, total time: 49.010 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-12.7355, -9.1832]], dtype=torch.float64), tensor([792.5068], dtype=torch.float64)\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 19.2634, -43.2288]], dtype=torch.float64), tensor([865.4372], dtype=torch.float64)\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 50., -50.]], dtype=torch.float64), tensor([820.4086], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 11, total time: 54.396 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-28.7328, -10.3676]], dtype=torch.float64), tensor([807.7967], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ -2.0508, -20.0832]], dtype=torch.float64), tensor([849.6891], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 11, total time: 47.945 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[-37.2390, 32.6825]], dtype=torch.float64), tensor([837.7983], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ -9.7445, -15.3912]], dtype=torch.float64), tensor([819.6380], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 12, total time: 55.075 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-29.2553, 50.0000]], dtype=torch.float64), tensor([791.5271], dtype=torch.float64)\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ -0.4768, -12.8039]], dtype=torch.float64), tensor([826.4063], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 5.7003, -22.8672]], dtype=torch.float64), tensor([809.5272], dtype=torch.float64)\n", + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 13, total time: 60.470 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[43.7032, 50.0000]], dtype=torch.float64), tensor([797.4740], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ -6.5204, -50.0000]], dtype=torch.float64), tensor([873.5776], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 18, total time: 87.896 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[40.3901, 50.0000]], dtype=torch.float64), tensor([805.4399], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 7.3687, -16.1100]], dtype=torch.float64), tensor([805.0210], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 15, total time: 70.966 seconds.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m New candidate: tensor([[41.4368, 14.5369]], dtype=torch.float64), tensor([823.0945], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 40.3352, -35.4813]], dtype=torch.float64), tensor([829.6786], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 20, total time: 98.177 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-23.9160, 21.9873]], dtype=torch.float64), tensor([847.8563], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ -0.0502, -19.0402]], dtype=torch.float64), tensor([816.6353], dtype=torch.float64)\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 50.0000, -32.5339]], dtype=torch.float64), tensor([773.7052], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 17, total time: 81.008 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-31.4983, -50.0000]], dtype=torch.float64), tensor([852.5990], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 50.0000, -30.7047]], dtype=torch.float64), tensor([793.2208], dtype=torch.float64)\n", + "\u001b[36m(worker pid=7436)\u001b[0m Starting iteration 22, total time: 108.773 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[50.0000, 17.2285]], dtype=torch.float64), tensor([822.1293], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 50.0000, -13.6179]], dtype=torch.float64), tensor([786.0627], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 19, total time: 91.827 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-15.4671, -7.8007]], dtype=torch.float64), tensor([826.9511], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[ 38.7456, -31.9759]], dtype=torch.float64), tensor([826.4608], dtype=torch.float64)\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 45.8373, -13.7136]], dtype=torch.float64), tensor([814.5100], dtype=torch.float64)\n", + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 20, total time: 96.914 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=7436)\u001b[0m New candidate: tensor([[-30.4446, 50.0000]], dtype=torch.float64), tensor([774.5900], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 50.0000, -17.3952]], dtype=torch.float64), tensor([805.6346], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 23, total time: 113.456 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[50.0000, 10.5149]], dtype=torch.float64), tensor([796.6671], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=19872)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 41.7309, -34.3034]], dtype=torch.float64), tensor([812.4763], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 24, total time: 123.603 seconds.\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[-33.2006, -1.5149]], dtype=torch.float64), tensor([816.0258], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 50.0000, -28.5068]], dtype=torch.float64), tensor([772.5629], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m Starting iteration 25, total time: 124.341 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-8.5319, 50.0000]], dtype=torch.float64), tensor([801.9322], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ 3.1303, -18.8035]], dtype=torch.float64), tensor([803.7331], dtype=torch.float64)\n", + "\u001b[36m(worker pid=19872)\u001b[0m Starting iteration 26, total time: 134.097 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=19872)\u001b[0m New candidate: tensor([[-50.0000, 2.1180]], dtype=torch.float64), tensor([861.9473], dtype=torch.float64)\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 50.0000, -31.2472]], dtype=torch.float64), tensor([768.8106], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=11148)\u001b[0m Starting iteration 24, total time: 118.792 seconds.\u001b[32m [repeated 10x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[-24.4003, 50.0000]], dtype=torch.float64), tensor([773.3922], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[ 50.0000, -14.8577]], dtype=torch.float64), tensor([785.9328], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m Starting iteration 24, total time: 129.253 seconds.\u001b[32m [repeated 8x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[-20.3774, 46.9667]], dtype=torch.float64), tensor([784.1892], dtype=torch.float64)\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 42.7733, -13.8050]], dtype=torch.float64), tensor([806.1760], dtype=torch.float64)\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=16224)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=16224)\u001b[0m Starting iteration 29, total time: 141.661 seconds.\u001b[32m [repeated 9x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[-23.1438, 44.4639]], dtype=torch.float64), tensor([791.5253], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=16224)\u001b[0m New candidate: tensor([[ 1.3242, -19.8745]], dtype=torch.float64), tensor([803.6881], dtype=torch.float64)\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "0\n", + "0\n", + "0\n", + "\u001b[36m(worker pid=2788)\u001b[0m Starting iteration 29, total time: 141.226 seconds.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[-23.2098, 50.0000]], dtype=torch.float64), tensor([796.0394], dtype=torch.float64)\u001b[32m [repeated 7x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=18916)\u001b[0m New candidate: tensor([[ 50., -50.]], dtype=torch.float64), tensor([830.0307], dtype=torch.float64)\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 50.0000, -26.6882]], dtype=torch.float64), tensor([783.2225], dtype=torch.float64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 5x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m warnings.warn(\u001b[32m [repeated 3x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m Starting iteration 25, total time: 116.711 seconds.\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=21600)\u001b[0m New candidate: tensor([[48.4517, 3.3870]], dtype=torch.float64), tensor([790.9030], dtype=torch.float64)\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=2788)\u001b[0m New candidate: tensor([[ 5.9724, 50.0000]], dtype=torch.float64), tensor([806.1060], dtype=torch.float64)\n", + "\u001b[36m(worker pid=11148)\u001b[0m New candidate: tensor([[ 43.3958, -23.9999]], dtype=torch.float64), tensor([816.2181], dtype=torch.float64)\n", + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=7436)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=8932)\u001b[0m c:\\Users\\queim\\micromambaenv\\envs\\mobo\\lib\\site-packages\\gpytorch\\likelihoods\\noise_models.py:148: NumericalWarning: Very small noise values detected. This will likely lead to numerical instabilities. Rounding small noise values up to 1e-06.\u001b[32m [repeated 5x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m warnings.warn(\u001b[32m [repeated 6x across cluster]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(worker pid=21600)\u001b[0m Starting iteration 27, total time: 120.961 seconds.\u001b[32m [repeated 4x across cluster]\u001b[0m\n", + "\u001b[36m(worker pid=8932)\u001b[0m New candidate: tensor([[-16.5342, 45.6331]], dtype=torch.float64), tensor([811.4356], dtype=torch.float64)\u001b[32m [repeated 6x across cluster]\u001b[0m\n", + "0\n", + "0\n", + "all experiments done, time: 324.22s\n" + ] + } + ], + "source": [ + "import torch\n", + "import pandas as pd\n", + "from run_grid_experiments import run_grid_experiments\n", + "\n", + "seeds = list(range(2))\n", + "n_inits = [2,10]\n", + "noise_levels = [10, 20]\n", + "noise_bools = [True, False]\n", + "budget = 30\n", + "run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\queim\\AppData\\Local\\Temp\\ipykernel_18664\\636701015.py:10: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " df = pd.concat([df, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool], \"best\": [sliding_min[-1].item()]})])\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
02100True767.079651
02101True767.079651
02200True767.079651
02201True767.079651
010100True767.079651
010101True767.079651
010200True767.079651
010201True767.079651
02100False767.079651
02101False781.773621
02200False767.079651
02201False794.947937
010100False778.442871
010101False779.081116
010200False801.972839
010201False794.947937
\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 2 10 0 True 767.079651\n", + "0 2 10 1 True 767.079651\n", + "0 2 20 0 True 767.079651\n", + "0 2 20 1 True 767.079651\n", + "0 10 10 0 True 767.079651\n", + "0 10 10 1 True 767.079651\n", + "0 10 20 0 True 767.079651\n", + "0 10 20 1 True 767.079651\n", + "0 2 10 0 False 767.079651\n", + "0 2 10 1 False 781.773621\n", + "0 2 20 0 False 767.079651\n", + "0 2 20 1 False 794.947937\n", + "0 10 10 0 False 778.442871\n", + "0 10 10 1 False 779.081116\n", + "0 10 20 0 False 801.972839\n", + "0 10 20 1 False 794.947937" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " for seed in seeds:\n", + " X, Y, Y_real, model = torch.load(f\"results/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " df = pd.concat([df, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool], \"best\": [sliding_min[-1].item()]})])\n", + " \n", + "df " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GP with noise\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 best
 meanstd
noise_level10201020
n_init    
2767.08767.080.000.00
10767.08767.080.000.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GP without noise\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 best
 meanstd
noise_level10201020
n_init    
2774.43781.0110.3919.71
10778.76798.460.454.97
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_no_noise = df[df[\"noise_bool\"] == False]\n", + "df_noise = df[df[\"noise_bool\"] == True]\n", + "# df = df.groupby([\"n_init\", \"noise_level\", \"noise_bool\"]).agg({\"min\": [\"mean\", \"std\"]})\n", + "df_no_noise = df_no_noise.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "df_noise = df_noise.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "print(\"GP with noise\")\n", + "display(df_noise.unstack().style.format(\"{:.2f}\").background_gradient(cmap='viridis'))\n", + "print(\"GP without noise\")\n", + "display(df_no_noise.unstack().style.format(\"{:.2f}\").background_gradient(cmap='viridis'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/botorch_results_plots.ipynb b/botorch_results_plots.ipynb new file mode 100644 index 0000000..64bf7b6 --- /dev/null +++ b/botorch_results_plots.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 73, + "id": "d6c817ba-cab1-419e-97b0-d5d5f7fd4f01", + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sn\n", + "import numpy as np\n", + "import torch\n", + "import pandas as pd\n", + "\n", + "from src import visualization\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "783c52b7-cf3b-44b7-b14f-445227c15754", + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5))\n", + "n_inits = [2, 4, 8, 10]\n", + "noise_levels = [1, 5, 10, 20]\n", + "noise_bools = [True, False]\n", + "n_inits = n_inits[::-1]\n", + "budget = 30\n", + "iteration_cutoff = 20" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "9a3411fe-7c63-47eb-b080-800019cd1458", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "sm_list = {}\n", + "performance_matrix_homo = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "noise_bool = True\n", + "for i, n_init in enumerate(n_inits):\n", + " for j, noise_level in enumerate(noise_levels):\n", + " \n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for ii in range(Y_real.shape[0]):\n", + " sliding_min[ii] = Y_real[:ii+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " \n", + " sm_mean = sm_agg.mean(0)[:iteration_cutoff]\n", + " sm_std = sm_agg.std(0)\n", + " sm_list[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " performance_matrix_homo[i,j] = sm_mean.min()\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_homo)\n", + "plt.title(f'BoTorch, Homoscedastic Noise Kernel')\n", + "plt.savefig(f'BoTorch_heatmap{noise_bool}.png', dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "ce3eb3a5-5150-4b5b-bd41-636edd081feb", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XK7WixMREekFLV5nY82aNXByckLPnj0VZTk5OQBKOhKeZWBgoPgub9myJdLT0xEVFYUmTZoAAMLCwiCXyxEYGKhWDOVONvr06aNSduPGDcyaNQt79uzBkCFDsHDhQrVenIiIiMQjl8uxZs0aDB8+HIaG/37l161bF97e3hg3bhy+/PJL2NvbY9euXYolrgBQr149dOvWDWPGjMGqVatQWFiISZMmYfDgwWqtRAFe8TobDx48wJgxY9CwYUMUFRXhwoULWLduHdzd3V+lOSIiIp2mjetsAEBoaCgSEhIwatQopXIjIyPs27cPjo6O6NWrF/z8/PDrr79i3bp16NGjh6Lexo0bUbduXXTs2BE9evRAmzZt8NNPP6kdh1oTRDMyMrBo0SKsWLEC/v7+OHToENq2bav2ixIREekTbY2idOnSBYIglLqtdu3aZV75287ODps2bfrPcZQ72ViyZAm++OILuLi44Lfffit1WIWIiIjoeeVONmbNmgVTU1N4e3tj3bp1WLduXan1np3tSkRERLwRW7mTjWHDhpW59JWIiIhU6fu3Z7mTjbVr14oYBhERke7S99/qGrvrKxEREVFpeLlyIiIikel5x4ZuJhsdPLQdAT3VwMlY2yHQM649LH0JHFU884Z22g6BKhCHUYiIiIhEpJM9G0RERJWKnvdsMNkgIiISmZ7nGhxGISIiInGxZ4OIiEhk+j5BlMkGERGRyPQ81+AwChEREYmLPRtEREQi4zAKERERiUrPcw0mG0RERGLT954NztkgIiIiUbFng4iISGT63rPBZIOIiEhkep5rcBiFiIiIxMWeDSIiIpFxGIWIiIhEpee5BodRiIiISFzs2SAiIhIZh1GIiIhIVHqea3AYhYiIiMTFng0iIiKRcRiFiIiIRKXnuQaTDSIiIrHpe88G52wQERGRqNizQUREJDI979hgskFERCQ2DqMQERERiYg9G0RERCLT954NJhtEREQi0/Ncg8MoREREJC72bBAREYlMoufjKEw2iIiIRKbfqQaHUYiIiEhk7NkgIiISmZ6PojDZICIiEpue5xpMNoiIiMQm1fNsg3M2iIiISFTs2SAiIhKZnndsMNkgIiISm75PEOUwChEREYmKPRsV6Jv31yMj9YlKedPODdC6lz++nbyh1P0GTOkC3xbeSIpPxYnd55BwIxE5T/Jg42iJJp18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a8jlcqxZswbDhw9XWv351K1bt3D06NFS507u2bMHycnJaNGiBUxMTHDw4EEsWrQIH3zwgdpxMNkgIiLSUaGhoUhISMCoUaNK3f7LL7+gevXq6NKli8o2IyMjfP/995g2bRoEQYC3tze++uorjBkzRu04OEGURMUJopULJ4hWHpwgWnlUxATRpUc0M0H0wyD1VoFUFuzZICIiEpm+X8yWq1GIiIhIVOzZICIiEpm+/7JnskFERCQyfR9GYbJBREQkMj3PNfS+Z4eIiIhExp4NIiIikXEYhYiIiESl57kGh1GIiIhIXOzZICIiEhmHUYiIiEhUep5rcBiFiIiIxMWeDSIiIpFxGIWIiIhEpee5BodRiIiISFzs2SAiIhIZh1GIiIhIVPo+jMBkg4iISGT63rOh78kWERERiYw9G0RERCLT844NJhtERERi4zAKERERkYjYs0FERCQyPe/YYLJBREQkNg6jEBEREYmIPRtEREQi0/eeDSYbREREItPzXIPDKERERCQu9mwQERGJjMMoREREJCp9H0ZgskFERCQyfe/Z0Pdki4iIiETGng0iIiKRSSBoOwStYrJBREQkMg6jEBEREYlIIgiCfvftVFL5+fkICQnB7NmzIZPJtB2OXuO5qDx4LioPngtSB5ONSiozMxPW1tbIyMiAlZWVtsPRazwXlQfPReXBc0Hq4DAKERERiYrJBhEREYmKyQYRERGJislGJSWTyTBv3jxOvKoEeC4qD56LyoPngtTBCaJEREQkKvZsEBERkaiYbBAREZGomGwQERGRqJhsEBERkaiYbFQyR48eRa9eveDm5gaJRIJdu3ZpOyS9NX/+fEgkEqVH3bp1tR2WXijrcyAIAubOnQtXV1eYmpqiU6dOiImJ0U6wOi4kJATNmjWDpaUlnJyc0LdvX9y4cUOpTl5eHiZOnAh7e3tYWFjgjTfeQHJyspYipsqIyUYlk52djUaNGuH777/XdigEwNfXF4mJiYrH8ePHtR2SXijrc7BkyRIsX74cq1atQmRkJMzNzdG1a1fk5eVVcKS678iRI5g4cSJOnTqFgwcPorCwEF26dEF2draizrRp07Bnzx5s3boVR44cwYMHD9C/f38tRk2VjkCVFgBh586d2g5Db82bN09o1KiRtsPQe89/DuRyueDi4iIsXbpUUZaeni7IZDLht99+00KE+iUl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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "sm_list = {}\n", + "performance_matrix_zn = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "noise_bool = False\n", + "for i, n_init in enumerate(n_inits):\n", + " for j, noise_level in enumerate(noise_levels):\n", + " \n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for ii in range(Y_real.shape[0]):\n", + " sliding_min[ii] = Y_real[:ii+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " \n", + " sm_mean = sm_agg.mean(0)[:iteration_cutoff]\n", + " sm_std = sm_agg.std(0)\n", + " sm_list[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " performance_matrix_zn[i,j] = sm_mean.min()\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_zn)\n", + "plt.title(f'BoTorch, No Noise parameter')\n", + "plt.savefig(f'BoTorch_heatmap{noise_bool}.png', dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "6ea14e5b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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2NraSmWtW7dGTEwMbt26led2mHgQERGpmarmePj6+sLMzEzh4etbML/IHhYWppB0AJCWw8LC8twOEw8iIqIiwsfHB69fv1Z4+Pj45Fp//PjxkMlk733cvXu3AI8gj3M8YmJi8tygqalpvoMhIiLSSCqa4yGXy6WrSfNizJgx6Nu373vrODk55aktOzs7XLhwQaHsxYsX0rq8ylPiYW5uDtkHZsYIISCTyZCWlpbnnRMRERUHhTW31NraGtbW1ippq169epg5cybCw8NhY2MDADhy5AhMTU3h6uqa53bylHj4+/vnL0oiIiIqEkJCQhAVFYWQkBCkpaUhICAAAODs7AxjY2O0atUKrq6u+N///oe5c+ciLCwMP/30E4YOHapUL0yeEo8mTZrk6yCIiIioaFxOO2nSJKxfv15arlGjBoCMzoemTZtCW1sb+/fvx7fffot69erByMgIffr0wbRp05TaT77v45GQkICQkBAkJycrlLu7u+e3SSIiIs1UBBKPdevW5XoPj0yOjo74+++/P2o/SiceERER6NevHw4ePJjjes7xICIiotwofTntyJEjER0djfPnz8PAwACHDh3C+vXrUaFCBezdu1cdMRIRERVpReG3WgqK0j0ex48fx549e1CzZk1oaWnB0dERLVu2hKmpKXx9fdGuXTt1xElERFRkFYU5HgVF6R6P+Ph46TIaCwsLREREAADc3Nxw5coV1UZHREREGkXpxKNSpUq4d+8eAKBatWpYuXIlQkNDsWLFCtjb26s8QCIiItIcSg+1jBgxAs+fPwcATJ48Gd7e3vjjjz+gp6f3wdmwRERExRGHWrIonXj06tVL+r+npyceP36Mu3fvwsHBAVZWVioNjoiISCMw8ZDk+z4emQwNDeHh4aGKWIiIiEjD5SnxGD16NKZPnw4jIyOMHj36vXUXLFigksCIiIg0hYxdHpI8JR5Xr15FSkqK9H8iIiLKO87xyKL0j8TxB+OIiIgov5S+nLZ///6IjY3NVh4fH4/+/furJCgiIiLSTEonHuvXr0diYmK28sTERGzYsEElQREREWkSmUw1D02Q56taYmJiIISAEAKxsbHQ19eX1qWlpeHvv/+W7mhKRERElJM8Jx7m5uaQyWSQyWSoWLFitvUymQxTp05VaXBERESaQEM6K1Qiz4mHv78/hBBo3rw5duzYAUtLS2md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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "delta_performance = performance_matrix_homo - performance_matrix_zn\n", + "\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, delta_performance)\n", + "plt.title(f'BoTorch, Delta: Homoscedastic vs. No Noise model')\n", + "plt.savefig(f'BoTorch_heatmap_delta.png', dpi=300)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/combined_botorch_baybe_final.ipynb b/combined_botorch_baybe_final.ipynb new file mode 100644 index 0000000..2e606d6 --- /dev/null +++ b/combined_botorch_baybe_final.ipynb @@ -0,0 +1,369 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Projects 23 : Noisy Nerds | Reliable Surrogate Models of Noisy Data |\n", + "\n", + "Description:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Botorch implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import pandas as pd\n", + "from run_grid_experiments import run_grid_experiments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1a) Select data generation parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5))\n", + "n_inits = [2, 4, 8, 10]\n", + "noise_levels = [1, 5, 10, 20]\n", + "noise_bools = [True, False]\n", + "budget = 30" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1b) Training gp" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget) -------> module not found error: unable to resolve using sys.path.append\n", + "# run run_grid_botorch.py --> populates results in results_botorch/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1c) Analysing results" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sn\n", + "import numpy as np\n", + "import torch\n", + "import pandas as pd\n", + "\n", + "from src import visualization\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5))\n", + "n_inits = [2, 4, 8, 10]\n", + "noise_levels = [1, 5, 10, 20]\n", + "noise_bools = [True, False]\n", + "n_inits = n_inits[::-1]\n", + "budget = 30\n", + "iteration_cutoff = 20" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "sm_list = {}\n", + "performance_matrix_homo = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "noise_bool = True\n", + "for i, n_init in enumerate(n_inits):\n", + " for j, noise_level in enumerate(noise_levels):\n", + " \n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_botorch/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for ii in range(Y_real.shape[0]):\n", + " sliding_min[ii] = Y_real[:ii+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " \n", + " sm_mean = sm_agg.mean(0)[:iteration_cutoff]\n", + " sm_std = sm_agg.std(0)\n", + " sm_list[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " performance_matrix_homo[i,j] = sm_mean.min()\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_homo)\n", + "plt.title(f'BoTorch, Homoscedastic Noise Kernel')\n", + "plt.savefig(f'BoTorch_heatmap{noise_bool}.png', dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XK7WixMREekFLV5nY82aNXByckLPnj0VZTk5OQBKOhKeZWBgoPgub9myJdLT0xEVFYUmTZoAAMLCwiCXyxEYGKhWDOVONvr06aNSduPGDcyaNQt79uzBkCFDsHDhQrVenIiIiMQjl8uxZs0aDB8+HIaG/37l161bF97e3hg3bhy+/PJL2NvbY9euXYolrgBQr149dOvWDWPGjMGqVatQWFiISZMmYfDgwWqtRAFe8TobDx48wJgxY9CwYUMUFRXhwoULWLduHdzd3V+lOSIiIp2mjetsAEBoaCgSEhIwatQopXIjIyPs27cPjo6O6NWrF/z8/PDrr79i3bp16NGjh6Lexo0bUbduXXTs2BE9evRAmzZt8NNPP6kdh1oTRDMyMrBo0SKsWLEC/v7+OHToENq2bav2ixIREekTbY2idOnSBYIglLqtdu3aZV75287ODps2bfrPcZQ72ViyZAm++OILuLi44Lfffit1WIWIiIjoeeVONmbNmgVTU1N4e3tj3bp1WLduXan1np3tSkRERLwRW7mTjWHDhpW59JWIiIhU6fu3Z7mTjbVr14oYBhERke7S99/qGrvrKxEREVFpeLlyIiIikel5x4ZuJhsdPLQdAT3VwMlY2yHQM649LH0JHFU884Z22g6BKhCHUYiIiIhEpJM9G0RERJWKnvdsMNkgIiISmZ7nGhxGISIiInGxZ4OIiEhk+j5BlMkGERGRyPQ81+AwChEREYmLPRtEREQi4zAKERERiUrPcw0mG0RERGLT954NztkgIiIiUbFng4iISGT63rPBZIOIiEhkep5rcBiFiIiIxMWeDSIiIpFxGIWIiIhEpee5BodRiIiISFzs2SAiIhIZh1GIiIhIVHqea3AYhYiIiMTFng0iIiKRcRiFiIiIRKXnuQaTDSIiIrHpe88G52wQERGRqNizQUREJDI979hgskFERCQ2DqMQERERiYg9G0RERCLT954NJhtEREQi0/Ncg8MoREREJC72bBAREYlMoufjKEw2iIiIRKbfqQaHUYiIiEhk7NkgIiISmZ6PojDZICIiEpue5xpMNoiIiMQm1fNsg3M2iIiISFTs2SAiIhKZnndsMNkgIiISm75PEOUwChEREYmKPRsV6Jv31yMj9YlKedPODdC6lz++nbyh1P0GTOkC3xbeSIpPxYnd55BwIxE5T/Jg42iJJp18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a8jlcqxZswbDhw9XWv351K1bt3D06NFS507u2bMHycnJaNGiBUxMTHDw4EEsWrQIH3zwgdpxMNkgIiLSUaGhoUhISMCoUaNK3f7LL7+gevXq6NKli8o2IyMjfP/995g2bRoEQYC3tze++uorjBkzRu04OEGURMUJopULJ4hWHpwgWnlUxATRpUc0M0H0wyD1VoFUFuzZICIiEpm+X8yWq1GIiIhIVOzZICIiEpm+/7JnskFERCQyfR9GYbJBREQkMj3PNfS+Z4eIiIhExp4NIiIikXEYhYiIiESl57kGh1GIiIhIXOzZICIiEhmHUYiIiEhUep5rcBiFiIiIxMWeDSIiIpFxGIWIiIhEpee5BodRiIiISFzs2SAiIhIZh1GIiIhIVPo+jMBkg4iISGT63rOh78kWERERiYw9G0RERCLT844NJhtERERi4zAKERERkYjYs0FERCQyPe/YYLJBREQkNg6jEBEREYmIPRtEREQi0/eeDSYbREREItPzXIPDKERERCQu9mwQERGJjMMoREREJCp9H0ZgskFERCQyfe/Z0Pdki4iIiETGng0iIiKRSSBoOwStYrJBREQkMg6jEBEREYlIIgiCfvftVFL5+fkICQnB7NmzIZPJtB2OXuO5qDx4LioPngtSB5ONSiozMxPW1tbIyMiAlZWVtsPRazwXlQfPReXBc0Hq4DAKERERiYrJBhEREYmKyQYRERGJislGJSWTyTBv3jxOvKoEeC4qD56LyoPngtTBCaJEREQkKvZsEBERkaiYbBAREZGomGwQERGRqJhsEBERkaiYbFQyR48eRa9eveDm5gaJRIJdu3ZpOyS9NX/+fEgkEqVH3bp1tR2WXijrcyAIAubOnQtXV1eYmpqiU6dOiImJ0U6wOi4kJATNmjWDpaUlnJyc0LdvX9y4cUOpTl5eHiZOnAh7e3tYWFjgjTfeQHJyspYipsqIyUYlk52djUaNGuH777/XdigEwNfXF4mJiYrH8ePHtR2SXijrc7BkyRIsX74cq1atQmRkJMzNzdG1a1fk5eVVcKS678iRI5g4cSJOnTqFgwcPorCwEF26dEF2draizrRp07Bnzx5s3boVR44cwYMHD9C/f38tRk2VjkCVFgBh586d2g5Db82bN09o1KiRtsPQe89/DuRyueDi4iIsXbpUUZaeni7IZDLht99+00KE+iUl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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "sm_list = {}\n", + "performance_matrix_zn = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "noise_bool = False\n", + "for i, n_init in enumerate(n_inits):\n", + " for j, noise_level in enumerate(noise_levels):\n", + " \n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_botorch/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for ii in range(Y_real.shape[0]):\n", + " sliding_min[ii] = Y_real[:ii+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " \n", + " sm_mean = sm_agg.mean(0)[:iteration_cutoff]\n", + " sm_std = sm_agg.std(0)\n", + " sm_list[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " performance_matrix_zn[i,j] = sm_mean.min()\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_zn)\n", + "plt.title(f'BoTorch, No Noise parameter')\n", + "plt.savefig(f'BoTorch_heatmap{noise_bool}.png', dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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pKtcSgITDyIiIo0rmcyjR48eiIuLw7Rp0xAdHY3atWvjwIEDuSacFicmHkRERFpsxIgRGDFiREmHIWHiQUREpGHqmlyqDZh4EBERaRoTDwmvaiEiIqJiwx4PIiIijWOXRzYmHkRERBrGOR45ONRCRERExYY9HkRERJrGHg8JEw8iIiKNY+aRjYkHERGRpjHvkHCOBxERERUb9ngQERFpGK9qycHEg4iISNOYeEg41EJERETFhj0eREREGscuj2xMPIiIiDSMczxycKiFiIiIig17PIiIiDSNPR4S9ngQERFRsWHiQURERMWGQy1ERESaJuNYSzYmHkRERBrGq1pycKiFiIiIig0TDyIiIio2HGohIiLSNA61SJh4EBERaRonl0o41EJERETFhj0eREREGiZKOoB3CBMPIiIiTeNIi4RDLURERFRs2ONBRESkaezxkLDHg4iIiIoNEw8iIiIqNlo51JJQ176kQ6D/6Jkyt32XPLuZUtIh0H8OupuWdAj0n15exbAT3sdDopWJBxER0buEPxKXg19HiYiIqNgw8SAiIqJio3LicenSJVy/fl1a3rVrFzp37oyvv/4aaWlpag2OiIhIK8jU9NACKiceX3zxBe7evQsAuH//Pnr27AljY2Ns2bIFEydOVHuARERE7z0mHhKVE4+7d++idu3aAIAtW7agadOm+P333xEQEIBt27apOz4iIiLSIipf1SKEgEKhAAAcPnwYH330EQCgQoUKePz4sXqjIyIi0gpa0l2hBionHnXr1sWcOXPg6+uLY8eOYeXKlQCAsLAw2Nvz/hlERES5MO+QqDzUsnTpUly6dAkjRozAN998Azc3NwDA1q1b0bBhQ7UHSERERNpD5R6PmjVrKl3Vkm3RokXQ1dVVS1BERERahT0ekje6j0dCQgJ++eUXTJkyBfHx8QCAW7duITY2Vq3BERERaQOhpoc2ULnH49q1a2jVqhUsLS0RHh6OwYMHw9raGtu3b0dERATWr1+viTiJiIhIC6jc4zFu3DgMGDAAISEhMDQ0lMrbt2+P48ePqzU4IiIircD7eEhUTjzOnz+PL774Ild5uXLlEB0drZagiIiISDupPNQil8vx/PnzXOV3796Fra2tWoIiIiLSKjIt6a5QA5V7PDp27IhZs2YhPT0dACCTyRAREYFJkybhk08+UXuAREREpHkVK1aE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "delta_performance = performance_matrix_homo - performance_matrix_zn\n", + "\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, delta_performance)\n", + "plt.title(f'BoTorch, Delta: Homoscedastic vs. No Noise model')\n", + "plt.savefig(f'BoTorch_heatmap_delta.png', dpi=300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Baybe implementation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import pandas as pd\n", + "from run_grid_experiments_baybe import run_grid_experiments\n", + "import run_experiment_baybe\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1a) Select data generation parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5))\n", + "n_inits = [2, 4, 8, 10]\n", + "noise_levels = [1, 5, 10, 20]\n", + "noise_bools = [True, False]\n", + "budget = 30" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1b) Training gp" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1c) analysing results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sn\n", + "import numpy as np\n", + "import torch\n", + "import pandas as pd\n", + "\n", + "from src import visualization\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_inits = [2, 4, 8, 10]\n", + "noise_levels = [1, 5, 10, 20]\n", + "\n", + "n_inits = n_inits[::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "performance_matrix = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "for i, init in enumerate(n_inits):\n", + " for j, noise in enumerate(noise_levels):\n", + " y_vals = torch.load(f'results/Schwe_n_init_{init}_noiselvl_{noise}_budget_30_seed_0_noise_True.pt')[1]\n", + " best_y = torch.min(y_vals)\n", + " performance_matrix[i,j] = best_y\n", + " \n", + " \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## combined final conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/comparison.ipynb b/comparison.ipynb new file mode 100644 index 0000000..6ec2e85 --- /dev/null +++ b/comparison.ipynb @@ -0,0 +1,341 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SMOKE_TEST None\n", + "SMOKE_TEST None\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "\n", + "from botorch.models.gp_regression import (\n", + " SingleTaskGP,\n", + ")\n", + "from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood\n", + "from botorch.fit import fit_gpytorch_model\n", + "from botorch.models.transforms.outcome import Standardize\n", + "\n", + "from botorch.optim.optimize import optimize_acqf\n", + "from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement\n", + "from botorch.sampling.normal import SobolQMCNormalSampler\n", + "from botorch.utils.transforms import normalize, unnormalize\n", + "import os\n", + "import gc\n", + "from botorch.utils.sampling import draw_sobol_samples\n", + "\n", + "tkwargs = {\n", + " \"dtype\": torch.double,\n", + " \"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n", + "}\n", + "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")\n", + "# SMOKE_TEST = True\n", + "print(\"SMOKE_TEST\", SMOKE_TEST)\n", + "NUM_RESTARTS = 10 if not SMOKE_TEST else 2\n", + "RAW_SAMPLES = 512 if not SMOKE_TEST else 4\n", + "MC_SAMPLES = 128 if not SMOKE_TEST else 16\n", + "batch_size = 1\n", + "\n", + "\n", + "from run_experiment import initialize_model, generate_initial_data, optimize_acqf_loop" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'n_init' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[2], line 22\u001b[0m\n\u001b[0;32m 18\u001b[0m problem \u001b[38;5;241m=\u001b[39m SchwefelProblem(n_var\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, noise_level\u001b[38;5;241m=\u001b[39mnoise_level)\n\u001b[0;32m 20\u001b[0m bounds \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mtensor(problem\u001b[38;5;241m.\u001b[39mbounds, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mtkwargs)\n\u001b[1;32m---> 22\u001b[0m train_X, train_Y, train_Y_real\u001b[38;5;241m=\u001b[39m generate_initial_data(problem, \u001b[43mn_init\u001b[49m, bounds)\n\u001b[0;32m 24\u001b[0m start_time \u001b[38;5;241m=\u001b[39m time()\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(budget):\n", + "\u001b[1;31mNameError\u001b[0m: name 'n_init' is not defined" + ] + } + ], + "source": [ + "from src.schwefel import SchwefelProblem\n", + "from time import time\n", + "\n", + "torch.manual_seed(0)\n", + "np.random.seed(0)\n", + "\n", + "\n", + "seed = 0 \n", + "n_inits = 60\n", + "noise_level = 10\n", + "noise_bool = True\n", + "budget = 1\n", + "\n", + "\n", + "torch.manual_seed(seed)\n", + "np.random.seed(seed)\n", + "\n", + "problem = SchwefelProblem(n_var=2, noise_level=noise_level)\n", + "\n", + "bounds = torch.tensor(problem.bounds, **tkwargs)\n", + "\n", + "train_X, train_Y, train_Y_real= generate_initial_data(problem, n_init, bounds)\n", + "\n", + "start_time = time()\n", + "\n", + "for i in range(budget):\n", + " print(f\"Starting iteration {i}, total time: {time() - start_time:.3f} seconds.\")\n", + " \n", + " train_x = normalize(train_X, bounds)\n", + " mll, model = initialize_model(train_x, train_Y, noise_bool)\n", + " fit_gpytorch_model(mll)\n", + " \n", + " # optimize the acquisition function and get the observations\n", + " X_baseline = train_x\n", + " sampler = SobolQMCNormalSampler(sample_shape=torch.Size([MC_SAMPLES]))\n", + "\n", + " acq_func = qNoisyExpectedImprovement(\n", + " model=model,\n", + " X_baseline=X_baseline,\n", + " prune_baseline=True,\n", + " sampler=sampler,\n", + " )\n", + "\n", + " x_cand, acq_func_val = optimize_acqf_loop(problem, acq_func)\n", + " X_cand = unnormalize(x_cand, bounds)\n", + " Y_cand = torch.tensor(problem.y(X_cand.numpy()))\n", + " Y_cand_real = torch.tensor(problem.f(X_cand.numpy()))\n", + " print(f\"New candidate: {X_cand}, {Y_cand}\")\n", + "\n", + " # update the model with new observations\n", + " train_X = torch.cat([train_X, X_cand], dim=0)\n", + " train_Y = torch.cat([train_Y, Y_cand], dim=0)\n", + " train_Y_real = torch.cat([train_Y_real, Y_cand_real], dim=0) \n", + " \n", + "train_x = normalize(train_X, bounds)\n", + "mll, model = initialize_model(train_x, train_Y, noise_bool)\n", + "fit_gpytorch_model(mll)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best value found: 764.5328592764758\n", + "Best solution found: [-25.51163547 38.93445618]\n", + "Best real value found: 801.2781865671863\n", + "Best real solution found: [ 43.27939814 -25.89256121]\n", + "Total number of evaluations: 51\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# print trial results\n", + "print(f\"Best value found: {train_Y.min().item()}\")\n", + "print(f\"Best solution found: {train_X[train_Y.argmin()].numpy()}\")\n", + "print(f\"Best real value found: {train_Y_real.min().item()}\")\n", + "print(f\"Best real solution found: {train_X[train_Y_real.argmin()].numpy()}\")\n", + "print(f\"Total number of evaluations: {train_Y.shape[0]}\")\n", + "\n", + "sliding_min = torch.zeros(train_Y.shape[0])\n", + "for i in range(train_Y.shape[0]):\n", + " sliding_min[i] = train_Y[:i+1].min().item()\n", + " \n", + "plt.plot(sliding_min, label='Best found value')\n", + "\n", + "#plot all evaluations\n", + "plt.plot(train_Y.cpu().numpy(), label='All evaluations')\n", + "#vline\n", + "plt.axvline(x=n_init, color='r', linestyle='--')\n", + "#\n", + "plt.xlabel('Iteration')\n", + "plt.ylabel('Objective')\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#plot model\n", + "X = torch.linspace(bounds[0, 0], bounds[1, 0], 1000, **tkwargs).view(-1, 1)\n", + "x = normalize(X, bounds)\n", + "with torch.no_grad():\n", + " posterior = model.posterior(x)\n", + " mean = -posterior.mean.detach()\n", + " lower, upper = posterior.mvn.confidence_region()\n", + " lower = -lower\n", + " upper = -upper\n", + "\n", + "plt.plot(X.cpu().numpy(), mean.cpu().numpy(), label='Mean')\n", + "plt.fill_between(X.cpu().numpy().flatten(), lower.cpu().numpy().flatten(), upper.cpu().numpy().flatten(), alpha=0.5, label='Confidence')\n", + "\n", + "#plot true function\n", + "Y = torch.tensor(problem.y(X.cpu().numpy()))\n", + "plt.plot(X.cpu().numpy(), Y.cpu().numpy(), label='True function', linestyle='--')\n", + "F = torch.tensor(problem.f(X.cpu().numpy()))\n", + "plt.plot(X.cpu().numpy(), F.cpu().numpy(), label='True function without noise', linestyle='--')\n", + "\n", + "\n", + "# Convert your data to numpy arrays for easier manipulation\n", + "train_X_np = train_X.cpu().numpy()\n", + "train_Y_np = train_Y.cpu().numpy()\n", + "\n", + "# Generate a list of indices for the optimization samples\n", + "c_unnormed = list(range(len(train_X_np[n_init:])))\n", + "\n", + "# Normalize the colors to be between 0 and 1\n", + "\n", + "# Plot initial samples\n", + "# plt.scatter(train_X_np[:n_init], train_Y_np[:n_init], label='Initial samples', linestyle='None', color='blue', alpha=0.5)\n", + "\n", + "# Plot optimization samples with colors\n", + "# plt.scatter(train_X_np[n_init:], train_Y_np[n_init:], label='Optimization samples', linestyle='None', cmap='viridis', alpha=0.5, marker='x')\n", + "\n", + "plt.xlabel('X')\n", + "plt.xlim(bounds[0, 0], bounds[1, 0])\n", + "plt.ylabel('Objective')\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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lGMUhMVEBJYgCIIgCEKZ7u5uhoeHKx4rlUpcvny54rHt27czPj7esAhUvXEANWOpjgrNhu3bt/O9730P13VJJBJ1t5lNquCWLVvQWnPixImKvmJXr15leHiYLVu2zHmsgrCckRosQRAEQRCEMtu3b6+pn/rYxz5WEzl69NFH+c53vsNXvvKVmmMMDw/jed68xwFUjMX3fT72sY/N+ZgvfelLuX79On/0R39U87swihT2AqsWdvV40YteBMCHPvShisc/+MEPAvDiF794zmMVhOWMRLAEQRAEQRDKvO51r+MNb3gDL33pS3nuc59Lb28vX/nKV1i5cmXFdr/5m7/JP/zDP/CTP/mTvOY1r+Gee+4hm81y8OBB/u///b+cOXOmZp/ZsHfvXh544AHe9ra3MTg4SE9PD5/73OfmJdx+4Rd+gU996lP8+q//Ot///vd5+OGHyWaz/PM//zNvfOMb+amf+inS6TR79uzhf//v/82tt95KT08PT3nKU3jKU55Sc7w77riDV7/61XzsYx9jeHiYRx55hO9///t88pOf5Kd/+qdnbX0vCDcKIrAEQRAEQRDK/PIv/zJ9fX18/OMf58tf/jIPP/wwX/va13j2s59dsV0mk+Ff//Vf+d3f/V3+5m/+hk996lN0dHRw66238thjj9HZ2TnvsXzmM5/h9a9/Pb/3e79HV1cXv/RLv8SznvUsnvvc587peLZt86UvfYn3vOc9fPazn+Xxxx9nxYoVPP3pT+epT31qtN2f//mf8+Y3v5lf+7Vfo1Qq8Tu/8zt1BVa47bZt2/jEJz7B3/7t37J27Vre9ra38Tu/8ztzGqMg3AgoI5WFgiAIgiAIgiAIDUFqsARBEARBEARBEBqECCxBEARBEARBEIQGIQJLEARBEARBEAShQYjAEgRBEARBEARBaBAisARBEARBEARBEBqECCxBEARBEARBEIQGIQJLEARBEARBEAShQYjAEgRBEARBEARBaBAisARBEARBEARBEBqECCxBEARBEARBEIQGIQJLEARBEARBEAShQYjAEgRBEARBEARBaBAisARBEARBEARBEBqECCxBEARBEARBEIQGIQJLEARBEARBEAShQYjAEgRBEARBEARBaBDOUg9AEJYaYwy+71MoFLAsC8dxcBwHpRRKqaUeniAIgiAIgrCMEIEl3NQYY3BdF8/zKJVK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y3+C4Lqx2+189913qvNudXU1U6dOJTExkYkTJ16yrdlut5Obm0t1dTWxsbFuHcNwNSgbRnq9nujo6Mveoxsv/MvKyvD19VWNnpprtrU5qK2tJS0tjYiICPr27es2dV0LirmW0kZtt9tp164dUVFRTvPe7ozNZuOhhx7iwIEDbNu2rU2NiAguzQ0tsBojyzKlpaWq2EpNTaV///6qS9PVXKiqqqrIyMhQL3CecBG4HmpqakhPTycsLIx+/fpd9vs1mUzqYr6iooLAwEBVbHnCzbuuro709HTatWtH//7929zr27Rdw9/fH5PJRFBQ0FW553kq7iSuLsTVzm2dOHGCKVOmMGPGDN58802Xfz+HDx+md+/eZGdnM2jQIJfWciMiSRI//PCDKrZKSkqYPHkyCQkJTJ482WnovrKykoMHDyJJ0gVPeDwVpX3Oz8/vmjaMmgbAG41G9R7mSufimpoa0tLS6NixI7169fJocdWYc+fOkZGRQefOnZEkSRVbjU/13XET22az8etf/5qsrCy2bdsmjCBuMITAugDKLNHatWtJSUlh8+bN9OjRQ80fGTBgwEUvyEo4oZLJ0FYucBejvLyczMxMunbtSo8ePa76+226K+jn56feqNxpV1BBsSbu0KGDR9nsXyvKMLFer8disTi1awQGBra5799isbB37141o87VYuRyXGhuy8fHh6KiIiZOnKgunidOnMh7773n8u9HkiRmzZpFRUUF3333nUtrEThej/T0dDXm5PTp09x2220kJCTQv39/fvGLX/DQQw/x5JNPevQpfWNqa2tJT08nNDS0WYKbG7vqFhcXo9VqL+iq29JUVVWRnp6u3ovbCufOnSMzM5N+/fqppiqNXSBLSkqor69XjUncZQTBbrfz2GOPsXv3brZv394mDGEEV4cQWFdAZWUlX331lRr22LFjR/VkKyYmBq1WiyzLLF++nKioKGJiYoiMjHR12S1OUVERubm5zdYPbbVanXYFvby81OFid1jMK2LSU62Jrxal1SQyMpI+ffqoc0HK66PT6VSx5SntGpfCbDaTlpbmEUPhF0J5fVJTU3nqqaew2+0ADB06lDVr1rRaLtulmD9/Phs2bOC7777zqBmKGwHF7CEpKYkVK1Zw9OhR2rdvz+9//3sSEhJo166dx1/zFBHSqVOnFjnhkSSJ8vJyVWzJsqxeI5sj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8PBwIiIiCA0NPe8GooirPn360LlzZxdV3bwcPXqUKVOmcOedd/LGG294bKtqc7Bs2TJeeuklcnNz+emnn5g7dy579uwhOjra1aUJBG0GWZY5deoUKSkprF69ml27dhEfH09CQgKJiYl07dr1isXWkSNHOHXqFEOHDnWb9vQrxWq18vDDD3PgwAFSU1MJCwtzdUkXRcxE3hgIgSW4IbDZbOzcuZNVq1axdu1aTCaTGvY4fvx4l4kau93Ovn37MJvNxMXFuY3ou15kWaayslIVWxaLhdDQUNX+vaqqiszMzDYlrk6cOMGUKVOYOXMmy5Ytu6HFFTh+B8aPH49OpyM7O5uFCxfy+9//3tVlCdyYt99+m9dff53CwkKio6N58803GT58uKvL8hhkWebs2bOsXr2alJQUdu7cyZAhQ0hMTCQhIYGePXteVGwdOXKE06dPu9Xs75Vis9n49a9/TVZWFqmpqW6f1SdmIm8MhMAS3HDY7Xa+//57NX+kqqqKKVOmkJiYyMSJE1tt9slut5OZmYndbic2Ntbl4YcthSzL1NTUqGKrtrYWWZbp0KEDffr0aROi8syZM0yePJnbbruNd99994YXVwr79++nf//+DB48mPT0dLdt0RW4ns8//5z77ruP9957jxEjRrB06VJWrVrFgQMHrjlg/UZGlmVKS0vVTMlt27bRr18/VWz169cPjUaDJEmsWrWK9u3be6S4stvtPPbYY+zevZvt27fTsWNHV5ckEABCYAlucCRJ4scff1TFVnFxMZMmTSIxMZHJkye32M3GarWSmZmJRqMhJibmhll4njt3joyMDMLCwjCbzVRVVREcHKzObblrCOSlKCwsZMqUKdx000188MEHHmOq0ho8++yzvP3222i1WrKzs+nevburSxK4KSNGjGDYsGG89dZbgOPa3KVLFxYuXMjixYtdXJ1nI8sy5eXlfPnllyQnJ7N582Z69OjBrFmzOHz4MFu3bmX37t0eF48hSRJPPvkkqamppKamelz9graNEFhtgOPHj/OXv/yFbdu2UVhYSMeOHbn33nt54YUXnE4HGh83h4eHs3DhQp599lkXVu5eSJJEenq6Ojh86tQpNX9k2rRpBAYGNothgcViIT09HaPRSHR09A2zID937hyZmZn069dP3WU0mUzqyVZFRQWBgYGq2HJXF8XGFBcXM3XqVOLi4vjvf/97w7yWV8KuXbu49dZb2bRpE3/9618B2LJlyw1p+iG4NBaLBV9fX5KSkkhMTFQfv//++6moqFBnaAXNQ2VlJV999RV/+ctfOHjwIF26dGHu3LnMnj2bmJgYjziBlySJZ599lq+//prU1FSioqJcXZJA4IT7v4sEl2X//v1IksTy5cvJzc1lyZIlvPfeezz//PPqc6qqqpg0aRLdunUjLS2N119/nZdeeon333/fhZW7F1qtlqFDh/Lyyy+zf/9+fvzxR2JiYliyZAlRUVHMnTuX//73v5w7d45r3Zcwm82kpaXh4+NDTEzMDbMgLysrO09cAXh7e9O1a1eGDh3KmDFj6NSpE+Xl5ezatYvdu3dz5MgRqqurr/nn3ZKUlpYyc+ZMBg8efN6g8o1OXV0dDzzwAPPnz2fcuHF8+OGH/PTTT7z33nvqc3Jzc11YocCdKC0txW63nzc7ExkZSWFhoYuqarsEBgaSm5tLdXU1aWlpvPHGG5w+fZpp06YxePBgFi9ezI8//ogkSa4u9YJIksQLL7zAl19+yZYtW4S4Ergl4gSrjfL666/z7rvvcvToUeBny8/CwkL1VGvx4sWsWbNGWH5eBiWfKikpidWrV5OTk8Ott95KQkICM2fOJCws7Ip25U0mE2lpaQQFBTFgwACP2CVsDsrKysjKyqJ///506NDhij7HarVSWlpKcXExpaWleHl5ERkZSURERLOdJF4P5eXlzJgxg27duvHFF1+0iTmy5uSJJ57g66+/JisrSz2JXL58Ob/73e/Izs6mpqaG8ePHU1xc7OJKBe5AQUEBnTp1YteuXYwaNUp9/Nlnn2XHjh38+OOPLqyu7ZGcnMzjjz9Oamoqffr0UR+vq6vjm2++ISUlhXXr1uHn56dmSo4aNcotNpFkWeZPf/oT//d//8f27dvp27evq0sSCC6IEFhtlN///vds3LiRvXv3AiK0rrmQZZkjR46oYis9PZ2bbrpJDXts3779BRf/dXV1pKWlERoaSv/+/V0uEFqL0tJS9u3bd1Xiqil2u52ysjI1a0un06lthMHBwa0uVCsrK9Vgz5SUFI+11W8pduzYwYQJE9i+fTs333yz08cmT56MzWbj5ptv5s9//rNbnkwKWh/RIti6SJKkjhNcDJPJxJYtW0hJSWHt2rUYDAY1U/Kmm25yiSmTLMu8/PLLvP/++6SmpjJw4MBWr0EguFKEwGqDHD58mPj4eN544w1+9atfATBp0iSioqJYvny5+ry8vDwGDhxIXl4e/fv3d1W5Hossy5w4cYLk5GRWr17Njz/+yPDhw0lISCAhIYHOnTuj0WjIzMxkzZo13HPPPfTp00eIq+tAkiTKy8spKiqipKQEWZadsrZaWmxVV1eTmJhIQECAGmQtEAiunxEjRjB8+HDefPNNwPFe79q1K4899pgwuXAxVquV7du3q2ZQdrtdzZQcO3Zsq5zgy7LMP//5T/71r3+xdetWkacncHtujB4lD2Xx4sVoNJpL/mna3nfmzBmmTJnC3LlzVXElaBk0Gg3du3fnmWee4dtvv+XYsWPcddddfP311wwaNIhx48bx9NNPM2XKFCorK28ocVVSUkJWVhYDBgxoNnEFjjm50NBQBgwYwJgxY4iOjkav17N//362b9/Ovn37KCoqwmazNdvXVKitrWXu3Ll4e3uzevVql4qr48eP8/DDDxMVFYWPjw89e/bkj3/8IxaLxel5+/bt45ZbbsHb25suXbrw2muvuahigeDSPP300/z73//mk08+IT8/n/nz51NbW3vRvCBB62EwGLjttttYvnw5Z86cISkpCT8/PxYsWEBUVBSPPvoo69atw2QytcjXl2WZN998kyVLlrBx40YhrgQegTjBcmNKSkooKyu75HN69Oih7h4VFBQwduxYRo4cyccff+y0my9aBFsPWZYpKipi6dKl/OMf/0CSJIYMGUJCQgKJiYn07t27TQutkpIS9u3bx8CBA9VU+pZGlmWqq6tVR8L6+nqnYOPrbWepr69n7ty5WK1Wvv76awICApqp8mtj48aNfP7559xzzz306tWLnJwcfvWrX/HLX/6SN954A3AY2/Tp04eJEyfy3HPPkZ2dzUMPPcTSpUt59NFHXVq/QHAh3nrrLTVoOCYmhmXLljFixAhXlyW4CHa7nd27d6snW+Xl5UyePJnExEQmTZrULE6wsiyzfPly/vznP7Nx40ZGjhzZDJULBC2PEFhthDNnzjBu3Dji4+P59NNPzxtGVUwuioqK1MXm888/T0pKijC5aAF27tzJzJkz+fOf/8y9996rhj1u3bqVPn36MGvWLGbPnt3m5rEUcTVo0KDzHMFak5qaGkpKSigqKqKmpoZ27dqpc1tXOzNlMpm45557qKys5Jtv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JggXQYHgIrz88ssMGzaMgIAAIiIiSExM5MCBA07PES5NV4fBYGDixIm89957aqhxYGAgCxcuJCoqikceeYR169ZRX19/1f/23r17mTNnDn/729/49a9/LcSVQCBos6SlpVFcXExcXBx6vR69Xs+OHTtYtmwZer2eyMhILBYLFRUVTp9XVFRE+/btXVO0QHADIQSWQHARduzYwYIFC/jhhx/YvHkzVquVSZMmUVtbqz7nqaee4quvvmLVqlXs2LGDgoICbr/9dhdW7TnodDpuvfVW3nzzTU6cOMH69etp3749ixYtonv37tx///2kpKQ4/bwvRmZmJgkJCfzhD3/gsccecxtxZTabiYmJQaPRkJmZ6fSxffv2ccstt+Dt7U2XLl147bXXXFOkQCDwOCZMmEB2djaZmZnqn6FDhzJv3jz1/w0GA1u3blU/58CBA5w8eZJRo0a5sHKB4MZAmFwIBFdISUkJERER7NixgzFjxgiXphZCkiTS0tJISkpi9erVnDlzhttuu42EhASmTp1KYGCg0/NzcnKYOnUqv/vd71i8eLHbiCtwWFgfOnSIDRs2kJGRQUxMDOCwt+/Tpw8TJ07kueeeIzs7m4ceeoilS5fy6KOPurZogUDgkTQ2uQCHTfvXX3/Nxx9/rHYKgCMYWiAQtCziBEsguEIqKysBCAkJARwtGlarlYkTJ6rP6devH127dmX37t0uqbEtoNVqGTZsGK+++ir79+/n+++/Z9CgQbzxxht0796duXPn8umnn1JeXk5+fj4zZsxg4cKFbieuNmzYwKZNm3jjjTfO+9j//vc/LBYL//nPfxg4cCB33303jz/+OP/85z9dUKlAIGiLLFmyhBkzZjBnzhzGjBlD+/btSUlJcXVZAsENgTjBElwVdrudW2655bwLdWVlJYMGDeK+++7jb3/7G48//jjff/89OTk59O/f/7z2KE9DkiRmzZpFRUUF3333HQArVqzgwQcfxGw2Oz13+PDhjBs3jldffdUVpbZZZFkmPz+fpKQkUlJSyM3NRafT8cQTT/DKK6+4lbgqKioiPj6eNWvWEBYWRlRUlNMJ1n333UdVVRVr1qxRPyc1NZXx48dz7tw52rVr55rCBQKBQCAQXDfiBEtwVeh0Oj7++GM2btzI//73P/XxhQsXEhISwh//+Ef1sYceeoi77rrLFWU2OwsWLCAn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "\n", + "x1 = torch.linspace(bounds[0, 0], bounds[1, 0], 100) # 100 points along x1\n", + "x2 = torch.linspace(bounds[0, 1], bounds[1, 1], 100) # 100 points along x2\n", + "X1, X2 = torch.meshgrid(x1, x2) # Create a meshgrid\n", + "X = torch.stack([X1.flatten(), X2.flatten()], -1) # Stack and flatten to create [N, 2] input tensor\n", + "\n", + "\n", + "x = normalize(X, bounds)\n", + "with torch.no_grad():\n", + " posterior = model.posterior(x)\n", + " mean = -posterior.mean.detach().view(X1.shape) # Reshape mean to match the grid\n", + " lower, upper = posterior.mvn.confidence_region()\n", + " lower = -lower.view(X1.shape) # Reshape to match the grid\n", + " upper = -upper.view(X1.shape)\n", + "\n", + "# True function\n", + "Y = torch.tensor(problem.y(X.cpu().numpy())).view(X1.shape)\n", + "\n", + "# Plotting\n", + "fig = plt.figure(figsize=(18, 6))\n", + "plt.suptitle(\"noise_10\")\n", + "ax = fig.add_subplot(1, 2, 1, projection='3d')\n", + "ax.plot_surface(X1.numpy(), X2.numpy(), mean.cpu().numpy(), cmap='viridis', alpha=0.7, label='GP Mean')\n", + "ax.set_title('GP Mean')\n", + "\n", + "ax2 = fig.add_subplot(1, 3, 2, projection='3d')\n", + "ax2.plot_surface(X1.numpy(), X2.numpy(), Y.cpu().numpy(), cmap='viridis', alpha=0.7, label='True Function')\n", + "ax2.set_title('True Function')\n", + "\n", + "\n", + "for ax in [ax, ax2]:\n", + " ax.set_xlabel('X1')\n", + " ax.set_ylabel('X2')\n", + " ax.set_zlabel('Objective')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prob = problem\n", + "n_obj = 1\n", + "bounds = prob.bounds\n", + "n = 30\n", + "\n", + "x1 = np.linspace(bounds[0, 0], bounds[1, 0], n)\n", + "x2 = np.linspace(bounds[0, 1], bounds[1, 1], n)\n", + "x1, x2 = np.meshgrid(x1, x2)\n", + "X = np.stack([x1.flatten(), x2.flatten()]).T\n", + "f = prob.f(X).reshape(n, n, n_obj)\n", + "eps = prob.eps(X).reshape(n, n, n_obj)\n", + "y = prob.y(X).reshape(n, n, n_obj)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/hello.py b/hello.py deleted file mode 100644 index a025bbf..0000000 --- a/hello.py +++ /dev/null @@ -1,2 +0,0 @@ -def hello_world(): - return "Hello!" diff --git a/hello_test.py b/hello_test.py deleted file mode 100644 index 708a061..0000000 --- a/hello_test.py +++ /dev/null @@ -1,5 +0,0 @@ -import hello - - -def test_hello(): - assert hello.hello_world() == "Hello World!" diff --git a/line_plot.ipynb b/line_plot.ipynb new file mode 100644 index 0000000..955ccca --- /dev/null +++ b/line_plot.ipynb @@ -0,0 +1,337 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SMOKE_TEST None\n" + ] + } + ], + "source": [ + "import torch\n", + "import pandas as pd\n", + "from run_grid_experiments import run_grid_experiments" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_26460/2834717507.py:23: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " df = pd.concat([df, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + "/tmp/ipykernel_26460/2834717507.py:27: UserWarning: std(): degrees of freedom is <= 0. Correction should be strictly less than the reduction factor (input numel divided by output numel). (Triggered internally at ../aten/src/ATen/native/ReduceOps.cpp:1760.)\n", + " sm_std = sm_agg.std(0)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
01050True767.079651
\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 10 5 0 True 767.079651" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seeds = list(range(1))\n", + "# n_inits = [2, 4, 8, 10]\n", + "n_inits = [10]\n", + "noise_levels = [5]#[1, 5, 10, 20]\n", + "noise_bools = [True]\n", + "budget = 30\n", + "\n", + "\n", + "\n", + "sm_list = {}\n", + "df = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " df = pd.concat([df, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + " \"best\": [sliding_min[-1].item()]})])\n", + " \n", + " sm_mean = sm_agg.mean(0)\n", + " sm_std = sm_agg.std(0)\n", + " sm_list[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + "df " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([835.0243, 826.3714, 885.8375, 861.5043, 852.6030, 872.2106, 859.8699,\n", + " 827.3935, 841.4297, 838.4979, 830.3094, 835.5397, 817.9036, 876.8677,\n", + " 800.5196, 819.3487, 767.0797, 830.2089, 810.5448, 822.9490, 819.5395,\n", + " 817.6187, 804.5982, 837.9658, 829.5634, 821.7871, 856.8130, 821.8134,\n", + " 889.2534, 851.8686, 787.5237, 799.3164, 778.4625, 794.3905, 790.8689,\n", + " 779.4604, 779.5393, 767.0797, 779.5594, 851.0072], dtype=torch.float64)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y_real" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([843.8446, 828.3721, 890.7312, 872.7088, 861.9408, 867.3242, 864.6204,\n", + " 826.6367, 840.9136, 840.5509, 831.0296, 842.8110, 821.7088, 877.4761,\n", + " 802.7390, 821.0171, 774.5501, 829.1831, 812.1102, 818.6785, 806.7745,\n", + " 820.8868, 808.9204, 834.2550, 840.9122, 814.5153, 857.0418, 820.8775,\n", + " 896.9173, 859.2154, 788.2984, 801.2072, 774.0236, 784.4865, 789.1293,\n", + " 780.2421, 785.6907, 773.0916, 777.6227, 849.4957], dtype=torch.float64)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
best
meanstd
n_initnoise_level
101767.0796510.0
5767.0796510.0
10767.0796510.0
20767.0796510.0
\n", + "
" + ], + "text/plain": [ + " best \n", + " mean std\n", + "n_init noise_level \n", + "10 1 767.079651 0.0\n", + " 5 767.079651 0.0\n", + " 10 767.079651 0.0\n", + " 20 767.079651 0.0" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "# slide_min line plot\n", + "import matplotlib.pyplot as plt\n", + "\n", + "df_no_noise = df[df[\"noise_bool\"] == False]\n", + "df_noise = df[df[\"noise_bool\"] == True]\n", + "\n", + "\n", + "\n", + "# # df = df.groupby([\"n_init\", \"noise_level\", \"noise_bool\"]).agg({\"min\": [\"mean\", \"std\"]})\n", + "df_no_noise = df_no_noise.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "df_noise = df_noise.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# df_no_noise\n", + "df_noise" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArgAAAG1CAYAAAAStodsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXxM1//48dcsWUUiIhJELGlJfWyRINqordQSiqbtR+1Uv0pRVQSxfGprLbXEVjtVqvh9VGsr1ery8WmVSLQq+EgkEQQhm9nv/f0xMowMZiKy9Twfj7SZe88995y5kbzn3Pc9RyHLsowgCIIgCIIglBPKkm6AIAiCIAiCIBQlEeAKgiAIgiAI5YoIcAVBEARBEIRyRQS4giAIgiAIQrkiAlxBEARBEAShXBEBriAIgiAIglCuiABXEARBEARBKFdEgCsIgiAIgiCUKyLAFQSh3CrpdWxK+vyCIAh/VyLAFQQHnTt3jrFjx/LCCy/QsGFDIiIieO+99zh79qxVufbt2xMdHQ1AWloa9evX5//9v//3yLrvPwagfv36xMbGFn0nioi9/SoOD753K1asYN26dZbXsbGx1K9fv9jac+LECd5+++1iO19p/1kRBEEoTuqSboAglCXnz5/njTfeoGnTpsTExODj48PVq1fZsmULr7/+Ops3b6Zp06YFjqtatSrbt28nMDDQofNt374df3//Imp90Stsv56GZcuW4eHhYXm9ZMkS3n333RJrz44dO/jf//5XbOcr7T8rgiAIxUkEuILggA0bNuDt7c2aNWtQq+/983nppZfo3LkzK1asYPXq1QWOc3Z2thn4Pk5hjilOhe3X09CgQYOSbkKJKi3XQRAEoTQQKQqC4IAbN24gyzKSJFltd3d3Z/LkyXTp0sXmcbZu5Z89e5bBgwcTEhJCu3bt2LNnT4Hj7r/t/Ouvv1K/fn2OHTvGkCFDaNKkCS+88ALz58/HZDJZjsnNzWXatGm0atWKkJAQxo4dy8aNGx95ez6/fQcOHGDEiBE0bdqU559/nhUrVpCbm8vkyZMJDQ3l+eefZ/78+Zbc0gf79f/+3/+jQYMGxMfH88Ybb9CoUSPatWtnlSpgj169evHOO+9YbXvppZdo27at1bYRI0YwdOhQwDpFIb+vy5YtK9DvH374gR49etCoUSNefvlldu/ebbU/IyODSZMm0aZNGxo3bkxUVBTfffddgffqwbSM6Oho2rdvb/n+3//+N5cvX35kCkdsbCwdO3bkhx9+oHv37jRs2LBQbcrv8/0pCps2baJz5840atSI1q1bM2PGDHJzcy37JUli9erVdOzY0XLezz77zGY7BUEQyhoR4AqCA9q2bUt6ejr//Oc/+fzzz/nf//5nCfY6d+5Mr1697Krn2rVr9OvXj5ycHObPn8+YMWNYsGAB165de+yxH3zwAaGhoaxatYrIyEjWrl3Ljh07LPtHjBjB/v37GTVqFIsWLSIvL4+FCxfa1a6YmBjq1avHypUradWqFUuWLCEqKgpXV1eWLVtGp06dWLt2LQcOHHhoHZIk8d5779G1a1dWr15Ns2bNmDdvHj/99JNdbQBo06YNv/32myVwT0tLIzU1lStXrpCamgqAwWDg2LFjBYJeMN+uB4iKirJ8n2/atGkMGjSIlStX4u/vT3R0tCV/+saNG0RFRfH7778zduxYYmNjqVGjBiNHjrT5AeRhRowYQZs2bfD19WX79u0225jv+vXrfPjhhwwYMIDVq1cTEBDAxIkTLekNhWnTN998w/z58+nbty/r1q1j5MiRfPXVV8ycOdNSZsaMGSxdupQePXqwatUqOnfuzJw5c1i+fLnd/RQEQSitRIqCIDjgzTff5Pr166xbt44PP/wQAG9vbyIiIhgwYACNGze2q56NGzdiMplYvXo1lStXBqBOnTq8/vrrjz32tddeY+TIkQC0atWKw4cP88MPP/DPf/6TY8eO8euvvxIbG0unTp0AePHFF4mMjLQrH7R169a89957ADz77LN88803+Pj4MG3aNADCw8P5+uuvOXny5ENHq2VZZsSIEbz22msAhIaGcujQIX744Qdat2792DaA+YPEypUrSUhIICQkhGPHjlG7dm1u3LjB8ePHqVmzJidOnODOnTu0a9euwPH5t+v9/f0L3LqfNWsWL774IgCBgYF07NiR3377jeDgYDZs2EBmZiYHDx6kRo0agDnYHjRoEPPmzSMyMtKu9gcGBlK5cmW7Ujg0Gg2zZ8+mVatWANSuXZt27dpx9OhRgoKC7GqTUmk9VvHbb78REBBA3759USqVtGjRAnd3d7KysgBISkriyy+/5P3337c8CBcREYFCoeDTTz/lzTffxNvb266+CoIglEZiBFcQHDRmzBh++uknFi5cSFRUFB4eHnz99deWh8zsceLECZo2bWoJbgGaNGlC9erVH3tsSEiI1Wt/f3/u3LkDwH//+1+cnJx46aWXLPuVSiVdu3a1q133112lShUAq6BdoVDg5eVFTk6O3fU4OztTuXJlSxvt0bhxY7y9vfnPf/4DmPvVsmVLmjRpwvHjxwH48ccfefbZZwkICLC7XoCwsDDL9/nHZmdnA+bAMCQkxBJI5uvRowfXr1/n4sWLDp3LXvcHwfkPiuW/X4VpU3h4OElJSfTu3Ztly5Zx+vRpunfvTv/+/QHz+ynLMu3bt8doNFq+2rdvj06n48SJE0+ln4IgCMVFBLiCUAheXl5ERkYye/ZsDh8+zL///W+CgoKYP38+t27deuzxWVlZNkfIfH19H3usq6ur1WulUmlJk7h16xaVKlUqMKLn4+Pz2HoBq1kI8rm7u9t1rL1ttIdSqeTFF1/k2LFjwL0At0WLFvz2228A/PTTTzZHbx/n/v7kv0/5bcvKyrJ5DfKD/fxAuKi5ubkVaZu6du3KwoULcXd3Z8WKFURFRdGhQwf27dsHwO3btwHo1q0b//jHPyxf+aPu9qTKCIIglGYiRUEQ7HTt2jVeffVVxowZYwkE8jVo0ICxY8cycuRIUlNTH3t719vbmxs3bhTYnh94FJafnx+3bt1CkiSrIPfmzZtPVG9JaNu2LRMmTCAhIYEbN27QokULqlevzqJFi4iLi+PcuXPMmDGjSM/p5eXF9evXC2zP3+bt7Y1CoQCwerAPcGiEuqjbZEtkZCSRkZHk5OTw888/s2bNGsaPH09oaCienp6A+UG0ChUqFDjWnjsJgiAIpZkYwRUEO1WpUgW1Ws3WrVvR6XQF9l+8eBEXFxdq1ar12LrCw8OJi4uzGim7cOGC5QGqwmrRogVGo5EjR45YtsmyzOHDh5+o3pIQERGBLMt8+umn1KlTB19fXxo1aoS7uzvz58/H29u7QLrG/R4cxbZH8+bNiYuL4/Lly1bb9+zZg6+vL7Vq1bKMct9/7QwGAwkJCU98/sK26UHvvfeeJU+7YsWKdOnShREjRmA0GsnIyLCkady6dYtGjRpZvjIzM1myZMkTf9ASBEEoaWIEVxDspFKpmDFjBiNHjuTVV1+lb9++BAUFodFo+OWXX/j8888ZM2YMXl5ej61r4MCB7Ny5k6FDhzJq1ChMJhOLFi3CycnpidrYvHlzXnjhBaZMmcKNGzeoXr06O3fuJDEx0TLyWFZ4enoSEhLC4cOHeeONNwBQq9WEhYXx448/8sorrzwyiPT09OTkyZMcP37cKu/2UQYPHsyePXsYNGgQ7777LpUqVWL37t3897//Zc6cOSiVSry8vAgJCeGzzz6jVq1aeHl5sXnzZrRarVX6g6enJzdu3ODo0aM899xzVK1atVDvgz1telB4eDjTp0/n448/5sUXXyQ7O5tly5ZRu3ZtgoODcXJyokePHkydOpXLly/TsGFDkpKSWLRoEQEBAdSuXbtQbRUEQSgtRIArCA5o27YtX375JevWrWPVqlVkZmbi7OxMgwYNWLRokWXmgsfx9vZm27ZtzJ49m+joaCpUqMBbb71lyZF8EosWLeKjjz5i4cKFGI1GOnToQJ8+fQrMrVoWtGnThuPHj9OyZUvLtpYtW/Ljjz8+cuotgOHDh7NixQqGDRtm9/vq6+vLtm3bWLhwIbNmzcJgMBAcHMyKFSvo0KGDpdxHH33EzJkziYmJwcPDg6ioKEJDQ62ma+vduzdHjx5l5MiRjB49utDL9trbpvv985//xGAw8MUXX7B161ZcXV1p1aoV48ePt3yImjt3Lp9++ilffPEFV69excfHh65du/Lee++hUqkK1VZBEITSQiE78uSHIAil2uXLlzl16hQdOnSwetBr9OjRpKam8u9//7sEWycIgiAIxUOM4ApCOaJUKomOjqZDhw5ERUWhUqn46aef+Pbbb5k7d25JN08QBEEQioUYwRWEcua///0vy5cv56+//sJoNBIUFMTgwYPtXqRAEARBEMo6EeAKgiAIgiAI5YqYJkwQBEEQBEEoV0SAKwiCIAiCIJQrIsAVBEEQBEEQyhUR4AqCIAiCIAjlSrmYJkyWZSSp6J+VUyoVT6Xe0kb0s3wR/Sxf/g79/Dv0EUQ/bZUrayssCmVHuQhwJUkmMzOvSOtUq5V4e1cgO/sORqNUpHWXJqKf5YvoZ/nyd+jn36GPIPppS+XKFVCpRIArPB0iRUEQBEEQBEEoV0SAKwiCIAiCIJQrIsAVBEEQBEEQyhUR4AqCIAiCIAjlighwBUEQBEEQhHKlXMyiIAiCIAhPk3k6SglJMhXqeElSoNWq0Ot1mEzld6owR/qp1apQqcQ4m2AfJycnVCqV3eVFgCsIgiAIDyHLMhpNLrm5WYUObvPduKFEksrvFGH57O3nrVsKQEwTJthHoYBKlSpRrVo1u+ZPFgGuIAiCIDxEdnYmGk0urq4VcHV1R6lUFXpxApVKUa5Hb/PZ20/zQg/F0CChHJDR6XTcunUbgOrVqz/2CBHgCoIgCIINkmRCo8nDw6MSHh5eT1yfWq0s14s85LO3nyqVUgS4gt2cnV0BuH37Nn5+fo9NVxDJL4IgCIJgg8lkAmRcXFxLuimCIAAuLi7IMhgMhseWdTjANRqNLFmyhHbt2hESEkLfvn05deqUzbIxMTG0b9/eapskSSxdupTWrVvTtGlThg0bRmpqqqPNEARBEIRiIoYZBaF0sP/fosMB7sqVK9mxYwczZ85k9+7d1KlTh7feeouMjAyrcocPH2bHjh0Fjl+xYgVbt25l5syZfPHFF0iSxFtvvYVer3e0KYIgCIIgCIJQgMMB7uHDh4mMjCQiIoJatWoRHR1NTk6O1ShuRkYGU6dOpUWLFlbH6vV61q9fz+jRo2nbti3BwcEsWrSIq1ev8u233z5xZwRBEARBeDoiIsLYt+9ru8peuZJOREQYJ0/+DoBGo2HXri8Lfe7U1BTatn2e9PR0q+06nY758+fSpUsH2rePYNq0ydy+favQ5ymM9PR0wsObceLE78V2zvDwZnzzzZ5iO1/Pnt1Ys2ZVoY7V6XT06/dGsbYXChHg+vj48P3335OWlobJZGL79u04OzsTHBwMmKdUiY6O5pVXXikQ4J49e5a8vDxatWpl2ebp6UmDBg04fvz4E3ZFEARBEISn5auvDtChQ0e7ylat6sdXXx2gUaMmAGzb9hnbtn1WqPMmJV1kzJiRaLXaAvvmzZvDr78eY+7c+cTGriI5OZlJk8YX6jyF5efnx96939K4cZNiPW9ZkJubw8SJ73PhwvliP7fDAe6UKVNwcnKiQ4cONGrUiEWLFrF06VICAwMB2LhxI9evX+f9998vcOzVq1cBqFatmtX2qlWrWvYJgiAIglD6+PhUsfuBO5VKhY9PFZycnADz4FdhbNq0niFD+uPp6VlgX0ZGBvv37+X99yfStGkz/vGPhsyaNZe4uJOcPh1fqPMVxoN9Fcx++uko/fq9we3bt0vk/A5PE3bhwgUqVqzI8uXL8fPzY8eOHXzwwQds2bIFhULBsmXL+Pzzz3F2di5wrEajASiwz8XFhaysrEJ2wUytLtoJIfJXV8nNvI4CJSgVKJQKFCoFSlSo1WpklYwsqVE5KVAqVCiVSsraHN75/Szvq8mIfpYvop/lR2nuoyQV3cNl+dNhKRRQyFjviUREhBEdPZVDhw5y+nQ8FSt60LNnFIMHD3OojsmTp9O1a3dmz54BgJdXJQ4c2ItGc4fQ0OZMmDAFf38/rl5NJyqqB0uXriIu7gQbNqyx1LFjxx5mz57BqVMnbZ5n6NC3GTZsOABHj/7A1Kn/wsurEiNHvm1VLiHhFAChoWGWbYGBtfD1rUpcXJxl9PhR0tPT6d07kjlz5rNlyybOn0/Ex6cKgwYNoWfPVy3l9u37hq1bPyM1NQVv78r06NGLgQMHo1KpLHUsX76a0NAwUlJS+OSTjzl9+jSyLNGoUWNGjRrLM888C5hHNWNjF3P06PcYDEaCg4N59933eO65BvZdCBt+/vlH1qxZRXJyEr6+vnTs2JnBg9/C2dmZDz+cTnJyEuvXb7aUv3Ilnd69u7NkyQpatGhJQkI8K1Ys5a+/zlCpkjcREa0ZMWIUFSp4FDjXmjWrWLdutc12hISEsnKl+Vr/+OMP9OoVxZtv9qd165aF7lthORTgXrlyhXHjxrFx40bCwsw/UI0aNeLChQssWLCAa9eu8c4771jSFR7k6mr+5KfX6y3fgzk/w83NrbB9QKlU4O1dodDHP0rm1WtocnJBqUShUKBAgVKlBIV5gmqluQEoFAq8fatQK/jZp9KOp83Ts/Dvf1ki+lm+iH6WH6Wxj1qtihs3lKhUigKDKLIsozc4NqJhND3ZSmj5nJ2UhVpsYvnyxbz//gSmTJnKt98eYNWq5YSFhRESEmp3HUql+b1QKBQcOnSAl1/uwqpVa8nMzGTq1EmsXbuSmJgZKJX3Prj07z8QnU7L4cPfsmHDZ1Sq5M3HHy/EaLQ91ZObm7vl+/ygzFZ+a0ZGBl5elXBxcbHa7uvrS0aGY3eFlyxZyLhxEwkKCmLbti3MmzeXFi3CqV69Bl988TkrVsQyevT7tGgRzp9/nmbBgo/JyrrF2LEF0yGmTo2mXr36bNiwBZPJyNKli4iOHsfOnXuQZZmxY0fj4uLCggVL8PDwYP/+b3j77cGsXbuJ+vVtx0+PcuzYL0yZEs17771P8+YtuXw5jYUL55GSconZsz8mMrIHI0YMIy0tlYCAmgAcPLifqlX9CAtrzvnz5xg16h0GDx7K5MnTycy8SWzsIkaPHsHatZsK/Kz17TuA3r2jbLZFrb43ij1lynSH+1KUHApw4+PjMRgMNGrUyGp7kyZNWL9+PQDLli1j+fLlgHmeMqPRSEhICGvWrLGkJmRkZFhSGvJf169fv9CdkCSZ7Ow7hT7eFpVKiaenG0a9kdzcgnk/NilUVMrKK1OjuPn9zM7WYDKVoYY7SPSzfBH9LD9Kcx/1eh2SJGEyyVYLF8iyzNwtJ7lw+cnuPBbWMwFeTOrbzOEgt3PnSDp27AJAv36D2bJlM6dOnaJRoxC765Ak83shyzIVKnjwwQeTUavVBATUokOHjhw79svdcub3y2SScHZ2xcXFFaVSiZdXZWQZKlSo+MQLPWi1Wpt3i52dndHpHJuZqU+fvrz4YhsAhg8fyc6dX/LHH6epVq06mzdvJCrqDaKiXgcgMDCQ7OwsYmMXW0aa73f5ctrd4LgaarUTMTHTSU5ORpIkTpw4zh9/JHDgwBG8vMyLh7zzzigSEuLZvn0b06b9y9G3gY0b19GzZy969TIHnQEBNZk4cTIjR/4fI0eOISSkGTVqBHDw4H6GDjWPgh88uJ8uXbqhVCr5/PPNtGwZzqBBQy39mzlzLr17d+fkyRNWI+QA7u7uuLu7U9o5FOD6+/sDkJiYSOPGjS3bz507x0svvcSECROsyn/22Wd8++23fPbZZ/j5+aFUKvHw8ODXX3+1BLjZ2dmcOXOGfv36PVFHntbqMDLYvXa49o4GXd4dFE5lb1Jwk0n6W6ywI/pZvoh+lh+lsY+PXG62DE6NW6tWbavXHh4edk2Y/zA1agSgVt8LIypU8MBoNAKPT8MYN240CQlxNvcNHDjEEmw9iouLi80pRvV6vcN3hWvXrmP53sOjImAepLt16xaZmTdp0qSpVfmQkFCMRiPJyclUruxjtW/48JEsWrSQXbt20KxZKOHhz9OpU2eUSiWJiWeRZZmePbs+0GaDw0F5vsTEs5w58yd79uy2bMvPeU5OTqJ69ep07RppCXATE8+SlHSRefM+sRyfmppCu3YvFKg7OTmpQIC7ceM6Nm1ab7MtTZqEsHjxskL1o6g5FOA2btyY0NBQJk6cyPTp0/H392f37t0cO3aMbdu2UatWLavyXl5eqNVqq+39+vVjwYIFVK5cmRo1ajB//nz8/f3p1KlT0fSoBGm1WjR3snH3KnsBriAIgmAfhULBpL7NHE5RKKqlegubomBrtLOwD38BNh+qsre+6OgYDAa9zRFcT0/7lkX28/MjOzsLg8Fg1Zbr16/j6+trVx35nJxsvzcP60/+wNf9AX6+qKg3aN++I//5z8/8/vtvrF69kg0b1rJ58zYkyTzyvXHjlgLH2bo+9pBlmX79BtK1a2SBfVWqmN+Hrl0jWbv2U/766wyHDh2kceOm1KwZaOnLyy93sfmhwtvbu8C2Xr2iHjqbRmla9c+hAFepVLJy5UoWL17MpEmTyMrKol69emzcuJEmTeybHmP06NEYjUZiYmLQarU0b96cdevWlYunD/VaPbo8Le5PvmS5IAiCUIopFApcnFUOHaNWK1Epy+DQbxF4MCD39a36xCkKTZqEIEkSp06dpHlz80NMKSmXuH49g5CQZk/SXAsfHx8qV/YhPv4Ubdq0s2yPj4/DycmJgIAAsrNzLNszMzNZv341AwYMJjKyB5GRPcjIyKBHj87ExZ0gKCiIvLxcjEYjderUtRw3Z85Mnn32WV577Z8Ot7Fu3SBSUi5ZAlYw5yx/+eU2JkyYhJubG9WqVSc0NIwjRw7z3XeHGDLk3sOFQUHPkJSUZHV8cnISsbGLGTFilGVEO5+Xl5clvaI0c/ixVS8vL6ZPn87333/PyZMn+eKLLwrMd5tv1KhRHDlyxGqbSqVi/PjxHDt2jLi4OFavXk1AQEDhWl8K5WXn8EC+uyAIgiD8rbm5uZOTk01KyiVLGsOTyp8tYO7cWZw48TtnzvxJTMwkmjULo2FDcxqlwWDg5s0bT5SK0bfvAHbu3M6uXTtITU3h4MH9rF37Ka+80rtA8Ofp6ckvv/zMnDkzOXcukcuX09i9exdOTk4EBz9HePjz1KtXn5iYaE6cOE5qagqLFy9k7949VgGvI/r3H8SRI4dZt241KSmXOH78V2bOnE5ubg4+PlUs5bp1686uXTvIyrrNSy/dG4F9881+JCaeZf78uSQlXeT06XimTZtMWloqgYG1bJ2yTCh987KUcdo7Wu5k5ZV0MwRBEASh1Gjbtv3d6bf6kJh4tsjqnTQphrCwFkRHj2PMmBHUrl2buXPnWfYnJMTTrVsnEhIKPy9u3779GTXqPb744nP69Ili9eqV9O8/iLFjPyhQVq1W88knS1Eqlbz77nDefPM1fvvtvyxcuJSAgJqoVCqWLl1BcPBzTJkykX79/smpUyf56KMFhIXZHix8nPbtX2LWrI84evR7+vZ9nRkzphIe3oqPPlpoVa5duw4AtGnTzmr6r4YNG7NkyTLOnTvHoEF9GT9+LIGBtYiNXVmm764r5CdJwCklTCaJzMyiDSrVaiXe3hX4/ftfyLyeafdxTk5O1G30LO5eVYu0PU9Lfj9v3cordQ94FCXRz/JF9LP8KM19NBj03Lx5BR+fajZzNB1VVDm4pZ29/XzSFAV7mZfyjaRhw0aPLyyUanq9jhs3rhIUVNdqullbxAhuETMYDGhzinbKMkEQBEEQHJeWlsq5c4kPnZ9fKL8cXslMeLy87DwqI1Mm55ERBEEQ/lYmTBhLXFzBhRTut27dljKZjxkQUJOVK9dYLUBQmo0bN4aTJx99LTZt2lomr0VxEwHuU6DRajDpNKhcSv9EyIIgCMLf24QJk9FqH72gkb9/tWJqTdErK8EtmKdP02o1jyyTv2iW8GgiwH0K9Hd0aO7k4CECXEEQBKGUy58rVSh5js7fKzycyMF9Csx5uHkoxbsrCIIgCIJQ7EQI9pTkZedh5wq/giAIgiAIQhESAe5TotNq0OtyS7oZgiAIgiAIfzsiwH1K9HcMaLPFgg+CIAiCIAjFTQS4T4nBZECblyvycAVBEARBEIqZCL+eojvZeRhNRbPmtiAIgiAIgmAfEeA+RXq9FqNOrGomCIIglH0REWHs2/e1XWWvXEknIiLMsmiBRqNh164vC33u1NQU2rZ9nvT0dKvtOp3u7lK8HWjfPoJp0yZz+/atQp+nMNLT0wkPb8aJE49eoKEohYc345tv9hTb+Xr27MaaNascOmbDhrWEhzcr8FVcxDy4T5Hmjg5Ndh7Orp4l3RRBEARBeCJffXUADw8Pu8pWrerHV18dwNPTC4Bt2z5j376vefXV1x0+b1LSRcaNG2NzMYp58+YQHx/H3LnzcXJy5uOP5zBp0nhWrlzr8HkKy8/Pj717v7X0VTC7cOE8Xbp04913x5TI+cUI7lMkmUxo7+ShUpV0SwRBEAThyfj4VMHFxdWusiqVCh+fKjg5mVcRk2W5UOfctGk9Q4b0x9Oz4EBRRkYG+/fv5f33J9K0aTP+8Y+GzJo1l7i4k5w+HV+o8xXGg30VzP73vwvUq1cfH58qVl/FRYzgPmWa7DsYjEaUCvFWC4IglBeyLINR7+AxSmRjEUyQrnZGoVA4dEhERBjR0VM5dOggp0/HU7GiBz17RjF48DCH6pg8eTpdu3Zn9uwZAHh5VeLAgb1oNHcIDW3OhAlT8Pf348qVdF57rQdLl64iLu4EGzassdSxY8ceZs+ewalTJ22eZ+jQtxk2bDgAR4/+wNSp/8LLqxIjR75tVS4h4RQAoaFhlm2BgbXw9a1KXFwcjRo1eWyf0tPT6d07kjlz5rNlyybOn0/Ex6cKgwYNoWfPVy3l9u37hq1bPyM1NQVv78r06NGLgQMHo1KpLHUsX76a0NAwUlJS+OSTjzl9+jSyLNGoUWNGjRrLM888C0Bubg6xsYs5evR7DAYjwcHBvPvuezz3XAP7LoQNP//8I2vWrCI5OQlfX186duzM4MFv4ezszIcfTic5OYn16zdbyl+5kk7v3t1ZsmQFLVq0JCEhnhUrlvLXX2eoVMmbiIjWjBgxigoVCo7Yr1mzinXrVttsR0hIKCtXrkGv15OamkLt2nUK3acnJaKup0yr0WC4k4dLBXHrQhAEoTyQZZk7e2YjXbtQIudX+T2LW4/JDge5y5YtZuzY8UycOIXDhw+yevUKQkJCadq0cHmRhw8fpGPHzixfvobMzJvMmDGZ1atXMG3av6zK9enTH41Gw5Ejh1izZhOVKnkzZ858JMmErS64ud1b5j4/KLOV35qRkYGXVyVcXFystvv6+pKRcdWhvixZspBx4yYSFBTEtm1bmDdvLi1ahFO9eg2++OJzVqyIZfTo92nRIpw//zzNggUfk5V1i7Fjxxeoa+rUaOrVq8+GDVswmYwsXbqI6Ohx7Ny5B1mWGTt2NC4uLixYsAQPDw/27/+Gt98ezNq1m6hfP9ihdgMcO/YLU6ZE895779O8eUsuX05j4cJ5pKRcYvbsj4mM7MGIEcNIS0slIKAmAAcP7qdqVT/Cwppz/vw5Ro16h8GDhzJ58nQyM28SG7uI0aNHsHbtpgI/Z337DqB37yibbVGrzaPYSUkXMZlMHDnyHZ98Mh+9Xk9ISDPefXdMsS0NLVIUnjKNRoM2TzxoJgiCUJ4ocCy4LA26dInk5Ze7Ur16DQYMGIKHR8UnupVfoYIHEyZMoVat2oSEhNKhQyeb9bm7u+Pm5oZSqcTHpwoqlQpPT68Ct67zv9zd3W2crSCtVouzs3OB7c7Ozuh0jo2u9+nTlxdfbEONGgEMHz4SSZL444/TyLLM5s0biYp6g6io1wkMDKRLl268/fZwdu3aQW5uToG6Ll9Oo1Ilb6pXr0adOnWJiZnOpEnTkCSJ33//jT/+SGD27I9p2LARtWvX4Z13RtGwYSO2b9/mUJvzbdy4jp49e9GrVxQBATVp2bIVEydO5rvvDpGenk5ISDNq1Ajg4MH9lmMOHtxPly7dUCqVfP75Zlq2DGfQoKEEBgbStGkIM2fO5c8//+DkyRMFzufu7v7Qa+flZR7Mu3jR/OHPzc2NOXPmMXnyNC5dSmbkyP+zmUv9NIgR3KdNBm1OLj7VwShmDBMEQSjzFAoFbj0mO5yioFYrMZZQigJArVq1rV57eHhgMBgK3YwaNQJQq++FERUqeGC08w/duHGjSUiIs7lv4MAhDBo09LF1uLi4oNcXvAZ6vR43Nze72pHv/lvpHh4VATAYDNy6dYvMzJs0adLUqnxISChGo5Hk5GQqV/ax2jd8+EgWLVrIrl07aNYslPDw5+nUqTNKpZLExLPIskzPnl0faLPB4aA8X2LiWc6c+ZM9e3ZbtuXnPCcnJ1G9enW6do3k4MH9DB36NomJZ0lKusi8eZ9Yjk9NTaFduxcK1J2cnGSVAgLmgHrTpvU229KkSQiLFy+jS5dIWrV6gUqVvC37goKC6N69Mz/9dJSOHV8uVF8dIQLcYnAnLw+DwYBCIRLQBUEQygOFQgFOLo8veP8xaiUKRREEuIVka7SzsA9/ATYfqrK3vujoGAwGvc0UBXtnI/Dz8yM7OwuDwWDVluvXr+Pr69htcCcn2+/Nw/ojSebreH+Any8q6g3at+/If/7zM7///hurV69kw4a1bN68DUmSqVDBg40btxQ4ztb1sYcsy/TrN5CuXSML7MtPB+jaNZK1az/lr7/OcOjQQRo3bkrNmoGWvrz8chebHyq8vb0LbOvVK4oOHTrabMv9DyHeH9zmt8XLy4uMjAz7O/cERIpCMdDd0aG/I9IUBEEQhL+nB0ecfX2rUrNmoM2v/Nvcj9OkSQiSJFk9rJaSconr1zMICSma+VZ9fHyoXNmH+PhTVtvj4+NwcnIiICDAantmZiYLFnyE0WggMrIHM2bMYsuW7dy8eYO4uBMEBQWRl5eL0Wi06vNnn23ixx9/KFQb69YNIiXlklV9GRkZLFu2hDt38gCoVq06oaFhHDlymO++O0S3bt0txwcFPUNSUpLV8SaTicWLF3Lt2rUC5/Py8nrotatatSoAq1Yt5/XXe1l9QEhPT+f27dvUrVu3UP10lAhwi4FGq0Gbk1fSzRAEQRCEEuHm5k5OTjYpKZfsTmN4nPzZAubOncWJE79z5syfxMRMolmzMBo2bAyY0wxu3rzxRKkYffsOYOfO7ezatYPU1BQOHtzP2rWf8sorvS3pDPk8PT355ZefmTNnJufOJXL5chq7d+/CycmJ4ODnCA9/nnr16hMTE82JE8dJTU1h8eKF7N27hzp1Chf49e8/iCNHDrNu3WpSUi5x/PivzJw5ndzcHKtpubp1686uXTvIyrrNSy/dG4F9881+JCaeZf78uSQlXeT06XimTZtMWloqgYG1CtWmtm3bceVKOvPmzSUl5RJxcSeIjv6Axo2bEh7+fKHqdJQIcIuDDHdycyjk3QdBEARBKNPatm1/d/qtPiQmni2yeidNiiEsrAXR0eMYM2YEtWvXZu7ceZb9CQnxdOvWiYSEwj9M17dvf0aNeo8vvvicPn2iWL16Jf37D2Ls2A8KlFWr1XzyyVKUSiXvvjucN998jd9++y8LFy4lIKAmKpWKpUtXEBz8HFOmTKRfv39y6tRJPvpoAWFhLQrVvvbtX2LWrI84evR7+vZ9nRkzphIe3oqPPlpoVa5duw4AtGnTzmr6r4YNG7NkyTLOnTvHoEF9GT9+LIGBtYiNXVnouX2DgxvwySdLuXDhPAMHvkl09Hjq16/PggWLC5U/XhgK+UkScEoJk0kiM7NoR0jVaiXe3hX4/ftfyLye+cT1eVX2pE6j51AoHUt8f9ry+3nrVl7RPPxQSol+li+in+VHae6jwaDn5s0r+PhUs5mj6agie8islLO3nyqV0mYOblEzL+UbScOGjZ7+yYSnSq/XcePGVYKC6uLq+uhFR8QIbjHR3tGjzymeqTEEQRAEQYC0tFTOnUskONjx+WWFsk3MolBMdFotWk0eLl4Fn0gUBEEQhJIyYcJY4uIKLqRwv3XrthQ6H7MkBQTUZOXKNZYFCEq7cePGcPLko6/Fpk1by+S1KG4iwC1GeTnZ+AaCjWn7BEEQBKFETJgw+bGT7/v7Vyum1hS9shLcgnn6NK1W88gy1aqV3WtRnESAW4w0uVr0Oi0oHp03IgiCIAjFpbiWThUez9H5e4WHEzm4xUin1aPJFvPhCoIgCIIgPE0iwC1GOq0W7Z3ckm6GIAiCIAhCuSYC3GJ2JztXzIcrCIIgCILwFDkc4BqNRpYsWUK7du0ICQmhb9++nDp1yrJ/3759dO/encaNG/PSSy+xZs0aq6XaJEli6dKltG7dmqZNmzJs2DBSU1OLpDNlgfaOFl2emC5MEARBEAThaXE4wF25ciU7duxg5syZ7N69mzp16vDWW2+RkZHBTz/9xAcffMDrr7/O3r17mTBhAitWrGDz5s2W41esWMHWrVuZOXMmX3zxBZIk8dZbb6H/m0wtoNVq0dzJLulmCIIgCIIglFsOB7iHDx8mMjKSiIgIatWqRXR0NDk5OZw6dYrr16/z9ttv079/f2rWrEmnTp14/vnn+eWXXwDQ6/WsX7+e0aNH07ZtW4KDg1m0aBFXr17l22+/LfLOlUZ6rR5tjnjQTBAEQRAE4WlxOMD18fHh+++/Jy0tDZPJxPbt23F2diY4OJjevXvz3nvvAeZUhP/85z8cP36cF154AYCzZ8+Sl5dHq1atLPV5enrSoEEDjh8/XjQ9KgPu5Obh4lLSrRAEQRAE+0VEhLFv39d2lb1yJZ2IiDDLogUajYZdu74s9LlTU1No2/Z50tPTrbbrdLq7S/F2oH37CKZNm8zt27cKfZ7CSE9PJzy8GSdOPHqBhqIUHt6Mb77ZU2zn69mzG2vWrCrUsTqdjn793rDZ3p07t9O7d3fatGnF//3fEBITzz5pUy0cngd3ypQpjBkzhg4dOqBSqVAqlcTGxhIYGGgpk56eTseOHTEajURERNCnTx8Arl69ChScpLhq1aqWfYWlVhft83Iqlbk+BaBUFm3dWq0WTa4GZ7cKRVpvYeT3M///5ZXoZ/ki+ll+lOY+SpKiyOpSKO79/77HUsqUr746gIeHxyPL5PfTz8+Pr746gKenFwDbtn3Gvn1f8+qrrzt83qSki4wbN8bmYhTz5s0hPj6OuXPn4+TkzMcfz2HSpPGsXLnW4fMUlp+fH3v3fmvpq3BPbm4OMTHRXLhwvsC+vXu/JjZ2CZMmxVC/fjCbN29g9OgRbN++i0qVnnzVV4cD3AsXLlCxYkWWL1+On58fO3bs4IMPPmDLli0899xzgHlUdseOHVy6dIlZs2YxYcIEFi9ejEZjXp3D+YFpBFxcXMjKyip0J5RKBd7eTydYVDupcHZRFWmdstGIUavBr3rVIq33SXh6upV0E4qF6Gf5IvpZfpTGPmq1Km7cUKJSKYpsEKU0BvL28vOz/2+Ws7OTVfn8wNfR93HTpvVs3LiOWrVqk55+2WpfRkYG+/fvZcGCJTRt2gyAWbPm8vrrvTh9Op5GjZo4dK7CUqlU+PhUKZZzlSU//XSUhQs/fmiwumnTel577Q06d+4KwJQp03n11R589dW/GThwyBOf36EA98qVK4wbN46NGzcSFhYGQKNGjbhw4QKxsbGsWLECAA8PDxo0aECDBg0wmUyMGzeO8ePH4+pqXsFLr9dbvgfz8LWbW+F/uUmSTHYRL6CgUinx9HTDaDCh15mKtG69zkRedg63buUVab2Fkd/P7GwNJpNU0s15akQ/yxfRz/KjNPdRr9chSRImk4zRaN02WZbRSwa761IoQKVUYJLkJx7BdVY6oVA4NrocERFGdPRUDh06yOnT8VSs6EHPnlEMHjzMoTomT55O167dmT17BgBeXpU4cGAvGs0dQkObM2HCFPz9/UhLSyMqqgdLl64iLu4EGzasAcy31nfs2MPs2TM4deqkzfMMHfo2w4YNB+Do0R+YOvVfeHlVYuTIt63KJSScAiA0NMyyLTCwFr6+VYmLi7MrwE1PT6d370jmzJnPli2bOH8+ER+fKgwaNISePV+1lNu37xu2bv2M1NQUvL0r06NHLwYOHIxKpbLUsXz5akJDw0hJSeGTTz7m9OnTyLJEo0aNGTVqLM888yxgHtWMjV3M0aPfYzAYCQ4O5t133+O55xrYdyFs+PnnH1mzZhXJyUn4+vrSsWNnBg9+C2dnZz78cDrJyUmsX3/vgf8rV9Lp3bs7S5asoEWLliQkxLNixVL++usMlSp5ExHRmhEjRlGhQsER+zVrVrFu3Wqb7QgJCWXlSvO1/vHHH+jVK4o33+xP69YtrcplZmaSknKJ5s1bWLap1WqaNg0hLu5k8Qe48fHxGAwGGjVqZLW9SZMm/Pjjj/z+++84OzvTuHFjy7769esD5k9a+akJGRkZVikNGRkZlnKF9eAvn6IiY84nLmq5Wbl4P6U2F4bJJD2197A0Ef0sX0Q/y4/S2EeTyXYkKssyn5xcwcWsS8XcIrO6XrV5v9k7Dge5y5YtZuzY8UycOIXDhw+yevUKQkJCLaOfjjp8+CAdO3Zm+fI1ZGbeZMaMyaxevYJp0/5lFcT36dMfjUbDkSOHWLNmE5UqeTNnznwkyYStLri5uVu+zw/KbOW3ZmRk4OVVCZcHHmrx9fUlI8OxtMclSxYybtxEgoKC2LZtC/PmzaVFi3CqV6/BF198zooVsYwe/T4tWoTz55+nWbDgY7KybjF27PgCdU2dGk29evXZsGELJpORpUsXER09jp079yDLMmPHjsbFxYUFC5bg4eHB/v3f8Pbbg1m7dhP16wc71G6AY8d+YcqUaN57732aN2/J5ctpLFw4j5SUS8ye/TGRkT0YMWIYaWmpBATUBODgwf1UrepHWFhzzp8/x6hR7zB48FAmT55OZuZNYmMXMXr0CNau3VTg56xv3wH07h1lsy1qtZPl+ylTpj+0zRkZ1wCoWtXPanuVKr6cP3/O4ffAFofuFfj7+wOQmJhotf3cuXPUrl2bzZs3M2fOHKt98fHxqNVqateuTXBwMB4eHvz666+W/dnZ2Zw5c4bmzZsXtg9lUl52Lrm3rpV0MwRBEIRCKbr83OLSpUskL7/clerVazBgwBA8PCpy+nR8oeurUMGDCROmUKtWbUJCQunQoZPN+tzd3XFzc0OpVOLjUwWVSoWnpxc+PlVsfrm7u9s4W0FarbZAyiOY0yB1OsemHu3Tpy8vvtiGGjUCGD58JJIk8ccfp5Flmc2bNxIV9QZRUa8TGBhIly7dePvt4ezatYPc3JwCdV2+nEalSt5Ur16NOnXqEhMznUmTpiFJEr///ht//JHA7Nkf07BhI2rXrsM774yiYcNGbN++zaE259u4cR09e/aiV68oAgJq0rJlKyZOnMx33x0iPT2dkJBm1KgRwMGD+y3HHDy4ny5duqFUKvn88820bBnOoEFDCQwMpGnTEGbOnMuff/7ByZMnCpzP3d39odfOy8u+POT8fGpbKat6va5Q78ODHBrBbdy4MaGhoUycOJHp06fj7+/P7t27OXbsGNu2bcNkMtGvXz8WLVpE7969OXPmDPPnz2fAgAF4e5tzMPr168eCBQuoXLkyNWrUYP78+fj7+9OpU6ci6VBZodFouHk5g4qVKiErxJQKgiAIZYVCoeD9Zu84lKIAoFYpMD5kVNgRhUlRAKhVq7bVaw8PDwwGx/pwvxo1AlCr74URFSp4YDQa7Tp23LjRJCTE2dw3cOAQBg0a+tg6zMFQwUBWr9c7nPZYu3Ydy/ceHhUBMBgM3Lp1i8zMmzRp0tSqfEhIKEajkeTkZCpX9rHaN3z4SBYtWsiuXTto1iyU8PDn6dSpM0qlksTEs8iyTM+eXR9os8HhoDxfYuJZzpz5kz17dlu25S+wlZycRPXq1enaNZKDB/czdOjbJCaeJSnpIvPmfWI5PjU1hXbtXihQd3JyklUKCJgD6k2b1ttsS5MmISxevOyxbXZ1Ncc9D14/nU6Hq2vR5OM7FOAqlUpWrlzJ4sWLmTRpEllZWdSrV4+NGzfSpIk51+XTTz9l8eLFbNy4kcqVKzNkyBCGDbuX4zN69GiMRiMxMTFotVqaN2/OunXrcHJyethpy63MGzdxu5RGQL0g/ibrXAiCIJQLCoUCF5Vj666r1UpUlFwahq3RTvkJEoJt/d22t77o6BgMBr3NFAV7ZyPw8/MjOzsLg8Fg1Zbr16/j6+trVx35nJxsvzcP609+6uL9AX6+qKg3aN++I//5z8/8/vtvrF69kg0b1rJ58zYkSaZCBQ82btxS4Dhb18cesizTr99AunaNLLCvShXz+9C1ayRr137KX3+d4dChgzRu3JSaNQMtfXn55S42P1TkD07er1evKDp06GizLS4urja3P6hqVXNGwI0b16lTp65l+40b1/H1LZoH8B2eRcHLy4vp06czfbrt3IrWrVvTunXrhx6vUqkYP34848cXzFv525Eh8+oN3L088PD2e3x5QRAEQSiDHhxx9vWtikqltBng2qtJkxAkSeLUqZM0b25+iCkl5RLXr2cQElK4vOIH+fj4ULmyD/Hxp2jTpp1le3x8HE5OTgQEBJCdfS9NITMzk/XrVzNgwGAiI3sQGdmDjIwMevToTFzcCYKCgsjLy8VoNFoFdnPmzOTZZ5/ltdf+6XAb69YNIiXlkiVgBXPO8pdfbmPChEm4ublRrVp1QkPDOHLkMN99d4ghQ+4NPAYFPUNSUpLV8cnJScTGLmbEiFGWEe18Xl5edqciPEzlypWpVas2J0+esFw7o9HIqVNxvPrqa09Ud76yO19JOZGfqqCQiybnRBAEQRBKGzc3d3JysklJuWR3GsPj5M8WMHfuLE6c+J0zZ/4kJmYSzZqF0bCh+WF3g8HAzZs3nigVo2/fAezcuZ1du3aQmprCwYP7Wbv2U155pXeB4M/T05NffvmZOXNmcu5cIpcvp7F79y6cnJwIDn6O8PDnqVevPjEx0Zw4cZzU1BQWL17I3r17rAJeR/TvP4gjRw6zbt1qUlIucfz4r8ycOZ3c3Byr6cu6devOrl07yMq6zUsv3RuBffPNfiQmnmX+/LkkJV3k9Ol4pk2bTFpaKoGBtQr3ptmhT59+bN26hb17vyYp6SKzZ/8LnU5Ljx49i6R+h0dwhaInUhUEQRCE8qxt2/Z8/fW/GTSoD7Gxq/nHPxoWSb2TJsWwaNECoqPHAdCq1QuMGzfBsj8hIZ6RI9+2TOFVGH379sfZ2YkvvvicRYvm4+fnT//+g+jbd0CBsmq1mk8+WUps7GLefXc4Op2WZ5+tx8KFSy0zGCxduoLY2MVMmTIRjUZLnTp1+OijBYSFtShQnz3at3+JWbM+sswZ7OnpRevWLzJy5Bircu3adWD+/I9p06ad1fRfDRs2ZsmSZXz66UoGDeqLm5sbYWEtGD167FNNH+3Zszd5ebl8+ukKsrKyeO6551i6dGWRLPIAoJCfJAGnlDCZJDIzi3ZOWbVaibd3BX7//hcyr2cWad22uLm5EfhcHdy9infxh/x+3rqVV+qm6ClKop/li+hn+VGa+2gw6Ll58wo+PtVs5mg6Sq1Wlro+Pg329vNJUxTsZV7KN5KGDRs9vrBQqun1Om7cuEpQUF2r9RRsESkKpYRGo+F66jWRqiAIgiAIRSQtLZVz5xIJDnZ8flmhbBMpCqWISFUQBEEQituECWOJiyu4kML91q3b8lTzMZ+WgICarFy5xmoBgtJs3LgxnDz56GuxadPWMnktipsIcEuTu7MqeHhXLPZUBUEQBOHvacKEyZaJ9x/G379aMbWm6JWV4BbM06dptZpHlslfFVZ4NBHgljL5qQq1Pb3EAhCCIAjCU5c/V6pQ8hydv1d4OJGDWwpl3rjJtUtpFHLOZ0EQBEEQhL81EeCWRndTFW5fzyjplgiCIAiCIJQ5IsAtpcSsCoIgCIIgCIUjAtxSTKQqCIIgCIIgOE4EuKWZSFUQBEEQBEFwmAhwSzmRqiAIgiAIguAYEeCWAfmpCpJsLOmmCIIgCH9TERFh7Nv3tV1lr1xJJyIizLJogUajYdeuLwt97tTUFNq2fZ709HSr7Tqd7u5SvB1o3z6CadMmc/v2rUKfpzDS09MJD2/GiROPXqChKIWHN+Obb/YU2/l69uzGmjWrHDomISGed94ZRocOL9K9+8vMnv0hWVlZlv2SJLFmzUq6d3+Ztm2fZ+zYUaSnXy6yNosAtyyQISPlKpmpKSXdEkEQBOFv6quvDtChQ0e7ylat6sdXXx2gUaMmAGzb9hnbtn1WqPMmJV1kzJiRNhejmDdvDr/+eoy5c+cTG7uK5ORkJk0aX6jzFJafnx97935L48ZNivW8pVlKyiXGjBnBM888y7p1m5g5cy5nzvzBlCkTLGXWr1/Drl07iI6OYc2ajUiSiTFjRmIwGIqkDSLALSMMJgNXU66QmZZc0k0RBEEQ/oZ8fKrg4uJqV1mVSoWPTxWcnMyriMmyXKhzbtq0niFD+uPp6VlgX0ZGBvv37+X99yfStGkz/vGPhsyaNZe4uJOcPh1fqPMVxoN9FWDfvm/w9a3K+++Pp3btOjRt2ozx46P5/ffjXL6chsFgYOvWLQwb9g4vvNCaZ5+tx6xZH5ORkcH3339XJG0QK5mVIQaDgSup6SiUSryr1wQUJd0kQRCEvyVZlpH1eoeOkUxKJKP0xOdWODujUDj2+z8iIozo6KkcOnSQ06fjqVjRg549oxg8eJhDdUyePJ2uXbsze/YMALy8KnHgwF40mjuEhjZnwoQp+Pv7ceVKOq+91oOlS1cRF3eCDRvWWOrYsWMPs2fP4NSpkzbPM3To2wwbNhyAo0d/YOrUf+HlVYmRI9+2KpeQcAqA0NAwy7bAwFr4+lYlLi7OMnr8KOnp6fTuHcmcOfPZsmUT588n4uNThUGDhtCz56uWcvv2fcPWrZ+RmpqCt3dlevToxcCBg1GpVJY6li9fTWhoGCkpKXzyycecPn0aWZZo1Kgxo0aN5ZlnngUgNzeH2NjFHD36PQaDkeDgYN599z2ee66BfRfChp9//pE1a1aRnJyEr68vHTt2ZvDgt3B2dubDD6eTnJzE+vWbLeWvXEmnd+/uLFmyghYtWpKQEM+KFUv5668zVKrkTUREa0aMGEWFCh4FzrVmzSrWrVttsx0hIaGsXLmGzp27EhHR2urnVKEwj6nm5GRz+/Zt7tzJo3nzFpb9FStWpH79YOLiTtKpU+dCvxf5RIBbxui1eq5cSkepVOIbGICDv18FQRCEJyTLMqkfzUb7vwslcn7XZ56l5sTJDge5y5YtZuzY8UycOIXDhw+yevUKQkJCadq0WaHacfjwQTp27Mzy5WvIzLzJjBmTWb16BdOm/cuqXJ8+/dFoNBw5cog1azZRqZI3c+bMR5JM2OqCm5u75fv8oMxWfmtGRgZeXpVwcbFe1t7X15eMjKsO9WXJkoWMGzeRoKAgtm3bwrx5c2nRIpzq1WvwxRefs2JFLKNHv0+LFuH8+edpFiz4mKysW4wdWzAdYurUaOrVq8+GDVswmYwsXbqI6Ohx7Ny5B1mWGTt2NC4uLixYsAQPDw/27/+Gt98ezNq1m6hfP9ihdgMcO/YLU6ZE895779O8eUsuX05j4cJ5pKRcYvbsj4mM7MGIEcNIS0slIKAmAAcP7qdqVT/Cwppz/vw5Ro16h8GDhzJ58nQyM28SG7uI0aNHsHbtpgI/Z337DqB37yibbVGrzaPYtWvXKbDvs882UqVKFZ555ll++ulHwJzKcr/CXLuHEQFuGaTTarmSfBlQ4hNQHaN49kwQBKF4ORhclgZdukTy8stdARgwYAhbt37G6dPxhQ5wK1TwYMKEKajVamrVqk2HDp04duyXAuXc3d1xc3NDqVTi41MFAE9PL1Qq5RO9jVqtFmcbE8U7Ozuj0zk2+tOnT19efLENAMOHj2Tnzi/544/TVKtWnc2bNxIV9QZRUa8DEBgYSHZ2FrGxiy0jzfe7fDntbnBcDbXaiZiY6SQnJyNJEidOHOePPxI4cOAIXl5eALzzzigSEuLZvn1bgQ8H9ti4cR09e/aiVy9z0BkQUJOJEyczcuT/MXLkGEJCmlGjRgAHD+5n6FDzKPjBg/vp0qUbSqWSzz/fTMuW4QwaNNTSv5kz59K7d3dOnjxhNUIO5uvp7u6OI5YuXcQvv/zExx8vRK12suRTP3j9nJ2drR5EexIiwC2jNBoNVy6lglJB5WrVMJlKukWCIAh/DwqFgpoTJzucoqBWKzGWUIoCQK1ata1ee3h4PNEDPTVqBKBW3wsjKlTwwGjniMu4caNJSIizuW/gwCGWYOtRXFxc0Nu4Bnq9Hjc3N7vake/+EUcPj4qAOS3w1q1bZGbepEmTplblQ0JCMRqNJCcnU7myj9W+4cNHsmjRQnbt2kGzZqGEhz9Pp06dUSqVJCaeRZZlevbs+kCbDQ4H5fkSE89y5syf7Nmz27ItP+c5OTmJ6tWr07VrpCXATUw8S1LSRebN+8RyfGpqCu3avVCg7uTkpAIB7saN69i0ab3NtjRpEsLixcssr41GA3PnzmL//r1ER8fw4ottASy53Hq9HlfXe3ndhbl2DyMC3DJMc0fDtZRUFAollfz8kJ7896YgCIJgB4VCgeKBW+OPo1QrUapK7he1rdHOwj78Bdh8qMre+qKjYzAY9DZHcD09veyqw8/Pj+zsLAwGg1Vbrl+/jq+vr1115HNysv3ePKw/0t0/uPcH+Pmiot6gffuO/Oc/P/P777+xevVKNmxYy+bN25AkmQoVPNi4cUuB42xdH3vIsky/fgPp2jWywL4qVczvQ9eukaxd+yl//XWGQ4cO0rhxU2rWDLT05eWXu9j8UOHt7V1gW69eUQ+dTeP+hxDz8vKYOHEc8fFxzJw51+oYPz9zasKNG9ctaRNgvnb5ucpPSsyiUMbl5dzhamoq2TevlXRTBEEQBMGmB0ecfX2rUrNmoM2v/Fv3j9OkSQiSJFk9rJaSconr1zMICSlc2sWDfHx8qFzZh/j4U1bb4+PjcHJyIiAgwGp7ZmYmCxZ8hNFoIDKyBzNmzGLLlu3cvHmDuLgTBAUFkZeXi9FotOrzZ59t4scffyhUG+vWDSIl5ZJVfRkZGSxbtoQ7d/IAqFatOqGhYRw5cpjvvjtEt27dLccHBT1DUlKS1fEmk4nFixdy7VrB2MLLy+uh165q1aqAefR73LjRnDnzJ4sXLy8QED/7bD0qVPDg5MkTlm05OTkkJp4tsmsnAtxyIC8rl6tJadzJEkv6CoIgCKWPm5s7OTnZpKRcsjuN4XHyZwuYO3cWJ078zpkzfxITM4lmzcJo2LAxYA60bt688USpGH37DmDnzu3s2rWD1NQUDh7cz9q1n/LKK70t6Qz5PD09+eWXn5kzZybnziVy+XIau3fvwsnJieDg5wgPf5569eoTExPNiRPHSU1NYfHihezdu4c6deoWqn39+w/iyJHDrFu3mpSUSxw//iszZ04nNzfHkvMM0K1bd3bt2kFW1m1eeulewPnmm/1ITDzL/PlzSUq6yOnT8UybNpm0tFQCA2sVqk0bN64jPv4UkybFULt2bW7evGH5MhgMODs7ExX1OsuXL+XHH49y/vw5YmIm4ufnR7t27Qt1zgeJFIVyIicrh6vJadSo7YSLV8FbCoIgCIJQUtq2bc/XX/+bQYP6EBu7mn/8o2GR1DtpUgyLFi0gOnocAK1avcC4cfcWE0hIiGfkyLctU3gVRt++/XF2duKLLz5n0aL5+Pn507//IPr2HVCgrFqt5pNPlhIbu5h33x2OTqfl2WfrsXDhUsut+KVLVxAbu5gpUyai0WipU6cOH320gLCwFgXqs0f79i8xa9ZHbNq0no0b1+Hp6UXr1i8ycuQYq3Lt2nVg/vyPadOmndX0Xw0bNmbJkmV8+ulKBg3qi5ubG2FhLRg9emyh5/b99tsDyLLM1KmTCuzLvxZvv/0OJpOJuXM/RKfT0bRpMxYvXm6ZieFJKeQnScApJUwmiczMvCKtU61W4u1dgd+//4XM65lFWvfTVMmnEtWD6uBSwb5bPPn9vHUrr0gefiitRD/LF9HP8qM099Fg0HPz5hV8fKrZzNF0VFE9ZFba2dvPJ51FwV7mpXwjadiw0dM/mfBU6fU6bty4SlBQXauH02wRI7jlzO2bt1FwCW9/+xLslUoFd2454+5d5fGFBUEQBKEMSUtL5dy5RMaO/aCkmyIUMxHglkO3bmZyK9O+UWelQolPVW8CKroD9i3BKAiCIJQfEyaMJS6u4EIK91u3bkuh8zFLUkBATVauXFNkt72ftnHjxnDy5KOvxaZNW8vktShuIsAtr+xNPFGA7o4GTVYubl4iwBUEQfi7mTBhsmXi/Yfx969WTK0pemUluAXz9GlareaRZapVK7vXojiJAFdAbzCQl51DBe8qYi5dQRCEv5n8uVKFkufo/L3Cw4lpwgQAcm9lYzIVfhoVQRAEQRCE0kKM4D7Ef7/+nJv/y0Hj4YpaUqCUZMzr4ZpQqFW4+3jj6VWppJtZZDRaDdrsHNy8Kpd0UwRBEARBEJ6IwwGu0Whk+fLl7N69m9u3b9OgQQPGjx9P06ZNAThy5AjLly/n4sWLeHt78/LLLzNmzBjLdA46nY6PPvqIAwcOoNVqad++PVOmTKFy5dIVWGWlXEByCSRbqbUxzi1BdgaBfybicus8OlcVmqr/QHZ2p1r9Z0qiuU9Mr9GjyckWAa4gCIIgCGWewykKK1euZMeOHcycOZPdu3dTp04d3nrrLTIyMvj9999599136dixI//+97+ZPn06+/bt41//+pfl+BkzZvDzzz8TGxvLpk2buHjxIqNHjy7SThWFl0dOp1IVD3y1aqpoXfAxuFLJ5EoF2Rm1bH7bKmbewOe2kepXdeBWiRvuElfP/6+EW1542beykeSiWWFGEARBEAShpDg8gnv48GEiIyOJiIgAIDo6mh07dnDq1Cm+/fZbWrZsyfDhwwGoXbs2Y8eOJSYmhn/961/cunWL3bt3s2rVKsLCzCuKfPLJJ3Tu3Jm4uDhCQkKKsGtPrsfbgx660EPW9QwyGtXimsYTxZ0cjHffSZ2zEwadHieXJ58UvLhp8zQYsnPESmiCIAiCIJRpDo/g+vj48P3335OWlobJZGL79u04OzsTHBzMkCFDmDhxovUJlEoMBgO5ubmcOHECgPDwcMv+OnXq4Ofnx/Hjx5+wK8XLy7cq/rUaUi24Nf7NuuKqVqCUFWQrtdxITivp5hWKRqPhTl5OSTdDEARBKIUiIsLYt+9ru8peuZJORESYZU5XjUbDrl1fFvrcqakptG37POnp6VbbdTrd3ZXKOtC+fQTTpk3m9u1bhT5PYaSnpxMe3owTJx49f21RCg9vxjff7Cm28/Xs2Y01a1YV6lidTke/fm8Ua3uhECO4U6ZMYcyYMXTo0AGVSoVSqSQ2NpbAwMACZQ0GAxs3bqRhw4ZUrlyZa9eu4e3tjYuLi1W5qlWrcvXq1cL3AvPSgEVJpTLXp8AcpD9O1cBaGM4nccNZR56bAm1eHu4VKxZpm56G/GUSFQpzP3Nv5+AbCOVtgo3865n///JK9LN8+Tv0szT3UZKKbh3Z+3/XyvbOU17KfPXVATw8PB5ZJr+ffn5+fPXVATw9zcvGb9v2Gfv2fc2rr77u8HmTki4ybtwYm3P1zps3h/j4OObOnY+TkzMffzyHSZPGs3LlWofPU1h+fn7s3futpa/CPbm5OcTERHPhwvliP7fDAe6FCxeoWLEiy5cvx8/Pjx07dvDBBx+wZcsWnnvuOUs5o9HIhAkTOH/+PJ9//jlg/gTn7Fzw1r2Liws6na7QnVAqFXh7Vyj08Y+idlLh7KKyq6y3fyWyb95EozBwO/06lRpXeiptehqcnM19NOp1mDR5VKnuX8Itejo8Pd1KugnFQvSzfPk79LM09lGrVXHjhhKVSlFkgyilMZC3l59fVbvLOjs7WZXPD3wdfR83bVrPxo3rqFWrNunpl632ZWRksH//XhYsWELTps0AmDVrLq+/3ovTp+Np1KiJQ+cqLJVKhY+PWO7+QT/9dJSFCz+mUqWSSXt0KMC9cuUK48aNY+PGjZYc2kaNGnHhwgViY2NZsWIFALm5ubz33nv89ttvLFu2jMaNGwPg6uqKXq8vUK9Op8PNrfC/3CRJJjv7TqGPt0WlUuLp6YbRYEKvM9l1jHtFbzwv3+SGG9xyMeFyKQ2fUr76i0JhDm4NehOyDHpdLrczb6FyK/2jz47Iv57Z2RpMpvK7moXoZ/nyd+hnae6jXq9DkiRMJhmj8cnaplCY+2oySSUyghsREUZ09FQOHTrI6dPxVKzoQc+eUQwePMyhOiZPnk7Xrt2ZPXsGAF5elThwYC8azR1CQ5szYcIU/P39SEtLIyqqB0uXriIu7gQbNqwBzLfWd+zYw+zZMzh16qTN8wwd+jbDhpmf5Tl69AemTv0XXl6VGDnybatyCQmnAAgNDbNsCwysha9vVeLi4uwKcNPT0+ndO5I5c+azZcsmzp9PxMenCoMGDaFnz1ct5fbt+4atWz8jNTUFb+/K9OjRi4EDB6NSqSx1LF++mtDQMFJSUvjkk485ffo0sizRqFFjRo0ayzPPPAuYRzVjYxdz9Oj3GAxGgoODeffd93juuQb2XQgbfv75R9asWUVychK+vr507NiZwYPfwtnZmQ8/nE5ychLr12+2lL9yJZ3evbuzZMkKWrRoSUJCPCtWLOWvv85QqZI3ERGtGTFiFBUqFByxX7NmFevWrbbZjpCQUFauNF/rH3/8gV69onjzzf60bt2y0H0rLIcC3Pj4eAwGA40aNbLa3qRJE3788UfA/Ilq2LBhXL58mXXr1tG8eXNLOX9/f27fvo1er7cayc3IyMDPz+9J+vHEv3weRgYkB5b3qhxYHU3GVZSyAl3qRaSqT9avpy0//UKW7/Uz51YWXn4mzAka5YvJJD21n5XSRPSzfPk79LM09tFkenQkatA/fPBDobQe9dXrTKjVtgNlhcJ8t9Cueh8o64hlyxYzdux4Jk6cwuHDB1m9egUhIaGW0U9HHT58kI4dO7N8+RoyM28yY8ZkVq9ewbRp/7IK4vv06Y9Go+HIkUOsWbOJSpW8mTNnPpJksozs3s/Nzd3yfX5QZiu/NSMjAy+vSgXSHn19fcnIcCztccmShYwbN5GgoCC2bdvCvHlzadEinOrVa/DFF5+zYkUso0e/T4sW4fz552kWLPiYrKxbjB07vkBdU6dGU69efTZs2ILJZGTp0kVER49j5849yLLM2LGjcXFxYcGCJXh4eLB//ze8/fZg1q7dRP36wQ61G+DYsV+YMiWa9957n+bNW3L5choLF84jJeUSs2d/TGRkD0aMGEZaWioBATUBOHhwP1Wr+hEW1pzz588xatQ7DB48lMmTp5OZeZPY2EWMHj2CtWs3oXjgIvXtO4DevaNstuX+ZZGnTJnucF+KkkMBrr+/+bZ1YmKiZVQW4Ny5c9SuXZusrCwGDhxIbm4un3/+OfXr17c6PjQ0FEmSOHHiBK1atQIgKSmJa9euWQXCZZmLqyuud25R90Q8KOByjar4+AeVdLMccic3D50mGxc3kU8kCILwMGs/+fmh+wKDKtPttXuDQRtj/4PRYDuAr17Ti1f6NrW83rLyV7Qa2ytL+vpXJGpQ4QLSLl0iefnlrgAMGDCErVs/4/Tp+EIHuBUqeDBhwhTUajW1atWmQ4dOHDv2S4Fy7u7uuLm5oVQqLbfyPT29UKmUNgNce2m1Wptpj87Ozuh0Be8WP0qfPn158cU2AAwfPpKdO7/kjz9OU61adTZv3khU1BtERZnzhwMDA8nOziI2drFlpPl+ly+n3Q2Oq6FWOxETM53k5OS78c9x/vgjgQMHjuDlZf4b+847o0hIiGf79m1Mm/avAvU9zsaN6+jZsxe9epmDzoCAmkycOJmRI/+PkSPHEBLSjBo1Ajh4cD9Dh5pHwQ8e3E+XLt1QKpV8/vlmWrYMZ9CgoZb+zZw5l969u3Py5AmrEXIwX093d3dKO4cC3MaNGxMaGsrEiROZPn06/v7+7N69m2PHjrFt2zbmzp1Lamoqa9eupXLlyly/ft1ybOXKlfHz86Nbt27ExMQwZ84c3NzcmD59Oi1atLAsFFEeVA8O4XrqX/hn6FH/+RuUsQA3L/cO2qw8EeAKgiCUI7Vq1bZ67eHhgcFQ+CXaa9QIQK2+F0ZUqOCB0WjfXOrjxo0mISHO5r6BA4dYgq1HcXFxsZn2qNfrHU57rF27juV7Dw9zip7BYODWrVtkZt6kSZOmVuVDQkIxGo0kJydTubKP1b7hw0eyaNFCdu3aQbNmoYSHP0+nTp1RKpUkJp5FlmV69uz6QJsNDgfl+RITz3LmzJ/s2bPbsk2+O4SenJxE9erV6do10hLgJiaeJSnpIvPmfWI5PjU1hXbtXihQd3JyUoEAd+PGdWzatN5mW5o0CWHx4mWF6kdRcyjAVSqVrFy5ksWLFzNp0iSysrKoV6+eZaaEffv2YTAYGDhwYIFjv/vuOwICApg5cyZz5szh3XffBeDFF18kJiamaHpTiugaNCMv9w+0gc25c+4C1eqVoRXOZMjLuY1vYHVs/O4QBEEQgLfej3joPoXSemhy0KjnUauVD01RuF+/dx6er/gkI562RjvlJ0gIdnJyKrDN3vqio2MwGPQ2+2PvbAR+fn5kZ2dhMBis2nL9+nV8fX3tqiOfk5Pt9+Zh/clP6bs/wM8XFfUG7dt35D//+Znff/+N1atXsmHDWjZv3oYkyVSo4MHGjVsKHGfr+thDlmX69RtI166RBfZVqWJ+H7p2jWTt2k/5668zHDp0kMaNm1KzZqClLy+/3MXmhwpv74IPiPXqFUWHDh1ttsXFxbVQfXgaHJ5FwcvLi+nTpzN9esHcioSEhMce7+7uzqxZs5g1a5ajpy5TqtQI5kpjd244a/GQXMrc4g+5OXfIzcnF2eXRU8KUJU8yUiEIgvCg/Nln7C2rVisLBL5PWm9Z8WAep69v1SdOUWjSJARJkjh16iTNm5s/FKSkXOL69QxCQgqXdvEgHx8fKlf2IT7+FG3atLNsj4+Pw8nJiYCAALKz780fn5mZyfr1qxkwYDCRkT2IjOxBRkYGPXp0Ji7uBEFBQeTl5WI0GqlTp67luDlzZvLss8/y2mv/dLiNdesGkZJyyRKwgjln+csvtzFhwiTc3NyoVq06oaFhHDlymO++O8SQIfceLgwKeoakpCSr45OTk4iNXcyIEaMsI9r5vLy8LOkVpVnZna+kDHBxV6OSleQqdWVu8QdNrgZNVvlZ9EGSJPR6vUMPDAqCIAhFw83NnZycbFJSLtmdxvA4+bMFzJ07ixMnfufMmT+JiZlEs2ZhNGxofk7IYDBw8+aNJxrg6Nt3ADt3bmfXrh2kpqZw8OB+1q79lFde6V0g+PP09OSXX35mzpyZnDuXyOXLaezevQsnJyeCg58jPPx56tWrT0xMNCdOHCc1NYXFixeyd+8eq4DXEf37D+LIkcOsW7ealJRLHD/+KzNnTic3N8dq+rJu3bqza9cOsrJu89JL90Zg33yzH4mJZ5k/fy5JSRc5fTqeadMmk5aWSmBgrcK9aaWACHCfosrVquOtN982yXVTkJudVcItsp9kMnEnO5tC3jEpVRQKMBj0yLKM0Wh4ohEDQRAEwXFt27a/O/1WHxITzxZZvZMmxRAW1oLo6HGMGTOC2rVrM3fuPMv+hIR4unXrREJCfKHP0bdvf0aNeo8vvvicPn2iWL16Jf37D2Ls2A8KlFWr1XzyyVKUSiXvvjucN998jd9++y8LFy4lIKAmKpWKpUtXEBz8HFOmTKRfv39y6tRJPvpoAWFhLQrVvvbtX2LWrI84evR7+vZ9nRkzphIe3oqPPlpoVa5duw4AtGnTzmr6r4YNG7NkyTLOnTvHoEF9GT9+LIGBtYiNXWkzDaWsUMhPkoBTSphMEpmZeUVap1qtxNu7Ar9//wuZ1zMLXU9udhZXbmeiVRioonOm2jO1i66RRUCpVOLsokKvMxUY3azoVZE6DYJRuT6dRTSKi8lkRJIMeHq6k52tQa12RqEon5/t8n9ub93KK3VTLhUl0c/yozT30WDQc/PmFXx8qtnM0XTUw3Jwyxt7+/mkKQr2Mi/lG0nDho0eX1go1fR6HTduXCUoqC6uro/O9y2ff+VLEQ9PLzy05s8Qt52N3LyS/pgjSg9trpa8nNySbsYTMxoNljkZzaO4RXN7TBAEQSjd0tJSOXcukeBgx+eXFco2hx8yExxXpVYA2qtXyFXq0GnKTnBlMBnQZGdTuZofZTUmNBoNmEyS1YTrRqPx7m0XkasgCIIwYcJY4uIKLqRwv3XrtpTJfMyAgJqsXLnGagGC0mzcuDGcPPnoa7Fp09YyeS2Kmwhwi4GTizOuOgMuald8E//ihquGKtXrP/7AUiAvNwejQQuK0jP1h/1kmw8WyLKMwWAs07lFgiAIRWXChMlotdpHlvEv5cvOP0pZCW7BPH2aVqt5ZJlq1crutShOIsAtJtXqPUPWd9uolKlDe+YmlJEA906OhtzbWXh4l60AV6EAnc7w0DkMTSYDTk5qxCiuIAh/d/lzpQolz9H5e4WHEzm4xcjYoDkmBfhf03P53KNvQZQWBoOBO1m5qMrYtIwmkwmT6eF5FZIkcnEFQRAEobwSI7jFyKfaM1x6JhWDbxB6lYxOq8XlMU8BlgZ52Tl3p9cqO7d58qcFexSj0YhKpS4wAbkgCIIgCGWbGMEtZupaz5GjMpCn0JGZUjZmVLiTdwdN9q2Sbobd8h8sexxJkh45yisIgiAIQtkkAtxi5uPnj7fOfL//tqvMjbTUEm7R4+m1eu5k5aIsEz8t5sUc7CXSFARBEASh/CkTIUt5412zKhUlF4wKExqjjEGnL+kmPVbu7VyMpXy0U6EAvd6AJNm/dol5FLfwSzgKgiAIglD6iAC3BLi4uuNqklDKCm6rtNy8dLmkm/RYd/LuoMvOLulmPNLjHix7GDGKKwiCIAjliwhwS4h/3Tr46MwPbWW6mshIuVTCLXo0nVaLJqd0B7j2PFhmi8jFFQRBeLyIiDD27fvarrJXrqQTERFmWbRAo9Gwa9eXhT53amoKbds+T3q69bMrOp3u7lK8HWjfPoJp0yZz+3bxPjOSnp5OeHgzTpwovtmRwsOb8c03e4rtfD17dmPNmlUOHbNhw1rCw5sV+CouYhaFEuRd0x/dtQz0ChPKjAykGjVQqkrvJcm5nUOlGkaUitLXRnsfLLNFls3Hq1QqxLy4giAItn311QE8PDzsKlu1qh9ffXUAT08vALZt+4x9+77m1Vdfd/i8SUkXGTdujM3FKObNm0N8fBxz587HycmZjz+ew6RJ41m5cq3D5yksPz8/9u791tJXwezChfN06dKNd98dUyLnFyO4JcjF1RU3hYm6J36nVuKfXIv/tqSb9Eia3DsYsnNKuhk2PPmctpIkIUmFC5AFQRD+Dnx8quDiYt/UliqVCh+fKpYVIwtzdw1g06b1DBnSH09PzwL7MjIy2L9/L++/P5GmTZvxj380ZNasucTFneT06fhCna8wHuyrYPa//12gXr36+PhUsfoqLiLALWFVA+uQUaciALXPZXA99VwJt+jhNBoNd+6UrgBXoTAvRvGkwaksm+sRU+IKglAeRUSE8c03XzFmzAjat3+BV155mQ0b1jhcR36KwuzZM5g9ewbLli0mMrIjHTq8wIQJ73HjxnXAOkVh3bpP2bBhDVevXiEiIowrV9J59923adWq4O3r8PBmVrfCjx79galT/8WoUWMLtCch4RQAoaFhlm2BgbXw9a1KXFycXX3KTy84cuQ7hgwZQOvWLenZsxu7d++yKrdv3zf06/cGbdq0omfPbqxfvxaTyWRVR36KQkpKCu+9N5IOHV6kffsIxowZwYUL5y115ebmMHfuTDp3bk+HDi8ycuTb/PXXGbva+zA///wjAwe+SZs2rYiK6sGnn65Arzc/wP7hh9MZMmSAVfkrV9Jp1SqU3377FYCEhHiGDx9KmzateOWVrsyfP5e8vFyb51qzZpXN6xYe3ox33hkGgF6vJzU1hdq16zxRv55E6bvX/Dfk1+gl0jO2Y6jREo3JGZ32Di6u7iXdLJtyb+XgXYqWwZYkU5E9JGbOxTWhVJaxZdsEQSgRRoPuofsUCiUqtZN1WUmJ0WYqlQK1k7Nd9T5Y1hHLli1m7NjxTJw4hcOHD7J69QpCQkJp2rRweZGHDx+kY8fOLF++hszMm8yYMZnVq1cwbdq/rMr16dMfjUbDkSOHWLNmE5UqeTNnznwkyWRzUMHN7d7fv/XrNwPYzG/NyMjAy6sSLi4uVtt9fX3JyLjqUF+WLFnIuHETCQoKYtu2LcybN5cWLcKpXr0GX3zxOStWxDJ69Pu0aBHOn3+eZsGCj8nKusXYseML1DV1ajT16tVnw4YtmExGli5dRHT0OHbu3IMsy4wdOxoXFxcWLFiCh4cH+/d/w9tvD2bt2k3Urx/sULsBjh37hSlTonnvvfdp3rwlly+nsXDhPFJSLjF79sdERvZgxIhhpKWlEhBQE4CDB/dTtaofYWHNOX/+HKNGvcPgwUOZPHk6mZk3iY1dxOjRI1i7dlOBxZD69h1A795RNtuivvszn5R0EZPJxJEj3/HJJ/PR6/WEhDTj3XfHFNvS0CLALQWUKjX6517khqzHqNDilJZBtWdql3SzbMrLySX7+jVcnAv3C7aomZRKjAoFsglz+qxCcS+L9v5/kxIYjI8e5ZVlc6qDi4uKQt5NEwThb2RXbMHgJl+1Og14sddwy+vdK6dgMtqeEtI34Bnavz7a8vqbtTPQafJslvX2C6RT3w8K1d4uXSJ5+eWuAAwYMIStWz/j9On4Qge4FSp4MGHCFNRqNbVq1aZDh04cO/ZLgXLu7u64ubmhVCott6g9Pb1QqZRPdNdMq9XibONvkbOzMzoHp9/s06cvL77YBoDhw0eyc+eX/PHHaapVq87mzRuJinqDqChz/nBgYCDZ2VnExi5m2LDhBeq6fDntbnBcDbXaiZiY6SQnJyNJEidOHOePPxI4cOAIXl7mnN133hlFQkI827dvK/DhwB4bN66jZ89e9OplDjoDAmoyceJkRo78P0aOHENISDNq1Ajg4MH9DB36NmAOcLt06YZSqeTzzzfTsmU4gwYNtfRv5sy59O7dnZMnT1iNkIP5erq7P3oQ7uLFCwC4ubkxZ848MjMzWbVqGSNH/h+bNm3FtRhWcRUBbinhW7MmxnNJ3HAzcdPZgOLi//CvG1TSzSpAc0dD6oX/oSgl2S3Ozs64VfRG6eKC7OyE0SQjSebUBfMvTgUKhQK1SolKqXrsI2Qmk+nuqIIYxRUEoXypVau21WsPDw8MhsLPA16jRgBq9b0wokIFD7vvqI0bN5qEBNtpBAMHDrEEW4/i4uJiuQ1/P71ej5ubm13tyHf/rXQPD3PaoMFg4NatW2Rm3qRJk6ZW5UNCQjEajSQnJ1O5so/VvuHDR7Jo0UJ27dpBs2ahhIc/T6dOnVEqlSQmnkWWZXr27PpAmw0OB+X5EhPPcubMn+zZs9uyLT/nOTk5ierVq9O1a6QlwE1MPEtS0kXmzfvEcnxqagrt2r1QoO7k5KQCAe7GjevYtGm9zbY0aRLC4sXL6NIlklatXqBSJW/LvqCgILp378xPPx2lY8eXC9VXR4gAtxSpUqsGpivXuKXSoFGpuZOXi3sF+55YLU56belZmMKg02PQGXBydUft7IzazQ2ViytGWYHJKAHmf+SSJKPTG3F1fnTgKssyBoNJjOIKgvBYr46a/9B9CoX1IEDPd2ajVj08ReF+kW/NeMRZCz/kaWu0s7APfwE2H6qyt77o6BgMBr3NEVx7ZyPw8/MjOzsLg8Fg1Zbr16/j6+vYbXAnG2kfsiw/tD/5z33cH+Dni4p6g/btO/Kf//zM77//xurVK9mwYS2bN29DkmQqVPBg48YtBY6zdX3sIcsy/foNpGvXyAL78tMBunaNZO3aT/nrrzMcOnSQxo2bUrNmoKUvL7/cxeaHCm9v7wLbevWKokOHjjbbcv9DiPcHt/lt8fLyIiMjw/7OPQER4JYiTi7OuLuoyDWoyFXqcL1yE/dnSl+AW5pIsoTeoEOhUGLUGyFPg4uLC2pXN5zcXDAq1ZaVzUwmGcmOX74mkxFJUhf4AyUIgnA/tZPL4wvdV1atVsJjUqUcrbeseDCP09e36hOnKDRpEoIkSZw6dZLmzVsCkJJyievXMwgJKZr5Vn18fKhc2Yf4+FO0adPOsj0+Pg4nJycCAgLIvm92oczMTNavX82AAYOJjOxBZGQPMjIy6NGjM3FxJwgKCiIvLxej0UidOnUtx82ZM5Nnn32W1177p8NtrFs3iJSUS5aAFcw5y19+uY0JEybh5uZGtWrVCQ0N48iRw3z33SGGDBlmKRsU9AxJSUlWxycnJxEbu5gRI0ZZRrTzeXl5WdIrHmbVquUcOXKY7dv/n+Xap6enc/v2berWrfvIY4uK+AteylSuVh0vjfmH4aazjivnL5Rwi0o/SZLQG7QoMH/a1mq15N2+zZ2bNyEnGyfJgIvKnJtrtOOPi3kU1yhmVBAEQSgibm7u5ORkk5JyqcgeDPb19aVjx87MnTuLEyd+58yZP4mJmUSzZmE0bNgYMKcZ3Lx544lSMfr2HcDOndvZtWsHqakpHDy4n7VrP+WVV3oXCP48PT355ZefmTNnJufOJXL5chq7d+/CycmJ4ODnCA9/nnr16hMTE82JE8dJTU1h8eKF7N27xyrgdUT//oM4cuQw69atJiXlEseP/8rMmdPJzc2xmparW7fu7Nq1g6ys27z00r0R2Dff7Edi4lnmz59LUtJFTp+OZ9q0yaSlpRIYWKtQbWrbth1XrqQzb95cUlIuERd3gujoD2jcuCnh4c8Xqk5HiQC3FKpWvy6VjW7IgMqoQKe1PVWHcI/JZEJvzEN5NyiVkTHoDeRlZ5N34ya6zEzk7DxMWiMKk4RClkG+P1f3wfqMGAwGjEb7vsRKaIIgCA/Xtm17fHyqMGhQHxITzxZZvZMmxRAW1oLo6HGMGTOC2rVrM3fuPMv+hIR4unXrREJC4efF7du3P6NGvccXX3xOnz5RrF69kv79BzF2bMGH/dRqNZ98shSlUsm77w7nzTdf47ff/svChUsJCKiJSqVi6dIVBAc/x5QpE+nX75+cOnWSjz5aQFhYi0K1r337l5g16yOOHv2evn1fZ8aMqYSHt+KjjxZalWvXrgMAbdq0o8J96Y8NGzZmyZJlnDt3jkGD+jJ+/FgCA2sRG7uy0HP7Bgc34JNPlnLhwnkGDnyT6Ojx1K9fnwULFhcYzX9aFPKTJOCUEiaTRGam7SdOC0utVuLtXYHfv/+FzOuZRVq3PW5dv4biwiVqXDxDcp2K+D7/6lM5j1KpxNlFhV5nKvMLHSgw5zCp1W6YHvipViqVVPRww8nNHTcPN1CpUaAABSiUmGdfUABKBTIKHM1OUCoVuLiU/NRu+T+3t27l2TVaXVaJfpYfpbmPBoOemzev4ONTzWaOpqPUamWp6+PTYG8/nzRFwV7mpXwjadiw0dM/mfBU6fU6bty4SlBQ3cfOxCBGcEspb18/NJXNt1RqJeVw9X/Ft8Z1WSVjfhLVZNJZRnLvJ0kSJq0OWasBvQ6QkSUZySgjGSRMegmTzoSsMyHpTMh6+78knQlZNhV3lwVBEIRHSEtL5dy5RIKDHZ9fVijbxENmpVi1+i+Qeu0yrlI1jKqqXEtOwq8EVwUpC2Rk9Ho9Li4qFAonZO4N5UqSjE424SYBWh1Kk4TCxdU6R0E214EJHLm1oVCZ7ySo1WJ6MUEQypYJE8YSF/foQZR167YUOh+zJAUE1GTlyjWWBQhKu3HjxnDy5KOvxaZNW8vktShuIsAt5ZybvMSVrGzuKLQoZQXS+WQq1/THpRgmSS6rJFlCZ9Dg6qxAxjrgNBnNy/oqAUmvR2EyoXR1BdUT/lOQzHm7Tk5OYnoxQRDKlAkTJqPVah9Zxt+/FC1h6aCyEtyCefo0rVbzyDLVqpXda1GcRIBbynl4VUaTnYOT5EqWUssNVz36axm4Sib86ojR3IeRTBJ6vQZn5wpI980baTSa0BmMuDmrzaO1JhMmzR2ULi4onV2eIDiVkU0SkiSJ6cUEQShTimvpVOHxHJ2/V3g48Ze4DPCtWYtq/v74apxQy0qylVpuqIxcOZ+M7jGfuv/OTCYTJpMW1f0ZCLKM0WBEobzvR1+SkbQ6JI0GxxIT7q8XZEnGZBJ5uIIgCIJQ0kSAW0Y4uTjjX68OVRROeJlckRQyN1z1ZF24xI0riSXdvFLJ8tCZUYtKcS9wNej1yA/OGCHLSHo9Ul4emAo5X+LdAFfMnysIgiAIJcvhANdoNLJkyRLatWtHSEgIffv25dSpUwXK3bp1i4iICH799Ver7ZIksXTpUlq3bk3Tpk0ZNmwYqamphe7A341vzVpUq+ZPFY0TlUyuBMYfo8YPx7h6/GuMRl1JN6/UkZHRGwxIpnvLCxsMEibJZHMCXHPKggbZYJ5lwaFzyTKSJFlWThMEQRAEoWQ4HOCuXLmSHTt2MHPmTHbv3k2dOnV46623rNYWvnbtGkOHDuX69esFjl+xYgVbt25l5syZfPHFF0iSxFtvvYVery9QVrDNycWZavXqUMENrld1Ri1BQLKGq6kZXL14saSbV+pIsoTeqAOTFjUyKMwjuw8NYCUZSatF1jn2gcGcvysjSSJNQRAEQRBKksMPmR0+fJjIyEgiIiIAiI6OZseOHZw6dYpOnTqxc+dO5s+fT40aNQocq9frWb9+PR988AFt27YFYNGiRbRu3Zpvv/2WyMjIJ+vN30xlv0Ck9q9z4c8fULg/yy21BqWsQL5wCbWL4r7VQmSc3O59ljFozNvMFHh4V8S9oncxt754mUwyGr0Gk9EEKNHqjKicZFCoLQ+FKcxLP5gfSZNB1ulQyTIKVzf7TiKbg1yTSUIlZgsTBEEQhBLj8Aiuj48P33//PWlpaZhMJrZv346zs7NlEuVDhw4xduxYlixZUuDYs2fPkpeXR6tWrSzbPD09adCgAcePH3+Cbvx9KVVqqjV+CbWrkkr5ubkuOq6i5Yqs4Yqs4aZkpPqBw5avPJNk2XdFvkPSzeuknT1X0l156iRZxmCU0ekNaO5o0GlyMehy0Wtz0OvvoDNo0Rq0aIw6NEYdWkmLSa9D0t7BrukV7pYRI7iCIAiCULIcHsGdMmUKY8aMoUOHDqhUKpRKJbGxsQQGBgLw6aefApCWllbg2KtXrwIF53CrWrWqZV9hqdVF+7ycSpU/qmde5rW0qxpYC4NWjzo5hRxX0HMvyFKiwPRAFxTyvdFdo0Ii21WFOuUS/uV0IYn8wWyFwnw9ZWRkWUKJbF6BzGQyj+QqlaBUk79Wrx4dLgZQKJUo3R4zkqsAlVKBQgVKpYxSWfzDuPk/t/n/L69EP8uP0txHSSq6J0bv/x1UVufKjogIY/Lk6XTt2v2hZfL7efVqOlFRPVi6dBXNmoWh0WjYt+9rXn319UKdOzU1hf79/8nWrTupXr26ZbtOp2Pp0k84cuQwOp2OiIgXef/98VSqVHx3JdPT0+ndO5Lly1cTGhpWLOcMD29GTMwMIiN7FMv5evbsRrdu3Rk2bLjDx+p0OoYOHcA//9m3QHt37tzO1q1buHnzBsHBz/H++xOoX79oVp1zOMC9cOECFStWZPny5fj5+bFjxw4++OADtmzZwnPPPffIYzUa8+TFzs7Wa3q7uLiQlZXlaFMslEoF3t4VCn38o6idVDi7lI37zc4ubtRpUt/2zvr17n173+ac7Gwup2eQo9SRJ6nRaXKoWKnSU21nSXJyNl9LtVKJk1qFi6sKpcL5gb84d2dYcHFBoVSiAJxUEs4KCbW7GwrVw//oKZ1UKJ3VqNXqx66T/TR5etqZVlHGiX6WH6Wxj1qtihs3lKhUiiIbRCmNgby99u79lgoVPOx6L6pVq8bevd/i6emFWq1k+/YtfPPNHt54458Onzcp6SLjxo2xuRjFvHlziI+PY+7c+Tg5OfPxx3OYNGk8K1eudfg8heXn52fpq2AtNzeHmJhoLlw4X2Df3r1fExu7hEmTYqhfP5jNmzcwevQItm/fVSQfUBwKcK9cucK4cePYuHEjYWHmTymNGjXiwoULxMbGsmLFikcen/8HX6/XW/3x1+l0uD1udOwRJEkmO/tOoY+3RaVS4unphtFgQq8rv7ecXV0rUNFZjdZgBOBW3H9xatEOpbp8rQGiUJiDW4PehCyDQWFCrQaDwYSTk7N5FPfBY/RGULsAkKfQ4aTQ4pqnQen+8A9TSiclCifznQ03N1Oxj9Tk/9xmZ2swmaTHH1BGiX6WH6W5j3q9DkmSMJlkjMYna5tCYe6rySSV2RFcL6/KAI98L/L7CQqr8vnX9v5jVSrlY6dV3LRpPRs3rqNWrdqkp1+22peRkcH+/XtZsGAJTZs2A2DWrLm8/novTp+Op1GjJo52sVBUKhU+PlWK5VxlyU8/HWXhwo8fGqxu2rSe1157g86duwIwZcp0Xn21B1999W8GDhzyxOd3KIqJj4/HYDDQqFEjq+1NmjThxx9/fOzx+akJGRkZlpSG/Nf16z9k5NFOT/rL52FkzFOblVdKpZIadWujO3Wamqd/w1Wn44LbIao1ebmkm1ak8tNMZNl8PRWYpwtDYUSpVCHb/ItjRKG4t8SjhA6jZMTVJKFyc7ekMdxPVkgolApMJhmVylhiq5qZTNJT+zdRmoh+lh+lsY8m06MjUdnwiMEPpQLFfaO1kt6EUi0j2eqjQoHivlHRR9b7QFl7RUSEER09lUOHDnL6dDwVK3rQs2cUgwcPc6iO/BSF2bNnAODlVYkDB/ai0dwhNLQ5EyZMwd/fj/T0dF57zZyiEBd3gg0b1ljq2LFjD7Nnz+DUqZM2zzN06NuWW+FHj/7A1Kn/wsurEiNHvm1VLiHhFIBVWkBgYC18fasSFxdnV4Cbn14wZ858tmzZxPnzifj4VGHQoCH07Pmqpdy+fd+wdetnpKam4O1dmR49ejFw4GBUKlWBFIWUlBQ++eRjTp8+jSxLNGrUmFGjxvLMM88C5lHN2NjFHD36PQaDkeDgYN599z2ee66BfRfChp9//pE1a1aRnJyEr68vHTt2ZvDgt3B2dubDD6eTnJzE+vWbLeWvXEmnd+/uLFmyghYtWpKQEM+KFUv5668zVKrkTUREa0aMGEWFCh4FzrVmzSrWrVttsx0hIaGsXGm+1j/++AO9ekXx5pv9ad26pVW5zMxMUlIu0bx5C8s2tVpN06YhxMWdLP4A19/fH4DExEQaN25s2X7u3Dlq16792OODg4Px8PDg119/tQS42dnZnDlzhn79+jnSFKGIBTzXgMvZ5wg6p6POmSskV/wD/7oNS7pZT40MmGQZJ9m8OINarSo4f60ko5BNyAqV5RijyYRGn4ebLKN2c0d+IM9Wlsx52+Y5cU1l+nakIAiPlrX1j4fuU9eoiMdLde+V/fIMPCSAV/lVoGLnZyyvs3f9hfyQO4cqHzcqRtazue9xli1bzNix45k4cQqHDx9k9eoVhISEWkY/HXX48EE6duzM8uVryMy8yYwZk1m9egXTpv3LqlyfPv3RaDQcOXKINWs2UamSN3PmzEeSbC+M4+bmbvk+Pyg7ceL3AuUyMjLw8qqEi4uL1XZfX18yMhx7rmfJkoWMGzeRoKAgtm3bwrx5c2nRIpzq1WvwxRefs2JFLKNHv0+LFuH8+edpFiz4mKysW4wdO75AXVOnRlOvXn02bNiCyWRk6dJFREePY+fOPciyzNixo3FxcWHBgiV4eHiwf/83vP32YNau3VSo/NNjx35hypRo3nvvfZo3b8nly2ksXDiPlJRLzJ79MZGRPRgxYhhpaakEBNQE4ODB/VSt6kdYWHPOnz/HqFHvMHjwUCZPnk5m5k1iYxcxevQI1q7ddN+MTGZ9+w6gd+8om21Rq+8NCk2ZMv2hbc7IuAZA1ap+VturVPHl/PmieejdoQC3cePGhIaGMnHiRKZPn46/vz+7d+/m2LFjbNu27bHHOzs7069fPxYsWEDlypWpUaMG8+fPx9/fn06dOhW6E0LRqNqsK2nZO9DXbEWuWubmtSv4+FV7/IFllGySAQUmkwGVWk2BeXFlGSQTD875ZTJJaOQ7uCDh7OZhHeTK5iAXhbmcWl12HygRBKF86dIlkpdfNt8OHjBgCFu3fsbp0/GFDnArVPBgwoQpqNVqatWqTYcOnTh27JcC5dzd3XFzc0OpVFpu5Xt6etmVovAoWq22wDM9YI41dDrH5tbv06cvL77YBoDhw0eyc+eX/PHHaapVq87mzRuJinqDqCjzA3KBgYFkZ2cRG7vY5kNXly+n3Q2Oq6FWOxETM53k5GQkSeLEieP88UcCBw4cwcvLnLP7zjujSEiIZ/v2bQU+HNhj48Z19OzZi169zEFnQEBNJk6czMiR/8fIkWMICWlGjRoBHDy4n6FDzaPgBw/up0uXbiiVSj7/fDMtW4YzaNBQS/9mzpxL797dOXnyRIEH59zd3XF3d+dJ5OdT23omS68vmkWrHApwlUolK1euZPHixUyaNImsrCzq1avHxo0badLEvlyX0aNHYzQaiYmJQavV0rx5c9atW4eTk9PjDxaeKqVKjbLJS+TcyUOjMOCsUeGh1eJSgg9LPU2m/AESWUaWJBQKRYFUBUk2Yev3r0mS0Oo0yJKEq4cnkiI/yJVRICOjwGQyIUlygU+/jsg/VLK0S0ZCRpbluzNByGB5bZ4xw9VQNh6KFISyzuvNR9zlUlr/u/d6vQFqtdJ2GsYDvyM8X33EA9tP8PukVq3aVq89PDwwGAq5NDlQo0YA6vue16hQwQOj0WjXsePGjSYhIc7mvoEDh1iCrUcxB0MFA1m9Xu/wcz2175tByMOjIgAGg4Fbt26RmXmTJk2aWpUPCQnFaDSSnJxM5co+VvuGDx/JokUL2bVrB82ahRIe/jydOnVGqVSSmHgWWZbp2bPrA202OByU50tMPMuZM3+yZ89uy7b8v2XJyUlUr16drl0jLQFuYuJZkpIuMm/eJ5bjU1NTaNfuhQJ1JycnFQhwN25cx6ZN6222pUmTEBYvXvbYNru6mkfdH7x+Op0OV3vnnn8Mh58k8vLyYvr06Uyf/vChZ4CAgAASExMLbFepVIwfP57x4wsO6wslz6uKL5qL2ejUCrJUWpwuX6NaUK2SbtZTYV5W1/x3yGgy4uT04GwKFEhTsN4lozXokHOycangASon8+GSDCrFfWkKtv+Z5c8+J90NUiVkJFkyB6uyjIR52V/zNvMfRUvr7rbzwcFhtaxEb9RTiCmuBUFwkMLJ/g+TCicVCrXSrg+8jtTrCFujnbafP7CPrYEpe+uLjo7BYNDbjNftnY3Az8+P7OwsDAaDVVuuX7+Or6+vXXXkc3Ky/d48rD/5z+aobTyQHRX1Bu3bd+Q///mZ33//jdWrV7Jhw1o2b96GJMlUqODBxo1bChxn6/rYQ5Zl+vUbSNeuBRfLqlLF/D507RrJ2rWf8tdfZzh06CCNGzelZs1AS19efrmLzQ8V3t4FHxDr1SuKDh062myLi4t9A2JVq5pTXm/cuE6dOvdSeW7cuI6vb1W76nic8vWovFAk/OsGIZ+7yA03IzecdZB4gWr1n3n8gWWMLMuYTDJKJwWyZMLm0r0PSVO4vw6tQYspz4TyblCpclEhKWWQweTsglpl6yE28y9Ok0JGlu8OyigU5hQHBYDCnMzr6GiNSolRo8SkBSR7g1yF+cGVu//PX85NoVAiKxT39hfdlKBP7P45RUtTu56mp9VPkUIjFIcHA3tf36pPnKLQpEkIkiRx6tRJmjc3P8SUknKJ69czCAkpXNrFg3x8fKhc2Yf4+FO0adPOsj0+Pg4nJycCAgLIzs6xbM/MzGT9+tUMGDCYyMgeREb2ICMjgx49OhMXd4KgoCDy8nIxGo1Wgd2cOTN59tlnee01x6dRq1s3iJSUS5aAFcw5y19+uY0JEybh5uZGtWrVCQ0N48iRw3z33SGGDLn3cGFQ0DMkJSVZHZ+cnERs7GJGjBhlGdHO5+XlZUmvKKzKlStTq1ZtTp48Ybl2RqORU6fiePXV156o7nwiwBVsqlavLvLFFG46abntpkCZcgm/wPI3kmuSJJxQgiQhGU0o1Spkyb40hfvdf5tPhRpJZQ5gDZIRF2eX4puJQ6XE6ASaO0ZccbEVsj/a3eBaYfX6/hcKHvtmFAeVEj0GjFkajKVsailHKe77r+Xb/L/6KiV6pQlT7lOaQkvBfR9s8j/cKO+1ybJN8USpNo9kkpEMBvNiK0/p34kMlllPFA+kDogAv3i4ubmTk5NNSsolqlevYXPk01H5swXMnTuLKVOm4+bmxkcfzaZZszAaNjQ/CG8wGMjOzsLT06vQqZB9+w7g00+XU6NGAC1atOTMmT9Zu/ZTXnmlNx4eFa0CXE9PT3755WfS0tLuzkJQgb17v8bJyYng4OeoVq069erVJyYmmvffH0/Vqn7s2rWDvXv3sGTJ8kK1r3//QUyZMpF161bTsePLXLt2ldmzP6RGjRpW05d169ad+fM/RpJMvPTSvRHYN9/sx//931vMnz+XqKg3yM3NYf78j9DpdAQ+xb/7ffr0Y9GiBQQE1KRBg3+wefMGdDotPXr0LJL6RYArPFQlv8rob9wkR6njjqTmTk4W7hXLz0TW5ingzA+aAZgkIyqFGvnBsPARaQoPqzk/n1eWHn6L62kymYyYVGqUOHirUzb/R7Z6bfNFiZKQkU0SksmEXMYD3Ee9qwpJiWx0QjIYkIq7n/d9ynman2lklRKDwogx5ynPg2v1qe1uwK68+/8Hv/LbZjTc/XcsIT9h8K1Q3H0AVS65eXDz+/LAxsf2TQH3cqoKqW3b9nz99b8ZNKgPsbGr+cc/imaWnkmTYli0aAHR0eMAaNXqBcaNm2DZn5AQz8iRbz/RKmN9+/bH2dmJL774nEWL5uPn50///oPo23dAgbJqtZpPPllKbOxi3n13ODqdlmefrcfChUstMxgsXbqC2NjFTJkyEY1GS506dfjoowWEhbUoUJ892rd/iVmzPrLMGezp6UXr1i8ycuQYq3Lt2nVg/vyPadOmndX0Xw0bNmbJkmV8+ulKBg3qi5ubG2FhLRg9euxTfT6qZ8/e5OXl8umnK8jKyuK5555j6dKVRbYKnUIuib++RcxkksjMzCvSOtVqJd7eFfj9+1/IvJ5ZpHWXJkqlEmcXFXqdyeYo4420VG5JRryzjShvnqRSxKsoH5JTWpo9rJ9qlRIPDydzGoJCgZOzq82HzZQqJ2S1fflRSpUKnBWW87i4uJiXBy6Gf2pqlZKKnq7kZGtRK9S4qFwef1AZpFIp8fJyJyvrTqlbHKAo/R36WZr7aDAZua3Lxcfbz2aOpkPuW+ihFH1WtI9CgeIhaVq2PPRhugc8aYqCvebPn0uXLpE0bNjo8YWFUk2v13HjxlWCguo+drVQ8SSK8EhVAmrirr1JzYRfqJmm4drp70q6SUVKkmQkCfPtS1nGZDIWuIUJIOHAanaybDXiJd2doaG4GUzGgqPRgiAIfyNpaamcO5dIcLDj88sKZVvZG4oTil2NemEkZV0h6NxNfNN0XKmQBDaWtpWRUKqy7r02VnrokzEFypq8ePjnLQnFfWUlkxcKlChQ4ONfBacnWP9blrn7oBkggySZbCflOZCmIMsyCvlev00mE+oSmAZPkiUMkhFnpZiCTxCEh5s4aRxxcbZXFQNAAevWbXmq+ZhPS0BATVauXGO1AEFpNm7cGE6eLLioxf02bdpaJq9FcRMBrmCXqs26kCz9yu1q1dEqbM+b6Cm50uDn/1hen2z9InqF7TkRPSQXGv78p+V1fOs2aB5Sr7vsTOOf7pU9HdGWPKV57jzFtdvU/u4Ako8vUmUfpMo+mCpXAbvn7pXvPWgGIEmYJJN5+d77HzYzR8KgtiPAtfwn/9C7OW4KRbE+0SIDRsmAi9JJjOMKgvBQ48dFWybet0mhoFr1GsXXoCJWVoJbME+fptVqHlmmWrXyuwBTURIBrmAXpUqN8zP1cc/WoFTZHpVVS3C74r0A0FVWo37IqKyTrLQq6yypbKYGmPc9UFZWIslOaBQGbruY0OtlXFNTIDXFUkZyr4Dk44NUuQpSZR/kKr7gUqFA3TL3VjTLZzKaULkUfNhM4vGzKZgrlc1pCkqFZR5FkyThpFbft2BD8TBKEgbZhNruB+QEQfi7yZ8r9aEczMEVCs/R+XuFhxMBrmA3L58qePk8plCd/pZvH3sDpfa9soGPKPZg2QDAaDBy4col9Aoj55s1R6s7QZMbbqizDShzslHeyUN5J88q6JV9fFCER8ADT2iaZBlZujtPoywjS+YVyAqMuDoym4KM1cNqkskERTAtjqNkWcZoMuCkVolRXEEQBOFvQwS4QpmkdlLjIblyS5WHq5Mr39f1JF4y8mquP87uXVHevoUy8yaqmzdRZt5EmZON4uZNXPZ/gz6sBcZn6lnygyWTjCTLqJQKy+irZDSidnZCMhUyTUGyHhWWJKlEpgsDzHPxIqEQz5QKgiAIfxMiwBXKLC9PD27l5XFLqaHB5UD+rJnMF56ZRGX+gEeVthj9qpGfAazU6XD99WcUqam4/HYM1bWr6Fo+D05O5hXHHliszCQZUVMwb0uSjSiwZ7og2Wr2UHOaggmV0taqZk+XdHfBCWflE05zJAiCIAhlhBjSEcosD29P3GQnKsjOqHP8qGmsgF6p5AsfEzdv7sdZd9/8xW5uSJ1extCsObJCgfpSEm77v0Z5KxMZGUk2YbWa1N1FGgqQZRTS46cMMwex1hm7JpOpxNaV1ZsMYsowQRAE4W9DBLhCmaVQKPCvUoP9GQH8N9eb5zQRPGuqgqRQsMvXhYs5R3DPSbr/AIz/aIS2Yxckd3eUOdm4HvgG1flE84Nm98d/sowk25i/VgZZMj0+TpWBBxcMshUwFxNJkjDamNpNEARBEMojEeAKZZqHuzPBd5fajr+i4EVVcxrL5kfWDvi4c8J4Au8bv99dI9NM8q2KpmsPjNUDUEgSLr8dQ/HDD0g6vfUynSbJ5swOsmy8vzqbZFm2PGhmOa9kXlq2JBZ9kAGjyfBUl1wVBEEQhNJCBLhCmdfUX4GvUktdfSbpN6GFsiEtqA/AL5XcOeicQpXLh1CYdPcOcnFF17YD+pAwZIUCVfJFTLv+H/LNe2kN0sNGPGUZhWx7ft8Hyz2opFY1AzBIJoyOrMgmCIJwn4iIMPbt+9qusleupBMREWZZtECj0bBr15eFPndqagpt2z5Penq61XadTnd3Kd4OtG8fwbRpk7l9+1ahz1MY6enphIc348SJRy/QUJTCw5vxzTd7iu18PXt2Y82aVQ4dk5AQzzvvDKNDhxfp3v1lZs/+kKys+xZtkiTWrFlJ9+4v07bt84wdO4r09MtF1mYR4AplnpM+m4Z+l3H3usPlVHMQ21gRRFuaoJQhoaIr273y8PzfHhTSfYGpQoGhQUNLygJZWRh37UY6c9Yyf63NhRlkkCXJjnRauUAwazKZSiwTVpZlDCY7AnNBEAQbvvrqAB06dLSrbNWqfnz11QEaNWoCwLZtn7Ft22eFOm9S0kXGjBlpczGKefPm8Ouvx5g7dz6xsatITk5m0qTxhTpPYfn5+bF377c0btykWM9bmqWkXGLMmBE888yzrFu3iZkz53LmzB9MmTLBUmb9+jXs2rWD6OgY1qzZiCSZGDNmJAaD7UWfHCUCXKHMc/PwQAHkKrTUcskmM8scQj6jqMHLihY4yUr+5+7MSj8Vx/T/5Zycxi05594ctb5V0XbtgRxQk//P3nsH2HGVd/+fc86UW7avtmjVLdmSZcmy3LDBBmyMaaYYHAjBJJBA3rzwQkL80oLzS6OFEox5gYQWU2J6aAFjU4xNMcaWm2zZsq1eVtv7LTNzzvn9MXeb9u7u3VVfzQfG2r1T7jn37r3znWee5/ugNfru36B/8StssTjuh3sY1kazNiUrl3M71tXsBBEmxWYJCQnzpLFxEb5fWZdIpRSNjYtwS23K5+se8+Uvf4k///PXU1NTM2VdZ2cnt932Y/72b9/NeeedzznnbOD97/8QDz74AFu3Pjyv55sPh881AX7yk/+hqamZv/3bd7Jy5SrOO+983vnO93D//fdx4MB+wjDk1lu/xpvf/L951rMu58wzz+L97/9XOjs7ufPOXxyVMSQ2YQmnPEopamWKPpvHyRie3A2XlC6kl4hFvIRL+Zm5h14XeukH+gFwcWiytTRRS5NXx5LnPYuG7bsw9/4B+/QO9PAw5lXXojxvqpg1FmEirJzhI2QP91GIv+SNMTiOgzkBQnfcMiz5Ik5IOFLCaPpIkxQCpZxJ2xoj0cZw+DWmQOA4k7edjsO3rZTLn3sJ73nX+/jZz29n66Nbqaqq4hUvfyVv/LO/qPgYl112IX/3d//Ai1/8Uj7wgX8EoLa2jp/+9Mfk8zkuuOAi3vWu99Ha2kJ7+0H+6I9exs03/zsPPriF//zPz48d49vf/iEf+MA/8tBDD5R9nr/4i7/kzW/+KwDuuutX/P3f/xO1tXW89a1/OWm7Rx55CIALLrhw7LHly1fQ1NTMgw8+OBY9nomDBw/yyldewwc/+FG+9rUv89RT22lsXMQb3vDnvOIVrxrb7ic/+R9uvfWr7Nu3l/r6Bl72smv5sz97I0qpsWN8+tOf44ILLmTv3r3827/9K1u3bsVaw8aN5/K2t72DNWvOBGB4eIhPfeom7rrrTsIwYt26dfyf//M3nH32+sreiDL85jd38/nP/zu7d++iqamJ5z//hbzxjW/C8zz++Z//gd27d/GlL31lbPv29oO88pUv5ZOf/AwXX/wMHnnkYT7zmZt5/PFt1NXVc9lll/OWt7yNbLZqynN9/vP/zhe/+Lmy49i8+QI++9nP88IXvpjLLrt80l1MIeKY6tDQIP39/eRyI1x00cVj66urq1m7dh0PPvgAV1/9wnm/FqMkAjdhQVBbW0dff55umaM26mckX0c2HX+wFolaXmOfQaH9p+xLuTxdt5guMUxIxEF6OEhPfJAQqlanWF+3mot/sQt1qIPgzrtIv6D8LTlrNEI500ZyrbUIOzX6q7We1wnqaBHoEE86TJXfCQkJc+Eb35r+lvuStqVc+dyrx37/9ne+jp4mRailuZWrr3rx2O/f+8G3KRan3o4HaGxYxItf+LJ5jff/feZm/ubtf8u73vl3/PwXd/D5L/w7m887n/M2bZ7X8X7+89t5/vNfyKc//Xl6e3v4x3/8Oz73uc/w//1//zRpu9e+9vXk83l++cuf8fnPf5m6uno++MGPYqZxpEmnM2M/j4qycvmtnZ2d1NbW4fv+pMebmpro7Dw0p7l88pMf54Yb3s3q1av5+te/xkc+8iEuvvgS2tqW8I1v/Bef+cynePvb/5aLL76Exx7bysc+9q8MDPTxjndMTYf4+79/D2edtZb//M+voXXEzTd/gve85wa+850fYq3lHe94O77v87GPfZKqqipuu+1/+Mu/fCNf+MKXWbt23ZzGDXDPPb/lfe97D3/zN3/LRRc9gwMH9vPxj3+EvXv38IEP/CvXXPMy3vKWN7N//z6WLl0GwO2330ZzcwsXXngRTz31JG972//mjW/8C/7u7/6B3t4ePvWpT/D2t7+FL3zhy1NS7V73uj/lla+8ruxYHCcOnqxcuWrKuq9+9RYWLVrEmjVn8utf3w3EqSwTmc97Nx2JwE1YEFRVVeH2SQIRsaw64IndggvOHl/veI2stXWc29NBt6ilt+5S+himiwG66KeLfvoYYtgW+ENDgc5nVvGyuwYw2x4nbGnBOXfjlOe0RpdydMsLRUvJeuywlr8nsqsZgLGxZZgjko9/QsLpxIte8GJecPWLAPjT69/A17/xX2x99JF5C9xstop3vet9OI7DihUred7zruaee347ZbtMJkM6nUZKSWNjbHtTU1OLUvKIrMELhQKeN7WBjed5FIvBnI712te+jmc/+zkA/NVfvZXvfOdbPProVhYvbuMrX7mF6657Dddd92oAli9fzuDgAJ/61E1jkeaJHDiwvySOF+M4Ljfe+A/s3r0bYwxbttzHo48+wk9/+ktqa2sB+N//+2088sjDfPObX59ycVAJt9zyRV7ximu59tpYdC5duox3v/vveOtb/xdvfetfs3nz+SxZspTbb7+Nv/iLOAp+++238aIXvQQpJf/1X1/hGc+4hDe84S/G5vcv//IhXvnKl/LAA1smRcghfj8zmQxz4eabP8Fvf/tr/vVfP47juGP51Ie/f57nTSpEOxKSM1zCgkAIQZ2bpSsaIvQhPBQQhi6uO/7tmas/Ez/XQfXgDvrrN9BIDY3UsI74ilajGfRG6BJ9/GbJNn5zXsTlD40Q/OouRH0datmyyU9qLUJHWDXN7X5b2kYcbrFr0Vqj1PHvajb6/KEOcR0nycZNSDgC/vjVr592nTxMuf3Rda9FyelTFCZy7cv/aNrjHr7tXFixYuWk36uyWaIjKOhZsmTppLtR2WwVUVRZIesNN7ydRx55sOy6P/uzPx8TWzPh+z5BMFXIBkFAOp2uaByjTIw4VlVVAxCGIX19ffT29rBp03mTtt+8+QKiKGL37t00NDROWvdXf/VWPvGJj/Pd736b88+/gEsueSZXX/1CpJRs3x4XMb/iFS+etE8QhHMW5aNs3/4E27Y9xg9/+P2xx0bPLbt376KtrY0Xv/iaMYG7ffsT7Nq1k4985N/G9t+3by9XXPGsKcfevXvXFIF7yy1f5Mtf/lLZsWzatJmbbvp/Y79HUciHPvR+brvtx7znPTfy7Gc/F2AslzsIAlKp8bzu+bx305EI3IQFQ019HV1dQ3SLYTKuy96BelYvGl+fqz2D2oP34Ad9eMVeAr9h0v4ODotFPatSTXTrAR44ex9nDHos2dlH8Sc/JfXHr0aWrrhHsdYcHqCdTMkL93Ahq02cpnCiIrmR0RgMIqkzTUiYN65TeS6767goJZF6qsA9kuPOhXJFUEfyHXQkx3vPe24kDIOyEdyamtqpD5ahpaWFwcEBwjCcNJauri6ampoqOsYorjs1EjzmplOG0RqKculm1133Gq688vn87ne/4f77/8DnPvdZ/vM/v8BXvvJ1jLFks1XccsvXpuxXLhpdCdZarr/+z3jxi6+Zsm7Rovh1ePGLr+ELX/gPHn98Gz/72e2ce+55LFu2fGwuL3jBi8peVNTX10957Nprr5vWTWNiEeLIyAjvfvcNPPzwg/zLv3xo0j4tLXFqQnd311jaBMTv3Wiu8pGSnN0SFgxpP8XSVAPD0WLuCut4pGvyF5N1fHLZ+INUPbijzBFsyeUALvLPBCH4/oUOpqkRCgWKP/of7GHRgvE0hfLYaVwYTnyagiVILMMSEhKOE4fncTY1NbNs2fKyS21tZQJ306bNGGMmFavt3buHrq5ONm8+/6iMu7GxkYaGRh5++KFJjz/88IO4rsvSpUsnPd7b28vHPvZhoijkmmtexj/+4/v52te+SU9PNw8+uIXVq1czMjJMFEWT5vzVr36Zu+/+1bzGeMYZq9m7d8+k43V2dvL//t8nyeVGAFi8uI0LLriQX/7y5/ziFz/jJS956dj+q1evYdeuXZP211pz000fp6OjY8rz1dbWTvveNTc3A3H0+4Yb3s62bY9x002fniKIzzzzLLLZKh54YMvYY0NDQ2zf/sRRe+8SgZuwYBBCUN+0iHVL0ghg/yB0jUwWkcO1awCoHtrB4e3ILGA0GGNpcmpZqZqJHMEfrliByGawPb0Et98xWZhaCzMKRYsoI2Stsceo6YPFztZmrURiGZaQkHC8SKczDA0NsnfvnorTGGZj1C3gQx96P1u23M+2bY9x443v5fzzL2TDhnOBWGj19HQfkbfq6173p3znO9/ku9/9Nvv27eX222/jC1/4D17+8leOpTOMUlNTw29/+xs++MF/4cknt3PgwH6+//3v4rou69adzSWXPJOzzlrLjTe+hy1b7mPfvr3cdNPH+fGPf8iqVWfMa3yvf/0b+OUvf84Xv/g59u7dw3333cu//Ms/MDw8NJbzDPCSl7yU73732wwM9HPVVeOC80/+5Hq2b3+Cj370Q+zatZOtWx/m//v//o79+/exfPmKeY3pllu+yMMPP8R733sjK1eupKene2wJwxDP87juulfz6U/fzN1338VTTz3JjTe+m5aWFq644sp5PefhJCkKCQuOal+wptHS21tk244Uz55QH5bLLkUrH0cXyOQOkstOvvo2gDGggIv91ezOdbLFaefSa14A3/kBeucuwt/fi3fpJWP7zJSmYK2dNmcu0hG+8o8okhs/r0UYDTrCRhbrTV/4NhFjDaHRJUeFhISEhGPHc597JT/60fd4wxtey6c+9TnOOWfDUTnue997I5/4xMd4z3tuAODSS5/FDTeMNxN45JGHeetb/3LMwms+vO51r8fzXL7xjf/iE5/4KC0trbz+9W/gda/70ynbOo7Dv/3bzXzqUzfxf/7PX1EsFjjzzLP4+MdvHrsVf/PNn+FTn7qJ973v3eTzBVatWsWHP/wxLrzw4inHq4Qrr7yK97//w3z5y1/illu+SE1NLZdf/mze+ta/nrTdFVc8j49+9F95znOumGT/tWHDuXzyk/+P//iPz/KGN7yOdDrNhRdezNvf/o55e/veccdPsdby93//3inrRt+Lv/zL/43Wmg996J8pFoucd9753HTTp8ecGI4UYU/kfdKjhNaG3t6Ro3pMx5HU12e5/87f0tvVO/sOFZJOp0ll0lTVVREGIYf2tR+1Y88HKSWerwiK+oT4sh4LhgYG6R3oZ5GpYmtHLctWSpYtVmPzbDh0D3UDjzNUtYqOxc+ZtK8UAj/l4HsSqyO+NnI3HWaAy7MbuGS3JPjZzwHwXvxCnDNLeUJCIL00toyoFEIgPQddpkWulBLfn5/AFVaDibDaYE0EJccGpSTV1SlGihBVcP3qKkXWyZxycVylJLW1GQYGcmi9MP5uy3E6zPNknmOoI/qLwzTWt5TN0ZwTIp6rriAH96RDCIRSFW/uOJIomv29PFIXhUqJW/lew4YNU91wEk4tgqBId/chVq8+Y1JxWjmSFIVZ8DMpahtqSGfSuNNVy8+EgGx1hkUtTaxcdwarzj6L5RvX07zyDBqXLaGuse6oj/l0J5SWQVGgUw7T7PWw98DkIq+hmtUAZEf2IvRhVau2lDdbKg67yI9TGrbknoL1Z+FsPg+A4I6fY7q6SvvEaQpCMGUZPZNJKaass9ZgrCm7rtxxhIkQYQEbjGCKOUxQxOowfv7DTph2BqP4iUTGENokFzchIWFhsn//Pp58cjvr1s3dXzbh1Ca5NzkLy9eto1gsEhbzFIbyRMU8hXyOQq5AUAiJihGhniwmXNclnU2Tqc6SqakhVZ3BT09OmjcGPL+KxsWLyY8UKJbpsZ0wP2qzVbT3dzIsCpxZlaazV9DTD22t8fqi30jg1uKFA1QN72Godrxi05ZyWK1VCCE4y1lMjUgzaPM8WtjDpsuehenpxezdS/FHPyb1x69GZDIYHcI0QlGKCCNN2Ra9kQkRrjN7+15jxn11K8AajQgL4KVmbCmcWIYlJCS8+7038OCD5buKASDgi1/82rzzMU8kS5cu47Of/fxRu+19rLnhhr/mgQemNrWYyJe/fOsp+V4cbxKBOwvGgBAuXsrFS8W9sD0PCoWQKMgT5POE+SL5kWGCfES6JkO2tppsVS1+NkUZi75J1DQ1s2homAN79h2H2ZweKKmodbP0hcOEnoMrhnh6T9WYwEUIhmpW09jzANVDOw4TuHHtmdEW5QqkkFzgrebO4qPcm3uCc/2V+C96AYVvfhvb30/xJ7eReuW1CEdN76agDVLGzgUTEQBaIz23JC4Fo6kGo5m7o3sIITFmaprDTBgdIo0DszR0CI0mtBpHVH4LMiEhYeHwzhveM2a8XxYhWNy25PgN6ChzqohbiO3TCoX8jNssXrz4OI3m1CYRuPMgCEDKCaK3Hlq8+HGlQOvx7WZH0LRsCflcjt6unmM57NOKmpoa+nqGOSj6WJnJ8NRINYNDhlQpjW6o+gwaex4gkz+EEw4TueMJ98aCtqAQICUbUyu5J9hOrx7i6fAQazPL8F/2Mgrf+AbmwEGKd96FuuJ505Z1GeJ0B60P28KCxYAwcZaBMcQuCKPrSz8IQcpXUzqizYq1mDBAeDN/zOMoboDrpJMobkLCacioV+q0zDEHN2H+zNW/N2F65pyDG0URn/zkJ7niiivYvHkzr3vd63jooYfG1j/++ONcf/31nHfeeVx55ZV85StfmbS/MYabb76Zyy+/nPPOO483v/nN7Nt36kcvR8WsnluQDQDhpmha1kI6c3S6dyRAdTqLQ9y6tzbjA5rHnx5PA4jcKnLpOKRbPbRz0r7Gxg4DOrREIRA6bHTiLjf3DG8jKGqibA3yqrjPvH70UcL77yfs7Su/dPcR9PQS9PSNL739BP0DhAOD5PsHMPk8US5HVCiigwAdRRhj4kVrwtAi5TxS5nU0Nc+4DKNR3ISEhISEhIXAnCO4n/3sZ/n2t7/Nhz/8YZYtW8bnP/953vSmN/GTn/wE13V54xvfyJVXXsk//dM/8dBDD/FP//RPZLNZXvWqVwHwmc98hltvvZUPf/jDtLa28tGPfpQ3velN/OhHP5p3F4+FQF1TM7mBYfbt3HvqVdiehAghqMvU0J3rZ8DR1Djd7Cs0ERuAxQxVryaTP0T14A766jeON2SwFowlnJASsEGs4AGe5qDuYX/QSZuzCLF8BeIZl2LvvQd7z2+xZXqwQxzBnYmwtJRFShCC/BxKjbuZ25+QUAqUolcppHLAUQg1ujigxn9nPiL7GCCEoNNVhKE+oQ0zjoQxD+TxSsLJTUGEQApBt+ccu3lKOem9Hft59D2XE3+WlbjPzRkhBIW0Rz4fHLv3UiqE44z/XTtOPN8Jj1H6exdSMDpRLcBmPUwUYY5w8kKA1RJrzJxuxJwMjL1GCQknnMo/PHMWuD//+c+55ppruOyyywB4z3vew7e//W0eeughdu3aheu6/PM//zOO47B69Wr27NnD5z73OV71qlcRBAFf+tKX+L//9//y3Oc+F4BPfOITXH755dxxxx1cc83UNnOnC0EAi5Yvo5DL09XedaKHsyCoq64hzBeQ0nBPVE8usjwjZ6krOYsMV62gqev3eOEAfrGHYio2xLbWYpnsX5sVKdY5y3gs2sN9wXZe7sTbivM2Qz6H3fbYnNMHxpaZmId121zPnbZkum6ZXYwnJJxWeB6pN72RvBac7qZDbksrKp3cZUw4sRSLRYQo3yb6cOYscBsbG7nzzju5/vrrWbx4Md/85jfxPI9169bx7W9/m4svvnhSb+ZLLrmE//iP/6C7u5uDBw8yMjLCpZdeOra+pqaG9evXc999953WAjfGpWlxG7lcnpGB4RM9mFOetJdi+dK413bDoCU3aNk/OC5wrfIYyS6nengX1YM7xgRuvJIp0arznTU8Fu1hR3SQPj1EvapGCIF45mXwzMtmHIvyXTRTnRRsSeS6jsKVEh1GpQiyGft3YlTL8xwcB8w0uTBKSbJZn5GR4mRPUSGQXgo7peDMgjZxy+FI4yDwUVitxxbGfo7i/I2TACkF6VLUz5wkY5oTttRDbvS9tZaxSxM7/rgQHNt5GjP5fTYaG2kweurfwDHyyRZC4LmK4BhG4yf9HUdRPL9owt+1NlgdxdsdNk+9/UlGNmfQ6SyecI5I5k4sHD2VEFIirMaEFRWWYIxA69lnqrU4Lj64CQsBS7FYZGion/r6OlQFdxTmLHDf97738dd//dc873nPQymFlJJPfepTLF++nEOHDnHWWWdN2n60L3F7ezuHDh0CplYANjc3j62bL45zdK+ulZKT/j1eOI2NNI0ME+aLRNGxz4mceGd0XjmepwhLaw0HBi0dPZYNzRIp44kP150ZC9zhXfS2PANE6TUQU+/GN4oqVrtt7AgPsiV8kqvdyrviSAAlyjSDiH8XSqE8L751OgNCSpy0C+iy0V8pJW7Ww/UD1GEnaqEUwssw031mISDtpJEneXczpSRVVSmGhwsnXXOAo8npMM+TfY7WWvJhkeFinpEjkKcCgZCxS8up1iJbYGCw0iJogZSidEE28zzlhHSQhITZEALq6+sqdpGY81ns6aefprq6mk9/+tO0tLTw7W9/m//7f/8vX/va1ygUClPyaH3fB+Kwcj4fW1+U22ZgYGCuQxlDSkF9fXbe+89ETc3xvyXjeysI8zl6urqP23O63sLNryrmCqzQnWyoUzzc38xITtLYGKtX7S1DH0qjojw1wUEKNbG3oJIC3536mlyW3sCOnoM8FuzmeXWbqVKV/X0Ix0G4YnqrLyFI+V78VT9LFEs5Dum0N2NELZudJp9dCaQ/c/cXVyiyfmbGbU4WqqpmnstC4XSY58k8xzqyWGvRxqBH766cTjgKr7r6RI8i4TTHdd2KIrejzEngtre3c8MNN3DLLbdw4YVx9Grjxo08/fTTfOpTnyKVShEc5o1VLBYByGQyY23VgiCY1GKtWCySPoLcHmMsg4O5ee9fDqUkNTVpBgfzJySqUL+0laGhEYaPcaqCELG4DQO9YL+zd3W2M0SOulQbZ6SLHGhPUV01obNZ9RnU9T1GqvtJBv2lwGhByFQxusirYbFqpF33cM/ANi5LV9b6UcoI4Un0DDYbYaBxlTNt+sEoQgiKRRel7BSRK6Ukm/UYGQnKtl4WoojwzXikuuzxIXD0SR3FPdmjfkeL02Gep8Mc4dSep3RAO5XdUZzLubOmJn3c75ImnD7M6Qz28MMPE4YhGzdOPqlv2rSJu+++m7a2Njo7OyetG/29paWFqFTM0tnZyfLlyydts3bt2nlNYJRK+l7PB63NMTv2TLh+LYtaW8kP7yIMK2u7Oh9G0xLidM9T60u3UmqrqhnqzbFf9HJl3bnsL4boIId1YpE7WL2aur7HyI7shTCPUT4CCJFIxaRiMx1pLkqt44cjv+WhYAcXeetwZ2mkEGMRFvRMeZShRkpVQa6lxRYiUik17XtmjJn25CJsHuGnZ7ygydkiGUee9DdStZ5+nguJ02Gep8Mc4dScp8XEecpz+EI4UefOhIRR5iRwW1tj39Dt27dz7rnnjj3+5JNPsnLlSjZt2sQ3vvENtNZjYeTf//73rFq1isbGRqqrq6mqquLee+8dE7iDg4Ns27aN66+//mjNacFQ29pGfmSY9r0HT/RQxkin06Sy6TndJjiWFAp5csNx6kvZTC4B9dW1HOjtYEQU6DYDLPPrCNsdehblyKdDAr+BolePH/RRNbybwdq1WCDUBqFLdk5CEKeLaVb7bdSKLAN2hEfD3Wz21sw6TmtjgTsTplRQJoSYtdhGa00YSlxPzRrxnTIWEyF0CHL6KtTQaCKrUUl3s4SEhISEU5A5Cdxzzz2XCy64gHe/+938wz/8A62trXz/+9/nnnvu4etf/zpLly7lC1/4Au973/t405vexCOPPMItt9zCP/3TPwFx7u3111/Pxz72MRoaGliyZAkf/ehHaW1t5eqrrz4mEzzVaVq6lPxIjv6e/hM6Dtd1qW+qp751EZnaZkqp1ScUIST7dh4g6uzC6ACjbRlhaFFAfW09vQN9bIke5lIupdb1aO2qorc2z0BtgaGa1fjd91M9uIPB2rUT9h53OjDEBSJIyyZ1JndHD7Gl+CQb1CocpWYslYiPwYzi1VqLMQYlVdn0iMMJI41ynPl1OIsChOtOW98RdzcLcRx10kdxExISEhISDmdOAldKyWc/+1luuukm3vve9zIwMMBZZ53FLbfcwqZNmwD4whe+wAc+8AGuvfZampqaeNe73sW11147doy3v/3tRFHEjTfeSKFQ4KKLLuKLX/xiRZ5mpyPKz9C4eDH5kQLFmXqFHyOkUtQ11FLX3ER1UxOydDu+lFp9gjF4vo8j0xjpoWWA1gFGT7Ubamlopnegj8D1+VX3g6yv3sTqlE8uHad/DFWfQWP3FtKFTpxgkMirKfuM2hocY1inVvKHaBuDdoTtxf2c6SzDc+XMljcVRGd1pFF+ZR9LawxhYPBTCqOjivYZfyKNkEVw/Wm1cWAiXDSKJIqbkJCQkHBqIeyp2gZoAlobentHjuoxHUdSX5+lr2/kJMgjsnTu3klXewdBoTIfwkqRUuL5iqCop+Rz1tTV0NCyiPrFzSBOzgrn/PAQB3Z3oLUpiUeNtgFaRxgdQsmSR0nBEzseJR9qyA0z0n8Bl16oQOkxy54l+x8mlX+E3oaN9DWeN+1zup6HlC73Blu5Xz9Bk6jjVe4VsZetM73CVY7COsyYfyeEwE+lpvjfzrADfspFydhjVylJdXWKoaEKClmEQPoZ7AxpCL5ySTupky6Kq5SktjbDwEDulMtnnAunwzxPhznCqT1PqRxUTXVFN4rmcu5saMgmRWYJx4zkL+uUQNC0Yjmr1q9hxZkraWhqJFudQR6jPNhsdYYlq5axcv06GpcuP2nFLcRpL46KI56xIJQokcJx0igvjXRcZFwpRltLG1hDaB2CRRaqHJTnIoXECxSueTbGfR3VQ/0z3vK3RoOADWo1CkmX7afddscpEjOMtZKTw2iagqjUk9hawkAj5vNRthY7i3F7YCIijr0fc0JCQkJCwtHk5PUBSpiEEC6Z2mYytdCwFIr5AQpDOQpDw4wMD1HIBUecwuCnUtQ31dOwuJXq+lqCYF6dYo8rylO4vqB4mE6TqNiRwNFERAg0Tc2LaR9K8ZN2S2M2VpvGUUglcYoGIy2KRpR9GYt6+uivLaXNCIic8RdCBgLHQrVOcaFey9NmP4/ZnTT6tRRDiTdNFFdqBU7shevLaXxqAR1FqDkkORutCUKJ5ynm2ifJ6hARAG66bD6utZYwSnJxExISEhJOLRKBe4rip2vx07U0tkEYhhQGhyjkhskNDpMfyY/5D8+GFOD5HjX1aepbm8jUxp3ngqObCXHMEELhp3yGh8rM14IUCk8oDBqlYNmiNJCjZ8RSCC0pFwyCYq2iPZWndc8gDm1U5xZRXbJWDh3N/rbBscM2dWTwwjh6/jLOB84nQvOp1h/T7Q5VNO6VbivXVD+zrMXYqJvCXIrHokjjqLiN71yxOgQs0kuX6bSW5OImJCQkJJx6JAL3FCeK4uhuuraBdG0DrSshNzBCULHAFbiexMlWY/Spl7FircD1nJm1oAXPcUn7DnWZAg3pPDW6m8cfy7J6ZR01dbHfq0059DUP07z/J1jnWWgZd+4xh/l7GWkwE1IIrLE4KM7OL+PX7raKxr07PMT3B3/NK2ounyJyx90UZMUWYNYYgtDglOm+VhE6wgQ5pJvGHtYEIoniJiQkJCScaiQCd4FRLIJKZUmnKmtdPLEgwHCS5yOUQQhwfQ/HUYTh9GIwDohKPOFxrr8FMjWYYIC+7hpq6xSW2GIsV7cUc/BXOMGX6Gx9LiPVK6ccq71lGNdzkcrDaE1Vv6Ku2+M5wUbWe2chAM+VpT7rk1G+y4Gom/8e+BX7o65pRa7WGmeOOdY6itCRQszQpWzmA2gMeaTrYw8bT2giPDQyieImJCQkJJwCnHohu4SECVgLju+jnAqFl5Ck3BRYg/QMfQM5PMfDVQ5SCEAyXH8WAHWD26cNC1ttxm7mFzKGodqIkTqNFBIhJNpIpCizIFjiLeKV1c/BE86YyA3tZJsvU6mLwmGEocbYmbzKZkFrTJBHHD4eawl0OKPXb0JCQkJCwslCInATTnkcR+JVemteQEvrCmRxAADj9FAY0bjCwXd8PMdjpGkDVkjSuXay+fayhzHWMlrQFXmWgaaQQnY8Am6NISrTctfq2At3sds4o8i1xqCNmbNThtGaIDAIeQSRVmMxxTxCB5N8fUMdodEImNOSkJCQkJBwvEkEbsKCwEt5MzdZGEUqmpvaIN8PgEoN0dGZi6OlxiIBmVrESFPcuKSx+z5EmUiqtXFKg5hGwllAR2VswyY8MJvI1VpXNqfDiMKIKKRyq7FyWIsJixAVx8ZgrCUXFhiOchUvuShPQRcJTEhoY4FsS6VsifhNSEhISDhWJAI3YQEgcT2nbM7r4VghUNIhVA2IYBghoHuwa8IGYK1hqPVijPLxin3UDj899TjWgtGI0ee04OUlmcHxyKmxliiaLHFjcTc+zplEbpymMJfXYZwwCDFGHgWRG0A4XrCojSHSuuIl0BHFKCAfFsgHeUaCPMPBCEPhSFnxa2ZYLGZsMdagrcZYM+nxmZaEhISEhNOHpMgs4ZRHSonjuiil0LO2rBUIKcjULUP3byXyqtCqj0IxIjWhRa5VKYYWP4Pa/XdT3/0AQ1VnoA/r+KWNwVGxWHVCQfMBHyssuSo9dulozGGS1topVrWjIve/h+6aXHhmHIw1SCmndJmbDWstQaBJ+QqErdhurMyBMGERaS3WPbKGH7Z0vNF/9QTRKYC5hKsdJRBFzUhYINKzz00IQZWbnl9DjISEhISEU47k2z5hASBQnqrIIssCCIeli5dBcRihiwgEQyP5KduOLNpE6NWiojz1/Y9OSUeYWAQWuRatLMIK/ML4x8pYSzghimtLAlccJuYWu41cW/3ssUjuDwZ/E0c1Iz0n4TcRozXFwMSd3I4QEwUQ5OfaR6JiLONpH5Utpf1sZfsZYyhExSQtIiEhIeE0IRG4Cac8QsT5pp4/+w0Ja+MdGqvT7BEbeLKngdaWs2lqqJ66sVQMLHkmADU9W3Ht5E5x1owXmiGgmI5tyvz8YT6y2k4OoFo7ReACtLmLxkTuvqiTHwz+hqI+so4bOooIAntU2jpbHUI49ULgVCE0msDOFuFPSEhISFgIJAI3YYEg8Ty3rHCcghAIKZF16zgQLebg8DTbWUuh7kzymVakjWjoeQApJkZnDdaYsecsZOJb7ocLXIMlnHAb3Ro7bVD2cJH7vf67KegA5SikqnyZmHsbhRFRJI5KJNfqMI7knoJYaylGAWVK/xISEhISFhiJwE045Rlt4uCkXKSqyEoBgWBZXRzx3dcXEYaGnoH+qVtKSW8pipvt204q6p+UqmCtGWusUEzHAtcrSMRhKbNGm5K1GLPe5j9c5H67+xfsHemgGAQEYTjrUgwCLCAdJ47cCkEYRBgj5t8EYgJxJLcw+4YnIdpoAh2e6GEkJCQkJBxjEoGbsCCQElxH4TgVpCmIuNBsWZ1DteinfuBhtjzxAE8ffIqRQm7StsIKoqrFDNWtQQD1nb9HqglRXGPG/K60Y4kcg0DgHZ6mQNxWOf7FzppXO0nkhp18tfenfK77B/ys/w/szO0nCIulzmVTlyiKKBYKFAsFwiiM9bSURAakPDp1pTYKEKeoyA10gKGyFsgJCQkJCacmicBNWBAIIRFK4XsVFJpZC0KxqEqxxDlIk3oKEcVWWId6OyZvi0UJRW/rxRihSA8fJFM4OJaqYI0dj+eK8SjuxEKzUYwxaGMx1oAGpWb++LW5i/ijmitY7S7BQTFkcjxcfJr/Hrqbf+/7IT8ZuocninspmPJ5usYYonBc7BYKBYqhQTn+lDSG+WBKIneeNXAnDFNKVTjFhp2QkJCQMAcSm7CEBYEQAoTA9RRCVOCKJSRSCGR2KeSeROUPolMr6RnoYVnzUjzHjbcrFYRpv5aBRRup73qI+vZ7yK++DhtajLVYO56PMFQXMVwbEfplmkMAUWRRUmAjg/QUQsZdy6aj2annZTXPIrIRe8NOdgQH2Bm0k7MFtgf72B7sQyJY6jaz2m3jzNQS0vhTjmOMwRjDcDhMmPLwfIVEIJWDsBZj5hfRNDpEhgLh+vN2IjsRhDqiKCO8oxTRTkhISEg4uUi+3RMWBEJIjAHX9xFiZJKF1ww70dzYTHHEx9fDhIFCeprOvk6WNi0Z3wyBRNDfvJma3ifwiv1UDWxnqGYtOorAWqSQGGuIygjbiVhribTFwWBDgfQEugKLW0c4nOG1cYbXhrWW9qiHHcFBdoYH6dWD7A072Bt2cGfuQdYWlvOizMXTer4GQQRYpDSISOJ5HkKIyl6zqRPCRAFSgHBOHZFrgUAXcaWathtdQkJCQsKpS5KikLAgiAO4AsdVOJVYYolSoVm9S5dpjR/Kxe4AHX2dUxorKKkwyqe35UIA6g/dh5BmTNhSQRc1KLXwLTkqGK0REShnbh9DIQRt7iIuz57Ln9W9kDfUvYjLM+fS5ixCINie28tPh/4wrWC1xhCGGqzEGE0Yhken41l0ZJZmxxttDIFOUhUSEhISFiKJwE1YMEgpkI7C8Wb/s7ZCghS0VCt6iAWuE+7HRA6Rjuge7JmwsY1zfBEMNp5N4NehdIHazgeRrgvaTBJJXkFQ3+FS3Vf+BomxliCMzap0pMGISYVrc6VeVXNheh2vqb2SV9U+G4ngieJefpN7ZNp9jDYEoUEIhY4iwig6Mq/cUsczYU4th4JAh0RJwVlCQkLCgiMRuAkLglGrMKTE85xZC5+stQihUFKQqm5DW4Ujcuhc3I52ODfZHFcKYrcEoehpvQSA2u5HkGYElGSi95cKJdkhh/TQ9IJRG0MQmLhZRGiQyMo8fGdhpdfKNYtiW7P7C9t5KP/U9GOINGFokUoShRHa2COP5AYFxCnUTMFYSxAFHLMWbQkJCQkJJ4QkBzdhwTAqEF3PqSyntOSEsLTep3u4iUWij5Yah0Vt66ivjTub9Q8PYIxGCEloI4wxDMg6Cpk1ZApd1LffS8+K5yNK/7PYsY5mXiCRGsw0OjeO5Bpca3GEQHoyjugeIZuqVtObG+Q3ua3cmXuQKplmjb+0/Bi0wVqFtYYwDPF978ie3FpMkEd6aaw4Nb5eQh2hZIQn3RM9lJOX45XHcdzyRaY+0TF/6tELWCGOysXsceUUG25CAiQCN2EBIaXEWnB8D6UExlRWaLas3uE7u87H9zzesq5u0sln96E9FMPilN320EzWqebq/gcZXHQutmYJjlIYrcGB0DO4gSRddCjUTDeOOCwcCYGw4AkHmXLjY0wY39xeA4FyXC6t28QQBR7OPcVtw/fyR341S7ym8qNwXJS0YMFIRSqVnuCqMOH55zIUJeOis2N0IneUxEmncUKoqEpvFoxUKDd15AObF9O/Ro6SqHQKJ7BHZZ7TD2F8DJNHI8puczRRjsDJpnG0QETHKZIupvn5GCo55UjcmgyOVejoGL6Xx4A4YHCiR5GQMDcSgZuwYBClyIgjFcpxCMNZip6EQgCLaxy08BgOoD9vqM+Mh1yz6SyuMx7ZMxMswaqCIgRQd/B3PGmeQxBplrQsAyCotrg94BVdCt70J83Rc0YoQFiJ63lxHNjO8wQoBSLlIww8r+lZDHUW2Jnfx/f6fsWfLL6GBrd2yi6RVHi+hFL7g1AJHD81pdBurlipkcqLI+VCYIUc00hHfLJUEpFOQdEcFeGngaIjSDupk+pELhyJk8kgihZxiomiShGORKVSiLxmSgvABYRQEum6COXAfD/fJ4iT6CORkFAxicBNWEDE6km6Es+VFPIzb22FAClxlWVxjeLAgGZPV8CIDHG9NC0tLmcuWT3h8IKiDsZErgqGMdsfwuT72X1wLwCLGlpwHY9CFrI94A1DJYFka6EYaLQokkq7aOy8zipj3YCtRSK4ZtFz+FbHTzkUdPPdjtv5k9aXkFWZSfsYo8HG6RUAQRCOXSzMyzpslFJntfhtEaWAtYxN16SMha+UWCkBWZl/8eg8J/x7tE6+RR3gSgd1iqRWJCQkJCRMT/JNnrBgkLIkypB4roMUAjODYrIWpFBYNMvqXIqDB9F7H+SgqUWkn01Ly9ScTCUlphQx1F4VA02bqO98gEV2iG5RzcCuP7AmpcE4WC7FLQrq99yDlZVbaCklkM544ZpRPvkVF4GaIT9WgDEWqy2FMBoTfZ50ubb5Kr5+6Mf0R0P8d+fPeU3Liyblm1pj0dqinFjQjubjep7PUZGPtvQfC6CxaOxYBsRoXiIgHISXih0uTgDWWgq6SLaCds8JCQkJCSc3yTd5woJiNFfM8UtOCjPqMzteaFbnsHVPBkUBKQL6hooUixl8X07aXgqFQI9FO/uazqO693HWhPvp9s6mvWDZNPAgCoN2VwMOVd07EbZj6tPPARnmGFn7/MMmG4tarQ2Rie96CgnKMeSDCE8KlJRkVZpXNV/NrYf+h46ghx913cm1zVeNtRsGiEKDctTYC6a1JooiHMeZf7pEJYyFnMESYosR0k2D456QVIFIRwQywJNHWGyXkJCQkHBCSQRuwoLB2rjQTGuN43kox0EHFfiyCsHSOoccVYzYLFkxgis6OdRexbLlHnK0iYMtBRwnCGerPA6tfBGZ/l34I4YiLk/VX0ibb7F2RymncHlpqRwh4qIUaUPS+x8gtf9BCm3nomta0NqijUEbMIZJaQRqtEjGQDGyOI7GcyT1bg2vbH4+3+y4jV2FA/ys93dc3fCssYI6Y2M3hYlEUYiUEimPMFVhLpiSC4OOwEsfn+ecgAWKURHHUygRvx4nU05uQkJCQkJlJAI3YUExKtiUlLiuIJgtM6AkYnxH0Fzt0JVrJat24MmD7NixhJ07i2Szko3nZkinZexXy3i+KkAx00wx00x9byeHug+xx9aQXXbuEQsjqRQqJSHIke58guwTd9Cx8bUYKhOcxlrCCLQ1pFzJYr+JaxY9lx90/ZKtw09Rrap4Zt158cYWdGRx3PFjW2tL1mFHKVWhUkrtf4U1CD+NPc523doahoORuEWzVEghUEIiRPzuj3oWJ5XlCQkJCScvicBNWFCMClzrKBxXzVooZQEhJVZrltU57BhezEq1A985RFEYokgyPGzwSk4IFsuupyK6u0KyVZJslSBTJUinBWmnDkEHuUKOkdwg2UwN+ZzBRnH+qZ2g0/y0RKmZLYmM1ohA0L/qCvzuHXiDB0kfepThlg0Vvx62JFwLxuA5gjXZ5TxPX8LPe+/hdwMPUu1k2Vh1JgA6MjjueJoCMNbK1/PcI3ZVmCtWR9hiDumkwHGOq5iMc7fj9I9R4lo5MWYkpaRCCokScnTtxC0pbV7u0coHYiVBFBDZiOgUq7yvmNNhjnBc5zn2Fzbh73XsJzu+bm7HTMxwE04tEoGbsKCQcrQjmMX3PIQozCKMRhs0wLI6hy37GohwcWzA5k153FQLuZwZF6PWMjxkCIoQFA19PZOP5tdVU9uosTpuDqG2F1kqXe4fyLErP54uoRQ0NHmsOTuN604fodRRBF4Ng8svo273ndTvuZt84xq0MzfPVm0shRAcqzmveh1D0Qj3Dj7CHT2/pUZlWZFui9MUjJqiv0ZTFRxHHXeRi9YYk0MaD06YT21MXCs3Hrs3euaObUdDDjhaokLLSDFHdCx9cE8gp8Mc4TjOcxbhOp+/SyUVVW42uWORcEoxp3t/9957L2vXri27PO95zwPgkUce4frrr2fz5s08//nP5ytf+cqkYxhjuPnmm7n88ss577zzePOb38y+ffuO3owSTnPGv74dz0Gqmf/ELRZkfJ23tM7BIunULQAM9u4jlZI0NEy+Dtx0XpYNmz1WrlE0tcZRXMcBxwGbb2X1stX4XgqsxkpwhKA15eK4AscVKAVaw0BviOOMjzc3rKc2p7Cgg5ChpvMI042oKE/D3t/hSgdHqTiKKGVFwZg45cCSDzTPrN3M+uxqLJYfd9/NiM7Hz6Vt3PL4MKIoLI3tBERxrMWERSjmOJUcOe1RWo7msU7W5XSY43Gbp7UzLmYey+jYExJOJeYUwd28eTO/+c1vJj320EMP8ba3vY23vOUt7N27l9e//vU897nP5Zvf/Cbt7e28733vY2hoiLe+9a0AfOYzn+HWW2/lwx/+MK2trXz0ox/lTW96Ez/60Y/wvKRyOeHIiK3C4uIr5SiUlERU0P5WQMaTNGYkh/JLWd6YoqltfdlNPVfQ0OBSXTtTAweLjkJq1viww7K02sO90IsbHljL0IAmKJrxlApreeT+IYyBRS0uTa0edfUOQgqwYBH0LruSlie/TebQgww1nkNUtTieb8lT1ghQyiKkRCnJtOEWC5ERPK/+mXQGPXSH/fy059e8quXq2ImhjMC1FrSOcF2vFMU9/qc8q0MoGqSbmtkyLSEhISHhtGdOEVzP82hqahpbstksH/rQh7j22mt51atexVe/+lUaGhr46Ec/yllnncVznvMc3vWud/G5z32OQqFAEAR86Utf4u1vfzvPfe5zWbduHZ/4xCc4dOgQd9xxx7GaY8JpxlirXanw/QqimxNyKJfVO3TZVjpTF+ClqspubrFIIWeMZUZRRHtXO4VUhBXghKCC8fHV1DksahkXaYW8wQJRZDl0IGDrlmF+f9cAT20bob83xFpLsWYZIw3rEED97p9joggdRkTFEF2MsKGG0CIji4wE0ky/EIIIFC+qey6OUOzKH2BL/2MQGggsImLKogsaGxgcEV84lBPCxxytMcUcRMVSbvX8hbYQx2ZJSEhISDjxHFEO7r//+7+Tz+d597vfDcCePXvYuHHjpEjs+vXrKRQKbN26Fd/3GRkZ4dJLLx1bX1NTw/r167nvvvu45pprjmQ4CQlYC0IowCBUnDcqZlEdlvGuXcvqXB46ELCvbzy/0lo7+RgW5KiaKRMltdby1N6nCKOQlO+zKNOCPwL+COT88mNIZxSXPLuW/r6Iro6A7o6QMLS07w9o3x+w/IwUK9ek6V/6bNL9O/FHDpHtfpSRpo1jz4m2aECHmigMMRUErmuo4vLsBdw5/Afu6r+fJaqZZbYFxxFYpuYJBghS1os7pSkZJxNLi7EcW7/ciViLCQqYkUFsPo+tpFVcucMczTGV/ONE6W9pXO2KUqtiSu2KBZOqDWcdpMUaHf+dLdT7xKfDHOHUnmeSfJtwCjJvgdvb28stt9zCDTfcQF1dHQDNzc1s37590nYHDhwAoKenBynjL/bFixdP2qa5uZlDhw7NdygAOM7RjSapUu6mmiWH81RnYc5TMnpzwk97OMPFsS/oeJqT5yoESKvQAlY0xh2+OoY1w8P9dO97gFS2niWrLpi8DwIHOU3RlaCxtoFDPR109XaxqroZf0SQGoFC0wzDVoLGZpfGZhdzjqW/J6KzPaCrI6ClzUMqsOkqBpdeSt3eu6g78GuKjWsw7gS/WDn+b6Xv6Hp1JvvDQzxV3Mv/9N/FG/xXUOOnygux+AoiPllrgzBxioTjCFAKK+Ko6rH2zY2/S+ILDyVOhpPvhGjydIHlUkX7nIK8WmJyEQRF1PEu8DtenA5zhFN6ngoPpWoq23ZBnlMSTkXmLXBvvfVWqqurec1rXjP22Mtf/nKuv/56vvCFL/Cnf/qndHR0cNNNNyGEIAzDMTFweK6t7/sMDAzMdyhIKaivz857/5moqTn+ZvMngoU0zyBwCUoGuB6WQi4Ys3tKpafJ3QzA6JB0CuozQ/TlNN0Dg/R370H1HWTF6vNwJzYeECANBFH5SvrFLS0c6ulgOD/CQFOeKjL4I5Dy3YrvY2cyPm3LsgSBwfPGTxa9deeT7d6Gm+uivv0eRs564ZR9U3PMZ3+B/2w6Or5Hvx7izqF7eU3981Hlvh2EwPddVLk5lLxhhZIIR4A89lHdqqppQuILCktVdqHnHJ8Oc4RTdZ5KeXM+xy6kc0rCqcm8Be73v/99XvGKV5BKjVv3XHTRRbz//e/nIx/5CB//+Mepr6/nne98J+9973uprq6mWCwCEATBpP2KxSLp9Pw/DMZYBgdz896/HEpJamrSDA7mJ3lhLjQW4jyN0RSLsT2YDSK01hTyIam0RyEfUG6ayoToKBbFS2sd+nKap4cXsayqkfxwD7ufeoClqy+a/DwYAh1Nc/tOUFddS//QALsHDtJYs5qoWlLIByDnnqhZKMT/DvRFPHjvEC0NL+Q55huk2h9isGE9YVVrvIGMxW0hCCiTYTAjz696Fv898DMeHnqSlR1tbKo7s2wkNiwalFIzRmlFqQMansTYCnIl5oiUkqoqn+Hh4vG3LjuOnA7zPB3mCKf2PF3PIMRIRdvO5ZxSU5NOIr0Jx4x5CdwnnniCffv28dKXvnTKuj/6oz/iuuuuo7Ozk8bGRnbv3h3nNi5bxshI/AHp7Oxk+fLx1qWdnZ2sXbt2nlOIiaJj84WhtTlmxz6ZWGjzjKL4NnmcEymxNhaV2lD2S9ciYhssa1lRr9jaDlv2F8lXr2UZv6PrwDYWta0/LIorsGa0KcBUGmob6R8aoHewl/Y1baTSVRgDlZg6TMfIkEYAHT0OP3av49npO6jb9Qs6zn4tCDmelmCoKAd3Ii2imYszG7k39wi39fyWpalm6t2phXZhFMXNMWY6SRuDBpRxsB7H7IRujFkwF2YzcTrM83SYI5ya8xSRxRjDXD7GC+2cknDqMa9Lp/vvv5/GxkbWrVs36fHbb7+dt7/97QghaGlpwXEcbr/9dtra2li9ejXr1q2jqqqKe++9d2yfwcFBtm3bxkUXXXT40yQkzBMxngUgJa7nzJoVYEsteAHWt3pcujKFkrBtqIkBU4cxEfv3PHL4s4zllZcjm86S8lJYa+nu78aacMbtK6F1ic+mi6vxU5KRMMXtgy9hV28j2a5Hj+i4o5zvbWCJ20xgQ/678050mRSDGYXtYRitEVrMWuiXkJCQkJBwNJnX2Xbbtm1lI65r1qzhl7/8JV/4whfYv38/3/3ud/nsZz/LO97xDiDOvb3++uv52Mc+xi9+8QueeOIJ3vGOd9Da2srVV199ZDNJSCgRF7CXBJUAx3EqSAsQsecs8b7PXp3mzZfUsL7F52l9NgC97U/wu6d7CXUcsbWYUpvW6cYhaKxrRAiB1hqbj0j16SOuSK6pdbjg0uq4GA3F/bln8Mg20LkjT9MRSK7KPIuU8GgPurir74Ep2xhr49zaCkSrtRYbauT8vmoSEhISEhLmxbzOOl1dXWPOCRNZvXo1N998Mz/4wQ94yUtewpe+9CU++MEP8rKXvWxsm7e//e1cd9113Hjjjbz2ta9FKcUXv/hFXNed9yQSEiYybhUW/+x4Du4sLhsWC2Jyxk5tWvHSDVlecP5qRmQDShgO7X+cz90zwKPtRawpxX1nEHr1NfWcfcbZtDa2sniHR/1e8IpHHs10XMn6TVlWr00h0RwIljHy5BNHfFyArMhyRfYSAH438Ag78wcmb2AtWpuKo7LGGAjMEUevExISEhISKkXYY+3ncxzQ2tDbW1kCfKU4jqS+Pktf38iCziNaqPOMonDMSUFEmoGefiwwMhJMm/8mrcZEhbIWT0P97ew+1MnvupfRXxKordWKK8/K0FJjy97KP5zm/R6ZEcXgYhhuEkfNWrLYfpCBJ3dyQeYPdJ3zx8imlRQKwZxzcA/n18U/sDX/JFUqzZuXvIKsGs8/Vkrh+37lubVCoDyFOUrOCguxOLIcp8M8T4c5wqk9T8dNUVvTXFEO7lzOKQ0N2aTILOGYkfxlJSxIJkYXhYrzcCvYielcSqvrFrNx3Sb+4tJ6nrM6jafg0JDm1i1D/M+jBQbys3/zd3vD5CniDhmEkLGl1lHofuUvbmPd8mGEgLrdvyQKIp7YOkJQPLKT6DP982l06hjWeX7Y9etJrgnGztHr1lpsaJi5/9vsxK+ZRI51UktyexMSEhISppII3IQFyah4BLBC4LpOBbfUxwvNpsNRgmes8HjTxRnOW+IhgKe6Ir72hwI7ust74gK0d7XzUP8T7OAQfk5gogBsCNYgsEhhkTL2dI4XWVpK3rLTLrFAHlh2OUb5eLlOnrx3L4f2B2y5Z5C+nnDeLWUVDi+svhxHKHbk9/OHwW1j66wxmMM7vM3CaKqCqiBVYaKQlaPvpTUYrdFhkSCfo5gbwZoobpt8ItoGJyQkJCSctCRnhYQFSZzvOV5oplyFUrO07BXjhWbTMdTfzvYHfkD/gS28YF2WNz6jhuX1DtrCTx4NeLKjvMjNpmOT9L2iC2MMYihOoQiCAkExT1AsEBYLREGeKCigwzw6LGB0WBLCE5eotGiwJhZ+TpqBJXEL7HPDn1OdCggDy9Ytw+zcPoI1GoGdtEhhkYIZl3pRy3NrLgbgF7330V7sYrRVl9ERAjs2humWic9pdISIKInSkpBlgmCHeD5RhA4LBPkchdJSLOQpFnIEQZEoCtE6IijkKRRG0GEQP0cpMp6QkJCQcHoz70YPCQknN2K0oyzWglIOjqtmFD/WWoRwmMmoVghBIddPIT9A87KNNFVV88eba/jRtkEePxTx08cDQgPnLJ780arOVuO5HkEYcIAeanL1BOlYDI96MthyPernkEfbW3sWXu0e6gZ28ZL0N/i993x2Dy5m3+6A3p6QtetdUuk5N4vlLGcpu/2lPF3cz38e/DHOWLR05uNIIViVauOC6rWsTLWOvfayGCBTisjGonsicdZD5ekP1sb+nIHWiEiihMJxXUSpDdux7qSWkJCQkHBykkRwExYkk6zCAOEoPFfF3bVm23EGqmpbqa5rA2vp2PtwvIuEl5yTZWNbLKp+sT3g4f3hYYeNLcMAdtGBiI5BbaeQdK18AYNLL0UJw2XOT3lm/X04yjIyZHn4/oD+PoOd4/+0tlyRvpBalY27t9motIQzLgUT8HhuN1/ruJ3PHPge9ww8yojOo02ECTRSUDKPH1+sNXPL7Z2ANYZIhxSLeYpJVDchISHhtCaJ4CYsSGKrMMlov1qhJNJROK4kCsW03cfGElRnEFmtKzYz1H+Q3o6naVl2Ln66BiUkV5+dxXMKbNlb5K6nQwyKZ6wcb0nd0tBCR3cHg+Q4VDtMimPQq10IhpdcRM5fRNPun3GGfpRFtfu5q/gScqFHJjt3oWeswcPntTUvIFLFSYFbL5UiTo+dGinNmyKPDO9g6/BOeqNBft53P3f2PcDZ2ZVcULOWlbINqRTmSO0eDsNai9V6alRXKoQU8fpT3zwmISEhIWEGEoGbsGCZVHgkwHddHCVRSmCmjaDGhWa2nFdYiWxNM9X1SxjqO8ChvQ+zYu3lADhC8bwzM/hK8LtdBX79dAGt4bIz0gghUMqjsbaRrv4uOnu7WN62fDwl4SgHGAvVS9l35nW07r2DmlwnL/Fu5UDLJQTuxrEnK+RtKWVhdow2OK6LYxRSCdxS8ZsrPTzHQevyInWJ38Tz6i/g0ZFdPDC0nUNBL4+O7OTRkZ00dddxYcPZbKg5A18eGx9sawwRhkhHpeI9hVIOUqk49D6HdIiEhISEhFOHROAmLFgmF+sLlBO37BVSIkR5YWNFqbpqlqDi4hXnM9R3gL7OHbQsO5dUphawCODyM9K4UnDXjjy/21Ug1JYr1sQit7W+ma7+LoIwQFhB46H4I9jdGh51kau9Kg6c8XIWtf+O2p7HWNZ/Dzm9n45lz6Oj22XH9ogVZyhal86cmwygjUURB7Z1ZDFYEKBtiEwJhLBMNwFPupxffRbnV5/FwWI3Dww9yaMjO+kK+7mt4x5+3nkf59Ss4pyaVWRUCk+6+NLDly6OVGWPOXfXBIsxcb5uFIUIKVFCopxY7AqpSvnaSc5uQkJCwkIgEbgJCxZRqtQf1bHSdfBcRTHUKCOIykRxrbVIobCzKNxM9SJqGpYx2LuPvq6dLF6xedL6S1amcBX8/Mk89+0tEmrL1WszZFIZ1i47k+pMNX5RkR0UpYgx9BwDkYtUdC+5nEKmhab9d5MZ2sfSp77D09HLsdZj9w6NBdqWzfxVYK3BGhW/npQCzxbCUBMoizUGIcBRsaH9dLnMbf4i2vxFPL/+QraO7GTL0Ha6wn4eGniKhwaemjp8JL50Y9Er4n9jAeziex7G6OnTTSZQ42R4ZsNGUsqP5zMhsitEbMumlEIqByHjC6GKm1gkJCQkJJx0JAI3YcEixho3xAJIOQql1JigEcKUT7WtMDq4eOUFLFq8jur6JWXXX7AshasEtz2e46EDAaGGF5+doa6qDgCdkfQuDanfr6gedEBAT8sxELnAcP1ZBKlGWvfcjhsMciXf4L6Wa3i6o4EDezTNixWOM0sUNzI43uT8ZGvjLm5SCrQ2aAMi1AgpcEq+vgJi+zUhwMYd3Fzrca53Fhsb1nAw6uahwtO0F7somrhALbSxw4TBkDdF8qY4dUBzbF64N9fBnyy7Gu+wdAhrLVprtNYIESKExHEUjpsqieckhSEhISHhVCMRuAkLlsNvYyvPwUm5uPkixgiUlkTTtcycpdAMIJ2tJ52tn3Gbc9t8HCn4n20jPHYoINSWl23IoqTAGM2+oIPH/EEuK66jesDBCuhtPjYiN0g3sv/MV9G8706yg7u5OPgh7e5rGAnTHDqgWbpi5q+DWOzJKcFZawzScbFiovCFUAO6lLpgLcZodMQEp4T4QPU08PzMM7G1gjAK40sSawiJCAiJSo4NoQ0JTekxNK4nCUODFALpTP92GWv4Xe9W9he6+NaBX/LHS56HI8vPNS5A0wSBxmiD6/sgVJK6kJCQkHCKkQjchAWLEJQii+PKR7oOrudQDAOkkghTJoor5IS4b2UExWGisEimqnHKuvWtHq6CH2wd4cmukP9+ZJhXbKxC6yLt3e0Ya3ioah+bh5dT0x9Hcnubjo3INcrn0IoXUNf1IA2H7uM87w/8NnwOh/YUWdY4hK2aXrBba9ChmCJwI2uQxLm5U57PxAITa8q8nuOPhEGIJzwc5RBFEdYKHFwcStHW0WC8LP2jBOm0j45CpBC4jovjM23B2IpMK/+173Z259r57sFfcd2SK1GzROojHWEKBtf1Ua6bpCwkJCQknEIkPrgJC5rDo7hCKZyUg+sphBKljmeTsUIeXqE2I7mhLrY/8EN2bfsFUVjmVjpwZpPHqzZV4UjY2RNxyx8GebxTsKxlBQD7Rw7xdH03ANX9Cjc4hr6tQtDffD7tq17C4uo+amQ/oXHIPfY4i3f+D5nBPdOGQyOtCaPJSzEICaOISJsp67TRccS2gmEFxQARWjzl4jjTX3vbCf8GoaEQaIpBkTCYvnXwknQTr1l6FY5QPDWynx+03x0L71kwxhAEBcJifqzbWkJCQkLCyU8icBMWLONeuOOMClrHd5BSoFSZW+7WIkT56v1y+OlalOMRFkfY++Svp40irmp0efV5VaQcQW/OcMf2HN94xCEUDQA8ObiH/YuG6GwLCP1jn/eZr17KgbWvZukKRVoVSMsRMsP7Wbz7NpZv/zq1XY8gdXnBPhFrLcaashcLcyUKI3QxQmmB57oVHVNrSyGwjOSLhEU7rcPCikwr17VdgUSybWg3P+64pyKLMGstYRgSFnJYo4/KPBMSEhISji3JN3XCgmaqFhEI5aAUSFfiuLK8YJmDDZVyPFaefQVCKAZ799F14NFpt11W7/JXz6rleWelqU9LipHldwfqGQx8tNE81L+T4fR4FzR5dHsgTEUIapY3cu6zanA2PYP+RZvQysMNBlnU/jtWPP5VFh24G7fQN+NhtI4Ly44GxhjCIITA4koHR82eSWWtJQotQyNF8rkIMU1+x5qqpVzb9mwEgocHnuKOzj9U7IMbaU2xUCAKAmQSyU1ISEg4qUkEbsKCplw0T0qFFBIcgXDiivmyemUOIiZT1ciS1RcDcHDXFkYGO6bd1ncEFy5L8eZLa7huUxUrG10e620l0BKjC9y9bR+PHAixOWjbnaK22zmmhfyxq4Qg8mroabuUPWe/ns4lzybw65EmorZnG8uf/CaLd/6I9NDesukLxyI/NYoiomKIMgLP8SqKnBpjyeUDhofjPN5yicxnV6/kpa3PAuC+/sf5VfeDFY/J2jhlISgU4rTgROgmJCQknJQkRWYJC5pyeZNSybizmBCEElxfEWmNjiaINKHmXGjW2LqW4YEO+rt2svvxX7H2/JfjuKlptxdCsHqRy+pFLr25LA/tsyi9j+68z9anQnSVZFW1oL7HJTukGK7VDNdEmGP0qbXG0t1pMEbS0raeoYazSY8cpKZ7K9nBPWSGD5AZPkCuehndi59FmKob29doM5amcDTFrjWWMAhRjsJ1HYyMvWtn3MdCoRiitSWddXDdqY4Y59auITARP+38Pb/tfQRPOjyr8dyKxxXpMC5A83ykcpjrFcjk4SQ2ZAkJCQlHm0TgJixwpkbYhFClpgSSYhgiHIGXciiMBGPCI+5oJmGaFrRln0kIlq15Jvnhbor5QQ7tfZilq59R0b4NGcmVZ7fSO1KN7DTkD0T8eriIsIKXVGfwAklDl6S+yyFfZRiqichXmaPqtNDbY3j6iQjlQGOzxHEE+aol5KuW4ASD1HY/Sm3Po2SG9rFs6FsMLNpIb8sFWOUBcRRXSQXHwGxAR7rULtjBVR7I2Z8kjCLMsCWVdvDKdAI+v3YtgQn5ZfcW7ux+AFc4XFh3NjB6YTTz8Y3RBMU8rusip7Edm5XZ3j8rMNqAtaV2ICeS2Ms4aW2ckJBwKpAI3IQFjZTlK9+FclDGoKQg0hbXU7iBSxDE+a/WWqR0wdg5eaAqx2Xl2VfQ076dtpUXzG2wFmozaTYtDTh3icPu7oCtB/P8Q0eRzWmP59SmaMYhM6zw8pL9VYW5HX8WGhZJ0hlBPmc5tF+zdOX410OcvvBMBhvX03jwHrJDe6jrfpiq/ifpbb2EofqzYgFaQb7sfLG2FM1VCtd3cJWDVgYpZxZcOhBoJdFGow+L/m7KrGOkpsi9g49yR9cfQEvOqVqN40h8d/ZCQ2stQRAAwTxnNf63WU5QKylwHUMxn0ebEysspZR4qcwJHUNCQkJCpSQCN2HBI+XUZAMpFRqBqySR1kTGoNIKx2qiMBa0Riikm0boAGOiWRs/jJLONrB0zaVzH6i1KCmRQjJSGKEwtJuNjSmWNyzh7h1F7skVOa/B4ZrmDLiMayMLzQc8clWaQu38w6dCCJauUDz1eMTB/ZrWpVO7m4V+HYdWvYjM4B4aD/4OLxigef+d1PQ+Rs/Sy7ENy5lzbscc0VojihZHSQgMzCL8NIZIK9yMg5Vx17KJXFJzLoGJeHD4CX7Wey+OcFhXtRLr2mmL1Y4ek5tjTFlr4//Y0nIi0VqjwyKOl0o8gRMSEk56EoGbsKAZtQqzdrKoGcvDVQohNNaClSA9B2mi+LYw8d12oTykVFgTYueQshA/v6HrwDbqm1fjeukKdgBHxpHDSEcM5YZY3NjHS85p4I7HAx7qDdlbGOSlG1PUIrHWkh6WpEfixXRaTFpgjDd2yP7GME5nAPycpKGrzP36Eun6kP0ZTT5nGd5rOVtNziEOfENPS0iuZgW5qqXUdW+lvnMLqVwnS578LiOLzmFw2TOJZAVzPQKstRhtYtFVSWTTgpAW5cb+xxPzeIUQPLvufEIb8ujIDn7a81vyusBZZimL0rVJIdkEoihCOZpj0oUkISEh4SiSCNyEBY8QYkp0TAhZysMVY2kK1lqEI5CuiiNmJeFkASsUUikEc4vmHthxL93tTzDUd4AzNlw9u1iyFikkmXSGJc1L2N+xn46eDqCDZ7WWjjlSy7ceaOKaDT6LsoY/tD8+SW8sytVwIWvwSl3ApB5fKQ34hendCJQZj+L2d1n8usnb+gWJdiz9iyKQiv7m8xiqP5PG9nup7n+SbPdjpPueYmDxMxhuPhfm4Cd8LIkjoKCDCOU4uK5LpKOxqKgQgivrLya0mu253dzZfz939t9PVqVYmm6Ol1QTi1ON07b5PR0wxhCGAa6XTtoXJyQknNScvt/UCacN5UVl7IdrwnAsTSGO9oJQAsdxiMJo0m1hAwjHR5rKo7mNi9fR0/EUQ/0H6dj3MK3Lz5t9vAhc6dBQ20AhKNDd1z1pfcqFfAj//VCRq9ZOFavdYpC7nW2sa1yNq1wCf1yIBClDx5LpmzcEvqWxVrJ/j6Anr3nMybGoJRapblHS0O1S2+NQyBgKmfi42s3SufxKBhrX03Twt/j5Lur3/5qq7kcp1CzHOGmMSqGdFMZJxb+XfrZy+mjy0cRiif9vicIQhRO/x2b8PZZCcnXDpTQ4NewqHKQz6GVEF9g+vJftw3vjbZAsTjWwZILorXGzx2UOJws6inCcCCHVCU+bSEhISJgOYRfAN5TWht7ekaN6TMeR1Ndn6esbIYoWbqTidJintYYoCqipSTMwkBubp45CwmIBbSwjhWBM4Fpj0aFFzPDJkFjQAUbrUoX7eKX/4fR0PMW+J38DCFZvfAHVdYtnH7SAgg6wNs4ZtRNyNSMt+Nn2iF09GrBcskKyeZmDEAKtQ3bu300Yhfiuz+plq2dsezsd3R2aQwc1y1c51EyI4jYecqkecBisi+htCafsJ7A0DO2get9vUVF+1ucxQo0J3jDVwMCSS9F+7az7KSnwUx7FQlBRioIA/JQLjLcNVo4CV6FtVDanNLKarrCXbtPL/nwn+/OdjOiphX1ZlSKlPByhcIRClf51pBp7bOLvYg7241KA57sExXC2VOPjipQS5bhHReBKKfA9h2IQYU6mSR5ljvU8hRC4wsFTDp508aSLKyf/7EoXr/SYnEMzG89LU1/bSiWp13M5pzQ0ZFEqseNPODYkAncaTgfhB6fHPK21RFFxisC1VhPk84BlOB8Q6dHb1RAW9KyCQgiBMAFWh2ANjpVEQVT2pL/3yV/T2/E0jptm7fkvnzUfVwhJaEPCaTxfjbX8dkfIg/vj9etaFFeu9fAdiUGz7entZFIZli9ePq8c0rhdcRn3CQOZIcVIjZ42DdNP+agoINW1DRUOI6PC2KKifPyzLiDK3OI20mVgyTMZbjp3xkYbcxW4AL7nIqSZVP8mlUK6Ci30lOIziIfgexJHxdHK/nCY/YVODuS72J/vpKPYN+niIyFhIeIrj785/y9ZXr181m0TgZtwspCkKCQseGKrsKmPj+bhGgOuUpMKjxxXUizOnIIQC1kHqRTYEIPBkR5RMFWULjvrMnJDPRRyfezZfjdrNr2wbJe1iTjCxQgbRxcNk4SUFILL13jUpQW/eirkiQ7NYKHIy85NUVuVYu2KM0HKeRdITbeflTBSO/ProrVGuWmGmzdNv5G1CBOWhG8eFeWpPrSF1PAB6vfdRbrvKfpWXEU0oZnEkWKsQYnJTR+M1lhbvvisNEzC0OKoWPDXe9XUe9VsrFkNQGBCuosDhDYishptNZHRRHZ80dZMeCzCzCGmIAR4nkMQRJWmfR83hBQo5XKklhlCiAlzPMkmeRQ51vM01hKYkNBEBCac/LOOCEuPRXbu/b+NNegk5zrhFCMRuAmnBeXFZJyHiwlxHIkIxVgxklACpQRaz34iMgiE8NEChCdR0qCjw1wbHFi16cVs/8O3GBnsIJ8fJlPTErd+zQ/ipWumjFFJgZIO1kTYsFC2gcLGJS41acltjxU5OGD4xv15XnWhosZ1xyKb1lrau9upr6kn7c/N3SAMLe37NI4Dbcsnf11IDQ2dLoP1EUFqgmg0FTSgEAKrPLTy0H4NIVCoWUFV11ZqD/yW1PBBWrbdysCSS2OhPIfbqdNhNChnqoeZNQYdWJTr4DqTi88gFg5aW5SaOilPurSlFx3x2KZDSUF1dZqhoRPvg1sOz0vheN4R2YYpJampSTM4mEeXSfFZKJws8zTWEJq5XWil/CyL6toqSlFISDhZSARuwoLH2lEv3KnEfrghSgocJQij8S9911UoZYkiM2vO3GgRUxQZHCUR2kw56fuZepaf83y8VDXp6iastRRG+nni9/+FkA6pbD2pbAOpqkZS2QbS2QZUKoNFxAU9pny6wooGxR9tTvHDrUX685Yv/nqI1hrJ6kWK1YsUQaGb7r5u+gb6WLV0FZk5mPUP9BkO7NUoB5oXKxx3/HWs63KpGnTwC5KDK4rYkga1xmKsKblXzEGUCcFw87nka1fQsOcXpIb2U7//12T6nqZ35VVEqfrKj1WGmcZirSUKQpSNi8+01ZO2j0bF8bSHOPnE5/EgigLUPHK8E04cUkh85c2+4QROZ+eQhFOX5K824bRgulvuo3641saNA8Kx/FxAgHIkUgmMsURhBULXWrSwOK7CBlPN+euazpj0e1gYGhOv+aEu8kNdk9a3nvEMGlduwghFYegQnbsfLEVHRdyEYPRnIXjZ6jX8tqOZ3T2agcEhekeepmuPIuW51NcqNJode5+mtbaa2tpFeKlqAIyOCAvDZedTlbWk04p83qf9gGbJckGYHwKgIyNIDzfhBoq6A5ZDDQMo18fx0iWLNUthpG9sfIjRMce/S+WiHG/sdQOLEBLt19J15rVkux+jbv+v8Ufaadl2K4NtlzDUsnne0dxKcmV1GI2J3Im1YMKCNAIpp3luwRRRfDpgjCEKi7h+Omn+kJCQcFKRCNyE04Lp8l1H83CtBUdJpBCTbt2N/iyVwFMKO0HoTqdljDEYJVGOIgrLR11HqW5czrnP/V8E+UHywz0URnopDPdSGOmhmOsnlalHCYWVGh0FUwTwRLL1bVy7KUWA4omn+3EO7YpXaLB9krBmBdbN0t4/wODQMGes3oAQgmKun71b75j2uI0N57A/v472fZqG+hz7H7ttbF2f08pFNS+mNpdhd8e9FBf5NK/cHDs/6CJP3f+DaY/b0LaOJWdeEg8xLPDU/T9g6bpnU93QBkIw0rSBQu0K6vf8gvTgXuoO/JZ0/9P0rrgKm51HWoClokCrjiLQTOliZkOB50319RXExWrKURhlY2eN04go0ignKnken14CPyEh4eQlEbgJpwXTRt4m5OEqGefdmmjqSXpUzAopcP1RoRsXgJUTupE2uI5EodDhzIJHCImfqcPP1AGrx5/TaCwgUTjSI1O7iLa1l8MET1esHfs3VdUIQJUvWbekhj5nA2EYMZALGMqHFPoKZGsdHN9nSFv+e0sPTXU1bGwUKDdVbmgAZKpd0oOCfM7SecgiHX8sIj5IP7uKWzkjdS7nVD2LrfpxCnmLlBFSaJTrj7WahdK/pTFPjKobHRGFBXZv/Rlta55B45J1AGivmu41Lyfbs60Uze2g9fGvM9R2CbptI7IYVtx0A0DgIoXBThSvpSi4nfhAmYC/ATBqiruDBbR0EK6Hcl2kmprisJCx1hAFIV7aWdA2XwkJCacWc7IJu/fee/nTP/3TsuuWLl3KL37xC/bu3csHP/hB7r//flKpFFdeeSXvfOc7qa6uHtv2v/7rv/jSl75EV1cXGzZs4MYbb2T9+vXznkRiEzZ/Tpd5KiXwPCbZhI0y6ocLEESafHHmqCuUGkIApuSZq83UdAQhBI6QmCA84hO/EICJCMIRtDbT3m5XUoz5ph5elBREll09If19+0nLYbQR/L5zJZ7j8JINHq0103cd6+nUPLktfl2qawUbNo/n8G35bZHLa6po9hy6g4if9wyPjW5Rs8PZG1LIMgVaEzEm4sCT99DfsQOAxrZ1LF5z8aTIuwqGqd/7S9IDu2c81onECgnKBeVglQPSwUpn0u/Iyru7CcBxFVGoT/rYqJQqTveZ435CgOsowkifdE4RR5NTeZ4yVUX1ZdeDXzPrtolNWMLJwpwiuJs3b+Y3v/nNpMceeugh3va2t/GWt7yFMAx585vfzJlnnsk3v/lN+vr6eN/73seNN97IJz/5SQC+973v8ZGPfIR/+Zd/Yf369Xzuc5/jjW98I7fddhsNDQ1Hb2YJCROYyS3r8Dzcw9MUymFt6WasEDi+QE0jYIWQuJ6HLuopd2+jSFcsfK2Ni0M86REJTajDOUcIPUewtsXDNq9ib/s+ilRRPejQm7N858EiV57lsX5x+a+EhiZJfaNkoN9weDBcKLh3cISrG6rJKEm1JxnWBqPj4j7lzm5XJpXH8vXPJpWt49DOLfQcfIKgMMSKDVeM5+mma+g96+Wkex6ndv/vkOHsjSTKM+F1G3sNSx7I8zziKMIaiIoQFY/4WKNY4ORoeFwZ85l3VNrvaL1mJyun8jz1GReiVl18ooeRkFAxR9ToIZfLcc011/CMZzyDD33oQzz++OO84hWv4Ic//CFr164F4Ctf+Qo33XQTDzzwAAAveMELuOqqq3jnO98JQBRFXHXVVbz2ta/lf/2v/zWvcSQR3PlzOs3T86C/v9w8LUF+BGMsQkCuEBIcxddCSQGRRYfjxxRCYLVBa12RFRmUTopRPrYyw8ZWP2ZyZG+mCG45gshyxxMBe3sCIqvYtMThstVuPOY54uckoWcwJY2cG4GaOq+svdZMDHTtYe9jd2NNhJ+pZeW5V+FnJkeOlJgwzzl8hUmhcD1xRM0ZHCVwnAkq31owEUJH8b8mAh0iTITEIKwGG2GiYrxuDsVYUgjSaY9iMUSfAkVcruMipDOn11dKQSrlUigc+Z2Ok5lTeZ4qU0vN2c/FitljYkkEN+Fk4YhycP/93/+dfD7Pu9/9bgDq6+uRUvKtb32Ld7/73QwPD/PTn/6UTZtiw/eenh52797NpZdeOj4Ax+HCCy/kvvvum7fATUiohErycK2N/So5igJXG4vjSJSxY2LWWouQAkc5yMgQVXDb0iKQ0sFGAQLwpIcWEaGZv3G85wiefxY8vnsfewZrePhAPd0jhhet98l4cxOmxczk1yyThSgMiMJ4vju2RzQ0ShqaZo5HpqpbWb7hKg48cRdhMUexUADpT9pGSYHFVCzkRxFCYqzCHoFpfSAg5akyYTgJwgPlTQq5CiFQbuzKoJlbbq4SAqemCh0atDn583qNVPjpzNzGqSReTZrCYB67gH1wT+l5uimEckh6PSScSsxb4Pb29nLLLbdwww03UFdXB0Brays33ngjH/vYx7j11lsxxnDWWWfx6U9/GoBDhw4BsHjx4knHam5u5oknnpjvUAAmR1SOAqNXlQv96vJ0mqeU8VLOtlNYh6DkM+srh6hMTu2RIITASTnIYKpIcRyFCiVaz25DpoRE2/H3yhEuDpJIR3GEb3SVBFXhjdBcfhhJxKqaXnxH82T/Ir71QIGXbvRprp7fzfFMvyQ9rOhZEoKAjnZD16F4WbkGlixTM6YtZGsaWXXeiwjyg2Sq6qZuMI95QpyqIoXAzrPD20TUHI5hwwjpKDzHwcrK45tSSqyNPZVdJ+4adrKLXKzG81Lx3YUKxjp64Tn9BejC4FSep+OI0vfn7NueLueUhJOfeQvcW2+9lerqal7zmteMPRYEAdu3b+fqq6/mda97HX19fXzkIx/hb/7mb/jSl75EPh/nzHneZJNp3/cpFovzHQpSCurrs/PefyZqaubW+elU5XSYZxAEVFeXdwvQkUchPy5YlKOO+i1hIQSEBjNNdNgaQ1icpZjIONjgcOMAFysgNGFcwILFc93Jzz1BBJYsaZFIhBSk021IR7HnwF7aMgOkHMvW7ia+uaXAizZmWN82N1N4GUDDIYmwAj0gyLVYlix3yI3Agb0hu5+OCIqCs9b70zbgAPB8l2z1eGrCcN8hBnv2s3j1+WPFZ4fPsxI8z0HKynxxp0NKQdpzZhx/WUSc8z2nLMwQPCGRCHwvBSXXjJMVIcAVCpXxsKrycVZV+bNvtAA4FeeplDfnc+zpcE5JOLmZt8D9/ve/zyte8QpSqXHBcMstt3Dvvffyk5/8BKXiyM/KlSu5+uqrufPOO2ltbQVioTGRYrFIOj3/D4MxlsHB3Lz3L8fJ0lbxWHM6zbOqyqe3dwhd1qfUUsgXsKUUgiAyFILZ3RTmPA4pILDTjCGWPWFgprUfkwIIo7Km+kKIWLgqQRhqsLGSlSULLFH6GQSSki2sBSEUzfXNYGHPwb00eINc1GK4v6OZHz2co70v5FmrXeQcIpZ9LYqGQy5V7YK8GxFlDStXS3zfYedTEQf3hYwMa87e4E7qjjYdOgrY9cid6KhIbqifpWc/k1QqQxCGZVsYz4QxFuWII25MoMNoXrnKc0FKSTrtkc8HGGNQrovvulhjTupIruMU8bNVGNfOmg4iZfzZHB4uLuhmEafyPF3PIERldS5zOafU1KSTSG/CMWNeAveJJ55g3759vPSlL530+JYtW1i/fv2YuAVYsWIF9fX17N69m82bNwPQ2dnJ6tXjfp+dnZ20tLTMZyhjHKsCKa3Ngi6+GuV0mKeUcTX/dPO0VqF1GG8rwGg7p37tlRABjpSYKD5+2XE6EiLQkZ6SX6qJfXGNniq+hRA4SpF2XAo6ItRmrKPYqG/uaHz4cHmthKK5rgUpFLsP7iajhnnmEsM9B1u5f29I55Dmhet9UhWIUYDBmgg3J6gedGg84NK+ooh2oWWJwkvBk9siBvoMD28JWLfRJZWe5bjSpXnVBRx6+vcM9+5n10M/Y+lZFyFVBuGmZ3VpmPQ6RQaEPGKBWAw0vn+M/Q1KQsgYg7YWHQQYG0forT150xVMGCLyORyVqfhOiDFmQV9kj3IqzlNEsef3XHT56XBOSTi5mdel0/33309jYyPr1q2b9HhLSwtPPfXUpC/djo4O+vv7WblyJY2NjaxatYp77713bH0URdx///1cdNFF85xCQkLlOI4zfdveCf6kUgg8V85oLzZftLVIV6GmEYvGWIQSOJ5TNrdcCBl3zlISx1F4roPnObieg+u7uCkHx1O4jsJzFJ5SKKWQSiKlKDsnaw0SQXPtItYsWx1Hm1zDVWtdHAl7+wzf3FKgZ6TCE5aA3paQom9QWtB0wEOUdq1vVGzY7OL5UMhbgmJlIq2maSXLNlyFclMUR/rY8eAdPHX/93nq99+kmBsY264w0sdI30GC/BC2zBk5fujIhaG1lC4gji9RGBKEIULObr92orBYisUiOl9AzcH3NyEhIeFoMa8I7rZt28ZswCbyute9ju9973v8/d//PW984xsZGhriQx/6EOvWreM5z3kOAH/+53/OBz7wAVasWMHGjRv53Oc+R6FQ4LrrrjuymSQkVIBSCilFWWuuiX641oLvxifmYnh0jdmttWhhUa7CERYdmSlCafT5HFfFhUYmdl0AkBKEthijEYjJXcIwpYQEC6K0jxC4iPiYpbmNdhczllI6xHheZ0NVI85yNxbZyqGhyvDjR4sMFCzfeqDAi8/xWdEwu2ixEjqXBLTt8fGLksYOl+7WuOgsWyXZeL7HyJChpi4W8fmcJTeDgK6ulaSrF7Hi3BfQsfNBwkI/QWEYaw2unxnbbuDQ0/R3PFX6TeD6WfxsPc0rN+OmquLXxo4macwfS2yz5s/RbeJoEIUhAnBL6QonY06uxVIoFPAFCD8+1ZysEeeEhISFx7wEbldX15hzwkTWrl3LV7/6Vf7t3/6N17zmNaTTaS677DLe+c534paKQV796lczNDTETTfdRH9/Pxs2bOA///M/kyYPCccFa+MortbBlHVCxBHb8XOwIOU5CASFMDrKIjdu5yuVRAkZe+KWaRFsLAglkEpiKYnTUtTOGjtroZS1E9r6jk8LIUVsXyUEJhSl7kqlbayhNlONxhLpkKYqeOGZOf6w32V3n8MPHyly5VqPc6ZpCjER7Vq6Fge07PeI3Mlj9XyBN+EWf3+vZvfT07c1PvtcF6+hJFjrL2Wg3bDhUkVQyCHVeLGZ8lJ4mVrCwjDWaMLiMGFxmPxgJ0vOfjaZ6uZZx10p1tj4TTrGubjlCMM4ncZ13Tin8yQUj9YYomJYatvsIsSRWbQlJCQkVMoRNXo4WUgaPcyf03GeYagpFvNlLbnCoIAuCYdRhIBipCkW9VHPyR09vhISdPlo7pTtAWlCdDjVecRxJJm0Sy4fVvx+SikxkZksckefSEBnfze7DuzCUQ7twRIe64jF5MUrHJ6x0q3oNrkTCCJv5nn1dGra908vcFescaiukRhj2fVkROchw5lnOyxqKR9NttYSBXnCwhCdux+gONKHn61nxbkvxPc9hDBHpf2tUnE6y7FACUE2m2JkpDBtQwvXdU9qkSukRPkKg8XzfKTjTCqyOp0KXU/VeTpuitqa5opycJNGDwknC0fU6CEh4VRECIFSDsaEU9ZJqdBMftxa8JRC+IJCEB31LkTWQmRnj+aObQ8gFUKKo5IDaoxBOAIXSRBNaClcynSoz9ZxKJUmX8jT6u4nu2wlf9gn+MOeiKGC5cq13qxuAhPFrTDxYg779mlsVjQ2z576IKUgk5WAYfeOiPpGiXKmPr8QAtfP4PoZlm+4io6dW2hcds64IJ8crp83WlsKWscWYFKgSv8KIY5LT9YwDOM0FMfBTOPOcSKxxkCkwIVisYBnPZTrnXJOAgkJCacWyaVTwmnJdMVmo3m45XCVJOM7c249WynGGLQA4Socb+YCIisk4igaxltjkY7EVVMFpqsc1q84m0wqgzaaZr+DK8/yEAIe79D8aGtAqAVSyCnL4XNQoaB1r0/zAX/O9l4TaVumSGcEYQAH9s4u6qRyWXzmJXip6tJ8DUM9B46aIBy1XNPaEkSWYmAoFDWFoiYIzXhkfo56utIasjAICKMI6TioUlHhsVjmW3WptUZagbWGICgSBYU52c4lJCQkzJUkgptwWjLa1exwP9qpebiTUVKS8V3yxZCoVKgmpcB1fbQOiaIjE0zWWiJrUUqihJ02mmsBKSRTDb/mjzFx4RtAeNg8HKlY07aaR3c9xnBumBUtw7xqUwM/2DrM3j7Ndx4scN151dSkJotuiyU0UdzVChAWnFCgjKCx06WndWoUvRKkFKxZ57P1gQIH92maF6vZrcYmMNB9gH3b7iRTs4gVG5+D4x1dU3o74QetLRpKxX9UFNUd3SRQAter7D0Og+CYRkWllHEqRDR3f2hrDGiFdBRGa4IgwBiL66c4LmHuhISE044kgptwWjJabDYVgVAzX/dJIUj7Lq4SOI7C99NIx8f1M3ied1SsxfQs0dxYgB99GzNjDNJVOGUiuWk/xfLmZQDs7dxHW1XEn5xfTdYTdA1rvnrfAJ2DYck/K16EBU96uCrO1Y08S/fiAIulesChqn/+FlKLmh1q6yXWwp4dcxNdQkiU45Ib7OLpLbdRGOmf9zgqxTIe6Z1tGa1dsyZuOjKNZfIUdBQdsyUMAqIwRJb526gEE2mkGf+DjaKQsJCLJ5mI3ISEhKNMInATTluUcsr2hZcV+HZKIaiuSpPJZkE4JWsxgXJTeH5q7i1cy2CtJTIGqwTKkyj3MKGrpvf0PaLnNQblqUkNW0Zprm+iNluDtZb+4QFaaxxef2E1jRnJcNHyX1uG2NUTHn5AHKHwlYeSinyVoX9RLEgbO128/PzmIITgjDPji5HebsPwUOXRy0xdC6vPfzFeupqwMMKOLT9lqPfgvMZxrDHGTomonyjCMMRYOy+Ra4wBM/nzFWlNUMiho3Cs/XJCQkLC0SD5Rkk4rSkXxZ0pDxdKHcM8D9fPkPI9nAkV9NaCVD6+n8Zxjo7BvTaxby5OSeg6cfFSnId7bEz0rTE47lSRK4TgjMWrWLvsLBY3xq23a9OK6y+sZlmdQ6DhOw8Ps/XgZIcHOyGa6ymXwUZNrkojrKD5oIecZ1fkbJVk2SrF2nMcslVzEMoWUtla1pz/QjK1zRgdsvuRX9Jz4Mn5DeQYYwyEJ4HLibWWoFgstXie+4WJiXSpXfSEx4whLBaxRp+0jSsSEhJOPRKBm3Bao5SaclIdzcMth5QC10/hen68LZDxHXxPjXnLggXpxBX8ZdMg5o61o0IXcBWOpxASEMeyS5TBceQUGx/P9airqp30WMqVvHpzFWe3uBgLP3k8x2935gkiizYTWsqORnMdj942TegZnEjS2OHNe5RLVzg0NE19H2di1FPY8VKsOu8q6lrPAGs5+OS9DPcdmvdYjiU6spiTwF7KGEMQBvMqcjTGgJ56l8RaQxgUjtYQExISEpIis4TTGyklSimiSYUzpTzcw2zElKNKRTFyShFa2lekPBWnKhDfVrYW8B3CIE8URmhtMKXuYZUwUa+NHs9ai7Y2tjpzFUp6YCP0MbiFHUfp4nlbKCuuimGR/V0HWNm6AkcqXnpOlppUnnv3FPnNrgK/2TUuWmK/37gnwqidVrOSvDSb5QcHRxg6YFAyTv9QsrStjL1gZen30fWuAxuWChYdVhsWhhYpKGsbNnV+BiEFUiqWrnsmfrqGsJgjW9dypC/dMcECQWhJSTtvN4OjhY4iQinxHGdKoeZsmFKDk8P/mnQUYW0Bx0snzSASEhKOmETgJpzWjHc2m9ypbKIfbiwmXRzXn/E4o9sKQE6wEvPcKqIwREfFuPvYYW5RE6VKed0iyBUCggm3qEfdFnAEyo+jx8ciumdLYtpRiqjU1nfiuu37niJfzCOFZNXilQgheO6aDLUpxZ1P5wj1xGPBmCFEqWpqF5qb84OHP2tFY3t4/zBXrfNY1xJ/jXV3aHY9FdG0WLFy9exfbUaPvk/xHJtXbhybL4COQqyJjrrDwpFggUJgSPnHMnJfGWEQlC5GFMZULnKN1kgtY5F7mOtDFEVIGSIdNxG5CQkJR0QicBNOe6RUJcuw8RPqaB6uEPFtbDmLs8JMWAvKcZFSEgYFrDbT1oyXtyezOI4i1GbKem0EVgisjMesEKUUC4E4iu1jpStwpSIKGXudhBCsaFnOE3u309nfRV1VHfXVdQBsXuqzqc0rieI4aq2n+5lSjqk1NA4LaouKbdkiARaj7di28bHifTuHDLt6NHc8HtA3YrhklYtyIIrg0H5Ny2JJOjPzLfRyTRxHxa01hr2P3U2QH2LluVfiZ2qO2mt5pFgLQWDwvBOfYRYEAX4qFXfDm4NF2XgUd/I+1lrCsIivJELIsu9RQkJCQiUkAjchgdhRQetg7HchJNJVuK7P0UpVF1LhpTKExTxG6zk10fIcSRjJKYVG1loQCmNDjAHpO0jfQRmNjY6uAJKeQHoOuhgxmmfRVNfAYG4xB7vb2XVoNw01m3Add2wfbWzFt7CFFjQdEggL9Y6if7nFqImN1WIPrVISCPfsjvjdjgL37Y0YKMDV63zqGgz9vYa9OzVnb5z89Rbn3doJv09PFOQp5gYJC8PseOCnrNx4BZnapormcTzQxhJGBtc5sSLXWhuLXM9HCFGxIDVaI40suZhM3me06MxNZaasS0hISKiUEx8CSEg4CZja2UzgeWmO/kdE4PppHC+Nct3xlq6zYC24jiqfwiDGC6yMNhiriYwhMvqoLkEUIZTFcRVCibFl1ZLlZFJpwijk6QM7QRKvcwRKVTY/AKssfcsNRlq8nKBhp0AVQdr4XVBIlFA4wiHtpHjxhnqu2VCFFPBkZ8T3Hi6y4ow0QsS2YbkBScrxxxZfebgTrdUOzxWZgJvKsvqCF5KubkCHRXY+9DMGu/dVNI/jhY7sSdHu1mhNGIVzLjozkUFO8/mKdEQUFBLrsISEhHmTfHskJFDKsz0sDeHY3R0VKMfB9VL4mSq8dBrXT6M8d9yirIwmdJXAUVM/slbKo5qOMBNaW5BiLBpqrUUKydrlZyIQdA/00tHbFa8zFqlEWa/h6Qiz0LvSoh2LEwgadgmcPFM6JBgb5zKf2+bz6vOq8B3BgYGI7zw2TGMpJ/fJ7Xl0pLHGYI1BWHCFQ0rFVmVxxHH6FgOul2bVeVdT1dCGNZo9W+86qWzERovOToYgZxSGcf7sHPxxjdYlX9xpRG4UYhJ/3ISEhHmSfHMkJDBabDY3q6mj9bxCqFjwuin8dBY/ncHz0zieNyEXOM6t9RxnLOo7ugDIkmATAhj791iM14K0U2yeqjJZli9eCsChno6xW9W21HZ4Lq+rTkHvKkuYsigtaNgt8Iam335Fg8vrL6ymNiXpzxvu6gqQCkZGDAcPTnbCsKWorSpZlTnSia3ipjm2clxWbryC+sWrgdhGrGvvYxXP5VhjLRSDk6cJhNZ6biJ3hijuaD4uNvHHTUhImDtJDm5CQgmlFFKKOEp5grAWEHGFuVQOwvNLt6FjYeYBItDoyEwKMQvrY1UeqcBL+YRaopSZnLdqbVzSYw22lENrx/4zB4TAcWXs4jCBFa3LcJRD26LWSVE56QqsddAVVNqPOkEYF/pWWGr3gz8icAuWoHr6/Rqzij+9qJrvPjLMwQHNbgzLkRQK09zCHxW6UuE6LpEICbTGWj3l5RBSsmTtpbh+lu59j1NVv3jWeRxPjIUgNHjuic/HDcMQKSVCSmwF6RNxFHf6C8skHzchIWG+JAI3IaHEuGVYMPvGx4k4wlsSLiUN4DmCvI4mW41JCSLuHiZlXIGOHL1FI8b2V6M/CMZzUOcRHJNCohzN4aa+q5evKbu96wrCIJyxCMkKiIqFsaI0q6B/uSU1YCnUTrvbGBlP8trN1fx42whPdIYMonGEZfUE66/DMdZgjUSiSDsKYw2hjdDGTBqrEIKWVZtoaDsT18+Mj3mGYx9PjLZEIm7McULHYUxcdOb7WCEqyvMxoWGmm4mRjhBBAcdLJdZhCQkJFZMI3ISECUjpIGWIqbQbwwnAdSRBKIgmRJotEqEU2InGs6MxL8vEf6ZEwuYxVSMtQjDt62SsYef+nYRhiOf5CAGRtmOR44aaBqpL1luFYp6Ovo6S6DYlh4nx49Zma6gWcfg2KAb0t3cTVYHjKqJITxpDTaaal22opn5ngfv3DnOw+yC/yEvOavY4PE25OlNFfXVdbLsVhhzsbgdiMTuaY2xK0e9sOk1tdS2un0EbTUdXJ0Exx3DPQWpbVqDUuHNEOp2mvqYufh2M4VBXx7SvYyqVoqG2HojFcnvn5C5qSimWLJ698YQFosgihUEep3zs6dBRRCAEnld5dzqhJY7jIqfRrwIQ1qKUe8ytw+K/1Xn2jk5ISDhpSARuQsIERovNzGFdzE42PFeizUSrsbg9MHPsKjVfRruATWcNtWPfTnYf3D3t/q7jjgvcoMDeQ9Nvq6SkOhMLXK89ZFf+AOSn2XhRGzXZGp69Ok2bCujJ9wLQ3jN10xHTwLCNc5olAY1i/7RjWLyohca6hjiyawwHR4WoU0WhZ/LBfVskqE7TsmoT1trxbcvgExBkfVrPOA+g7LYH2/dRJwsoYfBS1WPbAhx88g9EUXHs94nS1vUyLF5zwdjv7U9vIQxyZcfhuCnazrxo7PdDOx8iKExOfHa8NE3L1k+KYE9LsYjn64oiykoI1LCgkA8xM1xtCYp4vo+l1A77GOH4Ho4fN39JSEg4dUkEbkLCYTiOQxRFJ7XJvOsoiqEZyxe2NvbZFeY4Re8spZ67Yqwr2URWLF6OtYZoguAWArSJmyhkUtmxxz3Xp7VxYl6rjTtjlQ6bmSCoTJ3D8nwTwk6dp3Es6QnHPa+Q4WnbPPb7oTBiVzguWnqLHt2FOB3FlZpV1ZObOdRnFSvqYyu32qpafOljlMFB0tLYRBgWGeo5gI4mXwzpKEfefM/4ggAANvxJREFUZktzFjQ1NNJ78Omyf086ypOLxiOdTQ2N9LXvHOsMZrwqtPLoiVzcgd1kM0MwQeAOdu8nLI5MOS6An6mldYLAHew5QDE3UHZbN5Vl8QSBO9R7kPzQ1KuC3vanaT3jfBrazpw1NSMIIiRq1hQYIQRGa6IwQM/ymTORxvVS2CmNfo8u7knQKS4hIeHISARuQsJhSClLnc1Ojur06fBdSX5CFNeK4+sCYa1FKDEpK2IUz/U4a8VZkx8UYI2gGISTAnCZVIYzl60d30wJTFAgjKZG0GSdz7LUSqo7JGMpwKUXIEzDYPX4gV3f4xy9kmLRkhWSTS50pCIeTAdoActK2zlSxkKdWOAOFQy/35XHDMDOQcUfXVBDY9YZ85x1lMu6FWdigXDFGvq6dqO1LqUj29JzZ0p3AxQrl66gRkUwmj9q7YTpW1wvHd+CF4KVS5ZTLYpYE4GFCOgYDtDapXn5OaTTmUl6sWXlxmkjjY7rTdq2ecU5RGH5/HLluJO2XbTsbKKgMOERS3/HbvJDPQx176ex7czZU7ctYzZyM/P/t3fvUXJVZcL/v/tyzqmq7k66c21CAuRCJwQCJBACchlEXl71J+8I6qgjojgO8xOHGQeVyBp1RmYhrlHQGXRWhtE1MALzm1GUV1+GVwfRQUYIicg1N3IjF0g6SXfSSV+q6pyzf3+c7kpXurq7qu9deT5r1eqk6lTV3nXqVD21z97Powp/B3vMKI4wUQ5ty5/+kLSl/B+rLnLEcZLebmR/5Pbq5ygdp25Iq0aFqE7KTeRhqjJFUUxLS+lRjKGyVtPQUENrazthWL0LG6SfpUVRSDabHXS78XasM18YxVUKPJclHSiOHcsmmRZGmdYal43LWjEPoLQil4uJwgF+PChQxORyXYU5uycyRpNO+XR25YpKLJdy9GhE88s5VtVnMEqRD1xSJa172qy1BuuZoqIJu1pyPPq7oxzLxgRW8fvn1bF4dtBvn1SvhXxF1dJ6FvMVVvNV9nGrtUJbOHq0g3SQrui+I825mP27N9Iw8zSCdDJlJMznUFr3ySHdQ2sIvIHHUbRVZFIBHV1Z4rCM10cprDFUsjrS+n5FwaofBAS1qcJI+kgwVlNXm+bosc5RPTbj7vdbIVd19//iuOeHVeXPbazPlLpZlHOYV/JZO21aDaZEbm8hRoKM4ApRgjEWrUMq+TIYj4VpvUdxnQO0YShfYEPl6B7FLfMpnXN4pnt0vL+XywFaY40lPwJzoevqDJv9iF8cOsaVM2vRDlyv71RXCECPO22azycvrefR37WxuzXk33/bxqUL01zZVIM+YfTNxT3lgweiTvhbHq01Gc+DtC4ECy1trcRxzIz66RU91nApDI1zz0n+072/d21+jqOtb3H64kupnzGvz31c91SWgVLjGjSe0lg0UTnvXQduoB9IfRquIHQVBVIuitGoZIrFCLFoAmPpwpQxVj0MhbeaKvpv8m2vCu/3Sj6tlLGjWPhGiNEhP52E6Ec6nSKdzpR1SaUymAoS3I8Uz5riVfN65L48laKooIRSqrCwrFDtNnZgVPmV1Bwow6CvlYtBW6+iKmgDmTPH51A+4peHj9E6L8b1evokW1rf9telDB9dVc+qM5KR0//e1skjzx+hPTt+ZzraOzvYuGMLG3duYX9L87i1AyAMc7S1vEm28yhbXvy/bH3lKXLZ4kVszkEYx6VLTI8V54jjfEXV/uIwIspF9Em9MZl0/+rtqTjoYpecaelOD6gqvAgx2UiAK0Q/elWGHfQCEATBiAVklQisLoRnTlkKw2W9A1Tdc9Eoo1HWoD2L9gN0EKCDFDpIF12Un0YFmeSSqkkuQW3330yv7Xy0Z1E2SfCviiqt0eeCc/i2O0mvOuHSm+r/1HelZs32MAZaOiIOdRwf/Uu3QGa/w/UzzcFoxTVLa7n+/Do8AzsO5fnuf7ey9/D4ZNnIpNLMbEhGbrfs2sbeA2+NSzsArPVZdvH7aTxtGaBo2b+NV579Ac17NhZNBwijmEoGXEdDHMeFIiLlCnPhhMhxLIQYGpmiIMSIUXieRy6XHdPTedYz6DDJqOBwaM/D+Clc5Lqjyu5IsvvL2nX/uyjFWK9/ltV0ZQoP6QCdCiAfHp9vWlj8VfrRlAJPe8Vz9JyDOCossHKRS0Zx47Di4ORE1ipmN3ocaA7JZZM2mSzU7Uvmz3r5mPYzjr9GJzp7ToqZdZYfvNBGS3vEg88d5n+eVcuK01JjGgQppThz3kKssew98Bbb9+4kDENOa5w7LsGYsR6nNV3M9MZF7Nz0a9rbDrJz0zMcfGsLTee/E+sFOAdRHGONHrfT3C6OicOworm4UT5PHAWjOZlACDGKZARXiBFkrS1K+j8WFMdHcZ0DpwMiExBrn1h5xBhiNLFTxC4JbF3c69Rl79HoCp+7cD/T+/8Kh8IpjVOm5CXGYKyP0x5O2eSiPZxNoWwARneP6CrsCL2eCxemuPSyWmY3Jo8XBdA2J/lR4B+Gui0Ole//FZhVZ/nk2+pZPNsniuE/XjvGT14+Sn6MSzsrpZg/53ROb0zmvO7av4fte3eOa1q7mikzWLry9zmt6RK08ejqaCs6DtqPHS0qTDIe4jikknd4HMdE+TCpEiiEmHRkBFeIEeQc+L6Pc9Ggq/tHkvUMahyzYDgHyhpcrvzk+MlcXEV0wsp5pz2UthCHuCiPth4mCoedts3z+o7FddVD5Dnq9yhsB0zZ7Di2AKJM6XG7wNN8YMUUnt3RyVOb2nl5b5a3joQsmOGT8TUZX3X/Pf7vtDfyaaGUUpzWOBdjDNv37uTNg/uoSdfQOH3W4HceJUppGk87h2mzzqDt8L5CYOic49Xn/zdaK2bPWcSsOQupmzpzzEecY+eIwghdwVz5fC6PDcb2B6sQYmRIgCvEKPB9n66u7JiNqikgZTXZcRolSwpNJPN8+0vtVeo+SUaFXhOZe25DQU+g60KsFxLH8Yi8ns45WlsjGhqSvMH5Gji8CKa+AaYrGck9ugii2iQAMx0Ov7X4ed8RpLiwyWdLc5a1x7Ks3dlfabVk36R7Bb6+6bW6XRX/Lfq3UgRW8XtnTaEhVToYPHXmKVhjaWlrZfa0mQB0ZbvYvndnv+2ZXj+9sG0un2Pr7u39bjttagON0wcvFdybn6plRuOiwv+7Oo4QhVnyUciubS+ya9uLpDNTmDVnIbPmLGJqd1tGXfdiM21t2Xlx4zAiDmNkEFeIyUcCXCFGgVKmez5u6cT6o8F6hrBU1YUx4roXsbkKcocqA9Yown7ynyZTHXxMymBjyOezFSXt7/N4zvH82nba22NWrMhQ35B8BEYeHF1iqNkW4R0FHUFPL0wXpEokLEihmZ1OUzfd8LoL6cg5puQUy/HYm4/Ykc2zvSvkcBzTkXN05CKOP2r5Xn0zy/XLp9A0q3Rxg9nTZjKrYUZhRDSMIw61tfb7eOnU8Xy60SDbBv7x3L/ZXJZNb7zOmfMWkkmVn5M3XVPPiis+yuGDuzl8YDstzbvo7Gjjja2/442tv2PBkpWcu+Lysh9vOOIoydlc7uixi2PCfEgq7RflSRZCTHwS4AoxSqxNql+FJSpyjQYF+F5lQ02Vlx7on4tdkqEhisqOQZ0Da3QyP7PfOzkip9GpGgwKF+WGvPBHKcWUqYb29pi9b+YLAa7DgYJjCxX+IYh6xZJRCroGOPO/oCHg9EwKgGC/I/Om4wzjcWkqBVMhMo7OAI5axx4/pF11T2WJHTZWhR3Qew60c9BuHFsO5th2IMfjL7TROb+G5fOCksFZ5ENPytaU8miaPb/f9mZqe5VJxg64bbrmeJnkbbt30NZ+lJe2vMLZpzbRkJlatG3sgbPdbYuS17MnzZY2lmmz5zNzzgI8HXNo/xs0v7mVQ827mD6rb/7c0eKcq3ixWZjL41IyTUGIyaaiAHft2rXceOONJW+bO3cuK1eu5Mc//nHJ22+99Vb+9E//FIAnnniC++67jz179rBgwQJWr17NJZdcUmHThZjoFL6fjPyM1eiP7/Wk6epJCKAK2Q6UUmjVXR2L46fDcZCPXPciIDesle5Ok5SvqmD+sbIKG2nCgXJJOUBbtOcTotEqQimN1qZkDtuBzJ2X4q038xxozhOdlcHzutOsdZdoDhuT7Xp+KrgpkJ0y8GP2bBtNd3R6DtPhMO0O3ekwkaK2A2pR1J2VIa5Ntg72hARv9f86HVtqWbWolic3txPsDbmyI4DNPS9GsfYllqguedz0McXMff1H5O1Nlsgm26ZaFTMG2LZjkSXs3nZpw0JebdtEa3yMl3dt4jzmcxrHpxd0zjfkZyRRtj0ak9oV0nmGIZp6/EeXUqCsR+PpS2g8fQlhPodvA5Q2KCy7d/yWqdNPYeq0xn7bNFwxgCk/X7RTEDmNscObp6CMRmmLMh5qDIuxjARJlyYmo4oC3OXLl/PMM88UXffiiy9y6623csstt3DNNdfw2c9+tuj2u+++m+eff54PfOADADz33HN8/vOf5/bbb+fSSy/lhz/8ITfffDOPPfYYCxcuHGZ3hJhokiA3mx36fNxKvly00qRTljBniePu0K87sO1Rqhm+D3Gc5CyNYkc+irszLQyhvUb3m1e2FBc7rFFEkRrwNXIuGQkkjIi0h0r5uNjgyinv2ktdg6O2rpNjR0Pe2ueYNz+dZDUzBu0NL5VV7EGuttcVkcN0RJj2CHMsIpqSLoxqOq+L2Ot/CouzKXTacN3bGnj92WbaWpPX1GhIeaYoo5mzAc7a7jbkiL2uAR73+LbODratj7PJ6KUfWC62S3kp3sabHOJFtnNUdbFEz0MpRewFhW1ROXQupGZLSG6GR9cZKZyncUBkwPctOPC9dPKDLJWi+Y3tvP7qM2hjOXvlu2g87ax+2zVcsbJYr3Tp5VIiDEGmpqxStf1RRmNqalA5gx7DBagjRSqZiclGuWGs2ujo6OA973kPq1at4u677+5z+1NPPcUtt9zCgw8+yKpVqwD4oz/6I+rq6vjWt75V2O5DH/oQTU1N3HnnnUNqRxTFtLS0D+m+/amknvZkJv0cfUpBLpcjn6+sOIBSCmOSubxKlTd6ZK2itjbgwIHD5PPDm48bxUlu3XzkCgvByvmw0ApcNix7sRkkC9Ty2XjgUVySlL5xPkscR9TU+LS354aUrWLPG+1s2dBGTa3losuS+aueZ9DWjGu6rRNZq6ipCWhvz7J5bzuPPt9MNnQ01Fg+ePFsZk4pPS93NDnneGPvNnbv3QHA9IZZLF54TnF1usiR3p0l2JdMJ4mtovP0gNwMD6UVad9gu0vnaqOorU1xuPUIL//mpxx8axsAC5ZeyvylbxuV0UOtNV6qZvANC9srMlNrukthD4181vY1bVpNRSWUhajEsN5Za9asobOzk9WrV/e5LZvNctddd/G+972vENzGccwLL7zQZzrCqlWrWLdu3XCaIsSE5Rx4nl/2B7lSCmstqVRAEARlB7fd98bzPKwdftlgozW+Z6hNW+pqLOmUwStjjq9DoSo8netih+cpgsAMePE9QzqTwvftsAKfxjlptIb2YyFt3VXJ4vEuKTuIhbMz3PR7c6jPWFrbQ/756bfY3tx/9obRopTijLmLWLzwHJRSdGU76TNtwig6z0hx9JwawoxGh46abV3UbupAdcYly/daL+C8S6/jtKaVAGzf8N+8uvanRNHIV41zLiau4HHj2BHmx2YuvRBiZAx5kVlLSwsPPPAAn/3sZ6mvr+9z+w9+8AMOHjzIZz7zmcJ1bW1tdHR00NhYPL9q1qxZ7Nu3b6hNAZJfjSOpJxip9l+X0s+xo3WabLar3xFCpVQysuR56CGOFPX0LwgCoigirmAUdcDHBTxrSOFo7wwHTdqvtUW5yqc4lNNrrSzaxBjTU5W49D5Vqnv+cfdsy9jFhfYYo2mck+HNPR0cOphl2owUWiuMTkbrJgrT3RajFVg4ZVrAzVefyv/3m/3sOtjFv/5mH+9aPoOLFg4ySXgUzGmcQyaTJhWkCfrLFVtv6Ty/Fv/NHP6uLrwjEamWPPk6k0yd0RTKW2utwcKSFVdRO3U6G9f/nP27N9HZfoTll19PkK4t/RxD5SKMKX8E3IUhtiZgqONCE+EzaCycLP0UE9+QA9xHHnmEuro6PvjBD/a5LY5jHnzwQT7wgQ8wc+bxRQhdXclcL98v/lAJgoBsNjvUpqC1oqGh/NNNlZgypfx0OJOZ9HNs5HJBydRhPYGt543Mau2pU2vIZPxhHVf9qamJaO/IDzhdQQFx1lY0F7cSzllyXR2kUwHJ6KECrVFKoVTPQrueAgvJ33y2i7hXCrOzljWwaPFUGqYfz0wQBBYmUIDbI5U+/plZUwO3vOt0fvCbffx22xEef+EgRzojrl05uxAQj5WamuLBiu07t1FTU8vsmSfkzl2cws3NwM4OvMV1eFrhGU3gGVR3mzOZ431cct4qps+czdpf/DttLW/R0baP6TPPGfH2Bym/osVjmZSPny5/7m4p4/0ZNFZOln6KiWvIAe5jjz3Ge9/7XlKpVJ/bXnjhBXbt2sWHP/zhouuDIPlgOPELPpvNkk4P/WCIY0dbW8eQ71+KMZopU9K0tXWOaUWqsSb9HFtKJe/3MIxQCrRO5tgao8hmc8Dw8ub27mccx3R1ZYddAayUXD6iKxsNGOTq2BHlw5HLQ9aL1YpUKkMuzJLLxklEHSUptxw984WLn1hrTdiVJepeKaQNBGlNR0dyqlopyIcxFc0IGWVGK1Jpn67OHNEJo/HXLp9GfVrzi1dbeWZjK/tbu3j/xbNJVZgqbqS0Hj7Ehi0bAFg0fzFzTzmt7zSSMwLoTN7j2kHm5WOoaT6ZcxvozIVF2UbSUxq56OqPcuDNbTTMXsSxY/0vhhuqbDbGVLDYrCt0BJmhTVWYKJ9Bo62Sfk6ZkpaRXjFqhhTgbtq0id27d3PttdeWvP0///M/Wbp0aZ+sCPX19WQyGZqbi7OmNzc3M3t2ZdVyTjRak/ajKK7qBQE9pJ9jR2sPcBhjMcYQx4x4GrGefhrjkc+HIzZVoYfpTj0W5vtvt9PgYkZlFDe0OpmbrBVR7Mpa0BbHoIzFRdk+r0cUucLpcmXUxFkx3v0JHcWuZDGMt51ZT33G43//9gCv7+vk3v/zBt4IT9cql8JxWmYqM1NH2LpjM1t2bCflH8/2cMGytxUWom3ftYVDB/aj8w6OAruSdFw9Lk+di7e4nlRDPR26jif/6xfQ03/n6D2B99LgHIKmBpjus/WNrezaswvypXfgxcFSMoumw0yfHbt3sGPXTtQJ7+GpwRSWX3wxqV45gHvkOnNozx/W/O+J8Bk0Fk6WfoqJa0gB7vr165k+fTpLliwpefu6detK5rVVSrFixYqitGGQ5Ne98MILh9IUISYhRRAESWL/UQ+kFNaORkU1Rco3RLEj7mc+rotBeSYZTR3hALvQCpXkJw1zZYxSO0B7WBsXvR6vb2zjzd0dLL9oGsFMC0MuIzE+lp5aQ33G8u/P7edoV0R2kEwUo+m1rhnMrbEsnHIIrfLkcqUXcoX5PF1hV/FL3estojqipFgEkA9zdOZPGL3tta3rDNn6u1/RnmnHn3UWnbkB0p51hqh8jAPyYUhnru8ivY6uAxz5r59z+aq3UzP9hGIWUYzLhyhfCj8IMdENKcDdsGEDixcvLnlbFEVs2bKFj3/84yVvv+mmm7j55ptZunQpV1xxBY8++igbN27krrvuGkpThJiUxnKE0FqPKIpGfKqCVoqUp+mMS1cuc5As8vIs5CtLG1Yu5xxWKcIyS7K52KGtj+di8t2r4nO5JB3a3t0dNExP4amB8/FORHMaAv70mrkcPDryGQcqdyqHj3Xwm80HaOtM3nNnz60hdscXEc47dT6Ns+eigJTV1DhNtuv4mQadqYO65OtpwbwFnDptDnRGHD64h+Y9m4umn7wW/ZL2sBUvzNC04nQaG2ZBR8SOTc+S6zqePnLarNMJ5k/DTU3m+s47ZS4zp0xHZx3G+jgHYS7Hi1tfJBMHeOtacW+vRQXHlz46lwTnqZQ3rJy4QojRN6QA98CBAyUzJwAcPnyYfD7f7+2XXXYZX/3qV/mHf/gHvvnNb7Jo0SLWrFkjRR6EGEW+79PV1X8GhyE/rmcIY0cuV/rb3jlAj26Qq0yy0LS/keQTxTFo62PimCiKOXVehv1vdtL8Vhf5pRGeP/wUa+PBGk1j/fAWQI2UxvqABY1T+fkrLfxu51Ge2xGx9eBbvPfCmZxSH5BOZehZdZHyNTOm1XCsPVtyH2bSGTLpZLpAw7yZzD5zPp3HWvtsZ6xHOpUmnUrDdFDpFURhngNvbWPP1hc4tms3R9p3sOzi/0WKusK2Sim8IIXSydfhlafMJH7xIGZGHSpI8iL3npIQ5nuyk0yukX4hTjbDKvQwUUihh6GTflaXgfqZz+fJ50d6qkLiaGd+wABTKVAxuBEKcrXV1NUEHG3P4qKYKHTkypmmUGiPwsV58rkscRyz9tcH6GiPWHLOVOafOXU01sUNSe9CD6Xm4E4Gr+/r4KcvHKQ9G6EVXHFWA5eeObWQjs3zFNPqM2S7Bn4PDcf+PZvZsO4JojCH56e54O0fpnbKjMLtxvOw3vEF0y6KoTsTx0uvvQAxLDv7vEL6vnRdGuNXVmRDPoP6kkIPYjTJO0uIk0SSrWF0Dvnei4lKcS5ZdKbs8bRQI8U5MEZV9LjOOZSxWOuhlGLOvGSEcO+u9lGbL3yyOrMxw//7jlNZMidD7OBXG1p54Om3OHQsmU7hHOTzjjCKyYejc5l5ahOr/sfHqKufTaZuGpnahqI2xlFYdHZDmSTlXOuRFrbtfJ1tu17n2V/8klxXknYvn8uj5dtTiAlNDlEhTiLeMFeA98e3Gn+QU/vOgTM6CXJHug1KYSqMOFzcM3KnaTw1g1JwtC3kyOGcnHweYZnA8P6LZvH7F8wgsIq9rVn+6am9rN/ehnOOyMV05SI6R+HSlYvoyEbY1BQuuOoPOe/S6wojsXEcke08hotdycpmDVOncVHTSjSK/blD/Ncvf057axtxPiIex8V8QojBSYArxEnEGIMxQ05/3S/nIPAM1gwcGjrnkiDXG3jEt/LndxijKp4WGTuFMQGplGFWY3KKes8bx2R65ShQSnHuaXX8yTvmcsbMFPnI8cRLh3jomX0c6Ri9xXGOJFd6Vy6mK6/ABIVFaltf/i+e+88HOLR/J3EUlnxPzj1zAVcsu5wAj6NxB7/6zZMceONN8v1kiBBCTAwj/00nhJiwnAPf94jjaMRz7yogFVjaO5PTvVqrQhnWPttag7KGOBxaIQhtNMYYrDXEPVGJAlT5i80KbdEe1irOWDSVmjqf0+fX4XuWiTBTwdr+X8PJamrGcsOljTy/rY2nXmtl675O7n50G4HVjEZVEK0U9TWWGbUe0+t8ZtR5zJriM70GWpp3kc928Lun/50FS9/G4uXvQNu+c2unnXYKV9a+g2fXPk1b3MGvX/41Fx7rYMllK0a8vUKIkSEBrhAnHYXnWXK53IinKzNakfI1+dBhPR9tTL8xiw4UKoqJc2HF7TBWk0oF5ENF1L2QRSmwypHLVV5pSlmPU+Z4zJxZi9YKhyIaIFAO/ONzifP5aMBtfd8UFlSF+ZhwgMIXRduGMVEIcaQJQ8hmi0+Je54ubBuFMeEAbfCsRnePricJ+Pvf1lqdjIaTFMAYaKGQtaowrzuOHPmBtjWqUBbXOTh/Xi3z6n1+9vIh9h3Jk+2Vxi7uvkDyu2WgyS+9t4XSX2qdXRFvHcoWbWuVYlbNZSwIXqYmu5XtG37DW2/upmnF/4PxAoJMLZ6XPHM+10k2l+essy9k+4ZXOBC24rYdYZ/aSjivDuVZPKUghjDfRbb9eIlspTXW+piMobUlTXtXHt3dkL7bKjzr43qm+xiDbzVEEIU5uo4dz9urlMLzfJynQSmcMcmPhJ5t2zsLx17fbTWBNSW3RSn83tsqRcP0KdRm+lYtFWIikwBXiJOQMRatY6JoaGVHB5JOeXixIR+5ASuoxZFDK1DGJNkVKghyVexwLjn13Ps5lOqe6zuE4dckTVSeKIrZ8OIhdmw90u+2//N/zSdTkyT73/jyQbZu6pu2qsc73n06U6Ym6bu2bDjIpldb+t32ymtOo2F6Ekhs29TCay8d7Hfbiy6fxfSZybZ7d7Wz4aX+23DB22YyqzFJzLVvTwevvNB/G85fNYNTTk0W3R3Y18GLzx/qd9tlF0xj7um1ABw60MVvnz3Q77ZLz2vg9IV1ABxuyfL8r5OKlqcAp5wQwp66qI7G02sAaD+SY9P6/tt7yvxa5ixI2tB5LM+Gtf23N1dreEs7Dh0L0bHj1GOaLOfhdAM15gU6D+/mpafWALAxdx27uqO+8+3zzNZvdj+KYkHtBczwali77kHa1x4hO+Ocfp9zlpvKhW4hv2j5l6SN05ahden353RXx6Us5WeHvpds23Au2pT+0VDvariCc/jPQw8QE9FRfy7Glt621qW4ivN4quUh8i5Lx9TzMF7pOcRp5/M/WM5/tf4bXfEx2qecx46u6Xz096+kaV59v/0UYqKRAFeIk5LC9z26uqIRzY1rjCEIAjwHYUd+0MeOHWir0Fii/NCmKxTRyWKzMK58AZDDYP2AOBw8lZpSujB1YLAFc1pXsq2qcFvVve3A7dWq17aDZJvQil6PO9i25bdBFbV34I3r0obGhuRHweFB3hO1vbY9Okjflsyp4bpzG4idY9+BLn73dBJk5+LTCON6au16rO7/h0LCsffYeg7qDWTjjkG2rQ6e0WTSUr1NTC6SB7cfkrOwukg/SwvD/IiV8bXWw++VGzSXT1avF9dVLfnPZCQ3jIl65bJVff5xnLGautoUbUe7ClMUCo8bQzabH9rcXq0wOk8URUXVssaLNZqa2oD2Y1nCKE4KWsQRuXx+wNHxycQaRaYmoKM9O+A0i+FKYmrVPZUlCbgVCmNUEqgbhbEBxnplnU2wviFdV4Mrc0WifAb1JXlwxWiSEVwhTmLWJqMyYRgOedFZMr/Pw/OKA4Ogez5pUaxQFOC6outUCshFx+fU9gQOxX9QKglwA9+WHDXUFVY2O94RMJ7B8yyuq4NwAqSBcr3+OpfMidXG4nuKbD5PPMB83skiKXansFpj+jl1P1zd48aFYLZnKkvhdp0Et9qUGdx6lQW3QoixJwGuECc5az2MsURRSBQlgW6553WUUvi+j7W2z32cS0YgK2IMXi4cNDg1SpNJWXxriPJxn7FWaw25CucXW2uwVhHH4HkpnOsiisY/yD1RHMUorQl8n3w+PyEC8eGwWpNJW1wcjVolsxP1fq9qrbF+UCjVOxhjDanatAS3Qkxwcm5ACIFSCms9giCN7wcYM3gxBq2TTAbG9A1uh94QILCoQfLp9kj5pk+BiaFUNtNG4/n6eD+0xvdTEzZFl4sduOTHRc9K/8lGKUj5mlQwCoU/yqS1xgapioLbdF06OU0ghJjQJuantxBi3BhjSaVSBEGAtbZk8GGMIZVKodTofNFrv9ySvoqUb/G8Ez7KtMKUGeAqrQgCUxSkOwdoTRBM4CDXJRkkPM/H970RLZwx2pRSpDxDMI7BuTYGL0iX/R42VpOuS0lwK8QkMTE/uYUQ48o50DrJiJBKpfA8D9U9d9FaSxCkGM1yX04pdFBukAvpwMPa4x9nLnYYawZtYjLFwpbcLglyTfdI7gSNHl2Sbq1ngd94jYRWQmtFytP4nh7xPMxlt8EYvCAFqryvwCS4TUOZI71CiPEnR6sQol/OJSmxPM/H8zyiKBqVUr8ln1sptG+Is4OnMlNAJmXp6MwXVuJrk6Sxivu7rwLPN2ij+n1855I8vb6fIpfrKpm5QKnitFdK9V4Q171UTvUUWqssAO1JrTXY3eIoxmhDKui/L8PlgCiKiKJ4SM+hVDJ1JOWZZG62Nmil8KzBD1L4OUcul8fFQ3v8cmlr8fzyf6AZq0nVSHArxGQjR6wQokxqzILbHk4rtK+Jc9Ggo30KRTrl0d6VLyxWMp4hzpZebGY9g7GDB4RJkGvx/YBcLlsIchVJSiTfaozRPZWCB3ycSmmjqMv4RPmQrIrIhXG/6cHi2KGULndQsmIKuudbx0RRRBj2X+65J+jvyeur0BjPkvINxhiSdF0qOVNgFNbz0DbC191lpMOQOI5GPNitNLjVJglulZWvSiEmGzlqhRATm9VoB1E+GjS3rVaKTODRkU2CXKsVoVZ9Kptpo/EqOEWeBLk+nu/IZXNoDb7tLqN6wnajQSuVLKjzNPm8IxdFxN3V3Iqf3w2/WMYAHA5UknnDWlsU6PYEotZqrPFQxnaXlgPrKQLPKworS71WyRkDg/EMVjGiwa7xPKwXUHZwqzWpmpQEt0JMUnLkCiEmNOdAeRrtHHF+8LyvRivSvqWje+RWa0XUK8DVJRaVldcOh7EBtdagGYGqaxVyLhml9j2VBLphTBjF5CM3qqf0+zaEQv5dow02sIUAFKNRyvZqr8PzDIFX+VdNn2A3Comj6PhzVUBbi/VS5W+vFamaAO1J9S4hJisJcIUQE55zgJeM5MZlVIGyRpP2LZ3ZEGsNURSDS+a0FhaVVRATKrqLS3gG3/PJdWUJw+yYB7m9eTZZqBVGjjCKB5y+MFri2HX/YEihPR/nYsIwIgqTHxeBl6RxG2787RwobTHaYhXJaG4FL76qYN6G1oqgJoUJ/HFbBCeEGD4JcIUQk4QC3ySpX8oIPDyrcc7QlQ/ROUXcPZqoBlhUVoo2isAa/O6UVnEMXhDgcET5kSlzPFTOJSPWRicpt3JhPGZBt1JgPQ9j/SQbQU9FOl/hXAzE6DIKfRijCVIpUrGaEOWHlVZY32OIhf2EEBOEBLhCiMnFN+gyS9QGvgEckee6pxiUH9wqBb5nCHxzvGxwN+fA8wOAcQ9yeztxTvBoUEqhrYf1vAFyyJbXDqXApj3SU2voiiEsY3R+LEhwK8TkJwGuEGLSUb5FaY22CjfI6ed0xgejyOdjosiVVRDBaEXgme5R4H5b0b0i3xGHlZUFLldPWrGeHMTjTVuLtR56BKrXKZ2kgVNjEJQLIU4+EuAKISYfBSbjobIWVcZobiYwuNAl6cbKOA2uVDJKW04Q5/kpnDcyQ34njhQbo0llUuRDm8wjHk8qmcta7usyEG0UKrDjOYVZCFHlJMAVQkxq5QRbSVWypDpanItw0eC5b8unRq1kMUoneWOVHs3CcWUb9qIrBdpq8IwEt0KIUSXnhoQQJw2nkpFDbSZAtHiSUUphfIPyR+nHgBBC9CIBrhDi5BPYZCRRjAllFDplcKb84hpCCDEcMkVBCHFSUoHBaEWcH7wMsBg6bTX4MiVBCDG2JMAVQpyUChXSFMT5uKzFZ6J8SoHyDMhIuRBiHEiAK4Q4aTkHGI3WijhbXoaFIVG9Un0ZXfZ6MW01yjPowEA4yeYNawVGyei4EGJcSIArhDjpOaXQKYvLhsSDZFgoi0pSfikNymjQCqfV8fRj5T6M1ZjAoqyenKf4J2WjhRDVQAJcIYSgOxYLLDoXEUcVlrwdJKAtPIcEfEIIMSYkwBVCiN58jYkqnA6gVJKCTEtAK4QQE0FFAe7atWu58cYbS942d+5cfvGLX3Ds2DG+/vWv87Of/Yx8Ps/KlSv5y7/8S+bNm1fY9oknnuC+++5jz549LFiwgNWrV3PJJZcMrydCCDEiFG6IeXIloBVCiImhouWty5cv55lnnim6fPvb30YpxS233ALArbfeytq1a/nOd77Dww8/zNGjR/nUpz5FHCdlJp977jk+//nP86EPfYgf//jHXHLJJdx8881s27Zt5HsnhBBCCCFOOhUFuL7vM3PmzMKlpqaGu+++m+uuu473ve99rF27lmeffZa/+7u/44ILLmDJkiV85Stfob29nZ07dwLwT//0T1x99dXceOONLFy4kNWrV3P22Wfz4IMPjkb/hBBCCCHESWZYCQrXrFlDZ2cnq1evBuCZZ56hqamJxYsXF7ZZtGgRv/zlL1mwYAFxHPPCCy/0mY6watUq1q1bN5ymCCGEEEIIAQxjkVlLSwsPPPAAn/3sZ6mvrwdgx44dnH766TzyyCM8/PDDtLW1ccEFF3DHHXcwe/Zs2tra6OjooLGxseixZs2axb59+4bXkRFOJm6MLvpbraSf1UX6WV1Ohn6eDH0E6acQY23IAe4jjzxCXV0dH/zgBwvXHTt2jNdee43W1la+8pWvAPCNb3yDG2+8kZ/85Cd0dXUByVSH3oIgIJvNDrUpaK1oaKgZ8v0HMmVKelQed6KRflYX6Wd1ORn6eTL0EaSfQoyVIQe4jz32GO9973tJpVLHH8xastks3/nOd5g6dSoA3/72t7n88st56qmnuPjiiwHI5XJFj5XNZkmnh34wxLGjra1jyPcvxRjNlClp2to6iaJ4RB97IpF+VhfpZ3U5Gfp5MvQRpJ+lTJmSlpFeMWqGFOBu2rSJ3bt3c+211xZd39jYyOzZswvBLcCMGTOor69nz5491NfXk8lkaG5uLrpfc3Mzs2fPHkpTCsJwdD4woigetceeSKSf1UX6WV1Ohn6eDH0E6acQY2VIP53Wr1/P9OnTWbJkSdH1K1eu5M033ywKYJubm2ltbeX0009HKcWKFSt4/vnni+63du1aLrzwwqE0RQghhBBCiCJDCnA3bNhQlCmhx7ve9S7OOOMM/vzP/5xXX32VDRs2cNtttzF//nyuvPJKAG666SYef/xx/vmf/5lt27bxt3/7t2zcuJGPfexjw+qIEEIIIYQQMMQA98CBA4XMCb35vs8DDzzAnDlz+NjHPsYNN9xAQ0MDDzzwQGFh2WWXXcZXv/pV/vVf/5XrrruO5557jjVr1rBw4cJhdUQIIYQQQggA5dzkLy4ZRTEtLe0j+pjWahoaamhtba/qeUTSz+oi/awuJ0M/T4Y+gvSzlGnTamSRmRg18s4SQgghhBBVRQJcIYQQQghRVSTAFUIIIYQQVaUq5uA654jjke+GMbqqE3L3kH5WF+lndTkZ+nky9BGknyfSWqGUGoMWiZNRVQS4QgghhBBC9JApCkIIIYQQoqpIgCuEEEIIIaqKBLhCCCGEEKKqSIArhBBCCCGqigS4QgghhBCiqkiAK4QQQgghqooEuEIIIYQQoqpIgCuEEEIIIaqKBLhCCCGEEKKqSIArhBBCCCGqigS4QgghhBCiqkiAK4QQQgghqooEuCXEcczf//3fc/nll3P++efzx3/8x+zevXu8mzXi9u/fz+LFi/tcfvSjH41300bEP/7jP/LRj3606LqNGzdyww03cP7553PVVVfxL//yL+PUupFTqp9f/OIX++zXq666apxaOHSHDx/my1/+MldccQUrVqzgwx/+MOvXry/c/uyzz3L99ddz3nnn8c53vpPHH398HFs7dIP186abbuqzP0/c5xPdoUOH+PznP8/FF1/M8uXLufnmm9m2bVvh9mo5NgfrZ7Ucm73t2LGD5cuXF313VMv+FJOYE33cd999btWqVe6Xv/yl27hxo/vEJz7hrrnmGpfNZse7aSPqV7/6lVu2bJnbv3+/a25uLlw6OzvHu2nD9tBDD7klS5a4G264oXBdS0uLW7Vqlbvjjjvc1q1b3Q9/+EO3bNky98Mf/nAcWzo8pfrpnHPvf//73b333lu0Xw8dOjROrRy6m266yb3nPe9x69atc9u3b3df+cpX3Lnnnuu2bdvmtm7d6pYtW+buvfdet3XrVvfd737XLV261P3mN78Z72ZXbKB+OufcJZdc4h555JGi/dna2jq+ja7QBz/4QfeBD3zAvfTSS27r1q3u1ltvdZdddpnr6OioqmNzoH46Vz3HZo9cLueuv/5619TU5B599FHnXHV+1orJRwLcE2SzWbd8+XL38MMPF647cuSIO/fcc91Pf/rTcWzZyLv//vvdtddeO97NGFH79u1zf/Inf+LOP/989853vrMo8FuzZo277LLLXD6fL1x3zz33uGuuuWY8mjosA/UzjmN3/vnnu5///Ofj2MLh27lzp2tqanLr168vXBfHsbv66qvdt771LfelL33Jvf/97y+6z2233eY+8YlPjHVTh2Wwfh48eNA1NTW51157bRxbOTyHDx92t912m9u8eXPhuo0bN7qmpib30ksvVc2xOVg/q+XY7O2ee+5xN954Y1GAWy37U0xuMkXhBJs2baK9vZ1LLrmkcN2UKVNYunQp69atG8eWjbzNmzezcOHC8W7GiHrttdfwPI+f/OQnnHfeeUW3rV+/nosuughrbeG6iy++mJ07d3Lw4MGxbuqwDNTPXbt20dHRwYIFC8apdSOjoaGB+++/n2XLlhWuU0qhlKKtrY3169cXHaeQ7M/f/va3OOfGurlDNlg/N2/ejFKK+fPnj2Mrh2fq1Kncc889NDU1AdDS0sIDDzxAY2MjixYtqppjc7B+Vsux2WPdunX827/9G1/72teKrq+W/SkmNwlwT7Bv3z4ATjnllKLrZ82aVbitWmzZsoWWlhY+8pGP8La3vY0Pf/jDPP300+PdrGG56qqruO+++5g3b16f2/bt20djY2PRdbNmzQLgrbfeGpP2jZSB+rllyxYAvv/973PVVVdx9dVXc+edd3L06NGxbuawTJkyhd/7vd/D9/3CdT/72c944403uPzyy/vdn52dnbS2to51c4dssH5u2bKFuro67rzzTq644gre+c538q1vfYtcLjeOrR66L33pS1xyySU8/vjj3HXXXWQymao6NnuU6me1HJsAbW1t3H777Xzxi1/s831ZjftTTD4S4J6gs7MToOjLBiAIArLZ7Hg0aVSEYcj27ds5cuQIt956K/fffz/nn38+N998M88+++x4N29UdHV1ldyvQFXt2y1btqC1ZtasWaxZs4YvfOELPPPMM9xyyy3EcTzezRuyF154gTvuuINrrrmGK6+8suT+7Pn/ZA3+oG8/t2zZQjab5dxzz+W73/0un/rUp/jBD37AF7/4xfFu6pB87GMf49FHH+U973kPn/70p3nttdeq8tgs1c9qOjb/+q//muXLl3Pttdf2ua0a96eYfOzgm5xcUqkUkHxB9vwbkoMynU6PV7NGnLWWtWvXYowp9POcc87h9ddf53vf+16fU7/VIJVK9Ql8ej5sM5nMeDRpVHzqU5/iD//wD2loaACgqamJmTNn8gd/8Ae88sorfaY0TAZPPvkkn/vc51ixYgXf+MY3gOQL88T92fP/yXqslurnnXfeyerVq5k6dSqQ7E/P8/iLv/gLbr/9dmbMmDGeTa7YokWLALjrrrt46aWXeOihh6ry2CzVz7vuuqsqjs3HHnuM9evX89Of/rTk7dW4P8XkIyO4J+g51dLc3Fx0fXNzM7Nnzx6PJo2ampqaoiAe4Mwzz2T//v3j1KLR1djYWHK/AlW1b7XWhS/QHmeeeSbApJxm89BDD3Hrrbfy9re/nTVr1hRGgk455ZSS+zOTyVBXVzceTR2W/vpprS0Etz0m2/5saWnh8ccfJwzDwnVaaxYtWkRzc3PVHJuD9bNajs1HH32UQ4cOceWVV7J8+XKWL18OwF/91V/xyU9+smr2p5jcJMA9wZIlS6itrWXt2rWF69ra2tiwYQMrV64cx5aNrNdff50VK1YU9RPg1VdfLYw8VJuVK1fy29/+liiKCtc999xzzJ8/n+nTp49jy0bW7bffzsc//vGi61555RWASbdvH3nkEf7mb/6Gj3zkI9x7771Fpz0vvPBCnn/++aLtn3vuOVasWIHWk+ujbaB+fvSjH+WOO+4o2v6VV17B8zzOOOOMMW7p0Bw8eJDbbrutaPpTPp9nw4YNLFy4sGqOzcH6WS3H5je+8Q3+4z/+g8cee6xwAfizP/sz7rrrrqrZn2KSG+80DhPRvffe6y666CL35JNPFuXBzeVy4920ERNFkXvf+97n3v3ud7t169a5rVu3uq9+9avunHPOKUpxM5mtXr26KH3WwYMH3cqVK93q1avd66+/7h599FG3bNky96Mf/WgcWzl8J/bzySefdE1NTe6+++5zb7zxhvvVr37lrrrqKnfbbbeNYysrt337dnf22We7T3/600U5Q5ubm11bW5vbsmWLO/vss93Xv/51t3XrVve9731vUubBHayf3//+991ZZ53lHnnkEbdr1y73+OOPu1WrVrl77713vJtekU9+8pPummuucc8//7zbvHmzu+2229zKlSvd3r17q+rYHKif1XJsltI7TVg17U8xeSnnJlE+nTESRRH33nsvP/rRj+jq6mLlypV8+ctfZu7cuePdtBF18OBB7rnnHn7961/T1tbG0qVL+dznPseFF1443k0bEV/4whfYu3cv3//+9wvXvfzyy9x1111s2LCBmTNn8olPfIIbbrhhHFs5fKX6+cQTT3D//fezfft26urquPbaa/nMZz5TOO09GaxZs4ZvfvObJW+77rrr+NrXvsbTTz/N17/+dXbu3MncuXO59dZbefe73z3GLR2ecvr58MMP8/DDD7N79+7CnM2bb755Uo1UHz16lHvuuYcnn3ySo0ePcuGFF/KFL3yhcIq+Wo7NwfpZDcdmKYsXL+buu+/m+uuvB6pnf4rJSwJcIYQQQghRVSbPz38hhBBCCCHKIAGuEEIIIYSoKhLgCiGEEEKIqiIBrhBCCCGEqCoS4AohhBBCiKoiAa4QQgghhKgqEuAKIYQQQoiqIgGuEEIIIYSoKhLgCiGEEEKIqiIBrhBCCCGEqCoS4AohhBBCiKoiAa4QQgghhKgq/z8Q5k5dOImQVgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "for idx, row in df_no_noise.iterrows():\n", + " mean = sm_list[(idx[0], idx[1], False)][0]\n", + " std = sm_list[(idx[0], idx[1], False)][1]\n", + " plt.plot(mean, label=f\"n_init={idx[0]}, noise_level={idx[1]}\")\n", + " plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in df_noise.iterrows():\n", + " mean = sm_list[(idx[0], idx[1], True)][0]\n", + " std = sm_list[(idx[0], idx[1], True)][1]\n", + " plt.plot(mean, label=f\"n_init={idx[0]}, noise_level={idx[1]}\", linestyle=\"--\")\n", + " plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.3, 1))\n", + "plt.title(\"Sliding min without noise\")\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/noisy_optimization_BayBE_extendedBounds.ipynb b/noisy_optimization_BayBE_extendedBounds.ipynb new file mode 100644 index 0000000..bca8c73 --- /dev/null +++ b/noisy_optimization_BayBE_extendedBounds.ipynb @@ -0,0 +1,1300 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "ddfe121c-9cad-4d3f-b518-e42c72a1b70b", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "97c15027-9275-43e5-9613-ecbfe31d4914", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/brendenpelkie/miniconda3/envs/noisybo/lib/python3.12/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SMOKE_TEST None\n", + "SMOKE_TEST None\n" + ] + } + ], + "source": [ + "import torch\n", + "import pandas as pd\n", + "import sys\n", + "sys.path.append('./src/baybe_utils')\n", + "from run_grid_experiments_baybe import run_grid_experiments\n", + "from run_grid_experiments_baybe_random import run_grid_experiments_random\n", + "from src import visualization\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from src import schwefel" + ] + }, + { + "cell_type": "markdown", + "id": "5bcc2d3b-c62b-422c-bdee-15eee6f1452c", + "metadata": {}, + "source": [ + "## Intro\n", + "\n", + "This work lightly explores the impact of a noisy oracle on Bayesian optimization performance. Here, the 2-dimensional Schwefel function with Gaussian noise is used as an optimization objective. However, this work is motivated by the need to deal with noisy data when applying BO to experimental optimization. \n", + "\n", + "## Implementation Notes\n", + "\n", + "- This work was done as an entry in the 2024 Bayesian optimization for materials hackathon\n", + "- Our team pursued multiple implementations in parallel\n", + "- This notebook serves as an entry point to the BayBE implementation of the project\n", + "- Individual optimization campaigns are run from the run_experiments() function in run_experiment_babye.py\n", + "- Grid screening of parameters builds on this with funcitonality in the run_grid_experiments_babye.py\n", + "- As this was a hackathon project, there are some hacks. Watch out for hard-coded gotchas throughout. Would not recommend directly re-using code. " + ] + }, + { + "cell_type": "markdown", + "id": "02f05875-7a5c-4f50-8b55-fc0e30340897", + "metadata": {}, + "source": [ + "## 1. Define grid search parameters \n", + "\n", + "This is to run a grid search over experiment parameters like number of BO trials to run, noise level, etc. These values were chosen by the team as 'reasonable' sounding values." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5319bdb1-b6a0-4dfa-b05c-bd854456278d", + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5)) # run 5 replicates of each parameter set\n", + "n_inits = [2, 4, 8, 10] # Number of initial randomly collected data points\n", + "noise_levels = [1, 5, 10, 20] # variance (?) of gaussian noise. Bigger number -> more noise\n", + "noise_bools = [True] # carryover from BoTorch side of project, ignore\n", + "budget = 30 # Run 30 iterations of BO\n", + "bounds = (0, 500)" + ] + }, + { + "cell_type": "markdown", + "id": "abdf100a-84fe-466f-9b60-67d698e7578e", + "metadata": {}, + "source": [ + "## 2. Run grid search\n", + "\n", + "Run the grid search over parameters. This will take a minute or 60. Results are written to disk so if you are just following along, skip this step and load below " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d8ffedfe-8639-479f-9cee-63f4a0f32e54", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 0, time: 9.77s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 0, time: 20.17s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 0, time: 29.14s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 0, time: 37.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 0, time: 46.36s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 0, time: 53.80s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 0, time: 63.23s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 0, time: 73.00s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 0, time: 82.27s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 0, time: 92.22s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 0, time: 101.83s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 0, time: 111.08s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 0, time: 122.14s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 0, time: 133.72s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 0, time: 143.48s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 0, time: 154.43s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 1, time: 164.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 1, time: 173.89s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 1, time: 182.85s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 1, time: 192.51s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 1, time: 201.54s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 1, time: 212.40s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 1, time: 221.70s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 1, time: 230.91s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 1, time: 243.10s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 1, time: 255.56s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 1, time: 270.03s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 1, time: 280.28s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 1, time: 289.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 1, time: 299.25s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 1, time: 308.92s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 1, time: 319.49s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 2, time: 329.27s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 2, time: 338.76s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 2, time: 347.93s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 2, time: 357.74s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 2, time: 367.02s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 2, time: 376.51s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 2, time: 385.96s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 2, time: 397.90s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 2, time: 408.44s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 2, time: 419.22s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 2, time: 428.92s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 2, time: 439.04s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 2, time: 449.04s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 2, time: 460.35s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 2, time: 471.40s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 2, time: 482.81s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 3, time: 491.03s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 3, time: 504.92s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 3, time: 519.03s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 3, time: 533.70s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 3, time: 551.65s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 3, time: 566.76s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 3, time: 581.07s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 3, time: 595.80s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 3, time: 609.09s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 3, time: 624.71s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 3, time: 638.26s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 3, time: 656.84s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 3, time: 674.62s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 3, time: 691.10s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 3, time: 705.66s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 3, time: 717.10s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 4, time: 728.05s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 4, time: 739.18s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 4, time: 752.93s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 4, time: 763.88s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 4, time: 777.25s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 4, time: 791.57s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 4, time: 804.90s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 4, time: 816.67s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 4, time: 828.14s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 4, time: 841.69s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 4, time: 858.32s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 4, time: 872.05s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 4, time: 887.12s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 4, time: 898.55s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 4, time: 908.63s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 4, time: 918.71s\n", + "all experiments done, time: 918.71s\n" + ] + } + ], + "source": [ + "run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget, bounds)" + ] + }, + { + "cell_type": "markdown", + "id": "16aeaf0f-14b6-4827-b94a-cb87cd2a4d7c", + "metadata": {}, + "source": [ + "### Run random search as well\n", + "\n", + "Generate some random baseline data to compare against\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5aac4ea7-cb9f-48a4-a874-e4396d8b9e22", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 0, time: 0.97s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 0, time: 1.90s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 0, time: 2.83s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 0, time: 3.75s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 0, time: 4.67s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 0, time: 5.60s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 0, time: 6.52s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 0, time: 7.44s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 0, time: 8.38s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 0, time: 9.32s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 0, time: 10.27s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 0, time: 11.24s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 0, time: 12.23s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 0, time: 13.18s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 0, time: 14.14s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 0, time: 15.09s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 1, time: 16.02s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 1, time: 16.94s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 1, time: 17.85s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 1, time: 18.77s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 1, time: 19.70s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 1, time: 20.62s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 1, time: 21.55s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 1, time: 22.48s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 1, time: 23.41s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 1, time: 24.34s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 1, time: 25.28s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 1, time: 26.21s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 1, time: 27.15s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 1, time: 28.10s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 1, time: 29.05s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 1, time: 29.99s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 2, time: 30.90s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 2, time: 31.82s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 2, time: 32.85s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 2, time: 33.78s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 2, time: 34.70s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 2, time: 35.63s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 2, time: 36.56s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 2, time: 37.48s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 2, time: 38.43s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 2, time: 39.37s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 2, time: 40.31s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 2, time: 41.25s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 2, time: 42.20s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 2, time: 43.15s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 2, time: 44.10s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 2, time: 45.05s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 3, time: 45.96s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 3, time: 46.89s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 3, time: 47.80s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 3, time: 48.73s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 3, time: 49.66s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 3, time: 50.58s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 3, time: 51.53s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 3, time: 52.47s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 3, time: 53.41s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 3, time: 54.36s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 3, time: 55.30s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 3, time: 56.25s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 3, time: 57.21s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 3, time: 58.15s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 3, time: 59.11s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 3, time: 60.05s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 4, time: 61.04s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 4, time: 61.97s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 4, time: 62.90s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 4, time: 63.83s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 4, time: 64.75s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 4, time: 65.68s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 4, time: 66.60s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 4, time: 67.53s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 4, time: 68.47s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 4, time: 69.41s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 4, time: 70.35s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 4, time: 71.29s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 4, time: 72.23s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 4, time: 73.17s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 4, time: 74.25s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 4, time: 75.20s\n", + "all experiments done, time: 75.20s\n" + ] + } + ], + "source": [ + "run_grid_experiments_random(seeds, n_inits, noise_levels, noise_bools, budget, bounds)" + ] + }, + { + "cell_type": "markdown", + "id": "34ac9617-f371-40b1-b1a1-5203d84b1a65", + "metadata": {}, + "source": [ + "## 3. Process Results" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "7509bc0b-63de-4329-a75f-a8acdf522165", + "metadata": {}, + "outputs": [], + "source": [ + "global_min = torch.tensor([420,420])" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "ce441669-a569-468f-a482-fec91efef95f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_22503/1164103272.py:22: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " bo_results = pd.concat([bo_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
0210True219.849106
0211True23.180445
0212True0.325259
0213True234.490707
0214True0.764173
..................
010200True0.684985
010201True1.410233
010202True0.926888
010203True2.214593
010204True16.486259
\n", + "

80 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 2 1 0 True 219.849106\n", + "0 2 1 1 True 23.180445\n", + "0 2 1 2 True 0.325259\n", + "0 2 1 3 True 234.490707\n", + "0 2 1 4 True 0.764173\n", + ".. ... ... ... ... ...\n", + "0 10 20 0 True 0.684985\n", + "0 10 20 1 True 1.410233\n", + "0 10 20 2 True 0.926888\n", + "0 10 20 3 True 2.214593\n", + "0 10 20 4 True 16.486259\n", + "\n", + "[80 rows x 5 columns]" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load BO results \n", + "sm_list_bo = {}\n", + "sm_x_list_bo = {}\n", + "bo_results = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_baybe_extendedBounds/results_baybe/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " sliding_x_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " min_x = X[Y_real[:i+1].argmin().item()]\n", + " x_rmsd = np.sqrt((min_x[0].item() - global_min[0].item())** 2 + (min_x[1].item() -global_min[1].item())**2)\n", + " sliding_x_min[i] = x_rmsd\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " bo_results = pd.concat([bo_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + " \"best\": [sliding_min[-1].item()]})])\n", + " \n", + " sm_mean = sm_agg.mean(0)\n", + " sm_std = sm_agg.std(0)\n", + " sm_list_bo[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " sm_x_list_bo[(n_init, noise_level, noise_bool)] = sliding_x_min\n", + "bo_results " + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "af01900d-a2bf-4c49-90a0-b3614a59c2fc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_22503/129970788.py:22: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " random_results = pd.concat([random_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
0210True382.194916
0211True12.435197
0212True295.999420
0213True2.214593
0214True176.200272
..................
010200True382.194916
010201True12.435197
010202True295.999420
010203True2.214593
010204True176.200272
\n", + "

80 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 2 1 0 True 382.194916\n", + "0 2 1 1 True 12.435197\n", + "0 2 1 2 True 295.999420\n", + "0 2 1 3 True 2.214593\n", + "0 2 1 4 True 176.200272\n", + ".. ... ... ... ... ...\n", + "0 10 20 0 True 382.194916\n", + "0 10 20 1 True 12.435197\n", + "0 10 20 2 True 295.999420\n", + "0 10 20 3 True 2.214593\n", + "0 10 20 4 True 176.200272\n", + "\n", + "[80 rows x 5 columns]" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load random results \n", + "sm_list_random = {}\n", + "sm_x_list_random = {}\n", + "random_results = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_baybe_extendedBounds/results_random_baybe/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " #print(torch.min(Y_real))\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " min_x = X[Y_real[:i+1].argmin().item()]\n", + " x_rmsd = np.sqrt((min_x[0].item() - global_min[0].item())** 2 + (min_x[1].item() -global_min[1].item())**2)\n", + " sliding_x_min[i] = x_rmsd\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " random_results = pd.concat([random_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + " \"best\": [sliding_min[-1].item()]})])\n", + "\n", + " #print(sliding_min)\n", + "\n", + " \n", + " sm_mean = sm_agg.mean(0)\n", + " sm_std = sm_agg.std(0)\n", + " sm_list_random[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + " sm_x_list_random[(n_init, noise_level, noise_bool)] = sliding_x_min\n", + "random_results " + ] + }, + { + "cell_type": "markdown", + "id": "a62c64e2-b44c-4cb2-8e3c-4955abb334de", + "metadata": {}, + "source": [ + "Calculate 'performance matrix' to generate iterations vs noise heat map" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "f9d3ca6c-22f6-459e-9107-cfa6cc663673", + "metadata": {}, + "outputs": [], + "source": [ + "performance_matrix_bo = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "for i, init in enumerate(n_inits):\n", + " for j, noise in enumerate(noise_levels):\n", + " y_vals = torch.load(f'results_baybe_extendedBounds/results_baybe/Schwe_n_init_{init}_noiselvl_{noise}_budget_30_seed_0_noise_True.pt')[2]\n", + " best_y = torch.min(y_vals)\n", + " performance_matrix_bo[i,j] = best_y\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "cd2d4601-b8ee-4d96-8c54-9dad0285151c", + "metadata": {}, + "outputs": [], + "source": [ + "performance_matrix_random = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "for i, init in enumerate(n_inits):\n", + " for j, noise in enumerate(noise_levels):\n", + " y_vals = torch.load(f'results_baybe_extendedBounds/results_random_baybe/Schwe_n_init_{init}_noiselvl_{noise}_budget_30_seed_0_noise_True.pt')[2]\n", + " best_y = torch.min(y_vals)\n", + " performance_matrix_random[i,j] = best_y" + ] + }, + { + "cell_type": "markdown", + "id": "9ba43cdf-7017-4853-a200-945af8e20e61", + "metadata": {}, + "source": [ + "## 4. Plot\n", + "\n", + "### backtesting plots\n", + "\n", + "1. Fix n_init, compare noise level" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "8f2b0de9-e2b8-40a6-a910-a4945f06aaba", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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t67AY7z++uvcuXOHESNGFDhTxqPkzUZR2FRyhnrppZfo2LEjCxcuZMOGDfke/9e//sXZs2cZO3ZsvlGsdevWcfXqVd39gwcPcuDAAYKCgnTb8pLBu3fvFku8hnr77bc5e/Ysa9eu1fvaOk/eh5MHRx+zsrL44Ycf8rW1srIq0tfSrq6uNGjQgMWLF+ud98mTJ9myZQuvvPLKE5xJyejbty+HDh3SS5TPnDnD33//Tb9+/Uo1FkNeK4a+5x7nlVdeQaPR8P333+ttnzt3LiqVSu81DbBv3z692ue4uDjWr19P586dMTIyQqPR5HutODs74+bmpisNady4MdWrV2f27NkFfuh9eGq0R+nTpw9GRkb8+uuvrFq1iq5du+p9ECvoda4oCt98802+YxX192BkZETnzp1Zv349ly5d0m2/ceMGy5cv5+WXXza4VOjOnTv5vgnIW1imoLIgIUTJkZFk8Vh//fWXbjQpISGB5cuXc+7cOcaPH6/7D6BLly589dVXBAYGMnDgQBISEpg3bx7e3t4FljE0bNiQevXqsWrVKurUqaObDuphZ8+e1ZVlpKWlsX//fhYvXoy3t3e+GuacnBxd24f16tXrkSOXS5YsoUOHDvTo0YOBAwfSunVrMjMzWbNmDeHh4bz66qv5ppcC8Pb25uWXX+add94hMzOTr7/+GicnJ8aOHatrk3dxU0hICAEBARgZGTFgwIBCYylOf/75J0uWLKFPnz5ERkbq/S6sra3p2bMnL730Eg4ODgwePJiQkBBUKhX/+9//CvzKvnHjxoSGhvLBBx/QtGlTrK2t9UbrHjRr1iyCgoJo2bIlQ4cO1U0BZ2dn98RL/k6aNInJkyezfft23fzChfnf//5HbGysbq7lnTt36kpNXn/9dd3I6Lvvvsv8+fPp0qULH330ESYmJnz11VdUqlSJDz/88InifFLVq1fH3t6en376CRsbG6ysrGjevHmBdbiGvucep1u3brRr145//etfXLp0CT8/P7Zs2cL69esZM2aMbtQ3T7169QgICNCbAg5g8uTJgLaO393dnb59++Ln54e1tTVbt27l0KFDuvm91Wo1CxYsICgoCB8fH9544w0qV67M1atX2b59O7a2troPxY/j7OxMu3bt+Oqrr7h3755eqQVo576uXr06H330EVevXsXW1pbVq1cXWCNuyHt22rRphIWF8fLLL/Puu+9ibGzMzz//TGZmJjNnzixS7A9avHgxP/zwA7169aJ69ercu3eP+fPnY2tr+0x9uBTihVDq82mIcqOgKeDMzc2VBg0aKD/++KPeNEaKoij/+c9/lBo1aihmZmZK7dq1lYULF+qmbSrIzJkzFUD5/PPPC3z84b6NjIwUd3d3Zfjw4cqNGzf02j5qCjhAiYmJeez53rt3T5k0aZLi4+OjWFhYKDY2NkqrVq2URYsW5TvXvCnPZs2apcyZM0fx8PBQzMzMlNatWysRERF6bXNycpT33ntPqVixoqJSqfSeDwqZAu7mzZv5zs/KyipfzP7+/oqPj0++uPKmECtsGj9AbzqxPXv2KC1atFAsLCwUNzc3ZezYscrmzZsVQNm+fbuuXUpKijJw4EDF3t5e7xiFTT23detWpVWrVoqFhYVia2urdOvWTYmKitJrU9g558X+4O/uww8/VFQqlRIdHZ3vuSjouSns3B88J0VRlLi4OKVv376Kra2tYm1trXTt2lU5d+7cY/tQlMKngHt4Cq/t27fn6/vhKeAURVHWr1+v1K1bVzE2NtZ7TguaAq6o77miTAGnKNr3wPvvv6+4ubkpJiYmSo0aNZRZs2ble/0DysiRI5WlS5fq+m/YsKHeuWVmZioff/yx4ufnp9jY2ChWVlaKn5+f8sMPP+Tr99ixY0rv3r0VJycnxczMTPH09FT69++vbNu2TdemsNfJg+bPn68Aio2NjZKenp7v8aioKKVjx46KtbW1UqFCBeWtt95SIiIi8r12DXnPKoqiHD16VAkICFCsra0VS0tLpV27dsrevXv12hT1dXH06FHltddeU6pUqaKYmZkpzs7OSteuXfWm2xNClA6VojwjV3iIF84333zD+++/z6VLl/Jd8f2su3TpEl5eXsyaNYuPPvqorMN5YTRr1gxPT0/dwg9CCCFESZFyC1EmFEXhP//5D/7+/uUuQRZlIzk5mYiICBYvXlzWoQghhHgBSJIsSlVqaiq///4727dv58SJE6xfv76sQxLlhK2trVy4JIQQotRIkixK1c2bNxk4cCD29vZMmDCB7t27l3VIQgghhBD5SE2yEEIIIYQQD5F5koUQQgghhHiIJMlCCCGEEEI8RGqSgdzcXK5du4aNjU2ZLyEshBBCiKJRFIV79+7h5uaGWi3jfqJ4SZIMXLt2DQ8Pj7IOQwghhBBPIC4uDnd397IOQzxnJEkGbGxsAO2bLG+ZZSGEEEI825KTk/Hw8ND9Py5EcZIkGXQlFra2tpIkCyGEEOWMlEqKkiAFPEIIIYQQQjykTJPkGTNm0LRpU2xsbHB2dqZnz56cOXNGr03btm1RqVR6t7fffluvzeXLl+nSpQuWlpY4Ozvz8ccfk5OTU5qnIoQQQgghniNlWm6xY8cORo4cSdOmTcnJyWHChAl07tyZqKgorKysdO3eeustpkyZortvaWmp+1mj0dClSxdcXFzYu3cv8fHxDBo0CBMTEz7//PNSPR8hhBBCCPF8KNMkedOmTXr3Fy1ahLOzM0eOHKFNmza67ZaWlri4uBR4jC1bthAVFcXWrVupVKkSDRo0YOrUqYwbN45JkyZhampaoucghBBCPI9yc3PJysoq6zAeKSsrC09PT7KyssjIyCjrcEQ5YGJigpGRUZHaPlMX7iUlJQHg6Oiot33ZsmUsXboUFxcXunXrxr///W/daPK+ffvw9fWlUqVKuvYBAQG88847nDp1ioYNG5beCQghhBDPgaysLGJiYsjNzS3rUB4pNzeXn376iRs3bnDz5s2yDkeUE/b29ri4uDz2gs9nJknOzc1lzJgxtGrVinr16um2Dxw4EE9PT9zc3IiMjGTcuHGcOXOGNWvWAHD9+nW9BBnQ3b9+/XqBfWVmZpKZmam7n5ycXNynI4QQQpRLiqIQHx+PkZERHh4ez/QiHRqNhvT0dKpWrVrk0UHx4lIUhbS0NBISEgBwdXV9ZPtnJkkeOXIkJ0+eZPfu3Xrbhw8frvvZ19cXV1dXOnTowIULF6hevfoT9TVjxgwmT578VPEKIYQQz6OcnBzS0tJwc3PTuwboWaTRaAAwNzeXJFkUiYWFBQAJCQk4Ozs/8nXzTHw8HDVqFBs2bGD79u2PXTGnefPmAJw/fx4AFxcXbty4odcm735hdcyffPIJSUlJultcXNzTnoIQQgjxXMhLPOWaHvG8yvvwl52d/ch2ZZokK4rCqFGjWLt2LX///TdeXl6P3ef48ePAP0PkLVu25MSJE7qhc4CwsDBsbW2pW7dugccwMzPTLRwiC4gIIYQQ+ckCHeJ5VdTXdpmWW4wcOZLly5ezfv16bGxsdDXEdnZ2WFhYcOHCBZYvX84rr7yCk5MTkZGRvP/++7Rp04b69esD0LlzZ+rWrcvrr7/OzJkzuX79Op9++ikjR47EzMysLE9PCCGEEEKUU2U6kvzjjz+SlJRE27ZtcXV11d1CQ0MB7Vc9W7dupXPnztSuXZsPP/yQPn368Mcff+iOYWRkxIYNGzAyMqJly5b83//9H4MGDdKbV1kIIYQQ4lk0adIkGjRoUCp9qVQq1q1bVyp95alatSpff/11qfZZXMq83KKg25AhQwDw8PBgx44dJCYmkpGRwblz55g5c2a+8ghPT082btxIWloaN2/eZPbs2RgbPzPXJAohhBCihA0ZMkRvdV4nJycCAwOJjIzUa6fRaJg7dy6+vr6Ym5vj4OBAUFAQe/bsKZO4P/roI7Zt21YmfT/rMjIyGDJkCL6+vhgbG9OzZ89S7f+ZuHDveXUvJYnlm2eXdRhCCCHECyEwMJD4+Hji4+PZtm0bxsbGdO3aVfe4oigMGDCAKVOmMHr0aKKjowkPD8fDw4O2bduW+igrgLW1NU5OTqXeb3mg0WiwsLAgJCSEjh07lnr/kiSXkGs3Yum9ohVfxi9i+6E1ZR2OEEII8dwzMzPDxcUFFxcXGjRowPjx44mLi9MtNLJy5Up+++03lixZwrBhw/Dy8sLPz49ffvmF7t27M2zYMFJTU4vcX9u2bQkJCWHs2LE4Ojri4uLCpEmT9NpcvnyZHj16YG1tja2tLf3799eblevhcovw8HCaNWuGlZUV9vb2tGrVitjYWN3j69evp1GjRpibm1OtWjUmT55MTk7OEz1fcXFx9O/fH3t7exwdHenRoweXLl0CtCsam5ubc/fuXb19Ro8eTfv27XX3d+/eTevWrbGwsMDDw4OQkBCDnsNHsbKy4scff+Stt94qdMaykiRJcglxq+SJu8aKXJWKRUemotE826sWCSGEEAVRFIW0rJwyuSmK8sRxp6SksHTpUry9vXUjtcuXL6dmzZp069YtX/sPP/yQxMREwsLCDOpn8eLFWFlZceDAAWbOnMmUKVN0x8jNzaVHjx7cvn2bHTt2EBYWxsWLF3n11VcLPFZOTg49e/bE39+fyMhI9u3bx/Dhw3WzMezatYtBgwYxevRooqKi+Pnnn1m0aBHTp083KGbQTn8WEBCAjY0Nu3btYs+ePVhbWxMYGEhWVhYdOnTA3t6e1atX6/bRaDSEhoYSHBwMwIULFwgMDKRPnz5ERkYSGhrK7t27GTVqVKH9BgUFYW1tXejNx8fH4HMpKVK4W4Le85/BG/tDOGqRw39XT+Gt/pPKOiQhhBDCIOnZGupO3FwmfUdNCcDStOipyoYNG7C2tgYgNTUVV1dXNmzYoFs18OzZs9SpU6fAffO2nz171qAY69evz2effQZAjRo1+P7779m2bRudOnVi27ZtnDhxgpiYGDw8PABYsmQJPj4+HDp0iKZNm+odKzk5maSkJLp27apbMO3BeCdPnsz48eMZPHgwANWqVWPq1KmMHTtWF0NRhYaGkpuby4IFC3RJ+MKFC7G3tyc8PJzOnTszYMAAli9fztChQwHYtm0bd+/epU+fPoB2cbbg4GDGjBmjO/9vv/0Wf39/fvzxR8zNzfP1u2DBAtLT0wuNy8TExKDzKEmSJJegqofj+XC3DZdIIic7lAsXLbC1sir6AdQqbDp2wrxWzZILUgghhHhOtGvXjh9//BGAO3fu8MMPPxAUFMTBgwfx9PQEeKrR6YLkTUmbx9XVVbd2Q3R0NB4eHroEGaBu3brY29sTHR2dL0l2dHRkyJAhBAQE0KlTJzp27Ej//v11a0NERESwZ88evZFjjUZDRkYGaWlpBq2QGBERwfnz57GxsdHbnpGRwYULFwAIDg6mRYsWXLt2DTc3N5YtW0aXLl2wt7fXHSMyMpJly5bp9lcUhdzcXGJiYgr8QFK5cuUix1jWJEkuQXeWLaNpzF3y3gJZBxZxy8Bj3A1dSbWNGzGyNiC5FkIIIYqJhYkRUVMCyqxvQ1hZWeHt7a27v2DBAuzs7Jg/fz7Tpk2jZs2aREdHF7hv3vaaNQ0bmHp45FOlUpGb++QllgsXLiQkJIRNmzYRGhrKp59+SlhYGC1atCAlJYXJkyfTu3fvfPsVNGr7KCkpKTRu3Fgvwc1TsWJFAJo2bUr16tVZsWIF77zzDmvXrmXRokV6xxgxYgQhISH5jlGlSpUC+w0KCmLXrl2FxuXp6cmpU6cMOpeSIklyCbLt2gVNYiKHYsK5kHkdW00u9Rw7UMW1UpH2v7c9nJz4eG79+AOVPv64hKMVQggh8lOpVAaVPDxLVCoVarVa9/X+gAEDGDhwIH/88Ue+uuQ5c+bg5OREp06diq3/OnXqEBcXR1xcnG40OSoqirt37xa6KjBAw4YNadiwIZ988gktW7Zk+fLltGjRgkaNGnHmzBm9DwJPqlGjRoSGhuLs7PzIlYeDg4NZtmwZ7u7uqNVqunTponeMqKgog+KRcgsBQMWRIwFokzGaz39tTYpaYeDNSN5+ZxsOVqaP3d+qTRuuvP0Otxcvwb5XL8yK4U0hhBBCPK8yMzN1q/feuXOH77//npSUFF1CPGDAAFatWsXgwYOZNWsWHTp0IDk5mXnz5vH777+zatUqrAwpi3yMjh074uvrS3BwMF9//TU5OTm8++67+Pv706RJk3ztY2JidDNtuLm5cebMGc6dO8egQYMAmDhxIl27dqVKlSr07dsXtVpNREQEJ0+eZNq0aQbFFhwczKxZs+jRowdTpkzB3d2d2NhY1qxZw9ixY3F3d9e1mzRpEtOnT6dv3756qxmPGzeOFi1aMGrUKIYNG4aVlRVRUVGEhYXx/fffF9ivoeUWUVFRZGVlcfv2be7du8fx48cBSmUBFpndohTYmdvxZk3tlazh9rdYvnJRkfazadsW6/btISeH61OnFXsdlRBCCPE82bRpk2713ubNm3Po0CFWrVpF27ZtAe3I8sqVK5kwYQJz586lVq1atG7dmtjYWMLDw/UWq7h06RIqlYrw8PAnjkelUrF+/XocHBxo06YNHTt2pFq1arqVhR9maWnJ6dOn6dOnDzVr1mT48OGMHDmSESNGABAQEMCGDRvYsmULTZs2pUWLFsydO1dXb20IS0tLdu7cSZUqVejduzd16tRh6NChZGRk6I0se3t706xZMyIjI3WzWuSpX78+O3bs4OzZs7Ru3ZqGDRsyceJE3NzcDI6nMK+88goNGzbkjz/+IDw8XDfKXhpUimReJCcnY2dnR1JS0iO/cnga6TnpBC17mUSyGHIrl5bdtvJSTdfH7pd15QoXu3RFyczEbc5s7B74mkMIIYQobhkZGcTExODl5WVwnWtp02g0HDt2jIYNG2JkZFj98uNs376d3r17c/HiRRwcHIr12KJsFfU1LiPJpcTC2IJRjUcDsN5BYe/qL8jI1jx2P1N3d5xGDAcg4Ysv0aQUzwTdQgghhCjcxo0bmTBhgiTILzBJkktRz7oD8TR14I6RESqLDfz818Ei7ec0dCgmVaqQc/Mmt+bNK+EohRBCCDFr1iw+LkcXzS9btqxcLNBRnkiSXIqM1caMbvEvAELtzLE6+jlR15Ifu5/azAyXT7X73V6yhAwDJzoXQgghxPOte/fuHD9+vMDbxo0byzq8ckmS5FLWsWpnfG28SFerue54ggUrV6PJfXxZuHWbNlh37AAaDTfkIj4hhBBCPMDGxgZvb+8Cb09yYZ+QJLnUqVQqxrT8FIDVttZ0Sv6eRXtiirSvyyefoDI3J+3QIZI3/FmSYQohhBBCvNAkSS4DzVyb0cq5MTkqFdud7nA27D9cuZP22P1MKlemwttvA3Bj5pdo7t0r6VCFEEIIIV5IkiSXkTHNxwPwl7UV3cyWM23NwSKVUDi++Qamnp5obt7iViETdQshhBBCiKcjSXIZqe1Ym1eqBgLwP0cj/GIW8HvEtcfupzY1pdKn2nKN20uXkXHmTInGKYQQQgjxIpIkuQyNahSCscqIvZYW+FptZeHv27iTmvXY/axbv4xN586g0XB9ylS5iE8IIYQQophJklyGPGw86FezPwDznGwZmf0fpm+MLtK+lcaPQ2VhQfqRIyT//ntJhimEEEKIEjJp0iQaNGhQKn2pVCrWrVtXKn3lqVq1Kl9//XWp9llcJEkuY8P9hmNhZM5JMzMUmzPcOvYHe87feux+Jm5uVHjnHQBuzJyFJvnx8y0LIYQQz6shQ4agUql0NycnJwIDA4mMjNRrp9FomDt3Lr6+vpibm+Pg4EBQUBB79uwpk7g/+ugjtm3bViZ9P+suXbqk9zvNu+3fv79U+pckuYxVsKjA4HpDAPjOwZ5/Gf+PiWuOFmnJaqchgzH18kKTmMjN7+QiPiGEEC+2wMBA4uPjiY+PZ9u2bRgbG9O1a1fd44qiMGDAAKZMmcLo0aOJjo4mPDwcDw8P2rZtW+qjrADW1tY4OTmVer/lydatW3W/1/j4eBo3blwq/UqS/AwYXHcwDmb2XDI14bjdPTokreHrreceu5/K1JRK91fiu7NsGRmnT5d0qEIIIcQzy8zMDBcXF1xcXGjQoAHjx48nLi6OmzdvArBy5Up+++03lixZwrBhw/Dy8sLPz49ffvmF7t27M2zYMFJTU4vcX9u2bQkJCWHs2LE4Ojri4uLCpEmT9NpcvnyZHj16YG1tja2tLf379+fGjRu6xx8utwgPD6dZs2ZYWVlhb29Pq1atiI2N1T2+fv16GjVqhLm5OdWqVWPy5Mnk5OQ80fMVFxdH//79sbe3x9HRkR49enDp0iUAtmzZgrm5OXfv3tXbZ/To0bRv3153f/fu3bRu3RoLCws8PDwICQkx6DksCicnJ93v1cXFBRMTk2I9fmEkSX4GWJtaM7z+CAB+tLdjuMla1u06UqQlq61btcImMBByc7UX8eXmlnS4QgghXiSKAlmpZXN7igvTU1JSWLp0Kd7e3rqR2uXLl1OzZk26deuWr/2HH35IYmIiYWFhBvWzePFirKysOHDgADNnzmTKlCm6Y+Tm5tKjRw9u377Njh07CAsL4+LFi7z66qsFHisnJ4eePXvi7+9PZGQk+/btY/jw4ahUKgB27drFoEGDGD16NFFRUfz8888sWrSI6dOnGxQzQHZ2NgEBAdjY2LBr1y727NmDtbU1gYGBZGVl0aFDB+zt7Vm9erVuH41GQ2hoKMHBwQBcuHCBwMBA+vTpQ2RkJKGhoezevZtRo0YV2m9QUBDW1taF3nx8fPLt0717d5ydnXn55Zf5vRSvwzIutZ7EI/Wv1Z+lUf/jauo11tmZ8vHtX/lkjSdr3m2FkVr1yH0rjR9Hys6dpB89StL637Hv1bN0ghZCCPH8y06Dz93Kpu8J18DUqsjNN2zYgLW1NQCpqam4urqyYcMG1GrtmODZs2epU6dOgfvmbT979qxBIdavX5/PPvsMgBo1avD999+zbds2OnXqxLZt2zhx4gQxMTF4eHgAsGTJEnx8fDh06BBNmzbVO1ZycjJJSUl07dqV6tWr68UFMHnyZMaPH8/gwYMBqFatGlOnTmXs2LG6GIoqNDSU3NxcFixYoEvCFy5ciL29PeHh4XTu3JkBAwawfPlyhg4dCsC2bdu4e/cuffr0AWDGjBkEBwczZswY3fl/++23+Pv78+OPP2Jubp6v3wULFpCenl5oXA+OEltbWzNnzhxatWqFWq1m9erV9OzZk3Xr1tG9e3eDzvdJSJL8jDA1MmVkw1FM2D2B/9rZ8te9PSy7eohFeysz9GWvR+5r4uJCxZHvkjBrNgmzZmHToT1GtralFLkQQgjxbGjXrh0//vgjAHfu3OGHH34gKCiIgwcP4unpCVDs06bWr19f776rqysJCQkAREdH4+HhoUuQAerWrYu9vT3R0dH5kmRHR0eGDBlCQEAAnTp1omPHjvTv3x9XV1cAIiIi2LNnj97IsUajISMjg7S0NCwtLYscd0REBOfPn8fGxkZve0ZGBhcuXAAgODiYFi1acO3aNdzc3Fi2bBldunTB3t5ed4zIyEiWLVum219RFHJzc4mJiSnwA0nlypWLHGOFChX44IMPdPebNm3KtWvXmDVrliTJL5pXvF5h4amFnLtzjv/Y2TIpZzFDt/swqKUnJkaProxxfP117q5ZS9aFC9z85ltc/v1pKUUthBDiuWZiqR3RLau+DWBlZYW3t7fu/oIFC7Czs2P+/PlMmzaNmjVrEh1d8FSredtr1qxpWIgP1ceqVCpyn6L0ceHChYSEhLBp0yZCQ0P59NNPCQsLo0WLFqSkpDB58mR69+6db7+CRm0fJSUlhcaNG+sluHkqVqwIaJPS6tWrs2LFCt555x3Wrl3LokWL9I4xYsQIQkJC8h2jSpUqBfYbFBTErl27Co3L09OTU6dOFfp48+bNDS6JeVKSJD9DjNRGjGk0hpHbRrLczoaByZeZnDWL+OXrqOL46D8UKsClUwUuX7jAneXLsHeOxdzHB5oNB1PD/sgIIYQQOiqVQSUPzxKVSoVardZ9vT9gwAAGDhzIH3/8ka8uec6cOTg5OdGpU6di679OnTrExcURFxenG02Oiori7t271K1bt9D9GjZsSMOGDfnkk09o2bIly5cvp0WLFjRq1IgzZ87ofRB4Uo0aNSI0NBRnZ2dsH/Htc3BwMMuWLcPd3R21Wk2XLl30jhEVFWVQPIaUWxTk+PHjupH1kiZJ8jOmdeXWNHJuxNGEo/zoYMfkWwfhwkG48Ph9rQDbKvYkX7bk+pK/8ey4ElVCFPT6WftHTgghhHiOZWZmcv36dUBbbvH999+TkpKiS4gHDBjAqlWrGDx4MLNmzaJDhw4kJyczb948fv/9d1atWoWVVfF9IOjYsSO+vr4EBwfz9ddfk5OTw7vvvou/vz9NmjTJ1z4mJkY304abmxtnzpzh3LlzDBo0CICJEyfStWtXqlSpQt++fVGr1URERHDy5EmmTZtmUGzBwcHMmjWLHj16MGXKFNzd3YmNjWXNmjWMHTsWd3d3XbtJkyYxffp0+vbti5mZme4Y48aNo0WLFowaNYphw4ZhZWVFVFQUYWFhfP99wVPTGlJusXjxYkxNTWnYsCEAa9as4b///S8LFiww6FyflCTJzxiVSsX7jd/n9b9eZ52NDarE5jhmW/BmKy+szR//63L2SyNl0nrSEyHpkhX2qlCo0gKavFkK0QshhBBlZ9OmTbpRRhsbG2rXrs2qVato27YtoP0/duXKlXz99dfMnTuXd999F3Nzc1q2bEl4eDitWrXSHevSpUt4eXmxfft23f6GUqlUrF+/nvfee482bdqgVqsJDAzku+++K7C9paUlp0+fZvHixSQmJuLq6srIkSMZMUI7A1ZAQAAbNmxgypQpfPnll5iYmFC7dm2GDRtmcGyWlpbs3LmTcePG0bt3b+7du0flypXp0KGD3siyt7c3zZo14+DBg/lWzqtfvz47duzgX//6F61bt0ZRFKpXr17o7B1PYurUqcTGxmJsbEzt2rUJDQ2lb9++xXb8R1EpxV3BXg4lJydjZ2dHUlLSI79yKE0hf4ewPW47JrkVuXe9DSOb9WNMh/zTohQk8b8LSZg5E7WlGVZOd0GlhqqtwcKh6AGoVNgGBWEb0PnJTkAIIUS5lJGRQUxMDF5eXgbXuZY2jUbDsWPHaNiwIUZGRsV67O3bt9O7d28uXryIg4MB/3+KZ15RX+MykvyM+qDxBxxPOM6dzJuYu63mv7FbMD8+mAG1X8Xe3P6R+zq+/n8krV1D5rnz3Euz0G68fNDgGFL37sWmYwdUxfyHRwghhHjWbdy4kQkTJkiC/AKTkWSezZFkgJSsFFacXsU3h/4LxncBMDcyp6d3TwbVHYSHrUeh+2Zfv05KeDhKZirsngtpieBcV1t2UYT65JtzviI3NRWvtWswL2ROSSGEEM8fGUkun5YtW6Yry3jY42aMeNHISPJzwNrUmmH13+DC+QasOr2Riu77SNHEsuLMCkLPhNLRsyODfQbjV9Ev374mLi44DBigvdO5CSzoBJrDUOUVaP3hY/tOCQ8ndecu0g4dkiRZCCGEeMZ1796d5s2bF/hYaS3j/LyRZanLgdeaeZGT3IDEs+/ytf+PvFz5ZRQUwmLD+L+N/8egvwax7fI2NLmagg/g6gddZmt//nsaxOx8bJ+WTbQTnKcdOlxcpyGEEEKIEmJjY4O3t3eBt7yFVIRhJEkuB3wr21HH1ZasHIW4q5X5seOPrOm+hp7ePTFWG3Ms4Rhjto+hx/oerDyzkvScAuYfbPg6NAgGJRd+exOS4x/Zp2VT7dQ0aYcPF/vqREIIIYQQzzpJkssBlUrFgKba+uMVh+JQFIUaDjWY2moqW/psYZjvMGxMbYhNjmXq/qkE/BbAvOPzSExPfPAg8MpsqFQPUm/Cb2+AJrvQPi18fFCZm6O5c4esC0WYpFkIIYQQ4jkiSXI50bNBZUyN1Zy+fo/IK0m67RUtKzK60Wi29t3K+GbjqWxdmTuZd/gp4ie6ru3KxbsX/zmIqSX0XwJmtnB5H2ybXGh/KlNTLBo0ALSjyUIIIYQQLxJJkssJO0sTguq5ABB6OC7f45YmlgTXCWZDrw3M9p+Nl50XKdkprDizQr+hU3XoMU/7897vIPqPQvvUlVxIXbIQQgghXjCSJJcjr94vufj9+DXSsnIKbGOsNiagagAfN/kYgM2XNpOd+1BZRd3u0HKU9ud170JiweUU/1y8d0jqkoUQQgjxQpEkuRxp4eWEp5MlKZk5/Bn56AvvWrq1xNHckdsZtzkQfyB/g46TwKMFZCbDysGQnf9iPwu/+qhMTMhJSCA7Lv/otRBCCCGezqRJk2hwv7yxpKlUKtatW1cqfeWpWrVqvuWsywtJkssRtVpF/yba0eSVBZRcPChvRBngz4t/5m9gZAL9FoJVRbhxAjZ+lL8/c3PM69cHtKPJQgghxLNqyJAhqFQq3c3JyYnAwEAiIyP12mk0GubOnYuvry/m5uY4ODgQFBTEnj17yiTujz76iG3btpVJ38+6jIwMhgwZgq+vL8bGxvTs2bPAduHh4TRq1AgzMzO8vb1ZtGhRsfQvSXI507exO2oVHLp0h/MJKY9s+4rXKwBsu7yNtOy0/A1s3aDPAlCp4dhSOPq/fE0sm0hdshBCiPIhMDCQ+Ph44uPj2bZtG8bGxnTt2lX3uKIoDBgwgClTpjB69Giio6MJDw/Hw8ODtm3blvooK4C1tTVOTk6l3m95oNFosLCwICQkhI4dOxbYJiYmhi5dutCuXTuOHz/OmDFjGDZsGJs3b37q/iVJLmcq2ZrTvrYz8PjRZL+KflS2rkx6Tjo7ruwouFG1ttBugvbnjR9BvP4nbsum9+uSZYYLIYQQzzgzMzNcXFxwcXGhQYMGjB8/nri4OG7evAnAypUr+e2331iyZAnDhg3Dy8sLPz8/fvnlF7p3786wYcNITU0tcn9t27YlJCSEsWPH4ujoiIuLC5MmTdJrc/nyZXr06IG1tTW2trb079+fGzdu6B5/uNwiPDycZs2aYWVlhb29Pa1atSI2Nlb3+Pr162nUqBHm5uZUq1aNyZMnk5NT8HVKjxMXF0f//v2xt7fH0dGRHj16cOnSJQC2bNmCubk5d+/e1dtn9OjRtG/fXnd/9+7dtG7dGgsLCzw8PAgJCTHoOXwUKysrfvzxR9566y1cXFwKbPPTTz/h5eXFnDlzqFOnDqNGjaJv377MnTv3qfuXJLkcyiu5WHP0Clk5uYW2U6lUutHkAksu8rz8IdToDDkZsHIQZPwzxZxFgwZgZET2lStkxz+6DloIIcTzR1EU0rLTyuT2NBeNp6SksHTpUry9vXUjtcuXL6dmzZp069YtX/sPP/yQxMREwsLCDOpn8eLFWFlZceDAAWbOnMmUKVN0x8jNzaVHjx7cvn2bHTt2EBYWxsWLF3n11VcLPFZOTg49e/bE39+fyMhI9u3bx/Dhw1GpVADs2rWLQYMGMXr0aKKiovj5559ZtGgR06dPNyhmgOzsbAICArCxsWHXrl3s2bMHa2trAgMDycrKokOHDtjb27N69WrdPhqNhtDQUIKDgwG4cOECgYGB9OnTh8jISEJDQ9m9ezejRo0qtN+goCCsra0Lvfn4+Bh0Hvv27cs3yhwQEMC+ffsMOk5BjJ/6CKLUtavtTEUbM27ey+Tv0zcIrOdaaNuu1boy/8R89lzdw92Mu9ib2+dvpFZDr5/hZ3+4E6Od8eLVpaBSYWRthXndumScOEHa4cPYFfCHRQghxPMrPSed5subl0nfBwYewNLEssjtN2zYgLW1NQCpqam4urqyYcMG1GrtmODZs2epU6dOgfvmbT979qxBMdavX5/PPvsMgBo1avD999+zbds2OnXqxLZt2zhx4gQxMTF4eGgHuJYsWYKPjw+HDh2i6f1va/MkJyeTlJRE165dqV69ul5cAJMnT2b8+PEMHjwYgGrVqjF16lTGjh2ri6GoQkNDyc3NZcGCBbokfOHChdjb2xMeHk7nzp0ZMGAAy5cvZ+jQoQBs27aNu3fv0qdPHwBmzJhBcHAwY8aM0Z3/t99+i7+/Pz/++CPm5ub5+l2wYAHp6QWsDHyfiYmJQedx/fp1KlWqpLetUqVKJCcnk56ejoWFhUHHe5CMJJdDJkZq+jZ2B7Qr8D1KNftq1HGsQ46Sw5bYLYU3tHSE/ovAyBROb4B93//zUF7JhdQlCyGEeIbl1aUeP36cgwcPEhAQQFBQkF65QnFPaVr//gXueVxdXUlISAAgOjoaDw8PXYIMULduXezt7YmOjs53LEdHR4YMGUJAQADdunXjm2++If6Bb3EjIiKYMmWK3sjrW2+9RXx8PGlpBVx79AgRERGcP38eGxsb3bEcHR3JyMjgwv2VdoODgwkPD+fatWsALFu2jC5dumBvb687xqJFi/TiCQgIIDc3l5iYmAL7rVy5Mt7e3oXePD09DTqPkiQjyeVU/yYe/Bh+gZ1nb3Ltbjpu9oV/UnrF6xWib0fz58U/6V+rf+EHrdwYAmfAnx9C2GdgagVWFbF0yeU2kLZnO0Q3Kf6TKUjF2lChRun0JYQQolAWxhYcGFjAVKKl1LchrKys8Pb21t1fsGABdnZ2zJ8/n2nTplGzZs0Ck1NAt71mzZoG9fnwyKdKpSI3t/BSyMdZuHAhISEhbNq0idDQUD799FPCwsJo0aIFKSkpTJ48md69e+fbr6BR20dJSUmhcePGLFu2LN9jFStWBKBp06ZUr16dFStW8M4777B27Vq9mSNSUlIYMWIEISEh+Y5RpUqVAvsNCgpi165dhcbl6enJqVOninweLi4uejXeADdu3MDW1vapRpFBkuRyy6uCFc29HDkQc5vfjlwhpEPhCWWgVyBfHfmKowlHuZZyDTdrt8IP3GQoXN4PJ1bBhvcBsMxSAS5kXb1JzuJBGJs/+ZvfILW7QusPoXKj0ulPCCFEPiqVyqCSh2eJSqVCrVbrvt4fMGAAAwcO5I8//shXlzxnzhycnJzo1KlTsfVfp04d4uLiiIuL040mR0VFcffuXerWrVvofg0bNqRhw4Z88skntGzZkuXLl9OiRQsaNWrEmTNn9D4IPKlGjRoRGhqKs7Mztra2hbYLDg5m2bJluLu7o1ar6dKli94xoqKiDIqnuMstWrZsycaNG/W2hYWF0bJlS4OOUxBJksuxAc08OBBzm5WH4xjVzhu1WlVgOxcrF5q4NOHQ9UNsjNnIMN9hhR9UpYJu34CpNSRoP1UbAWYV48m8mU1abj1sPUr4j6UmC64d05Z9nN4A1TtAm4/A86WS7VcIIUS5lpmZyfXr1wG4c+cO33//PSkpKbqEeMCAAaxatYrBgwcza9YsOnToQHJyMvPmzeP3339n1apVWFlZFVs8HTt2xNfXl+DgYL7++mtycnJ499138ff3p0mT/N/MxsTE6GbacHNz48yZM5w7d45BgwYBMHHiRLp27UqVKlXo27cvarWaiIgITp48ybRp0wyKLTg4mFmzZtGjRw+mTJmCu7s7sbGxrFmzhrFjx+Lu7q5rN2nSJKZPn07fvn0xMzPTHWPcuHG0aNGCUaNGMWzYMKysrIiKiiIsLIzvv/++wH4rV65sUJxRUVFkZWVx+/Zt7t27x/HjxwF0M4K8/fbbfP/994wdO5Y333yTv//+m5UrV/Lnn4+YsKCoFKEkJSUpgJKUlFTWoRgkPStHqffZJsVz3AZl19mbj2z725nflHqL6im91vd6or7ip05TomrVVuKnTH2i/Q2WcFpRVg9XlEkOivKZrfb23yBFObdVUXJzSycGIYR4AaWnpytRUVFKenp6WYfyWDk5OcqhQ4eUnJwcZfDgwQqgu9nY2ChNmzZVfvvtN719srOzlVmzZik+Pj6KqampYmtrqwQEBCi7d+/WaxcTE6MAyvbt2wvt39/fXxk9erTeth49eiiDBw/W3Y+NjVW6d++uWFlZKTY2Nkq/fv2U69ev6x7/7LPPFD8/P0VRFOX69etKz549FVdXV8XU1FTx9PRUJk6cqGg0Gl37TZs2KS+99JJiYWGh2NraKs2aNVN++eWXIj1fgLJ27Vrd/fj4eGXQoEFKhQoVFDMzM6VatWrKW2+9lS8fatasmQIof//9d75jHjx4UOnUqZNibW2tWFlZKfXr11emT5+ue9zT01OZO3dukeIriKenp97vNe/2oO3btysNGjRQTE1NlWrVqikLFy585DGL+hpXKUoxV7CXQ8nJydjZ2ZGUlPTIrxyeRf9ed5L/7Y+la31Xvh9YeFlCUmYS7Va2Izs3m9XdV1PTwbCaq+RNm7k6ZgxmtWpRbf26p4zaALdjYM/XcHy5doQZwK0RtPkYagZqZ+YQQghRbDIyMoiJicHLy8vgOtfSptFoOHbsGA0bNsTIyKhYj719+3Z69+7NxYsXcXBwKNZji7JV1Ne4ZBjl3KtNtTVOW07d4E5qVqHt7MzsaF25NfCYOZMLYdlU+7VQ5tmzaB6aWLxEOXppyz9GR0CLd8HYAq4dhRWvwU8vw4nfIFdTevEIIYR4IWzcuJEJEyZIgvwCkyS5nKtX2Q4fN1uyNLmsPXb1kW27VNMW2/8V8xe5imEX3xk7OWFarRooCmlHjz5xvE/M1k0788aYE/DyB2BqAwmnYPVQmNdMu6y2Jrv04xJCCPFcmjVrFh9//HFZh1Fky5YtK7YFOoSWJMnPgQH3R5NDD8U9cv7HNu5tsDKxIj41nmMJxwzux/L+RQZlOl+ydUXo+Bm8fwLa/QssHCDxPKwfCd82gkMLIDuj7OITQgghykD37t11c0Q/fHt49gdRNJIkPwe6N6iMmbGaMzfucTzubqHtzI3N6VhFu3TjxouGv2H+WVTk0BPFWawsHMB/LIw5CZ2mgpUzJF3WzvH8jZ92GjshhBDiBWFjY1MuFugoTyRJfg7YWZjQxVe7NPXKw49ege+Vaq8AsDl2M9kGlifk1SVnREWhSUl9gkhLgJk1tAqBMZHwymyw84CU67DqDUi7XdbRCSGEEKKckiT5OdH/fsnF78evkZqZU2i75i7NqWBRgaTMJPZc22NQHyYuLph4eEBuLunHyqAu+VFMLKDZWzDyADjVgHvX4I/RIJO3CCGEEOIJSJL8nGju5UhVJ0tSszT8GRlfaDsjtRGBVQOBJyy5eBbqkh/F1Ar6LAC1CUT/rr2gTwghhBDCQGWaJM+YMYOmTZtiY2ODs7MzPXv25MyZM3ptMjIyGDlyJE5OTlhbW9OnT598a3RfvnyZLl26YGlpibOzMx9//DE5OYWPpj6PVCoVrzbVrpMe+piSi7xZLrbHbSc127CyCV2SfPgZTZIB3BpA+0+1P/81DhIvlGk4QgghhCh/yjRJ3rFjByNHjmT//v2EhYWRnZ1N586dSU39J3F7//33+eOPP1i1ahU7duzg2rVr9O7dW/e4RqOhS5cuZGVlsXfvXhYvXsyiRYuYOHFiWZxSmerTuDJGahVHYu9w7sa9Qtv5OPngaetJhiaDvy//bVAfls20F++lnzhB7iPWXi9zL4VA1daQnQpr3pLp4YQQQghhkDJNkjdt2sSQIUPw8fHBz8+PRYsWcfnyZY4cOQJAUlIS//nPf/jqq69o3749jRs3ZuHChezdu5f9+7WzF2zZsoWoqCiWLl1KgwYNCAoKYurUqcybN4+srMIX13geOduY0762M6CdDq4wKpWKV7y0F/D9GWPYwiIm7u4YV6oE2dmkR0Q+ebAlTa2GXj+BuR1cPQI7vizriIQQQoh8Jk2aRIMGDUqlL5VKxbp160qlrzxVq1bl66+/LtU+i8szVZOclJQEgKOjIwBHjhwhOzubjh076trUrl2bKlWqsG/fPgD27duHr68vlSpV0rUJCAggOTmZU6dOlWL0z4a8OZPXHLtKVk7hC4bklVzsv7afxPTEIh9fpVKVj5ILADt37Wp9ALvmQOzeso1HCCFEiRkyZAgqlUp3c3JyIjAwkMhI/QEdjUbD3Llz8fX1xdzcHAcHB4KCgtizx7CL2YvLRx99xLZt28qk72ddeHg4PXr0wNXVFSsrKxo0aMCyZcvytVu1ahW1a9fG3NwcX1/fYpsX+plJknNzcxkzZgytWrWiXr16AFy/fh1TU1Ps7e312laqVInr16/r2jyYIOc9nvdYQTIzM0lOTta7PS/8a1bE2caM26lZbI2+UWg7T1tP6jnVQ6No2Hxps0F9PFPzJT+OTy9oEAxKLqwZDul3yzoiIYQQJSQwMJD4+Hji4+PZtm0bxsbGdO3aVfe4oigMGDCAKVOmMHr0aKKjowkPD8fDw4O2bduW+igrgLW1NU5OTqXeb3mwd+9e6tevz+rVq4mMjOSNN95g0KBBbNiwQa/Na6+9xtChQzl27Bg9e/akZ8+enDx58qn7f2aS5JEjR3Ly5ElWrFhR4n3NmDEDOzs73c3Dw6PE+ywtxkZq+jVxB2DFI0ou4J85kw0tucibLzn9+HGU8lDSEvQlOFSFpDjY+FFZRyOEEKKEmJmZ4eLigouLCw0aNGD8+PHExcVx8+ZNAFauXMlvv/3GkiVLGDZsGF5eXvj5+fHLL7/QvXt3hg0bpndd1OO0bduWkJAQxo4di6OjIy4uLkyaNEmvzeXLl+nRowfW1tbY2trSv39/vQkIHi63CA8Pp1mzZlhZWWFvb0+rVq2IjY3VPb5+/XoaNWqEubk51apVY/LkyU88WUFcXBz9+/fH3t4eR0dHevTowaVLlwBtOau5uTl3797V22f06NG0b99ed3/37t20bt0aCwsLPDw8CAkJMeg5fJQJEyYwdepUXnrpJapXr87o0aMJDAxkzZo1ujbffPMNgYGBfPzxx9SpU4epU6fSqFEjvv/++6fu/5lIkkeNGsWGDRvYvn077u7uuu0uLi5kZWXl+wXduHEDFxcXXZuHZ7vIu5/X5mGffPIJSUlJultc3KOTyfKmfxNt0r/r3E3ibqcV2i6waiBqlZrIm5HE3Sv6c2BarRpGjo4omZmkF8MntRJnZgO954PKCE6sgsiVZR2REEKUG4qikJuWViY35Snmuk9JSWHp0qV4e3vrRmqXL19OzZo16datW772H374IYmJiYSFhRnUz+LFi7GysuLAgQPMnDmTKVOm6I6Rm5tLjx49uH37Njt27CAsLIyLFy/y6quvFnisnJwcevbsib+/P5GRkezbt4/hw4ejUqkA2LVrF4MGDWL06NFERUXx888/s2jRIqZPn25QzADZ2dkEBARgY2PDrl272LNnD9bW1gQGBpKVlUWHDh2wt7dn9erVun00Gg2hoaEEBwcDcOHCBQIDA+nTpw+RkZGEhoaye/duRo0aVWi/QUFBWFtbF3rz8fF5ZNxJSUm6slzQlt0+WJYL2rLbvLLcp2H81Ed4Coqi8N5777F27VrCw8Px8vLSe7xx48aYmJiwbds2+vTpA8CZM2e4fPkyLVu2BKBly5ZMnz6dhIQEnJ21F62FhYVha2tL3bp1C+zXzMwMMzOzEjyzsuXpZMXL3hXYff4WE9ef5L9DmureYA+qaFmRZi7N2B+/n40XNzLCb0SRjp9Xl3xvyxbSDh3GslGj4j6F4ufRDPzHQfjn2qWrPZqDgyzTKYQQj6Okp3OmUeMy6bvW0SOoLC2L3H7Dhg1YW1sDkJqaiqurKxs2bECt1o4Jnj17ljp16hS4b972s2fPGhRj/fr1+eyzzwCoUaMG33//Pdu2baNTp05s27aNEydOEBMTo/vWesmSJfj4+HDo0CGa3i9fzJOcnExSUhJdu3alevXqenEBTJ48mfHjxzN48GAAqlWrxtSpUxk7dqwuhqIKDQ0lNzeXBQsW6HKEhQsXYm9vT3h4OJ07d2bAgAEsX76coUOHArBt2zbu3r2ry8lmzJhBcHAwY8aM0Z3/t99+i7+/Pz/++CPm5ub5+l2wYAHpj5gdy8TEpNDHVq5cyaFDh/j555912woruy2s5NYQZTqSPHLkSJYuXcry5cuxsbHh+vXrXL9+Xffk2dnZMXToUD744AO2b9/OkSNHeOONN2jZsiUtWrQAoHPnztStW5fXX3+diIgINm/ezKeffsrIkSOf60T4cf7dtS6mRmq2n7n5yKWq8y7g+zPmT4M+sZebi/ce1Pp+cpyZrK1P1rxYc2kLIcTzrl27dhw/fpzjx49z8OBBAgICCAoK0itXeJrR6YLUr19f776rqysJCQkAREdH4+HhoVfWWbduXezt7YmOjs53LEdHR4YMGUJAQADdunXjm2++IT7+nwXCIiIimDJlit7I61tvvUV8fDxpaYV/c1yQiIgIzp8/j42Nje5Yjo6OZGRkcOGCdn2B4OBgwsPDuXbtGgDLli2jS5cuumvFIiIiWLRokV48AQEB5ObmEhMTU2C/lStXxtvbu9Cbp2fBA1jbt2/njTfeYP78+Y8dbS4uZTqS/OOPPwLamp4HLVy4kCFDhgAwd+5c1Go1ffr0ITMzk4CAAH744QddWyMjIzZs2MA777xDy5YtsbKyYvDgwUyZMqW0TuOZVMvFhg8712TGX6eZ8kcUL1WvgIdj/k/jHat0ZOq+qcQkxXD69mnqOBX8CfthurrkI0dQcnJQGZfpS6lojIyh18/wU2uI2w+754L/x2UdlRBCPNNUFhbUOnqkzPo2hJWVFd7e3rr7CxYswM7Ojvnz5zNt2jRq1qxZYHIK6LbXrFnToD4fHvlUqVTk5hY+u9TjLFy4kJCQEDZt2kRoaCiffvopYWFhtGjRgpSUFCZPnqy3XkSegkZtHyUlJYXGjRsXOFtExYoVAWjatCnVq1dnxYoVvPPOO6xdu5ZFixbpHWPEiBGEhITkO0aVKlUK7DcoKIhdu3YVGpenp2e+2cl27NhBt27dmDt3LoMGDdJ7rLCy28JKbg1R5uUWj2Nubs68efOYN29eoW08PT2LbbqP58mw1tXYGn2DQ5fu8NGqCH59qwVqtX7ZhbWpNf4e/oTFhvHnxT+LnCSb1ayJ2taW3ORkMqJPY+FbryROofg5ekGX2bB2BITPgOrtwb1svkYUQojyQKVSGVTy8CxRqVSo1WrdN9QDBgxg4MCB/PHHH/nqkufMmYOTkxOdOnUqtv7r1KlDXFwccXFxutHkqKgo7t69W2hJKEDDhg1p2LAhn3zyCS1btmT58uW0aNGCRo0acebMGb0PAk+qUaNGhIaG4uzsjK2tbaHtgoODWbZsGe7u7qjVarp06aJ3jKioKIPiMbTcIjw8nK5du/Lll18yfPjwfO1btmzJtm3bdCUfoC27zSvLfRrPxIV7omQYqVXM7ueHpakRB2Jus3DvpQLb5ZVc/BXzF5pcTZGOrTIy0tUil6uSC4D6r0K9PqBoYPVQyEwp64iEEEIUg8zMTF3pZnR0NO+99x4pKSm6hHjAgAH06tWLwYMH85///IdLly4RGRnJiBEj+P3331mwYAFWVlbFFk/Hjh3x9fUlODiYo0ePcvDgQQYNGoS/vz9N7pctPigmJoZPPvmEffv2ERsby5YtWzh37pyuLnnixIksWbKEyZMnc+rUKaKjo1mxYgWffvqpwbEFBwdToUIFevTowa5du4iJiSE8PJyQkBCuXLmi1+7o0aNMnz6dvn376pWyjhs3jr179zJq1CiOHz/OuXPnWL9+/SMv3DOk3GL79u106dKFkJAQ+vTpo/vd3r59W9dm9OjRbNq0iTlz5nD69GkmTZrE4cOHHxlDUUmS/JzzdLJiwivaN9fMTac5n5A/IWxduTU2pjYkpCdw5EbRv1LLK7koF/MlP0ilgi5fga073ImBTePKOiIhhBDFYNOmTbi6uuLq6krz5s05dOgQq1at0pV1qlQqVq5cyYQJE5g7dy61atWidevWxMbGEh4eTs+ePXXHunTpEiqVivDw8CeOR6VSsX79ehwcHGjTpg0dO3akWrVqhIaGFtje0tKS06dP06dPH2rWrMnw4cMZOXIkI0ZoL6wPCAhgw4YNbNmyhaZNm9KiRQvmzp1baB3vo1haWrJz506qVKlC7969qVOnDkOHDiUjI0NvZNnb25tmzZoRGRmpm9UiT/369dmxYwdnz56ldevWNGzYkIkTJ+Lm5mZwPAVZvHgxaWlpzJgxQ/d7dXV11Ss3eemll1i+fDm//PILfn5+/Pbbb6xbt0635sbTUCnFXcFeDiUnJ2NnZ0dSUtIjv3IorxRFYdB/D7Lr3C383O1Y/c5LGBvpfz6atHcSq8+tpneN3kx+aXKRjpseGcml/q+itrOj5r69qNTl7DPXpd2wqCugQL/F4NOzrCMSQogyl5GRQUxMDF5eXgbXuZY2jUbDsWPHaNiwIUZGRsV67O3bt9O7d28uXryIg4NDsR5blK2ivsbLWVYjnoRKpWJm3/rYmBsTcSWJH8Iv5GuTV3IRdimMLE3RFggxr1MHlaUluUlJZJ47V6wxl4qqL8PL72t//mM0JF0t23iEEEI8MzZu3MiECRMkQX6BSZL8gnC1s2BKD+2UKd9uO8fJq0l6jzeu1BhnS2fuZd9j15XCrzp9kMrEBMuGDQFIO1TO6pLztP0EXBtAxl1Y9zY8xRXJQgghnh+zZs3i44/LzwxIy5Yte+IFOkTBJEl+gfRsUJlAHxdychU+WHmczJx/LtJTq9S84mX4MtW6uuTydvFeHmNT6LMATCwhZifse/plLIUQQojS1r17d90c0Q/fZAawJyNJ8gtEpVIxvVc9KlibcvZGCl+F6a8qlJck74jbwb2se0U6pm5RkUOHin2C9lJToQYEztD+vG0KxEeUbTxCCCGEgWxsbAxeoEM8WjlYAUIUJydrMz7v5cvw/x3hl50X6VSnEk2qatdAr+1Ym2p21biYdJGtsVvpVaPXY49nXr8+KlNTNImJZMVcwqya12P3eSY1Ggxnt8CZP+E/ncH0KaYAMrHU3kyt/rnp7luD6f2fTfIet7y/3QqMzLSzb7xoLB3BsVpZRyGEEELoSJL8Aurs40KfRu6sPnqFD1dFsDGkNVZmxqhUKrpU68J3x75jY8zGIiXJalNTLPz8SDt0iLTDh8pvkqxSQffv4OcISL4CORlPcbDEYgvrhTJ4A3i1LusohBBCCECS5BfWZ93rsu/CLWIT05jxVzTTevoCEOQVxHfHvuPg9YPcTLtJRcuKjz2WZdMm2iT50GEc+vcv6dBLjpUTjDwASVce37YwSi7kpENWGmSlQnaq9t+sNMhKub8t7+e0h+6nQk5m8Z1PeZF+FzKT4GK4JMlCCCGeGZIkv6BszU2Y1c+P4AUHWLr/Mp3rutCmZkU8bDzwq+hHxM0I1p5fSy/vx48mZ/lq17lPObifhNQEVMVQLuBo7oiRunjnvCwSM2twrl36/b7IDs6HjR/B9ciyjkQIIYTQkST5BdbKuwKDW3qyeF8sY3+LZPOYNthZmvCK1ytE3Izgu2Pf8d2x7x57HLMshYVqML5xkwEL2nPT/umT5LpOdVnRZUWxJNziGefqp/03XpJkIYQQzw6Z3eIFNz6oDl4VrLienMHkP04B2oVFqtpWxUhlVKRbjpkxF121yWy9OFWR9yvsBhCVGEXU7agye15EKXKuC6gg5TqkJJR1NEII8URUKhXr1q0r6zDKTNWqVfn6669195+H50NGkl9wFqZGzO7nR7+f9rLm2FU6+7gQWM+FP3r9YdBxEm7OIXH+AsabdefbQdOfKqYPwj8gLDaM7Ze34+MkE6A/98yswckbEs9pSy68O5Z1REKIcmjIkCEsXrwYAGNjY9zd3enXrx9Tpkx55pfXfhoPnjeAo6MjTZs2ZebMmdSvX7/M4oqPjy/3qxXKSLKgsacDI/yrA/CvtSe4lWL4xWP/zJf89IuKtPVoC0B4XPhTH0uUE673/5BLyYUQ4ikEBgYSHx/PxYsXmTt3Lj///DOfffZZWYdV4vLOOz4+nm3btmFsbEzXrl3LNCYXFxfMzMzKNIanJUmyAGBMxxrUdrEhMTWLCWtOGLwwiEWjRqBWk335Mtk3bjxVLG0qt0GtUnPmzhmuplx9qmOJcsJFO7sK10+UbRxCiHLNzMwMFxcXPDw86NmzJx07diQsLEz3eGJiIq+99hqVK1fG0tISX19ffv31V71jtG3blpCQEMaOHYujoyMuLi5MmjRJr825c+do06YN5ubm1K1bV6+PPCdOnKB9+/ZYWFjg5OTE8OHDSUlJ0T0+ZMgQevbsyeeff06lSpWwt7dnypQp5OTk8PHHH+Po6Ii7uzsLFy4s8nm7uLjQoEEDxo8fT1xcHDdv3tS1GTduHDVr1sTS0pJq1arx73//m+zsbN3jERERtGvXDhsbG2xtbWncuDGHH1hNd/fu3bRu3RoLCws8PDwICQkhNTW10JgeLLe4dOkSKpWKNWvW0K5dOywtLfHz82Pfvn16+xjaR0mTJFkAYGZsxFf9G2BipGJL1A3WHDUsOTWyscG8tnZWiKddotre3J6Gzg0BGU1+YbjcH0mWGS6EeGZlZ2oKveVka4reNqtobZ/WyZMn2bt3L6amprptGRkZNG7cmD///JOTJ08yfPhwXn/9dQ4ePKi37+LFi7GysuLAgQPMnDmTKVOm6BLh3NxcevfujampKQcOHOCnn35i3LhxevunpqYSEBCAg4MDhw4dYtWqVWzdupVRo0bptfv777+5du0aO3fu5KuvvuKzzz6ja9euODg4cODAAd5++21GjBjBlStFn5o0JSWFpUuX4u3tjZOTk267jY0NixYtIioqim+++Yb58+czd+5c3ePBwcG4u7tz6NAhjhw5wvjx4zExMQHgwoULBAYG0qdPHyIjIwkNDWX37t35zudx/vWvf/HRRx9x/PhxatasyWuvvUZOTk6x9lGcVEq5XUu4+CQnJ2NnZ0dSUhK2trZlHU6Zmrf9PLM2n8HGzJjN77fBzd6iyPvemDGD24uXYD/gVVwf+tRtqMWnFjP78GyauzZnQecFT3UsUQ6k3ITZ3oAKPrmirVMWQpSJjIwMYmJi8PLy0qvlnff234Xu41nPia6j/HT3fw4JJycrt8C2bjXs6fVhI939/3y0i4yU7HztRv7U/rGxajQajh07RsOGDRk6dChLly7F3NycnJwcMjMzUavVrFy5kj59+hR6jK5du1K7dm1mz54NaEeSNRoNu3bt0rVp1qwZ7du354svvmDLli106dKF2NhY3NzcANi0aRNBQUGsXbuWnj17Mn/+fMaNG0dcXBxWVtoVXDdu3Ei3bt24du0alSpVYsiQIYSHh3Px4kXUau2YZe3atXF2dmbnzp2687Ozs2PBggUMGDCgwPiHDBmiO2/QJuiurq5s2LCBRo0aFbgPwOzZs1mxYoVutNjW1pbvvvuOwYMH52s7bNgwjIyM+Pnnn3Xbdu/ejb+/P6mpqZibm1O1alXGjBnDmDFjAO1Ict7zcenSJby8vFiwYAFDhw4FICoqCh8fH6Kjo6ldu3aR+iguhb3GH/bEF+5lZWURExND9erVMTaW6/+eFyPaVGNr9A2OXb7LS18U/gexIC9dU/FvIOLPcFpm/PlUcVR3tQJ7OHL9CMlZydiavtgfXp571hXBxhXuxcONU1CleVlHJIQoh9q1a8ePP/5Iamoqc+fOxdjYWC9B1mg0fP7556xcuZKrV6+SlZVFZmYmlpaWesd5+II3V1dXEhK0s+9ER0fj4eGhS5ABWrZsqdc+OjoaPz8/XYIM0KpVK3Jzczlz5gyVKlUCwMfHR5cgA1SqVIl69erp7hsZGeHk5KTr+3HnDXDnzh1++OEHgoKCOHjwIJ6engCEhoby7bffcuHCBVJSUsjJydEbGPzggw8YNmwY//vf/+jYsSP9+vWjenXt9UoRERFERkaybNkyXXtFUcjNzSUmJoY6deo8Mr48Dz6vrq6uACQkJFC7du1i66M4GZzdpqWl8d577+mupDx79izVqlXjvffeo3LlyowfP77YgxSlx9hIzZx+fvT6YS9J6fk/2T/KSadqAHjeu4FdZgpJTzEaeCHeAksLZzBL4Msd65jYLhgz4zJYXESUHpf62iT5eqQkyUI8g4Z/41/oY6qHijffnFX46pkPT38/aPpLTxOWHisrK7y9vQH473//i5+fH//5z390o5ezZs3im2++4euvv8bX1xcrKyvGjBlDVlaW3nHyygz+iVlFbm7BI+NPo6B+nqTvB88bYMGCBdjZ2TF//nymTZvGvn37CA4OZvLkyQQEBGBnZ8eKFSuYM2eObp9JkyYxcOBA/vzzT/766y8+++wzVqxYQa9evUhJSWHEiBGEhITk67tKlSpPdL556yDknVtx9VGcDE6SP/nkEyIiIggPDycwMFC3vWPHjkyaNEmS5OdAtYrWHJjQgXsZOQbve+fMEjQXL/BnWxvM2nd4ov6zNbmsPXaVX07UI9fsb1ZHb2HrITfeal2Ngc2rYGkq31w8l1zrw7nNEB9R1pEIIQpgYlb0gYqSamsItVrNhAkT+OCDDxg4cCAWFhbs2bOHHj168H//93+ANkE7e/YsdevWLfJx69SpQ1xcHPHx8brR0P379+drs2jRIlJTU3WjyXv27EGtVlOrVq1iOsPCqVQq1Go16enpAOzduxdPT0/+9a9/6drExsbm269mzZrUrFmT999/n9dee42FCxfSq1cvGjVqRFRUlF4iXtxKow9DGXzh3rp16/j+++95+eWX9VZD8/Hx4cKFC8UanCg75iZGVLQxM/hm26IZAManjj/R/hVtzHCzt2BkO29+6autizKxOcON5FSm/RlNqy/+5rtt5wwe5RblgMxwIYQoZv369cPIyIh58+YBUKNGDcLCwti7dy/R0dGMGDGCGwbOyNSxY0dq1qzJ4MGDiYiIYNeuXXrJJ2gvgjM3N2fw4MGcPHmS7du389577/H666/rSi2KU2ZmJtevX+f69etER0fz3nvvkZKSQrdu3QDteV++fJkVK1Zw4cIFvv32W9auXavbPz09nVGjRhEeHk5sbCx79uzh0KFDuhKHcePGsXfvXkaNGsXx48c5d+4c69evL9aL6kqjD0MZnCTfvHkTZ2fnfNtTU1NlCWFRrPMlN3VtgKO5I6gzGBEAnk6W3EnLZk7YWVp98Tdfbjr9RHM6i2dU3gwXCVGgkQ9BQoinZ2xszKhRo5g5cyapqal8+umnNGrUiICAANq2bYuLiws9e/Y06JhqtZq1a9eSnp5Os2bNGDZsGNOn6y+iZWlpyebNm7l9+zZNmzalb9++dOjQge+//74Yz+4fmzZtwtXVFVdXV5o3b66bUaNt27YAdO/enffff59Ro0bRoEED9u7dy7///W/d/kZGRiQmJjJo0CBq1qxJ//79CQoKYvLkyYC2lnjHjh2cPXuW1q1b07BhQyZOnKhXl/20SqMPQxk8u0WbNm3o168f7733HjY2NkRGRuLl5cV7773HuXPn2LRpU0nFWmJkdovik52QwPk2/qBSUfPAfoye8vn8bO9nrDm3hoG1B/Jxk3H8eSKeedvPc/aGdq5JcxM1A5pWYXibagbNxCGeQYoCX1SBzGR4ew+41Hv8PkKIYlfUK/+fBQ/ObmFkJNetiKIpsdktPv/8c4KCgoiKiiInJ4dvvvmGqKgo9u7dy44dO54qaFH+mTg7Y+rpSVZsLBd79kRt+nSr7fTNSaNNWg5G6uXEWu+kHvADkJal4W5aFpk5ufAXnAIumxtjb2GCiVH5nf7bpIoHLhMnYuruXtahlD6VSltyEbtHe/GeJMlCCCHKkMFJ8ssvv8zx48f54osv8PX1ZcuWLTRq1Ih9+/bh6+tbEjGKcsa6fXtuL1xIzrX4pz6WMaD9oiWHrFuXdNtNgIoPN04BBch6eHs5knXpEtHde3Ho9Q+4WatBqfZdydacIS9VRa0uw7Ipl/r3k2SpSxZCCFG2nmiagOrVqzN//vzijkU8J5w//ADbwACU7OKpK/3m6DccTThGL++e9PTuWWCb09eTWXv0Kkcv3y2WPsuCiaLhjVN/UvPuFVr8PJWFPq+w2rtt/vmSSpCTtSk9GlQutf7ycb1flxwvK+8JIYQoWwYnyZcvX37k42U1l514dqiMjbHw83t8wyKqbdeb5XuPs976HAPvXxj4sEZAo65w8moSG0/Ek60p/vksS0NUt7aYrf4Fz0PbGXbqTwKN73Dk1ZFozEq2LvDMjRR2nr3Jsv2XyzZJfnCGC0Up1Q8IQgghxIMMTpKrVq36yFksNJqnX2/9efKo9edVajA2MSpaWxUYmz5h2yyNtg6hwMZg8oRtc7I0POqyzwfnvjSobbYG5YEct2XFVphozDibcJ4rt6/h7uhWaNtaFayp1a6G7r6xqVr3etVk55KbW3gQBrU1UaO6X5agycklV1M8bY1M1Kh6zOPOr78SP2MmricO0ztjOpXnzMHUwyNf27zSCI0ml9ycRxzXWIX6fq12QW1vJGfQ4asdHIu5zelrydR2015wmavJRfOI46qNVRjdP65BbXMVNNkFfJCxrQEqG9QZqRjdjQWHqoW3zTuukQojY+1xlVyFnOJqq1ZhZHK/raIUusSuoW0Net/L34iC2z70vn+atuXxb4T6Sdoa+DdCu9KZUuA5qlT/LAShKMojf28PthWivDE4ST527Jje/ezsbI4dO8ZXX32VbwoUAb+MLvxixofXuv/vx7uKvNb9kn/tLXCtewBnTxv6fdJUd//XSQe4dzujwLYOrlYM/Oyf1c1WzTjMnfjUAtvaOJoz6PN/VkZaO+coCbH3Cmxrbm3C0Nn/rLj0x3cRXDt3t8C2xqZqRnzbVnd/088niT2ZqNdmKDMBWH/wNCN/+idJ3rowigtHbxZ4XNCuEJX3H2b4stOc3n+90LZvznoZCxtTAHb/do6TO64W2vb1aS2xraCdTWP/+oscDyv8G5YBE5vh5KZdffDIX5c49OelQtv2Hd+ESlVtcRw4kHMZnhw+eH+Ku9kXgYt6bXu+35DKtRwAiNp1jZ0rzhZ63C4j61PVtwIAZw/c4O8l0fnahKAdrV7zxzkmjGgMwMXjt9g8/2Shx20/qA51XtJOpn856jZ/ziu8TKLNgJr4ttVekBh/7i7r5h4rpOUSWtosplF8JDhU5eble/z2ReFTCjbtUpVm3bSrPd6+nsqKKQcLbdugUxVa9dFOVH/vdgb/+3RfoW3r+VfG/zXtpP8ZKdn89+Pdhbat3cKFDkO0ixHkZOU+8n1fvVFFAof/c/2G/I3Qetq/EQ8a+VN73c/P698IgIi/49i3pvD1CZ70b8SlyERSNJncMUvBxDj/a8i2ggXmVtqV0zLTcki+lV7ocW2czLGwNi30cSHKQlEndjM4SfYr4Gv0Jk2a4ObmxqxZs+jdu7ehhxRCFMDE3R0Olv4CPQdiEknP0mBhWsbTKV2PhLrdyzYGIV5AKkWl/aYlNwcTnm6GIiGeRWlpaUD+ZcEfZvA8yYU5f/48fn5+pKYWPMLwLCvJeZLlq9QnaFvA16MxyTG8+serGKuN2T5wG9am1oW2fdDz8FVqblYWCV9+QdKadQBYd+yI66TPMLG3KbZyC9CWQAR8s5PYO+nM7Feffk08Sr/cAuDQf1GHjceoVkcYGCrlFvI3In9bKbcwvK0BfyNycjTEXY4jR5ODq6srarX+tJrPUrmFRqMhOjqaOnXqyDzJ4rEURSEtLY2EhATs7e11y4oXxuAkOTk5OV+H8fHxTJo0idOnT3P8+HGDgy5rspjIs09RFLqt60Zsciyz/WcTUDWgrEMqdXdCV3J92jTIzsashjfu332HadWqxdrHD+HnmbnpDA2r2LP23VbFeuwiu7wf/hsANm7wYf6yECFEycvKyiImJobc3Gf7Iujc3Fzi4uLw8PDIl8wLURh7e3tcXFwe+wHO4HILe3v7fAdVFAUPDw9WrFhh6OGEKBKVSkU7j3YsOrWI8LjwFzJJdni1P2Y1anBldAiZ584T068/lWfPwtrfv9j66NfYg6+2nOXY5btEXUumrlsZfGis5AOo4N41SL0FVhVKPwYhXnCmpqbUqFGDrKxne+b5lJQUunTpwuHDh7G2ti7rcEQ5YGJiUuRvHQxOkrdv3653X61WU7FiRby9vTE2fqJpl4UokrYebVl0ahE7r+wkOzcbE/Wja4meR5aNGuK1ejVXR48h/dgx4t5+h4qjQ3AaPhxVMYyiVLQxI8DHhT9PxLP8YCzTepbBAkFmNuBYDW5f0NYlV2//+H2EEMVOrVY/88tSZ2VlERsbi6mp6TMfqyh/DP5f1d/fX+/WunVrateuLQmyKHENKjbA3sye5KxkjiccL+twyoyJszOeixdh/9oAUBRufv0NV0ePRpNSPNcDBDfXznW+7tg1UjNziuWYBpNFRYQQQpSxImW2v//+e5EP2L27XI0uSoaR2og27m34/cLv/H35b5q6NH38Ts8plakprp99hoWPD9cnT+Fe2FYyL76Kfe/eT70AR00Uhl27yO3UTPZ9cYqGHg7FFLUBYhQ4ZwV3N8FZu8c2t3qpJea1a5dCYEIIIV4URbpwr6jF8CqVqlwuJiIX7pUfW2O38n74+1S2rsxfvf+SSeqB9IgIroSMJufGjbIOpcwYOzvjvSNcXg9CvGDk/29Rkoo0kvysX90qXhwvub2EqdqUqylXuXD3At4O3mUdUpmz8PPDa/VvJM5fQM6d28VyzKycXP46eZ3cXIV2tZ2xtyzl+u/sDIhar/3Ztw+oC/9TlfzXJnISEsi+ehVTd/dSClAIIcTzTgqJRbliaWJJc9fm7Lq6i+1x2yVJvs+4QgUqfTK+WI95dsUx1h2/xpWmHnzRp36xHrtIZm+GlOswdAB4NCu0WdbFGDJOniTjxAlJkoUQQhSbJ0qSU1NT2bFjB5cvX843PUxISEixBCZEYdpVaceuq7sIjwvnrfpvlXU4z62BzT1Zd/wa649fY0KXOtial/JososvnL+uneHiEUmyuW89Mk6eJP3ESWyDgkoxQCGEEM8zg5PkY8eO8corr5CWlkZqaiqOjo7cunULS0tLnJ2dJUkWJc7fXTsvcOStSG6m3aSiZcUyjuj51LSqA97O1pxPSGH9sau83rJq6QbgWh/Ohz12hguLevW4C2ScPFkqYQkhhHgxGDwF3Pvvv0+3bt24c+cOFhYW7N+/n9jYWBo3bszs2bNLIkYh9DhbOuNbQTt/744rO8o4mueXSqXSTQe37MBlimkF+6JzuV/icf3RSbJ5Pe1rIePUKRS5fkIIIUQxMThJPn78OB9++CFqtRojIyMyMzPx8PBg5syZTJgwoSRiFCKfth5tAdget/3RDcVT6d3QHTNjNaev3+Po5bul27nL/YVMbkSBJrvQZmbVq6GysCA3NZWsmJhSCk4IIcTzzuAk2cTERDclnLOzM5cvXwbAzs6OuLi44o1OiEK082gHwP5r+0nLTivjaJ5fdpYmdPNzA2DZgdjS7dzBC0xtQJMJt84V2kxlbIx53boApJ84UVrRCSGEeM4ZnCQ3bNiQQ4cOAdrV9yZOnMiyZcsYM2YM9erVK/YAhSiIt703la0rk5Wbxb5r+8o6nOfawPslF39GxpOUVviIbrFTq/8ZTX5MyYXF/b89GSekLlkIIUTxMDhJ/vzzz3F1dQVg+vTpODg48M4773Dz5k1++eWXYg9QiIKoVCrdaLKUXJSshh721HG1JTMnl9VHr5Ru53lJ8mMu3jO/nySnn5SRZCGEEMXD4CS5SZMmtGunTU6cnZ3ZtGkTycnJHDlyBD8/v2IPUIjC5CXJO6/sRJNb/lZ6LC9UKpVuNHnZgdjSvYDPtWgX71n4apPkzOjTKA9NSymEEEI8CYOT5GnTphEjF8eIZ0DDSg2xMbXhTuYdIm5GlHU4z7WeDdywNDXiws1UDsYUz6p+RfLgDBePSM5NPD1R29qiZGWRef58KQUnhBDieWZwkrxq1Sq8vb156aWX+OGHH7h161ZJxCXEY5moTWjj3gaQkouSZmNuQo8GeRfwXS69jivWBrUJZCTB3cL7ValUWNTzASBd6pKFEEIUA4OT5IiICCIjI2nbti2zZ8/Gzc2NLl26sHz5ctLSZJYBUbrypoILjwsvyzBeCAObeQKw6eR1ElMyS6dTY1Nwrq39+fqj64118yVLXbIQQohiYHCSDODj48Pnn3/OxYsX2b59O1WrVmXMmDG4uLgUd3xCPNLLbi9jrDbmUvIlLiZdLOtwnmu+7nbUd7cjS5PLb0dK8QI+l/vXOjxuUZH7dckykiyEEKI4PFGS/CArKyssLCwwNTUlO7sUp4cSArA2taaZSzNARpNLw8Bm2gv4fj14mdzcUrqAr4gzXORNA5d57hy56eklHZUQQojn3BMlyTExMUyfPh0fHx+aNGnCsWPHmDx5MtevXy/u+IR4LN1UcJelLrmkdfNzw8bMmEuJaey7mFg6nepmuHh0GYWxiwtGFSqARkNG9OlSCEwIIcTzzOAkuUWLFnh7e/Pbb7/xxhtvEBsby7Zt2xg6dCh2dnYlEaMQj5RXlxxxM4LE9FJK3F5QVmbG9GxYGSjFFfgq3V+kKPkKpBU+s4b24r37i4qclJILIYQQT8fgJLlDhw6cOHGCY8eO8dFHH1G5cuWSiEuIInOxcqGOYx0UFHZe2VnW4Tz38uZM3nLqBgn3Mkq+Q3Nb7RLVAPGPnupPV5csF+8JIYR4SgYnydOnT6du3bolEYsQT0xW3ys9dVxtaVTFnpxchVWHS+kCviKWXFj43p/hQi7eE0II8ZSe+sI9IZ4FeSUX+67tIyOnFEY3X3ADm2ung/v14GU0pXEBn0vRVt7LW546KyYGzb17JR2VEEKI55gkyeK5UNuxNi5WLmRoMtgfv7+sw3nuda3viq25MVfupLPz3M2S7zAvSX7MDBfGjo6YuGkXPck4daqkoxJCCPEckyRZPBdUKhVt3dsCMhVcaTA3MaJPY3cAlpfGCnx55RaJ5yDr0YsWmd8vuUg/IXXJQgghnlyZJsk7d+6kW7duuLm5oVKpWLdund7jQ4YMQaVS6d0CAwP12ty+fZvg4GBsbW2xt7dn6NChpKSklOJZiGdFuyrauuTwuHByldyyDeYFEHz/Ar6/TycQn1TC8xLbuICVMyi5kBD1yKYWvnkzXMhIshBCiCdn/CQ73b17l4MHD5KQkEBurn4yMmjQoCIfJzU1FT8/P95880169+5dYJvAwEAWLlyou29mZqb3eHBwMPHx8YSFhZGdnc0bb7zB8OHDWb58uQFnJJ4HTSs1xdrEmsSMRP578r84WzqXegxGKiOauTSjomXFUu+7tHk729DMy5GDMbcJPRTHmI41S7ZDF1+4sE07w4V7k0Kb6ZanlpFkIYQQT8HgJPmPP/4gODiYlJQUbG1tUalUusdUKpVBSXJQUBBBQUGPbGNmZlboctfR0dFs2rSJQ4cO0aSJ9j/N7777jldeeYXZs2fjdr82UbwYTIxMeLnyy2y6tIlvjn5TZnEYq43p5NmJgbUH4lfRT+898rwJbl5FlySPaueNsVEJfjnlWl+bJD/24j0fUKnIvnaNnNu3MXZ0LLmYhBBCPLcMTpI//PBD3nzzTT7//HMsLS1LIiY94eHhODs74+DgQPv27Zk2bRpOTk4A7Nu3D3t7e12CDNCxY0fUajUHDhygV69eBR4zMzOTzMxM3f3k5OSSPQlRat72e5uc3BzSNWWzLPHt9NtE347mr5i/+CvmL+o61WVg7YEEegViZmT2+AOUM4H1XHC0MiU+KYPNp27QpmaFJzqOiZEacxOjRzdyKdo0cEbW1ph6eZF18SIZJ05g7e//RDEJIYR4sRmcJF+9epWQkJBSSZADAwPp3bs3Xl5eXLhwgQkTJhAUFMS+ffswMjLi+vXrODvrf6VubGyMo6PjI5fInjFjBpMnTy7p8EUZqG5fnbnt5pZpDFGJUSyPXs5fMX8RlRjFp3s+Zc7hOfSt2Zf+tfrjYlXwNyPlkZmxEX0bu/PLzouMXH70qY5lY2aMs60ZlWzNqWRrrv3Zxvz+fTPczGvgBnDjFGhywKjwP1/m9XzIuniR9BMnJUkWQgjxRAxOkgMCAjh8+DDVqlUriXj0DBgwQPezr68v9evXp3r16oSHh9OhQ4cnPu4nn3zCBx98oLufnJyMh4fHU8UqRJ66TnWZ9vI0PmjyAWvOrSH0TCjXU68z/8R8/nvyv7Sv0p6BtQfSuFLj56IUY1BLT9YcvcKtlKynOs69zBzu3czhws3UAh9XkcsJM3OsczJ4a+6vZDjUxNlGm0AH+Ljg52Gva2tRz5fk3/+QumQhhBBPzOAkuUuXLnz88cdERUXh6+uLiYmJ3uPdu3cvtuAeVq1aNSpUqMD58+fp0KEDLi4uJCQk6LXJycnh9u3bhdYxg7bO+eELAIUobo7mjgzzHcYQnyFsj9vO8ujlHL5xmLDYMMJiw6jlUIvXar/GK9VewcLYoqzDfWLuDpYcnNCR7Nwnn1EkKyeXm/cyuZGcScK9DG4kZ3AjOZMbyRkkJGdy414G15MyiFaq0FR1FsvbUYTd+qfWeNWRKxyc0EH3oeOf5alPoijKc/FhRAghROkyOEl+6623AJgyZUq+x1QqFRqN5umjKsSVK1dITEzE1dUVgJYtW3L37l2OHDlC48aNAfj777/Jzc2lefPmJRaHEIbIu5Cvk2cnztw+w6+nf+XPi39y5s4ZJu2bxFdHvqJPjT68WvtVKltXLutwn4harcJM/Zia4kcwMzbCxtyEahWtC22jKApZf4TB0bN87JdJG28/ridnMDfsLDfvZRKflIGbvfbDhnmdOmBsjCYxkZzr1zG5/zdDCCGEKCqDk+SHp3x7GikpKZw/f153PyYmhuPHj+Po6IijoyOTJ0+mT58+uLi4cOHCBcaOHYu3tzcBAQEA1KlTh8DAQN566y1++uknsrOzGTVqFAMGDJCZLcQzqZZjLSa9NIn3G7/P2nNrWXFmBVdTrrLw1EIWRy2mXoV6mKpNyyQ2MyMz3G3c8bT1pIpNFTxsPfCw9sDEyOTxO5cClUqFmXsDOAruGedwv7+YyR8R1zh9/R5R15J1SbLa3ByzGjXIjI4m/cQJSZKFEEIY7InmSS4uhw8fpl27drr7eXXCgwcP5scffyQyMpLFixdz9+5d3Nzc6Ny5M1OnTtUrlVi2bBmjRo2iQ4cOqNVq+vTpw7ffflvq5yKEIezM7BhSbwiv132dnVd2svz0cvbH7yfy5qOnNyttapUaVytXqthUoYptFTxsPHRJtLuNO6ZGpZzQPzjDhaKASkVdV1ttkhyfTMe6lXRNLerVIzM6mowTJ7Ht3Ll04xRCCFHuPVGSvGPHDmbPnk10dDQAdevW5eOPP6Z169YGHadt27YoilLo45s3b37sMRwdHWXhEFFuGamNaFelHe2qtCMmKYazd86WWSxp2WnE3YsjNjlW929aThpXU65yNeUq++L36bVXocLVyhUPWw88bTyp4VADHycfajrWLLnp7pzrgNoY0u9A0hWw96Cumy1rjl0l6pr+VI7m9erBqlWkn5SL94QQQhjO4CR56dKlvPHGG/Tu3ZuQkBAA9uzZQ4cOHVi0aBEDBw4s9iCFeBF42XnhZedV1mHoKIpCYkaiLmG+nHyZy/cu6/5NzU7lWuo1rqVe40D8Ad1+xipjajjUoK5TXXwq+ODj5EMN+xrFU7ZhbAYVa8ONk9pFRew9qOtqC0BUvH6S/ODy1EpuLip1CS50IoQQ4rmjUh41lFuAOnXqMHz4cN5//3297V999RXz58/XjS6XJ8nJydjZ2ZGUlIStrW1ZhyPEM09RFG5n3CbuXhyX713mUtIlTt8+zanEU9zOuJ2vvYnahJoONfFx8tElztXsq2GifoLEee07ELEc2n4CbcdzJzWLhlPDAIic1Blbc+0xlexszjRpipKZSbW/NmLm9ex8ABFCFA/5/1uUJINHki9evEi3bt3ybe/evTsTJkwolqCEEM82lUqFk4UTThZONHBuoNuuKAo30m5w6tYpTiX+c0vKTNL9zP2KEjMjM2o51sLHyQdve++iJ8wWxmBtBVfC4VwtAFwcM7l+24bT8fdo5qWdGk5lYoJ57dqkR0SQcfKUJMlCCCEMYnCS7OHhwbZt2/D29tbbvnXrVlmQQ4gXnEqlwsXKBRcrFzp4ahf8URSFqylXdUly1K0oTiWeIiU7hcibkU92sWJFJ9Bchb0TATCt5AS3PyLqWpIuSQYw9/W9nySfwK5b12I5RyGEEC8Gg5PkDz/8kJCQEI4fP85LL70EaGuSFy1axDfffFPsAQohyjeVSoW7jTvuNu4EVNVO35ir5BJ3L0434hybHItCESu/NDlwYZv25+rt2XvjEFm5iahMbhdYl3wHSD9xshjPSAghxIvA4CT5nXfewcXFhTlz5rBy5UpAW6ccGhpKjx49ij1AIcTzR61S42nriaetJ69Ue8XwA3xdH+7GQkAw/5eTRsTNCIwsLhMVr19SYV7v/sV7UVEoOTmojMt01kshhBDlyBP9j9GrVy969epV3LEIIUTRuN5Pkq9H0qBiA22SbBnL2espZGtyMTHSzmRh6uWF2sqK3NRUMi9cwLxWrTIOXAghRHkhcyIJIcofFz/tv9dP4Oes/dnU8jJZmlwu3EzRNVOp1Zj7+ACQcULmSxZCCFF0RUqSHR0duXXrFgAODg66ZaMLugkhRIlz8dX+Gx+JX8X7CbNpPKgz8i8qcn++ZKlLFkIIYYgilVvMnTsXGxsb3c8qlapEgxJCiEdyvb889a2zOJvYUNm6MldTrmJkHkfUtTr0bvRPUwtfbUKdcVKSZCGEEEVXpCR58ODBup+HDBlSUrEIIUTR2LiCZQVIuwU3ovCr6KdNki1j881wYV7vfpJ89iy5WVmoTU3LImIhhBDljME1yUZGRiQkJOTbnpiYiJGRUbEEJYQQj6RS/TOafD1St6CJdoaLZB5cSNSkshtG9vaQnU3m6dOlH6sQQohyyeAkubBVrDMzMzGVERohRGnJq0u+P8MFgJFFLHfTMolPytA1U6lUmN8vuUiXi/eEEEIUUZGngPv2228B7X84CxYswNraWveYRqNh586d1K5du/gjFEKIgrjcH0mOj6SGQw0sjC1IJx21WQJR15Jxs7fQNbXwrUfqrl1kyMV7QgghiqjISfLcuXMB7UjyTz/9pFdaYWpqStWqVfnpp5+KP0IhhCiI6/1ZLW6cwhgV9SvU58D1AxhZaOuSO9atpGuaV5ecflJGkoUQQhRNkZPkmJgYANq1a8eaNWtwcHAosaCEEOKxHKuBiSVkp0Hiefyc/f5Jkq/lX54aIOvCRXJTU1FbWZVFxEIIIcoRg2uSt2/fLgmyEKLsqY2gkjb5Jf7BuuTL+Wa4MK5YEWMXF1AUMqKiSjlQIYQQ5ZHBSXKfPn348ssv822fOXMm/fr1K5aghBCiSB6Y4aJ+Re3ParNbxCUlkJyRrdfUvJ525T1ZVEQIIURRFLncIs/OnTuZNGlSvu1BQUHMmTOnOGISQoiiyZvh4lwYdjYuVDd14ELWHQKt1nJn62VsnSx1TS3sUkkBMsLXQp204ovBuhK4NwX7Ktqp6YQQQjwXDE6SU1JSCpzqzcTEhOTk5AL2EEKIEuLaQPvvzWjYPIEGFRy5YGNNLau9eB7+S6+peaIZ4ET6qWjYvKP4Y7F2AY9m4NFce3OtD8Zmxd+PEEKIUmFwkuzr60toaCgTJ07U275ixQrq1q1bbIEJIcRjufpBh4mQoF0kxC87gdWZF9lq5kwbu2Y0qvLP9RMW3jkQvp/sVGNyqvfC2NKkGAJQ4PZFiI+AlOsQ/bv2BmBkBm4NH0icm4G1czH0KYQQojQYnCT/+9//pnfv3ly4cIH27dsDsG3bNn799VdWrVpV7AEKIUShVCpo/aHurl/SRVjXg0tmGj7NGsXGPm11jxkBJv8LIDv2Mhleb2H9cqviiyM7Ha4dg7gDEHdQ+29aIsTt197yOHj9kzB7NAfnOtoLEIUQQjxzDE6Su3Xrxrp16/j888/57bffsLCwoH79+mzduhV/f/+SiFEIIYqkqm1VbExsuZedzIW7Z8nKaYOp8T/XJ1v41NMmySdPFG+SbGIBni9pbwDK/RHmuAP/JM4J0XAnRnuLXKFtZ2yh3fdpqI1ApX7gZqT98JB3P9/jD96eooZabQLmdtqbhf39n+31f37wMVMbUBt8rbgQQpQZg5NkgC5dutClS5fijkUIIZ6KWqWmoXMDdl7dSa5ZDBduplDH1Vb3uLmvL8kbN5b8DBcqFThV194aDNRuS78LVw//M9J85TBkpUBOesnG8qxQqcHMVps0WzhAjQBoORLMbR+7qxBClIUnSpIBsrKySEhIIDc3V297lSpVnjooIYR4Ug3uJ8lGlpeJupaslyTnLSqScaIMVt6zsAfvjtobQK4G7lyC3JwnP6aigJL7wE1z/9/723M1hT+eq3m689FkQkYyZNyFjCTthwC9n5P+uZ+Toe03436bO5e05SmH5kPrj6DpULnIUQjxzDE4ST537hxvvvkme/fu1duuKAoqlQqN5in/8AohxFNo4NwAQLc8dZ8HHjOvWxfUanISEsi+kYBJpTK8kE5tpB1pfhFkZ+gnzYkXYNdsSDwPmz+B/T9CuwlQv7/UaAshnhkGJ8lDhgzB2NiYDRs24OrqikrmBRVCPEN8nHxQoUZtksTxa5eAf2bdUVtaYla9OpnnzpFx8gQmlTqUWZwvFBNz7c2mkva+RzPw7QfHl0L4F5B0Gda9DXu/1c5WUjNQ5pwWQpQ5g5Pk48ePc+TIEWrXrl0S8QghxFOxNLGkqk0NYu6d4VzSCRQlSO/DvLmvL5nnzpF+4gQ2HSRJLjNGxtB4CPj2h4M/w+65kBAFvw4AjxbQaTJUaVHWUQohXmAGX2pct25dbt26VRKxCCFEsWjm1giATOOLXEvK0Hssb3nqjJOnSj0uUQBTS3j5fRgdAa3GgLG5dtq8/wbA8gFwI6qsIxRCvKAMTpK//PJLxo4dS3h4OImJiSQnJ+vdhBCirDWu1BAAIwvtxXsPsvDVLmWdceIEiqKUemyiEBYO2tHjkGPQaLB2Kruzf8GPL8Hat+Hu5bKOUAjxglEpBv4vob4/z+XDtcjl+cK95ORk7OzsSEpKwtZWpiMSoryLT4mn8+rOKIqaIW5L+aizr+6x3KwszjRuAtnZVA/bgqmHRxlGKgp16xz8PRWi1mvvG5lC02HaxWOsKpRtbOKZIf9/i5JkcE3y9u3bSyIOIYQoNi5WLlgbOZGiSeTw9QjgnyRZbWqKea1aZJw8ScaJE5IkP6sq1ID+S+DqEdg6CWJ2wv4f4Oj/oPX78PIHcnGfEKJEGZwky6p6QohnnUqlopZDPY7c2sGF5Py1x+a+9cg4eZL0EyexfeWVMohQFFnlxjDod7jwtzZZvh4J26aAY3Xw6VnW0QkhnmMGJ8k7d+585ONt2rR54mCEEKK4vFS5CUdu7SCFCySlZ2NnYaJ7zKKeL3dZUTaLigjDqVTg3QGqtYONH8Hh/8DJ1ZIkCyFKlMFJctu2bfNte7A+uTzWJAshnj8tKzfmuwhQW8QSfS2JFtX/qWM1r3d/5b2oKBSNBpWRLGBRLqjV0HiwNkk+twUyU8DMuqyjEkI8pwye3eLOnTt6t4SEBDZt2kTTpk3ZsmVLScQohBAGq+1Y+//bu+/4KOr8j+Ov2WTTQyqEBAi9SxMkdFDQgKeCIKKiAiqnFJUTTuHnKXigKJZTPBTFAiLqiQgqIqj0DoKAAgKBIDWUhHRSd35/RKKhaMpuJuX9fDz2YXZmdua9w4zzyeQ73y8Gdmzu6Ww48kuBeZ7162F4e+NITycrNtaihFIs1VtCUN28oa4PLLM6jYhUYEUukgMCAgq8QkNDuf766/O7hhMRKQvsbnaqeTQAYGvcjwXmGe7ueUNUA+d/+rnUs0kJGMbvzSx2L7IyiYhUcEUukq8kLCyMffv2OWt1IiIl1jQor1eL2NRLH97zvtDkQu2Sy5/mt+b998B3kJVmbRYRqbCK3CZ5165dBd6bpsnJkyd5/vnnad26tbNyiYiUWNfIdqw69SkpZgxZOQ483H+/L+D126Ai53/WneRy50KTi3OxsH8ZXNXf6kQiUgEVuUhu3bo1hmFcMlJVhw4deO+995wWTESkpK6rcw2Tt4LN8xS7TpykXWSN/HneLfLuJGfu3YuZlYXh4WFVTCmqC00u1v0Hdi9UkSwiLlHkIjn2oodcbDYbVatWxcvLy2mhREScIdQnFLujGtm203x/aGuBItkeGYmtShUcycmkbd6MZ4MGxdqGe0iICmwrNOuXVyRfaHLh4Wt1IhGpYApVJAcHB7N//35CQ0N55plneO211/D393d1NhGREgv3asKRrNP8eHoH0C9/umEYeF/VnLQNGzk6/O/FXr+9diR1F3yOm5+KtFIV3gqC6sC5w2pyISIuUagH97KyskhOTgZgzpw5ZGRkuDSUiIizXBXSEoBf0/ZcMi9gwABsfn4YdnuxXhgG2b8e4cz010r7a4lh/P4A355FlkYRkYqpUHeSO3bsSL9+/Wjbti2mafLII4/g7e192WXVLllEypLuta9hyUlI4xDZudnY3X4feS/gb38j4G9/K/a6U9ev5+j9D3Duw3kE3Hwz3r89DCil5EKTi/3fqsmFiDhdoe4kf/jhh9x4442kpqZiGAZJSUmXDCpy4SUiUpb0qHsVZq4n2DLZeOzSu8kl4de5M1VuvhkcDk4+PREzJ8ep65e/cKHJRc75vCYXIiJOVKg7yWFhYTz//PMA1K1bl7lz5xISEuLSYCIizuDj4YGXox6ZbntZEbuFbrVbOXX9YeOfIG3NGjL37iVhzgeE3H+fU9cvf8Iw8u4mr381r8mF2iWLiBMVeTCR2NhYFcgiUq7U8G4CwM7TO52+bveQEKr9Ntromf/+l6xjx52+DfkTF0bfu9DkQkTESZw24p6ISFnVMrQ1AEfPO7e5xQUB/W/Fp317zPPnifv3M5f0Iy8uFN769yYXB761Oo2IVCAqkkWkwutRpy2maZDJGc6eP+v09RuGQfVJkzDsdtLWrCXlm2+cvg25ggtNLiBvYBERESdRkSwiFV7bWuE4MsMA2HBsm0u24VmvLiEPPQhA3LPPkZuU5JLtyGWoyYWIuICKZBGp8AJ9PPDKrQfA6l+3umw7IcOH41GvHrnx8Zx+6WWXbUcuEt4aAmuryYWIOFWhiuTk5ORCv0REyqJI32YA/BTv/If3LrB5eBD+72cASJw/n/QffnDZtuQP/jiwyO5FlkYRkYqjUEVyYGAgQUFBf/q6sIyISFnUplprAOIyYsjKzXLZdnzatSNw4EAATk6chCPLdduSP7jQ5OKAmlyIiHMUqp/klStXujqHiIhLRdVqxKcnfLG5p7Enfg+tfyuaXaHauLGkrFxJ1sGDxL/zDlVHjnTZtuQ3F5pcJP6aVyhfuLMsIlJMhSqSu3fv7uocIiIu1TwigNzztbH572HbqR9dWiS7BQQQNmE8J8aOI/7NmVTp3QfPenVdtj3htyYX/WD9a3lNLlQki0gJFevBvbVr13L33XfTqVMnjh/P6zh/7ty5rFu3zqnhREScpWaQN/bsvELVVT1c/FGVG2/Et2tXzOxs4iZNUt/JpeFCV3AHvoWsdEujiEj5V+QiecGCBURHR+Pt7c327dvJzMwEICkpieeee87pAUVEnMEwDOr89vDenoRdLi9aDcOg+sSnMby9Sd+yhaTP1Yevy0W0yWtykZ2uXi5EpMSKXCRPmTKFmTNnMmvWLOx2e/70zp07s337dqeGExFxpjbVW2CabqTmnON4quuHj/aoWZOqo0cDcHraNHISEly+zUrtQpMLgD2LrEwiIhVAkYvkffv20a1bt0umBwQEkJiY6IxMIiIu0SIiFEdGBAA7z7iuK7g/Ch5yL55Nm5KblMSp558vlW1WaheaXOxfpiYXIlIiRS6Sq1evTkxMzCXT161bR7169Yq0rjVr1nDzzTcTERGBYRgsWrSowHzTNHn66acJDw/H29ubXr16ceDAgQLLJCQkMHjwYKpUqUJgYCD3338/qampRf1aIlIJNIuoQm56bQB2nN5RKts03N3z+k622Uj+8itS168vle1WWhFtIDBSTS5EpMSKXCQPHz6cRx99lM2bN2MYBidOnGDevHmMGzeOESNGFGldaWlptGrVihkzZlx2/rRp05g+fTozZ85k8+bN+Pr6Eh0dTUZGRv4ygwcPZvfu3Xz33XcsXryYNWvW8Pe//72oX0tEKoGG1fwhM69I3hr3Y6lt17tFC4IGDwYgbtIzOM6fL7VtVzqG8fvdZDW5EJESMMwiPr1imibPPfccU6dOJT09709Znp6ejBs3jsmTJxc/iGGwcOFC+vXrl7+diIgIxo4dy7hx44C8hwPDwsKYPXs2d9xxB3v37qVZs2Zs3bqVdu3aAbB06VJuvPFGjh07RkRERKG2nZycTEBAAElJSVSpUqXY30FEyr4bpn/FyYD/w8DGprs24mP3KZXt5qamceimm8iJiyNk+HCqjX2sVLZbKR3fDrOuBbsP/PMgeJTOv7GUPl2/xZUKdSd5165dOBwOIK+YffLJJ0lISODnn39m06ZNnDlzpkQF8uXExsYSFxdHr1698qcFBAQQFRXFxo0bAdi4cSOBgYH5BTJAr169sNlsbN68+YrrzszM1HDaIpVUi+qROLICMXHw09mfSm27bn6+VH/6KQDi33+fjH37S23blY6aXIiIExSqSG7Tpg1nz54FoF69esTHx+Ph4UGzZs1o3749fn5+Tg8WFxcHQFhYWIHpYWFh+fPi4uKoVq1agfnu7u4EBwfnL3M5U6dOJSAgIP9Vq1YtJ6cXkbKqWUQVcs+XbrvkC/yvuw7/66+HnBzinn4a87ebD+JkanIhIk5QqCI5MDCQ2NhYAA4fPpx/V7m8mjBhAklJSfmvo0ePWh1JREpJs/Aq5J6PBGDHmR2lvv2wfz2JzdeX8zt3cu6TT0p9+5XGha7g1MuFiBRToYalHjBgAN27dyc8PBzDMGjXrh1ubm6XXfbQoUNOCVa9enUATp06RXh4eP70U6dO0bp16/xlTp8+XeBzOTk5JCQk5H/+cjw9PfH09HRKThEpX/KK5At3knfiMB3YjGINPlos9rAwqj72D05NnsKZl1+BXAfYjGKty7N+fXw7dHBywgoi4uq8JheJRyDmO2jW1+pEIlLOFKpIfvvtt+nfvz8xMTE88sgjDB8+HH9/f5cGq1u3LtWrV2f58uX5RXFycjKbN2/O70WjY8eOJCYmsm3bNtq2bQvAihUrcDgcREVFuTSfiJRPAT52qnvVI9lhJzU7hdikWOoH1i/VDEF33EHyl19xfudOTj37bInWVWvWLPy6dnFSsgrkQpOLDdNh9yIVySJSZIUqkgF69+4NwLZt23j00UedUiSnpqYW6HM5NjaWHTt2EBwcTGRkJGPGjGHKlCk0bNiQunXr8tRTTxEREZHfA0bTpk3p3bs3w4cPZ+bMmWRnZzN69GjuuOOOQvdsISKVT/OIINal1sLd9xA7Tu8o9SLZcHMj4sVpnJ3xBo7MzGKtI/vkCTJ27uLEhAnU+2IR7iEhTk5ZATTvl1ck71+a1+RCvVyISBEUuQu4C2JiYjh48CDdunXD29sb0zQxjKL9yXDVqlVce+21l0wfMmQIs2fPxjRNJk6cyNtvv01iYiJdunThjTfeoFGjRvnLJiQkMHr0aL766itsNhsDBgxg+vTpRXqYUF3IiFQu//luP2/u+i+eoSvp16Afkzs7t3ee0uDIyODwwNvJPHAA365dqfXWTAxb6TUbKRdME15rmdfk4vYPdDe5AtL1W1ypyEVyQkICAwcOZOXKlRiGwYEDB6hXrx733XcfQUFBvPzyy67K6jI6yUQql2W74xi5cB4+tWZTp0odvrr1K6sjFUvG/v0cHng7ZmYm1cY/QcjQoVZHKnu+/RdseB2a94eB71udRpxM129xpSLfdhgzZgx2u50jR47g4/P7n64GDRrE0qVLnRpORMQV8h7ey+v68XDyYRIzEq0NVExejRpR7YnHATj98itk7NljcaIyqPmtef/dvwyyNdKhiBReodskX/Dtt9+ybNkyatasWWB6w4YN+fXXX50WTETEVWoGeeNvDyA3sypunmd4bPVjBHoGFmtdzUKaMaT5EOw2u3NDFlLQnXeStn4DqcuXc3zsOOou+Aybj9re5vtjLxcHvoNmt1idSETKiSIXyWlpaQXuIF+QkJCgbtVEpFwwDINm4VXYkVYfN88zbI3bWux1fffrd6w6uooXu71IuF/4Xy7vbIZhED5lMrE//URWbCxxzz1HxJQppZ6jzDKMvLbIG16H3QtVJItIoRW5SO7atSsffPBB/jDUhmHgcDiYNm3aZR/CExEpi5pFVGHzxmg61WpN76tCi7WO1OxU3v3pXXae2cnAxQN5tvOzdK/V3clJ/5p7UBAR06ZxZNgwkj5bgF+XLlT5rUciAZrdmlckX2hyYfe2OpGIlANFLpKnTZtGz549+eGHH8jKyuLxxx9n9+7dJCQksH79eldkFBFxumbhVcDhzfmEqxnUpGOx1xNdJ5pxq8exO343o1eMZljzYTx89cOl3vzCt0MUIcOHE//225x86mm8W7TAXqNGqWYos2pcDQGRkKQmFyJSeEV+cO+qq65i//79dOnShb59+5KWlkb//v358ccfqV+/dPsaFREprmYReU/C7zmRTDF7wgSgpn9NPujzAXc3vRuA93e/z7ClwziZetIpOYui6sOj8WrVEkdKCsf/+ThmTk6pZyiTDAOa/9b9255FlkYRkfKj2P0kVyTqQkak8snKcdB84lKyc03WPXEtNYNK/rDb979+z9PrnyYlO4UAzwBLml9kHT1KbL9bcaSlETpqFFUfHl2q2y+zjm2Dd64Duy88flBNLioIXb/FlYpcJHfr1o0ePXrQo0cPOnXqhJeXl6uylRqdZCKVU5/X1rL3ZDLXNalGWJXiPXhsd7Ph6+mO32+vLOMMnx97nmPp+wHoV3cwf28xigBvL3w93HGzFW3QpeJI+uorTvzzcbDZqP3BHHzatXP5Nss804RXW+Y1ubh9rppcVBC6fosrFblInjJlCmvWrGHDhg3k5OTQrl07evToQffu3encufNle74o63SSiVROEz7/iY+3HHH+io0cPKstwSN4AwC56ZGcP34XZk4gPh5u+Hq64+/pTqifJ+OiG9O+brDTI5x44gmSvvgS9/Bw6i1aiFtAgNO3Ue4sexI2/heq1IDA2tZkaNATuo2zZtsVkK7f4krFbm6Rk5PD1q1bWb16NatWrWLFihXYbDYyMjKcndHldJKJVE5nUzP5fPsxMrMdxV5HVq6DlIwc0jJzSMvK+f3nzFzOGds4H/AR2DIwc3w4f3IgualNC3ze39Odz0d2omGYf0m/TgG5qWnEDuhP9q9H8I+Opsar/8EwXH8Xu0w7uRPe6g5Y3Mpw2DdQu5O1GSoIXb/FlYpdJO/fv59Vq1axcuVKVq9eTWZmJt26dWPhwoXOzuhyOslExFWOphzln6v/ye743QD0rzeYW+sMJzMbXv52P1sOJ1AzyJuFIztT1d+5fc2f/+knDt95F+TkUH3yvwkaONCp6y+Xjm+DpGPWbPvnBbDnCwhvDcNXgq3Iz87LRXT9FlcqcpF81113FSiKu3fvTo8ePWjZsmW5vUuhk0xEXCkrN4tXtr3CvL3zAGhVtRUvdX8JT4K59Y31HI5Pp3WtQD75ewe87G5O3Xb8O+9w+qWXMby9qbvgMzzr1XPq+qUIUk/D9KshKwX6vQmt77I6Ubmn67e4UpGLZJvNRmhoKPfddx/XXXcdXbp0KZftkP9IJ5mIlIbL9X5Rw7MN/d/cQPL5bG68Kpzpd7bBVsiH+wyMv7w5YTocHH3gAdI2bMSzaVPq/O8TbB4ezvg6Uhzr/gPfTwL/cHh4G3j4Wp2oXNP1W1ypyEXyuXPnWLt2LatWrWL16tXs3buX1q1b5/d4ccMNN7gqq8voJBOR0nJx84uSqBtQlzm95xDkFfSny2WfPk1s337knjtH8JB7CZswocTblmLKzoAZ7SHxV+j+BFz7f1YnKtd0/RZXKnE/yTExMUyZMoV58+bhcDjIzc11VrZSo5NMRErTheYXH//yMQ6z+A8NAvSo1YPp107/yzvKKStXcmzESABqvf0Wft26lWi7UgK7F8H8IeDuDQ//AAE1rU5Ubun6La5U5CI5Pj4+v0eLVatWsWfPHgIDA/PbJz/66KOuyuoyOslExArp2elk5Wblv5+xKoZZaw/hbhi8cffVtK8TcsXPHk4+zH3L7iPbkc2/ov7FoCaD/nJ7cVOe5dyHH+IWHEy9LxbhXrWqU76HFJFpwvs3wpEN0OJ2GDDL6kTllq7f4kpFLpLd3NwIDQ2la9eu+Q/ttWjRwlX5SoVOMhEpCxwOk0c++ZHFu04S4G3n85GdqF/V74rLz90zl2lbp+Hp5sknf/uEBkEN/nz9mZkcvn0Qmfv24dupE7XemYWhHhasceJHePtawIQHVkDNtlYnKpd0/RZXKnKRvHv3bpo3b+6qPJbQSSYiZUVGdi53zdrE9iOJ1A7xYeHIzgT7Xv5BO4fpYOTykaw/vp6GQQ35+G8f4+n2593IZcbEEHvbQMyMDHw6dMC/Z0/8unbBXrt2ue2hqNxaOAJ2fgQ128P934L2f5Hp+i2uVOI2yRWBTjIRKUviUzPp98Z6jiacp13tIOYNj8LT/fJdw509f5YBXw4gISOBu5rcxYSov34oL3HBAk7+66m8P/v/xl6rFn5du+DbpSu+Ue2x+arXBZdLPgmvXw3Z6TDgXWhxm9WJyh1dv8WVilwknzp1inHjxrF8+XJOnz7NxR/Xg3siIiUXczqFW9/YQEpGDn1bR/DqoNZXvNO77vg6Rnw/AoAZPWfQreZfP5SXGRND6urVpK5dR/q2bZCd/ftMux2ftm3zi2bPRg11l9lVVr0Aq56DgFoweivYva1OVK7o+i2uVOQiuU+fPhw5coTRo0cTHh5+yf84+/bt69SApUEnmYiURetjzjLkvS3kOEzG9GrImF6NrrjsC1te4MO9HxLkGcSCWxZQ1afwD+U50tJI27yFtHVrSV2zluxjBUekc69WDd+uXfDr2hXfjh1xCwgo9neSi2Slw3/bQfJxuO4p6DbO6kTliq7f4kpFLpL9/f1Zu3YtrVu3dlGk0qeTTETKqk+2HGH85z8B8Oqg1vRrU+Oyy2XlZnHX13ex79w+OoZ3ZOb1M7EZRX8ozzRNsn/9ldS160hdt5b0zVswMzJ+X8Bmw7tVK7xbtoQrNAH5K4bNDf/re+WtQ2DXp/D5cLD7wiPbwb+61YnKDV2/xZWKXCQ3a9aMefPm0aZNG1dlKnU6yUSkLJv6zV7eWn0IDzcbHz4QRfu6wZdd7lDiIQYtHkRGbgbj2o1jSPMhJd62IzOT9B9+IO23ojkr5mCJ1wmAzUboqJGEPvQQhptzh+IudxwOeLcXHN8Gbe6GvjOsTlRu6PotrlTkIvnbb7/l5Zdf5q233qJOnTouilW6dJKJSFnmcJiMnLedpbvjCPKxs3BkZ+qEXv7Buvn75/Pvjf/G3ebOhzd+SPMQ5/ZGlH3iBKnr1pF1+NdiryPryK+kfr8cAJ927Yh4cRr28HBnRSyfjm6Bd68HDHhwNYS3sjpRuaDrt7hSoYrkoKCgAm2P09LSyMnJwcfHB7vdXmDZhIQE56d0MZ1kIlLWnc/K5Y63N7LzWBL1Qn35fGQnAn0u7RrONE0eW/UY3x/5ntpVavPpTZ/iY/exIPGfS/ryS+ImPYMjPR1bQADhk/9NlRtusDqWtT67D35eALW7wNDF6hKuEHT9FlcqVJE8Z86cQq9wyJCS/3mvtOkkE5Hy4HRKBrfO2MDxxPN0qBfMB/dF4eF+abvjpMwk+n/Zn9Ppp+nfsD/PdHrGgrR/LevIEY6PHUfGT3ltrgMHDSJs/BPYvCtpDw+JR+C/10BOBgz6EJrebHWiMk/Xb3El9ZOMTjIRKT9+iUvmtjc3kpqZw21ta/LibS0v2z3b1rit3L/sfkxMXur+EtF1oi1I+9fMrCzOvP468bPeAcCjQX1qvPwKXo2v3JNHhbZ8Mqx9CYLqwqjN4P7ng8NUdrp+iysV+dHnJUuWsGzZskumf/vtt3zzzTdOCSUiIpfXpHoV/ntXG9xsBp9tO8b3e09fdrlrql/DAy0eAOCZDc9wIvVEacYsNMPDg2pjxxL53ru4VQ0lK+YghwcOJGHevEv64a8UuvwD/MLgXCxsedvqNCKVWpGL5PHjx192wBCHw8H48eOdEkpERK6sR+Nq/L1bPQAmL95DRvblB3Ea0XoELUNbkpKdwoS1E8h1lN3Bnnw7daLeF1/g270bZlYWpyZP4dio0eScO2d1tNLl6ZfXXzLA6mmQdtbaPCKVWJGL5AMHDtCsWbNLpjdp0oSYmBinhBIRkT83+toGhFXx5EhCOu+sPXTZZew2O893ex5fuy/bT29n1k+zSjll0bgHB1Nr5kzC/m8Cht1O6ooVxPbtR9qmzVZHK12t74LqLSEzGVY+Z3UakUqryEVyQEAAhw5d+j/kmJgYfH0v3yWRiIg4l6+nO/93Y1MAZqw8yInE85ddrpZ/Lf7V4V8AzNw5kx2nd5RWxGIxDIPge++lzqf/w6NuXXJOn+bIsGGc/s+rmH8cOrsis7lB76l5P297H07tsTaPSCVV5CK5b9++jBkzhoMHf+9QPiYmhrFjx3LLLbc4NZyIiFzZLa0iuKZOEOezc3luyd4rLndTvZu4qd5N5Jq5PLHmCVKyUkoxZfF4NW1K3QWfETjwNjBN4t96i1/vvoesi4bMrrDqdIEmN4HpgG+fhMrYPlvEYkUukqdNm4avry9NmjShbt261K1bl6ZNmxISEsJLL73kiowiInIZhmEw6Zbm2AxYvOskmw7FX3HZJ6OepKZfTU6knWDyxsnl4qE4m48P4ZMnU+PV/2Dz9+f8zp3E9ruVpK+/tjpa6bj+32Czw8EVcOA7q9OIVDrFam6xYcMGvv76a0aOHMnYsWNZvnw5K1asIDAw0AURRUTkSppHBHBn+0gAJn25m5xcx2WX8/Pw44VuL+BmuPHN4W/48uCXpRmzRKr07k29RQvxbtMGR2oqJ8aOI3XdeqtjuV5IfejwUN7P3z4JuZWkuYlIGaF+klE/iyJSvp1Ly6LHS6tIOp/Nv/s2596Oda647Kxds5j+43S83b159OpHcTfci7VNwzDwdPPE080Tu5s9/2cPN4+C/7V5FJhmM4p8byafmZPDySf/RdIXX+DTrh21P5xb7HWVGxlJML0NpMdDn2kQ9aDVicoUXb/FlQpdJG/cuJH4+Hhuuumm/GkffPABEydOJC0tjX79+vH666/j6Vn+Oj7XSSYi5d3cjYd56ovdBHjbWTmuB8G+lw5ZDZDryGX4d8PZGre1lBPmsdvsJSqWA5MdvPBaEu4OeO4+fw7WKlqRb2DQplobRrQeQfOQ5sXKUOq2vgNfjwXvIHh4O/gEW52ozND1W1yp0EVynz596NGjB0888QQAP/30E1dffTVDhw6ladOmvPjiizz44INMmjTJlXldQieZiJR3ObkObnp9Hb/EpTA4KpJnb21xxWXPpJ/hte2vkZ6TXuzt5TpyyXJkkZWbRWZuZv5///jzhf+aOPcPlg99nct1u0y2NjR48Ta3Yq+nV2QvRrYeScOghk5M5wK5OTCzC5zZC+Gt84asDqxldaoyQddvcaVCF8nh4eF89dVXtGvXDoAnn3yS1atXs27dOgDmz5/PxIkT2bOn/HVVo5NMRCqCzYfiGfT2JgwDvhrdhatqBFgdCdM0yTFzLimcHebl204XhuPwUbLueAhME49PZmKrG1noz6Znp/Ph3g/5+tDXmJgYGPSp24eRrUdSu0rtYmdyuePb4MPb4HwC+ITAwNlQt5vVqSyn67e4UqGLZC8vLw4cOECtWnm/vXbp0oU+ffrw5JNPAnD48GFatGhBSkrZ71roYjrJRKSiePjjH/lq5wna1Q5i/kMdMQzD6kgucezhh0n57nsCbr2ViKlFH3DjYOJBZuyYwXe/5vUa4Wa4cUv9W3io1UNE+EU4O65zJB6BTwZD3C4w3PJ6v+g4Cirov3Fh6PotrlToRmFhYWHExsYCkJWVxfbt2+nQoUP+/JSUFOx2u/MTiohIof3fjU3wtrvxw6/n+GLHCavjuEzIAw8AkLR4MdknTxb58/UD6/NKj1f4303/o1vNbuSauSyMWcjfFv6NZzc9y+n0086OXHKBkXD/t9DqTjBz83q8WPAAZBW/2YyIXFmhi+Qbb7yR8ePHs3btWiZMmICPjw9du3bNn79r1y7q16/vkpAiIlI44QHejL6uAQDPLdlLamaOxYlcw7tVK3zat4fsbBJmzyn2epqFNGNGzxnM7TOXqPAochw5fLLvE278/EZe2voSCRkJTkztBHZv6PdmXk8Xhhv8/Bm8ez0kxFqdTKTCKXSRPHnyZNzd3enevTuzZs1i1qxZeHj8/vT0e++9xw033OCSkCIiUnj3d6lLZLAPp1MymbEyxuo4LhMyPO9u8rn588lNTCzRulpXa807N7zDuze8S+uqrcnMzWTOnjn0XtCb6dunk5yV7ITETmIYeV3BDfkSfKvCqZ/h7R4Qs9zqZCIVSpH7SU5KSsLPzw83t4JPFCckJODn51egcC4v1KZJRCqa7/ec4oEPfsDuZvDtP7pTN9TX6khOZ5omsbf2J/OXXwh95GGqjhzptPWuO76O1398nb0JecN9+3v4M7T5UAY3HYyvvQzty6Tj8Ok9eQ/2YUDPp6HLPypNO2Vdv8WVNJgIOslEpOIxTZOh729l9f4zXNekGu8NvcbqSC6RtPhrTowbh1tQEA1WLMfm7e20dZumyYojK/jvjv8Sk5h3R97b3btsFckApgmZKZB9Pu+9uyd4BVxSKLcIbcHkzpMJ8LS+1xNn0fVbXElFMjrJRKRiOngmld6vriE71+S9oe24rkmY1ZGczszJ4WDvPmQfO0bYv/5F8N2Dnb6NXEcuyw4v442db/Br8q9OX39pahrclLeuf4sgryCroziFrt/iSiqS0UkmIhXX1CV7eWvNIeqE+LDsH93wdC/+4BtlVcJHH3Hq35OxR0RQf9lSDBf1tJTjyOFw0mFyzVyXrN8p4n6GZU/C+bNg98trflGnMwkZCYxfO56EjAQaBDZg1g2zCPUOtTptien6La6kIhmdZCJScaVkZHPdy6s5k5LJE72bMKJHxeuFyJGRQcx1PclNSCDixWkE3Hyz1ZGslRIHn94LRzfnve/xf9DtnxxKOcwDyx7gzPkz1KlSh3dueIcw3/L91wVdv8WVCt27hYiIlD/+XnbG924CwOsrDnAqOcPiRM5n8/Ii+N57AIif9Q6V/t6Pf3UYshja3Z/3ftVz8L/B1PMMYXbv2YT7hnM4+TBDlw7lRGrF7UtbpKRUJIuIVHC3tqnB1ZGBpGflMnXJXqvjuETQnXdi8/Ehc/9+0tassTqO9dw94KZX4Jb/gpsH7FsC795ApJsPs3vPpqZfTY6lHmPo0qEcST5idVqRMklFsohIBWezGUy6pTmGAYt2nOCHw2VsgAwncAsIIHDQICDvbrL85up74L6l4B8OZ36BebcRYfdndu/Z1KlSh5NpJxm2dBiHkg5ZnVSkzFGRLCJSCbSsGcigdrUAmPjlbnIdFa9JQvDQIWC3k/7DD6T/+KPVccqOGm3h3i/BOxhO/AifDCbMM5D3e79Pg8AGnD5/mmFLh7H/3H6rk4qUKSqSRUQqiX9GN8bfy53dJ5L5ZGvF+xO7PSyMgFvyHtqLf+ddi9OUMVUbwd2fgd0XYlfD58MJ9Qzivej3aBrclISMBO5bdh974vdYnVSkzFDvFujpWBGpPN5fH8szX+0hyMfOZyM64eNRsbqEyz0cS8odt4Fp4v/xZ7jVq1dgvoFBWBVPjEoyIt0lDq6Ej26H3CxoOwxu+g9JWcmM+H4EP539CX+7PzOvn0nLqi2tTlooun6LK6lIRieZiFQe2bkO/jZ9LftPpVodxWX+tXk2nU/+zLeR7fjP1XdcMj+qbjDvDb0GX093C9KVAbsXwfyhgAndHofrniQ1K5VRy0ex/fR2fNx9eKPXG7QNa2tx0L+m67e4kppbiIhUInY3G1P7tyDY1wMPN1uFfC1q0hOA645uJyIzqcA8w4DNsQmM+mg72bkOi/81LNK8H/zt5byf10yDTTPx8/DjzV5vElU9ivScdEZ8P4JNJzdZGlPEarqTjH4TFRGpaH69dwjpW7YQPGQIYRPG50/ffuQcd83aREa2g/5tavDSwFbYbJW06cXqabDy2byf+78DLQeSkZPBmFVjWH98PR42D1699lW61uxqbc4/oeu3uJLuJIuISIUTMvwBAM7Nn09uYmL+9Ksjg3hj8NW42Qw+//E4Lyz9xaKEZUC3f0L7B/N+XvQQHPgOL3cvpl87nWtrXUuWI4tHVj7C8iPLrc0pYhEVySIiUuH4dumCZ5MmmOnpJHz0UYF51zUJ4/n+LQB4a80h3llbSfsINgzo/Ty0GAiOHPjfPXB0Cx5uHrzc42Wi60ST48hh7KqxLI1danVakVKn5hbozzUiIhVR0uKvOTFuHG5BQTRYsRybt3eB+W+simHa0n0AvHZHa/q2rmFFTOvlZMEnd0LM9+AVmDf4SLWm5DhyeHr903x16Ctsho0afiXbP29f/zY1/Ws6J/NvdP0WVyrTd5InTZqEYRgFXk2aNMmfn5GRwahRowgJCcHPz48BAwZw6tQpCxOLiEhZUaV3NPaaNck9d47EBZ9fMn9E9/oM7VQHgHHzd7L2wJlSTlhGuHvA7R9AzfaQkQhz+0PiEdxt7kzpMoXbGt2Gw3RwNOVoiV45jhyrv6lIkZTpO8mTJk3is88+4/vvv8+f5u7uTmhoKAAjRozg66+/Zvbs2QQEBDB69GhsNhvr168v0nb0m6iISMWU8NFHnPr3ZOwREdRfthTDbi8w3+EweeSTH1m86yS+Hm588veOtKgZYFFai6UnwPt98oavDmkA9y0D37zr7aHEQyRnJZdo9U2Cm+Dl7uWMpPl0/RZXKvNF8qJFi9ixY8cl85KSkqhatSofffQRt912GwC//PILTZs2ZePGjXTo0KHQ29FJJiJSMTkyMoi5rie5CQlEvDiNgJtvvmSZzJxc7pu9lfUx8YT4erBgRCfqhPpakLYMSDoO70VD0lEIbw1DF4Onv9WprkjXb3GlMt3cAuDAgQNERERQr149Bg8ezJEjeUOpbtu2jezsbHr16pW/bJMmTYiMjGTjxo1/us7MzEySk5MLvEREpOKxeXkRfO89AMTPeofL3RfydHdj5t1taR5Rhfi0LO59bwunUzJKO2rZEFAD7lkEPiFwcgd8chfkZFqdSsQSZbpIjoqKYvbs2SxdupQ333yT2NhYunbtSkpKCnFxcXh4eBAYGFjgM2FhYcTFxf3peqdOnUpAQED+q1atWi78FiIiYqWgO+/E5uND5v79pK1Zc9ll/L3svD/sGmoFe3MkIZ1h728lJSO7lJOWEaEN4O4F4OEHsWtgwQPgyLU6lUipK9NFcp8+fRg4cCAtW7YkOjqaJUuWkJiYyKefflqi9U6YMIGkpKT819GjR52UWEREyhq3gAACBw0C8u4mX0k1fy/m3hdFiK8Hu08k89CH28jMqaTFYUQbuOMjcPOAvV/C149BZipkpRX/5aikIxxKuVWuBq4PDAykUaNGxMTEcP3115OVlUViYmKBu8mnTp2ievXqf7oeT09PPD09XZxWRETKiuChQ0j48EPSf/iB9B9/xKdNm8suVyfUl9nD2nPH2xtZHxPP2E93Mv2ONpVzVL563WHAO/DpENg2O+9VEqO35d2lFiknylWRnJqaysGDB7nnnnto27Ytdrud5cuXM2DAAAD27dvHkSNH6Nixo8VJRUSkLLGHhRFwy80kLficow8+hL1mDdyDQ3APCcEtNAT3kFDcQ4JxCwmlYWgIb91Uh/sXHmDxrpNU9ffk6ZuaYRiVsFBu1hdumQ7fjIfsNKvTiJSqMt27xbhx47j55pupXbs2J06cYOLEiezYsYM9e/ZQtWpVRowYwZIlS5g9ezZVqlTh4YcfBmDDhg1F2o6ejhURqfgyY2OJ7T8A8/z5Qi1vGgbJdh/OefoREBFG7fo1cQsMBDc31wYtg2x2d4IGDcAeHl78lbh7gc25rTx1/RZXKtN3ko8dO8add95JfHw8VatWpUuXLmzatImqVasC8J///AebzcaAAQPIzMwkOjqaN954w+LUIiJSFnnWrUvD1avIOnKU3IR4cs7GkxN/ltyz8eQkJJAbf/a3afHknjuH4XAQkJVGQFYa7DtF8r5dVn8FS2WfPUuNadOsjiFSasr0neTSot9ERUTkj8zcXHITE8k5G8+H32xn/dYDBGWlcmeTQGqHeP/1CiqQ3Ph4Eud/hltICA3XrS1TzU50/RZXKtN3kkVERKxguLnhHpLXZvm+hg3ZM38nn/94nK8cBlXPV64Hv909s5nu/iWe8fEMGv8hx4NqAHChVjYMMDAKTuPCPCP//Zz72lMr2KcUk4uUjIpkERGRP2GzGbxwW0uSzmez/JfTnEiqfAON7AquyzWn9xFx8Ge2NAgu1jqyc9UFnJQvKpJFRET+gt3NxjtD2rH/VCpZOZWv2DPCfoW39jHc5yzDRnXmQjtN0zT/8POFpc0C7y9MjgisXM1UpPxTkSwiIlIIhmHQuLq/1TEskdHnOmLfeh23n3fQLMwHw8PD6kgiLlemR9wTERER63k2aoRbcDBmejrnd1XuXj6k8lCRLCIiIn/KsNnw7dABgLQNGy1OI1I6VCSLiIjIX/LtlDeabdpGFclSOahIFhERkb/k2zGvSD6/axe5qakWpxFxPRXJIiIi8pfsNWpgrx0Jubmkb9lidRwRl1ORLCIiIoVy4W6y2iVLZaAiWURERArFt2MnQO2SpXJQkSwiIiKF4tshCgyDrIMHyT51yuo4Ii6lIllEREQKxS0gAK+rrgJ0N1kqPhXJIiIiUmgX2iWnq0iWCk5FsoiIiBRafn/JGzZimqbFaURcR0WyiIiIFJp3mzYYnp7knDlD1sGDVscRcRkVySIiIlJoNk9PfNq2BdQVnFRsKpJFRESkSDREtVQGKpJFRESkSHwuPLy3ZQtmdrbFaURcQ0WyiIiIFIlX06a4BQTgSEvj/E8/WR1HxCVUJIuIiEiRGDZb/t1ktUuWikpFsoiIiBSZ2iVLRaciWURERIrMt1MnAM7v3EluaprFaUScT0WyiIiIFJlHzZrYa9WCnBzSf9hqdRwRp1ORLCIiIsWiIaqlIlORLCIiIsXyxyGqRSoaFckiIiJSLD5RUWAYZB44QM6ZM1bHEXEqFckiIiJSLO5BQXg1bQqolwupeFQki4iISLGpyYVUVCqSRUREpNjyBxXZuBHTNC1OI+I8KpJFRESk2HzatsXw8CDn1CmyYmOtjiPiNCqSRUREpNhsXl54t70aUJMLqVhUJIuIiEiJ+HbMG31PD+9JRaIiWUREREokf1CRzZsxc3IsTiPiHCqSRUREpES8mjXFFhCAIzWVjJ9/tjqOiFOoSBYREZESMdzc8I2KAtTkQioOFckiIiJSYuovWSoaFckiIiJSYvntknfswJGWZnEakZJTkSwiIiIlZo+MxB4RAdnZpG/bZnUckRJTkSwiIiIlZhgGPmpyIRWIimQRERFxCt8/DFEtUt6pSBYRERGnuFAkZ+7bR87ZsxanESkZFckiIiLiFO7BwXg2bQpA2qbNFqcRKRkVySIiIuI0vze52GBxEpGSUZEsIiIiTpNfJG/YiGmaFqcRKT4VySIiIuI0Pm2vxrDbyTl5kuxff7U6jkixqUgWERERp7H5+ODdpg2gXi6kfFORLCIiIk71+xDVapcs5ZeKZBEREXGq/HbJmzZj5uZanEakeFQki4iIiFN5NW+Ozd8fR0oKGbt3Wx1HpFhUJIuIiIhTGe7u+ES1BzREtZRfKpJFRETE6Xw7dQL08J6UXyqSRURExOkutEs+v307jvPnLU4jUnQqkkVERMTpPOrUwT08HDM7m/Rt262OI1JkKpJFRETE6QzD0BDVUq6pSBYRERGX+L1IVrtkKX9UJIuIiIhL+HbsAEDmnr3kJCRYnEakaFQki4iIiEu4h4bi2agR7tWqkX30qNVxRIrE3eoAIiIiUnFFzpmNW2AghmFYHUWkSCrMneQZM2ZQp04dvLy8iIqKYsuWLVZHEhERqfTcg4JUIEu5VCGK5P/973889thjTJw4ke3bt9OqVSuio6M5ffq01dFEREREpByqEEXyK6+8wvDhwxk2bBjNmjVj5syZ+Pj48N5771kdTURERETKoXJfJGdlZbFt2zZ69eqVP81ms9GrVy82XqHLmczMTJKTkwu8REREREQuKPdF8tmzZ8nNzSUsLKzA9LCwMOLi4i77malTpxIQEJD/qlWrVmlEFREREZFyotwXycUxYcIEkpKS8l9H1S2NiIiIiPxBue8CLjQ0FDc3N06dOlVg+qlTp6hevfplP+Pp6Ymnp2dpxBMRERGRcqjc30n28PCgbdu2LF++PH+aw+Fg+fLldPxtOEwRERERkaIo93eSAR577DGGDBlCu3btaN++Pa+++ippaWkMGzbM6mgiIiIiUg5ViCJ50KBBnDlzhqeffpq4uDhat27N0qVLL3mYT0RERESkMAzTNE2rQ1gtOTmZgIAAkpKSqFKlitVxREREpBB0/RZXKvdtkkVEREREnE1FsoiIiIjIRVQki4iIiIhcpEI8uFdSF5pla3hqERGR8uPCdVuPV4krqEgGUlJSADQ8tYiISDmUkpJCQECA1TGkglHvFuQNPnLixAn8/f0xDMNp601OTqZWrVocPXpUT90WgfZb8Wi/FZ32WfFovxWP9lvx/Nl+M02TlJQUIiIisNnUglScS3eSAZvNRs2aNV22/ipVquh/iMWg/VY82m9Fp31WPNpvxaP9VjxX2m+6gyyuol+7REREREQuoiJZREREROQiKpJdyNPTk4kTJ+Lp6Wl1lHJF+614tN+KTvuseLTfikf7rXi038QqenBPREREROQiupMsIiIiInIRFckiIiIiIhdRkSwiIiIichEVySIiIiIiF1GR7EIzZsygTp06eHl5ERUVxZYtW6yOVKZNmjQJwzAKvJo0aWJ1rDJlzZo13HzzzURERGAYBosWLSow3zRNnn76acLDw/H29qZXr14cOHDAmrBlyF/tt6FDh15y7PXu3duasGXE1KlTueaaa/D396datWr069ePffv2FVgmIyODUaNGERISgp+fHwMGDODUqVMWJS4bCrPfevToccnx9tBDD1mUuGx48803admyZf6AIR07duSbb77Jn69jTaygItlF/ve///HYY48xceJEtm/fTqtWrYiOjub06dNWRyvTmjdvzsmTJ/Nf69atszpSmZKWlkarVq2YMWPGZedPmzaN6dOnM3PmTDZv3oyvry/R0dFkZGSUctKy5a/2G0Dv3r0LHHsff/xxKSYse1avXs2oUaPYtGkT3333HdnZ2dxwww2kpaXlL/OPf/yDr776ivnz57N69WpOnDhB//79LUxtvcLsN4Dhw4cXON6mTZtmUeKyoWbNmjz//PNs27aNH374geuuu46+ffuye/duQMeaWMQUl2jfvr05atSo/Pe5ublmRESEOXXqVAtTlW0TJ040W7VqZXWMcgMwFy5cmP/e4XCY1atXN1988cX8aYmJiaanp6f58ccfW5CwbLp4v5mmaQ4ZMsTs27evJXnKi9OnT5uAuXr1atM0844tu91uzp8/P3+ZvXv3moC5ceNGq2KWORfvN9M0ze7du5uPPvqodaHKiaCgIPOdd97RsSaW0Z1kF8jKymLbtm306tUrf5rNZqNXr15s3LjRwmRl34EDB4iIiKBevXoMHjyYI0eOWB2p3IiNjSUuLq7AcRcQEEBUVJSOu0JYtWoV1apVo3HjxowYMYL4+HirI5UpSUlJAAQHBwOwbds2srOzCxxvTZo0ITIyUsfbH1y83y6YN28eoaGhXHXVVUyYMIH09HQr4pVJubm5fPLJJ6SlpdGxY0cda2IZd6sDVERnz54lNzeXsLCwAtPDwsL45ZdfLEpV9kVFRTF79mwaN27MyZMneeaZZ+jatSs///wz/v7+Vscr8+Li4gAue9xdmCeX17t3b/r370/dunU5ePAg//d//0efPn3YuHEjbm5uVseznMPhYMyYMXTu3JmrrroKyDvePDw8CAwMLLCsjrffXW6/Adx1113Url2biIgIdu3axRNPPMG+ffv4/PPPLUxrvZ9++omOHTuSkZGBn58fCxcupFmzZuzYsUPHmlhCRbKUGX369Mn/uWXLlkRFRVG7dm0+/fRT7r//fguTSUV3xx135P/cokULWrZsSf369Vm1ahU9e/a0MFnZMGrUKH7++Wc9I1BEV9pvf//73/N/btGiBeHh4fTs2ZODBw9Sv3790o5ZZjRu3JgdO3aQlJTEZ599xpAhQ1i9erXVsaQSU3MLFwgNDcXNze2SJ29PnTpF9erVLUpV/gQGBtKoUSNiYmKsjlIuXDi2dNyVXL169QgNDdWxB4wePZrFixezcuVKatasmT+9evXqZGVlkZiYWGB5HW95rrTfLicqKgqg0h9vHh4eNGjQgLZt2zJ16lRatWrFa6+9pmNNLKMi2QU8PDxo27Yty5cvz5/mcDhYvnw5HTt2tDBZ+ZKamsrBgwcJDw+3Okq5ULduXapXr17guEtOTmbz5s067oro2LFjxMfHV+pjzzRNRo8ezcKFC1mxYgV169YtML9t27bY7fYCx9u+ffs4cuRIpT7e/mq/Xc6OHTsAKvXxdjkOh4PMzEwda2IZNbdwkccee4whQ4bQrl072rdvz6uvvkpaWhrDhg2zOlqZNW7cOG6++WZq167NiRMnmDhxIm5ubtx5551WRyszUlNTC9xtio2NZceOHQQHBxMZGcmYMWOYMmUKDRs2pG7dujz11FNERETQr18/60KXAX+234KDg3nmmWcYMGAA1atX5+DBgzz++OM0aNCA6OhoC1Nba9SoUXz00Ud88cUX+Pv757f9DAgIwNvbm4CAAO6//34ee+wxgoODqVKlCg8//DAdO3akQ4cOFqe3zl/tt4MHD/LRRx9x4403EhISwq5du/jHP/5Bt27daNmypcXprTNhwgT69OlDZGQkKSkpfPTRR6xatYply5bpWBPrWN29RkX2+uuvm5GRkaaHh4fZvn17c9OmTVZHKtMGDRpkhoeHmx4eHmaNGjXMQYMGmTExMVbHKlNWrlxpApe8hgwZYppmXjdwTz31lBkWFmZ6enqaPXv2NPft22dt6DLgz/Zbenq6ecMNN5hVq1Y17Xa7Wbt2bXP48OFmXFyc1bEtdbn9BZjvv/9+/jLnz583R44caQYFBZk+Pj7mrbfeap48edK60GXAX+23I0eOmN26dTODg4NNT09Ps0GDBuY///lPMykpydrgFrvvvvvM2rVrmx4eHmbVqlXNnj17mt9++23+fB1rYgXDNE2zNItyEREREZGyTm2SRUREREQuoiJZREREROQiKpJFRERERC6iIllERERE5CIqkkVERERELqIiWURERETkIiqSRUREREQuoiJZRMq02bNnExgY6PLtTJo0idatW7t8O0XVo0cPxowZY3UMEZFKR4OJiFRwcXFxPPvss3z99dccP36catWq0bp1a8aMGUPPnj2tjveXzp8/T0pKCtWqVXPpdlJTU8nMzCQkJASAoUOHkpiYyKJFi1y63QtWrVrFtddey7lz5wr8UpCQkIDdbsff379UcoiISB53qwOIiOscPnyYzp07ExgYyIsvvkiLFi3Izs5m2bJljBo1il9++cXqiH/J29sbb29vl2/Hz88PPz8/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n_init_val = 10\n", + "#df_bo = bo_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "#df_rand = random_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# we already got the statistics from all seeds above, but only want to plot one example for each so just pick first seed \n", + "plot_bo = bo_results[bo_results['seed'] == 0]\n", + "plot_rand = random_results[random_results['seed'] == 0]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "for idx, row in plot_bo.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_list_bo[(n_init_val, row['noise_level'], True)][0][n_init_val:]\n", + " std = sm_list_bo[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"BO, noise_level={row['noise_level']}\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in plot_rand.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_list_random[(n_init_val, row['noise_level'], True)][0][n_init_val:]\n", + " std = sm_list_random[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"Random Baseline\", linestyle=\"--\")\n", + " break\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.3, 1))\n", + "plt.title(f\"BayBE Optimization, {n_init_val} initial observations\")\n", + "\n", + "ax.set_xlabel('Campaign iteration')\n", + "ax.set_ylabel('Schwefel function value')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "e4e856df-7791-447b-8f6e-fc78cf1cd769", + "metadata": {}, + "source": [ + "Note: The random baseline is a flatline because the random search finds the best point at the 10th iteration with our seeds, which is not shown here because it falls within the initial random data collection phase. " + ] + }, + { + "cell_type": "markdown", + "id": "8989570b-6b02-4e6a-99c7-f7ccafb0bb7f", + "metadata": {}, + "source": [ + "2. Fix noise value, compare initial data number" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "409f03ea-c50e-461d-850d-f7723b031f98", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rwsPD2fGjBk89NBDuLq6Ur9+fT7++ONSMVa27n96++238ff3x93dnTFjxjBlypRSQyVGjRrFvffey3/+8x+CgoLw9fVl/PjxGAyGax6rfw63+Pe//83ChQv5/fffUalUqFQqNm3aBMCFCxd44IEH8PLywsfHh6FDhxIXF1eu7pkzZxIcHExkZCQAixYtolOnTri7uxMYGMjDDz9MSkoKYP4x06dPHwC8vb1RqVSMGjUKKD/cIiMjg8cffxxvb29cXFwYPHgwp0+fLne81qxZQ/PmzXFzc2PQoEEkJiZe870LIYQoT5JkIWqp9PR0Vq9ezfjx43F1dS33/D8TT7VazYcffsjRo0dZuHAhGzZs4JVXXilVPj8/nw8//JAffviB1atXs2nTJu677z5WrVrFqlWrWLRoEZ9//jk///xzqdfNmzePtm3bsn//fqZMmcLEiRNZt25dler+p8WLFzNz5kzmzJlDdHQ0oaGhfPrpp+XKbdy4kTNnzrBx40YWLlzIggULWLBgQaWO3eTJk3nggQdKksvExES6d++OwWBg4MCBuLu7s3XrVrZv316ShOr1+pLXr1+/npMnT7Ju3TpWrlwJgMFgYMaMGRw8eJDffvuNuLi4kkQ4JCSEX375BYCTJ0+SmJjIBx98UGFso0aNYt++fSxfvpydO3eiKApDhgwp9QMgPz+f//znPyxatIgtW7YQHx/P5MmTK/XehRBCXKEIIWql3bt3K4Dy66+/Vvm1S5cuVXx9fUsez58/XwGU2NjYkm1PP/204uLiouTk5JRsGzhwoPL000+XPA4LC1MGDRpUat8PPvigMnjw4CrV7enpWfK4a9euyvjx40u9pkePHkrbtm1LHo8cOVIJCwtTiouLS7b961//Uh588MFr1vvmm2+W28fQoUNLlVm0aJESGRmpmEymkm1FRUWKs7OzsmbNmpLXBQQEKEVFRdesS1EUZe/evQpQcvw2btyoAEpGRkapcr169VImTpyoKIqinDp1SgGU7du3lzx/+fJlxdnZWfnpp58URan4/9XHH3+sBAQEXDceIYQQpUlPshC1lFKFa3L/+usv+vbtS/369XF3d+exxx4jLS2N/Pz8kjIuLi40atSo5HFAQADh4eGlxvEGBASUDCG4Kioqqtzj48ePV6nufzp58iRdunQpta3sY4CWLVui0WhKHgcFBZWLraoOHjxIbGws7u7uJWOYfXx8KCws5MyZMyXlWrduXW4ccnR0NHfffTehoaG4u7vTq1cvAOLj4ytd//Hjx3FwcKBr164l23x9fYmMjCx1TMv+v6qO9y6EEHWNJMlC1FJNmjRBpVLd8OK8uLg47rrrLtq0acMvv/xCdHR0ybjhfw4h0Gq1pV6nUqkq3GYymSodY2Xrvhm3GltFcnNz6dixIwcOHCh1O3XqFA8//HBJubLDW/Ly8hg4cCAeHh4sXryYvXv3smzZMuDW32dFKnrvVfnRJIQQQpJkIWotHx8fBg4cyMcff0xeXl655zMzMwFzD6fJZOK///0v3bp1o2nTpiQkJFRbHP+8QPDq4+bNm9903ZGRkezdu7fUtrKPq4NOpyt1ESJAhw4dOH36NP7+/jRu3LjUzdPT85r7OnHiBGlpacyePZvbb7+dZs2alevZvdrzXLbOf2revDnFxcXs3r27ZFtaWhonT56kRYsWN/M2hRBCXIMkyULUYh9//DFGo5EuXbrwyy+/cPr0aY4fP86HH35YMgyicePGGAwG/ve//3H27FkWLVrEZ599Vm0xbN++nblz53Lq1Ck+/vhjli5dysSJE2+67ueee46vv/6ahQsXcvr0ad5++20OHTqESqWqtpjBPDPHoUOHOHnyJJcvX8ZgMPDII49Qr149hg4dytatWzl37hybNm3i+eef5+LFi9fcV2hoKDqdruR9Ll++nBkzZpQqExYWhkqlYuXKlaSmppaa4eOqJk2aMHToUMaOHcu2bds4ePAgjz76KPXr12fo0KHV+v6FEKKukyRZiFqsYcOGxMTE0KdPH1566SVatWpF//79Wb9+fcmMEG3btuXdd99lzpw5tGrVisWLFzNr1qxqi+Gll15i3759tG/fnrfffpt3332XgQMH3nTdjzzyCFOnTmXy5Ml06NCBc+fOMWrUKJycnKotZoCxY8cSGRlJp06d8PPzY/v27bi4uLBlyxZCQ0O5//77ad68OaNHj6awsBAPD49r7svPz48FCxawdOlSWrRowezZs/nPf/5Tqkz9+vV56623mDJlCgEBAUyYMKHCfc2fP5+OHTty1113ERUVhaIorFq1qtwQCyGEELdGVtwTQlhMeHg4L7zwgsWXVe7fvz+BgYEsWrTIovUIIYSoO2TFPSFEjZKfn89nn33GwIED0Wg0fP/99/z111+l5l4WQgghbpUkyUKIGkWlUrFq1SpmzpxJYWEhkZGR/PLLL/Tr18/WoQkhhKhFZLiFEEIIIYQQZciFe0IIIYQQQpQhSbIQQgghhBBlSJIshBBCCCFEGZIkCyGEEEIIUYYkyUIIIYQQQpQhSbIQQgghhBBlSJIshBBCCCFEGZIkCyGEEEIIUYYkyUIIIYQQQpTx/9jJGhBq561AAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "noise_level_val = 10\n", + "#df_bo = bo_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "#df_rand = random_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# we already got the statistics from all seeds above, but only want to plot one example for each so just pick first seed \n", + "plot_bo = bo_results[bo_results['seed'] == 0]\n", + "plot_rand = random_results[random_results['seed'] == 0]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "for idx, row in plot_bo.iterrows():\n", + " if row['noise_level'] == noise_level_val:\n", + " n_init_val = row['n_init']\n", + " mean = sm_list_bo[(row['n_init'], noise_level_val, True)][0][n_init_val:]\n", + " std = sm_list_bo[(row['n_init'], noise_level_val, True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"BO, n_init={row['n_init']}\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in plot_rand.iterrows():\n", + " if row['noise_level'] == noise_level_val:\n", + " n_init_val = row['n_init']\n", + " mean = sm_list_random[(row['n_init'], noise_level_val, True)][0][n_init_val:]\n", + " std = sm_list_random[(row['n_init'], noise_level_val, True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"Random Baseline, n_init={row['n_init']}\", linestyle=\"--\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " #break\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.3, 1))\n", + "plt.title(f\"BayBE Optimization, noise level {noise_level_val}\")\n", + "\n", + "ax.set_xlabel('Campaign iteration')\n", + "ax.set_ylabel('Schwefel function value')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ae3f1ea5-856d-47a3-9010-7a4d4ceb8b1f", + "metadata": {}, + "source": [ + "### Heat map plot" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "e90c4e71-e671-415d-950b-377a463730b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Bayesian Optimization')" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_bo)\n", + "\n", + "ax.set_title('Bayesian Optimization')" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "5d63c7cd-755c-4fd3-8506-a317bf5bdd43", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Random')" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAHHCAYAAAAWM5p0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABSV0lEQVR4nO3deVxV1f7/8ddhOgoIiBOaU2miqKhAGQ1mzkpmZWZdCjOvdk1zKjOaHCoxrbRRrSy9V72WmqXmPKcSKuYVhxxRTEQ0REQFBc7vj76dXycnjp7tOXDezx778YC191n7s13x4MNnrb23yWKxWBARERExiIezAxAREZHSTcmGiIiIGErJhoiIiBhKyYaIiIgYSsmGiIiIGErJhoiIiBhKyYaIiIgYSsmGiIiIGErJhoiIiBhKyYaIG3vmmWeoXbu2s8MQkVJOyYbITTJ16lRMJpN18/Ly4pZbbuGZZ57h6NGjzg5PRMQwXs4OQMTdjBo1iltvvZW8vDx+/vlnpk6dyvr169mxYwdlypRxdngiIg6nZEPkJuvYsSNRUVEA/POf/6RixYq8++67zJ8/n8cff9zJ0YmIOJ6mUUSc7L777gPgwIEDAFy4cIE333yTyMhIAgMD8fPz47777mP16tU2nzt06BAmk4n33nuPzz//nDp16mA2m7njjjvYvHnzJef5/vvvadSoEWXKlKFRo0bMmzfvsvGcPXuWF198kRo1amA2mwkNDeW9997j7y+INplM9O/fn9mzZxMWFkbZsmWJjo4mJSUFgMmTJ1O3bl3KlClDy5YtOXTo0I3+U4lICaXKhoiT/flLuHz58gDk5OTw5Zdf8uSTT9K7d2/OnDnDlClTaN++PZs2baJp06Y2n585cyZnzpzhueeew2QyMXbsWB599FEOHjyIt7c3AMuWLaNr166EhYWRkJDA77//Ts+ePalevbpNXxaLhYceeojVq1fTq1cvmjZtytKlSxk6dChHjx5l/PjxNsf/9NNPzJ8/n379+gGQkJDAgw8+yMsvv8xnn33G888/z6lTpxg7dizPPvssq1atMuBfUERcnkVEboqvv/7aAlhWrFhhOXHihOXIkSOWOXPmWCpVqmQxm82WI0eOWCwWi6WgoMCSn59v89lTp05ZqlSpYnn22WetbampqRbAUqFCBUtWVpa1/YcffrAAlgULFljbmjZtaqlataolOzvb2rZs2TILYKlVq5a17fvvv7cAlrffftvm/I899pjFZDJZ9u/fb20DLGaz2ZKammptmzx5sgWwhISEWHJycqzt8fHxFsDmWBFxH5pGEbnJ2rRpQ6VKlahRowaPPfYYfn5+zJ8/31pl8PT0xMfHB4CioiKysrIoKCggKiqKrVu3XtJf9+7drVUR+P/TMgcPHgTg2LFjbNu2jR49ehAYGGg9rm3btoSFhdn0tWjRIjw9PRkwYIBN+4svvojFYmHx4sU27a1bt7a5dbZ58+YAdO3alXLlyl3S/mdMIuJelGyI3GSffvopy5cvZ86cOXTq1ImTJ09iNpttjpk2bRrh4eGUKVOGChUqUKlSJX788UdOnz59SX81a9a0+f7PxOPUqVMAHD58GIDbb7/9ks+GhobafH/48GGqVatmkygANGjQwKavK537z2SmRo0al23/MyYRcS9asyFyk915553Wu1Eefvhh7r33Xv7xj3+wZ88e/P39mT59Os888wwPP/wwQ4cOpXLlynh6epKQkGBdRPpXnp6elz2P5W8LOo1wpXM7MyYRcT2qbIg40Z9JRHp6Op988gkAc+bM4bbbbuO7777j6aefpn379rRp04a8vLzrOketWrUA2Ldv3yX79uzZc8mx6enpnDlzxqb9119/telLRMQeSjZEnKxly5bceeedTJgwgby8PGtV4K9VgKSkJBITE6+r/6pVq9K0aVOmTZtmMw2zfPlydu3aZXNsp06dKCwstCY+fxo/fjwmk4mOHTteVwwi4t40jSLiAoYOHUq3bt2YOnUqDz74IN999x2PPPIIMTExpKamMmnSJMLCwsjNzb2u/hMSEoiJieHee+/l2WefJSsri48//piGDRva9Nm5c2ceeOABXnvtNQ4dOkSTJk1YtmwZP/zwA4MGDaJOnTqOumQRcSOqbIi4gEcffZQ6derw3nvvERcXx+jRo/nf//7HgAEDWLp0KdOnT7eu87geHTp0YPbs2RQWFhIfH893333H119/fUmfHh4ezJ8/n0GDBrFw4UIGDRrErl27GDduHB988MGNXqaIuCmTRSu2RERExECqbIiIiIihlGyIiIiIoZRsiIiIiKGUbIiIiIihlGyIiIiIoZRsiIiIuIExY8ZgMpkYNGgQAFlZWbzwwguEhoZStmxZatasyYABAy55B1NaWhoxMTH4+vpS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A71792bSpElcvHiR/v3788QTTxT7ThTQ48pFRERuAgfNozjYpEmTaNasGb179wagRYsWNGvWjPnz51uPmTFjBvXr16d169Z06tSJe++9l88//9yu8zh1gahRtEBURESK62YsEL39oZHXPqgY9s0f7pB+bjZVNkRERMRQWrMhIiJitJL7dniHULIhIiJiOPfONjSNIiIiIoZSZUNERMRgFvcubCjZEBERMZybJxuaRhERERFDqbIhIiJiOPcubSjZEBERMZi7r9nQNIqIiIgYSpUNERERo7l5ZUPJhoiIiOHcO9tQsiEiImI09841tGZDREREjKXKhoiIiMHc/W4UJRsiIiJGc/NkQ9MoIiIiYihVNkRERAzn3qUNJRsiIiIGc/c1G5pGEREREUOpsiEiImI0VTZEREREjKNkQ0RERAylaRQRERGjmdx7HkXJhoiIiMF0N4qIiIiIgZRsiIiIiKE0jSIiImI0N59GUbIhIiJiNDdfIKppFBERETGUKhsiIiIGszg7ACdTsiEiImI0955F0TSKiIiIGEuVDREREaOpsiEiIiJiHCUbIiIiYihNo4iIiBjNzZ+zoWRDRETEYHoRm4iIiJR6Y8aMwWQyMWjQIGtbXl4e/fr1o0KFCvj7+9O1a1eOHz9u87m0tDRiYmLw9fWlcuXKDB06lIKCArvOrWRDRESklNu8eTOTJ08mPDzcpn3w4MEsWLCA2bNns3btWtLT03n00Uet+wsLC4mJieHChQts3LiRadOmMXXqVN588027zm93srF161ZSUlKs3//www88/PDDvPrqq1y4cMHe7kREREo/k4O265Cbm0tsbCxffPEF5cuXt7afPn2aKVOm8MEHH9CqVSsiIyP5+uuv2bhxIz///DMAy5YtY9euXUyfPp2mTZvSsWNH3nrrLT799FO7fufbnWw899xz7N27F4CDBw/yxBNP4Ovry+zZs3n55Zft7U5ERKT0c1CykZ+fT05Ojs2Wn59/1VP369ePmJgY2rRpY9OenJzMxYsXbdrr169PzZo1SUxMBCAxMZHGjRtTpUoV6zHt27cnJyeHnTt3Fvvy7U429u7dS9OmTQGYPXs2LVq0YObMmUydOpW5c+fa252IiIgUU0JCAoGBgTZbQkLCFY+fNWsWW7duvewxGRkZ+Pj4EBQUZNNepUoVMjIyrMf8NdH4c/+f+4rL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VJInj0REROSmKVaysX37dho1aoSHhwenT58mJSXliseGh4c7LDgREZHSwN3/Pi9WstG0aVMyMjKoXLkyTZs2xWQyYbFYLjnOZDJRWFjo8CBFRERKMjfPNYqXbKSmplKpUiXr1yIiImIHN882ipVs1KpV67Jfi4iIiFzLdb31dd++faxevZrMzEyKiops9r355psOCUxERKS0cPPChv3JxhdffEHfvn2pWLEiISEhNnelmEwmJRsiIiJ/owWidnr77bd55513GDZsmBHxiIiISCljd7Jx6tQpunXrZkQsIiIipZObVzbsfhFbt27dWLZsmRGxiIiIlEomB20lld2Vjbp16/LGG2/w888/07hxY7y9vW32DxgwwGHBiYiISMlnd2Xj888/x9/fn7Vr1/LJJ58wfvx46zZhwgQDQhQRESnZnPGK+YkTJxIeHk5AQAABAQFER0ezePFi6/6MjAyefvppQkJC8PPzIyIigrlz59r0kZWVRWxsLAEBAQQFBdGrVy9yc3Ptvn67Kxt6qJeIiIi9bv4kSPXq1RkzZgy33347FouFadOm0aVLF3755RcaNmxIXFwc2dnZzJ8/n4oVKzJz5kwef/xxtmzZQrNmzQCIjY3l2LFjLF++nIsXL9KzZ0/69OnDzJkz7YrF7sqGiIiIuL7OnTvTqVMnbr/9durVq8c777yDv78/P//8MwAbN27khRde4M477+S2227j9ddfJygoiOTkZAB2797NkiVL+PLLL2nevDn33nsvH3/8MbNmzSI9Pd2uWIpV2RgyZAhvvfUWfn5+DBky5KrHfvDBB3YFICIiUto5+zkbhYWFzJ49m7NnzxIdHQ3A3XffzTfffENMTAxBQUF8++235OXl0bJlSwASExMJCgoiKirK2k+bNm3w8PAgKSmJRx55pNjnL1ay8csvv3Dx4kXr11ei186LiIhchoN+Pebn55Ofn2/TZjabMZvNlz0+JSWF6Oho8vLy8Pf3Z968eYSFhQHw7bff0r17dypUqICXlxe+vr7MmzePunXrAlhfwPpXXl5eBAcHk5GRYVfcxUo2Vq9efdmvRURE5Noc9ad4QkICI0eOtGkbPnw4I0aMuOzxoaGhbNu2jdOnTzNnzhx69OjB2rVrCQsL44033iA7O5sVK1ZQsWJFvv/+ex5//HF++uknGjdu7KCI/3Bd70YRERGRmy8+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W956663LHrt7927CwsLYvHkzUVFRACxZsoROnTrx22+/Ua1atWKfV5UNERGREiI/P5+cnBybLT8//5qfKywsZNasWZw9e5bo6GgyMzNJSkqicuXK3H333VSpUoX777+f9evXWz+TmJhIUFCQNdEAaNOmDR4eHiQlJdkVt5INERERgzlqGiUhIYHAwECbLSEh4YrnTUlJwd/fH7PZzL/+9S/mzZtHWFgYBw8eBGDEiBH07t2bJUuWEBERQevWrdm3bx8AGRkZVK5c2aY/Ly8vgoODycjIsOv6dTeKiIiIwRx1M0p8fDxDhthO+5jN5iseHxoayrZt2zh9+jRz5syhR48erF27lqKiIgCee+45evbsCUCzZs1YuXIlX3311VUTmOuhZENERKSEMJvNV00u/s7Hx4e6desCEBkZyebNm/nwww955ZVXAAgLC7M5vkGDBqSlpQEQEhJCZmamzf6CggKysrIICQmxK25No4iIiBjMGXejXE5RURH5+fnUrl2batWqsWfPHpv9e/fupVatWgBER0eTnZ1NcnKydf+qVasoKiqiefPmdp1XlQ0RERGDOeOZXvHx8XTs2JGaNWty5swZZs6cyZo1a1i6dCkmk4mhQ4cyfPhwmjRpQtOmTZk2bRq//vorc+bMAf6ocnTo0IHevXszadIkLl68SP/+/XniiSfsuhMFlGyIiIiUSpmZmcTFxXHs2DECAwMJDw9n6dKltG3bFoBBgwaRl5fH4MGDycrKokmTJixfvpw6depY+5gxYwb9+/endevWeHh40LVrVz766CO7Y9FzNkRExK3djOdsDFromOdsTHjwxp6z4SyqbIiIiBjMzV+NomRDRETEaHoRm4iIiIiBVNkQERExmJsXNpRsiIiIGE3TKCIiIiIGUmVDRETEYO5e2VCyISIiYjA3zzU0jSIiIiLGUmVDRETEYCY3n0dRsiEiImIw9041NI0iIiIiBlNlQ0RExGBuPouiZENERMRobp5rKNkQERExmoebZxtasyEiIiKGUmVDRETEYG5e2FCyISIiYjR3XyCqaRQRERExlCobN1HXiHAei2hC1cAAAA6e+J0v1//MxoOHAKjg58vAVi2489Za+Pn4cDgri682bGLVnn0AVA0M4J/33EVU7RpU8PPjZG4ui3bs5qsNSRQUFTnrskokjYXr0Fi4Do2Fcdy8sOH8ZOPC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WbNmFBYWkpmZyX333XddcUZERPDNN99QuXJlAgICrnhcbGwsM2bMoHr16nh4eBATE2PTx65du6hbt+51xSAipYumUURuksaNGxMbG8tHH31k0/7iiy+ycuVK3nrrLfbu3cu0adP45JNPeOmlly7bz9SpU5kyZQo7duzg4MGDTJ8+nbJly1KrVi3q1atHbGwscXFxfPfdd6SmprJp0yYSEhL48ccfixVnbGwsFStWpEuXLvz000+kpqayZs0aBgwYYLPINTY2lq1bt/LOO+/w2GOPYTabrfuGDRvGxo0b6d+/P9u2bWPfvn388MMPWiAq4qaUbIjcRKNGjaKoqMimLSIigm+//ZZZs2bRqFEj3nzzTUaNGnXF6ZagoCC++OIL7rnnHsLDw1mxYgULFiygQoUKAHz99dfExcXx4osvEhoaysMPP8zmzZuLPX3h6+vLunXrqFmzJo8++igNGjSgV69e5OXl2VQ66taty5133sn27dutd6H8KTw8nLVr17J3717uu+8+mjVrxptvvkm1atXs+NcSkdLCZLFYLM4OQkREREovVTZERETEUEo2RERExFBKNkRERMRQSjZERETEUEo2RERExFBKNkRERMRQSjZERETEUEo2RERExFBKNkRERMRQSjZERETEUEo2RERExFBKNkRERMRQ/w8C7R1n3hzHGgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_random)\n", + "ax.set_title('Random')" + ] + }, + { + "cell_type": "markdown", + "id": "e4ab425a-61a7-464d-812c-502b9ecd39d7", + "metadata": {}, + "source": [ + "## 'X-distance' plot\n", + "This plot looks at the distance from the true global minimum of the best point found so far in the optization. Unlike the 'best point found' backtesting plots above, the values do fluctuate up and down as a new 'best' local minimum that is found could be further from the global minimum. It looks like most BO schemes are settling into local minima that are not close to the global minimum, while high-noise BO and random baseline seem to have gotten lucky and found the global minima early. " + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "caba841d-9015-4097-a8f6-f046370d33d4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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iRMn8PLyYty4cVy5coWwsDB+/PHHQmO429NPP03jxo354IMP+O2335gzZw7u7u588803dO/enQ8//JCVK1fyxhtv0K5dOx599NECj9O4ceN8501KSmLSpEl4enrqty1duhRHR0cmTZqEo6Mjf/75J9OnTyclJYX58+cD8M4775CcnMy///7LggULAHB0dCz0OWzbto2+fftSp04dZsyYQUZGBv/73//o1KkTR44cyZfwDR06lNq1azNv3jyOHDnC4sWL8fT05MMPPyzy981YWq2WyMjIAhOQ9u3bs3XrVm7duoWTk5PRx37llVdwc3Pjvffe48KFC3z22WdMmDCB0NDQAsc3btyYWbNmMX36dMaOHUvnzp0BePjhhws9R1F+54pKURQGDBjA9u3bGT16NK1atWLLli28+eabXL58Wf8zz7Njxw5CQ0MJDg7GxsaGhQsX0qdPHw4cOKD/3X7xxRf5+eefmTBhAk2aNCExMZHdu3cTHR1NmzZtAN0bqb59+9K2bVvee+891Go1S5YsoXv37uzatYv27dsbnPepp56ifv36vP/++yiKQv/+/Zk8eTKrV6/mzTffNBi7evVqevfujZubGwBr1qwhPT2dl156CQ8PDw4cOMD//vc//v33X335lrG/s3///TedO3fG2dmZyZMnY2VlxTfffEPXrl3ZsWMHHTp0MBh/v9dFQkICvXv3pmrVqrz99tu4urpy4cIF1q5dW9QfpRDCVBQhCrFkyRIFyHezsbFRli5dmm98enq6wf3s7GylWbNmSvfu3fXbkpKSFFtbW+Wtt94yGBscHKw4ODgoqamp+m0FnRtQBg0apGRmZho8PigoqNDxAQEB93yegwYNUgDl5s2bhY5Zu3atAihffPGFoiiKEhMTowCKnZ2d8u+//+rH7d+/XwGUiRMn6reNHz9eKexXDVDee+89/f333ntPAZSxY8fqt+Xm5irVq1dXVCqV8sEHH+i337x5U7Gzs1OCgoL02/LiWrJkSYHn02q1Sv/+/RVHR0fl77//1m+/+2enKIoybtw4xd7e3uB73a9fP6VmzZr5xhZ03latWimenp5KYmKiftvx48cVtVqtjBw5Mt9zfv755w2O+cQTTygeHh4FPg9jXLt2Ld/3+e59s2bNyrfvq6++UgDl1KlT9zx+zZo1DX4Geb83PXv2VLRarX77xIkTFQsL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sLBApVIZtAy7cOEC69evL/AYI0aM4ObNm4wbN67AThn3kteNorBWcsZ6+OGH6dmzJ0uWLGHTpk359r/zzjucOXOGyZMn55vFWr9+PZcvX9bfP3DgAPv376dv3776bXnJYFJSkkniNdaLL77ImTNnWLduncHH1nny3pzcOfuYnZ3NwoUL8411cHAo0sfSPj4+tGrVimXLlhk875MnT7J161Yee+yxYjyTkvHkk09y8OBBg0T59OnT/Pnnnzz11FOlGosxrxVjf+fu57HHHkOj0fDll18abF+wYAEqlcrgNQ2wb98+g9rn2NhYNmzYQO/evbGwsECj0eR7rXh6euLr66svDWnbti1169bl448/LvBN792t0e5lyJAhWFhY8NNPP7FmzRr69+9v8EasoNe5oih8/vnn+Y5V1J+DhYUFvXv3ZsOGDVy4cEG//erVq4SEhPDII48YXSp08+bNfJ8E5C0sU1BZkBCi5MhMsriv33//XT+blJCQQEhICGfPnuXtt9/W/wHo168fn376KX369GH48OEkJCTw1VdfUa9evQLLGFq3bk2zZs1Ys2YNjRs31reDutuZM2f0ZRnp6en89ddfLFu2jHr16uWrYc7NzdWPvdsTTzxxz5nL5cuX06NHDwYOHMjw4cPp3LkzWVlZrF27loiICJ5++ul87aUA6tWrxyOPPMJLL71EVlYWn332GR4eHkyePFk/Ju/ipuDgYAICArCwsGDYsGGFxmJKv/32G8uXL2fIkCFERkYa/CwcHR0ZNGgQDz/8MG5ubgQFBREcHIxKpeLHH38s8CP7tm3bEhoayqRJk2jXrh2Ojo4Gs3V3mj9/Pn379sXf35/Ro0frW8C5uLgUe8nfGTNmMHPmTLZv367vL1yYH3/8kYsXL+p7Le/cuVNfajJixAj9zOjLL7/Md999R79+/XjjjTewsrLi008/xcvLi9dff71YcRZX3bp1cXV15euvv8bJyQkHBwc6dOhQYB2usb9z9/P444/TrVs33nnnHS5cuEDLli3ZunUrGzZs4LXXXtPP+uZp1qwZAQEBBi3gAGbOnAno6virV6/Ok08+ScuWLXF0dGTbtm0cPHhQ399brVazePFi+vbtS9OmTXnuueeoVq0aly9fZvv27Tg7O+vfFN+Pp6cn3bp149NPP+XWrVsGpRag631dt25d3njjDS5fvoyzszO/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot distance of best point from global min\n", + "\n", + "n_init_val = 10\n", + "#df_bo = bo_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "#df_rand = random_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# we already got the statistics from all seeds above, but only want to plot one example for each so just pick first seed \n", + "plot_bo = bo_results[bo_results['seed'] == 0]\n", + "plot_rand = random_results[random_results['seed'] == 0]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "for idx, row in plot_bo.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_x_list_bo[(n_init_val, row['noise_level'], True)][n_init_val:]\n", + " #std = sm_x_list_bo[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"BO, noise_level={row['noise_level']}\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in plot_rand.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_x_list_random[(n_init_val, row['noise_level'], True)][n_init_val:]\n", + " #std = sm_x_list_random[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"Random Baseline\", linestyle=\"--\")\n", + " break\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.3, 1))\n", + "plt.title(f\"BayBE Optimization, {n_init_val} initial observations\")\n", + "\n", + "ax.set_xlabel('Campaign iteration')\n", + "ax.set_ylabel('RMSD of best found point from true min')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "873019f4-a6f1-4674-b2eb-714e6d5f172d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/noisy_optimization_BayBE_original_bounds.ipynb b/noisy_optimization_BayBE_original_bounds.ipynb new file mode 100644 index 0000000..3c86e14 --- /dev/null +++ b/noisy_optimization_BayBE_original_bounds.ipynb @@ -0,0 +1,1190 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ddfe121c-9cad-4d3f-b518-e42c72a1b70b", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "97c15027-9275-43e5-9613-ecbfe31d4914", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import pandas as pd\n", + "import sys\n", + "sys.path.append('./src/baybe_utils')\n", + "from run_grid_experiments_baybe import run_grid_experiments\n", + "from run_grid_experiments_baybe_random import run_grid_experiments_random\n", + "from src import visualization\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from src import schwefel" + ] + }, + { + "cell_type": "markdown", + "id": "5bcc2d3b-c62b-422c-bdee-15eee6f1452c", + "metadata": {}, + "source": [ + "## Intro\n", + "\n", + "This work lightly explores the impact of a noisy oracle on Bayesian optimization performance. Here, the 2-dimensional Schwefel function with Gaussian noise is used as an optimization objective. However, this work is motivated by the need to deal with noisy data when applying BO to experimental optimization. \n", + "\n", + "This notebook looks at optimizing the schwefel function over the range [-50, 50]. See the analogous `noisy_optimization_BayBE_extendedBounds` notebook for optimization over the range [0, 500] which includes the global minimum of the objective. \n", + "\n", + "## Implementation Notes\n", + "\n", + "- This work was done as an entry in the 2024 Bayesian optimization for materials hackathon\n", + "- Our team pursued multiple implementations in parallel\n", + "- This notebook serves as an entry point to the BayBE implementation of the project\n", + "- Individual optimization campaigns are run from the run_experiments() function in run_experiment_babye.py\n", + "- Grid screening of parameters builds on this with funcitonality in the run_grid_experiments_babye.py\n", + "- As this was a hackathon project, there are some hacks. Watch out for hard-coded gotchas throughout. Would not recommend directly re-using code. " + ] + }, + { + "cell_type": "markdown", + "id": "02f05875-7a5c-4f50-8b55-fc0e30340897", + "metadata": {}, + "source": [ + "## 1. Define grid search parameters \n", + "\n", + "This is to run a grid search over experiment parameters like number of BO trials to run, noise level, etc. These values were chosen by the team as 'reasonable' sounding values." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5319bdb1-b6a0-4dfa-b05c-bd854456278d", + "metadata": {}, + "outputs": [], + "source": [ + "seeds = list(range(5)) # run 5 replicates of each parameter set\n", + "n_inits = [2, 4, 8, 10] # Number of initial randomly collected data points\n", + "noise_levels = [1, 5, 10, 20] # variance (?) of gaussian noise. Bigger number -> more noise\n", + "noise_bools = [True] # carryover from BoTorch side of project, ignore\n", + "budget = 30 # Run 30 iterations of BO\n", + "bounds = (-50,50)" + ] + }, + { + "cell_type": "markdown", + "id": "abdf100a-84fe-466f-9b60-67d698e7578e", + "metadata": {}, + "source": [ + "## 2. Run grid search\n", + "\n", + "Run the grid search over parameters. This will take a minute or 60. Results are written to disk so if you are just following along, skip this step and load below " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d8ffedfe-8639-479f-9cee-63f4a0f32e54", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 0, time: 9.03s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 0, time: 15.98s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 0, time: 23.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 0, time: 31.18s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 0, time: 37.90s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 0, time: 45.18s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 0, time: 54.21s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 0, time: 64.93s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 0, time: 73.17s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 0, time: 82.01s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 0, time: 88.16s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 0, time: 95.95s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 0, time: 104.06s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 0, time: 110.81s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 0, time: 118.32s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 0, time: 125.44s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 1, time: 134.62s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 1, time: 142.04s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 1, time: 152.19s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 1, time: 160.21s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 1, time: 167.79s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 1, time: 175.58s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 1, time: 185.98s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 1, time: 192.50s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 1, time: 201.80s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 1, time: 209.80s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 1, time: 217.41s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 1, time: 224.21s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 1, time: 232.65s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 1, time: 240.03s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 1, time: 246.48s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 1, time: 255.71s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 2, time: 263.26s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 2, time: 272.02s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 2, time: 279.79s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 2, time: 287.12s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 2, time: 295.66s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 2, time: 305.75s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 2, time: 317.32s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 2, time: 327.66s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 2, time: 336.58s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 2, time: 344.40s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 2, time: 354.19s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 2, time: 363.36s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 2, time: 372.11s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 2, time: 379.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 2, time: 388.45s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 2, time: 402.06s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 3, time: 411.24s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 3, time: 419.22s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 3, time: 428.12s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 3, time: 436.11s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 3, time: 444.58s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 3, time: 453.59s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 3, time: 462.30s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 3, time: 471.83s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 3, time: 480.32s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 3, time: 488.51s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 3, time: 496.07s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 3, time: 504.09s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 3, time: 512.36s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 3, time: 521.28s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 3, time: 531.76s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 3, time: 544.60s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 1 budget 30 seed 4, time: 554.02s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 5 budget 30 seed 4, time: 561.61s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 10 budget 30 seed 4, time: 569.97s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 2 noise 20 budget 30 seed 4, time: 579.05s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 1 budget 30 seed 4, time: 586.18s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 5 budget 30 seed 4, time: 593.57s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 10 budget 30 seed 4, time: 600.87s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 4 noise 20 budget 30 seed 4, time: 608.02s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 1 budget 30 seed 4, time: 615.86s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 5 budget 30 seed 4, time: 622.96s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 10 budget 30 seed 4, time: 628.90s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 8 noise 20 budget 30 seed 4, time: 635.66s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 1 budget 30 seed 4, time: 642.71s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 5 budget 30 seed 4, time: 650.22s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 10 budget 30 seed 4, time: 655.89s\n", + "Collecting initial observations\n", + "Beginning optimization campaign\n", + "Started problem 10 noise 20 budget 30 seed 4, time: 663.50s\n", + "all experiments done, time: 663.50s\n" + ] + } + ], + "source": [ + "run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget, bounds, 'results_baybe_originalBounds/results_baybe')" + ] + }, + { + "cell_type": "markdown", + "id": "16aeaf0f-14b6-4827-b94a-cb87cd2a4d7c", + "metadata": {}, + "source": [ + "### Run random search as well\n", + "\n", + "Generate some random baseline data to compare against\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5aac4ea7-cb9f-48a4-a874-e4396d8b9e22", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 0, time: 1.24s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 0, time: 2.34s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 0, time: 3.42s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 0, time: 4.47s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 0, time: 5.72s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 0, time: 6.72s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 0, time: 7.76s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 0, time: 8.82s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 0, time: 10.01s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 0, time: 11.16s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 0, time: 12.33s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 0, time: 13.38s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 0, time: 14.50s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 0, time: 15.53s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 0, time: 16.56s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 0, time: 17.75s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 1, time: 18.83s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 1, time: 19.85s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 1, time: 21.08s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 1, time: 22.06s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 1, time: 23.14s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 1, time: 24.14s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 1, time: 25.17s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 1, time: 26.16s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 1, time: 27.23s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 1, time: 28.26s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 1, time: 29.34s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 1, time: 30.44s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 1, time: 31.49s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 1, time: 32.57s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 1, time: 33.72s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 1, time: 34.84s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 2, time: 35.90s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 2, time: 37.27s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 2, time: 38.41s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 2, time: 39.53s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 2, time: 40.74s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 2, time: 41.94s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 2, time: 43.17s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 2, time: 44.51s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 2, time: 45.78s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 2, time: 46.87s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 2, time: 47.91s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 2, time: 48.90s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 2, time: 50.06s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 2, time: 51.21s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 2, time: 52.31s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 2, time: 53.49s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 3, time: 54.92s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 3, time: 55.90s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 3, time: 57.02s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 3, time: 58.10s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 3, time: 59.16s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 3, time: 60.19s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 3, time: 61.83s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 3, time: 63.11s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 3, time: 64.16s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 3, time: 65.30s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 3, time: 66.58s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 3, time: 67.84s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 3, time: 69.13s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 3, time: 70.30s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 3, time: 71.39s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 3, time: 72.60s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 1 budget 30 seed 4, time: 73.87s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 5 budget 30 seed 4, time: 74.97s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 10 budget 30 seed 4, time: 76.17s\n", + "Collecting random observations observations\n", + "Started problem 2 noise 20 budget 30 seed 4, time: 77.46s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 1 budget 30 seed 4, time: 78.68s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 5 budget 30 seed 4, time: 79.76s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 10 budget 30 seed 4, time: 81.08s\n", + "Collecting random observations observations\n", + "Started problem 4 noise 20 budget 30 seed 4, time: 82.32s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 1 budget 30 seed 4, time: 83.38s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 5 budget 30 seed 4, time: 84.39s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 10 budget 30 seed 4, time: 85.45s\n", + "Collecting random observations observations\n", + "Started problem 8 noise 20 budget 30 seed 4, time: 86.59s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 1 budget 30 seed 4, time: 87.73s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 5 budget 30 seed 4, time: 88.80s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 10 budget 30 seed 4, time: 90.28s\n", + "Collecting random observations observations\n", + "Started problem 10 noise 20 budget 30 seed 4, time: 91.53s\n", + "all experiments done, time: 91.53s\n" + ] + } + ], + "source": [ + "run_grid_experiments_random(seeds, n_inits, noise_levels, noise_bools, budget, bounds, 'results_baybe_originalBounds/results_random_baybe')" + ] + }, + { + "cell_type": "markdown", + "id": "34ac9617-f371-40b1-b1a1-5203d84b1a65", + "metadata": {}, + "source": [ + "## 3. Process Results" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ce441669-a569-468f-a482-fec91efef95f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_24219/3826372340.py:17: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " bo_results = pd.concat([bo_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
0210True767.079651
0211True767.079651
0212True767.079651
0213True767.079651
0214True767.079651
..................
010200True767.079651
010201True767.079651
010202True767.079651
010203True779.453003
010204True767.079651
\n", + "

80 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 2 1 0 True 767.079651\n", + "0 2 1 1 True 767.079651\n", + "0 2 1 2 True 767.079651\n", + "0 2 1 3 True 767.079651\n", + "0 2 1 4 True 767.079651\n", + ".. ... ... ... ... ...\n", + "0 10 20 0 True 767.079651\n", + "0 10 20 1 True 767.079651\n", + "0 10 20 2 True 767.079651\n", + "0 10 20 3 True 779.453003\n", + "0 10 20 4 True 767.079651\n", + "\n", + "[80 rows x 5 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load BO results \n", + "sm_list_bo = {}\n", + "bo_results = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_baybe_originalBounds/results_baybe/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " bo_results = pd.concat([bo_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + " \"best\": [sliding_min[-1].item()]})])\n", + " \n", + " sm_mean = sm_agg.mean(0)\n", + " sm_std = sm_agg.std(0)\n", + " sm_list_bo[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + "bo_results " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "af01900d-a2bf-4c49-90a0-b3614a59c2fc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_24219/2042071605.py:17: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " random_results = pd.concat([random_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_initnoise_levelseednoise_boolbest
0210True789.469910
0211True796.131165
0212True802.132568
0213True794.562561
0214True792.798035
..................
010200True789.469910
010201True790.011475
010202True796.409363
010203True794.562561
010204True792.798035
\n", + "

80 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " n_init noise_level seed noise_bool best\n", + "0 2 1 0 True 789.469910\n", + "0 2 1 1 True 796.131165\n", + "0 2 1 2 True 802.132568\n", + "0 2 1 3 True 794.562561\n", + "0 2 1 4 True 792.798035\n", + ".. ... ... ... ... ...\n", + "0 10 20 0 True 789.469910\n", + "0 10 20 1 True 790.011475\n", + "0 10 20 2 True 796.409363\n", + "0 10 20 3 True 794.562561\n", + "0 10 20 4 True 792.798035\n", + "\n", + "[80 rows x 5 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load random results \n", + "sm_list_random = {}\n", + "random_results = pd.DataFrame(columns=[\"n_init\", \"noise_level\", \"seed\", \"noise_bool\", \"best\"])\n", + "for noise_bool in noise_bools:\n", + " for n_init in n_inits:\n", + " for noise_level in noise_levels:\n", + " sm_agg = torch.zeros((len(seeds), n_init+budget))\n", + " for idx, seed in enumerate(seeds):\n", + " X, Y, Y_real, model = torch.load(f\"results_baybe_originalBounds/results_random_baybe/Schwe_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt\")\n", + " sliding_min = torch.zeros(Y.shape[0])\n", + " for i in range(Y_real.shape[0]):\n", + " sliding_min[i] = Y_real[:i+1].min().item()\n", + " \n", + " sm_agg[idx] = sliding_min\n", + " sm = pd.Series(sliding_min.numpy())\n", + " \n", + " random_results = pd.concat([random_results, pd.DataFrame({\"n_init\": [n_init], \"noise_level\": [noise_level], \"seed\": [seed], \"noise_bool\": [noise_bool],\n", + " \"best\": [sliding_min[-1].item()]})])\n", + " \n", + " sm_mean = sm_agg.mean(0)\n", + " sm_std = sm_agg.std(0)\n", + " sm_list_random[(n_init, noise_level, noise_bool)] = (sm_mean, sm_std)\n", + "random_results " + ] + }, + { + "cell_type": "markdown", + "id": "a62c64e2-b44c-4cb2-8e3c-4955abb334de", + "metadata": {}, + "source": [ + "Calculate 'performance matrix' to generate iterations vs noise heat map" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f9d3ca6c-22f6-459e-9107-cfa6cc663673", + "metadata": {}, + "outputs": [], + "source": [ + "performance_matrix_bo = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "for i, init in enumerate(n_inits):\n", + " for j, noise in enumerate(noise_levels):\n", + " y_vals = torch.load(f'results_baybe_originalBounds/results_baybe/Schwe_n_init_{init}_noiselvl_{noise}_budget_30_seed_0_noise_True.pt')[2]\n", + " best_y = torch.min(y_vals)\n", + " performance_matrix_bo[i,j] = best_y\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cd2d4601-b8ee-4d96-8c54-9dad0285151c", + "metadata": {}, + "outputs": [], + "source": [ + "performance_matrix_random = np.zeros((len(n_inits), len(noise_levels)))\n", + "\n", + "for i, init in enumerate(n_inits):\n", + " for j, noise in enumerate(noise_levels):\n", + " y_vals = torch.load(f'results_baybe_originalBounds/results_random_baybe/Schwe_n_init_{init}_noiselvl_{noise}_budget_30_seed_0_noise_True.pt')[2]\n", + " best_y = torch.min(y_vals)\n", + " performance_matrix_random[i,j] = best_y" + ] + }, + { + "cell_type": "markdown", + "id": "9ba43cdf-7017-4853-a200-945af8e20e61", + "metadata": {}, + "source": [ + "## 4. Plot\n", + "\n", + "### backtesting plots\n", + "\n", + "1. Fix n_init, compare noise level" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8f2b0de9-e2b8-40a6-a910-a4945f06aaba", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAHHCAYAAABN18UAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADYb0lEQVR4nOzdeVxUVf/A8c8M+74pAgoIAormAu4LoYkiuWBumZRabi2KWmlq5m6aS65lpT0uqYmWaZo/E1HcRUqBFBRFQFRcEZB9mfv7Y2R0ZJFBBJfzfp55xdx77jnnwiDfOfM958gkSZIQBEEQBEEQBEFFXt0dEARBEARBEITnjQiSBUEQBEEQBOExIkgWBEEQBEEQhMeIIFkQBEEQBEEQHiOCZEEQBEEQBEF4jAiSBUEQBEEQBOExIkgWBEEQBEEQhMeIIFkQBEEQBEEQHiOCZEEQBEEQBEF4jAiSBaEayWQyZsyYUWn1JSQkIJPJWLduXaXV+Ty3+zyoW7cuQ4cOrdC1HTt2pGPHjuUqO3ToUOrWrVuhdp6mjyWRyWSMHj260up7kVT276wgCM8vESQLpVq3bh0ymUztYW1tTadOnfi///u/Z97+420bGRnRsGFD5syZQ1ZWllrZoUOHFitf9NDX1y9Xe5mZmcyePZsmTZpgaGiImZkZXl5ebNiwgafZvX3Pnj0vzR/VzZs3s3Tp0uruRrnMnTuXXr16UatWrScGNteuXWPAgAGYm5tjamqKv78/ly9frrrOPnD9+nVmzJhBRERElbctPPQy/c4KglBx2tXdAeH5N2vWLJycnJAkiZs3b7Ju3TrefPNNdu3aRY8ePZ5p2126dGHw4MEAZGRkcOTIEb766isiIyPZtm2bWlk9PT3WrFlTrA4tLa0ntnPz5k06d+5MTEwMAwcOZPTo0eTk5PD7778zZMgQ9uzZw6ZNm8pV1+P27NnDd999V+If3ezsbLS1K+/X0NHRkezsbHR0dCqtzkdt3ryZs2fPMm7cuCpttyKmTp2KjY0NHh4e/P3336WWy8jIoFOnTqSlpTFlyhR0dHRYsmQJ3t7eREREYGVlVWY7Fy5cQC6v2HjDvn371J5fv36dmTNnUrduXZo1a6Z2bvXq1SgUigq1I2imKn9nBUF4fonfdOGJ/Pz8aNGiher5sGHDqFWrFr/++uszD5Ld3Nx49913Vc8//PBD8vLy2L59Ozk5OWqjxNra2mplNTFkyBBiYmL4448/6NWrl+p4YGAgEyZMYNGiRXh4ePDFF19U/GZKUN5R7vLSZOT8ZWi3LPHx8dStW5c7d+5Qs2bNUst9//33XLx4kVOnTtGyZUtA+Zp/7bXXWLx4MV9//XWZ7ejp6VW4j7q6uuUu+zy9AXleZGZmYmRkVKVtPm+vc0EQnh2RbiFozNzcHAMDg2KjKYsWLaJdu3ZYWVlhYGBA8+bN+e2339TKeHt707Rp0xLrrV+/Pr6+vk9s38bGBplMVmmjOSdPnuTvv/9m6NChagFykXnz5uHq6so333xDdnY28DAHd9GiRSxZsgRHR0cMDAzw9vbm7NmzqmuHDh3Kd999B6injxR5PA1gxowZyGQyYmNjeffddzEzM6NmzZp89dVXSJJEUlIS/v7+mJqaYmNjw+LFi9X6+nhucGhoaKlpKI/mt+7cuZPu3btjZ2eHnp4e9erVY/bs2RQWFqrKdOzYkb/++ovExMRidZSWk3zgwAG8vLwwMjLC3Nwcf39/YmJi1MoU3fOlS5cYOnQo5ubmmJmZ8f777xdLq9FEefN3f/vtN1q2bKkKkAEaNGhA586d2bp1a7naeTTftyhN6dixY3z66afUrFkTIyMj3nrrLW7fvq127aM5yaGhoao+vP/++6rvcdH3tKSc5PL8zmkiMzOTzz77DHt7e/T09Khfvz6LFi0qNd1o06ZN1K9fH319fZo3b87hw4fVzt+/f59x48ZRt25d9PT0sLa2pkuXLpw+fVqtXFhYGN26dcPMzAxDQ0O8vb05duyYWpmi10l0dDSDBg3CwsKCDh06sGjRImQyGYmJicX6N3nyZHR1dbl37x4AR44coX///jg4OKCnp4e9vT3jx49X/V6D5r+zAGfOnMHPzw9TU1OMjY3p3LkzJ0+eVCujyevin3/+wdfXlxo1amBgYICTkxMffPBBiT8DQRCeHTGSLDxRWload+7cQZIkbt26xYoVK8jIyCg2arts2TJ69epFQEAAeXl5bNmyhf79+7N79266d+8OwHvvvceIESM4e/Ysr732mura8PBwYmNjmTp1qlqdOTk53LlzB1D+AT927Bjr169n0KBBJQbJRWUfpauri6mpaan3t2vXLgBVWsfjtLW1GTRoEDNnzuTYsWP4+Piozm3YsIH79+/zySefkJOTw7Jly3jjjTf477//qFWrFqNGjeL69esEBwfzyy+/lNqHx7399tu4u7szf/58/vrrL+bMmYOlpSU//vgjb7zxBt988w2bNm3i888/p2XLlrz++usl1uPu7l6s3dTUVD799FOsra1Vx9atW4exsTGffvopxsbGHDhwgGnTppGens7ChQsB+PLLL0lLS+Pq1assWbIEAGNj41LvYf/+/fj5+eHs7MyMGTPIzs5mxYoVtG/fntOnTxcL+AYMGICTkxPz5s3j9OnTrFmzBmtra7755ptyf980pVAoiIqKKjEAadWqFfv27eP+/fuYmJhoXPeYMWOwsLBg+vTpJCQksHTpUkaPHk1QUFCJ5d3d3Zk1axbTpk1j5MiReHl5AdCuXbtS2yjP71x5SZJEr169OHjwIMOGDaNZs2b8/fffTJgwgWvXrql+5kUOHTpEUFAQgYGB6Onp8f3339OtWzdOnTql+t3+8MMP+e233xg9ejQNGzbk7t27HD16lJiYGDw9PQHlGyk/Pz+aN2/O9OnTkcvlrF27ljfeeIMjR47QqlUrtXb79++Pq6srX3/9NZIk0aNHDyZOnMjWrVuZMGGCWtmtW7fStWtXLCwsANi2bRtZWVl89NFHWFlZcerUKVasWMHVq1dV6Vua/s6eO3cOLy8vTE1NmThxIjo6Ovz444907NiRQ4cO0bp1a7XyT3pd3Lp1i65du1KzZk0mTZqEubk5CQkJbN++vbw/SkEQKoskCKVYu3atBBR76OnpSevWrStWPisrS+15Xl6e9Nprr0lvvPGG6lhqaqqkr68vffHFF2plAwMDJSMjIykjI0N1rKS2Aal3795STk6O2vVDhgwptbyvr2+Z99m7d28JkO7du1dqme3bt0uAtHz5ckmSJCk+Pl4CJAMDA+nq1auqcmFhYRIgjR8/XnXsk08+kUr7VQOk6dOnq55Pnz5dAqSRI0eqjhUUFEh16tSRZDKZNH/+fNXxe/fuSQYGBtKQIUNUx4r6tXbt2hLbUygUUo8ePSRjY2Pp3LlzquOP/+wkSZJGjRolGRoaqn2vu3fvLjk6OhYrW1K7zZo1k6ytraW7d++qjkVGRkpyuVwaPHhwsXv+4IMP1Op86623JCsrqxLvQxO3b98u9n1+/NysWbOKnfvuu+8kQDp//nyZ9Ts6Oqr9DIp+b3x8fCSFQqE6Pn78eElLS0tKTU1VHfP29pa8vb1Vz8PDw0v9+Q0ZMqTY9748v3Ml9bEkO3bskABpzpw5asf79esnyWQy6dKlS6pjRb9b//zzj+pYYmKipK+vL7311luqY2ZmZtInn3xSapsKhUJydXWVfH191b5XWVlZkpOTk9SlSxfVsaLXyTvvvFOsnrZt20rNmzdXO3bq1CkJkDZs2KBW7+PmzZsnyWQyKTExUXVMk9/Z3r17S7q6ulJcXJzq2PXr1yUTExPp9ddfVx0r7+vijz/+kAApPDy8xPYFQag6It1CeKLvvvuO4OBggoOD2bhxI506dWL48OHFRjYMDAxUX9+7d4+0tDS8vLzUPlo1MzPD39+fX3/9VfURbmFhIUFBQfTu3btYfqG/v7+q7Z07dzJ58mT27t3LoEGDin0ErK+vryr76GP+/Pll3t/9+/cByhwtLDqXnp6udrx3797Url1b9bxVq1a0bt2aPXv2lNnmkwwfPlz1tZaWFi1atECSJIYNG6Y6bm5uTv369TVahWH27Nns3r2bdevW0bBhQ9XxR3929+/f586dO3h5eZGVlcX58+c17n9ycjIREREMHToUS0tL1fEmTZrQpUuXEr8/H374odpzLy8v7t69W+x7XpmKPmYvKa+4KPf00Y/iNTFy5Ei1j+m9vLwoLCwsMS2gosrzO1dee/bsQUtLi8DAQLXjn332GZIkFVvRpm3btjRv3lz13MHBAX9/f/7++29Vmo65uTlhYWFcv369xDYjIiK4ePEigwYN4u7du9y5c4c7d+6QmZlJ586dOXz4cLHJio+/TkD5ycu///5LXFyc6lhQUBB6enr4+/urjj36/crMzOTOnTu0a9cOSZI4c+bMk75FxRQWFrJv3z569+6Ns7Oz6ritrS2DBg3i6NGjxV6/T3pdmJubA7B7927y8/M17pMgCJVHpFsIT9SqVSu1iXvvvPMOHh4ejB49mh49eqgmH+3evZs5c+YQERFBbm6uqvyjfxBAmdYQFBTEkSNHeP3119m/fz83b97kvffeK9Z2nTp11NIbevXqhZWVFZ9//jm7d++mZ8+eqnNaWlpqZcurKAC+f/++6g/U40oLpF1dXYuVdXNzK1cua1kcHBzUnpuZmaGvr0+NGjWKHb9792656ty7dy8zZ85k8uTJ9O3bV+3cuXPnmDp1KgcOHCj2Rz0tLU3j/hf9wa9fv36xc+7u7vz999/FJl09fs9FH5Hfu3evzHSZp1EUND36ei2Sk5OjVkZTZd1PZSnv71x5JCYmYmdnV+w17u7urjr/qNJe+1lZWdy+fRsbGxsWLFjAkCFDsLe3p3nz5rz55psMHjxYFVBevHgRUE6cLU1aWprqewfg5ORUrEz//v359NNPCQoKYsqUKUiSxLZt21R5wkWuXLnCtGnT+PPPP4v9HCryOr99+zZZWVmlvs4VCgVJSUk0atRIdfxJrwtvb2/69u3LzJkzWbJkCR07dqR3794MGjToqSaJCoKgOTGSLGhMLpfTqVMnkpOTVX/kjhw5Qq9evdDX1+f7779nz549BAcHlzji6+vrS61atdi4cSMAGzduxMbGptwBbufOnQGKTRKqqKIgICoqqtQyReceHX19lkpaaq605ece//6WJD4+noCAALp06cKcOXPUzqWmpuLt7U1kZCSzZs1i165dBAcHq3KBq2rZsae5v4qytLRET0+P5OTkYueKjtnZ2VWo7md9P5r8zlWXAQMGcPnyZVasWIGdnR0LFy6kUaNGqlHpotfWwoULS/wUKDg4uFjee0lvWuzs7PDy8lK9OT158iRXrlzh7bffVpUpLCykS5cu/PXXX3zxxRfs2LGD4OBg1cTI5+V1LpPJ+O233zhx4gSjR4/m2rVrfPDBBzRv3pyMjIwq6aMgCEpiJFmokIKCAgDVP9q///47+vr6/P3332qjHWvXri12rZaWFoMGDWLdunV888037NixgxEjRpR7DeLH235aPXr0YN68eWzYsKHECXCFhYVs3rwZCwsL2rdvr3au6E3Co2JjY9UmpVVkVK8yZWdn06dPH8zNzfn111+LrekbGhrK3bt32b59u9r9x8fHF6urvPfi6OgIKNcQftz58+epUaNGlS/dVRK5XE7jxo35559/ip0LCwvD2dm5QpP2KkqT14omv3Pl4ejoyP79+4tNVCxKtyn6mRYp7bVvaGiotuSera0tH3/8MR9//DG3bt3C09OTuXPn4ufnR7169QAwNTWt0KdAj3r77bf5+OOPuXDhAkFBQRgaGqp90vTff/8RGxvL+vXr1SbpBgcHF6urvD+HmjVrYmhoWOrrXC6XY29vX4G7gTZt2tCmTRvmzp3L5s2bCQgIYMuWLWqpWIIgPFtiJFnQWH5+Pvv27UNXV1c1CqulpYVMJlNbMiwhIYEdO3aUWMd7773HvXv3GDVqVIkrZZSlaDWK0paS01S7du3w8fFh7dq17N69u9j5L7/8ktjYWCZOnFhsFGvHjh1cu3ZN9fzUqVOEhYXh5+enOlYUDKamplZKfzX14YcfEhsbyx9//KH2sXWRojcnj44+5uXl8f333xcra2RkVK6PpW1tbWnWrBnr169Xu++zZ8+yb98+3nzzzQrcybPRr18/wsPD1QLlCxcucODAAfr371+lfdHktaLp79yTvPnmmxQWFrJy5Uq140uWLEEmk6m9pgFOnDihlvuclJTEzp076dq1K1paWhQWFhZ7rVhbW2NnZ6dKDWnevDn16tVj0aJFJb7pfXxptLL07dsXLS0tfv31V7Zt20aPHj3U3oiV9DqXJIlly5YVq6u8PwctLS26du3Kzp07SUhIUB2/efMmmzdvpkOHDhqnCt27d6/YJwFFG8uUlBYkCMKzI0aShSf6v//7P9Vo0q1bt9i8eTMXL15k0qRJqj8A3bt359tvv6Vbt24MGjSIW7du8d133+Hi4lJiGoOHhwevvfYa27Ztw93dXbUc1ONiY2NVaRlZWVmcPHmS9evX4+LiUiyHuaCgQFX2cW+99VaZI5cbNmygc+fO+Pv7M2jQILy8vMjNzWX79u2Ehoby9ttvF1teCsDFxYUOHTrw0UcfkZuby9KlS7GysmLixImqMkWTmwIDA/H19UVLS4uBAweW2pfK9Ndff7Fhwwb69u1LVFSU2s/C2NiY3r17065dOywsLBgyZAiBgYHIZDJ++eWXEj+yb968OUFBQXz66ae0bNkSY2NjtdG6Ry1cuBA/Pz/atm3LsGHDVEvAmZmZVXjL3xkzZjBz5kwOHjyoWl+4NL/88guJiYmqtZYPHz6sSjV57733VCOjH3/8MatXr6Z79+58/vnn6Ojo8O2331KrVi0+++yzCvWzourVq4e5uTk//PADJiYmGBkZ0bp16xLzcDX9nXuSnj170qlTJ7788ksSEhJo2rQp+/btY+fOnYwbN0416lvktddew9fXV20JOICZM2cCyjz+OnXq0K9fP5o2bYqxsTH79+8nPDxctb63XC5nzZo1+Pn50ahRI95//31q167NtWvXOHjwIKampqo3xU9ibW1Np06d+Pbbb7l//75aqgUo176uV68en3/+OdeuXcPU1JTff/+9xBxxTX5n58yZQ3BwMB06dODjjz9GW1ubH3/8kdzcXBYsWFCuvj9q/fr1fP/997z11lvUq1eP+/fvs3r1akxNTZ+rN5eC8Eqo8vU0hBdGSUvA6evrS82aNZNWrVqltoyRJEnSzz//LLm6ukp6enpSgwYNpLVr16qWbSrJggULJED6+uuvSzz/eNtaWlpSnTp1pJEjR0o3b95UK1vWEnCAFB8f/8T7vX//vjRjxgypUaNGkoGBgWRiYiK1b99eWrduXbF7LVrybOHChdLixYsle3t7SU9PT/Ly8pIiIyPVyhYUFEhjxoyRatasKclkMrXvB6UsAXf79u1i92dkZFSsz97e3lKjRo2K9atoCbHSlvED1JYTO3bsmNSmTRvJwMBAsrOzkyZOnCj9/fffEiAdPHhQVS4jI0MaNGiQZG5urlZHaUvP7d+/X2rfvr1kYGAgmZqaSj179pSio6PVypR2z0V9f/Rn99lnn0kymUyKiYkp9r0o6XtT2r0/ek+SJElJSUlSv379JFNTU8nY2Fjq0aOHdPHixSe2IUmlLwH3+BJeBw8eLNb240vASZIk7dy5U2rYsKGkra2t9j0taQm48v7OlWcJOElS/g6MHz9esrOzk3R0dCRXV1dp4cKFxV7/gPTJJ59IGzduVLXv4eGhdm+5ubnShAkTpKZNm0omJiaSkZGR1LRpU+n7778v1u6ZM2ekPn36SFZWVpKenp7k6OgoDRgwQAoJCVGVKe118qjVq1dLgGRiYiJlZ2cXOx8dHS35+PhIxsbGUo0aNaQRI0ZIkZGRxV67mvzOSpIknT59WvL19ZWMjY0lQ0NDqVOnTtLx48fVypT3dXH69GnpnXfekRwcHCQ9PT3J2tpa6tGjh9pye4IgVA2ZJD0nMzyEV86yZcsYP348CQkJxWZ8P+8SEhJwcnJi4cKFfP7559XdnVdGq1atcHR0VG38IAiCIAjPiki3EKqFJEn8/PPPeHt7v3ABslA90tPTiYyMZP369dXdFUEQBOEVIIJkoUplZmby559/cvDgQf777z927txZ3V0SXhCmpqZi4pIgCIJQZUSQLFSp27dvM2jQIMzNzZkyZQq9evWq7i4JgiAIgiAUI3KSBUEQBEEQBOExYp1kQRAEQRAEQXiMCJIFQRAEQRAE4TEiJxlQKBRcv34dExOTat9CWBAEQRCE8pEkifv372NnZ4dcLsb9hMolgmTg+vXr2NvbV3c3BEEQBEGogKSkJOrUqVPd3RBeMiJIBkxMTADlL1nRNsuCIAiCIDzf0tPTsbe3V/0dF4TKJIJkUKVYmJqaiiBZEARBEF4wIlVSeBZEAo8gCIIgCIIgPEYEyYIgCIIgCILwGBEkC4IgCIIgCMJjRE6yIAiCIAjFKBQK8vLyqrsbZcrLy8PR0ZG8vDxycnKquzvCC0BHRwctLa1ylRXbUqOcHWtmZkZaWpqYuCcIgiC88vLy8oiPj0ehUFR3V8qkUChISkrC3t5erJMslJu5uTk2NjZPnPApRpIFQRAEQVCRJInk5GS0tLSe++CzsLCQ7Oxs6tatW+7RQeHVJUkSWVlZ3Lp1CwBbW9syy4sgWRAEQRAElYKCArKysrCzs8PQ0LC6u1OmwsJCAPT19UWQLJSLgYEBALdu3cLa2rrM183z+/ZQEARBEIQqVxR46urqVnNPBOHZKHrzl5+fX2Y5ESQLgiAIglCM2KBDeFmV97UtgmRBEARBEARBeIwIkgVBEARBEKrJjBkzaNasWZW0JZPJ2LFjR5W0VaRu3bosXbq0StusLCJIFgRBEAThhTd06FBkMpnqYWVlRbdu3YiKilIrV1hYyJIlS2jcuDH6+vpYWFjg5+fHsWPHqqXfn3/+OSEhIdXS9vMuJyeHoUOH0rhxY7S1tendu3eVti+C5GepMB8uH6ruXgiCIAjCK6Fbt24kJyeTnJxMSEgI2tra9OjRQ3VekiQGDhzIrFmzGDt2LDExMYSGhmJvb0/Hjh2rfJQVwNjYGCsrqypv90VQWFiIgYEBgYGB+Pj4VHn7Ikh+VnIzYLkHbOgFt2OruzeCIAiC8NLT09PDxsYGGxsbmjVrxqRJk0hKSuL27dsAbN26ld9++40NGzYwfPhwnJycaNq0KT/99BO9evVi+PDhZGZmlru9jh07EhgYyMSJE7G0tMTGxoYZM2aolbly5Qr+/v4YGxtjamrKgAEDuHnzpur84+kWoaGhtGrVCiMjI8zNzWnfvj2JiYmq8zt37sTT0xN9fX2cnZ2ZOXMmBQUFFfp+JSUlMWDAAMzNzbG0tMTf35+EhAQA9u3bh76+PqmpqWrXjB07ljfeeEP1/OjRo3h5eWFgYIC9vT2BgYEafQ/LYmRkxKpVqxgxYgQ2NjaVUqcmRJD8rOgZg00T5dfHl1dvXwRBEAShgiRJIiuvoFoeT7MpcEZGBhs3bsTFxUU1Urt582bc3Nzo2bNnsfKfffYZd+/eJTg4WKN21q9fj5GREWFhYSxYsIBZs2ap6lAoFPj7+5OSksKhQ4cIDg7m8uXLvP322yXWVVBQQO/evfH29iYqKooTJ04wcuRI1WoMR44cYfDgwYwdO5bo6Gh+/PFH1q1bx9y5czXqMyiXP/P19cXExIQjR45w7NgxjI2N6datG3l5eXTu3Blzc3N+//131TWFhYUEBQUREBAAQFxcHN26daNv375ERUURFBTE0aNHGT16dKnt+vn5YWxsXOqjUaNGGt/LsyI2E3mW2o+FC39BVBC8MRVMqv5dkCAIgiA8jez8QhpO+7ta2o6e5YuhbvlDld27d2NsbAxAZmYmtra27N69W7VrYGxsLO7u7iVeW3Q8NlazT3+bNGnC9OnTAXB1dWXlypWEhITQpUsXQkJC+O+//4iPj8fe3h6ADRs20KhRI8LDw2nZsqVaXenp6aSlpdGjRw/q1aun1i+AmTNnMmnSJIYMGQKAs7Mzs2fPZuLEiao+lFdQUBAKhYI1a9aogvC1a9dibm5OaGgoXbt2ZeDAgWzevJlhw4YBEBISQmpqKn379gVg3rx5BAQEMG7cONX9L1++HG9vb1atWoW+vn6xdtesWUN2dnap/dLR0dHoPp4lESQ/Sw6twb41JIVB2I/go9kLWBAEQRCE8uvUqROrVq0C4N69e3z//ff4+flx6tQpHB0dAZ5qdLokTZo0UXtua2ur2vY4JiYGe3t7VYAM0LBhQ8zNzYmJiSkWJFtaWjJ06FB8fX3p0qULPj4+DBgwQLV9cmRkJMeOHVMbOS4sLCQnJ4esrCyNdkiMjIzk0qVLmJiYqB3PyckhLi4OgICAANq0acP169exs7Nj06ZNdO/eHXNzc1UdUVFRbNq0SXW9JEkoFAri4+NLfENSu3btcvexuokg+VlrFwhBARD+M3h9CnomT75GEARBEJ4TBjpaRM/yrba2NWFkZISLi4vq+Zo1azAzM2P16tXMmTMHNzc3YmJiSry26Libm5tGbT4+8imTyVAoFBrV8ai1a9cSGBjI3r17CQoKYurUqQQHB9OmTRsyMjKYOXMmffr0KXZdSaO2ZcnIyKB58+ZqAW6RmjVrAtCyZUvq1avHli1b+Oijj/jjjz9Yt26dWh2jRo0iMDCwWB0ODg4ltuvn58eRI0dK7ZejoyPnzp3T6F6eFREkP2O5Lr7oWbnA3UtwegO0/aS6uyQIgiAI5SaTyTRKeXieyGQy5HK56uP9gQMHMmjQIHbt2lUsL3nx4sVYWVnRpUuXSmvf3d2dpKQkkpKSVKPJ0dHRpKam0rBhw1Kv8/DwwMPDg8mTJ9O2bVs2b95MmzZt8PT05MKFC2pvBCrK09OToKAgrK2tMTU1LbVcQEAAmzZtok6dOsjlcrp3765WR3R0tEb9eZHSLcTEvWckK6+AL//4j/bfhJLd8mPlwRPfK5eFEwRBEASh0uXm5nLjxg1u3LhBTEwMY8aMISMjQxUQDxw4kLfeeoshQ4bw888/k5CQQFRUFKNGjeLPP/9kzZo1GBkZVVp/fHx8aNy4MQEBAZw+fZpTp04xePBgvL29adGiRbHy8fHxTJ48mRMnTpCYmMi+ffu4ePGiKm1h2rRpbNiwgZkzZ3Lu3DliYmLYsmULU6dO1bhvAQEB1KhRA39/f44cOUJ8fDyhoaEEBgZy9epVtXKnT59m7ty59OvXDz09PdW5L774guPHjzN69GgiIiK4ePEiO3fuLHPiXu3atXFxcSn1UZQWUyQ6OpqIiAhSUlJIS0sjIiKCiIgIje+3IkSQ/IwY6GgRnpDCnYw8Nma1BSNrSL8KZ7dXd9cEQRAE4aW0d+9ebG1tsbW1pXXr1oSHh7Nt2zY6duwIKEeWt27dypQpU1iyZAn169fHy8uLxMREQkND1TarSEhIQCaTERoaWuH+yGQydu7ciYWFBa+//jo+Pj44OzsTFBRUYnlDQ0POnz9P3759cXNzY+TIkXzyySeMGjUKAF9fX3bv3s2+ffto2bIlbdq0YcmSJcUCy/IwNDTk8OHDODg40KdPH9zd3Rk2bBg5OTlqI8suLi60atWKqKgo1aoWRZo0acKhQ4eIjY3Fy8sLDw8Ppk2bhp2dncb9Kc2bb76Jh4cHu3btIjQ0VDXKXhVkUmVnsL+A0tPTMTMzIy0trcyPHDS17Z8kJvwWhbWJHsfbn0E7dA5YN4KPjsGDmaSCIAiC8DzJyckhPj4eJycnjfNcq1phYSFnzpzBw8MDLS3N8pef5ODBg/Tp04fLly9jYWFRqXUL1au8r3ExkvwM+TerTS1TPW7dz2WXrh/oGMGtcxAntp8UBEEQhOfZnj17mDJligiQX2EiSH5GJEki/59TfJUVgX5BLt+dvIvkOVh58pjYXEQQBEEQnmcLFy5kwoQJ1d2Nctu0adMLsUHHi+TFnK76ApDJZFyf+AX1bt2iYeexnL6lx/HXB9Be9hPEH4LrEWDXrLq7KQiCIAjCS6BXr160bt26xHPP04oRLxIRJD9Deg3qU3DrFv3NszldCMv+zaX9a33hv63Krar7/a+6uygIgiAIwkvAxMSk2MYgwtMR6RbPkH79BgC0UtxFR0vGqfgUzjsPVZ489wfcS6i2vgmCIAiCIAilEyPJz1CoQSKNgetRobi8k87lO5mM/s+ADk6vQfp12Pcx2Ld6Yj0ymQzV/x6siiFDpn7uwX8fPVbDoAbvNnwXHbn4mEUQBEEQBEETIkh+hvZqnacxYHzlLtfyD6BrIeOmBL8DmBpDThJcTHqmfbA1sqWbU7dn2oYgCIIgCMLLRgTJz1A3r/cp/G4u+nkFTLB9j43JmcTfyaRpHTO6ZP4J92+Cc0dw8iq1DkmSKPqf8v8P/ic9/C+gfgyJf2/+S9TtKKLuRIkgWRAEQRAEQUPVGiQXFhYyY8YMNm7cyI0bN7Czs2Po0KFMnTpVlVYgSRLTp09n9erVpKam0r59e1atWoWrq6uqnrp165KYmKhW97x585g0aVKV3s/jBjQcSHyDP8iJisJfaoKrdysG/nSSqDQ5P/u7YvrXh3DhOLz5E+gYVGrbOy/tJOp2FNF3oyu1XkEQBEEQhFdBtU7c++abb1i1ahUrV64kJiaGb775hgULFrBixQpVmQULFrB8+XJ++OEHwsLCMDIywtfXl5ycHLW6Zs2aRXJysuoxZsyYqr6dEuk3UE7eyzl/gdZOljStY0ZugYKfU5qAmQNk3YGIzZXebkOrhgCcTzmPQlJUev2CIAiCIDy9GTNm0KxZsyppSyaTsWPHjippq0jdunVZunRplbZZWao1SD5+/Dj+/v50796dunXr0q9fP7p27cqpU6cA5Sjy0qVLmTp1Kv7+/jRp0oQNGzZw/fr1Yj9kExMTbGxsVA8jI6NquKPi9BrUByDnfAwymYxR3vUAWB92jbxWHyoLnVgJisJKbdfJzAl9LX0y8zNJTE988gWCIAiC8AIbOnSocuL6g4eVlRXdunUjKipKrVxhYSFLliyhcePG6OvrY2FhgZ+fH8eOHauWfn/++eeEhIideEuSkJCg9jMtepw8ebJK2q/WILldu3aEhIQQGxsLQGRkJEePHsXPzw+A+Ph4bty4gY+Pj+oaMzMzWrduzYkTJ9Tqmj9/PlZWVnh4eLBw4UIKCgpKbTc3N5f09HS1x7Oi38Bd2eb5CwD4NrLB0cqQ1Kx8thV2An1zSLkM53dXarvacm3qWyoDdJFyIQiCILwKunXrpvpEOSQkBG1tbXr06KE6L0kSAwcOZNasWYwdO5aYmBhCQ0Oxt7enY8eOVT7KCmBsbIyVlVWVt/si2b9/v1q2QPPmzauk3WoNkidNmsTAgQNp0KABOjo6eHh4MG7cOAICAgC4ceMGALVq1VK7rlatWqpzAIGBgWzZsoWDBw8yatQovv76ayZOnFhqu/PmzcPMzEz1sLe3fwZ3p6Tn5gZAwc2bFNy7h5ZcxvAOTgCsOnEDRYvhyoLHlsGDSXiVxd1SGaCLIFkQBEF4Fejp6ak+UW7WrBmTJk0iKSmJ27dvA7B161Z+++03NmzYwPDhw3FycqJp06b89NNP9OrVi+HDh5OZmVnu9jp27EhgYCATJ07E0tISGxsbZsyYoVbmypUr+Pv7Y2xsjKmpKQMGDODmzZuq84+nW4SGhtKqVSuMjIwwNzenffv2avOudu7ciaenJ/r6+jg7OzNz5swyBwbLkpSUxIABAzA3N8fS0hJ/f38SEhIA2LdvH/r6+qSmpqpdM3bsWN544w3V86NHj+Ll5YWBgQH29vYEBgZq9D0sDysrK7VsgaraQbBag+StW7eyadMmNm/ezOnTp1m/fj2LFi1i/fr1GtXz6aef0rFjR5o0acKHH37I4sWLWbFiBbm5uSWWnzx5MmlpaapHUtKzW4ZNy9gIHUcHAHLPnwegX3N7LI10uXovm2ATf9DSg2v/QuLxSm27KC85JiWmUusVBEEQXiGSBHmZ1fN4isGjjIwMNm7ciIuLi2qkdvPmzbi5udGzZ89i5T/77DPu3r1LcHCwRu2sX78eIyMjwsLCWLBgAbNmzVLVoVAo8Pf3JyUlhUOHDhEcHMzly5d5++23S6yroKCA3r174+3tTVRUFCdOnGDkyJGqxQyOHDnC4MGDGTt2LNHR0fz444+sW7eOuXPnatRngPz8fHx9fTExMeHIkSMcO3YMY2NjunXrRl5eHp07d8bc3Jzff/9ddU1hYSFBQUGqwcy4uDi6detG3759iYqKIigoiKNHjzJ69OhS2/Xz88PY2LjUR6NGjYpd06tXL6ytrenQoQN//vmnxvdaUdW6usWECRNUo8kAjRs3JjExkXnz5jFkyBBsbGwAuHnzJra2tqrrbt68WWaSe+vWrSkoKCAhIYH69esXO6+np4eenl7l3kwZ9Os3ID/xCjkx5zFq2xYDXS0Gt3Vk6f6LrDyVTtem7yA7vU65VXXd9pXWripIvhuDQlIgl4kNFgVBEAQN5WfB13bV0/aU66Bb/jlGu3fvxtjYGIDMzExsbW3ZvXs3crny719sbCzu7u4lXlt0vCgFtLyaNGnC9OnTAXB1dWXlypWEhITQpUsXQkJC+O+//4iPj1d9ar1hwwYaNWpEeHg4LVu2VKsrPT2dtLQ0evToQb169dT6BTBz5kwmTZrEkCFDAHB2dmb27NlMnDhR1YfyCgoKQqFQsGbNGlUQvnbtWszNzQkNDaVr164MHDiQzZs3M2zYMABCQkJITU2lb9++gPKT+YCAAMaNG6e6/+XLl+Pt7c2qVavQ19cv1u6aNWvIzs4utV+PjhIbGxuzePFi2rdvj1wu5/fff6d3797s2LGDXr16aXS/FVGtQXJWVpbqhVtES0sLhUK5GoOTkxM2NjaEhISoguL09HTCwsL46KOPSq03IiICuVyOtbX1M+u7JvQa1Of+vn3kXjivOja4bV1+OBTHf9fSONP+XTxPr4fYvXDrPFg3qJR265nXQ09Lj4z8DJLuJ+Fo6lgp9QqCIAjC86hTp06sWrUKgHv37vH999/j5+fHqVOncHRU/g2UKjm1sUmTJmrPbW1tuXXrFgAxMTHY29urpXU2bNgQc3NzYmJiigXJlpaWDB06FF9fX7p06YKPjw8DBgxQDRRGRkZy7NgxtZHjwsJCcnJyyMrKwtDQsNz9joyM5NKlS5iYmKgdz8nJIS4uDoCAgADatGnD9evXsbOzY9OmTXTv3h1zc3NVHVFRUWzatEl1vSRJKBQK4uPjS3xDUrt27XL3sUaNGnz66aeq5y1btuT69essXLjw5Q+Se/bsydy5c3FwcKBRo0acOXOGb7/9lg8++ABQLlUybtw45syZg6urK05OTnz11VfY2dnRu3dvAE6cOEFYWBidOnXCxMSEEydOMH78eN59910sLCyq8e4eKpq8l/Ng8h6ApZEuA1rYs+FEIssiJNY36K6cvHd8BfT+rlLa1ZZrU9+iPlF3lOsliyBZEARB0JiOoXJEt7ra1oCRkREuLi6q52vWrMHMzIzVq1czZ84c3NzciIkpOQWx6Ljbg7lE5e7iY/mxMplMNdhXEWvXriUwMJC9e/cSFBTE1KlTCQ4Opk2bNmRkZDBz5kz69OlT7LqSRm3LkpGRQfPmzdUC3CI1a9YElEFpvXr12LJlCx999BF//PEH69atU6tj1KhRBAYGFqvDwcGhxHb9/Pw4cuRIqf1ydHTk3LlzpZ5v3bq1xikxFVWtQfKKFSv46quv+Pjjj7l16xZ2dnaMGjWKadOmqcpMnDiRzMxMRo4cSWpqKh06dGDv3r2qF4Oenh5btmxhxowZ5Obm4uTkxPjx49XeeVQ3/QfLwOXGxaHIy0OuqwvA8A7ObDyZyKHY28QPHIHT+d0QFQRvTAVT27KqLDd3K3dVkOzn5FcpdQqCIAivEJlMo5SH54lMJkMul6s+3h84cCCDBg1i165dxfKSFy9ejJWVFV26dKm09t3d3UlKSiIpKUk1mhwdHU1qaioNGzYs9ToPDw88PDyYPHkybdu2ZfPmzbRp0wZPT08uXLig9kagojw9PQkKCsLa2hpTU9NSywUEBLBp0ybq1KmDXC6ne/fuanVER0dr1B9N0i1KEhERoZaC+yxVa5BsYmLC0qVLy1xkWiaTMWvWLGbNmlXieU9PzypbL6+itG1tkZuZoUhLIy8uDv0HHz84WBni19iWv6KSWXHBnG8d2sKVExC2CrqUfL+aamSlTIAXK1wIgiAIL7vc3FzV6lf37t1j5cqVZGRkqALigQMHsm3bNoYMGcLChQvp3Lkz6enpfPfdd/z5559s27atUvdZ8PHxoXHjxgQEBLB06VIKCgr4+OOP8fb2pkWLFsXKx8fHq1basLOz48KFC1y8eJHBgwcDMG3aNHr06IGDgwP9+vVDLpcTGRnJ2bNnmTNnjkZ9CwgIYOHChfj7+zNr1izq1KlDYmIi27dvZ+LEidSpU0dVbsaMGcydO5d+/fqpzen64osvaNOmDaNHj2b48OEYGRkRHR1NcHAwK1euLLFdTdIt1q9fj66uLh4eHgBs376d//3vf6xZs0aje60oMZOrCshkMvQfTCDMiTmvdm7U684A/Bl5nbvNHuRZ/7MWcipn7eZHJ+9Vdh6WIAiCIDxP9u7di62tLba2trRu3Zrw8HC2bdtGx44dAeXf461btzJlyhSWLFlC/fr18fLyIjExkdDQUFUqJzzcyCI0NLTC/ZHJZOzcuRMLCwtef/11fHx8cHZ2JigoqMTyhoaGnD9/nr59++Lm5sbIkSP55JNPGDVqFAC+vr7s3r2bffv20bJlS9q0acOSJUtU+daaMDQ05PDhwzg4ONCnTx/c3d0ZNmwYOTk5aiPLLi4utGrViqioKNWqFkWaNGnCoUOHiI2NxcvLCw8PD6ZNm4adXeVN9Jw9ezbNmzendevW7Ny5k6CgIN5///1Kq78sMklETqSnp2NmZkZaWlqZHzk8jZvz5pGyfgOWQwZTa/JktXMDfzrBycspDG/vyNTE9+FOLHSZDe2L5/hoKl+RT5tNbchT5PHXW3/hYFpyjpAgCIIggHLiVnx8PE5OThrnuVa1wsJCzpw5g4eHB1paWpVa98GDB+nTpw+XL19+buY4CZWjvK9xMZJcRfTqK1eseHwkGVBtVf1r+FWyWnysPHhyFRTkPXW7OnId3CyUkxBEyoUgCIIglM+ePXuYMmWKCJBfYSJIriL67g+C5AsXiqU9dHSrSf1aJmTmFfJLVhswrgX3r8PZ30uqSmNFKRfRKSJIFgRBEITyWLhwIRMmTKjubpTbpk2bNNqgQ3iyap249yrRrVcPtLVRpKVRkJyMziP5OjKZjJGvO/PZtkjWnLjGsA6j0D44S7m5SNOBypnFT0EVJIuRZEEQBEF4KfXq1YvWrVuXeK6qtnF+2YgguYrIdXXRq1eP3AsXyDl/QS1IBujZ1I6Ff1/gRnoOu3S68Zbut3ArGi7tB9enW47m8cl7sqcMugVBEARBeL6YmJgU2xhEeDoi3aIKFa2XnHO++ELmutpyPuhQF4CVJ24jeSq3nOTYsqdu18XcBR25Dul56VzNuPrU9QmCIAiCILzsRJBchYom7+U+svPeo95p5YCJnjZxtzM5atUfZHJIOAI3ny5NQkdLTN4TBEEQBEHQhAiSq5Bq8t754itcAJjo6zCojXKJthX/5kCDB7vanPrpqdsWecmCIAiCIAjlJ4LkKqTXQBkk51+5QmFGZollPmjvhI6WjFMJKcTWfbBod1QQZN97qrZFkCwIgiAIglB+IkiuQtoWFmjXqgVAbmxsiWVqmerTu5lyy8ZvL9QE60aQnwVnNj5V2+5Wyq2wo+9Gi533BEEQBEEQnkAEyVVMr4zJe0VGPtiq+u+Ym9xpNFR58NRqUBRWuF1Xc1e05dqk56VzLeNahesRBEEQBKHyzJgxg2bNmlVJWzKZjB07dlRJW0Xq1q3L0qVLq7TNyiKC5Cqm30A5olva5D0A11omdG5gjSTBouSmoG8OqYlwcV+F29XV0sXV3BWAmJTSA3RBEARBeBENHToUmUymelhZWdGtWzeioqLUyhUWFrJkyRIaN26Mvr4+FhYW+Pn5cezYsWrp9+eff05ISEi1tP28y8nJYejQoTRu3BhtbW169+5dYrnQ0FA8PT3R09PDxcWFdevWVUr7IkiuYg+XgSt58l6Rjzoqt6reEnGH83a9lQfDfnyqtkVesiAIgvAy69atG8nJySQnJxMSEoK2tjY9evRQnZckiYEDBzJr1izGjh1LTEwMoaGh2Nvb07FjxyofZQUwNjbGysqqytt9ERQWFmJgYEBgYCA+Pj4llomPj6d79+506tSJiIgIxo0bx/Dhw/n777+fun0RJFexosl7ubGxSIWlp0+0qGvJeB/lsm0fXvBEksnh8kG4XfoI9JOIIFkQBEF4menp6WFjY4ONjQ3NmjVj0qRJJCUlcfv2bQC2bt3Kb7/9xoYNGxg+fDhOTk40bdqUn376iV69ejF8+HAyM0ueWF+Sjh07EhgYyMSJE7G0tMTGxoYZM2aolbly5Qr+/v4YGxtjamrKgAEDuHnzpur84+kWoaGhtGrVCiMjI8zNzWnfvj2JiYmq8zt37sTT0xN9fX2cnZ2ZOXMmBQUFFfp+JSUlMWDAAMzNzbG0tMTf35+EhAQA9u3bh76+PqmpqWrXjB07ljfeeEP1/OjRo3h5eWFgYIC9vT2BgYEafQ/LYmRkxKpVqxgxYgQ2NjYllvnhhx9wcnJi8eLFuLu7M3r0aPr168eSJUueun2x494zFrIumns3sx45IpHdfAIoFMQuPkWviW1VZ0I3nefO1QzV89rAJ4XGpN7XY53WYt63HK9cDq77Yo5sjeVmfHqJbcpkMvpObF7seCMr5d7tRZP3xM57giAIwpNIkkR2QXa1tG2gbVDhv1UZGRls3LgRFxcX1Ujt5s2bcXNzo2fPnsXKf/bZZ2zfvp3g4OBSP9Yvyfr16/n0008JCwvjxIkTDB06lPbt29OlSxcUCoUqQD506BAFBQV88sknvP3224SGhharq6CggN69ezNixAh+/fVX8vLyOHXqlOp7cOTIEQYPHszy5cvx8vIiLi6OkSNHAjB9+nSNvj/5+fn4+vrStm1bjhw5gra2NnPmzFGlqHTu3Blzc3N+//13hg0bBihHdoOCgpg7dy4AcXFxdOvWjTlz5vC///2P27dvM3r0aEaPHs3atWtLbNfPz48jR46U2i9HR0fOnTtX7vs4ceJEsVFmX19fxo0bV+46SiOC5Gfs7vVMbl+5r37QpC4Aedey1A6nJGcWC3wNAUPk3C+0B0CK+BVZ52mk3sgqI0guuS+uFsrJe6m5qSRnJmNnbFdyQUEQBEF4ILsgm9abW1dL22GDwjDUMSx3+d27d2NsbAxAZmYmtra27N69G7lc+cF5bGws7u7uJV5bdDy2lNWnStOkSRNVgOrq6srKlSsJCQmhS5cuhISE8N9//xEfH4+9vfLv+IYNG2jUqBHh4eG0bNlSra709HTS0tLo0aMH9erVU+sXwMyZM5k0aRJDhih35XV2dmb27NlMnDhR4yA5KCgIhULBmjVrVEH42rVrMTc3JzQ0lK5duzJw4EA2b96sCpJDQkJITU2lb9++AMybN4+AgABVQOrq6sry5cvx9vZm1apV6OvrF2t3zZo1ZGeX/qZLR0dHo/u4ceMGtR6sHFakVq1apKenk52djYGBgUb1PUoEyc9Y+34u5GWrfwySsvlXMo8exdy3C9BZdbxN73rkZuYXqyMlK485u6PppqiNW/41FGc20bJHAK95135i+/dTcpDJZBhb6Kkm78WkxBB9N1oEyYIgCMJLpVOnTqxatQqAe/fu8f333+Pn58epU6dwdHQEqPRlUJs0aaL23NbWllu3bgEQExODvb29KkAGaNiwIebm5sTExBQLki0tLRk6dCi+vr506dIFHx8fBgwYgK2tLQCRkZEcO3ZMNZILytHdnJwcsrKyMDQs/xuKyMhILl26hImJidrxnJwc4uLiAAgICKBNmzZcv34dOzs7Nm3aRPfu3TE3N1fVERUVxaZNm1TXS5KEQqEgPj6+xDcktWs/OXZ5Xogg+Rmr7WZR7Jh5dE1u7PwPo6vmwAjVcTsX8xLrcAKm1TZk02pfZvI/0g59h83ED0Fedkp59NHrHN4Si0tza3zeV+Yju1u5q4JkH8eSk+AFQRAEoYiBtgFhg8KqrW1NGBkZ4eLionq+Zs0azMzMWL16NXPmzMHNzY2YmJJXeCo67ubmplGbj498ymQyFAqFRnU8au3atQQGBrJ3716CgoKYOnUqwcHBtGnThoyMDGbOnEmfPn2KXVfSqG1ZMjIyaN68uVqAW6RmzZoAtGzZknr16rFlyxY++ugj/vjjD7WVIzIyMhg1ahSBgYHF6nBwcCix3cpOt7CxsVHL8Qa4efMmpqamTzWKDCJIrhaqyXsxZa9w8SgPBwuSen1I+u4tWORc5cS+LbTtNqjMa2rYG1NYoODCqRt4+DpgZWdMQ8uGbGe7mLwnCIIglItMJtMo5eF5IpPJkMvlqo/3Bw4cyKBBg9i1a1exvOTFixdjZWVFly5dKq19d3d3kpKSSEpKUo0mR0dHk5qaSsOGDUu9zsPDAw8PDyZPnkzbtm3ZvHkzbdq0wdPTkwsXLqi9EagoT09PgoKCsLa2xtTUtNRyAQEBbNq0iTp16iCXy+nevbtaHdHR0Rr1p7LTLdq2bcuePXvUjgUHB9O2bdtSrig/sbpFNdB3cwOZjILbtylISSn3db1a1ueCrT8A+cd/ICIptczy1o6mOHvUBAlO7YoH1Fe4EDvvCYIgCC+T3Nxcbty4wY0bN4iJiWHMmDFkZGSoAuKBAwfy1ltvMWTIEH7++WcSEhKIiopi1KhR/Pnnn6xZswYjI6NK64+Pjw+NGzcmICCA06dPc+rUKQYPHoy3tzctWrQoVj4+Pp7Jkydz4sQJEhMT2bdvHxcvXlSlLUybNo0NGzYwc+ZMzp07R0xMDFu2bGHq1Kka9y0gIIAaNWrg7+/PkSNHiI+PJzQ0lMDAQK5evapW7vTp08ydO5d+/fqhp6enOvfFF19w/PhxRo8eTUREBBcvXmTnzp2MHj261HZr166Ni4tLqY+itJgi0dHRREREkJKSQlpaGhEREURERKjOf/jhh1y+fJmJEydy/vx5vv/+e7Zu3cr48eM1/p48TgTJ1UBuZITug48hcp+wXvLjmvebiAIZr8sjmb3+T5LTyp5x3KqnE8jg8pnb3EpMx83SDW2ZNvdy73Ez62aZ1wqCIAjCi2Tv3r3Y2tpia2tL69atCQ8PZ9u2bXTs2BFQjixv3bqVKVOmsGTJEurXr4+XlxeJiYmEhoaqrWqRkJCATCYrcRWK8pLJZOzcuRMLCwtef/11fHx8cHZ2JigoqMTyhoaGnD9/nr59++Lm5sbIkSP55JNPGDVqFKBctWH37t3s27ePli1b0qZNG5YsWVIssCwPQ0NDDh8+jIODA3369MHd3Z1hw4aRk5OjNrLs4uJCq1atiIqKIiAgQK2OJk2acOjQIWJjY/Hy8sLDw4Np06ZhZ1d5c57efPNNPDw82LVrF6GhoapR9iJOTk789ddfBAcH07RpUxYvXsyaNWvw9fV96rZlkhhOJD09HTMzM9LS0sr8yKEyXR07jvt//431hAlYDftAo2sLfumPdtw+1hb4sr1WIFtHtcVAV6vU8sFrzxEbdhOHRpb0HNOMfn/248K9CyzttJTODp1LvU4QBEF49eTk5BAfH4+Tk5PGea5VrbCwkDNnzuDh4YGWVul/Byvi4MGD9OnTh8uXL2NhUXx+kfDiKu9rXIwkVxN9d2Vecs4FzUaSAbTbKt9R9tc+zOVrN5jwW2SZqROtejghl8u4ci6F6xdTxaYigiAIgvAEe/bsYcqUKSJAfoWJILma6NVXbk+tyeQ9Fec3wMoFY7IZoH2E3VHJrDxwqdTiZjUNcW9vi7aOnNRbWSJIFgRBEIQnWLhwIRMmTKjubpTbpk2bMDY2LvHRqFGj6u7eC0msblFN9B8k4efGx6PIzUX+SCL8E8nl0GoU/N8ExpuFsu6uD4uDY3GtZUy312xLvKRVT2da9nDCyEyPgtvqk/fEznuCIAiC8GLr1asXrVuXvOmLpitGCEoiSK4m2rVqoWVmRmFaGrmXLmGg6bu8Zu9AyCxMMxOY1fg2X/1Xi/FBkdhbGtLIzqxYcUNTXdXXbhZuaMm0SMlJ4WbWTWyMSt4PXRAEQRCEF4OJiUmxjUGEpyPSLaqJTCZ7uF7y+QuaV6BnAs2U6yQHsBcv1xpk5xcyYv0/3L6fW+alKfE5eBZ2AETKhSAIgiAIQklEkFyN9B8EyTkaLgOn0mokAPKL+/i+mwXONYy4npbDqF/+IbegsMRLYo5f54/Fp2lyvisySSaCZEEQBEEQhBKIILkaPRxJrmCQXMMF6nUGJEz+W8eaIS0w1dfm9JVUpmw/W+KKF87NaqJnqI1OmjEud5oTk1Ly9pyCIAiCIAivMhEkVyPVMnDnz1d897vWHyr/e2YjzqbwXYAnWnIZv5++yqpDcdxKz1F7pBUU4vq6cpHvFkl+nLsZU6xM0SO/sOJ7zwuCIAiCILzIqnXiXmFhITNmzGDjxo3cuHEDOzs7hg4dytSpU1UrLkiSxPTp01m9ejWpqam0b9+eVatW4erqqqonJSWFMWPGsGvXLuRyOX379mXZsmUYGxtX162Vi56zM+jooLh/n4Lr19GpXVvzSlx8wNIZUi5DVBBeLYcxtbs7M3dFs2DvBRbsLZ7vrCPBCJkeZrk1sL7qQusFfyAVFN9ERV9HTpPa5ng4muPpYIGngwU1TTRYhUMQBEEQBOEFVa0jyd988w2rVq1i5cqVxMTE8M0337BgwQJWrFihKrNgwQKWL1/ODz/8QFhYGEZGRvj6+pKTk6MqExAQwLlz5wgODmb37t0cPnyYkSNHVsctaUSmq4tevXoA5FyowOQ9UC4H13KE8utTq0GSGNquLh93rIeethwtuazYQ6El45SBMme5+VVf9PWvFysjl0FOvoJTCSn8eOgyo375l5Zz9/P6goOM23KGDScSOHstjQIx2iwIgiAIFTZjxgyaNWtWJW3JZDJ27NhRJW0VqVu3LkuXLq3SNitLtY4kHz9+HH9/f7p37w4ov5G//vorp06dApSjyEuXLmXq1Kn4+/sDsGHDBmrVqsWOHTsYOHAgMTEx7N27l/DwcFq0aAHAihUrePPNN1m0aFGl7h/+LOjXr0/u+fPkxMRg8sYbFavEIwAOzIHbMRB/GJmzNxO7NWBitwalXlKQX8j3X/yNcZYFox3y+GTwm2rnFQqJy3cyOX3lHqcT73H6yj0u3srgSkoWV1Ky2BFxHQBDXS2a1DHD08GC5o4WeDhYYGmkW1KTgiAIgvDMDB06lPXr16ueW1pa0rJlSxYsWECTJk1UxwsLC1m+fDn/+9//uHjxIgYGBrRp04apU6fSvn37Ku/3559/zpgxY6q83RdBaGgoS5Ys4dSpU6Snp+Pq6sqECRMICAhQK7dt2za++uorEhIScHV15ZtvvuHNN98spdbyq9aR5Hbt2hESEkJsbCwAkZGRHD16FD8/PwDi4+O5ceMGPj4+qmvMzMxo3bo1J06cAODEiROYm5urAmQAHx8f5HI5YWFhJbabm5tLenq62qO66Lk/xTJwRfTNoOlA5ddhP5brEm0dLYzb5pCud5erioRi5+VyGS7WxgxoYc/8vk3YN96byOld2fBBK8b5uOLlWgMTfW2y8go5eTmF70PjGLb+HzxnB9NpUSiTfo8iJTOv4vckCIIgCBrq1q0bycnJJCcnExISgra2Nj169FCdlySJgQMHMmvWLMaOHUtMTAyhoaHY29vTsWPHKh9lBTA2NsbKyqrK230RHD9+nCZNmvD7778TFRXF+++/z+DBg9m9e7damXfeeYdhw4Zx5swZevfuTe/evTl79uxTt1+tQfKkSZMYOHAgDRo0QEdHBw8PD8aNG6d6h3Djxg0AatWqpXZdrVq1VOdu3LiBtbW12nltbW0sLS1VZR43b948zMzMVA97e/vKvrVye+pl4Io8WA6O2P+De4nluqRZh7psaTaXMMPgcpU31dfhdbeajPNx45dhrYmc1pV9419nfp/G9G9eh3o1jQCIv5PJlvAkNp4sXz8EQRAEoTLo6elhY2ODjY0NzZo1Y9KkSSQlJXH79m0Atm7dym+//caGDRsYPnw4Tk5ONG3alJ9++olevXoxfPhwMjMzy91ex44dCQwMZOLEiVhaWmJjY8OMGTPUyly5cgV/f3+MjY0xNTVlwIAB3Lx5U3X+8XSL0NBQWrVqhZGREebm5rRv357ExId/T3fu3Imnpyf6+vo4Ozszc+ZMCgoKKvT9SkpKYsCAAZibm2NpaYm/vz8JCQkA7Nu3D319fVJTU9WuGTt2LG888sn30aNH8fLywsDAAHt7ewIDAzX6HpZlypQpzJ49m3bt2lGvXj3Gjh1Lt27d2L59u6rMsmXL6NatGxMmTMDd3Z3Zs2fj6enJypUrn7r9ag2St27dyqZNm9i8eTOnT59m/fr1LFq0SO3jkmdh8uTJpKWlqR5JSUnPtL2y6NWvD0B+UhKFGRkVr8i6ATh3BEkB4WvKdUmDGg1AS+J29m1uZ93WuEm5XIZbLRMGtnJgYf+mhHzWkYhpXfikkzLP+uilOxrXKQiCIDxfJElCkZVVLY8Kr/wEZGRksHHjRlxcXFQjtZs3b8bNzY2ePXsWK//ZZ59x9+5dgoPLN3BUZP369RgZGREWFsaCBQuYNWuWqg6FQoG/vz8pKSkcOnSI4OBgLl++zNtvv11iXQUFBfTu3Rtvb2+ioqI4ceIEI0eOVC1mcOTIEQYPHszYsWOJjo7mxx9/ZN26dcydO1ejPgPk5+fj6+uLiYkJR44c4dixYxgbG9OtWzfy8vLo3Lkz5ubm/P7776prCgsLCQoKUg1mxsXF0a1bN/r27UtUVBRBQUEcPXqU0aNHl9qun58fxsbGpT4aPWEH4rS0NCwtLVXPT5w4oZZxAODr66vKOHga1ZqTPGHCBNVoMkDjxo1JTExk3rx5DBkyBBsb5XbJN2/exNbWVnXdzZs3Ve+6bGxsuHXrllq9BQUFpKSkqK5/nJ6eHnp6z8cqDdoWFmjb2FBw4wa5Fy5g2Lx5xStrNQouh8LpDdBxMugallncUMcQJ1Mn4u/Fc3T/WZyNXGja+elG1c0Ndenf3J7vDsZx5so9svIKMNQVu58LgiC8qKTsbC54PsXfpqdQ//S/yAzL/lv2qN27d6tWtsrMzMTW1pbdu3cjlyvHBGNjY3F3dy/x2qLjRSmg5dWkSROmT58OgKurKytXriQkJIQuXboQEhLCf//9R3x8vOpT6w0bNtCoUSPCw8Np2bKlWl3p6emkpaXRo0cP6j2Y2P9of2fOnMmkSZMYMmQIAM7OzsyePZuJEyeq+lBeQUFBKBQK1qxZowrC165di7m5OaGhoXTt2pWBAweyefNmhg0bBkBISAipqan07dsXUH4yHxAQwLhx41T3v3z5cry9vVm1ahX6+vrF2l2zZg3Z2dml9ktHR6fUc1u3biU8PJwff3yYWnrjxo0yMw6eRrWOJGdlZaleuEW0tLRQKJQrJjg5OWFjY0NISIjqfHp6OmFhYbRt2xaAtm3bkpqayr///qsqc+DAARQKBa1bt66Cu3h6+g9Gk5865cLNF8wdICcV/ttarksaWjWkTloDru+ROPnnZbLSnz6P2NHKEDszffILJcIT7j11fYIgCIJQHp06dSIiIoKIiAhOnTqFr68vfn5+aukKTzM6XZJHJwUC2NraqgbvYmJisLe3V0vrbNiwIebm5sTEFN/My9LSkqFDh+Lr60vPnj1ZtmwZycnJqvORkZHMmjVLbeR1xIgRJCcnk5WVpVG/IyMjuXTpEiYmJqq6LC0tycnJIS4uDlCuHhYaGsr168rJ+ps2baJ79+6Ym5ur6li3bp1af3x9fVEoFMTHx5fYbu3atXFxcSn14ejoWOJ1Bw8e5P3332f16tVPHG2uLNU6xNezZ0/mzp2Lg4MDjRo14syZM3z77bd88MEHgHKpknHjxjFnzhxcXV1xcnLiq6++ws7Ojt69ewPKd1jdunVjxIgR/PDDD+Tn5zN69GgGDhz43K9sUUTPvQEZhw5VfOe9InIt5XJwwV9B2E/gOQQevDssTUOrhuwy30W2ZQoGKZac3ptIhwGuZV7zJDKZjHYuNfjt36scj7uDt1vNp6pPEARBqD4yAwPqn/73yQWfUduaMDIywsXFRfV8zZo1mJmZsXr1aubMmYObm1uJwSmgOu7m5qZRm4+PfMpkMtVgX0WsXbuWwMBA9u7dS1BQEFOnTiU4OJg2bdqQkZHBzJkz6dOnT7HrShq1LUtGRgbNmzdn06ZNxc7VrKn8u92yZUvq1avHli1b+Oijj/jjjz9Yt26dWh2jRo0iMDCwWB0ODg4ltuvn58eRI0dK7ZejoyPnzp1TO3bo0CF69uzJkiVLGDx4sNo5GxsbtRxvUGYclJZNoIlqDZJXrFjBV199xccff8ytW7ews7Nj1KhRTJs2TVVm4sSJZGZmMnLkSFJTU+nQoQN79+5VezFs2rSJ0aNH07lzZ9VmIsuXL6+OW6qQh5P3nmKFiyIe78LBr+HWOUg8BnU7lFm8oVVDkMG/DnvpkDKIs4ev0dTHHhNLzX7ZHtfexUoZJF+6+1T1CIIgCNVLJpNplPLwPJHJZMjlctXH+wMHDmTQoEHs2rWrWF7y4sWLsbKyokuXLpXWvru7O0lJSSQlJalGk6Ojo0lNTaVhw4alXufh4YGHhweTJ0+mbdu2bN68mTZt2uDp6cmFCxfU3ghUlKenJ0FBQVhbW2NqWnxDsSIBAQFs2rSJOnXqIJfLVcv2FtURHR2tUX80TbcIDQ2lR48efPPNNyXugdG2bVtCQkJUKR8AwcHBqoyDp1GtQbKJiQlLly4tc5FpmUzGrFmzmDVrVqllLC0t2bx58zPoYdUoCpJzY2ORCgqQaT/Fj8XQEpq+Df+uUy4H94QguYFlA2TIOKsfxlv1RnA7LpN/9iTQ6d3S11guj3b1agBw9noaqVl5mBuKtZMFQRCEZys3N1eVi3rv3j1WrlxJRkaGKiAeOHAg27ZtY8iQISxcuJDOnTuTnp7Od999x59//sm2bdswMjKqtP74+PjQuHFjAgICWLp0KQUFBXz88cd4e3urLV1bJD4+XrXShp2dHRcuXODixYuq0dNp06bRo0cPHBwc6NevH3K5nMjISM6ePcucOXM06ltAQAALFy7E39+fWbNmUadOHRITE9m+fTsTJ06kTp06qnIzZsxg7ty59OvXT21O1xdffEGbNm0YPXo0w4cPx8jIiOjoaIKDg0tdXaK2BrsLHzx4kB49ejB27Fj69u2r+tnq6uqqJu+NHTsWb29vFi9eTPfu3dmyZQv//PMPP/30k0bfj5JUa06yoKTj4IDM0BApN5e8xEpYNq1oObjzu+HnrmU+DDf0xknSAhmY6CpH32OOXiX1uwFw8ocKd6GWqT4u1sZIEpy8LEaTBUEQhGdv79692NraYmtrS+vWrQkPD2fbtm107NgRUA68bd26lSlTprBkyRLq16+Pl5cXiYmJhIaGqlI5ARISEpDJZISGhla4PzKZjJ07d2JhYcHrr7+Oj48Pzs7OBAUFlVje0NCQ8+fP07dvX9zc3Bg5ciSffPIJo0aNApSrNuzevZt9+/bRsmVL2rRpw5IlS0rN4y2LoaEhhw8fxsHBgT59+uDu7s6wYcPIyclRG1l2cXGhVatWREVFFdvEo0mTJhw6dIjY2Fi8vLzw8PBg2rRplZbuun79erKyspg3b57q52pra6uWbtKuXTs2b97MTz/9RNOmTfntt9/YsWMHr7322lO3L5MqO4P9BZSeno6ZmRlpaWllfuTwLCUMfIfsiAjsFi3CrEf3J1/wJL+8BXEHylV0Uk0r/jI24pN7qdS+HMiVvOa46R+ii8Vy+OiEcnm5Cpi+8yzrTyTyXhtHZvd++herIAiC8Ozl5OQQHx+Pk5OTxnmuVa2wsJAzZ87g4eGBlpZWpdZ98OBB+vTpw+XLl7GwsKjUuoXqVd7XuFib6zmh16A+2RER5F44D5URJPdbC4nHQSp8YtGGN47y15U9RDu1pa9HQxRHC2lsfgtuK+DAbBhYPKm/PNq51GD9iUSOxYn1kgVBEIQXy549e5gyZYoIkF9hIkh+Tug3UK6DWCmT9wAMzKFB+fYtb2hhC1f2EJ2XQk3v7vh7A7cd4PsthITV5co/B0Gr5HULB3/dDi0tZdbOoc0XuBz5cFMSSYKP7utDWiE/TzjCu7PaomegfMkd++0iseE3S6wTYMCUlhiZKfOewv68TPSx66WW7fN5c8xqKmdA/7s3gaiDV0st2yuwGVa1lWtoRoYkcXpf6ektb37UhFp1lZ8snDtyjVO7S17OBsB3eCPsXJX/kF4Iu8Hx7ZdKLfvGYHccGykXto87c4vDW0pfk9N7YH2cPZSzjBPP3eXAhpJnZQO06+NC/dbK2bzXYu+x7+dzpZZt1cOJRl7KvLCb8ens+SGq1LKevo40fUM54eTutQz+XB5RrIwMqGFvwmvetanbuEapdQmCILwoFi5cWN1d0MimTZtUaRmPK2nFCOHJRJD8nNBvULRWculB0LPibuWODBk3s25yN/suVgZWULM+eLxLbogxWdkS8OT1k3OzC8hKUy9njHIJupz7+cqo+YG8EsqqeSQJKC+n7LKS4pF6cwrLLKt4pGx+7hPKFj4sW5CnKLNsYf6jZcuutzBf8UjZsustyH/4SUBh/hPK5j1StuBJZR/2QVFYdtn83If1KhRSqWUz0+5i7WiiCpIVhQokUL2JEgRBEJ6dXr16lbo/RFkbdAilEznJPB85yYqsLC40bwGShOvRI2jXqNrRuJ5/9CQhPYFVPqvoUPvBihjp10n/tiu5+VrQbQHUbVfsuhp1jFU79aTfySY3W33/+LXHEvjtnyQ6u9di7vueyOXKsvdTcsjJzC+1P5Z2RqrgKuNeLtkZpQdxljZGaOkoy2am5pJ1v/SyFrUM0dZV5q1lpuWWuXmKubUhOnrKstn388hIzS21rFlNA3T1le85szPyyLhXelnTGgaqEfWczHzup+SUWtbEUh99I+U/brnZBaTfKX3ZHBMLffSNlWXzsgtIK6OssbkeBibKFUfycgpIu116WSMzPQxNlWUL8gq5d7P4gvWFBQoSz96lfmsbzK2VS0XFnblF6MYLuDS3xq1VLWyczZDJy163WxCE6idykoWXnchJfsHIDQ3RdXQkLyGBnPMXMO5QtUFyQ6uGJKQnEH03+mGQbGqHafu+cGwpRE2H9seUG5aUwrRG8UXf2za34fuIK4TeSlXb18TEUr/cazEbW+hhbFG+bcSNzPUwMi9nWTM9VUrHkxiY6KqCyieWNdbFwLh8ZfWNdFRB8JPoGWhT096kXGV1NSmrX/6y2rpapZa1cTJTe54QdYeczHzOHr7G2cPXMLHUx7VVLdxa1cLKzrhc7QmCIAhCdRGfgz5H9IrWS77wlDvvVUBDK+Wi5tF3o9VPdBgH+uZwOwaiSl6ypiwtHC3R1ZKTnJZD/J3Mp++o8MLo9G4DegY2pX4bG3T0tLifksPpvYlsmXWKLbNPkZdT8ORKBEEQBKGaiCD5OaLaeS/mOQqSDSzA61Pl1wfmQn7pqQElMdDVwtPRHIBjcWK95FeJXEuOQ0MrfIY25P2FHeg6vBF1m9RAriVDS1umSk8BSIpJUcvVFgRBEITqJoLk54jeg8l71TGS3MBSGaAnZyZzL+ee+slWI8G0NqRfhfA1Gtfd/sHue8cviaXgXlU6ulq4tqhF94+b8P6CDrwx2F11Lje7gL++i2LzrDAuR9xGTJMQBEEQngciSH6O6LsrA4fcy/Eockuf+PUsmOia4Giq3LGn2GiyjgF0nKz8+sgiyE7VqO52Lsog+cTlu2qrSwivJn0jHdUyfAAZKTnoGWmTfjub//vhP3YujeDO1Yxq7KEgCIIgiCD5uaJtbY2WuTkUFpJ7sfR1dp+VhpalpFwANH0HajaA7HtwbJlG9TatY4axnjapWflEJ6dXRleFl4hVbWMCZraheTdHtLTlXLtwj61zTxG66TzZZaxUIgiC8DyRyWTs2LGjurtRberWrcvSpUtVz1+G74cIkp8jMpkMPfcHk/eqYb3kUvOSAbS0ofM05dcnV0F6crnr1daS09rJEoBjIuVCKIGuvjZtetdj0IzW1PO0RpLg3JHrbJ4RJib4CYJQLkOHDkUmkyGTydDR0cHJyYmJEyeSk6PZXJoXzaP3LZPJsLKyolu3bkRFlb5JVFVITk7Gz8+vWvvwtESQ/JzRr/9g8l5l7byngaIgOSallAC9/ptg3xoKsuHQfI3qbltPucOcmLwnlMW0hgHdRr7GW595UMPeGNdWtdQm+AmCIJSlW7duJCcnc/nyZZYsWcKPP/7I9OnTq7tbz1zRfScnJxMSEoK2tjY9evSo1j7Z2Nigp1e+ZVafVyJIfs7oq0aSq37ynruVMif6WsY1UnNSixeQycBnpvLr07/AnYvlrrv9g7zk8PgU8grEKgZC2excLeg/uSVt36qnOnbnaga7lkdw95rIVxYEoWR6enrY2Nhgb29P79698fHxITg4WHX+7t27vPPOO9SuXRtDQ0MaN27Mr7/+qlZHx44dCQwMZOLEiVhaWmJjY8OMGTPUyly8eJHXX38dfX19GjZsqNZGkf/++4833ngDAwMDrKysGDlyJBkZD//9Gjp0KL179+brr7+mVq1amJubM2vWLAoKCpgwYQKWlpbUqVOHtWvXlvu+bWxsaNasGZMmTSIpKYnbt2+rynzxxRe4ublhaGiIs7MzX331Ffn5Dzf1ioyMpFOnTpiYmGBqakrz5s35559/VOePHj2Kl5cXBgYG2NvbExgYSGZm6Uu7PppukZCQgEwmY/v27XTq1AlDQ0OaNm3KiRMn1K7RtI1nTQTJz5mitZJzLlyo8ln+JromOJg4ABCdUkLKBYBjW3DzA6kQQmaVu+76tUywMtIlO7+QiKTUSuit8LKTy2Xo6D7cvObEH5e4Ep1C0JxTHPr1Qpm7MAqCUPnycwtLfRTkF5a/bF75yj6ts2fPcvz4cXR1H27ulJOTQ/Pmzfnrr784e/YsI0eO5L333uPUqVNq165fvx4jIyPCwsJYsGABs2bNUgXCCoWCPn36oKurS1hYGD/88ANffPGF2vWZmZn4+vpiYWFBeHg427ZtY//+/YwePVqt3IEDB7h+/TqHDx/m22+/Zfr06fTo0QMLCwvCwsL48MMPGTVqFFevXi33fWdkZLBx40ZcXFywsrJSHTcxMWHdunVER0ezbNkyVq9ezZIlS1TnAwICqFOnDuHh4fz7779MmjRJtZ11XFwc3bp1o2/fvkRFRREUFMTRo0eL3c+TfPnll3z++edERETg5ubGO++8Q0FBQaW2UZnEttQ8H9tSF5Hy8jjfvAXk51Nv/35069Su0vYnHJrA3oS9jPUcy/DGw0sudDMafmgPkgKGh0CdFuWqe/Tm0+yOSmZsZ1fGd3GrxF4Lr4K029kc336Jy2eUIyN6htq07O7Eax1rq7YwFwTh6ZW2Ze93Hx4o9RrH16zoMbqp6vmPgaEU5JX8qaGdqzlvfeapev7z50fIycgvVu6TH954Yl8f3ZZ62LBhbNy4EX19fQoKCsjNzUUul7N161b69u1bah09evSgQYMGLFq0CFCOJBcWFnLkyBFVmVatWvHGG28wf/589u3bR/fu3UlMTMTOzg6AvXv34ufnxx9//EHv3r1ZvXo1X3zxBUlJSRgZGQGwZ88eevbsyfXr16lVqxZDhw4lNDSUy5cvI5cr/w1r0KAB1tbWHD58WHV/ZmZmrFmzhoEDB5bY/6FDh6ruG5QBuq2tLbt378bT07PEawAWLVrEli1bVKPFpqamrFixgiFDhhQrO3z4cLS0tPjxxx9Vx44ePYq3tzeZmZno6+tTt25dxo0bx7hx4wDlSHLR9yMhIQEnJyfWrFnDsGHDAIiOjqZRo0bExMTQoEGDcrVRWcq7LXWF/7Lk5eVx4cIF1TsAoXLIdHXRc3EBnsPJe0VqNVSudgEQPB3K+T6rKOXieJyYvCdozqymAX6jGuM/3gOrOsbkZhVwdNtFtsw6xbUL955cgSAIL71OnToRERFBWFgYQ4YM4f3331cLkAsLC5k9ezaNGzfG0tISY2Nj/v77b65cuaJWT5MmTdSe29racuvWLQBiYmKwt7dXBcgAbdu2VSsfExND06ZNVQEyQPv27VEoFFy48HDOUaNGjVQBMkCtWrVo3Lix6rmWlhZWVlaqtp903xEREZw6dQpfX1/8/PxITExUlQkKCqJ9+/bY2NhgbGzM1KlT1e77008/Zfjw4fj4+DB//nzi4uJU5yIjI1m3bh3Gxsaqh6+vLwqFgvj4+DL79qhHv6+2trYAqnurrDYqk8YzYrKyshgzZgzr168HIDY2FmdnZ8aMGUPt2rWZNGlSpXfyVaNfvz65MTHknL+AiY9PlbZdlJdcZpAMynWT//sNEo/Cpf3g2uWJdRdtKnLmSiqZuQUY6YkJWYLm6tS3YMCUlsQcu07Yn5dJvZnF/ZSHs9fzsgtAhpjwJwiVbOQy71LPyR4bcvtgoVfpZWXqzwfPbfc03VJjZGSEy4OBpv/97380bdqUn3/+WTV6uXDhQpYtW8bSpUtp3LgxRkZGjBs3jrw89fStojSDh32WoVBU/nyaktqpSNuP3jfAmjVrMDMzY/Xq1cyZM4cTJ04QEBDAzJkz8fX1xczMjC1btrB48WLVNTNmzGDQoEH89ddf/N///R/Tp09ny5YtvPXWW2RkZDBq1CgCAwOLte3g4FCh+5U9eCEU3VtltVGZNB5Jnjx5MpGRkYSGhqoNUfv4+BAUFFSpnXtVFU3ey6mGkWR3y4eT99Jy00ovaG4PrUcqv94/A8rxj4eDlSF1LAwoUEicSkiphN4Kryq5XEYjr9oEzGpLi+51cWpaQ3Xu3JHrrJ1wlP/78T8uht8US8gJQiXR0dMq9aGto1X+srrlK/u05HI5U6ZMYerUqWRnZwNw7Ngx/P39effdd2natCnOzs7ExsZqVK+7uztJSUkkJz9cCvXkyZPFykRGRqpNOjt27BhyuZz69es/xV2Vj0wmQy6Xq+77+PHjODo68uWXX9KiRQtcXV3VRpmLuLm5MX78ePbt20efPn1UkwY9PT2Jjo7GxcWl2OPRnO+nURVtaErjIHnHjh2sXLmSDh06qN4FgPIjg0eH5oWK06tftMJF1S8DZ6ZnRh3jOkA5RpM7fAp6ZnDzLPy3rVz1iy2qhcqkZ6BN657O6Bk+HJ24mZBGQb6Cy2dus+/nc/xvwlH+74f/iA2/IQJmQXjF9O/fHy0tLb777jsAXF1dCQ4O5vjx48TExDBq1Chu3rypUZ0+Pj64ubkxZMgQIiMjOXLkCF9++aVamYCAAPT19RkyZAhnz57l4MGDjBkzhvfee49atWpV2v0Vyc3N5caNG9y4cYOYmBjGjBlDRkYGPXv2BJT3feXKFbZs2UJcXBzLly/njz/+UF2fnZ3N6NGjCQ0NJTExkWPHjhEeHo77g52Av/jiC44fP87o0aOJiIjg4sWL7Ny5s1In1VVFG5rSOEi+ffs21tbWxY5nZmaqBc1Cxek3UL7LzL96lcL796u8/XLlJQMYWkKHccqvD86Bgidvpd3O5cF6yZfEesnCs+E74jUGTGmJZzdHzGoaUJiv4HLEbYJ/jmbDlOMUiiUIBeGVoa2tzejRo1mwYAGZmZlMnToVT09PfH196dixIzY2NvTu3VujOuVyOX/88QfZ2dm0atWK4cOHM3fuXLUyhoaG/P3336SkpNCyZUv69etH586dWblyZSXe3UN79+7F1tYWW1tbWrdurVpRo2PHjgD06tWL8ePHM3r0aJo1a8bx48f56quvVNdraWlx9+5dBg8ejJubGwMGDMDPz4+ZM5XLvjZp0oRDhw4RGxuLl5cXHh4eTJs2TS0v+2lVRRua0nh1i9dff53+/fszZswYTExMiIqKwsnJiTFjxnDx4kX27t37rPr6zDxPq1sUudjpDQqSk3Hc+AuGLcq3ekRl+fm/n1l6eim+dX1Z5L2o7MJ5WbDCE+4nQ7f50OajMovfup9Dq7khAJz5qgsWRtXzEYrwapAkiTtXM4j79xaXTt/CqrYxfqMeToo5sjWWmvYmmNYwwMBEBwNjXfQMtZHJxRt+4dVV3pn/z4NHV7fQ0nr6FA3h1VDe17jGM1u+/vpr/Pz8iI6OpqCggGXLlhEdHc3x48c5dOjQU3VaeEi/QQMykpPJiTlf5UFy0Ujy+ZRybGiiawgdJ8GusXB4ITQLAP3S32hYm+jjVsuY2JsZnLh8lzcb21ZWtwWhGJlMRk17E2ram9Da31lt7dXUm1lEHSi+9qhMBvrGOjTsYEcbf+VmJgV5hfy7N1EVSOs/+K+BsQ7aelpoactUOZmSQipzjVe5lkyVkylJEvk5pZeVaT1cK1qTsvBgAmNpZeUytZxPjcrmFIAE2rpy5GLpPUEQXmIaB8kdOnQgIiKC+fPn07hxY/bt24enpycnTpxQW7ZEeDp6DeqTcfAg6bt3o8ioWMqFdi0bzHr2QPbYTNknKcpJvpVV9pIzKs3eheMr4e5FOL4C3viyzOLt6tUg9mYGxy7dEUGyUGVkMpnaihc6elq0eLMu1y7cIys9j+yMfPKyC5AkyL6fj6Lw4YdsWel5/LMnodS6m3Sqg9fbbqqy6yYdK7Vsw/a2dHpPmeeXl1PImvGHSy3r2rIWXYc1AkChkFhdRtm6TWrQ/eOHyyv9/PkRtXt4VJ0GFviP81A93/DlcXKzSg6UbZxN6Tvx4Rv1zdNPkpmWh56hNq16OvOad23kYuRdEISXUIXWSKpXrx6rV6+u7L4IjzBopPzDmB0ZSXZkZIXryQoLw3b+PI3yxS0NLJVtF2STlZ+FoY5h2RdoaUPnabD1PTixEloOB5PSJya0d6nBuuMJHI8TeclC9TEy16N1L2e1Y4UFCnIy88m+n4+e4cN/HrW05bz2em2yM/LIvp9PdkY+ORl55GTkl3eZ8JdOblYBR4JiiTl+He9B9bFxMqvuLgmCIFQqjXOSH19w+3HVtZbd03gec5KlggLu/PAjBU9YQLys69N27oTCQmp8/BE1S1h3sNRrJYkWG1uQp8hjb9+91DYux65/kgRrfODaP8ogufviUoum5+TTbOY+FBIcn/QGduYG5e6bIDxPJIWEolBCJkeVeiBJEoqCMv5ZlaPaIfBZlQUozC9jgqJMGfhXtKwkSZw/eYOTO+KUI9AyaNjBjrb+9dA31uyTK+H5I3KShZfdM8tJrlu3bpmjkoWFT7/fugAybW1qjv7kqeow9PQgeepX3Pl+Fdq2tlj071++tmUyLA0suZF5g5TslPIFyTIZdJkJ67rDv+ugzcdgVa/Eoqb6OjSpY05EUirHLt2hfwt7De5KEJ4fMrkMrcdSDWQyGVo65fvk5lmVBdDSKX++cEXKvvZ6bZyb1eTE9kucP3mD6CPXcWtRi9r1LcpdlyAIwvNM41kXZ86c4fTp06pHWFgYP/zwA25ubmzbVr61coWqYd6vHzU+Vq42cWPGTDIOl57P+DhLfWXKxb1cDbb7rdsBXLuCogAOzC6zaPsHS8GJlAtBeHEZmurSeWhD3vrMgxbd66oFyLlZ+dXYM6EyaPhBsyC8MMr72tY4SG7atKnao0WLFowYMYJFixaxfPlyjTsqPFs1xozBzN8fCgu5Om482efOleu6oiD5braGQWzn6YAMzv0B1yNKLVa0qcixS3fEP8SC8IKzc7Wgdc+H+d33U3LY8OUJjm67KDZweQEVpS08vlWzILwssrKygOLbgj+uQhP3SlK/fn3Cw8M1uqZu3bolbov48ccf89133xEXF8fnn3/O0aNHyc3NpVu3bqxYsUJtt5qS6pg3bx6TJk2q2I28ZGQyGbazZ1Fw+xaZx0+Q9OGHOG3Zgk7tslMoioLklBwNt4+2eQ0a9VYGyef+ALtmJRbzdLRAV1vOrfu5xN3OxMXaWLN2BEF4bsWdvkVedgGRIUlc+ucm7fu74tLcWmw49YLQ1tbG0NCQ27dvo6Ojg1z+/C71V5TimZOTI3KShSeSJImsrCxu3bqFubn5E18zGgfJ6enpxRpMTk5mxowZuLq6alRXeHi4Wg7z2bNn6dKlC/379yczM5OuXbvStGlTDhw4AMBXX31Fz549OXnypNov7axZsxgxYoTquYmJiaa39VKT6epSe9kyEgPeJTc2lisjR1F38ya0zEqfjV7hIBnAxUcZICeFlVpEX0eLFo4WHI+7y/G4OyJIFoSXSDMfByxsjTi8JZb029nsW3OOmGPXeX1gfcxrPWG1HKHayWQybG1tiY+PL3Eg63miUCi4c+cOCQkJz3UwLzxfzM3NsbGxeWI5jYNkc3PzYqMBkiRhb2/Pli1bNKqrZs2aas/nz59PvXr18Pb2Jjg4mISEBM6cOaNacWL9+vVYWFhw4MABfHx8VNeZmJiU62ZfZVomJtj/9CMJbw8kLy6Oq6PHYP/zGuS6Je94p8pJztEgJ7mIfRvlf6+dVm5Vra1XYrH2LjU4HneXY5fuMLhtXc3bEQThueXYyIp3prXi9N9XOL03kaSYe/w6O4wWfnVp2d2pursnPIGuri6urq7PfcpFRkYG3bt3559//sHYWAy2CE+mo6NT7k8dNA6SDx48qPZcLpdTs2ZNXFxc0NauePZGXl4eGzdu5NNPP0Umk5Gbm4tMJkNP72GApa+vj1wu5+jRo2pB8vz585k9ezYODg4MGjSI8ePHP1VfXlY6NjbY//QTiQEBZIWHkzxpMnaLFiIr4d33U40kW9UDwxqQdUeZl+zQusRi7eopJ++diLtLoUIqtkqAIAgvNm0dLVr1cMKtVS2OBMVy5VwKBWUtNyc8V+Ry+XO/BFxeXh6JiYno6uo+930VXjwaR5Le3t7Poh/s2LGD1NRUhg4dCkCbNm0wMjLiiy++4Ouvv0aSJCZNmkRhYSHJycmq6wIDA/H09MTS0pLjx48zefJkkpOT+fbbb0ttKzc3l9zcXNXzx1NIXmb69d2os2I5V0aOIn3PHnTsbLH+/PNi5Z4qSJbJwKENnN8NSSdLDZIb1zbDRE+b9JwCzl1Po0kdc83bEgThuWdubUiP0U2Jj7yDvbul6nj6nWx0DbTRNxJrKwuC8PwpV5D8559/lrvCXr16VagjP//8M35+ftjZ2QHKVIxt27bx0UcfsXz5cuRyOe+88w6enp5qeUeffvqp6usmTZqgq6vLqFGjmDdvntoo9KPmzZvHzJkzK9TPl4FR27bYzZnN9S8mcXfNz2jb2mIZEKBWRrW6RU4Fl2grCpKvhEH7kotoa8lp7WzF/pibHLt0VwTJgvASk8lkODd7mGKnKFTw9+qzZNzLxfud+jh71CzjakEQhKpXriC5d+/e5apMJpNVaDORxMRE9u/fz/bt29WOd+3albi4OO7cuYO2trYq0drZ2bmUmqB169YUFBSQkJBA/fr1SywzefJkteA6PT0de/tXa0MLM39/8q9f5/ay5dyc+zU6traYvPGG6vyjI8mSJGk+K70oLznppHI3vlKub++iDJKPx93ho44lbz4iCMLLJys9j/zcQrLS8/i/H//Dpbk1Xm+7YWha8jwJQRCEqlauqaAKhaJcj4rutrd27Vqsra3p3r17iedr1KiBubk5Bw4c4NatW2WOVkdERCCXy7G2ti61jJ6eHqampmqPV5HVhx9i3r8fKBRc+/QzsqOiVOcs9JWbAhQoCsjIz9C8ctumoK0PWXfh7qVSi7V3Ua6XHJ6QQm6B2K1REF4Vxhb6DPiyJc27OSKTy7j07y1+nRlG7KkbYu10QRCeC9W+XopCoWDt2rUMGTKk2GS7tWvXcvLkSeLi4ti4cSP9+/dn/PjxqhHiEydOsHTpUiIjI7l8+TKbNm1i/PjxvPvuu1hYiK1Rn0Qmk2EzfTpGr3sh5eSQ9OFH5F25AoC+tj5GOkZABfOStXWhdnPl11dOllrM1dqYmiZ65OQrOHMlVfN2BEF4YWnraNGmdz36T2qBVR1jcjLzCf5fNHu+jxI79gmCUO0qtAREZmYmhw4d4sqVK8WWhwkMDNSorv3793PlyhU++OCDYucuXLjA5MmTSUlJoW7dunz55ZeMHz9edV5PT48tW7YwY8YMcnNzcXJyYvz48WqpFELZZNra1FmyhMT3BpMTHU3SiJE4bvkVbQsLLPUtyczPJCUnBUdTR80rt28NiceUQbLneyW3L5PRrp4VOyOuc/zSHdo4Wz3lHQmC8KKp6WBC/8ktOPN3IuF/JZCVnoeOntgYQhCE6iWTNPxc68yZM7z55ptkZWWRmZmJpaUld+7cwdDQEGtray5fvvys+vrMpKenY2ZmRlpa2iubelFw+zYJbw8k//p1DJo1w2HdWt47MIyo21Es7biUzo6dNa809m/YPACsXGDMv6UWCwq/whe//0dzRwt+/6jdU9yFIAgvurvXM5DLZVjYKD/JKshX5i2bWhlUc8+E55H4+y08SxqnW4wfP56ePXty7949DAwMOHnyJImJiTRv3pxFixY9iz4KVUC7Zk3sV/+E3NSU7IgIrk+YiJWuMmUlJbcC6RYA9q2U/717CTJul1qsXT1lXnJkUioZuQUVa0sQhJeClZ2xKkAGCN+dwK+zThF18CqSQuQqC4JQdTQOkiMiIvjss8+Qy+VoaWmRm5uLvb09CxYsYMqUKc+ij0IV0atXD/vvViLT0eF+cDBdfktAppBIya5gkGxgATXdlV+XsUW1vaUhDpaGFCgkTsVXcMk5QRBeOgqFxM2ENApyCzkSFMsf354m9WZWdXdLEIRXhMZBso6OjmqdYmtra648mOhlZmZGUlJS5fZOqHKGLVti9818AFxC4/h8u4K01JsVr7BoI5Gk0ifvgXIpOIBjl0SQLAiCklwuw3+sB68PdENbT4vkS2lsmXOKkzvjOHv4GpmpDzeFunstg7OHr5X6uJ+SU413IgjCi0jjiXseHh6Eh4fj6uqKt7c306ZN486dO/zyyy+89tprz6KPQhUzffNNAJK+mEjLi4XcnfMX+fVHomNjo3llDm3h33VlrnABypSLX08lcezSnQr0WBCEl5VMLqNxxzo4vmZF6KbzJMXc49//SwTAwsYQI3PlplHXYlM5EhRbaj3dP2mCiaVy2+K71zKIOZFMqx5O6OpXaP66IAivAI3/dfj666+5f/8+AHPnzmXw4MF89NFHuLq68r///a/SOyhUD9M33ySZBIymrsAqKZ2E/gOos2oVBq810qwi+wcjydcjID8bdEqefNOunnIk+fyN+9zJyKWGccm7JQqC8GoyrWFAz8BmxIbdID7yDpIE+sY6j5zXV9vR73FFm5RIksShzRdIjkvj0j+36NDflXqeNTXfMEkQhJeexqtbvIzE7NiSnbh+gi+3jWDadi1q3cxDpq+P3cIFmHbpUv5KJAkW14eMm/D+/4Fj6atXdFt6mPM37rNykAc9mthVwh0IgiAUl3juLod/vUD6HWUKhkMjS7zedsPc2rCaeyZoSvz9Fp4ljXOS58yZQ3x8/LPoi/CcsdS35La5jHkfmGLkpdxw5FrgWO6uWVP+HbFkMnB4sEX1lRNlFi3afU/kJQuC8Cw5NrLinWmtadG9LnJtGVfOpbBl1inC/4qnIF/s/CkIgpLGQfK2bdtwcXGhXbt2fP/999y5I3JIX1ZWBsoUiBuydOy+W4FFQABIErcWLSZ56lSkxzaSKZV9UZBc+goX8HDy3vE48ZoSBOHZ0tbVonVPZ975qjV1GlhQWKDg1K54YsOeYqKyIAgvFY2D5MjISKKioujYsSOLFi3Czs6O7t27s3nzZrKyxNI8LxMzPTMAFJKCdEUmNl9NpdaXX4JcTtrv27kyYiSFqalPrki1wkUYKBSlFmtZ1xItuYzEu1lcvSdeS4IgPHvmtQzpNbYZXYc3wvE1Kxq0fThBWazLLAivNo2DZIBGjRrx9ddfc/nyZQ4ePEjdunUZN24cNhVZ/UB4bunIdVSB8r2cewBYvvcu9qu+R25kRFZYGAkD3yEvIaHsimyagI4h5KTCnQulFjPR16FpHWV7x0XKhSAIVUQmk+HaohY9RjdFrqX8s1iQX8i2+f8QeSAJhQiWBeGVVKEg+VFGRkYYGBigq6tLfn5+ZfRJeI5Y6lsCkJLzcEMRY29vHDdvRtvOlryEBBLeHkjmqVOlV6KlA7WbK79+wlJwqrxkkXIhCEI1On/iBrev3Ofo1otsmxfOzfj06u6SIAhVrEJBcnx8PHPnzqVRo0a0aNGCM2fOMHPmTG7cuFHZ/ROqWVGQfDdHfWRXv74bTkFB6DdpQmFaGleGDSd1+x+lV6SavPfk9ZIBjly8w/0c8aZLEITq0bCDHd6D6qNnqM2dpAx+W/APoZsvkJMp/l0ShFeFxuskt2nThvDwcJo0acL777/PO++8Q+3atZ9F34TngGokuYStqbVr1sRxw3quT57M/f/bS/KUKeTFx1Nz/Dhk8sfefxUFyU/Yea+5owX2lgYkpWQzfec5vn27WWXchiAIgkbkchmvvV4b52Y1Ob79EhdO3uDc4WvEht3AtYU1nd5zV5X9ZerxUlMy7FzM6fLBw/Xlf50VRl5OQYllrR1M8fuwser5tnnhZN0veYK0pa0RPcc0Uz3/Y/Fp0u9ml1jW1MqAtz7zVD3ftSKClOTMEssamujSf3JL1fM9q6K4nXS/xLK6+tq8M6216vm+n8+RHJdaYtl+X7TAyEysfy+8WDQOkjt37sz//vc/GjZs+Cz6IzxnSkq3eJRcX5/aixdzu25d7q76gburV5OXmIjdN/ORGzyycUidloAM7iXA/RtgUnL+uq62nCUDmjHgxxNsP3MN7/o18W8m3oQJglA9DE118RnaEPd2thzafIF7N7LIzlAfTc5IyS01SM5+LMjNuJdLXnbJQbKx+WNlU3PJSis5SNYz1FF7npmaS0ZKbolltbTVBy0y0/JKLSsVqt9H9v3Sy+oaFJa7rFT6nG1BeG6JzUQQi5GX5fuI71kVuYoBbgP4qu1XZZZN27mT5KlfIeXno//aa9jNn4eei8vDAqvaw82z0H89NOpdZl1L98eydP9FTPS02TPWC3tLsci/IAjVS1Go4O71THT0tNQ2HrmVWHq+sq6+Nua1Hpa9feV+qevMa+tqYWlrpHp+5+p9FIUll9XSkWNlZ6x6fvdaBoUFJUeiWtpyrGo/UvZ6BoX5JZeVa8moUcdE9TwlOZOCvJLXjpbJZNR0eFg29WZWqaPkVrWNiwXrlUH8/RaeJbFpvVCmJ40kP8rM3x+d2rW5OnoMOWfPcrmXP2b+/tQc/Qk6tWsrUy5unlUuBfeEIHl0JxeOXrzDP4n3GBcUQdDINmhrVf4/sIIgCOUl15JT096k2HFrx/IHZ48GlU/yaLD6JI8GwU8sa1f+so8G7U/y6JsBQXgZiKhDKJMmQTKAYYsW1P1tGyZdfEChIO2PP4jr5seNuV9TYPqastATJu8BaGvJWfJ2M0z0tPk38R4rD16q8D0IgiAIgiBoSgTJQpks9C2A8gfJALp16lBnxQrqBm3BsE0bpPx87v3yC5cCl3MryoTCxCjIK3nSyKPsLQ2Z85YysF4ecpF/EsrfB0EQBEEQhKchgmShTFb6yq2iNQmSixg0bYrjurU4/O9n9Bs3RsrO4W60CXG7anB32dcocnKeWId/s9r08aiNQoKxWyJIF8vCCYIgCIJQBSo0cS81NZVTp05x69YtFI9tMzx48OBK61xVEYn/pUvNScUryAuA0++eRkdL5wlXlEySJO4HB3N79iTybiuXKdKuVYsaH3+MeZ+3kOmUXu/9nHy6Lz/KlZQs/JvZsWygR4X6IAiCILxcxN9v4VnSOEjetWsXAQEBZGRkYGpqikwme1iZTEZKyov3kbj4JSudQlLg+YsnhVIhIf1DsDa0fqr6pBM/kLZqBrfP16QgXTkLWsfRgZqBgZj6+RVfX/mB01fu0f+HExQqJJa83ZS3POo8VT8EQRCEF5/4+y08SxqnW3z22Wd88MEHZGRkkJqayr1791SPFzFAFsoml8krlJdcGlndtpg7Z1OvVyq1Jk9Cy9KS/MQrXP/sc+L79iPj0KESl0fydLBgXGdXAL7acY4rd7Oeui+CIAiCIAil0ThIvnbtGoGBgRgaiqVeXhWqILmEXfc0Zt0IdI2RF6Rj6etJvX37qBE4BrmxMbkxMSSN+pDEd98jOyqq2KUfd3KhVV1LMnILGBt0hvxCsTq9IAiCIAjPhsZBsq+vL//888+z6IvwnFItA5dbCUGylvaD3feAKyfRMjai5scfUy94H5YffIBMT4/sf/8l8b3BZJ89p36pXMaSgc0w0dfmzJVUVoRcfPr+CIIgCIIglEDjILl79+5MmDCBGTNm8Pvvv/Pnn3+qPYSXjypIroyRZFBuKgLKTUUe0LawoNbECdTb9zdG7doi5eZydfRoCu7cUbu0trkBX7/VGICVBy9xKl6k+AiCIAiCUPk03nFvxIgRAMyaNavYOZlMRmFhydtXCi+up1kGrkT2rZX/LWFTEZ1atai9bBkJA94mLz6eq4FjcVy3FpmurqpMz6Z2HIq9zW//XmV8UAR7xnphZlCxVTcEQRAEQRBKovFIskKhKPUhAuSXU2VO3AOgTguQaUFaEqRdK3Zay8SEOt99h9zYmOzTp7kxe06xyXwzejXC0cqQa6nZfPnHfyVO9hMEQRAEQagosZmI8ERF6Rb3cu5VToV6JmDzYIvqpJK3qNZzdqL24kUgk5G6bRupW7aonTfW02bZQA+05TJ2RyXz++niwbYgCIIgCEJFVShIPnToED179sTFxQUXFxd69erFkSNHKrtvwnNClZNcWSPJAPYP8pJLSLkoYuztTc1PxwNwY+7XZIWHq51vZm/O+C5uAEzfeZaEO0/e6loQBEEQBKE8NA6SN27ciI+PD4aGhgQGBhIYGIiBgQGdO3dm8+bNz6KPQjUrCpLv5tytvEodnhwkA1gNH47pm29CQQFXx44j/5r6iPGH3vVo7WRJZl4hY4MixLJwgiAIgiBUCo2D5Llz57JgwQKCgoJUQXJQUBDz589n9uzZz6KPQjWr9Il78DBIvnkWcu+XWkwmk2E7dw56Dd0pTEkhafQYFNnZqvNachlL3m6GmYEOkUmpLN0fW3l9FARBEAThlaVxkHz58mV69uxZ7HivXr2Ij4/XqK66desik8mKPT755BMA4uLieOutt6hZsyampqYMGDCAmzdvqtWRkpJCQEAApqammJubM2zYMDIyMjS9LaEMRRP3sguyyS7IfkLpcjK1AzMHkBRwNbzMonIDA+xXrkTL0pLcmBiSv/xSbaKenbkB8/ool4X7PjSOk5crccRbEARBEIRXksZLwNnb2xMSEoKLi4va8f3792Nvb69RXeHh4WorYpw9e5YuXbrQv39/MjMz6dq1K02bNuXAgQMAfPXVV/Ts2ZOTJ08ilyvj+4CAAJKTkwkODiY/P5/333+fkSNHitSPSmSkY4SuXJc8RR73cu5hYGxQORU7tIH/rsCVMKj3RplFdezsqLN8GYlD3yd9z/+h18CdGiNHqM6/2diWAS3qsPUf5bJwo99wQYasQt1qaGdKM3vzCl0rCIIgCMLLQeMg+bPPPiMwMJCIiAjatWsHwLFjx1i3bh3Lli3TqK6aNWuqPZ8/fz716tXD29ub4OBgEhISOHPmDKampgCsX78eCwsLDhw4gI+PDzExMezdu5fw8HBatGgBwIoVK3jzzTdZtGgRdnZ2mt6eUAKZTIalgSU3Mm+QkpOCnXElfV8dWsN/W0td4eJxhi1aYDN1KjdmzOD2kiXoubli0rGj6vz0no0IT7hH/J1MvvzjbIW7past5+Tkzlga6T65sCAIgiAILyWNg+SPPvoIGxsbFi9ezNatWwFwd3cnKCgIf3//CnckLy+PjRs38umnnyKTycjNzUUmk6Gnp6cqo6+vj1wu5+jRo/j4+HDixAnMzc1VATKAj48PcrmcsLAw3nrrrRLbys3NJTc3V/U8PT29wv1+VVjqPwySK03RChdJ4VBYoNyy+gksBr5NzvkYUrcEcf3zCdTdGoSeszMARnra/Phec5aHXCSvoGIT+P5JvEdKZh5hl+/i19i2QnUIgiAIgvDi0zhIBnjrrbdKDUAraseOHaSmpjJ06FAA2rRpg5GREV988QVff/01kiQxadIkCgsLSU5OBuDGjRtYW1ur1aOtrY2lpSU3btwota158+Yxc+bMSu3/y64oL/ludiXm+1q7g54Z5KYpJ/DZNSvXZTZTppB76RLZ//zL1Y8/oe7WILQefNrgVsuElYM8K9ylGX+eY93xBE6KIFkQBEEQXmnPzWYiP//8M35+fqoUiZo1a7Jt2zZ27dqFsbExZmZmpKam4unpqcpHrqjJkyeTlpameiQlJVXGLbzUila4uJdbSRuKAMi1wL6l8usnLAX3KJmuLnWWLUPb1pa8hASuff45UiXt9tjGWbnc3Qkx+U8QBEEQXmnlijYtLS25c+cOABYWFlhaWpb6qIjExET279/P8OHD1Y537dqVuLg4bt26xZ07d/jll1+4du0azg8+XrexseHWrVtq1xQUFJCSkoKNjU2p7enp6WFqaqr2EMqm2lAkuxLTLeCRlIvyB8kA2lZW1Fm5ApmeHpmHj3B76dJK6U5rJ+WbgdibGdzJyH1CaUEQBEEQXlblSrdYsmQJJiYmqq9lsoqtGlCatWvXYm1tTffu3Us8X6NGDQAOHDjArVu36NWrFwBt27YlNTWVf//9l+bNm6vKKBQKWrduXal9fNU9k133QH1TEUkCDV5bBo0aYTt3Ltc//5y7q9egV78BZj1Kfg2Vl4WRLg1sTDh/4z5hl1Po3kSkXAiCIAjCq6hcQfKQIUNUXxflDFcWhULB2rVrGTJkCNra6t1Zu3Yt7u7u1KxZkxMnTjB27FjGjx9P/fr1AeWEwW7dujFixAh++OEH8vPzGT16NAMHDhQrW1SyZxYk124Ocm24nwypV8DCUaPLzXp0J/fCee6uXkPy1KnoOtXFoFGjp+pSG2crzt+4z8nLd0WQLAiCIAivKI2Te7W0tIqlOADcvXsXLS0tjTuwf/9+rly5wgcffFDs3IULF+jduzfu7u7MmjWLL7/8kkWLFqmV2bRpEw0aNKBz5868+eabdOjQgZ9++knjfghlK5q4V+lBsq4h2DRRfp0UVqEqao4bh9HrXkg5OVwdPYaCu0+XT9y2njLlQmxKIgiCIAivLo1Xt3h0p7NH5ebmoqur+bqyXbt2LbXO+fPnM3/+/DKvt7S0FBuHVIFnsjV1EYe2cP20MuWiyQCNL5dpaVF70SISBrxNXkICV8eOxfF//0NWgdcjQGsnS2QyuHgrg9v3c6lpovfkiwRBEARBeKmUO0hevnw5oNxYYs2aNRgbG6vOFRYWcvjwYRo0aFD5PRSeC4+mW0iSVLl56Q6t4eR3Gq1w8TgtU1PqfP8dCQPe/v/27js+qir94/hnZpJMEtI7NSR0pIM0FWRBmiIKiooFFkUULNhh7RUL67q6rFgQWRVRaSJiAQVBBQSkyQ8DhBIgoSUkIaRn7u+PISOBoJlkhpkk3/frdV/M3Ln33GeuE+fJyXPOIW/9BjJmzyaykqVBYYF+tIwLYXtaNmv3pHNFO5XuiIiI1DYVTpL/9a9/Afae5OnTp5cprfDz86Nx48ZMnz7d9RGKVygttyiyFZFTlEOwX7DrGi+d4eLI/0FeJgSEVaoZa2IikeNu5+g/XyVvw69Qhfr5HomRbE/LZs1uJckiIiK1UYWT5D179gDQp08f5s+fT3h4uNuCEu/j7+NPoE8gucW5ZORnuDZJDo6F8AQ4vgcOrIdm/SrdVOmgvfwdSVUKqXtiBO/9tIfVyapLFhERqY2cHri3fPlyJci1VGnJxfF8Fy4oUsoxFdzqKjVjPTXzSVHKfmwnT1a6nW4JkZhMkHz0JEdO5FcpJhEREal+nE6Shw8fzksvvXTW/pdffplrr73WJUGJd4oIsCfJ6flu6F0tTZIrOcNFKZ/ISCxRUWAYFOzaVel2QgN9aV3XvsjM2t1uGKwoIiIiXs3pJHnlypUMHjz4rP2DBg1i5cqVLglKvJPb5kqGP+qSD6yHkqIqNeV/qjc5P6mqJRf2GT20RLWIiEjt43SSnJOTU+5Ub76+vmRnZ7skKPFOjmngXL00NUBUc/APg+I8SNtSpaZKSy4KknZUqZ3SJFnzJYuIiNQ+TifJbdu25ZNPPjlr/5w5c2jdurVLghLvVDrDxfECN9Qkm82nlVxUfio4AP8WzQEoqGJPctdT8yXvPnqSw9mqSxYREalNnF5M5PHHH2fYsGEkJyfzt7/9DYDvvvuOjz/+mM8++8zlAYr3cJRbuKMnGaBhN9jxtX3wXo8JlW6mtCc5f8eOKs3pHBrgywX1QvjtoH0quKEd6lc6JhEREalenO5JHjJkCAsXLmTXrl2MHz+eBx54gAMHDrBs2TKuuuoqN4Qo3sKtNclw2gwXa+EcqzBWhF9iIvj4YMvOpvjQoSqF1MNRcqHBeyIiIrWJ0z3JAJdffjmXX365q2MRL1eaJLtldguAep3A4gcnj9jnTI5IrFQzZj8/rAkJFOzcSX5SEr5161Y6pO6Jkbyzao/qkkVERGoZp3uSSxUWFnLgwAFSUlLKbFJzub0n2dcf6nawP67CEtXgusF7FyZEYDbBnmMnOZSlumQREZHawukkeefOnVxyySUEBAQQHx9PQkICCQkJNG7cmISEBHfEKF6iNEnOLMjEZtjcc5FG3ez/VjlJds3gvRB/X9rUDwVg7R71JouIiNQWTpdbjB49Gh8fHxYvXkzdunUrPShKqp8w/zAAbIaNrIIsx2wXLtWoB/z8RpUXFXHMlVzF5anBXnKx5UAWq5M1eE9ERKS2cDpJ3rRpExs2bKBly5buiEe8mK/Zl1BrKFkFWWTkZ7gnSS5dVOTo75BzBIJiKtVMablF4Z692AoKMFutlQ6pe2IEb6/crbpkERGRWsTpcovWrVtz7Ngxd8Qi1YDb65LrREJcO/vj3Ssq3YxPTAyW0FAoKaEwOblKIV3Y2F6XvDc9l7SsvCq1JSIiItWD00nySy+9xMMPP8yKFStIT08nOzu7zCY1W7jV3nvstiQZoEkf+7/J31e6CZPJ9Md8yVUcvBfs70vbU3XJ6k0WERGpHZxOkvv168eaNWvo27cvMTExhIeHEx4eTlhYGOHhbvjzu3iVyIBTS1O7NUm2L1JD8vIqzZf8xwwXrqlLBliTrPmSRUREagOna5KXL1/ujjikmnB7uQXY65J9/CHnEBzZDrGVW+7csTy1KwbvNYnkrZW7WaMZLkRERGoFp5Pk3r17uyMOqSbcvjQ12OdLjr8Ikr+zl1xUMkl2VbkFQJf4cCxmE/vSc0nNzKNeWECV2xQRERHv5XSSvHLlyj99vVevXpUORrxf6YwWbu1JBntdcvJ3sHs59LyrUk1YmzYFk4mS9HSKjx3DJyqq0uEEn5ovefP+TNbsTmdYpwaVbktERES8n9NJ8qWXXnrWvtPnSi4pKalSQOLdzku5BfxRl7z3JyjKt/cuO8kcEIBffDyFe/eSn5REUBWSZIAeiZFs3p/J6mQlySIiIjWd0wP3jh8/XmY7cuQIX3/9NRdeeCHffvutO2IUL3LekuSY1hAUC8V5VVpYxFXLU4N9vmRAdckiIiK1gNNJcmhoaJktKiqKyy67zDE1nNRskf7nYXYLAJMJEqs+FZyrlqcG+3zJFrOJ/Rl5HDieW+X2RERExHs5nSSfS2xsLEkuSETEu5X2JGcXZlNkK3LvxUpLLnZXfkYVx/LULvhs1rH60K5B6XzJmgpORESkJnO6JnnLli1lnhuGQVpaGi+++CIdOnRwVVzipUKsIVhMFkqMEjLzM4kOjHbfxRIvtf+bthlOHoM6ztcUO8otkpMxioow+fpWKaTuiZFsTLEP3rums+qSRUREaiqnk+QOHTpgMpkwzljkoXv37rz33nsuC0y8k9lkJswaRnp+Ohn5Ge5NkoNjIbYNHP7NvkR122ucbsK3Xj3MdepgO3mSgj178G/evEoh9UiM5M0VyVp5T0REpIZzOknes2dPmedms5no6Gj8/Z2ffUCqp4iACNLz00nPPw+JYpM+9iQ5eXmlkmST2Yy1eXPyNm6kIGlHlZPkzvHh+JhNHDiex/6MXBpGBFapPREREfFOFapJjoiI4NixYwA8/fTTREREEB8fT3x8PA0bNlSCXMuctxkuoOzgvUouUW114cp7ZeuS1ZssIiJSU1UoSS4sLCQ7OxuAWbNmkZ+f79agxLtFWM/Dqnul4nuCxQonUuFY5aZxc+XgPYAeTewzfGjwnoiISM1VoXKLHj16cNVVV9G5c2cMw+Cee+4hIKD8ZXlVl1zzRQTYk+TjBcfdfzHfAIjvYa9JTv4eols43YQr50oG++C9acvtdcmGYZRZTEdERERqhgr1JH/44YcMHjyYnJwcTCYTWVlZZy0qUro5o3HjxphMprO2CRMmAHDo0CFuvvlm4uLiqFOnDp06dWLevHl/2caLL77oVBzinPNabgF/TAWXXLmp4Kyn6pCLDx+m2MnPaHk6x4fjazFxMDOPA8fzqtyeiIiIeJ8K9STHxsY6Es+EhAQ++OADIiMjq3zxdevWlVnG+rfffuOyyy7j2muvBeCWW24hMzOTRYsWERUVxezZsxkxYgTr16+nY8eOjvOeeeYZxo4d63geHBxc5djk3BxJ8vkotwB7krz0Cdi7CooLwMfq1OmWoCB8GzSg6MABCnbsxKdb1yqFE+jnQ/sGYazfd5zVyekavCciIlIDOb2YyJ49e1ySIANER0cTFxfn2BYvXkyTJk3o3bs3AD///DN33303Xbt2JTExkccee4ywsDA2bNhQpp3g4OAy7dSpU8cl8Un5zntPcswFUCcainJh/y+VauKPkgvX1CV3TyytS9bgPRERkZrIZSvuVVVhYSEffvghY8aMcdR49uzZk08++YSMjAxsNhtz5swhPz+fSy+9tMy5L774IpGRkXTs2JFXXnmF4uLiP71WQUEB2dnZZTapuPOeJJvNf8xyUcnV9/xPzXCR74IZLqBsknzmnOEiIiJS/XlNkrxw4UIyMzMZPXq0Y9+nn35KUVERkZGRWK1Wxo0bx4IFC2jatKnjmHvuuYc5c+awfPlyxo0bxwsvvMDDDz/8p9eaMmUKoaGhjq1hw4buels10nlPksE+XzLYB+9VgrW5awfvldYlp2blk5KR65I2RURExHs4vZiIu8yYMYNBgwZRr149x77HH3+czMxMli1bRlRUFAsXLmTEiBGsWrWKtm3bAnD//fc7jm/Xrh1+fn6MGzeOKVOmYLWWX7s6efLkMudlZ2crUXZCaZKcW5xLXnEeAT7lz3TiUqU9yambIDcDAiOcOt0xV/LOnRglJZgsliqFE+BnoUPDMNbtPc6a3enER6rER0REpCbxip7kffv2sWzZMm677TbHvuTkZP7zn//w3nvv0bdvX9q3b8+TTz5Jly5dmDZt2jnb6tatG8XFxezdu/ecx1itVkJCQspsUnF1fOvgZ/YD4Hj+eZgGDiCkLsS0Bgz7dHBO8mvUCJO/P0Z+PoUpKS4JqUei5ksWERGpqSqUJJ9Zv/tnW2XMnDmTmJgYLr/8cse+3Fz7n7DN5rIhWiwWbDbbOdvatGkTZrOZmJiYSsUif81kMhHuHw6c55KLKtQlmywWrM2aAa6dLxlgdbLqkkVERGqaCpVbhIWF/eWCCaWLKpw+pVtF2Gw2Zs6cyahRo/Dx+SOcli1b0rRpU8aNG8fUqVOJjIxk4cKFLF26lMWLFwOwevVq1q5dS58+fQgODmb16tXcd9993HTTTYSHhzsVhzgnwj+Cw7mHz3Nd8t9gzTT7fMmGAU4u4mFt0Zz8rVvty1MPHFDlcDrFh+NnMXMoO5996bk0jlLJhYiISE1RoSR5+fLKzShQEcuWLSMlJYUxY8aU2e/r68uSJUuYNGkSQ4YMIScnh6ZNmzJr1iwGDx4M2Msm5syZw1NPPUVBQQEJCQncd999ZeqNxT1KV907r0lyfE+w+EHWfkjfBVHNnDrdv3kLsoB8F/Uk+/ta6NAojF/2ZLBmd7qSZBERkRqkQkly6bzF7tC/f/9z/qm6WbNmZ62wd7pOnTqxZs0ad4UmfyLS315qcF6TZL9AaNQd9qy09yY7mSS7eq5ksJdc/LIng9W707m+ayOXtSsiIiKeVamBe6tWreKmm26iZ8+eHDx4EIAPPviAH3/80aXBifc676vulXIsUe38VHDW5vakuujAAUpyclwSTvdE+33QfMkiIiI1i9NJ8rx58xgwYAABAQH8+uuvFBQUAJCVlcULL7zg8gDFO5UO3DtecJ5mtyhVOnhv7yooKXLqVJ/wcHxiYwEo2LHTJeF0ahSOn4+Zw9kF7Dl20iVtioiIiOc5nSQ/99xzTJ8+nXfeeQdfX1/H/osuuohff/3VpcGJ9yrtSU7PP8/LMse1g8BIKMyBA+ucPt0xX7KLVt7z97XQsWEYoKngREREahKnk+SkpCR69ep11v7Q0FAyMzNdEZNUAx4rtzCbIfFS++Nk5weU+p+qS853cV0y2EsuREREpGZwOkmOi4tj165dZ+3/8ccfSUxMdElQ4v08MnCvVJXqkl27PDVAjyan5ktWXbKIiEiN4XSSPHbsWO69917Wrl2LyWQiNTWVjz76iAcffJA777zTHTGKFzp9MZHznhg6lqj+FfKcq4l2lFskJWH8yaI0zujQMAw/HzNHTxSwW3XJIiIiNUKFpoA73aRJk7DZbPTt25fc3Fx69eqF1WrlwQcf5O6773ZHjOKFSpPkIlsRJ4tOEuQXdP4uHlofolrAsST7dHCth1b4VGtCAvj6Yjt5kqLUVPwaNKhyOP6+Fjo1CmPNbvt8yU2iz+O9EBEREbeoUE/yli1bHEtBm0wmHn30UTIyMvjtt99Ys2YNR48e5dlnn3VroOJdAnwCCPQJBKpXyYXJ1xdrkyaAa+dL7pEYBdiXqBYREZHqr0JJcseOHTl27BgAiYmJpKen4+fnR+vWrenatStBQeo5q40cg/c8kiSfKrlI/t6+RLUT/E+VXLh28F7pfMkeKD8RERERl6tQkhwWFsaePXsA2Lt3r6NXWWq30qWpz/s0cADxF4HZFzJTIGO3U6e6Y/Beh0ZhWH3MHMspIPmo6pJFRESquwrVJA8fPpzevXtTt25dTCYTXbp0wWKxlHvs7t3OJSxSfUVY7Uny8fzzvKAIgDUIGnaDfT/C7uUQ2aTip7pheWqrj4XO8eH8nJzO6uRjNI3RX1dERESqswolyW+//TbDhg1j165d3HPPPYwdO5bg4GB3xyZerrQn2SPlFmAvudj3o32+5Atvq/BppeUWhfv2YcvLwxwQ4JJwLmoaxc/J6Uz9dget64XQOT7CJe2KiIjI+Vfh2S0GDhwIwIYNG7j33nuVJItna5LBPnjv+2ftM1yUFIOlYh9nS1QUlogISjIyKNi1i4C2bV0Szs094lm2/TAbUzIZ+c5aXr+hIwMuiHNJ2yIiInJ+OT1P8syZMwkODmbXrl1888035OXlAWiwUi3ksVX3StVtDwHhUJANBzdU+DSTyVRmvmRXCfH3ZfZt3enXKoaCYht3friBD9fsc1n7IiIicv44nSRnZGTQt29fmjdvzuDBg0lLSwPg1ltv5YEHHnB5gOK9Tl9QxCPMltOWqHZuKjj/Fi0ByHfh4D2AAD8L02/qzA1dG2Iz4LGFvzH1myT9EikiIlLNOJ0kT5w4EV9fX1JSUggMDHTsv+666/j6669dGpx4N0dPcoGHkmT4Y/W93cudOs0dg/dK+VjMvHB1W+7rZ++t/s/yXTw0dwtFJZoVRkREpLpwesW9b7/9lm+++YYGZ6xU1qxZM/bt05+Wa5NI/0jAg+UW8Md8yQfWQ34W+IdW6DT/05enNgxMJpNLwzKZTNzbrxmxIVYeXfgbczcc4FhOAdNGdqKO1ekfOxERETnPnO5JPnnyZJke5FIZGRlYrVaXBCXVQ2lP8vGC49gMD/WShjWCyGZglMCeVRU+za9JE7BYKMnKovjIEbeFd33XRrx9c2f8fc2sSDrKDe+s4VhOgduuJyIiIq7hdJJ8ySWX8L///c/x3GQyYbPZePnll+nTp49LgxPvFuYfBoDNsJFVkOW5QE5ffa+CzFYrfgmNAfeUXJyub6tYPh7bnYg6fmw5kMXwN39m7zEtOCIiIuLNnE6SX375Zd5++20GDRpEYWEhDz/8MG3atGHlypW89NJL7ohRvJSv2ZcQvxDAQwuKlGryN/u/zg7eO7XyniuXpz6Xjo3CmXtHDxpGBLAvPZfhb/7M5v2Zbr+uiIiIVI7TSXKbNm3YsWMHF198MUOHDuXkyZMMGzaMjRs30qRJxVc9k5qhtOTCI0tTl2p8MZh94PgeyNhT4dP+GLzn2hkuziUxOoj5d15Em/ohpJ8s5Pq317A8yX2lHiIiIlJ5lRpBFBoayqOPPurqWKQaivCPYG/2Xs9NAwdgDYYGXSHlZ/ssFxEJFTvNDXMl/5XoYCtzbu/BnR9uYNXOY9w2az0vDmvLtV0anrcYRERE5K853ZPcq1cvnnjiCb7//nvy8/PdEZNUI5EBp2a48GSSDKeVXFR8Kjj/0p7kPXuwFRa6I6pyBVl9mDHqQoZ1rE+JzeChuVv4z/c7NZeyiIiIF3E6Se7fvz9r1qzhyiuvJCwsjIsvvpjHHnuMpUuXkpub644YxYt5fGnqUqWD9/b8ALaSCp3iExeHOSQEiosp3L3bjcGdzc/HzD9HtGf8pfYSpanf7uDxz3+jxKZEWURExBs4nSQ/9thjfPvtt2RmZrJ8+XKuuOIK1q9fz+WXX05ERIQ7YhQvVrrqnkcH7gHU62ifIzk/C1I3VugUk8mEf/PzX3Jx+vUfHtiSp6+8AJMJPlyTwviPNihRFhER8QJOJ8mldu/ezdatW9m8eTNbtmwhODiYQYMGuTI2qQa8pifZbIGE3vbHTsxyUTp4z9XLUztjVM/G/HdkJ/x8zHyz7TBf/ZbmsVhERETEzukkeeTIkdSvX5+ePXvy9ddf0717d7766iuOHTvGggUL3BGjeDHH7BZ5HpzdolQlpoLzxOC98gxqW5c7e9tLL976Ybfqk0VERDzM6SR5zpw5FBUVcdttt3HHHXcwduxY2rdv7/JlfaV68JqeZDhtiep1kJ9doVNKB+/l7/BskgxwS494rD5mth7MYvVuL/ilQ0REpBZzOklOT0/n3XffpbCwkMmTJxMVFUXPnj35xz/+wbfffuuOGMWLnb40tceFN4aIRLAVw94fK3SKtWlTMJkoOXqM4nTPJqaRQVZGnJoK7u2V53cgoYiIiJTldJIcHh7OlVdeyauvvsqGDRvYsmULzZs355VXXlFNci1UmiRnFWRRZCvycDRAk772f7fNr9Dh5jp18G1kT0w9XXIBcNslCZhNsCLpKEmHTng6HBERkVqrUj3J8+fP55577qFdu3a0bNmSxYsXM2TIEF599VWn2mrcuDEmk+msbcKECQAcOnSIm2++mbi4OOrUqUOnTp2YN29emTYyMjK48cYbCQkJISwsjFtvvZWcnBxn35ZUUqg1FLPJ/jHKzM/0bDAAHW+y/7ttAWQdrNApfyxP7bnBe6XiI+swsE0coN5kERERT3I6SY6JieHOO+8kNTWVsWPHsnHjRo4dO8b8+fO59957nWpr3bp1pKWlObalS5cCcO211wJwyy23kJSUxKJFi9i6dSvDhg1jxIgRbNz4xxRfN954I9u2bWPp0qUsXryYlStXcvvttzv7tqSSzCYz4Vb7NHBeUZdcrwM0vsRecvHL2xU65Y/lqT3fkwxwey/7AL5Fmw+SlpXn4WhERERqJ6eT5C1btnD48GHmzp3L3XffTdu2bSt98ejoaOLi4hzb4sWLadKkCb1726fy+vnnn7n77rvp2rUriYmJPPbYY4SFhbFhwwYAtm/fztdff827775Lt27duPjii3njjTeYM2cOqamplY5LnBMRcGqGi3wvGWzWw/6XCDbMhIK//qtC6QwX3jB4D6BDwzC6JkRQVGIw86e9ng5HRESkVnI6Sb7gggvcEQeFhYV8+OGHjBkzxjFTRs+ePfnkk0/IyMjAZrMxZ84c8vPzufTSSwFYvXo1YWFhdOnSxdFOv379MJvNrF279pzXKigoIDs7u8wmlRdhPTV4z9MLipRqNgAimtgXFtk0+y8PL53honDnLoziYndHVyF39E4EYPbaFLLzvaDWW0REpJZxOkk+fPgwN998M/Xq1cPHxweLxVJmq6yFCxeSmZnJ6NGjHfs+/fRTioqKiIyMxGq1Mm7cOBYsWEDTpk0Be81yTExMmXZ8fHyIiIjg0KFD57zWlClTCA0NdWwNGzasdNziZdPAAZjN0P1O++M1//3LZap9GzTAFBiIUVRE4d697o+vAi5tHkOzmCByCor5eG2Kp8MRERGpdXycPWH06NGkpKTw+OOPU7duXZfNjzxjxgwGDRpEvXr1HPsef/xxMjMzWbZsGVFRUSxcuJARI0awatWqKpV5TJ48mfvvv9/xPDs7W4lyFZSWW3hNkgzQYSR8/xwc3wM7voaWl5/zUJPZjH+zZuRt3kx+UpJ9WjgPM5tNjO2VyMNztzDzp738/aIE/HwqvUCmiIiIOMnpJPnHH39k1apVdOjQwWVB7Nu3j2XLljF//h/TdiUnJ/Of//yH3377zVHi0b59e1atWsW0adOYPn06cXFxHDlypExbxcXFZGRkEBcXd87rWa1WrFary+Kv7byuJxnArw50GQM/vgqrp/1pkgz2wXt5mzdTkLQDLv/zY8+XoR3qMfWbJA5l57NocyrXdG7g6ZBERERqDae7pho2bOjyJXNnzpxJTEwMl5+WnOTm5gJgNpcN0WKxYLPZAOjRoweZmZmOgXwA33//PTabjW7durk0Rjm3cH8vmt3idF1vB7Mv7PsJDv76p4d6y/LUp7P6WPj7RQkAvL0yWUtVi4iInEdOJ8mvvfYakyZNYq+LajdtNhszZ85k1KhR+Pj80bHdsmVLmjZtyrhx4/jll19ITk7mn//8J0uXLuWqq64CoFWrVgwcOJCxY8fyyy+/8NNPP3HXXXdx/fXXlynbEPfyyp5kgJC60Ga4/fGa//7poX8sT+35uZJPN7JbI4KsPuw4nMOKpKOeDkdERKTWqFCSHB4eTkREBBEREVx//fWsWLGCJk2aEBwc7Nhfujlr2bJlpKSkMGbMmDL7fX19WbJkCdHR0QwZMoR27drxv//9j1mzZjF48GDHcR999BEtW7akb9++DB48mIsvvpi3367Y/LjiGpH+kQBk5HlZkgzQY7z9320LIOvAOQ+zNrf3JBenpVGSlXU+IquQ0ABfbuhqr5d/a2Wyh6MRERGpPSpUk/zaa6+5LYD+/fuf88/IzZo1O2uFvTNFREQwe/ZfT/Ml7uO1PckAddvbFxfZu8q+uMhlz5R7mCUkBN969ShKTaVgxw4CL7zwPAd6bn+/KIGZP+1lze4MthzIpF2DME+HJCIiUuNVKEkeNWqUu+OQaqw0Sc4tziW/OB9/H38PR3SGHhPsSfL696HXw2ANKvcwa4sWFKWmkp/kXUlyvbAArmxfj/kbD/LWyt1MG9nJ0yGJiIjUeE7XJC9ZsoRvvvnmrP3ffvstX331lUuCkuqljm8dfM2+gBctKHK60sVFCrJg00fnPMwbB++VGtvLvrjIV1vTSEnP9XA0IiIiNZ/TSfKkSZMoKTl7cQabzcakSZNcEpRULyaTybtLLszmP2qT/2RxkT8G73lfktyqbgi9m0djM+DdH3d7OhwREZEaz+l5knfu3Enr1q3P2t+yZUt27drlkqCk+onwj+Bw7mHS89M9HUr52t9wanGRvZD0FbS64qxDrKVJ8rb/Y8/wa85zgHZ+jRtTd8oLmP38znptXK9EfthxlE/X72div+ZE1Dn7GBEREXENp5Pk0NBQdu/eTePGjcvs37VrF3Xq1HFVXFLNeOWqe6crXVxk1T/ti4uUkyT7NWqET3Q0xUePkr9tmweChPxt2wjq04fQK85e0KRHk0ja1A/ht4PZfLB6H/f2a+aBCEVERGoHp5PkoUOHMnHiRBYsWECTJk0Ae4L8wAMPcOWVV7o8QKkeIqz2JNkra5JLXTgWfnodUn6GgxugfucyL5t8fGg8dy4Fv2/3SHjZS5eSNXceWfPnl5skm0wmbu/VhHs+3sis1XsZ1zsRf1+LByIVERGp+ZxOkl9++WUGDhxIy5YtadDAvkzugQMHuOSSS5g6darLA5TqwatrkkuF1IW218Dmj2H1f+GaGWcd4hsbg29sjAeCA78mTciaO4+Tq1dTdPAgvvXrn3XM4DZxvBwewIHjeXy24QA3d4/3QKQiIiI1n9MD90JDQ/n555/58ssvGT9+PA888ADfffcd33//PWFhYW4IUaoDry+3KNW9YouLeIJfgwYEdusGhkHmwoXlHuNjMXPrxfalqt9dtZsSm5aqFhERcQenk2Sw/9m3f//+PPTQQ9x111306tXL1XFJNVPak+y1A/dK1W1nX1zEKIG1b3k6mrOEDR8GQNaChRg2W7nHXHdhQ8ICfdmXnsu32w6dz/BERERqjQonyatXr2bx4sVl9v3vf/8jISGBmJgYbr/9dgoKClweoFQPjnILb1ya+kw97rL/u2EWFJzwbCxnCL7sMsxBQRQdOEDuL+vKPSbQz8dRZvHWyt3nXLFSREREKq/CSfIzzzzDttNG/G/dupVbb72Vfv36MWnSJL744gumTJniliDF+5UmyccLvHjgXqlm/SGyqX1xkY3nXlzEE8wBAYQMHgxA5vxzL8l+S4/G+PmY2bQ/k3V7q8E9FxERqWYqnCRv2rSJvn37Op7PmTOHbt268c4773D//ffz+uuv8+mnn7olSPF+p/cke33Pptn8R23ynywu4imlJRcnvl1KyYnye7qjg60M72QfOPv2yuTzFpuIiEhtUeEk+fjx48TGxjqe//DDDwwaNMjx/MILL2T//v2ujU6qjXD/cAAKbYWcLDrp4WgqoP0NEBAOmfsgaYmnoynDv107/Jo0wcjPJ3vJuZd6H3tJAiYTLNt+hJ2HvatsREREpLqrcJIcGxvLnj17ACgsLOTXX3+le/fujtdPnDiBr6+v6yOUaiHAJ4BAn0CgGsxwAeAXCF1utT9ePc2zsZzBZDIRNuzUAL758895XGJ0EP1b239xfWeVlqoWERFxpQonyYMHD2bSpEmsWrWKyZMnExgYyCWXXOJ4fcuWLY7FRaR2Ku1NrhZJMkDXsWD2hZTVcGCDp6MpI3TolWCxkLd5MwV/stz77b3sP3MLN6ZyJDv/fIUnIiJS41U4SX722Wfx8fGhd+/evPPOO7zzzjv4+fk5Xn/vvffo37+/W4KU6iHSPxKoRklycJx9cRGANd7Vm+wTFUVQ794AZM5fcM7jOseH0yU+nMISGzN/3nueohMREan5KpwkR0VFsXLlSo4fP87x48e5+uqry7z+2Wef8eSTT7o8QKk+qsWqe2dyLC6yEDK9q6beMWfyokUYRUXnPO72XokAfLhmHzkFxeclNhERkZquUivuWSyWs/ZHRESU6VmW2qfarLp3urrtIKGXfXGRX7xrcZGgXr2wREZScuwYOatWnfO4fq1iSYyuw4n8Yh5bsJW1u9MpLC5/IRIRERGpmEqtuCdSHsdcyfnVbN5eL11cxOTrS+iVVwKQOe/cA/jMZhN39j5Vm7wpleveXkPHZ77ltlnrmPXzXnYfzfH+aflERES8jI+nA5CaI9xqH7jn9UtTn6npZRDZDNJ3wsYPofudno7IIWzY1WTMnEnODz9QfOwYPlFR5R53bZeGBFl9+HrbIX7ceYz0k4Us236EZduPAFA/LIBezaO4pFk0PZtEEhaov/qIiIj8GSXJ4jLVstwC7IuL9BgPi++DNW9C19vBfHZJkSdYmzXDv1078rdsIWvRF0SO+fs5jx3Uti6D2tbFZjP4v7RsVu08xqqdR1m/9zgHM/P4+Jf9fPzLfswmaNsgjF7N7Elzx0Zh+Fr0RyUREZHTKUkWl6mWA/dKtbsevnvWvrjI719C6ys9HZFD2LBhHNqyhcz584j4+2hMJtOfHm82m2hTP5Q29UO589Im5BYWs3ZPBqt22JPmnUdy2Lw/k837M3nj+10EWX3onhhJp/gw/CxmLGYTZpMJs9mExWTCbOKPx2Ywm0x/HHPqsY/ZRKdG4YQGaq50ERGpGUyGihXJzs4mNDSUrKwsQkJCPB1OtZWUkcQ1X1xDpH8kK65b4elwnPfds7BqKoQ3hviLKteG2Qe63QGxrV0WVsmJE+y8+BKMggIaf/oJAe3aVam9tKy8U73Mx/hx51GO55575gxndGwUxoLxlbxvIiKVoO9vcSf1JIvLlC4mklmQic2wYTZVsz/hdx0LP78Bx/fat8ra8wPc8RNYg1wSliU4mOD+/cn+4gsy582vcpJcNzSAEV0aMqJLQ2w2g22p2azceZTkIzmUGAYlNgObYWCzQYlhYDv1vMQAm+201x3HwrbULDamZLLlQCbtGoS55H2LiIh4kpJkcZnSgXslRgnZBdmE+Yd5NiBnBcfBLZ/D/rWVb2Pdu/YE+5t/wJWvuyy0sOHDyP7iC7K//JLYSY9gDghwSbtms4m2DUJp2yC0Su3cO2cjn29K5eNfUpQki4hIjaAkWVzG1+JLiF8I2YXZZORnVL8kGSC+h32rrAZd4P0r4NdZ0GKQfXOBwK5d8a1fn6KDBzmxbBmhQ4a4pF1XGdm1EZ9vSuXzTan8Y3Argv1VmywiItVbNft7uHi70sF71W4aOFdpfDH0PDXv8qK74eQxlzRrMpsJPbXK5Z/NmewpXRMiSIyuQ25hCYs2p3o6HBERkSpTkiwuVW0XFHGlvz0OMRfAyaPwxb3gorGxYVdfBSYTuWvWUHjgoEvadBWTycTIro0AmL02RYuXiIhItackWVyqWk8D5yo+Vhj2Nlj84PfFsOkjlzTrW78+dXp0ByBrwQKXtOlKwzs1wM9iZltqNlsPZnk6HBERkSpRkiwupST5lLg20OdR++OvHqnabBmnCb16GGBPkg2bzSVtukp4HT8GtY0D4ONfUjwcjYiISNUoSRaXqrar7rlDz7uhUU8ozIEFd4CtpMpNBl/WD3NwMEWpqeSurcIsHG5SWnLx+aZUTuS7Zv5lERERT/Bokty4cWNMJtNZ24QJE9i7d2+5r5lMJj777DNHG+W9PmfOHA++q9pNPcmnMVvg6ungFwwpq+Hnqk8JZ/b3J+TywYD3DuBrogF8IiJSA3g0SV63bh1paWmObenSpQBce+21NGzYsMxraWlpPP300wQFBTFoUNlptWbOnFnmuKuuusoD70bgjwVFlCSfEh4Pg16yP/7+eUjbUuUmw4YPB+DE0qWUZGdXuT1XMplM3KABfCIiUgN4NEmOjo4mLi7OsS1evJgmTZrQu3dvLBZLmdfi4uJYsGABI0aMICio7EpmYWFhZY7z9/f30DuSSP9IQElyGR1GQssrwFYE82+HovwqNeffpg3WZs0wCgrIXrLERUG6zvBODfDz0QA+ERGp3rymJrmwsJAPP/yQMWPGYDKZznp9w4YNbNq0iVtvvfWs1yZMmEBUVBRdu3blvffe+8veq4KCArKzs8ts4hoqtyiHyQRD/g11YuDodvj+2So2ZyJ0mH0AnzeWXITX8WNwG/sAvtlrNYBPRESqJ69JkhcuXEhmZiajR48u9/UZM2bQqlUrevbsWWb/M888w6effsrSpUsZPnw448eP54033vjTa02ZMoXQ0FDH1rBhQ1e9jVqvNEnOKsiiyKaBWw51omDof+yPV0+DPSur1FzolUPAx4f8rVvJ37HDBQG6VmnJxaLNGsAnIiLVk9ckyTNmzGDQoEHUq1fvrNfy8vKYPXt2ub3Ijz/+OBdddBEdO3bkkUce4eGHH+aVV17502tNnjyZrKwsx7Z//36XvY/aLtQaitlk/1hlFehP7WU0HwCdRwMGLLgT8it/f3wiIwnucykAWfO9b85kDeATEZHqziuS5H379rFs2TJuu+22cl+fO3cuubm53HLLLX/ZVrdu3Thw4AAFBQXnPMZqtRISElJmE9cwm8yEWcMASM+rpUtT/5n+z0N4AmQfgCUPV6kpx5zJixZhFHlXb60G8ImISHXnFUnyzJkziYmJ4fLLLy/39RkzZnDllVcSHR39l21t2rSJ8PBwrFarq8OUClJd8p+wBtlX4zOZYcsc2Fb5XuCgXpdgiY6iJCODnB9+cGGQrqEBfCIiUp35eDoAm83GzJkzGTVqFD4+Z4eza9cuVq5cyZJyRvF/8cUXHD58mO7du+Pv78/SpUt54YUXePDBB89H6HIOkf6R7GIXH27/kFUHV1WqDTNmLGYLFpMFH7MPFpMFi9mCj8mn3P2nPw+zhtElrouj7MPrNOwKlzwAK1+BxfdBw+4QUtfpZkw+PoQNHUr6uzPInDef4H793BBs5ZUO4Fu4KZXZa1No1yDM0yGJiIhUmMeT5GXLlpGSksKYMWPKff29996jQYMG9O/f/6zXfH19mTZtGvfddx+GYdC0aVNeffVVxo4d6+6w5U/UDbInfCsPVG1wWlUMThjMi5e8WO5MKV6h9yOwcymkbYLPJ8BN8+yzYDgpdNgw0t+dQc7KlRQfPYpPBf7acj7d0LURCzelsmhzKo9e3opgf19PhyQiIlIhJkPFgmRnZxMaGkpWVpbqk10gLSeN+bvmU1hSWOk2DMOg2CimxFZCiVFCsa2YEqOEEltJmf1nPi+2FbPl6BaKjWImdprIrW3PHuzpNY4mwVu9oDgfLv8nXFh+Tf5f2Xv9DeRt2kTMQw8SWc7gVk8yDIN+r/5A8tGTPHdVG27qHu/pkESkBtH3t7iTkmT0Q1bTfPL7Jzy39jlMmHjjb2/Qu2FvT4d0bmumw9ePgE8A3PEjRDV1uonjn37KoSeexC8xkcQvF3td7/m7q3bz3JfbaV03hC/vudjr4hOR6kvf3+JOXlq0KVJ517W8jhHNR2Bg8MiqR0jOTPZ0SOfW9XZIvBSK82D+WChxfpaKkMGDMfn7U7h7N3kbNmArLKzUZthsrn9//DGA7//SNIBPRESqD/Uko99Ea6KikiJuX3o76w+vp2FwQz6+/GNCraGeDqt8WQfhzR72eZO7T4BWVzjdROorM8ha9nOVwrCEhRH/0YdYmzSpUjvlmThnIws3pXL9hQ15cXg7l7cvIrWTvr/FnZQkox+ymiojP4ORX47kYM5ButXtxvR+0/Exe3ysavm2zoV5la8nzsvwZd93kRglVfvjUGCXLjT64H8uL4n4ZU8GI95aTaCfhbX/6KsBfCLiEvr+Fnfy0oxBpOoi/CP4d59/c/NXN7M2bS1T109lUtdJng6rfG2vgUNb4fcvK3V6QCQ0jzyAUZAPHUbCwBedmi2j+OhR9gy/htz168mav4Cw4cMqFce5XNg4nKYxQew6ksPnm1I1gE9ERLyeepLRb6I13Xf7vmPiiokAPNXjKYY3H+7ZgNxlx7cwewRgwOCp0NW5qRDTZ8zgyCtTsYSFkfjVEnzCw10a3owf9/Ds4v/TAD4RcRl9f4s7aeCe1Hh94/syocMEAJ5b+xy/Hv7VwxG5SfP+0O8p++OvJ8Ee5xZyibjlFqzNm1OSmcmRV6a6PLxhHes7BvBtOaABfCIi4t2UJEutMK7dOPrH96fYVsx9K+4jLSfN0yG5x0X3QtsRYCuGT2+B43srfKrJ15e4p54CIGv+fHLXrXNpaKUr8AF8/EuKS9sWERFxNSXJUiuYTCaevehZWkW0IiM/g3uW30NuUa6nw3I9kwmufB3qdYS8DPh4JBTkVPj0wE4dCRsxAoC0p57GKKz8gjDlGdnNXou8aHMqJ/Kdn+5ORETkfFGSLLVGoG8g/+7zbyL8I/g943ce++kxamRJvm8AXPcR1ImBI9tg4Z3gxBzIMQ/cjyUigsLkZNLfm+nS0EoH8OUWlvD5plSXti0iIuJKSpKlVqkbVJfX+ryGj9mHpfuW8taWtzwdknuE1ofrPgSLH2xfBCtfqfCpltBQYic9AsCxN9+kMMV1pREmk4kbujYCYPbalJr5S4qIiNQISpKl1ukY05Enuj8BwLRN0/hu33cejshNGnWDy1+1P17xAmz/osKnhgwZQmCP7hgFBRx65lmXJrPDO2kAn4iIeD8lyVIrXd3sam5qdRMAk3+cTFJGkocjcpNON0O3O+yP54+Dw9sqdJrJZCLuiScw+fpy8scfOfH11y4LKSzQj8vb1gU0gE9ERLyXkmSptR7o8gDd63YnrziPe76/h4z8DE+H5B79n4eE3lB0Ej6+AU6mV+g0a0ICkePGAXDohRcoOXHCZSGVllxoAJ+IiHgrJclSa/mYfZjaeyqNghuRejKV+1fcT1FJDUzYLD5w7fsQ3hgy98Fno6CC7zNy7G34xcdTcvQYR//1mstC0gA+ERHxdkqSpVYLtYbyxt/eoI5vHTYc3sCLv7zo6ZDcIzACbpgDfkGwdxV8848KnWa2Wol7+ikAjn/8MXlbt7okHA3gExERb+fj6QBEPC0xLJGXe73MXd/dxac7PiXYL5im4U09HZZ79LoTVk+DbR+C1QwJl/z1OTEQ06cTwct/JWnSfRx47W6wWKocSnBkMf7h29hx0uDN9Wk0igyscpu1TevI1iSGJno6DBGRGslkqAtHa78LAO/99h7/2vAvT4fhlUJPGvzr7RKC8uH9vmaWdNUfobyB2WTmncveoWvdrp4ORcQj9P0t7qSeZJFT/n7B3zFj5ufUnz0divsd/g1OHrHPo1y/C/j4/+Upa4am0e+TXYz80URRr07khFurHEZWXhFbDmRhNkPjyDpVbq+68TGbiAqyYjGbnD73aN5RdmXu4pFVj/DZkM+ICohyQ4QiIrWXepLRb6JSCxWehBkD4PBWqNse/v41+P15uYNhs7HvxpvI27iR4Msuo8Ebr1c5DMMwuOxfK9l1pOJLZ9c0XeLDmT22O34+zvXO5xblMvLLkSRnJdO9bnem95uOxVz1MhiR6kTf3+JOSpLRD5nUUpkp8PalkJsObYbD8Blg+vMezfykHewZNgxKSmjw5n8J7tOnymH8mnKcD1fvo9hW+/5XtPz3I5woKOb6CxsyZVhbTH9x/8+UnJnMDV/eQF5xHuM7jOfO9ne6KVIR76Tvb3EnJcnoh0xqsb0/wf+uBFsx9HoYWl/5l6ccnv4hGXMW4RsbTeL7/8Qc4A8mM0S3BPVkOmX570cYM2sdhgFPX3kBo3o2drqNRcmLePTHRzFh4p3+79CtbjfXByripfT9Le6kJBn9kEktt24GfHl/hQ+3FZvYvSSaolwfIlueIKbDqUVG4trCzQuhjmpjnfHWD8lM+ep3LGYTH4zpSs+mzt+/x396nIW7FhLpH8ncK+eqPllqDX1/iztpiLpIbXfhrdDnMQipD0Fxf7mZw2KJvdj+v470pCDyC+PAJwAObYVZV1Z4RT+xu71XIld3rE+JzWD87F9JSc91uo1/dPsHTcOakp6fzqSVkyixlbghUhGR2kU9yeg3UZHKOHD33ZxYuoyAjh2J//eTmP43BHIOQ8wFMOoLqBPp6RCrjfyiEq57azWbD2TRPDaI+eMvIsjq3ORDuzN3c/2X19vrk9uP584Oqk+Wmk/f3+JO6kkWkUqJffRRzIGB5G3cSOaKzTD6SwiKhSPbYNYQ9Sg7wd/Xwls3dyEm2MqOwznc98kmbE4OZEwMS+Tx7o8D8ObmN1mTtsYdoYqI1BpKkkWkUnzj4oi+9x4AjvzzVYpNEUqUqyAu1J/pN3fGz2Jm6f8d5rVlO5xuY0iTIQxrNgwDg0krJ3Es75gbIhURqR1UboH+XCNSWUZxMXuuHUHB9u2YrFZMPj5g2KAoFwzDPuuFXyDg/GIZtVVRiUFBsb2m2N/Xgo+TC40YQF5xHjbDhsVkIaACC8VUhk/dOGIfmUTQJRe7pX2RitD3t7iTkmT0QyZSFXlbf2PfjTdiFBZ6OhTxgNBhw4h95GEsoaGeDkVqIX1/izspSUY/ZCJVVZKZSUl2dtmdGXtg/lg4eQwim8GwdyAwzCPxVTfFJTYembeV9fsyiA32561bOhMe6OdUG9/v/56p66ZiwsRzFz1Hx9iOrgvQZuP4xx+T8b8PwDDwiY4m7umnCf5b1ReXEXGGvr/FnTyaJDdu3Jh9+/adtX/8+PE89NBDJCQklHvep59+yrXXXgtASkoKd955J8uXLycoKIhRo0YxZcoUfHwqPjJcP2QibnJ0B8y6wj7rRWwbuGWRZr2ooKzcIq7670/sOXaSCxuH89Ftzi9d/dTPTzFv5zwi/COYO2Qu0YHRLo0x99dfSfvHoxTu3QtAyBVXEPvoP/AJD3fpdUTORd/f4k4eHbi3bt060tLSHNvSpUsBuPbaa2nYsGGZ19LS0nj66acJCgpi0KBBAJSUlHD55ZdTWFjIzz//zKxZs3j//fd54oknPPm2RKRUdHMYtdg+mO/wb/bV/TSYr0JCA31555YuBFt9WLf3OE8u+g1n+zQmdZ1E8/DmZORn8MiqRyi2Fbs0xsBOnUhYuIDI224Fs5nsxYvZfcUQsr/+xqXXERHxBK8qt5g4cSKLFy9m586dmExnD1bp2LEjnTp1YsaMGQB89dVXXHHFFaSmphIbGwvA9OnTeeSRRzh69Ch+fhX786R+ExVxM/UoV9rpS1c/M/QCbunR2Knz92Tt4frF15NbnMu4duO4q+Ndbokzb+tW0v7xDwp27gIgeMAA4h5/DJ8orf4n7qPvb3Enr5kCrrCwkA8//JAxY8aUmyBv2LCBTZs2ceuttzr2rV69mrZt2zoSZIABAwaQnZ3Ntm3bzkvcIlIB6lGutD4tY3hkYEsAnv7i//g52blp3RJCE3iyx5MAvL3lbX4++LPLYwQIaNuWxvPmEXnnHWCxcOKbb9h9xRCyvljsdA+4iIg38JokeeHChWRmZjJ69OhyX58xYwatWrWiZ8+ejn2HDh0qkyADjueHDh0657UKCgrIzs4us4mImylRrrRxvRK5qkM9SmwGEz5yfunqwYmDuab5NRgYTP5xMkdyj7glTrOfHzH33kvCZ59ibdWKksxMUh96iAPjJ1B02D3XFBFxF69JkmfMmMGgQYOoV6/eWa/l5eUxe/bsMr3IVTFlyhRCQ0MdW8OGDV3Sroj8hdJEuU6MEmUnmEwmXhzejnYNQjmeW8TY/60np8C5+uJHLnyEFuEt7PXJK11fn3w6/9atSfj0E6LuuRt8fclZvpzdV1xB5rz56lUWkWrDK5Lkffv2sWzZMm677bZyX587dy65ubnccsstZfbHxcVx+PDhMvtKn8fFxZ3zepMnTyYrK8ux7d+/v4rvQEQqLLq5fWU+JcpOsS9d3ZnoYCtJh09wv5NLV/v7+DO191QCfQJZf3g9/930XzdGCyZfX6LHjydh3lz827TBduIEaY8+yv6xt1OUmurWa4uIuIJXDNx76qmneOutt9i/f3+5U7ddeumlREVFMXfu3DL7SwfupaWlERMTA8Dbb7/NQw89xJEjR7BarRW6vgr/RTzg6A54/3I4eQSiW0LLyyEoDoJjT/0bZy/N8HXPinHV1a8px7n+rTUUlti4tnMDLqjn3P+zfj+xki8PTwVMXJFwJQ1C6hLpH0lkQCSR/pFEBUQRGRBJoE9gueNDKsMoLibj/fc5+vobGIWFmAMDCejcWQsx1jJ1n3kG3z/pwKoMfX+LO3k8SbbZbCQkJHDDDTfw4osvnvX6rl27aN68OUuWLGHgwIFlXispKaFDhw7Uq1ePl19+mUOHDnHzzTdz22238cILL1Q4Bv2QiXjI6YnyufiHQXDd05LnWPvzoNg/Emm/oPMWsjdYtDmVZxf/X6XPL4r7hpLwjX96jL/FSqQ1nEhrGJH+EfbH/uGOf0OC4jBZnFvgxJySiv/L7+GzbVelY5fqq/7iBYQ0benSNvX9Le5U8RU33GTZsmWkpKQwZsyYcl9/7733aNCgAf379z/rNYvFwuLFi7nzzjvp0aMHderUYdSoUTzzzDPuDltEXCG6Ody+HLZ8AtlpkHMIThyGE4fsj0sKIT/Tvh3d7ulovcaVwJVV6GAvzoSlRYHs9fXhmMVCumMzc8xiIc9sJr+kgIO5hziYe+5B0JVhusKgYyszwXkubVaqgQcCSlAaK9WJx3uSvYF+ExXxQoYBecftcyufSLMnz6VJdM4heyJ94pD99eJ8T0db7RjgqGk2mUyYTyt9yDWZSLeYHYlzusVCutlcJpHOMZvA7AsRiWC2eOZNSLXyn77/oX5QfZe2qe9vcSeP9ySLiJTLZILACPsW08rT0dQ4JmDadzt5dekOrD5mFoy/iNan6psDT23nnPcnLxPe7Qvpu4D6MOoL8HGu9EJExNt5xewWIiJy/t3Vpym9mkdTUGxj/EcbyM4vqtiJAWFwwxywhsL+NfDl/faefxGRGkRJsohILWU2m3jtug7UC/Vnb3ouj8zdUvF5jKOawTXvgckMGz+AX952b7AiIueZkmQRkVosoo4f027shK/FxFe/HeK9n/ZW/ORm/eCyUwOlv54MycvdEqOIiCcoSRYRqeU6NgrnsctbAzBlyXY27Muo+Mk97oL2N4BRAp+NhvRk9wQpInKeKUkWERFu6RHPFe3qUmwzmPDRRtJzCip2oskEV7wG9bvYp+qbMxLys90ZqojIeaEkWUREMJlMvDi8HYnRdTiUnc/ETzZRUtFlr3394fqP7Iu8HP0d5o8FW4l7AxYRcTMlySIiAkCQ1YfpN3UmwNfCqp3HeP27nRU/OTjOnihbrLDja/j+OfcFKiJyHihJFhERh+axwTx/dRsAXv9+Jz/sOFrxk+t3hqH/sT/+8VXYOtcNEYqInB9KkkVEpIxhnRowslsjDAMmztlIaqYTa0i3GwEXTbQ//nwCHPzVLTGKiLibkmQRETnLE1e0pk39EI7nFjFh9q8UFtsqfnLfJ6DZAPty4XNutC8lLiJSzShJFhGRs/j7Wnjzxs6E+PuwMSWTKV9tr/jJZgsMfxeiWsCJVPjkRiiu4GwZIiJeQkmyiIiUq2FEIP8c0QGAmT/t5cstaRU/2T8EbvgY/EPhwDpYfJ+WrhaRakVJsoiInNNlrWO5o3cTAB6eu5nkozkVPzmyCVz7vn3p6k0fwZr/uidIERE3UJIsIiJ/6sH+zemaEMHJwhLGf/greYVOzIHc5G8w4AX7428fg13L3BOkiIiLKUkWEZE/5WMx858bOhIVZCXp8AkeXbgVw5nSiW53QMebwLDB3DFwbJf7ghURcRGT4dT/6Wqm7OxsQkNDycrKIiQkxNPhiIh4pTW70xn5zhpsBjw1pDX9WsdW/OTiAqLnX4s1bR1F4U1IHzILw+LnvmDF60TVbYyvn9Wlber7W9xJSTL6IRMRqag3VyTz0te/V+rcKLJYZH2UeqYMF0cl1cH+G1fSsFl7l7ap729xJx9PByAiItXHuF6JHMzMZe6GA05PVnGCcCaUPMQ/LW9QDydW8pOawaQKT6le1JOMfhMVERGpjvT9Le6kX+tERERERM6gJFlERERE5AxKkkVEREREzqAkWURERETkDEqSRURERETOoCRZREREROQMSpJFRERERM6gJFlERERE5AxKkkVEREREzqAkWURERETkDEqSRURERETOoCRZREREROQMSpJFRERERM6gJFlERERE5Aw+ng7AGxiGAUB2draHIxEREZGKKv3eLv0eF3ElJcnAiRMnAGjYsKGHIxERERFnnThxgtDQUE+HITWMydCvX9hsNlJTUwkODsZkMrms3ezsbBo2bMj+/fsJCQlxWbs1ne5b5ei+OU/3rHJ03ypH961y/uy+GYbBiRMnqFevHmazKkjFtdSTDJjNZho0aOC29kNCQvQ/xErQfasc3Tfn6Z5Vju5b5ei+Vc657pt6kMVd9GuXiIiIiMgZlCSLiIiIiJxBSbIbWa1WnnzySaxWq6dDqVZ03ypH9815umeVo/tWObpvlaP7Jp6igXsiIiIiImdQT7KIiIiIyBmUJIuIiIiInEFJsoiIiIjIGZQki4iIiIicQUmyG02bNo3GjRvj7+9Pt27d+OWXXzwdkld76qmnMJlMZbaWLVt6OiyvsnLlSoYMGUK9evUwmUwsXLiwzOuGYfDEE09Qt25dAgIC6NevHzt37vRMsF7kr+7b6NGjz/rsDRw40DPBeokpU6Zw4YUXEhwcTExMDFdddRVJSUlljsnPz2fChAlERkYSFBTE8OHDOXz4sIci9g4VuW+XXnrpWZ+3O+64w0MRe4c333yTdu3aORYM6dGjB1999ZXjdX3WxBOUJLvJJ598wv3338+TTz7Jr7/+Svv27RkwYABHjhzxdGhe7YILLiAtLc2x/fjjj54OyaucPHmS9u3bM23atHJff/nll3n99deZPn06a9eupU6dOgwYMID8/PzzHKl3+av7BjBw4MAyn72PP/74PEbofX744QcmTJjAmjVrWLp0KUVFRfTv35+TJ086jrnvvvv44osv+Oyzz/jhhx9ITU1l2LBhHoza8ypy3wDGjh1b5vP28ssveyhi79CgQQNefPFFNmzYwPr16/nb3/7G0KFD2bZtG6DPmniIIW7RtWtXY8KECY7nJSUlRr169YwpU6Z4MCrv9uSTTxrt27f3dBjVBmAsWLDA8dxmsxlxcXHGK6+84tiXmZlpWK1W4+OPP/ZAhN7pzPtmGIYxatQoY+jQoR6Jp7o4cuSIARg//PCDYRj2z5avr6/x2WefOY7Zvn27ARirV6/2VJhe58z7ZhiG0bt3b+Pee+/1XFDVRHh4uPHuu+/qsyYeo55kNygsLGTDhg3069fPsc9sNtOvXz9Wr17twci8386dO6lXrx6JiYnceOONpKSkeDqkamPPnj0cOnSozOcuNDSUbt266XNXAStWrCAmJoYWLVpw5513kp6e7umQvEpWVhYAERERAGzYsIGioqIyn7eWLVvSqFEjfd5Oc+Z9K/XRRx8RFRVFmzZtmDx5Mrm5uZ4IzyuVlJQwZ84cTp48SY8ePfRZE4/x8XQANdGxY8coKSkhNja2zP7Y2Fh+//13D0Xl/bp168b7779PixYtSEtL4+mnn+aSSy7ht99+Izg42NPheb1Dhw4BlPu5K31Nyjdw4ECGDRtGQkICycnJ/OMf/2DQoEGsXr0ai8Xi6fA8zmazMXHiRC666CLatGkD2D9vfn5+hIWFlTlWn7c/lHffAEaOHEl8fDz16tVjy5YtPPLIIyQlJTF//nwPRut5W7dupUePHuTn5xMUFMSCBQto3bo1mzZt0mdNPEJJsniNQYMGOR63a9eObt26ER8fz6effsqtt97qwcikprv++usdj9u2bUu7du1o0qQJK1asoG/fvh6MzDtMmDCB3377TWMEnHSu+3b77bc7Hrdt25a6devSt29fkpOTadKkyfkO02u0aNGCTZs2kZWVxdy5cxk1ahQ//PCDp8OSWkzlFm4QFRWFxWI5a+Tt4cOHiYuL81BU1U9YWBjNmzdn165dng6lWij9bOlzV3WJiYlERUXpswfcddddLF68mOXLl9OgQQPH/ri4OAoLC8nMzCxzvD5vdue6b+Xp1q0bQK3/vPn5+dG0aVM6d+7MlClTaN++Pf/+97/1WROPUZLsBn5+fnTu3JnvvvvOsc9ms/Hdd9/Ro0cPD0ZWveTk5JCcnEzdunU9HUq1kJCQQFxcXJnPXXZ2NmvXrtXnzkkHDhwgPT29Vn/2DMPgrrvuYsGCBXz//fckJCSUeb1z5874+vqW+bwlJSWRkpJSqz9vf3XfyrNp0yaAWv15K4/NZqOgoECfNfEYlVu4yf3338+oUaPo0qULXbt25bXXXuPkyZP8/e9/93RoXuvBBx9kyJAhxMfHk5qaypNPPonFYuGGG27wdGheIycnp0xv0549e9i0aRMRERE0atSIiRMn8txzz9GsWTMSEhJ4/PHHqVevHldddZXngvYCf3bfIiIiePrppxk+fDhxcXEkJyfz8MMP07RpUwYMGODBqD1rwoQJzJ49m88//5zg4GBH7WdoaCgBAQGEhoZy6623cv/99xMREUFISAh33303PXr0oHv37h6O3nP+6r4lJycze/ZsBg8eTGRkJFu2bOG+++6jV69etGvXzsPRe87kyZMZNGgQjRo14sSJE8yePZsVK1bwzTff6LMmnuPp6TVqsjfeeMNo1KiR4efnZ3Tt2tVYs2aNp0Pyatddd51Rt25dw8/Pz6hfv75x3XXXGbt27fJ0WF5l+fLlBnDWNmrUKMMw7NPAPf7440ZsbKxhtVqNvn37GklJSZ4N2gv82X3Lzc01+vfvb0RHRxu+vr5GfHy8MXbsWOPQoUOeDtujyrtfgDFz5kzHMXl5ecb48eON8PBwIzAw0Lj66quNtLQ0zwXtBf7qvqWkpBi9evUyIiIiDKvVajRt2tR46KGHjKysLM8G7mFjxowx4uPjDT8/PyM6Otro27ev8e233zpe12dNPMFkGIZxPpNyERERERFvp5pkEREREZEzKEkWERERETmDkmQRERERkTMoSRYREREROYOSZBERERGRMyhJFhERERE5g5JkEREREZEzKEkWEa/2/vvvExYW5vbrPPXUU3To0MHt13HWpZdeysSJEz0dhohIraPFRERquEOHDvH888/z5ZdfcvDgQWJiYujQoQMTJ06kb9++ng7vL+Xl5XHixAliYmLcep2cnBwKCgqIjIwEYPTo0WRmZrJw4UK3XrfUihUr6NOnD8ePHy/zS0FGRga+vr4EBweflzhERMTOx9MBiIj77N27l4suuoiwsDBeeeUV2rZtS1FREd988w0TJkzg999/93SIfykgIICAgAC3XycoKIigoCCXt1tYWIifn1+lz4+IiHBhNCIiUlEqtxCpwcaPH4/JZOKXX35h+PDhNG/enAsuuID777+fNWvWOI579dVXadu2LXXq1KFhw4aMHz+enJwcx+ulJQ+LFy+mRYsWBAYGcs0115Cbm8usWbNo3Lgx4eHh3HPPPZSUlDjOa9y4Mc8++yw33HADderUoX79+kybNq1MjBW99umee+45YmJiCA4O5rbbbmPSpEllSiVGjx7NVVddxdSpU6lbty6RkZFMmDCBoqKic96r08stnnrqKWbNmsXnn3+OyWTCZDKxYsUKAPbv38+IESMICwsjIiKCoUOHsnfv3rOu/fzzz1OvXj1atGgBwAcffECXLl0IDg4mLi6OkSNHcuTIEcD+y0yfPn0ACA8Px2QyMXr0aODscovjx49zyy23EB4eTmBgIIMGDWLnzp1n3a9vvvmGVq1aERQUxMCBA0lLSzvnexcRkbMpSRapoTIyMvj666+ZMGECderUOev10xNPs9nM66+/zrZt25g1axbff/89Dz/8cJnjc3Nzef3115kzZw5ff/01K1as4Oqrr2bJkiUsWbKEDz74gLfeeou5c+eWOe+VV16hffv2bNy4kUmTJnHvvfeydOlSp659uo8++ojnn3+el156iQ0bNtCoUSPefPPNs45bvnw5ycnJLF++nFmzZvH+++/z/vvvV+jePfjgg4wYMcKRXKalpdGzZ0+KiooYMGAAwcHBrFq1ip9++smRhBYWFjrO/+6770hKSmLp0qUsXrwYgKKiIp599lk2b97MwoUL2bt3ryMRbtiwIfPmzQMgKSmJtLQ0/v3vf5cb2+jRo1m/fj2LFi1i9erVGIbB4MGDy/wCkJuby9SpU/nggw9YuXIlKSkpPPjggxV67yIicoohIjXS2rVrDcCYP3++0+d+9tlnRmRkpOP5zJkzDcDYtWuXY9+4ceOMwMBA48SJE459AwYMMMaNG+d4Hh8fbwwcOLBM29ddd50xaNAgp64dGhrqeN6tWzdjwoQJZc656KKLjPbt2zuejxo1yoiPjzeKi4sd+6699lrjuuuuO+d1n3zyybPaGDp0aJljPvjgA6NFixaGzWZz7CsoKDACAgKMb775xnFebGysUVBQcM5rGYZhrFu3zgAc92/58uUGYBw/frzMcb179zbuvfdewzAMY8eOHQZg/PTTT47Xjx07ZgQEBBiffvqpYRjl/7eaNm2aERsb+6fxiIhIWepJFqmhDCfG5C5btoy+fftSv359goODufnmm0lPTyc3N9dxTGBgIE2aNHE8j42NpXHjxmXqeGNjYx0lBKV69Ohx1vPt27c7de3TJSUl0bVr1zL7znwOcMEFF2CxWBzP69ate1Zsztq8eTO7du0iODjYUcMcERFBfn4+ycnJjuPatm17Vh3yhg0bGDJkCI0aNSI4OJjevXsDkJKSUuHrb9++HR8fH7p16+bYFxkZSYsWLcrc0zP/W7nivYuI1DZKkkVqqGbNmmEymf5ycN7evXu54ooraNeuHfPmzWPDhg2OuuHTSwh8fX3LnGcymcrdZ7PZKhxjRa9dGVWNrTw5OTl07tyZTZs2ldl27NjByJEjHcedWd5y8uRJBgwYQEhICB999BHr1q1jwYIFQNXfZ3nKe+/O/NIkIiJKkkVqrIiICAYMGMC0adM4efLkWa9nZmYC9h5Om83GP//5T7p3707z5s1JTU11WRynDxAsfd6qVatKX7tFixasW7euzL4zn7uCn59fmUGIAJ06dWLnzp3ExMTQtGnTMltoaOg52/r9999JT0/nxRdf5JJLLqFly5Zn9eyW9jyfec3TtWrViuLiYtauXevYl56eTlJSEq1bt67M2xQRkXNQkixSg02bNo2SkhK6du3KvHnz2LlzJ9u3b+f11193lEE0bdqUoqIi3njjDXbv3s0HH3zA9OnTXRbDTz/9xMsvv8yOHTuYNm0an332Gffee2+lr3333XczY8YMZs2axc6dO3nuuefYsmULJpPJZTGDfWaOLVu2kJSUxLFjxygqKuLGG28kKiqKoUOHsmrVKvbs2cOKFSu45557OHDgwDnbatSoEX5+fo73uWjRIp599tkyx8THx2MymVi8eDFHjx4tM8NHqWbNmjF06FDGjh3Ljz/+yObNm7npppuoX78+Q4cOden7FxGp7ZQki9RgiYmJ/Prrr/Tp04cHHniANm3acNlll/Hdd985ZoRo3749r776Ki+99BJt2rTho48+YsqUKS6L4YEHHmD9+vV07NiR5557jldffZUBAwZU+to33ngjkydP5sEHH6RTp07s2bOH0aNH4+/v77KYAcaOHUuLFi3o0qUL0dHR/PTTTwQGBrJy5UoaNWrEsGHDaNWqFbfeeiv5+fmEhIScs63o6Gjef/99PvvsM1q3bs2LL77I1KlTyxxTv359nn76aSZNmkRsbCx33XVXuW3NnDmTzp07c8UVV9CjRw8Mw2DJkiVnlViIiEjVaMU9EXGbxo0bM3HiRLcvq3zZZZcRFxfHBx984NbriIhI7aEV90SkWsnNzWX69OkMGDAAi8XCxx9/zLJly8rMvSwiIlJVSpJFpFoxmUwsWbKE559/nvz8fFq0aMG8efPo16+fp0MTEZEaROUWIiIiIiJn0MA9EREREZEzKEkWERERETmDkmQRERERkTMoSRYREREROYOSZBERERGRMyhJFhERERE5g5JkEREREZEzKEkWERERETmDkmQRERERkTP8P4pZSY13KEfeAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n_init_val = 10\n", + "#df_bo = bo_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "#df_rand = random_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# we already got the statistics from all seeds above, but only want to plot one example for each so just pick first seed \n", + "plot_bo = bo_results[bo_results['seed'] == 0]\n", + "plot_rand = random_results[random_results['seed'] == 0]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "for idx, row in plot_bo.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_list_bo[(n_init_val, row['noise_level'], True)][0][n_init_val:]\n", + " std = sm_list_bo[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"BO, noise_level={row['noise_level']}\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in plot_rand.iterrows():\n", + " if row['n_init'] == n_init_val:\n", + " mean = sm_list_random[(n_init_val, row['noise_level'], True)][0][n_init_val:]\n", + " std = sm_list_random[(n_init_val, row['noise_level'], True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"Random Baseline\", linestyle=\"--\")\n", + " break\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.3, 1))\n", + "plt.title(\"BayBE Optimization, 10 initial observations\")\n", + "\n", + "ax.set_xlabel('Campaign iteration')\n", + "ax.set_ylabel('Schwefel function value')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "8989570b-6b02-4e6a-99c7-f7ccafb0bb7f", + "metadata": {}, + "source": [ + "2. Fix noise value, compare initial data number" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "409f03ea-c50e-461d-850d-f7723b031f98", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAHHCAYAAACvLolQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDi0lEQVR4nOzdd1zU9R/A8df32HsJMkREEVHce29TcqaVq1LLsqWZq12uMm3YsKy0xHKUlllZP829t+JEcQAuEJG9x93vj4vTE1AODw7w/Xw87iH3vc/3831/UeTe9/l83h9Fo9FoEEIIIYQQQghRZlSmDkAIIYQQQgghqjpJvIQQQgghhBCijEniJYQQQgghhBBlTBIvIYQQQgghhChjkngJIYQQQgghRBmTxEsIIYQQQgghypgkXkIIIYQQQghRxiTxEkIIIYQQQogyJomXEEIIIYQQQpQxSbyEqMIURWH69OlG6y8qKgpFUQgNDTVanxX5uqYwevRoatWqVa7X7Nq1K127di3XaxanIsUihBBCGJMkXsJkQkNDURRF7+Hh4UG3bt343//+V+bXv/PadnZ2NGjQgNmzZ5ORkaHXdvTo0YXaFzysra1LdL309HRmzZpF48aNsbW1xcnJiU6dOvHjjz+i0WhKfR///POPUZMrU1qxYgWfffaZqcO4p23btun+/g8fPlzo9dGjR2Nvb2+CyERpHDhwgBdffJEWLVpgYWGBoih3bf/9999Tv359rK2tqVu3Ll9++WU5RSqEEKIyMzd1AELMnDkTf39/NBoN169fJzQ0lIcffpi//vqLfv36lem1e/XqxVNPPQVAWloaO3fu5J133uHYsWOsXr1ar62VlRWLFy8u1IeZmdk9r3P9+nV69OhBeHg4w4YN4+WXXyYrK4vffvuNUaNG8c8//7B8+fIS9XWnf/75h6+++qrI5CszMxNzc+P9mPv5+ZGZmYmFhYXR+rzdihUrOHnyJBMnTizX696P6dOn89dffxmtv0WLFqFWq43Wn7i3f/75h8WLF9O4cWNq165NREREsW2//fZbnn/+eYYMGcKkSZPYuXMnEyZMICMjg9dee60coxZCCFHZSOIlTC4kJISWLVvqnj/zzDNUr16dlStXlnniFRgYyBNPPKF7/vzzz5OTk8OaNWvIysrSG80yNzfXa2uIUaNGER4ezu+//86AAQN0xydM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Ifh+HPy3BfzwDGRqaHoRERERX1DswstTcnNz+fDDDxk8eLD7XpwOHTrwySefcPToUZxOJzNmzCA7O5suXboArkmdq1SpQtu2bd376datGzabjZUrV563rZycHNLS0gotUnKOU3N55XnLXF5nOD2s/PpD6zmefdzSLKcl1I0EXFe8zL8Yft7NUQkuGwL3r4Mb3oLIRpBzApZMgFeawzf/gjT9oUFERETEm3lN4TVnzhyOHz/OoEGD3Os+/fRT8vLyiIiIICAggHvvvZfZs2dTv359wHUPWPSpbm6n+fn5ER4eTupfjLI3fvx4wsLC3Et8fLxHfqeKwlvn8gKIC4mjYdWGOE0nS/cttToOAG1qVcVhN0g5kc2uI1lFf6PdAa1uhWEr4JZpUK015GXBiknwaiv4ciSc2Oux3CIiIiJScl5TeL333nv06tWLuLg497oxY8Zw/PhxvvvuO9asWcODDz7ILbfcwqZNmy6qrccff5wTJ064F80/dnH8Tl3x8ra5vE7ztu6Ggf52LomvCsDyC3U3PBebDZr+De5JhDtmQa0rXJM6r50C7/WArKOlmldERERELp5XFF6///473333HXfffbd7XXJyMv/73/94//336dq1K61atWLs2LG0bduWSZMmARAbG8vBP42kl5+fz9GjR4k9Ncz5uQQEBFC5cuVCi5Sc49Q9Xt54xQv+6G64bP8y8gryrA1zyuWn7vM67wAbRWEYUL8b/H0+/P0bqFrHNQjHFyOgKF0YRURERKTMeEXhNXnyZKKjo7n22mvd67KyXF2wbLbCEe12O06nE4CEhASOHz/uHmwD4IcffsDpdNK+ffsySC4AfrGnCy/vG1wDoHlkcyIqRZCZl8maA2usjgNAQt1ThVdyEe/zupBaCXDzFLD7Q9JXsOrti9+niIiIiJQaywsvp9PJ5MmTGThwIH5nTL7buHFj6tevz7333suqVatITk7mpZdeYuHChfTt2xeAJk2a0LNnT4YOHcqqVatYtmwZI0aM4NZbby3UZVE86/QkygWHj2Dm5lqc5mw2w0anGp0AWLzXO4aVv6RmFQL8bBzOyCH5UCnNOxfXGq552vX42/+D/etLZ78iIiIictEsL7y+++47du/ezeDBgwutdzgczJ8/n6ioKK6//npatmzJBx98wNSpU+ndu7f7ddOnT6dx48Z07dqV3r1707Fj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oWZqaqrVsS13rmMGmJMnT3a/5uTJk+awYcPMqlWrmkFBQeYNN9xgpqSkWBfaYhc6Zrt37zY7depkhoeHmwEBAWb9+vXNRx55xDxx4oS1wS02ePBgs1atWqa/v78ZFRVldu3a1fz222/d23WeiUh5YJimaZZloSciIiIiIlLR6B4vERERERERD1PhJSIiIiIi4mEqvERERERERDxMhZeIiIiIiIiHqfASERERERHxMBVeIiIiIiIiHqbCS0RERERExMNUeImIV5syZQpVqlTxeDtPPvkkrVu39ng7xdWlSxdGjRpldQwRERG5SJpAWaScS01N5dlnn+Wrr75i3759REdH07p1a0aNGkXXrl2tjndBJ0+eJD09nejoaI+2k5GRQU5ODhEREQAMGjSI48ePM2fOHI+2e1piYiJXXXUVx44dK1RoHj16FIfDQWhoaJnkEBEREc/wszqAiHjOrl27uOKKK6hSpQoTJkygRYsW5OXlsWDBAoYPH85vv/1mdcQLCgwMJDAw0OPthISEEBISUur7zc3Nxd/fv8TvDw8PL8U0IiIiYhV1NRQpx4YNG4ZhGKxatYobb7yRhg0b0qxZMx588EFWrFjhft3LL79MixYtCA4OJj4+nmHDhpGRkeHefrq737x582jUqBFBQUHcdNNNZGVlMXXqVGrXrk3VqlV54IEHKCgocL+vdu3aPP3009x2220EBwdTvXp1Jk2aVChjUds+0zPPPEN0dDShoaHcfffdjB49ulA3wUGDBtG3b19efPFFqlWrRkREBMOHDycvL++8x+rMroZPPvkkU6dO5YsvvsAwDAzDIDExEYA9e/Zwyy23UKVKFcLDw+nTpw+7du06q+1nn32WuLg4GjVqBMC0adNo27YtoaGhxMbGcvvtt3Pw4EHAVSBfddVVAFStWhXDMBg0aBBwdlfDY8eOcdddd1G1alWCgoLo1asX27ZtO+t4LViwgCZNmhASEkLPnj1JSUk57+8uIiIinqfCS6ScOnr0KN988w3Dhw8nODj4rO1nFjM2m42JEyfyyy+/MHXqVH744QceffTRQq/Pyspi4sSJzJgxg2+++YbExERuuOEG5s+fz/z585k2bRpvvfUWn332WaH3TZgwgVatWvHzzz8zevRoRo4cycKFC4vV9pmmT5/Os88+y/PPP8/atWupWbMmb7zxxlmvW7RoEcnJySxatIipU6cyZcoUpkyZUqRj9/DDD3PLLbe4C5aUlBQ6dOhAXl4ePXr0IDQ0lKVLl7Js2TJ3YZObm+t+//fff09SUhILFy5k3rx5AOTl5fH000+zYcMG5syZw65du9zFVXx8PLNmzQIgKSmJlJQUXn311XNmGzRoEGvWrGHu3LksX74c0zTp3bt3oaIyKyuLF198kWnTprFkyRJ2797Nww8/XKTfXURERDzEFJFyaeXKlSZgfv7558V+78yZM82IiAj388mTJ5uAuX37dve6e++91wwKCjLT09Pd63r06GHee++97ue1atUye/bsWWjf/fv3N3v16lWstsPCwtzP27dvbw4fPrzQe6644gqzVatW7ucDBw40a9WqZebn57vX3XzzzWb//v3P2+7YsWPP2kefPn0KvWbatGlmo0aNTKfT6V6Xk5NjBgYGmgsWLHC/LyYmxszJyTlvW6ZpmqtXrzYB9/FbtGiRCZjHjh0r9LrOnTubI0eONE3TNLdu3WoC5rJly9zbDx8+bAYGBpqffvqpaZrn/m81adIkMyYm5i/ziIiIiGfpipdIOWUWY9yc7777jq5du1K9enVCQ0O58847OXLkCFlZWe7XBAUFUa9ePffzmJgYateuXei+qJiYGHf3udMSEhLOer5ly5ZitX2mpKQk2rVrV2jdn58DNGvWDLvd7n5erVq1s7IV14YNG9i+fTuhoaHue8LCw8PJzs4mOTnZ/boWLVqcdV/X2rVruf7666lZsyahoaF07twZgN27dxe5/S1btuDn50f79u3d6yIiImjUqFGhY/rn/1al8buLiIjIxVHhJVJONWjQAMMwLjiAxq5du7juuuto2bIls2bNYu3ate77sM7sPudwOAq9zzCMc65zOp1FzljUtkviYrOdS0ZGBm3atGH9+vWFlq1bt3L77be7X/fnrp2ZmZn06NGDypUrM336dFavXs3s2bOBi/89z+Vcv3txCnEREREpfSq8RMqp8PBwevTowaRJk8jMzDxr+/HjxwHXlRin08lLL73E5ZdfTsOGDdm/f3+p5ThzEI/Tz5s0aVLiths1asTq1asLrfvz89Lg7+9faKAQgEsvvZRt27YRHR1N/fr1Cy1hYWHn3ddvv/3GkSNHeO6557jyyitp3LjxWVegTl8h+3ObZ2rSpAn5+fmsXLnSve7IkSMkJSXRtGnTkvyaIiIiUkZUeImUY5MmTaKgoIB27doxa9Ystm3bxpYtW5g4caK7C2D9+vXJy8vjtddeY8eOHUybNo0333yz1DIsW7aMF154ga1btzJp0iRmzpzJyJEjS9z2/fffz3vvvcfUqVPZtm0bzzzzDBs3bsQwjFLLDK4RGTdu3EhSUhKHDx8mLy+PAQMGEBkZSZ8+fVi6dCk7d+4kMTGRBx54gL179553XzVr1sTf39/9e86dO5enn3660Gtq1aqFYRjMmzePQ4cOFRrZ8bQGDRrQp08fhg4dyo8//siGDRu44447qF69On369CnV319ERERKlwovkXKsbt26rFu3jquuuoqHHnqI5s2bc8011/D999+7RwJs1aoVL7/8Ms8//zzNmzdn+vTpjB8/vtQyPPTQQ6xZs4ZLLrmEZ555hpdffpkePXqUuO0BAwbw+OOP8/DDD3PppZeyc+dOBg0aRKVKlUotM8DQoUNp1KgRbdu2JSoqimXLlhEUFMSSJUuoWbMm/fr1o0mTJgwZMoTs7GwqV6583n1FRUUxZcoUZs6cSdOmTXnuued48cUXC72mevXqjBs3jtGjRxMTE8OIESPOua/JkyfTpk0brrvuOhISEjBNk/nz55/VvVBERES8i2Gq47+IeEjt2rUZNWpUoXmoPOGaa64hNjaWadOmebQdERERkZLyszqAiEhxZGVl8eabb9KjRw/sdjsff/wx3333XaG5wURERES8jQovEfEphmEwf/58nn32WbKzs2nUqBGzZs2iW7duVkcTEREROS91NRQREREREfEwDa4hIiIiIiLiYSq8REREREREPEyFl4iIiIiIiIep8BIREREREfEwFV4iIiIiIiIepsJLRERERETEw1R4iYiIiIiIeJgKLxEREREREQ9T4SUiIiIiIuJh/w9QqGqKE3fVOgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "noise_level_val = 10\n", + "#df_bo = bo_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "#df_rand = random_results.groupby([\"n_init\", \"noise_level\"]).agg({\"best\": [\"mean\", \"std\"]})\n", + "\n", + "# we already got the statistics from all seeds above, but only want to plot one example for each so just pick first seed \n", + "plot_bo = bo_results[bo_results['seed'] == 0]\n", + "plot_rand = random_results[random_results['seed'] == 0]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "\n", + "for idx, row in plot_bo.iterrows():\n", + " if row['noise_level'] == noise_level_val:\n", + " n_init_val = row['n_init']\n", + " mean = sm_list_bo[(row['n_init'], noise_level_val, True)][0][n_init_val:]\n", + " std = sm_list_bo[(row['n_init'], noise_level_val, True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"BO, n_init={row['n_init']}\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " \n", + "for idx, row in plot_rand.iterrows():\n", + " if row['noise_level'] == noise_level_val:\n", + " n_init_val = row['n_init']\n", + " mean = sm_list_random[(row['n_init'], noise_level_val, True)][0][n_init_val:]\n", + " std = sm_list_random[(row['n_init'], noise_level_val, True)][1][n_init_val:]\n", + " plt.plot(mean, label=f\"Random Baseline, n_init={row['n_init']}\", linestyle=\"--\")\n", + " #plt.fill_between(range(len(mean)), mean-std, mean+std, alpha=0.1)\n", + " break\n", + "\n", + "# aaawaaay\n", + "plt.legend(loc=\"upper right\", bbox_to_anchor=(1.6, 1))\n", + "plt.title(\"BayBE Optimization, Noise level = 10\")\n", + "\n", + "ax.set_xlabel('Campaign iteration')\n", + "ax.set_ylabel('Schwefel function value')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ae3f1ea5-856d-47a3-9010-7a4d4ceb8b1f", + "metadata": {}, + "source": [ + "### Heat map plot" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e90c4e71-e671-415d-950b-377a463730b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Bayesian Optimization')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_bo)\n", + "\n", + "ax.set_title('Bayesian Optimization')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "5d63c7cd-755c-4fd3-8506-a317bf5bdd43", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Random')" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAHHCAYAAAAWM5p0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABSyklEQVR4nO3df3zN9f//8dvZD2cztuXHzKoh8mPzYyHeRMT8TopIrQjhk9/0Fqu3HxFDkTcq9XkLvVGpECq/f5Qf+ZmQhZgtMdLMMGbbeX3/6Nv5OE3Z0Xk5Zzv3a5fX5bI9X8/X8zxenu2yx57P5+v5shiGYSAiIiJiEh93ByAiIiKFm5INERERMZWSDRERETGVkg0RERExlZINERERMZWSDRERETGVkg0RERExlZINERERMZWSDRERETGVkg0RL/bss89Svnx5d4chIoWckg2R22TevHlYLBb74efnx5133smzzz7Lzz//7O7wRERM4+fuAES8zbhx46hQoQJXr17lm2++Yd68eWzZsoWDBw8SEBDg7vBERFxOyYbIbdamTRvq1q0LwHPPPUepUqWYPHkyy5cvp0uXLm6OTkTE9TSNIuJmjRs3BuDYsWMAXLt2jdGjR1OnTh1CQkIICgqicePGbNy40eG6EydOYLFYeP3113n33XepWLEiVquV+++/n127duX5nGXLllG9enUCAgKoXr06S5cuvWE8ly9f5oUXXuDuu+/GarVSpUoVXn/9df74gmiLxcKAAQP4+OOPiYqKIjAwkAYNGnDgwAEA3nnnHSpVqkRAQABNmzblxIkTf/efSkQKKI1siLjZ77+E77jjDgAyMjL4z3/+w5NPPknv3r25ePEic+bMoVWrVuzcuZOYmBiH6xctWsTFixfp27cvFouFKVOm0LFjR44fP46/vz8Aa9asoVOnTkRFRZGQkMCvv/5Kjx49uOuuuxzaMgyDRx55hI0bN9KrVy9iYmJYvXo1w4cP5+eff+aNN95wqP/111+zfPly+vfvD0BCQgIPP/wwL774Im+99Rb9+vXj/PnzTJkyhZ49e7JhwwYT/gVFxOMZInJbzJ071wCMdevWGb/88ovx008/GZ988olRunRpw2q1Gj/99JNhGIaRk5NjZGVlOVx7/vx5o0yZMkbPnj3tZUlJSQZglCxZ0khLS7OXf/bZZwZgrFixwl4WExNjlC1b1khPT7eXrVmzxgCMcuXK2cuWLVtmAMarr77q8PmPP/64YbFYjB9//NFeBhhWq9VISkqyl73zzjsGYISHhxsZGRn28vj4eANwqCsi3kPTKCK3WWxsLKVLl+buu+/m8ccfJygoiOXLl9tHGXx9fSlSpAgANpuNtLQ0cnJyqFu3Lnv37s3T3hNPPGEfFYH/m5Y5fvw4AKdPn2bfvn10796dkJAQe70WLVoQFRXl0NYXX3yBr68vgwYNcih/4YUXMAyDL7/80qG8efPmDo/O1q9fH4BOnTpRvHjxPOW/xyQi3kXJhsht9uabb7J27Vo++eQT2rZty7lz57BarQ515s+fT82aNQkICKBkyZKULl2azz//nAsXLuRpLzIy0uH73xOP8+fPA5CcnAzAvffem+faKlWqOHyfnJxMRESEQ6IAUK1aNYe2/uyzf09m7r777huW/x6TiHgXrdkQuc3q1atnfxrl0UcfpVGjRjz11FMcPnyYYsWKsWDBAp599lkeffRRhg8fTlhYGL6+viQkJNgXkV7P19f3hp9j/GFBpxn+7LPdGZOIeB6NbIi40e9JxKlTp5g1axYAn3zyCffccw9LlizhmWeeoVWrVsTGxnL16tVb+oxy5coBcPTo0TznDh8+nKfuqVOnuHjxokP5Dz/84NCWiIgzlGyIuFnTpk2pV68e06dP5+rVq/ZRgetHAXbs2MH27dtvqf2yZcsSExPD/PnzHaZh1q5dy6FDhxzqtm3bltzcXHvi87s33ngDi8VCmzZtbikGEfFumkYR8QDDhw+nc+fOzJs3j4cffpglS5bw2GOP0a5dO5KSkpg9ezZRUVFcunTpltpPSEigXbt2NGrUiJ49e5KWlsbMmTOJjo52aLN9+/Y89NBDvPzyy5w4cYJatWqxZs0aPvvsM4YMGULFihVddcsi4kU0siHiATp27EjFihV5/fXX6datGxMnTuS7775j0KBBrF69mgULFtjXedyK1q1b8/HHH5Obm0t8fDxLlixh7ty5edr08fFh+fLlDBkyhJUrVzJkyBAOHTrEa6+9xrRp0/7ubYqIl7IYWrElIiIiJtLIhoiIiJhKyYaIiIiYSsmGiIiImErJhoiIiJhKyYaIiIiYSsmGiIiImErJhoiIiJiqUO4gWneiNh8SEZH82f3SMNM/o0btF1zSzoG9U13Szu2mkQ0RERExlZINERERMVWhnEYRERHxKBZ3B+BeSjZERETMZvHubEPTKCIiImIqjWyIiIiYzbsHNpRsiIiImM7Lkw1No4iIiIipNLIhIiJiOu8e2lCyISIiYjLDu3MNTaOIiIiIuTSyISIiYjYvH9lQsiEiImI2beolIiIiYh4lGyIiImIqJRsiIiJms7jocEJubi6jRo2iQoUKBAYGUrFiRcaPH49hGA71EhMTeeSRRwgJCSEoKIj777+flJQU+/mrV6/Sv39/SpYsSbFixejUqRNnzpxxKhYlGyIiImazWFxzOGHy5Mm8/fbbzJo1i8TERCZPnsyUKVOYOXOmvc6xY8do1KgRVatWZdOmTezfv59Ro0YREBBgrzN06FBWrFjBxx9/zObNmzl16hQdO3Z0KhYtEBURESmEtm3bRocOHWjXrh0A5cuX54MPPmDnzp32Oi+//DJt27ZlypQp9rKKFSvav75w4QJz5sxh0aJFNGvWDIC5c+dSrVo1vvnmG/7xj3/kKxaNbIiIiJjNRdMoWVlZZGRkOBxZWVk3/MiGDRuyfv16jhw5AsB3333Hli1baNOmDQA2m43PP/+cypUr06pVK8LCwqhfvz7Lli2zt7Fnzx6ys7OJjY21l1WtWpXIyEi2b9+e79tXsiEiImIyw0VHQkICISEhDkdCQsINP3PkyJF07dqVqlWr4u/vz3333ceQIUOIi4sD4OzZs1y6dIlJkybRunVr1qxZw2OPPUbHjh3ZvHkzAKmpqRQpUoTQ0FCHtsuUKUNqamq+71/TKCIiIgVEfHw8w4YNcyizWq03rLt48WIWLlzIokWLiI6OZt++fQwZMoSIiAi6d++OzWYDoEOHDgwdOhSAmJgYtm3bxuzZs2nSpInL4layISIiYjYXbepltVr/NLn4o+HDh9tHNwBq1KhBcnIyCQkJdO/enVKlSuHn50dUVJTDddWqVWPLli0AhIeHc+3aNdLT0x1GN86cOUN4eHi+49Y0ioiIiNnc8OhrZmYmPj6Ov+Z9fX3tIxpFihTh/vvv5/Dhww51jhw5Qrly5QCoU6cO/v7+rF+/3n7+8OHDpKSk0KBBg3zHopENERGRQqh9+/ZMmDCByMhIoqOj+fbbb5k2bRo9e/a01xk+fDhPPPEEDz74IA899BCrVq1ixYoVbNq0CYCQkBB69erFsGHDKFGiBMHBwQwcOJAGDRrk+0kUULIhIiJyG9z+d6PMnDmTUaNG0a9fP86ePUtERAR9+/Zl9OjR9jqPPfYYs2fPJiEhgUGDBlGlShU+/fRTGjVqZK/zxhtv4OPjQ6dOncjKyqJVq1a89dZbTsViMf64lVghUHfiNHeHICIiBcTul4bdvNLfFN0k3iXtfL/5xk+eeDqt2RARERFTaRpFRETEbN79hnklGyIiImYzXPToa0GlaRQRERExlZINERERMZWmUURERMzm5dMoSjZERETM5t25hqZRRERExFwa2RARETFZods900lKNkRERMzm5Ws2NI0iIiIiptLIhoiIiNm8e2BDyYaIiIjpNI0iIiIiYh6NbNxGy/v1IiI0JE/54j37mLJ6AyWDijK42YPUq1COoCJFSE5L472tO9lw+Ki9bpUyYQxq1piosmXItRlsOHyUN9Zt5kp29u28lQJPfeE51BeeQ31hHm9/GsViGEah+zeoO3Gau0O4odCigfheN5RWsXQp3nrqcfouWMyelJPM6tqR4gEBTFm9gfQrV2gdXZU+jRvQbe5CDp/5hVLFgviod3fWJh7mg517CbIW4YXYppy7fJkRS1a68c4KHvWF51BfeA5v7YvdLw0z/TOqthrlknZ+WD3eJe3cbppGuY3SM6/w6+VM+9Go0j38lJbOnpSTANS8K4KPdn/L96dT+Tn9AnO27uDi1SyqhpcBoHGle8ix5TJ51XqS085z6PQZJq5aT/OqlbnrjlA33lnBo77wHOoLz6G+MJHF4pqjgFKy4SZ+Pj60rV6N5fsP2sv2nzxFi2pVCA4IwAK0jKqC1c/P/oNexM+X7Fybw3BcVk4OADF3RdzG6AsX9YXnUF94DvWFuJLbk40rV66wZcsWDh06lOfc1atXef/99//y+qysLDIyMhwO2///n9uTNa1SiWIBVlbs/95eNnLp5/j5+rBhWD+2jxjMS61j+eenyzl5Ph2AXSd+olRQUZ6pXxc/Hx+KB1gZ+FAjAEoVC3LHbRQK6gvPob7wHOoLcSW3LhA9cuQILVu2JCUlBYvFQqNGjfjwww8pW7YsABcuXKBHjx5069btT9tISEjglVdecSgr26wlEc1bmRr739WhVnW2HUvi3KXL9rLnmzSkuNXK84s+Jj3zCk0rV2LSY+147r+LOfbLOY6f+5UxK1YzNLYJ/R9qhM1m48Pd+zh36TKFb+XN7aO+8BzqC8+hvnAtowBPgbiCW5ONESNGUL16dXbv3k16ejpDhgzhgQceYNOmTURGRuarjfj4eIYNc1zc03T6bDPCdZnw4OLUKx/Ji5+usJfdGRrCE3Xvo8u78zl+7lcAjp49R8zdd9KlTi0SVq0HYPWhH1h96AdKBBXlyrVsDAzi6tXmZHq6O26lwFNfeA71hedQX4iruTXZ2LZtG+vWraNUqVKUKlWKFStW0K9fPxo3bszGjRsJCrr5sJvVasVqtTqU+fh59hO9j9SqzvnMTLb8eNxeFuDvD4DtD+m/zTCw3CAjTruc+VtbNaO5lpPLjqQUEyMuvNQXnkN94TnUFybw7oEN967ZuHLlCn7XJQYWi4W3336b9u3b06RJE44cOeLG6MxhAdrXjGbl/kPkXvdDe+LXNFLSzvNSm1iiy4ZzZ2gIcfXqUL9COTYfOWav16VODFXKhBFZIpTOdWrxYqtmzNq0hUtZWW64m4JNfeE51BeeQ30hZnDrEEDVqlXZvXs31apVcyifNWsWAI888og7wjJVvQrlKBsS7LDCGyDXZmPwR0sZ+FBjpnXpQFH/Ivx0Pp2xK1ax9ViSvV50RDh9GjegaBF/Tvx6nolfruOLg4m3+zYKBfWF51BfeA71hZjBrZt6JSQk8PXXX/PFF1/c8Hy/fv2YPXs2NpvNqXY9dVMvERHxPLdjU6/K7ca6pJ0jn7umndvNrdMo8fHxf5poALz11ltOJxoiIiIex+Kio4By+z4bIiIiUrh59mMbIiIihUEBHpVwBSUbIiIipvPubEPJhoiIiMkM7841tGZDREREzKWRDREREbN5+ciGkg0RERHTeXe2oWkUERERMZVGNkREREymBaIiIiJiLjfsIJqbm8uoUaOoUKECgYGBVKxYkfHjx/Nnbyn5n//5HywWC9OnT3coT0tLIy4ujuDgYEJDQ+nVqxeXLl1yKhaNbIiIiBRCkydP5u2332b+/PlER0eze/duevToQUhICIMGDXKou3TpUr755hsiIiLytBMXF8fp06dZu3Yt2dnZ9OjRgz59+rBo0aJ8x6JkQ0RExHS3fx5l27ZtdOjQgXbt2gFQvnx5PvjgA3bu3OlQ7+eff2bgwIGsXr3aXvd3iYmJrFq1il27dlG3bl0AZs6cSdu2bXn99ddvmJzciKZRRERETGZYXHM4o2HDhqxfv54jR44A8N1337FlyxbatGljr2Oz2XjmmWcYPnw40dHRedrYvn07oaGh9kQDIDY2Fh8fH3bs2JHvWDSyISIiUkBkZWWRlZXlUGa1WrFarXnqjhw5koyMDKpWrYqvry+5ublMmDCBuLg4e53Jkyfj5+eXZ1rld6mpqYSFhTmU+fn5UaJECVJTU/Mdt0Y2REREzOaiBaIJCQmEhIQ4HAkJCTf8yMWLF7Nw4UIWLVrE3r17mT9/Pq+//jrz588HYM+ePfz73/9m3rx5WCzmTvNoZENERMR0rvllHh8fz7BhwxzKbjSqATB8+HBGjhxJ165dAahRowbJyckkJCTQvXt3vv76a86ePUtkZKT9mtzcXF544QWmT5/OiRMnCA8P5+zZsw7t5uTkkJaWRnh4eL7jVrIhIiJiNhcNHPzZlMmNZGZm4uPjOIHh6+uLzWYD4JlnniE2NtbhfKtWrXjmmWfo0aMHAA0aNCA9PZ09e/ZQp04dADZs2IDNZqN+/fr5jlvJhoiISCHUvn17JkyYQGRkJNHR0Xz77bdMmzaNnj17AlCyZElKlizpcI2/vz/h4eFUqVIFgGrVqtG6dWt69+7N7Nmzyc7OZsCAAXTt2jXfT6KAkg0RERHTuWMH0ZkzZzJq1Cj69evH2bNniYiIoG/fvowePdqpdhYuXMiAAQNo3rw5Pj4+dOrUiRkzZjjVhsX4s63ECrC6E6e5OwQRESkgdr807OaV/qZ7urzqknaOL/6XS9q53fQ0ioiIiJhK0ygiIiKm8+43sSnZEBERMZne+ioiIiJiIo1siIiImE0jGyIiIiLmUbIhIiIiptI0ioiIiNlMftGZp1OyISIiYjI9jSIiIiJiIiUbIiIiYipNo4iIiJjNy6dRlGyIiIiYzcsXiGoaRUREREylkQ0RERGTGe4OwM2UbIiIiJjNu2dRNI0iIiIi5tLIhoiIiNk0siEiIiJiHiUbIiIiYipNo4iIiJjNy/fZULIhIiJiMr2ITURERMRESjZERETEVE4nG3v37uXAgQP27z/77DMeffRRXnrpJa5du+bS4ERERAoFi4uOAsrpZKNv374cOXIEgOPHj9O1a1eKFi3Kxx9/zIsvvujyAEVERAo8JRvOOXLkCDExMQB8/PHHPPjggyxatIh58+bx6aefujo+ERERKeCcfhrFMAxsNhsA69at4+GHHwbg7rvv5ty5c66NTkREpFAowMMSLuB0slG3bl1effVVYmNj2bx5M2+//TYASUlJlClTxuUBioiIFHjenWs4P40yffp09u7dy4ABA3j55ZepVKkSAJ988gkNGzZ0eYAiIiJSsDk9slGzZk2Hp1F+99prr+Hr6+uSoERERAoVjWw4Lz09nf/85z/Ex8eTlpYGwKFDhzh79qxLgxMRESkMDBcdBZXTIxv79++nefPmhIaGcuLECXr37k2JEiVYsmQJKSkpvP/++2bEKSIiIgWU0yMbw4YNo0ePHhw9epSAgAB7edu2bfnqq69cGpyIiEihoH02nLNr1y769u2bp/zOO+8kNTXVJUGJiIhI4eH0NIrVaiUjIyNP+ZEjRyhdurRLghIRESlUvPwV806PbDzyyCOMGzeO7OxsACwWCykpKYwYMYJOnTq5PEARERFxXm5uLqNGjaJChQoEBgZSsWJFxo8fj2H8ttQ0OzubESNGUKNGDYKCgoiIiKBbt26cOnXKoZ20tDTi4uIIDg4mNDSUXr16cenSJadicTrZmDp1KpcuXSIsLIwrV67QpEkTKlWqRPHixZkwYYKzzYmIiBR+blizMXnyZN5++21mzZpFYmIikydPZsqUKcycOROAzMxM9u7dy6hRo9i7dy9Llizh8OHDPPLIIw7txMXF8f3337N27VpWrlzJV199RZ8+fZy7feP3FMdJW7ZsYf/+/Vy6dInatWsTGxt7K82You7Eae4OQURECojdLw0z/TPu7jvFJe389E7+X3j68MMPU6ZMGebMmWMv69SpE4GBgSxYsOCG1+zatYt69eqRnJxMZGQkiYmJREVFsWvXLurWrQvAqlWraNu2LSdPniQiIiJfsTi9ZuN3jRo1olGjRrd6uYiIiDgpKyuLrKwshzKr1YrVas1Tt2HDhrz77rscOXKEypUr891337FlyxamTfvzP8gvXLiAxWIhNDQUgO3btxMaGmpPNABiY2Px8fFhx44dPPbYY/mKO1/JxowZM/LVGMCgQYPyXVdERMQruGh9aEJCAq+88opD2ZgxYxg7dmyeuiNHjiQjI4OqVavi6+tLbm4uEyZMIC4u7oZtX716lREjRvDkk08SHBwMQGpqKmFhYQ71/Pz8KFGihFNPoOYr2XjjjTfy1ZjFYlGyISIi8kcuSjbi4+MZNsxx2udGoxoAixcvZuHChSxatIjo6Gj27dvHkCFDiIiIoHv37g51s7Oz6dKlC4Zh2F+w6kr5SjaSkpJc/sEiIiLinD+bMrmR4cOHM3LkSLp27QpAjRo1SE5OJiEhwSHZ+D3RSE5OZsOGDfZRDYDw8PA8ryLJyckhLS2N8PDwfMd9S+9G+Z1hGNzi+lIRERExUWZmJj4+jr/mfX19sdls9u9/TzSOHj3KunXrKFmypEP9Bg0akJ6ezp49e+xlGzZswGazUb9+/XzHckvJxpw5c6hevToBAQEEBARQvXp1/vOf/9xKUyIiIoWfGx59bd++PRMmTODzzz/nxIkTLF26lGnTptkXdWZnZ/P444+ze/duFi5cSG5uLqmpqaSmpnLt2jUAqlWrRuvWrenduzc7d+5k69atDBgwgK5du+b7SRS4hadRRo8ezbRp0xg4cCANGjQAflutOnToUFJSUhg3bpyzTYqIiIiLzZw5k1GjRtGvXz/Onj1LREQEffv2ZfTo0QD8/PPPLF++HICYmBiHazdu3EjTpk0BWLhwIQMGDKB58+b4+PjQqVMnpx4cgVvYZ6N06dLMmDGDJ5980qH8gw8+YODAgZw7d86pAMygfTZERCS/bsc+G5H9X3NJOylvDndJO7eb09Mo2dnZDs/b/q5OnTrk5OS4JCgREREpPJxONp555pkbPhbz7rvv/umzuyIiIl7Ny18xf0s7iM6ZM4c1a9bwj3/8A4AdO3aQkpJCt27dHJ7//atdykRERMQ7OJ1sHDx4kNq1awNw7NgxAEqVKkWpUqU4ePCgvZ7Fy1+nKyIiYuflvxKdTjY2btxoRhwiIiJSSP2tTb1EREREbsbpkY2rV68yc+ZMNm7cyNmzZx12IgPYu3evy4ITEREpDLx9ZYHTyUavXr1Ys2YNjz/+OPXq1dPaDBEREflLTicbK1eu5IsvvuCBBx4wIx4REREpZJxONu68806KFy9uRiwiIiKFk5dPAji9QHTq1KmMGDGC5ORkM+IREREpfLSpl3Pq1q3L1atXueeeeyhatCj+/v4O59PS0lwWnIiIiBR8TicbTz75JD///DMTJ06kTJkyWiAqIiJyE97+m9LpZGPbtm1s376dWrVqmRFPoba8Xy8iQkPylC/es48pqzdQMqgog5s9SL0K5QgqUoTktDTe27qTDYeP2utWKRPGoGaNiSpbhlybwYbDR3lj3WauZGffzlsp8NQXnkN94TnUFyby8j/MnU42qlatypUrV8yIpdDrNm8Rvtf9D1exdCneeupx1iceAeCV9q0pHhDACx9/RvqVK7SOrkrCY+3oNnchh8/8QqliQbz11OOsTTzMlNUbCLIW4YXYpoxt34oRS1a667YKJPWF51BfeA71hXm8PNdwfoHopEmTeOGFF9i0aRO//vorGRkZDsffZRjG327DU6VnXuHXy5n2o1Gle/gpLZ09KScBqHlXBB/t/pbvT6fyc/oF5mzdwcWrWVQNLwNA40r3kGPLZfKq9SSnnefQ6TNMXLWe5lUrc9cdoW68s4JHfeE51BeeQ30hZnE62WjdujXbt2+nefPmhIWFcccdd3DHHXcQGhrKHXfc8bcDslqtJCYm/u12PJ2fjw9tq1dj+f7/e3nd/pOnaFGtCsEBAViAllFVsPr52X/Qi/j5kp1r4/p0LCsnB4CYuyJuY/SFi/rCc6gvPIf6QlzJbS9iu/5V9NfLzc1l0qRJlCxZEii8r6lvWqUSxQKsrNj/vb1s5NLPSXisHRuG9SMnN5er2Tn889PlnDyfDsCuEz8xtHkTnqlflw927SWwiD8DH2oEQKliQe64jUJBfeE51BeeQ33hYl4+jeJ0stGkSROXfPD06dOpVasWoaGhDuWGYZCYmEhQUFC+nnTJysoiKyvLocyWk4OPn9O3dlt1qFWdbceSOHfpsr3s+SYNKW618vyij0nPvELTypWY9Fg7nvvvYo79co7j535lzIrVDI1tQv+HGmGz2fhw9z7OXbpMIZ59Mp36wnOoLzyH+kJc6ZZ/I2dmZpKSksK1a9ccymvWrJmv6ydOnMi7777L1KlTadasmb3c39+fefPmERUVla92EhISeOWVVxzKyjZrSUTzVvm63h3Cg4tTr3wkL366wl52Z2gIT9S9jy7vzuf4uV8BOHr2HDF330mXOrVIWLUegNWHfmD1oR8oEVSUK9eyMTCIq1ebk+np7riVAk994TnUF55DfeF6Xj6w4Xyy8csvv9CjRw++/PLLG57Pzc3NVzsjR46kefPmPP3007Rv356EhIQ8G4TlR3x8fJ4pmabTZzvdzu30SK3qnM/MZMuPx+1lAf//3m1/SP9thnHDEZ60y5m/tVUzmms5uexISjEx4sJLfeE51BeeQ31hAi/PNpxeIDpkyBDS09PZsWMHgYGBrFq1ivnz53PvvfeyfPlyp9q6//772bNnD7/88gt169bl4MGDTm8SZrVaCQ4Odjg8eQrFArSvGc3K/YfIve6H9sSvaaSkneelNrFElw3nztAQ4urVoX6Fcmw+csxer0udGKqUCSOyRCid69TixVbNmLVpC5f+MJUkN6e+8BzqC8+hvhAzOP1becOGDXz22WfUrVsXHx8fypUrR4sWLQgODiYhIYF27do51V6xYsWYP38+H374IbGxsfkeGSmo6lUoR9mQYIcV3gC5NhuDP1rKwIcaM61LB4r6F+Gn8+mMXbGKrceS7PWiI8Lp07gBRYv4c+LX80z8ch1fHCz8T++YQX3hOdQXnkN9YQ5v32fDYji5sUVwcDD79++nfPnylCtXjkWLFvHAAw+QlJREdHQ0mZmZtxzMyZMn2bNnD7GxsQQF3frK5boTC+cTLCIi4nq7X7rx05GuVHH46y5p59hr/3RJO7eb0yMbVapU4fDhw5QvX55atWrxzjvvUL58eWbPnk3ZsmX/VjB33XUXd911199qQ0RExNN4+8iG08nG4MGDOX36NABjxoyhdevWLFy4kCJFijBv3jxXxyciIiIFnNPJxtNPP23/uk6dOiQnJ/PDDz8QGRlJqVKlXBqciIiIFHx/+7ENq9WKj48Pvr6+rohHRESk0PH2aZRbevR1zpw5wG97ajz44IPUrl2bu+++m02bNrk6PhERESngnE42PvnkE2rVqgXAihUrOHHiBD/88ANDhw7l5ZdfdnmAIiIiBZ7FRUcB5XSyce7cOcLDwwH44osv6Ny5M5UrV6Znz54cOHDA5QGKiIgUdBYX/VdQOZ1slClThkOHDpGbm8uqVato0aIF8Nu7UrRuQ0RERP7I6QWiPXr0oEuXLpQtWxaLxUJsbCwAO3bsoGrVqi4PUEREpMAruIMSLuF0sjF27FiqV6/OTz/9ROfOnbFarQD4+voycuRIlwcoIiJS0Hl5rnFrj74+/vjjecq6d+/+t4MRERGRwsdzX48qIiJSSGifDRERETGXGx59zc3NZdSoUVSoUIHAwEAqVqzI+PHjuf79q4ZhMHr0aMqWLUtgYCCxsbEcPXrUoZ20tDTi4uIIDg4mNDSUXr16cenSJadiUbIhIiJiMndsszF58mTefvttZs2aRWJiIpMnT2bKlCnMnDnTXmfKlCnMmDGD2bNns2PHDoKCgmjVqhVXr16114mLi+P7779n7dq1rFy5kq+++oo+ffo4FYumUURERAqhbdu20aFDB9q1awdA+fLl+eCDD9i5cyfw26jG9OnT+de//kWHDh0AeP/99ylTpgzLli2ja9euJCYmsmrVKnbt2kXdunUBmDlzJm3btuX1118nIiIiX7Hka2QjIyMj34eIiIj8gYuGNrKysvL83s3KyrrhRzZs2JD169dz5MgRAL777ju2bNlCmzZtAEhKSiI1NdW+hQVASEgI9evXZ/v27QBs376d0NBQe6IBEBsbi4+PDzt27Mj37edrZCM0NBTLTVa3GIaBxWIhNzc33x8uIiLiDVy1PjQhIYFXXnnFoWzMmDGMHTs2T92RI0eSkZFB1apV8fX1JTc3lwkTJhAXFwdAamoq8NtmndcrU6aM/VxqaiphYWEO5/38/ChRooS9Tn7kK9nYuHFjvhsUERERc8THxzNs2DCHst/3u/qjxYsXs3DhQhYtWkR0dDT79u1jyJAhRERE3PbtKvKVbDRp0sTsOERERAotVz36arVa/zS5+KPhw4czcuRIunbtCkCNGjVITk4mISGB7t27299zdubMGcqWLWu/7syZM8TExAAQHh7O2bNnHdrNyckhLS3Nfn1+3PIC0czMTFJSUrh27ZpDec2aNW+1SRERkcLJDftsZGZm4uPjuDTT19cXm80GQIUKFQgPD2f9+vX25CIjI4MdO3bw/PPPA9CgQQPS09PZs2cPderUAWDDhg3YbDbq16+f71icTjZ++eUXevTowZdffnnD81qzISIi4n7t27dnwoQJREZGEh0dzbfffsu0adPo2bMnABaLhSFDhvDqq69y7733UqFCBUaNGkVERASPPvooANWqVaN169b07t2b2bNnk52dzYABA+jatWu+n0SBW0g2hgwZQnp6Ojt27KBp06YsXbqUM2fO8OqrrzJ16lRnmxMRESn03LGB6MyZMxk1ahT9+vXj7NmzRERE0LdvX0aPHm2v8+KLL3L58mX69OlDeno6jRo1YtWqVQQEBNjrLFy4kAEDBtC8eXN8fHzo1KkTM2bMcCoWi3H9VmL5ULZsWT777DPq1atHcHAwu3fvpnLlyixfvpwpU6awZcsWpwIwQ92J09wdgoiIFBC7Xxp280p/U40xrvlj/MArL7ikndvN6R1EL1++bH8M5o477uCXX34Bflt4snfvXtdGJyIiIgWe08lGlSpVOHz4MAC1atXinXfe4eeff2b27NkOq1lFRERE4BbWbAwePJjTp08Dv20k0rp1axYuXEiRIkWYN2+eq+MTEREp8Lz9ra9OJxtPP/20/es6deqQnJzMDz/8QGRkJKVKlXJpcCIiIoWCko2/p2jRotSuXdsVsYiIiEghlK9kY9iwYYwfP56goKA826T+0bRpehJERETkehYvH9rIV7Lx7bffkp2dbf9aRERE8k9rNvLh+hex6aVsIiIi4gynH33t2bMnFy9ezFN++fJl+xaoIiIiIr9zOtmYP38+V65cyVN+5coV3n//fZcEJSIiUphYLK45Cqp8P42SkZGBYRgYhsHFixcd9k3Pzc3liy++sO8sKiIiIvK7fCcboaGhWCwWLBYLlStXznPeYrHwyiuvuDQ4ERGRwqAAD0q4RL6TjY0bN2IYBs2aNePTTz+lRIkS9nNFihShXLlyTr1uVkRExGt4ebaR72SjSZMmACQlJREZGYmlIE8eiYiIyG2Tr2Rj//79VK9eHR8fHy5cuMCBAwf+tG7NmjVdFpyIiEhh4O1/n+cr2YiJiSE1NZWwsDBiYmKwWCwYhpGnnsViITc31+VBioiIFGRenmvkL9lISkqidOnS9q9FRETECV6ebeQr2ShXrtwNvxYRERG5mVt66+vRo0fZuHEjZ8+exWazOZwbPXq0SwITEREpLLx8YMP5ZON///d/ef755ylVqhTh4eEOT6VYLBYlGyIiIn+gBaJOevXVV5kwYQIjRowwIx4REREpZJxONs6fP0/nzp3NiEVERKRw8vKRDadfxNa5c2fWrFljRiwiIiKFksVFR0Hl9MhGpUqVGDVqFN988w01atTA39/f4fygQYNcFpyIiIgUfE4nG++++y7FihVj8+bNbN682eGcxWJRsiEiIvIHWiDqJG3qJSIi4izvzjacXrMhIiIi4ox8jWwMGzaM8ePHExQUxLBhw/6y7rRp01wSmIiISGGhaZR8+Pbbb8nOzrZ//Wf02nkREZEb8PJfj/lKNjZu3HjDr0VEROTmvDzX0JoNERERMdctvYhNRERE8s/bVxloZENERERMpWRDRERETJWvZKN27dqcP38egHHjxpGZmWlqUCIiIoWJxeKao6DKV7KRmJjI5cuXAXjllVe4dOmSqUGJiIgUJnoRWz7ExMTQo0cPGjVqhGEYvP766xQrVuyGdUePHu3SAEVERMR55cuXJzk5OU95v379ePPNN0lNTWX48OGsXbuWixcvUqVKFV5++WU6depkr5uWlsbAgQNZsWIFPj4+dOrUiX//+99/mgP8mXwlG/PmzWPMmDGsXLkSi8XCl19+iZ9f3kstFouSDRERkT9yw7DErl27yM3NtX9/8OBBWrRoQefOnQHo1q0b6enpLF++nFKlSrFo0SK6dOnC7t27ue+++wCIi4vj9OnTrF27luzsbHr06EGfPn1YtGiRU7FYDMMwnLnAx8eH1NRUwsLCnPqg26nuRG2ZLiIi+bP7pb9+DYcrPPjGGy5p56uhQ2/52iFDhrBy5UqOHj2KxWKhWLFivP322zzzzDP2OiVLlmTy5Mk899xzJCYmEhUVxa5du6hbty4Aq1atom3btpw8eZKIiIh8f7bTT6PYbDaPTjREREQKq6ysLDIyMhyOrKysm1537do1FixYQM+ePe2vFmnYsCEfffQRaWlp2Gw2PvzwQ65evUrTpk0B2L59O6GhofZEAyA2NhYfHx927NjhVNy39OjrsWPHGDhwILGxscTGxjJo0CCOHTt2K02JiIgUeq5aIJqQkEBISIjDkZCQcNPPX7ZsGenp6Tz77LP2ssWLF5OdnU3JkiWxWq307duXpUuXUqlSJYAbzmL4+flRokQJUlNTnbp/p5ON1atXExUVxc6dO6lZsyY1a9Zkx44dREdHs3btWmebExERKfxclG3Ex8dz4cIFhyM+Pv6mHz9nzhzatGnjMPUxatQo0tPTWbduHbt372bYsGF06dKFAwcOuPDGf+P0duUjR45k6NChTJo0KU/5iBEjaNGihcuCExERKQxctT7UarVitVqduiY5OZl169axZMkSe9mxY8eYNWsWBw8eJDo6GoBatWrx9ddf8+abbzJ79mzCw8M5e/asQ1s5OTmkpaURHh7uVAxOj2wkJibSq1evPOU9e/bk0KFDzjYnIiIiJpo7dy5hYWG0a9fOXvb75pw+Po5pgK+vLzabDYAGDRqQnp7Onj177Oc3bNiAzWajfv36TsXgdLJRunRp9u3bl6d83759WjgqIiJyA+7aQdRmszF37ly6d+/usGVF1apVqVSpEn379mXnzp0cO3aMqVOnsnbtWh599FEAqlWrRuvWrenduzc7d+5k69atDBgwgK5duzr1JArcwjRK79696dOnD8ePH6dhw4YAbN26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IoWXt/+trh1ERURExFQue8W8iIiI3JiXD2wo2RARETGbplFERERETKSRDREREbN5+ciGkg0RERGTeXmuoWkUERERMZdGNkREREzm7QtElWyIiIiYzMtzDU2jiIiIiLk0siEiImIyTaOIiIiIqbw811CyISIiYjZvH9nQmg0RERExlUY2RERETObtIxtKNkREREzm5bmGplFERETEXBrZEBERMZmmUURERMRUXp5raBpFREREzKWRDREREZN5+zSKRjZERERMZnHR4Yzy5ctjsVjyHP3793eoZxgGbdq0wWKxsGzZModzKSkptGvXjqJFixIWFsbw4cPJyclxMhKNbIiIiBRKu3btIjc31/79wYMHadGiBZ07d3aoN336dCw3GHrJzc2lXbt2hIeHs23bNk6fPk23bt3w9/dn4sSJTsWikQ0RERGTWSyuOZxRunRpwsPD7cfKlSupWLEiTZo0sdfZt28fU6dO5b333stz/Zo1azh06BALFiwgJiaGNm3aMH78eN58802uXbvmVCxKNkREREzmjmmU6127do0FCxbQs2dP+yhGZmYmTz31FG+++Sbh4eF5rtm+fTs1atSgTJky9rJWrVqRkZHB999/79TnaxpFRETEZK5aIJqVlUVWVpZDmdVqxWq1/uV1y5YtIz09nWeffdZeNnToUBo2bEiHDh1ueE1qaqpDogHYv09NTXUqbo1siIiIFBAJCQmEhIQ4HAkJCTe9bs6cObRp04aIiAgAli9fzoYNG5g+fbrJEf9GyYaIiIjJXDWNEh8fz4ULFxyO+Pj4v/zs5ORk1q1bx3PPPWcv27BhA8eOHSM0NBQ/Pz/8/H6b6OjUqRNNmzYFIDw8nDNnzji09fv3N5p2+SuaRhERETGZq6ZR8jNl8kdz584lLCyMdu3a2ctGjhzpkHwA1KhRgzfeeIP27dsD0KBBAyZMmMDZs2cJCwsDYO3atQQHBxMVFeVUDEo2RERECimbzcbcuXPp3r27ffQCsD+h8keRkZFUqFABgJYtWxIVFcUzzzzDlClTSE1N5V//+hf9+/d3OuHRNIqIiIjJ3PHoK8C6detISUmhZ8+eTl/r6+vLypUr8fX1pUGDBjz99NN069aNcePGOd2WRjZERERM5q7dylu2bIlhGPmqe6N65cqV44svvvjbcWhkQ0REREylkQ0RERGT3Wg7cG+iZENE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MTGMHz+eESNGMHbsWIoUKZLvWDSNIiIiUshdu3aNBQsW0LNnTyx/Msxy4cIFgoOD8fP7bRxi+/bt1KhRgzJlytjrtGrVioyMDL7//nunPl8jGyIiIiZz1TRKVlYWWVlZDmVWqxWr1fqX1y1btoz09HSeffbZG54/d+4c48ePp0+fPvay1NRUh0QDsH+fmprqVNwa2RARETGZxUVHQkICISEhDkdCQsJNP3/OnDm0adOGiIiIPOcyMjJo164dUVFRjB079m/f641oZENERKSAiI+PZ9iwYQ5lNxvVSE5OZt26dSxZsiTPuYsXL9K6dWuKFy/O0qVL8ff3t58LDw9n586dDvXPnDljP+cMjWyIiIiYzGJxzWG1WgkODnY4bpZszJ07l7CwMNq1a+dQnpGRQcuWLSlSpAjLly8nICDA4XyDBg04cOAAZ8+etZetXbuW4OBgoqKinLp/jWyIiIiYzF1/2dtsNubOnUv37t3tCz/h/xKNzMxMFixYQEZGBhkZGcBvT7H4+vrSsmVLoqKieOaZZ5gyZQqpqan861//on///jdNcP5IyYaIiIjJ3LVd+bp160hJSaFnz54O5Xv37mXHjh0AVKpUyeFcUlIS5cuXx9fXl5UrV/L888/ToEEDgoKC6N69O+PGjXM6DiUbIiIihVTLli0xDCNPedOmTW9Y/kflypXjiy+++NtxKNkQERExmbe/G0XJhoiIiMm8/a2vehpFRERETKWRDREREZN5+cCGkg0RERGzaRpFRERExEQa2RARETGZt49sKNkQERExmZfnGppGEREREXNpZENERMRkmkYRERERU3n7NIKSDREREZN5+8iGtydbIiIiYjKNbIiIiJjMws3fsFqYKdkQERExmaZRRERERExkMQzDu8d2PFRWVhYJCQnEx8djtVrdHY5XU194DvWF51BfiDOUbHiojIwMQkJCuHDhAsHBwe4Ox6upLzyH+sJzqC/EGZpGEREREVMp2RARERFTKdkQERERUynZ8FBWq5UxY8Zo4ZUHUF94DvWF51BfiDO0QFRERERMpZENERERMZWSDRERETGVkg0RERExlZINERERMZWSDQ/z1Vdf0b59eyIiIrBYLCxbtszdIXmtsWPHYrFYHI6qVau6OyyvcLOfA8MwGD16NGXLliUwMJDY2FiOHj3qnmALuYSEBO6//36KFy9OWFgYjz76KIcPH3aoc/XqVfr370/JkiUpVqwYnTp14syZM26KWDyRkg0Pc/nyZWrVqsWbb77p7lAEiI6O5vTp0/Zjy5Yt7g7JK9zs52DKlCnMmDGD2bNns2PHDoKCgmjVqhVXr169zZEWfps3b6Z///588803rF27luzsbFq2bMnly5ftdYYOHcqKFSv4+OOP2bx5M6dOnaJjx45ujFo8jiEeCzCWLl3q7jC81pgxY4xatWq5Owyv98efA5vNZoSHhxuvvfaavSw9Pd2wWq3GBx984IYIvcvZs2cNwNi8ebNhGL/92/v7+xsff/yxvU5iYqIBGNu3b3dXmOJhNLIh8heOHj1KREQE99xzD3FxcaSkpLg7JK+XlJREamoqsbGx9rKQkBDq16/P9u3b3RiZd7hw4QIAJUqUAGDPnj1kZ2c79EfVqlWJjIxUf4idkg2RP1G/fn3mzZvHqlWrePvtt0lKSqJx48ZcvHjR3aF5tdTUVADKlCnjUF6mTBn7OTGHzWZjyJAhPPDAA1SvXh34rT+KFClCaGioQ131h1zPz90BiHiqNm3a2L+uWbMm9evXp1y5cixevJhevXq5MTIR9+jfvz8HDx7U2iVxmkY2RPIpNDSUypUr8+OPP7o7FK8WHh4OkOdphzNnztjPiesNGDCAlStXsnHjRu666y57eXh4ONeuXSM9Pd2hvvpDrqdkQySfLl26xLFjxyhbtqy7Q/FqFSpUIDw8nPXr19vLMjIy2LFjBw0aNHBjZIWTYRgMGDCApUuXsmHDBipUqOBwvk6dOvj7+zv0x+HDh0lJSVF/iJ2mUTzMpUuXHP5yTkpKYt++fZQoUYLIyEg3RuZ9/vnPf9K+fXvKlSvHqVOnGDNmDL6+vjz55JPuDq3Qu9nPwZAhQ3j11Ve59957qVChAqNGjSIiIoJHH33UfUEXUv3792fRokV89tlnFC9e3L4OIyQkhMDAQEJCQujVqxfDhg2jRIkSBAcHM3DgQBo0aMA//vEPN0cvHsPdj8OIo40bNxpAnqN79+7uDs3rPPHEE0bZsmWNIkWKGHfeeafxxBNPGD/++KO7w/IKN/s5sNlsxqhRo4wyZcoYVqvVaN68uXH48GH3Bl1I3agfAGPu3Ln2OleuXDH69etn3HHHHUbRokWNxx57zDh9+rT7ghaPo1fMi4iIiKm0ZkNERERMpWRDRERETKVkQ0REREylZENERERMpWRDRERETKVkQ0REREylZENERERMpWRDpAAoX74806dPN619i8XCsmXLTGv/Rsy+JxHxHEo2REzy7LPPYrFYmDRpkkP5smXLsFgsTrW1a9cu+vTp48rwRERuGyUbIiYKCAhg8uTJnD9//m+1U7p0aYoWLeqiqEREbi8lGyImio2NJTw8nISEhL+s9+mnnxIdHY3VaqV8+fJMnTrV4fz1Uw6GYTB27FgiIyOxWq1EREQwaNAge92srCz++c9/cueddxIUFET9+vXZtGmTU3H/9NNPdOnShdDQUEqUKEGHDh04ceIEAGvWrCEgICDPK8UHDx5Ms2bN7N9v2bKFxo0bExgYyN13382gQYO4fPmyU3GISOGgZEPERL6+vkycOJGZM2dy8uTJG9bZs2cPXbp0oWvXrhw4cICxY8cyatQo5s2bd8P6n376KW+88QbvvPMOR48eZdmyZdSoUcN+fsCAAWzfvp0PP/yQ/fv307lzZ1q3bs3Ro0fzFXN2djatWrWiePHifP3112zdupVixYrRunVrrl27RvPmzQkNDeXTTz+1X5Obm8tHH31EXFwcAMeOHaN169Z06tSJ/fv389FHH7FlyxYGDBiQz385ESlU3PwiOJFCq3v37kaHDh0MwzCMf/zjH0bPnj0NwzCMpUuXGtf/6D311FNGixYtHK4dPny4ERUVZf++XLlyxhtvvGEYhmFMnTrVqFy5snHt2rU8n5mcnGz4+voaP//8s0N58+bNjfj4+D+NFTCWLl1qGIZh/Pe//zWqVKli2Gw2+/msrCwjMDDQWL16tWEYhjF48GCjWbNm9vOrV682rFarcf78ecMwDKNXr15Gnz59HD7j66+/Nnx8fIwrV67kuScRKdw0siFyG0yePJn58+eTmJiY51xiYiIPPPCAQ9kDDzzA0aNHyc3NzVO/c+fOXLlyhXvuuYfevXuzdOlScnJyADhw4AC5ublUrlyZYsWK2Y/Nmzdz7NixfMX63Xff8eOPP1K8eHH79SVKlODq1av2NuLi4ti0aROnTp0CYOHChbRr147Q0FB7G/PmzXOIoVWrVthsNpKSkvL97yYihYOfuwMQ8QYPPvggrVq1Ij4+nmefffZvtXX33Xdz+PBh1q1bx9q1a+nXrx+vvfYamzdv5tKlS/j6+rJnzx58fX0dritWrFi+2r906RJ16tRh4cKFec6VLl0agPvvv5+KFSvy4Ycf8vzzz7N06VKHaZ9Lly7Rt29fh7Ukv4uMjHTibkWkMFCyIXKbTJo0iZiYGKpUqeJQXq1aNbZu3epQtnXrVipXrpwnYfhdYGAg7du3p3379vTv35+qVaty4MAB7rvvPnJzczl79iyNGze+pThr167NRx99RFhYGMHBwX9aLy4ujoULF3LXXXfh4+NDu3btHNo4dOgQlSpVuqUYRKRw0TSKyG1So0YN4uLimDFjhkP5Cy+8wPr16xk/fjxHjhxh/vz5zJo1i3/+8583bGfevHnMmTOHgwcPcvz4cRYsWEBgYCDlypWjcuXKxMXF0a1bN5YsWUJSUhI7d+4kISGBzz//PF9xxsXFUapUKTp06MDXX39NUlISmzZtYtCgQQ6LXOPi4ti7dy8TJkzg8ccfx2q12s+NGDGCbdu2MWDAAPbt28fRo0f57LPPtEBUxEsp2RC5jcaNG4fNZnMoq127NosXL+bDDz+kevXqjB49mnHjxv3pdEtoaCj/+7//ywMPPEDNmjVZt24dK1asoGTJkgDMnTuXbt268cILL1ClShUeffRRdu3ale/pi6JFi/LVV18RGRlJx44dqVatGr169eLq1asOIx2VKlWiXr167N+/3/4Uyu9q1qzJ5s2bOXLkCI0bN+a+++5j9OjRREREOPGvJSKFhcUwDMPdQYiIiEjhpZENERERMZWSDRERETGVkg0RERExlZINERERMZWSDRERETGVkg0RERExlZINERERMZWSDRERETGVkg0RERExlZINERERMZWSDRERETGVkg0REREx1f8D7CjQKwh+yIYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "visualization.grid_search_heatmap(n_inits, noise_levels, performance_matrix_random)\n", + "ax.set_title('Random')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "caba841d-9015-4097-a8f6-f046370d33d4", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/requirements.txt b/requirements.txt index 097a011..e7022c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,10 @@ -e . # package from this repo -# numpy -# scipy -# pandas -# matplotlib -# matplotlib-inline -# ipython -# ipykernel -pytest + numpy + scipy +pandas +matplotlib +matplotlib-inline +ipython +ipykernel +baybe + diff --git a/results_baybe_extendedBounds/results_random_baybe/.ipynb_checkpoints/BayBE_heatmap-checkpoint.png b/results_baybe_extendedBounds/results_random_baybe/.ipynb_checkpoints/BayBE_heatmap-checkpoint.png new file mode 100644 index 0000000..7d877e1 Binary files /dev/null and b/results_baybe_extendedBounds/results_random_baybe/.ipynb_checkpoints/BayBE_heatmap-checkpoint.png differ diff --git a/results_plots/.ipynb_checkpoints/BAYBE_heatmap-checkpoint.png b/results_plots/.ipynb_checkpoints/BAYBE_heatmap-checkpoint.png new file mode 100644 index 0000000..c3d3807 Binary files /dev/null and b/results_plots/.ipynb_checkpoints/BAYBE_heatmap-checkpoint.png differ diff --git a/results_plots/.ipynb_checkpoints/BayBE_line_plot-checkpoint.png b/results_plots/.ipynb_checkpoints/BayBE_line_plot-checkpoint.png new file mode 100644 index 0000000..0620fd8 Binary files /dev/null and b/results_plots/.ipynb_checkpoints/BayBE_line_plot-checkpoint.png differ diff --git a/results_plots/.ipynb_checkpoints/BoTorch_heatmap_delta-checkpoint.png b/results_plots/.ipynb_checkpoints/BoTorch_heatmap_delta-checkpoint.png new file mode 100644 index 0000000..e022f97 Binary files /dev/null and b/results_plots/.ipynb_checkpoints/BoTorch_heatmap_delta-checkpoint.png differ diff --git a/results_plots/BoTorch_heatmapFalse.png b/results_plots/BoTorch_heatmapFalse.png new file mode 100644 index 0000000..191cd46 Binary files /dev/null and b/results_plots/BoTorch_heatmapFalse.png differ diff --git a/results_plots/BoTorch_heatmapTrue.png b/results_plots/BoTorch_heatmapTrue.png new file mode 100644 index 0000000..b7a364e Binary files /dev/null and b/results_plots/BoTorch_heatmapTrue.png differ diff --git a/results_plots/BoTorch_heatmap_delta.png b/results_plots/BoTorch_heatmap_delta.png new file mode 100644 index 0000000..e022f97 Binary files /dev/null and b/results_plots/BoTorch_heatmap_delta.png differ diff --git a/results_plots/baybe_original_range/BAYBE_heatmap.png b/results_plots/baybe_original_range/BAYBE_heatmap.png new file mode 100644 index 0000000..c3d3807 Binary files /dev/null and b/results_plots/baybe_original_range/BAYBE_heatmap.png differ diff --git a/results_plots/baybe_original_range/BayBE_heatmap.png b/results_plots/baybe_original_range/BayBE_heatmap.png new file mode 100644 index 0000000..7d877e1 Binary files /dev/null and b/results_plots/baybe_original_range/BayBE_heatmap.png differ diff --git a/results_plots/baybe_original_range/BayBE_line_plot.png b/results_plots/baybe_original_range/BayBE_line_plot.png new file mode 100644 index 0000000..3bd67af Binary files /dev/null and b/results_plots/baybe_original_range/BayBE_line_plot.png differ diff --git a/run_experiment.py b/run_experiment.py new file mode 100644 index 0000000..49458df --- /dev/null +++ b/run_experiment.py @@ -0,0 +1,161 @@ +# %% +import matplotlib.pyplot as plt +import numpy as np +import torch + +from botorch.models.gp_regression import ( + SingleTaskGP, +) +from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood +from botorch.fit import fit_gpytorch_model +from botorch.models.transforms.outcome import Standardize + +from botorch.optim.optimize import optimize_acqf +from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement +from botorch.sampling.normal import SobolQMCNormalSampler +from botorch.utils.transforms import normalize, unnormalize +import os +import gc + +tkwargs = { + "dtype": torch.double, + "device": torch.device("cuda" if torch.cuda.is_available() else "cpu"), +} +SMOKE_TEST = os.environ.get("SMOKE_TEST") +# SMOKE_TEST = True +print("SMOKE_TEST", SMOKE_TEST) +NUM_RESTARTS = 10 if not SMOKE_TEST else 2 +RAW_SAMPLES = 512 if not SMOKE_TEST else 4 +MC_SAMPLES = 128 if not SMOKE_TEST else 16 +batch_size = 1 + + +# %% +def generate_initial_data(problem, n: int, bounds: torch.Tensor) -> tuple: + X_init = draw_sobol_samples( + bounds=bounds, n=n, q=1, seed=torch.randint(100000, (1,)).item() + ).squeeze(1) + Y_init = torch.tensor(problem.y(X_init.numpy())) + Y_init_real = torch.tensor(problem.f(X_init.numpy())) + return X_init, Y_init, Y_init_real + +# %% +def initialize_model(train_x, train_y, noise_bool=True) -> tuple: + # define models for objective and constraint + train_y= -train_y # negative because botorch assumes maximization + + if noise_bool: + model = SingleTaskGP( + train_X=train_x, + train_Y=train_y.unsqueeze(-1), + outcome_transform=Standardize(m=1), + ) + else: + model = SingleTaskGP( + train_X=train_x, + train_Y=train_y.unsqueeze(-1), + train_Yvar=torch.full_like(train_y.unsqueeze(-1), 1e-6), + outcome_transform=Standardize(m=1), + ) + + mll = ExactMarginalLogLikelihood(model.likelihood, model) + + return mll, model + +# %% +def optimize_acqf_loop(problem, acq_func): + + standard_bounds = torch.zeros(2, problem.n_var, **tkwargs) + standard_bounds[1] = 1 + options = {"batch_limit": batch_size, "maxiter": 2000} + + while options["batch_limit"] >= 1: + try: + torch.cuda.empty_cache() + x_cand, acq_val = optimize_acqf( + acq_function=acq_func, + bounds=standard_bounds, + q=batch_size, + num_restarts=NUM_RESTARTS, + raw_samples=RAW_SAMPLES, # used for intialization heuristic + options=options, + ) + torch.cuda.empty_cache() + gc.collect() + break + except RuntimeError as e: + if options["batch_limit"] > 1: + print( + "Got a RuntimeError in `optimize_acqf`. " + "Trying with reduced `batch_limit`." + ) + options["batch_limit"] //= 2 + continue + else: + raise e + + return x_cand, acq_val + + +# %% +from botorch.utils.sampling import draw_sobol_samples +from src.schwefel import SchwefelProblem +from time import time + +def run_experiment(n_init, noise_level, budget, seed, noise_bool): + + + torch.manual_seed(seed) + np.random.seed(seed) + + problem = SchwefelProblem(n_var=2, noise_level=noise_level) + + bounds = torch.tensor(problem.bounds, **tkwargs) + + train_X, train_Y, train_Y_real= generate_initial_data(problem, n_init, bounds) + + start_time = time() + + for i in range(budget): + print(f"Starting iteration {i}, total time: {time() - start_time:.3f} seconds.") + + train_x = normalize(train_X, bounds) + mll, model = initialize_model(train_x, train_Y, noise_bool) + fit_gpytorch_model(mll) + + # optimize the acquisition function and get the observations + X_baseline = train_x + sampler = SobolQMCNormalSampler(sample_shape=torch.Size([MC_SAMPLES])) + + acq_func = qNoisyExpectedImprovement( + model=model, + X_baseline=X_baseline, + prune_baseline=True, + sampler=sampler, + ) + + x_cand, acq_func_val = optimize_acqf_loop(problem, acq_func) + X_cand = unnormalize(x_cand, bounds) + Y_cand = torch.tensor(problem.y(X_cand.numpy())) + Y_cand_real = torch.tensor(problem.f(X_cand.numpy())) + print(f"New candidate: {X_cand}, {Y_cand}") + + # update the model with new observations + train_X = torch.cat([train_X, X_cand], dim=0) + train_Y = torch.cat([train_Y, Y_cand], dim=0) + train_Y_real = torch.cat([train_Y_real, Y_cand_real], dim=0) + + train_x = normalize(train_X, bounds) + mll, model = initialize_model(train_x, train_Y, noise_bool) + fit_gpytorch_model(mll) + + os.makedirs('results_botorch', exist_ok=True) + fname = f"results_botorch/{problem.__class__.__name__[:5]}_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt" + torch.save((train_X, train_Y, train_Y_real, model), fname) + + return train_X, train_Y, train_Y_real, model + + +if __name__ == "__main__": + run_experiment(5, 0.1, 5, 0, True) + run_experiment(5, 0.1, 5, 0, False) \ No newline at end of file diff --git a/run_grid_botorch.py b/run_grid_botorch.py new file mode 100644 index 0000000..0359195 --- /dev/null +++ b/run_grid_botorch.py @@ -0,0 +1,16 @@ +import torch +import pandas as pd +from run_grid_experiments import run_grid_experiments +from run_experiment import run_experiment + + +seeds = list(range(5)) +n_inits = [2, 4, 8, 10] +noise_levels = [1, 5, 10, 20] +noise_bools = [True, False] +budget = 30 + + +run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget) + + diff --git a/run_grid_experiments.py b/run_grid_experiments.py new file mode 100644 index 0000000..37c2c06 --- /dev/null +++ b/run_grid_experiments.py @@ -0,0 +1,64 @@ +import ray +import argparse +from time import time, sleep +import sys +from run_experiment import run_experiment +from datetime import datetime +import gc + + +MAX_NUM_PENDING_TASKS = 12 + + +@ray.remote +def worker(n_init, noise_level, budget, seed, noise_bool): + + try: + run_experiment(n_init, noise_level, budget, seed, noise_bool) + # saved file looks like this: results\Schwe_n_init_6_noiselvl_0_budget_0_seed_2_noise_False.pt + except Exception as e: + print(e) + print(f'problem {n_init} noise {noise_level} budget {budget} seed {seed} failed') + return 1 + + return 0 + +def run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget): + + # ray.init(local_mode=True) + ray.init(ignore_reinit_error=True) + start_time = time() + tasks = [] + + iter = 0 + for seed in seeds: + for n_init in n_inits: + for noise_level in noise_levels: + for noise_bool in noise_bools: + if len(tasks) > MAX_NUM_PENDING_TASKS: + completed_tasks, tasks = ray.wait(tasks, num_returns=1) + ray.get(completed_tasks[0]) + + sleep(1) + task = worker.remote(n_init, noise_level, budget, seed, noise_bool) + tasks.append(task) + iter+=1 + print(f'Started {iter} {n_init} noise {noise_level} budget {budget} seed {seed}, time: {time() - start_time:.2f}s') + gc.collect() + + while len(tasks) > 0: + completed_tasks, tasks = ray.wait(tasks, num_returns=1) + print(ray.get(completed_tasks[0])) + + + print('all experiments done, time: %.2fs' % (time() - start_time)) + +if __name__ == "__main__": + + seeds = [0] + n_inits = [2, 4, 6 ,8, 10] + noise_levels = [0, 0.01, 0.1, 0.5] + # budgets = [10, 20, 50] + noise_bools = [True, False] + budget = 10 + run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget) diff --git a/src/.ipynb_checkpoints/BayBE_grid_search-checkpoint.ipynb b/src/.ipynb_checkpoints/BayBE_grid_search-checkpoint.ipynb new file mode 100644 index 0000000..cba3cef --- /dev/null +++ b/src/.ipynb_checkpoints/BayBE_grid_search-checkpoint.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "01039780-75fe-4d45-ad43-a3802d21f6f2", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "fc7d83ca-d889-49f9-a332-785d3267512d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/brendenpelkie/miniconda3/envs/noisybo/lib/python3.12/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from src import schwefel\n", + "from src import baybe_utils\n", + "from src import visualization\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "3e9d8019-5827-4325-b0e4-cc1f80745270", + "metadata": {}, + "source": [ + "## BayBE Schwefel function optimization examples\n", + "\n", + "### Brenden Pelkie\n", + "\n", + "This notebook walks through a quick grid search to explore the impact of measurement noise on optimization performance of a vanilla BO implementation in BayBE." + ] + }, + { + "cell_type": "markdown", + "id": "44701cdf-29e6-47f7-84f5-abfd5112a2e9", + "metadata": {}, + "source": [ + "### 1. Pick parameters\n", + "\n", + "First define parameters for optimization. Here we set the number of BO iterations/cycles to run, the number of random initial observations to include, the dimensionality of the schwefel function to optimize, the noise level of the schwefel observations, and the number of obserations to make per iteration/BO batch cycle" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b158f689-b0e5-478e-b7a6-2cb586acf4c5", + "metadata": {}, + "outputs": [], + "source": [ + "NUM_ITERATIONS = 15\n", + "NUM_INIT_OBS = 5\n", + "N_DIMS_SCHWEF = 2\n", + "NOISE_LEVEL_SCHWEF = 0\n", + "ITERATION_BATCH_SIZE = 1\n", + "SCHWEFEL_RANGE = (-50,50)" + ] + }, + { + "cell_type": "markdown", + "id": "3b3e07e3-3daa-4196-b17f-8982e0598db9", + "metadata": {}, + "source": [ + "For the grid search over number of BO iterations and noise, select the desired values here" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0670300a-6f94-4b37-9854-d4b0b5251b40", + "metadata": {}, + "outputs": [], + "source": [ + "num_iterations = [5]#[5,10,20,40,60,80]\n", + "noise = [0]# [0, 0.1, 0.2, 0.5]\n" + ] + }, + { + "cell_type": "markdown", + "id": "4705ebb3-86ad-41f5-8c23-0f883b79a871", + "metadata": {}, + "source": [ + "### 2. Run grid search" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6a78944a-2833-407a-9bbc-86206155b2d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting initial observations\n", + "Beginning optimization campaign\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:04<00:00, 1.17it/s]\n" + ] + } + ], + "source": [ + "grid_results = baybe_utils.iteration_noise_grid_search(num_iterations, noise, NUM_INIT_OBS, N_DIMS_SCHWEF, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE=SCHWEFEL_RANGE)" + ] + }, + { + "cell_type": "markdown", + "id": "4f403581-1dd2-4a10-b98e-fcd147ec0bba", + "metadata": {}, + "source": [ + "### 3. Process and visualize results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a10e5944-1038-4bec-bb54-66a60f22ccec", + "metadata": {}, + "outputs": [], + "source": [ + "n_its, noise, performance_matrix = baybe_utils.process_grid_searh_results(grid_results)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "524e2642-4a6d-458e-bade-05106c17e4ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XKldu3YpIyNDderUUcuWLTV16lQ99thjSk1NVeXKlT2u2+OwMXDgQLfX/fr1K3XOgAEDPP5gqXTY+LG//OUvlq4HAMBvkbeeIJqWlqbJkye77UtJSVFqamqZ52dlZSkyMlJVqlRRfHy80tLSVK9ePUnSmTNndP/992vOnDllBpLMzEw1b95cderUce1LTEzU8OHDtXPnTrVq1crjuj0OG6+99prHFwUAAD/knbQxadIkjR3rfkfK5boacXFxSk9PV6NGjXT48GFNnjxZCQkJ+uKLL1SjRg2NGTNGbdu2Va9evcp8f15enlvQkOR6nZeXZ6lubtsAAKCC+KmRyY9169bN9XNsbKzi4uIUFRWlRYsWKSwsTGvWrNHnn/86X7ro8d0oAADgyjgc3tl+idDQUEVHRys7O1tr1qxRTk6OQkNDFRAQ4Fo42rt3b916662SpIiICB05csTtGpde/9Q6kLIQNgAAMO038AjRwsJC5eTkqG7dupo4caK2b9+ubdu2uTZJmjVrlmvZRHx8vHbs2KGjR4+6rrFq1SoFBwcrJiamrI+4LMYoAAAYVh63vo4fP149e/ZUVFSUDh06pJSUFPn7+6tv374KCwsrsztRr149XXvttZKkLl26KCYmRv3799f06dOVl5enxx9/XCNGjPB4lHOJR52N1q1b6/jx45KkKVOm6MwZz749EgAAlI+DBw+qb9++atSoke69917VqlVLmzZtUlhYmEfv9/f317Jly+Tv76/4+Hj169dPAwYM0JQpUyzX4lFnY/fu3Tp9+rSuuuoqTZ48WQ899JCqVq1q+cMAALAjb936asWCBQssnV/WV6VFRUXpgw+sPc+nLB6FjZYtW2rQoEFq3769nE6nnnvuuVIP4LrkySef/MVFAQAA3+FR2EhPT1dKSoqWLVsmh8Oh//znP2U+8tThcBA2AACAG4/CRqNGjVztGD8/P61evVrh4eFGCwMAwFeUxxjlt8Ty3SglJSUm6gAAwGfZPGtc2a2vOTk5ev7557V7925JUkxMjEaPHq3rrrvOq8UBAICKz/JDvVasWKGYmBht2bJFsbGxio2N1ebNm9W0aVOtWrXKRI0AAFRsv4GHepUny52NiRMnasyYMXrmmWdK7X/sscd02223ea04AAB8gd3XbFjubOzevVuDBw8utf/BBx/Url27vFIUAADwHZbDRlhY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ur/++mvde++9Cg0NVc2aNdWrVy999dVXkqSVK1eqSpUqOnHihNt7Ro8erY4dO7per1+/XgkJCQoKCtI111yj5ORknT592lIdAHwDYQMwyN/fX9OmTdMLL7yggwcPlnnO1q1bde+99+q+++7Tjh07lJqaqieeeELp6ellnr948WLNmjVLf/vb35SVlaWlS5eqefPmruMjR45UZmamFixYoO3bt+uee+5R165dlZWV5VHNFy5cUGJiomrUqKF169Zpw4YNql69urp27arz58+rU6dOCg0N1eLFi13vKS4u1sKFC5WUlCRJysnJUdeuXdW7d29t375dCxcu1Pr16zVy5EgP/8sB8ClOAEYMHDjQ2atXL6fT6XS2adPG+eCDDzqdTqdzyZIlzh/+r3f//fc7b7vtNrf3TpgwwRkTE+N6HRUV5Zw1a5bT6XQ6Z8yY4YyOjnaeP3++1Gfu37/f6e/v7/zmm2/c9nfq1Mk5adKky9YqyblkyRKn0+l0vv76685GjRo5S0pKXMeLioqcQUFBzhUrVjidTqdz9OjRzo4dO7qOr1ixwhkYGOg8fvy40+l0OgcPHuwcOnSo22esW7fO6efn5zx79myp3wmAb6OzAfwKnn32Wc2bN0+7d+8udWz37t1q166d27527dopKytLxcXFpc6/5557dPbsWTVo0EBDhgzRkiVLdPHiRUnSjh07VFxcrOjoaFWvXt21rV27Vjk5OR7V+t///lfZ2dmqUaOG6/01a9bUuXPnXNdISkrSRx99pEOHDkmS5s+frx49eig0NNR1jfT0dLcaEhMTVVJSotzcXI//uwHwDQHlXQBgBx06dFBiYqImTZqkBx544Bdd65prrtGePXuUkZGhVatW6eGHH9Zf/vIXrV27VoWFhfL399fWrVvl7+/v9r7q1at7dP3CwkLdcMMNmj9/fqljYWFhkqSbbrpJ1113nRYsWKDhw4dryZIlbmOfwsJCDRs2zG0tySX16tWz8NsC8AWEDeBX8swzz6hly5Zq1KiR2/4mTZpow4YNbvs2bNig6OjoUoHhkqCgIPXs2VM9e/bUiBEj1LhxY+3YsUOtWrVScXGxjh49qoSEhCuqs3Xr1lq4cKHCw8MVHBx82fOSkpI0f/58/e53v5Ofn5969Ojhdo1du3apYcOGV1QDAN/CGAX4lTRv3lxJSUmaPXu22/5x48Zp9erVmjp1qvbu3at58+bpxRdf1Pjx48u8Tnp6ul555RV98cUX2rdvn9544w0FBQUpKipK0dHRSkpK0oABA/TOO+8oNzdXW7ZsUVpamt5//32P6kxKSlLt2rXVq1cvrVu3Trm5ufroo4+UnJzstsg1KSlJn332mZ5++mndfffdCgwMdB177LHHtHHjRo0cOVLbtm1TVlaW/v3vf7NAFLApwgbwK5oyZYpKSkrc9rVu3VqLFi3SggUL1KxZMz355JOaMmXKZcctoaGhevnll9WuXTvFxsYqIyND7733nmrVqiVJeu211zRgwACNGzdOjRo10h133KFPPvnE4/FF1apV9fHHH6tevXq666671KRJEw0ePFjnzp1z63Q0bNhQN998s7Zv3+66C+WS2NhYrV27Vnv37lVCQoJatWqlJ598UpGRkRb+awHwFQ6n0+ks7yIAAIDvorMBAACMImwAAACjCBsAAMAowgYAADCKsAEAAIwibAAAAKMIGwAAwCjCBgAAMIqwAQAAjCJsAAAAowgbAADAqP8Hd4XrNQM++gMAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualization.grid_search_heatmap(n_its, noise, performance_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6f476b1b-3931-435c-a85a-73b76c5ecdd5", + "metadata": {}, + "outputs": [], + "source": [ + "test_result = grid_results['5']['0'].measurements" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "bf8e4a92-88a6-4218-b7a4-dcbd83477b2c", + "metadata": {}, + "outputs": [], + "source": [ + "x_names = [f'schwefel{i+1}' for i in range(N_DIMS_SCHWEF)]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9d2c5714-e918-4dfc-a379-051c78f34e08", + "metadata": {}, + "outputs": [], + "source": [ + "x_train = test_result[x_names].to_numpy()\n", + "y_train = test_result['schwefel'].to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "5da6d938-47b0-450c-a4c4-80590aa1af6c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "fe513817-58d2-4148-baff-fdc5cb531a1e", + "metadata": {}, + "outputs": [], + "source": [ + "schwef = schwefel.SchwefelProblem(n_var = 2, noise_level = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "3f4c8244-65bf-4e23-a57a-a1c04d49f3ed", + "metadata": {}, + "outputs": [], + "source": [ + "y_test = schwef.y(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "5e207b2d-d704-4305-8d3b-e883dd2eee9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-353.1162661 , -115.77679551],\n", + " [-100.48640485, -327.1966037 ],\n", + " [ 139.7688944 , -438.20087406],\n", + " [-486.63820259, 378.28871931],\n", + " [-325.39646572, -219.090224 ],\n", + " [-180.23321345, 500. ],\n", + " [ 500. , 500. ],\n", + " [-500. , -104.2417874 ],\n", + " [-132.38714138, -500. ],\n", + " [-448.33851406, 95.06174804]])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "1ddf0eea-504b-47f5-9100-3c626ffa124f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "schwef.f(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "58182f79-46a5-4567-96d3-0c8dda176487", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ]])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "schwef.y(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "1c39cc34-8209-426e-b1f4-4761456e7022", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-353.1162661 , -115.77679551],\n", + " [-100.48640485, -327.1966037 ],\n", + " [ 139.7688944 , -438.20087406],\n", + " [-486.63820259, 378.28871931],\n", + " [-325.39646572, -219.090224 ],\n", + " [-180.23321345, 500. ],\n", + " [ 500. , 500. ],\n", + " [-500. , -104.2417874 ],\n", + " [-132.38714138, -500. ],\n", + " [-448.33851406, 95.06174804]])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f78a53d0-a21f-4ac4-91bc-eb786e1ad5fe", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/.ipynb_checkpoints/baybe_no_noise-checkpoint.ipynb b/src/.ipynb_checkpoints/baybe_no_noise-checkpoint.ipynb new file mode 100644 index 0000000..8eb5fcb --- /dev/null +++ b/src/.ipynb_checkpoints/baybe_no_noise-checkpoint.ipynb @@ -0,0 +1,367 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1-dimensional continuous data BO test using BayBE" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\baybe\\telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno 11001] getaddrinfo failed)\"))\n", + " warnings.warn(\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from baybe.targets import NumericalTarget\n", + "from baybe.objective import Objective\n", + "\n", + "target = NumericalTarget(\n", + " name=\"Yield\",\n", + " mode=\"MAX\",\n", + ")\n", + "objective = Objective(mode=\"SINGLE\", targets=[target])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter\n", + "\n", + "parameters = [\n", + " NumericalContinuousParameter('schwefel1', bounds=(-500,500)),\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.recommenders import (\n", + " SequentialGreedyRecommender, \n", + " SequentialMetaRecommender, \n", + " RandomRecommender\n", + ")\n", + "\n", + "recommender = SequentialGreedyRecommender()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.searchspace import SearchSpace\n", + "\n", + "searchspace = SearchSpace.from_product(parameters)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe import Campaign\n", + "\n", + "campaign = Campaign(searchspace, objective, recommender)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv('seed_data.csv')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from schwefel_functions import schwefel_1d\n", + "\n", + "df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "campaign.add_measurements(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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BnV1dQCAxYsXo729Hbt378ann36KJUuW4IILLsCvfvUrAN6pKXlF1a5duyCEwKRJkwac3+FwICkpadDnLyoqwrFjx/Dyyy8rtwkh4PF4UFJSgqlTp47o9SAidTDYIaKAMRqN2Lx5M7Zv3473338f69evx0MPPYQPPvhgWI83m80D/i1JEjweDwAgLi4OZ511Fj766CNs374dF154Ic4//3zs2bMHR48exZEjR7B06VIAgMfjgdFoRFFREYxG44BzRkdHD/r8Ho8Hq1atwt13333KfTk5OcP6HYhIfQx2iCigJEnCokWLsGjRIvzXf/0XcnNzsXnzZuTl5eGDDz7ABRdcMOpzL126FB9++CG++OILPPzww4iPj8e0adPwq1/9CikpKUrmZfbs2XC73airq8P5558/7PPPmTMH+/fvP6WWiIj0hQXKRBQwX3zxBdauXYudO3eivLwcb7zxBurr6zF16lSsWbMGTzzxBH7729/i6NGj2LVrF9avXz+i8y9duhSbNm2CJEmYNm2actvLL7+MJUuWKMdNmjQJt9xyC771rW/hjTfeQElJCXbs2IFHH30U77zzzqDn/8lPfoLPPvsMd9xxh5Ixeuutt3DXXXcN+hi73Y49e/bg2LFjAIDi4mLs2bNHKawmouBjZoeIAiY2NhYff/wxnnrqKbS1tSE3NxdPPPEELrnkEgBAT08PnnzySdx///1ITk7GtddeO6LzL168GACwZMkSSJKk/PdTTz01INgBgA0bNuBXv/oV7rvvPlRVVSEpKQnnnnsuLr300kHPP3PmTGzduhUPPfQQzj//fAghMGHCBNxwww2DPubZZ5/FL37xi1PGuGHDBtx6660j+v2IyD8kIYRQexBEREREgcJpLCIiIgppDHaIiIgopDHYISIiopDGYIeIiIhCGoMdIiIiCmkMdoiIiCikMdghIiKikMZgh4iIiEIagx0iIiIKaQx2iIiIKKQx2CEiIqKQ9v8BW6VD4jsymhQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "example_data = pd.DataFrame(columns = ['x', 'y'])\n", + "\n", + "example_data['x'] = np.linspace(-500,500,5000)\n", + "example_data['y'] = example_data['x'].apply(schwefel_1d)\n", + "\n", + "fig, ax = plt.subplots()\n", + "example_data.plot('x', 'y', ax=ax)\n", + "df.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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eRKZmZk4ffo0ZyUAQHFxcZvm5u7uzgVO68IGD+vfofOFh4cHFAoFysvLdS6WADBgwADcvXsXycnJKC8vR1hYGBckHjZsWIv7tbW1xffff9/k83WZM2cOSktL0bNnTyxcuBBDhw6Fq6trg9dlZ2c3uq1z5846+92yZQsnaPWpfyNhjvUK7LyWLVumk/1VF2NmeYlEIixevBiLFy9GcXExjh8/jr/97W8YO3Ys0tLSdKybwsJCSKXSdi0KABWGdkfdOyVbW1tue3R0ND755BNkZGRg6tSprdo3e1GoLyL/+c9/9J5HY4waNQpr165FbGws+vbty23/8ccfwTAMRowY0ar5Gptu3boBAB49esS5KurDWj6EEGzYsAG+vr548cUXm91vdHQ01qxZA3d3d4SEhDQ79r///S927NiB77//HlFRUejbty9mzpyJAwcONBj7888/67h+Ll68iJSUFMyePRsAMGTIELi4uODu3buYP39+s8c1J127dkVYWBhu3bqFNWvWGG2/Uqm0RQvCxcUFU6ZMQUZGBhYtWoTk5GT06NGDe/7x48c6f7dXqDC0MyIiIgAA69atw/jx4yEUCtGrVy8MGTIEb731FmbOnInr169j2LBhsLe3R1ZWFs6fP4+IiAi88847ze578ODBcHV1xZw5c7BixQqIxWL8/PPPuHXrlt7zYN0GdXnvvffw448/YuLEiVi1ahWCgoLwxx9/4Msvv8Q777yDLl26GOGd0XDmzBnk5eUBAFQqFVJSUvDLL78AAKKiouDp6dnka4cPHw4AuHz5cgNhWL58OSIiIuDj44PU1FR8//33uHLlCv74448WhXHRokXYu3cvhg0bhvfeew+9evWCWq1Gamoqjh49ivfffx+DBg1CXFwcFi5ciNdffx0zZ84EoFmRO2XKFGzevBmLFi3S2e/169cxe/ZsvPjii0hLS8Py5cvh5+eHuXPnAgAcHBywZcsWvP766ygsLMSUKVPg5eWFvLw83Lp1C3l5efjqq6/0fm+NyX/+8x+MHz8eY8eOxYwZM+Dn54fCwkLcu3cPsbGx+N///mfwPiMiIrB7927s2bMHnTp1go2NDSIiIvDMM88gPDwc/fv3h6enJ1JSUrB582YEBQUhLCyMe71arcbVq1cxa9YsY56qZcJv7JvSFhrLSqquriazZ88mnp6ehGEYAoAkJSVxz3//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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from copy import deepcopy\n", + "df_cumulative = deepcopy(df)\n", + "for iteration in range(5):\n", + " df = campaign.recommend(batch_size=3)\n", + " df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + " campaign.add_measurements(df)\n", + " df_cumulative = pd.concat([df_cumulative, df])\n", + " fig, ax = plt.subplots(figsize=(4,3))\n", + " ax.set_title(f'Iteration {iteration} ({len(df_cumulative)} experiments)')\n", + " example_data.plot('x', 'y', ax=ax)\n", + " df_cumulative.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')\n", + " plt.tight_layout()\n", + " plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "BO", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/.ipynb_checkpoints/baybe_utils-checkpoint.py b/src/.ipynb_checkpoints/baybe_utils-checkpoint.py new file mode 100644 index 0000000..b22e1d5 --- /dev/null +++ b/src/.ipynb_checkpoints/baybe_utils-checkpoint.py @@ -0,0 +1,151 @@ +from baybe.targets import NumericalTarget +from baybe.objective import Objective +from baybe.parameters import ( + NumericalContinuousParameter +) + +from baybe.recommenders import ( + SequentialGreedyRecommender, + RandomRecommender +) + +from baybe.searchspace import SearchSpace +from baybe import Campaign + +from src import schwefel + +import numpy as np + +from tqdm import tqdm + + +def run_optimization_campaign( + NUM_ITERATIONS, + NUM_INIT_OBS, + N_DIMS_SCHWEF, + NOISE_LEVEL_SCHWEF, + ITERATION_BATCH_SIZE, + SCHWEFEL_RANGE = (-50,50), + recommender_init = None, + recommender_main = None +): + """ + Utility function for running a bayesian optimization campaign. + + NUM_ITERATIONS: Number of bayesian optimization iterations to run for + NUM_INIT_OBS: number of random initial observations to make before starting BO + N_DIMS_SCWEF: number of x dimensions of schwefel function to optimize + NOISE_LEVEL_SCHWEF: variance of noise added to schwefel function + ITERATION_BATCH_SIZE: number of observations to make per BO batch + reccomender_init: (BayBE Reccomender): recommender to use for initial sampling. Default random + recommender_main: (BayBE reccomender): recommender to use for main BO loop. Default baybe sequential greedy with EI + + """ + # Define Schweffel oracle + schweffer = schwefel.SchwefelProblem(n_var = N_DIMS_SCHWEF, noise_level=NOISE_LEVEL_SCHWEF, range = SCHWEFEL_RANGE) + target = NumericalTarget(name = 'schwefel', mode = "MIN") + parameters = [ + NumericalContinuousParameter(f'schwefel{i+1}', bounds = (-500,500)) for i in range(N_DIMS_SCHWEF) + ] + + objective = Objective(mode = "SINGLE", targets = [target]) + searchspace = SearchSpace.from_product(parameters) + + if recommender_init is None: + recommender_init = RandomRecommender() + if recommender_main is None: + recommender_main = SequentialGreedyRecommender(acquisition_function_cls='EI') + + print("Collecting initial observations") + campaign_init = Campaign(searchspace, objective, recommender_init) + random_params = campaign_init.recommend(NUM_INIT_OBS) + + y_init = schweffer.f(random_params.to_numpy()) + + random_params.insert(N_DIMS_SCHWEF, 'schwefel', y_init) + + optimization_campaign = Campaign(searchspace, objective, recommender_main) + optimization_campaign.add_measurements(random_params) + + print('Beginning optimization campaign') + for i in tqdm(range(NUM_ITERATIONS)): + reccs = optimization_campaign.recommend(ITERATION_BATCH_SIZE) + + y_vals = schweffer.f(reccs.to_numpy()) + + reccs.insert(N_DIMS_SCHWEF, 'schwefel', y_vals) + + optimization_campaign.add_measurements(reccs) + + return optimization_campaign + + + +def iteration_noise_grid_search(iterations_list, noise_list, NUM_INIT_OBS, N_DIMS_SCHWEF, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE = (-50, 50)): + """ + Utility to run a parameter grid experiment varying noise level and number of BO iterations. Runs full grid in serial. + Params: + ------- + iteraitons_list: list of ints - number of BO iterations to run + noise_list - list of floats - noise values to run + NUM_INIT_JOBS - int + N_DIMS_SCWEF - int + ITERATION_BATCH_SIZE - int + + returns: + --------- + iteration_results: an abomination of dictionaries. Outer level: results keyed by number of iterations; next layer: results keyed by noise level. Values are BayBE campaign objects of completed campaign + """ + iteration_results = {} + + for its in iterations_list: + noise_results = {} + for noise_level in noise_list: + opt_campaign = run_optimization_campaign(its, NUM_INIT_OBS, N_DIMS_SCHWEF, noise_level, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE=SCHWEFEL_RANGE) + noise_results[str(noise_level)] = opt_campaign + iteration_results[str(its)] = noise_results + + return iteration_results + +def process_grid_searh_results(grid_search_results): + """ + Process results from iteration_noise_grid_search function to extract a performance matrix of best result for each campaign + + Params: + -------- + grid_search_results: dict of dicts of BayBE campaigns + + Returns: + ------- + n_its - list - iteration numbers used + n_noise - list - noise values used + performance_matrix: matrix of best observed values (min schwefel val) for each campaign from grid search, arranged with iteration varying on axis 0 and noise on axis 1 + """ + + + n_its = len(grid_search_results) + n_noise = len(grid_search_results[list(grid_search_results.keys())[0]]) + + performance_matrix = np.zeros((n_its, n_noise)) + + + + # fill out performance matrix + iteration_vals = [] + noise_vals = [] + + first_pass = True + for i, (its, entry) in enumerate(grid_search_results.items()): + iteration_vals.append(its) + for j, (noise, camp) in enumerate(entry.items()): + if first_pass: + noise_vals.append(noise) + best_result = camp.measurements['schwefel'].min() + # hack to flip matrix BO iterations upside down for plotting + performance_matrix[n_its - 1 - i, j] = best_result + first_pass = False + + iteration_vals = iteration_vals[::-1] + + return iteration_vals, noise_vals, performance_matrix + diff --git a/src/.ipynb_checkpoints/schwefel-checkpoint.py b/src/.ipynb_checkpoints/schwefel-checkpoint.py new file mode 100644 index 0000000..5f7a90c --- /dev/null +++ b/src/.ipynb_checkpoints/schwefel-checkpoint.py @@ -0,0 +1,34 @@ +import numpy as np + +class SchwefelProblem: + def __init__(self, n_var=1, noise_level=0.01, range = (-50, 50)): + """ + y = f(x) + eps + """ + self.noise_level = noise_level + self.n_var = n_var # Number of variables/dimensions + self.bounds = np.array([[range[0]] * self.n_var, [range[1]] * self.n_var]) + + def _schwefel_individual(self, x): + return x * np.sin(np.sqrt(np.abs(x))) + + def f(self, x): + return 418.9829 * self.n_var - np.sum(self._schwefel_individual(x), axis=1) + + def eps(self, x): + # Assuming the noise is independent of x for simplicity + return np.random.normal(0, self.noise_level, x.shape[0]) + + def y(self, x): + f = self.f(x) + eps = self.eps(x) + return f + eps + +# Test code if this file is the main program being run +if __name__ == "__main__": + # Create a SchwefelProblem instance with 3 variables/dimensions + schwefel = SchwefelProblem(n_var=3, noise_level=1.) + x_test = np.array([[420, 420, 420], [420, 420, 420]]) # Example input vector + print("Objective function value (f):", schwefel.f(x_test)) + print("Noisy objective function value (y):", schwefel.y(x_test)) + diff --git a/src/.ipynb_checkpoints/schwefel_functions-checkpoint.py b/src/.ipynb_checkpoints/schwefel_functions-checkpoint.py new file mode 100644 index 0000000..323c518 --- /dev/null +++ b/src/.ipynb_checkpoints/schwefel_functions-checkpoint.py @@ -0,0 +1,37 @@ +import numpy as np + +def schwefel_1d(x): + + return 418.9829 - x * np.sin(np.sqrt(np.abs(x))) + +def schwefel_nd(args): + output = 0 + + for dim in range(args): + output += schwefel_1d(args[dim]) + +def add_gaussian_noise(signal, noise_level): + + return signal + np.random.normal(0, noise_level, 1)[0] + +def schwefel_1d_with_noise(x, noise_level = 0.01): + # Calculate the Schwefel function value + + schwefel_value = schwefel_1d(x) + + # Add Gaussian noise to the Schwefel function value + + noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level) + + return noisy_schwefel_value + +def schwefel_nd_with_noise(args, noise_level = 0.01): + # Calculate the Schwefel function value + + schwefel_value = schwefel_nd(args) + + # Add Gaussian noise to the Schwefel function value + + noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level) + + return noisy_schwefel_value \ No newline at end of file diff --git a/src/.ipynb_checkpoints/seed_data-checkpoint.csv b/src/.ipynb_checkpoints/seed_data-checkpoint.csv new file mode 100644 index 0000000..4ca1035 --- /dev/null +++ b/src/.ipynb_checkpoints/seed_data-checkpoint.csv @@ -0,0 +1,4 @@ +schwefel1,Yield +356.99134680215377,403.0454233719017 +-309.0047300290056,123.75848185395103 +-55.674007109553486,470.42364275539364 diff --git a/src/.ipynb_checkpoints/visualization-checkpoint.py b/src/.ipynb_checkpoints/visualization-checkpoint.py new file mode 100644 index 0000000..2f75dbe --- /dev/null +++ b/src/.ipynb_checkpoints/visualization-checkpoint.py @@ -0,0 +1,25 @@ +import seaborn as sn +import pandas as pd + +def grid_search_heatmap(iterations_list, noise_list, performance_matrix): + """ + plot a heatmap + + Params: + ------- + iterations_list: list of number of iterations used + noise list: list of noise values used + performance matrix: np array of dims len(iterations_list) x len(noise_list) with smallest noise, smallest iterations in lower left corner ('origin') + + returns: + ------ + matplotlib ax object + """ + + df_heatmap = pd.DataFrame(performance_matrix, index = [str(its) for its in iterations_list], columns = [str(noise) for noise in noise_list]) + + ax = sn.heatmap(df_heatmap, annot=True, fmt = '.3g', cmap = 'crest') + ax.set_xlabel('Noise level') + ax.set_ylabel('Number of BO iterations') + + return ax \ No newline at end of file diff --git a/src/BayBE_grid_search.ipynb b/src/BayBE_grid_search.ipynb new file mode 100644 index 0000000..cba3cef --- /dev/null +++ b/src/BayBE_grid_search.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "01039780-75fe-4d45-ad43-a3802d21f6f2", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "fc7d83ca-d889-49f9-a332-785d3267512d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/brendenpelkie/miniconda3/envs/noisybo/lib/python3.12/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from src import schwefel\n", + "from src import baybe_utils\n", + "from src import visualization\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "3e9d8019-5827-4325-b0e4-cc1f80745270", + "metadata": {}, + "source": [ + "## BayBE Schwefel function optimization examples\n", + "\n", + "### Brenden Pelkie\n", + "\n", + "This notebook walks through a quick grid search to explore the impact of measurement noise on optimization performance of a vanilla BO implementation in BayBE." + ] + }, + { + "cell_type": "markdown", + "id": "44701cdf-29e6-47f7-84f5-abfd5112a2e9", + "metadata": {}, + "source": [ + "### 1. Pick parameters\n", + "\n", + "First define parameters for optimization. Here we set the number of BO iterations/cycles to run, the number of random initial observations to include, the dimensionality of the schwefel function to optimize, the noise level of the schwefel observations, and the number of obserations to make per iteration/BO batch cycle" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b158f689-b0e5-478e-b7a6-2cb586acf4c5", + "metadata": {}, + "outputs": [], + "source": [ + "NUM_ITERATIONS = 15\n", + "NUM_INIT_OBS = 5\n", + "N_DIMS_SCHWEF = 2\n", + "NOISE_LEVEL_SCHWEF = 0\n", + "ITERATION_BATCH_SIZE = 1\n", + "SCHWEFEL_RANGE = (-50,50)" + ] + }, + { + "cell_type": "markdown", + "id": "3b3e07e3-3daa-4196-b17f-8982e0598db9", + "metadata": {}, + "source": [ + "For the grid search over number of BO iterations and noise, select the desired values here" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0670300a-6f94-4b37-9854-d4b0b5251b40", + "metadata": {}, + "outputs": [], + "source": [ + "num_iterations = [5]#[5,10,20,40,60,80]\n", + "noise = [0]# [0, 0.1, 0.2, 0.5]\n" + ] + }, + { + "cell_type": "markdown", + "id": "4705ebb3-86ad-41f5-8c23-0f883b79a871", + "metadata": {}, + "source": [ + "### 2. Run grid search" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6a78944a-2833-407a-9bbc-86206155b2d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting initial observations\n", + "Beginning optimization campaign\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:04<00:00, 1.17it/s]\n" + ] + } + ], + "source": [ + "grid_results = baybe_utils.iteration_noise_grid_search(num_iterations, noise, NUM_INIT_OBS, N_DIMS_SCHWEF, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE=SCHWEFEL_RANGE)" + ] + }, + { + "cell_type": "markdown", + "id": "4f403581-1dd2-4a10-b98e-fcd147ec0bba", + "metadata": {}, + "source": [ + "### 3. Process and visualize results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a10e5944-1038-4bec-bb54-66a60f22ccec", + "metadata": {}, + "outputs": [], + "source": [ + "n_its, noise, performance_matrix = baybe_utils.process_grid_searh_results(grid_results)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "524e2642-4a6d-458e-bade-05106c17e4ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XKldu3YpIyNDderUUcuWLTV16lQ99thjSk1NVeXKlT2u2+OwMXDgQLfX/fr1K3XOgAEDPP5gqXTY+LG//OUvlq4HAMBvkbeeIJqWlqbJkye77UtJSVFqamqZ52dlZSkyMlJVqlRRfHy80tLSVK9ePUnSmTNndP/992vOnDllBpLMzEw1b95cderUce1LTEzU8OHDtXPnTrVq1crjuj0OG6+99prHFwUAAD/knbQxadIkjR3rfkfK5boacXFxSk9PV6NGjXT48GFNnjxZCQkJ+uKLL1SjRg2NGTNGbdu2Va9evcp8f15enlvQkOR6nZeXZ6lubtsAAKCC+KmRyY9169bN9XNsbKzi4uIUFRWlRYsWKSwsTGvWrNHnn/86X7ro8d0oAADgyjgc3tl+idDQUEVHRys7O1tr1qxRTk6OQkNDFRAQ4Fo42rt3b916662SpIiICB05csTtGpde/9Q6kLIQNgAAMO038AjRwsJC5eTkqG7dupo4caK2b9+ubdu2uTZJmjVrlmvZRHx8vHbs2KGjR4+6rrFq1SoFBwcrJiamrI+4LMYoAAAYVh63vo4fP149e/ZUVFSUDh06pJSUFPn7+6tv374KCwsrsztRr149XXvttZKkLl26KCYmRv3799f06dOVl5enxx9/XCNGjPB4lHOJR52N1q1b6/jx45KkKVOm6MwZz749EgAAlI+DBw+qb9++atSoke69917VqlVLmzZtUlhYmEfv9/f317Jly+Tv76/4+Hj169dPAwYM0JQpUyzX4lFnY/fu3Tp9+rSuuuoqTZ48WQ899JCqVq1q+cMAALAjb936asWCBQssnV/WV6VFRUXpgw+sPc+nLB6FjZYtW2rQoEFq3769nE6nnnvuuVIP4LrkySef/MVFAQAA3+FR2EhPT1dKSoqWLVsmh8Oh//znP2U+8tThcBA2AACAG4/CRqNGjVztGD8/P61evVrh4eFGCwMAwFeUxxjlt8Ty3SglJSUm6gAAwGfZPGtc2a2vOTk5ev7557V7925JUkxMjEaPHq3rrrvOq8UBAICKz/JDvVasWKGYmBht2bJFsbGxio2N1ebNm9W0aVOtWrXKRI0AAFRsv4GHepUny52NiRMnasyYMXrmmWdK7X/sscd02223ea04AAB8gd3XbFjubOzevVuDBw8utf/BBx/Url27vFIUAADwHZbDRlhY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ur/++mvde++9Cg0NVc2aNdWrVy999dVXkqSVK1eqSpUqOnHihNt7Ro8erY4dO7per1+/XgkJCQoKCtI111yj5ORknT592lIdAHwDYQMwyN/fX9OmTdMLL7yggwcPlnnO1q1bde+99+q+++7Tjh07lJqaqieeeELp6ellnr948WLNmjVLf/vb35SVlaWlS5eqefPmruMjR45UZmamFixYoO3bt+uee+5R165dlZWV5VHNFy5cUGJiomrUqKF169Zpw4YNql69urp27arz58+rU6dOCg0N1eLFi13vKS4u1sKFC5WUlCRJysnJUdeuXdW7d29t375dCxcu1Pr16zVy5EgP/8sB8ClOAEYMHDjQ2atXL6fT6XS2adPG+eCDDzqdTqdzyZIlzh/+r3f//fc7b7vtNrf3TpgwwRkTE+N6HRUV5Zw1a5bT6XQ6Z8yY4YyOjnaeP3++1Gfu37/f6e/v7/zmm2/c9nfq1Mk5adKky9YqyblkyRKn0+l0vv76685GjRo5S0pKXMeLioqcQUFBzhUrVjidTqdz9OjRzo4dO7qOr1ixwhkYGOg8fvy40+l0OgcPHuwcOnSo22esW7fO6efn5zx79myp3wmAb6OzAfwKnn32Wc2bN0+7d+8udWz37t1q166d27527dopKytLxcXFpc6/5557dPbsWTVo0EBDhgzRkiVLdPHiRUnSjh07VFxcrOjoaFWvXt21rV27Vjk5OR7V+t///lfZ2dmqUaOG6/01a9bUuXPnXNdISkrSRx99pEOHDkmS5s+frx49eig0NNR1jfT0dLcaEhMTVVJSotzcXI//uwHwDQHlXQBgBx06dFBiYqImTZqkBx544Bdd65prrtGePXuUkZGhVatW6eGHH9Zf/vIXrV27VoWFhfL399fWrVvl7+/v9r7q1at7dP3CwkLdcMMNmj9/fqljYWFhkqSbbrpJ1113nRYsWKDhw4dryZIlbmOfwsJCDRs2zG0tySX16tWz8NsC8AWEDeBX8swzz6hly5Zq1KiR2/4mTZpow4YNbvs2bNig6OjoUoHhkqCgIPXs2VM9e/bUiBEj1LhxY+3YsUOtWrVScXGxjh49qoSEhCuqs3Xr1lq4cKHCw8MVHBx82fOSkpI0f/58/e53v5Ofn5969Ojhdo1du3apYcOGV1QDAN/CGAX4lTRv3lxJSUmaPXu22/5x48Zp9erVmjp1qvbu3at58+bpxRdf1Pjx48u8Tnp6ul555RV98cUX2rdvn9544w0FBQUpKipK0dHRSkpK0oABA/TOO+8oNzdXW7ZsUVpamt5//32P6kxKSlLt2rXVq1cvrVu3Trm5ufroo4+UnJzstsg1KSlJn332mZ5++mndfffdCgwMdB177LHHtHHjRo0cOVLbtm1TVlaW/v3vf7NAFLApwgbwK5oyZYpKSkrc9rVu3VqLFi3SggUL1KxZMz355JOaMmXKZcctoaGhevnll9WuXTvFxsYqIyND7733nmrVqiVJeu211zRgwACNGzdOjRo10h133KFPPvnE4/FF1apV9fHHH6tevXq666671KRJEw0ePFjnzp1z63Q0bNhQN998s7Zv3+66C+WS2NhYrV27Vnv37lVCQoJatWqlJ598UpGRkRb+awHwFQ6n0+ks7yIAAIDvorMBAACMImwAAACjCBsAAMAowgYAADCKsAEAAIwibAAAAKMIGwAAwCjCBgAAMIqwAQAAjCJsAAAAowgbAADAqP8Hd4XrNQM++gMAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualization.grid_search_heatmap(n_its, noise, performance_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6f476b1b-3931-435c-a85a-73b76c5ecdd5", + "metadata": {}, + "outputs": [], + "source": [ + "test_result = grid_results['5']['0'].measurements" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "bf8e4a92-88a6-4218-b7a4-dcbd83477b2c", + "metadata": {}, + "outputs": [], + "source": [ + "x_names = [f'schwefel{i+1}' for i in range(N_DIMS_SCHWEF)]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9d2c5714-e918-4dfc-a379-051c78f34e08", + "metadata": {}, + "outputs": [], + "source": [ + "x_train = test_result[x_names].to_numpy()\n", + "y_train = test_result['schwefel'].to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "5da6d938-47b0-450c-a4c4-80590aa1af6c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "fe513817-58d2-4148-baff-fdc5cb531a1e", + "metadata": {}, + "outputs": [], + "source": [ + "schwef = schwefel.SchwefelProblem(n_var = 2, noise_level = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "3f4c8244-65bf-4e23-a57a-a1c04d49f3ed", + "metadata": {}, + "outputs": [], + "source": [ + "y_test = schwef.y(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "5e207b2d-d704-4305-8d3b-e883dd2eee9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-353.1162661 , -115.77679551],\n", + " [-100.48640485, -327.1966037 ],\n", + " [ 139.7688944 , -438.20087406],\n", + " [-486.63820259, 378.28871931],\n", + " [-325.39646572, -219.090224 ],\n", + " [-180.23321345, 500. ],\n", + " [ 500. , 500. ],\n", + " [-500. , -104.2417874 ],\n", + " [-132.38714138, -500. ],\n", + " [-448.33851406, 95.06174804]])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "1ddf0eea-504b-47f5-9100-3c626ffa124f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "schwef.f(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "58182f79-46a5-4567-96d3-0c8dda176487", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ],\n", + " [ 704.85928745, 555.62241542, 1314.4367682 , 590.92000549,\n", + " 774.57368413, 1154.99341253, 1199.14411706, 583.68789976,\n", + " 541.86150018, 1195.2620041 ]])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "schwef.y(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "1c39cc34-8209-426e-b1f4-4761456e7022", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-353.1162661 , -115.77679551],\n", + " [-100.48640485, -327.1966037 ],\n", + " [ 139.7688944 , -438.20087406],\n", + " [-486.63820259, 378.28871931],\n", + " [-325.39646572, -219.090224 ],\n", + " [-180.23321345, 500. ],\n", + " [ 500. , 500. ],\n", + " [-500. , -104.2417874 ],\n", + " [-132.38714138, -500. ],\n", + " [-448.33851406, 95.06174804]])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f78a53d0-a21f-4ac4-91bc-eb786e1ad5fe", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/baybe_no_noise.ipynb b/src/baybe_no_noise.ipynb new file mode 100644 index 0000000..e316a89 --- /dev/null +++ b/src/baybe_no_noise.ipynb @@ -0,0 +1,367 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1-dimensional continuous data BO test using BayBE" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\baybe\\telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno 11001] getaddrinfo failed)\"))\n", + " warnings.warn(\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from baybe.targets import NumericalTarget\n", + "from baybe.objective import Objective\n", + "\n", + "target = NumericalTarget(\n", + " name=\"Yield\",\n", + " mode=\"MAX\",\n", + ")\n", + "objective = Objective(mode=\"SINGLE\", targets=[target])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter\n", + "\n", + "parameters = [\n", + " NumericalContinuousParameter('schwefel1', bounds=(-500,500)),\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.recommenders import (\n", + " SequentialGreedyRecommender, \n", + " SequentialMetaRecommender, \n", + " RandomRecommender\n", + ")\n", + "\n", + "recommender = SequentialGreedyRecommender()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.searchspace import SearchSpace\n", + "\n", + "searchspace = SearchSpace.from_product(parameters)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe import Campaign\n", + "\n", + "campaign = Campaign(searchspace, objective, recommender)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv('seed_data.csv')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from schwefel_functions import schwefel_1d\n", + "\n", + "df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "campaign.add_measurements(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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BnV1dQCAxYsXo729Hbt378ann36KJUuW4IILLsCvfvUrAN6pKXlF1a5duyCEwKRJkwac3+FwICkpadDnLyoqwrFjx/Dyyy8rtwkh4PF4UFJSgqlTp47o9SAidTDYIaKAMRqN2Lx5M7Zv3473338f69evx0MPPYQPPvhgWI83m80D/i1JEjweDwAgLi4OZ511Fj766CNs374dF154Ic4//3zs2bMHR48exZEjR7B06VIAgMfjgdFoRFFREYxG44BzRkdHD/r8Ho8Hq1atwt13333KfTk5OcP6HYhIfQx2iCigJEnCokWLsGjRIvzXf/0XcnNzsXnzZuTl5eGDDz7ABRdcMOpzL126FB9++CG++OILPPzww4iPj8e0adPwq1/9CikpKUrmZfbs2XC73airq8P5558/7PPPmTMH+/fvP6WWiIj0hQXKRBQwX3zxBdauXYudO3eivLwcb7zxBurr6zF16lSsWbMGTzzxBH7729/i6NGj2LVrF9avXz+i8y9duhSbNm2CJEmYNm2actvLL7+MJUuWKMdNmjQJt9xyC771rW/hjTfeQElJCXbs2IFHH30U77zzzqDn/8lPfoLPPvsMd9xxh5Ixeuutt3DXXXcN+hi73Y49e/bg2LFjAIDi4mLs2bNHKawmouBjZoeIAiY2NhYff/wxnnrqKbS1tSE3NxdPPPEELrnkEgBAT08PnnzySdx///1ITk7GtddeO6LzL168GACwZMkSSJKk/PdTTz01INgBgA0bNuBXv/oV7rvvPlRVVSEpKQnnnnsuLr300kHPP3PmTGzduhUPPfQQzj//fAghMGHCBNxwww2DPubZZ5/FL37xi1PGuGHDBtx6660j+v2IyD8kIYRQexBEREREgcJpLCIiIgppDHaIiIgopDHYISIiopDGYIeIiIhCGoMdIiIiCmkMdoiIiCikMdghIiKikMZgh4iIiEIagx0iIiIKaQx2iIiIKKQx2CEiIqKQ9v8BW6VD4jsymhQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "example_data = pd.DataFrame(columns = ['x', 'y'])\n", + "\n", + "example_data['x'] = np.linspace(-500,500,5000)\n", + "example_data['y'] = example_data['x'].apply(schwefel_1d)\n", + "\n", + "fig, ax = plt.subplots()\n", + "example_data.plot('x', 'y', ax=ax)\n", + "df.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEiCAYAAAD9DXUdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABjZUlEQVR4nO2dd3hUVfrHv3dqei+TnhBCTYBQFYTQpEZURFTQFQQVaSKyKIsrLMuCoBSFVVdXEUXKb6WIivTeIaEktBBI73XSM5OZ8/tj5t5kUmeSmbkzyfk8zzyQO2fuPXfK/d63nPdlCCEEFAqFQqFoEfA9AQqFQqFYFlQYKBQKhaIDFQYKhUKh6ECFgUKhUCg6UGGgUCgUig5UGCgUCoWiAxUGCoVCoehAhYFCoVAoOlBhoFAoFIoOVBismB9++AEMw+D69evctkOHDmHlypX8TUqPeQQHB2PGjBlmnQ/LRx99hOjoaPj5+YFhmFbNY9WqVejRowfUajW3rbS0FAsXLoSfnx+kUim6dOmC9evXQ6VSGXH2lsnKlSvBMAzf02iRL7/8Ej/88EOrXvvdd9/Bz88P5eXlxp2UpUIoVsu2bdsIAHLt2jVu27x584glfKzNzSM2NpYkJiaaeUYa7OzsyBNPPEHmzJlDJBIJef311w16fUZGBrG3tyf/+9//uG1KpZIMGjSIuLq6kq1bt5KjR4+SxYsXE4ZhyIIFC4x8BpZHWloauXTpEt/TaJGePXuSqKioVr1WqVSSsLAw8vHHHxt3UhaKiGddolgJFRUVsLOzM8q+IiMjjbKf1lBaWgqBQGMo//TTTwa//vPPP4eLiwsmT57Mbfvll19w5coV7N27l9v+9NNPo6ysDP/+978xb948dO3a1TgnYEGw3wl/f3/4+/vzPR2TIhKJ8Pbbb+Of//wnPvjgA6P9FiwV6kpqR8yYMQP//ve/AQAMw3CP5ORkAAAhBF9++SX69OkDW1tbuLq6YsqUKXj8+LHOfoYPH47w8HCcPXsWgwcPhp2dHd544w0AwJ49ezBmzBj4+PjA1tYW3bt3x4cffqhjYrc0j8ZcSampqXj11Vfh5eUFqVSK7t27Y8OGDTrumuTkZDAMg88++wwbN25ESEgIHBwc8OSTT+Ly5ct6vUesKLQGhUKB7777DtOmTdPZz4ULF8AwDMaPH68zPjo6Gmq1Gvv3729x3yUlJViyZAlCQkIgkUjg5+eHRYsW6byvc+bMgY2NDWJiYrhtarUao0aNgre3N7KysgDUuhiPHTuGmTNnws3NDfb29njmmWcafNYAcPz4cYwaNQpOTk6ws7PDkCFDcOLECZ0xrLsoNjYWU6ZMgaurK0JDQ3Weq0twcDCio6Px+++/IzIykvuu/P7779wcu3fvDnt7ewwcOFDHHcpy/fp1TJo0CW5ubrCxsUFkZCT+7//+T2cMe66nTp3CO++8Aw8PD7i7u2Py5MnIzMzUmc+dO3dw5swZ7vsYHBzMvYerV69G165dYWtrCxcXF/Tq1Quff/65zrGmT5+OkpIS7N69u/EPsT3Bt8lCaT31XUmJiYlkypQpBAC5dOkS96iqqiKEEPLmm28SsVhM3n//fXL48GGyc+dO0q1bN+Lt7U2ys7O5/UZFRRE3NzcSEBBAtmzZQk6dOkXOnDlDCCHkn//8J9m0aRP5448/yOnTp8nXX39NQkJCyIgRI7jXtzSPoKAgHRdObm4u8fPzI56enuTrr78mhw8fJvPnzycAyDvvvMONS0pKIgBIcHAwGTduHDlw4AA5cOAAiYiIIK6urqS4uNig98/e3t4gV9LZs2cJAHLo0CGd7W+99RYRCoVEqVTqbD9y5AgBQF555ZVm91teXk769OlDPDw8yMaNG8nx48fJ559/TpydncnIkSOJWq0mhBBSWVlJ+vTpQzp16kSKiooIIYR8/PHHRCAQkKNHj3L7Y78XAQEB5I033iB//vkn+eabb4iXlxcJCAjgXksIIT/99BNhGIY899xzZN++feS3334j0dHRRCgUkuPHj3PjVqxYQQCQoKAg8sEHH5Bjx46RAwcO6DxXl6CgIOLv70/Cw8PJrl27yKFDh8igQYOIWCwmH3/8MRkyZAjZt28f2b9/P+nSpQvx9vYmFRUV3OtPnjxJJBIJGTp0KNmzZw85fPgwmTFjBgFAtm3b1uBcO3XqRBYsWECOHDlC/vvf/xJXV1ed72RsbCzp1KkTiYyM5L6PsbGxhBBC1q5dS4RCIVmxYgU5ceIEOXz4MNm8eTNZuXJlg8+qe/fuZPLkyc1+nu0BKgxWjCExhkuXLhEAZMOGDTrb09LSiK2tLVm6dCm3LSoqigAgJ06caPb4arWaKJVKcubMGQKA3Lp1q8V5ENJQGD788EMCgFy5ckVn3DvvvEMYhiEPHjwghNQKQ0REBKmpqeHGXb16lQAgu3btana+9TFUGNatW0cA6IgoIYRs3ryZACDnzp3T2f73v/+dACBjxoxpdr9r164lAoFA53MkhJBffvmlgRA9fPiQODk5keeee44cP36cCAQC8tFHH+m8jv1ePP/88zrbL1y4QACQ1atXE0I0guTm5kaeeeYZnXEqlYr07t2bDBw4kNvGXvwb87E3JQy2trYkPT2d23bz5k0CgPj4+JDy8nJu+4EDBwgAcvDgQW5bt27dSGRkZAOxjY6OJj4+PkSlUumc69y5c3XGrV+/ngAgWVlZ3LamYgzR0dGkT58+DbY3xvTp04m3t7deY60Z6krqIPz+++9gGAavvvoqampquIdMJkPv3r1x+vRpnfGurq4YOXJkg/08fvwY06ZNg0wmg1AohFgsRlRUFADg3r17rZrbyZMn0aNHDwwcOFBn+4wZM0AIwcmTJ3W2T5w4EUKhkPu7V69eAICUlJRWHV9fMjMzwTAMPDw8dLZPnz4dbm5ueOutt3DlyhUUFxdj165d+OKLLwC07L76/fffER4ejj59+uh8NmPHjgXDMDqfTefOnfHtt9/iwIEDiI6OxtChQ5vM/po+fbrO34MHD0ZQUBBOnToFALh48SIKCwvx+uuv6xxXrVZj3LhxuHbtWoMsnBdeeEGftwoA0KdPH/j5+XF/d+/eHYDGVVnXR89uZz+/xMRE3L9/n5t/3blNmDABWVlZePDggc6xJk2apPO3Id+JgQMH4tatW5g7dy6OHDmCkpKSJsd6eXkhNzcXNTU1Le7XmqHB5w5CTk4OCCHw9vZu9PlOnTrp/O3j49NgTFlZGYYOHQobGxusXr0aXbp0gZ2dHdLS0jB58mRUVla2am4FBQWcv7cuvr6+3PN1cXd31/lbKpUCQKuPry+VlZUQi8U6ogQAHh4eOHz4MF5//XU88cQT3Bw3btyIWbNm6VwcGyMnJweJiYkQi8WNPp+fn6/z98SJE+Ht7Y2cnBwsXry4wXxYZDJZo9vY9zMnJwcAMGXKlCbnVlhYCHt7e+7vxr4XTeHm5qbzt0QiaXZ7VVWVzryWLFmCJUuWNLrv+u9JW74Ty5Ytg729PXbs2IGvv/4aQqEQw4YNw7p169C/f3+dsTY2NiCEoKqqCg4ODi3u21qhwtBB8PDwAMMwOHfuHPejqUv9bY3lpZ88eRKZmZk4ffo0ZyUAQHFxcZvm5u7uzgVO68IGD+vfofOFh4cHFAoFysvLdS6WADBgwADcvXsXycnJKC8vR1hYGBckHjZsWIv7tbW1xffff9/k83WZM2cOSktL0bNnTyxcuBBDhw6Fq6trg9dlZ2c3uq1z5846+92yZQsnaPWpfyNhjvUK7LyWLVumk/1VF2NmeYlEIixevBiLFy9GcXExjh8/jr/97W8YO3Ys0tLSdKybwsJCSKXSdi0KABWGdkfdOyVbW1tue3R0ND755BNkZGRg6tSprdo3e1GoLyL/+c9/9J5HY4waNQpr165FbGws+vbty23/8ccfwTAMRowY0ar5Gptu3boBAB49esS5KurDWj6EEGzYsAG+vr548cUXm91vdHQ01qxZA3d3d4SEhDQ79r///S927NiB77//HlFRUejbty9mzpyJAwcONBj7888/67h+Ll68iJSUFMyePRsAMGTIELi4uODu3buYP39+s8c1J127dkVYWBhu3bqFNWvWGG2/Uqm0RQvCxcUFU6ZMQUZGBhYtWoTk5GT06NGDe/7x48c6f7dXqDC0MyIiIgAA69atw/jx4yEUCtGrVy8MGTIEb731FmbOnInr169j2LBhsLe3R1ZWFs6fP4+IiAi88847ze578ODBcHV1xZw5c7BixQqIxWL8/PPPuHXrlt7zYN0GdXnvvffw448/YuLEiVi1ahWCgoLwxx9/4Msvv8Q777yDLl26GOGd0XDmzBnk5eUBAFQqFVJSUvDLL78AAKKiouDp6dnka4cPHw4AuHz5cgNhWL58OSIiIuDj44PU1FR8//33uHLlCv74448WhXHRokXYu3cvhg0bhvfeew+9evWCWq1Gamoqjh49ivfffx+DBg1CXFwcFi5ciNdffx0zZ84EoFmRO2XKFGzevBmLFi3S2e/169cxe/ZsvPjii0hLS8Py5cvh5+eHuXPnAgAcHBywZcsWvP766ygsLMSUKVPg5eWFvLw83Lp1C3l5efjqq6/0fm+NyX/+8x+MHz8eY8eOxYwZM+Dn54fCwkLcu3cPsbGx+N///mfwPiMiIrB7927s2bMHnTp1go2NDSIiIvDMM88gPDwc/fv3h6enJ1JSUrB582YEBQUhLCyMe71arcbVq1cxa9YsY56qZcJv7JvSFhrLSqquriazZ88mnp6ehGEYAoAkJSVxz3//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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from copy import deepcopy\n", + "df_cumulative = deepcopy(df)\n", + "for iteration in range(5):\n", + " df = campaign.recommend(batch_size=3)\n", + " df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + " campaign.add_measurements(df)\n", + " df_cumulative = pd.concat([df_cumulative, df])\n", + " fig, ax = plt.subplots(figsize=(4,3))\n", + " ax.set_title(f'Iteration {iteration} ({len(df_cumulative)} experiments)')\n", + " example_data.plot('x', 'y', ax=ax)\n", + " df_cumulative.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')\n", + " plt.tight_layout()\n", + " plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/src/baybe_playground.ipynb b/src/baybe_playground.ipynb new file mode 100644 index 0000000..44659ef --- /dev/null +++ b/src/baybe_playground.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1-dimensional continuous data BO test using BayBE" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.targets import NumericalTarget\n", + "from baybe.objective import Objective\n", + "\n", + "target = NumericalTarget(\n", + " name=\"Yield\",\n", + " mode=\"MAX\",\n", + ")\n", + "objective = Objective(mode=\"SINGLE\", targets=[target])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter\n", + "\n", + "parameters = [\n", + " NumericalContinuousParameter('schwefel1', bounds=(-500,500)),\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__abstractmethods__',\n", + " '__annotations__',\n", + " '__attrs_attrs__',\n", + " '__attrs_own_setattr__',\n", + " '__class__',\n", + " '__class_getitem__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__getstate__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__parameters__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__setstate__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_abc_impl',\n", + " '_is_protocol',\n", + " '_is_runtime_protocol',\n", + " '_recommend_continuous',\n", + " '_recommend_discrete',\n", + " '_recommend_hybrid',\n", + " '_recommend_with_discrete_parts',\n", + " 'allow_recommending_already_measured',\n", + " 'allow_repeated_recommendations',\n", + " 'compatibility',\n", + " 'recommend']" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import baybe.recommenders\n", + "\n", + "dir(baybe.recommenders.pure.RandomRecommender)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.recommenders import (\n", + " SequentialGreedyRecommender, \n", + " SequentialMetaRecommender, \n", + " RandomRecommender\n", + ")\n", + "\n", + "recommender = RandomRecommender()#SequentialMetaRecommender([SequentialGreedyRecommender(), RandomRecommender()])" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.searchspace import SearchSpace\n", + "\n", + "searchspace = SearchSpace.from_product(parameters)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe import Campaign\n", + "\n", + "campaign = Campaign(searchspace, objective, recommender)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1
0356.991347
1-309.004730
2-55.674007
\n", + "
" + ], + "text/plain": [ + " schwefel1\n", + "0 356.991347\n", + "1 -309.004730\n", + "2 -55.674007" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df = campaign.recommend(batch_size=3)\n", + "display(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "from schwefel_functions import schwefel_1d\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "campaign.add_measurements(df)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1
0-428.432368
1-347.173847
2395.345514
\n", + "
" + ], + "text/plain": [ + " schwefel1\n", + "0 -428.432368\n", + "1 -347.173847\n", + "2 395.345514" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "campaign.recommend(batch_size=3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for iteration in range(5):\n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "BO", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/baybe_simulate_expreiment example.ipynb b/src/baybe_simulate_expreiment example.ipynb new file mode 100644 index 0000000..bcb54d7 --- /dev/null +++ b/src/baybe_simulate_expreiment example.ipynb @@ -0,0 +1,765 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1-dimensional continuous data BO test using BayBE" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.targets import NumericalTarget\n", + "from baybe.objective import Objective\n", + "\n", + "target = NumericalTarget(\n", + " name=\"Yield\",\n", + " mode=\"MIN\",\n", + ")\n", + "objective = Objective(mode=\"SINGLE\", targets=[target])" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter\n", + "\n", + "parameters = [\n", + " NumericalContinuousParameter('schwefel1', bounds=(-500,500)),\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.recommenders import (\n", + " SequentialGreedyRecommender, \n", + " SequentialMetaRecommender, \n", + " RandomRecommender\n", + ")\n", + "\n", + "recommender = SequentialGreedyRecommender()" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.searchspace import SearchSpace\n", + "\n", + "searchspace = SearchSpace.from_product(parameters)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe import Campaign\n", + "\n", + "campaign = Campaign(searchspace, objective, recommender)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv('seed_data.csv')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
schwefel1Yield
0356.991347403.045423
1-309.004730123.758482
2-55.674007470.423643
\n", + "
" + ], + "text/plain": [ + " schwefel1 Yield\n", + "0 356.991347 403.045423\n", + "1 -309.004730 123.758482\n", + "2 -55.674007 470.423643" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from schwefel_functions import schwefel_1d, schwefel_1d_with_noise\n", + "\n", + "\n", + "df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [], + "source": [ + "campaign.add_measurements(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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BnV1dQCAxYsXo729Hbt378ann36KJUuW4IILLsCvfvUrAN6pKXlF1a5duyCEwKRJkwac3+FwICkpadDnLyoqwrFjx/Dyyy8rtwkh4PF4UFJSgqlTp47o9SAidTDYIaKAMRqN2Lx5M7Zv3473338f69evx0MPPYQPPvhgWI83m80D/i1JEjweDwAgLi4OZ511Fj766CNs374dF154Ic4//3zs2bMHR48exZEjR7B06VIAgMfjgdFoRFFREYxG44BzRkdHD/r8Ho8Hq1atwt13333KfTk5OcP6HYhIfQx2iCigJEnCokWLsGjRIvzXf/0XcnNzsXnzZuTl5eGDDz7ABRdcMOpzL126FB9++CG++OILPPzww4iPj8e0adPwq1/9CikpKUrmZfbs2XC73airq8P5558/7PPPmTMH+/fvP6WWiIj0hQXKRBQwX3zxBdauXYudO3eivLwcb7zxBurr6zF16lSsWbMGTzzxBH7729/i6NGj2LVrF9avXz+i8y9duhSbNm2CJEmYNm2actvLL7+MJUuWKMdNmjQJt9xyC771rW/hjTfeQElJCXbs2IFHH30U77zzzqDn/8lPfoLPPvsMd9xxh5Ixeuutt3DXXXcN+hi73Y49e/bg2LFjAIDi4mLs2bNHKawmouBjZoeIAiY2NhYff/wxnnrqKbS1tSE3NxdPPPEELrnkEgBAT08PnnzySdx///1ITk7GtddeO6LzL168GACwZMkSSJKk/PdTTz01INgBgA0bNuBXv/oV7rvvPlRVVSEpKQnnnnsuLr300kHPP3PmTGzduhUPPfQQzj//fAghMGHCBNxwww2DPubZZ5/FL37xi1PGuGHDBtx6660j+v2IyD8kIYRQexBEREREgcJpLCIiIgppDHaIiIgopDHYISIiopDGYIeIiIhCGoMdIiIiCmkMdoiIiCikMdghIiKikMZgh4iIiEIagx0iIiIKaQx2iIiIKKQx2CEiIqKQ9v8BW6VD4jsymhQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "example_data = pd.DataFrame(columns = ['x', 'y'])\n", + "\n", + "example_data['x'] = np.linspace(-500,500,5000)\n", + "example_data['y'] = example_data['x'].apply(schwefel_1d)\n", + "\n", + "fig, ax = plt.subplots()\n", + "example_data.plot('x', 'y', ax=ax)\n", + "df.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "# from copy import deepcopy\n", + "# df_cumulative = deepcopy(df)\n", + "# for iteration in range(5):\n", + "# df = campaign.recommend(batch_size=3)\n", + "# df['Yield'] = df['schwefel1'].apply(schwefel_1d)\n", + "# campaign.add_measurements(df)\n", + "# df_cumulative = pd.concat([df_cumulative, df])\n", + "# fig, ax = plt.subplots(figsize=(4,3))\n", + "# ax.set_title(f'Iteration {iteration} ({len(df_cumulative)} experiments)')\n", + "# example_data.plot('x', 'y', ax=ax)\n", + "# df_cumulative.plot.scatter('schwefel1', 'Yield', ax=ax, c='red')\n", + "# plt.tight_layout()\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "19\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "19\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "19\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n", + "10\n", + "11\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n", + "19\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\botorch\\optim\\initializers.py:432: BadInitialCandidatesWarning: Unable to find non-zero acquisition function values - initial conditions are being selected randomly.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from baybe.simulation import simulate_experiment\n", + "from random import randint\n", + "\n", + "results = {}\n", + "for noise_level in [0,0.01,0.1,1]:\n", + " eval_eqn = lambda x: schwefel_1d_with_noise(x, noise_level)\n", + " results[noise_level] = {}\n", + " placeholder = {}\n", + " for x in range(20):\n", + " print(x)\n", + " placeholder[x] = simulate_experiment(\n", + " campaign,\n", + " eval_eqn,\n", + " n_doe_iterations = 20,\n", + " random_seed=x\n", + " )\n", + " placeholder_df = pd.DataFrame({k:v['Yield_CumBest'] for k,v in placeholder.items()})\n", + " results[noise_level] = placeholder_df.T.describe().T[['mean', 'std']].reset_index(names='N_exp')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results_df = pd.DataFrame()\n", + "for k,v in results.items():\n", + " v['noise'] = k\n", + " results_df = pd.concat([results_df, v])\n", + "ax = sns.lineplot(data=results_df, x='N_exp', y='mean', hue='noise')" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Could not interpret value `N_exp` for parameter `x`", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[111], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m ax \u001b[38;5;241m=\u001b[39m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlineplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresult_df\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mN_exp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmean\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\relational.py:618\u001b[0m, in \u001b[0;36mlineplot\u001b[1;34m(data, x, y, hue, size, style, units, palette, hue_order, hue_norm, sizes, size_order, size_norm, dashes, markers, style_order, estimator, errorbar, n_boot, seed, orient, sort, err_style, err_kws, legend, ci, ax, **kwargs)\u001b[0m\n\u001b[0;32m 615\u001b[0m errorbar \u001b[38;5;241m=\u001b[39m _deprecate_ci(errorbar, ci)\n\u001b[0;32m 617\u001b[0m variables \u001b[38;5;241m=\u001b[39m _LinePlotter\u001b[38;5;241m.\u001b[39mget_semantics(\u001b[38;5;28mlocals\u001b[39m())\n\u001b[1;32m--> 618\u001b[0m p \u001b[38;5;241m=\u001b[39m \u001b[43m_LinePlotter\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 619\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 620\u001b[0m \u001b[43m \u001b[49m\u001b[43mestimator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_boot\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_boot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mseed\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mseed\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merrorbar\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrorbar\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 621\u001b[0m \u001b[43m \u001b[49m\u001b[43msort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msort\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morient\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merr_style\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merr_style\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merr_kws\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merr_kws\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 622\u001b[0m \u001b[43m \u001b[49m\u001b[43mlegend\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlegend\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 623\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 625\u001b[0m p\u001b[38;5;241m.\u001b[39mmap_hue(palette\u001b[38;5;241m=\u001b[39mpalette, order\u001b[38;5;241m=\u001b[39mhue_order, norm\u001b[38;5;241m=\u001b[39mhue_norm)\n\u001b[0;32m 626\u001b[0m p\u001b[38;5;241m.\u001b[39mmap_size(sizes\u001b[38;5;241m=\u001b[39msizes, order\u001b[38;5;241m=\u001b[39msize_order, norm\u001b[38;5;241m=\u001b[39msize_norm)\n", + "File \u001b[1;32mc:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\relational.py:365\u001b[0m, in \u001b[0;36m_LinePlotter.__init__\u001b[1;34m(self, data, variables, estimator, n_boot, seed, errorbar, sort, orient, err_style, err_kws, legend)\u001b[0m\n\u001b[0;32m 351\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[0;32m 352\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39m,\n\u001b[0;32m 353\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, variables\u001b[38;5;241m=\u001b[39m{},\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 359\u001b[0m \u001b[38;5;66;03m# the kind of plot to draw, but for the time being we need to set\u001b[39;00m\n\u001b[0;32m 360\u001b[0m \u001b[38;5;66;03m# this information so the SizeMapping can use it\u001b[39;00m\n\u001b[0;32m 361\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_default_size_range \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 362\u001b[0m np\u001b[38;5;241m.\u001b[39mr_[\u001b[38;5;241m.5\u001b[39m, \u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m*\u001b[39m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlines.linewidth\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 363\u001b[0m )\n\u001b[1;32m--> 365\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 367\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mestimator \u001b[38;5;241m=\u001b[39m estimator\n\u001b[0;32m 368\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39merrorbar \u001b[38;5;241m=\u001b[39m errorbar\n", + "File \u001b[1;32mc:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:640\u001b[0m, in \u001b[0;36mVectorPlotter.__init__\u001b[1;34m(self, data, variables)\u001b[0m\n\u001b[0;32m 635\u001b[0m \u001b[38;5;66;03m# var_ordered is relevant only for categorical axis variables, and may\u001b[39;00m\n\u001b[0;32m 636\u001b[0m \u001b[38;5;66;03m# be better handled by an internal axis information object that tracks\u001b[39;00m\n\u001b[0;32m 637\u001b[0m \u001b[38;5;66;03m# such information and is set up by the scale_* methods. The analogous\u001b[39;00m\n\u001b[0;32m 638\u001b[0m \u001b[38;5;66;03m# information for numeric axes would be information about log scales.\u001b[39;00m\n\u001b[0;32m 639\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_var_ordered \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m} \u001b[38;5;66;03m# alt., used DefaultDict\u001b[39;00m\n\u001b[1;32m--> 640\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massign_variables\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 642\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m var, \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_semantic_mappings\u001b[38;5;241m.\u001b[39mitems():\n\u001b[0;32m 643\u001b[0m \n\u001b[0;32m 644\u001b[0m \u001b[38;5;66;03m# Create the mapping function\u001b[39;00m\n\u001b[0;32m 645\u001b[0m map_func \u001b[38;5;241m=\u001b[39m partial(\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mmap, plotter\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:701\u001b[0m, in \u001b[0;36mVectorPlotter.assign_variables\u001b[1;34m(self, data, variables)\u001b[0m\n\u001b[0;32m 699\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 700\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_format \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlong\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m--> 701\u001b[0m plot_data, variables \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_assign_variables_longform(\n\u001b[0;32m 702\u001b[0m data, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mvariables,\n\u001b[0;32m 703\u001b[0m )\n\u001b[0;32m 705\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data \u001b[38;5;241m=\u001b[39m plot_data\n\u001b[0;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvariables \u001b[38;5;241m=\u001b[39m variables\n", + "File \u001b[1;32mc:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:938\u001b[0m, in \u001b[0;36mVectorPlotter._assign_variables_longform\u001b[1;34m(self, data, **kwargs)\u001b[0m\n\u001b[0;32m 933\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, (\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mbytes\u001b[39m)):\n\u001b[0;32m 934\u001b[0m \n\u001b[0;32m 935\u001b[0m \u001b[38;5;66;03m# This looks like a column name but we don't know what it means!\u001b[39;00m\n\u001b[0;32m 937\u001b[0m err \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCould not interpret value `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mval\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` for parameter `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m`\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m--> 938\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(err)\n\u001b[0;32m 940\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 941\u001b[0m \n\u001b[0;32m 942\u001b[0m \u001b[38;5;66;03m# Otherwise, assume the value is itself data\u001b[39;00m\n\u001b[0;32m 943\u001b[0m \n\u001b[0;32m 944\u001b[0m \u001b[38;5;66;03m# Raise when data object is present and a vector can't matched\u001b[39;00m\n\u001b[0;32m 945\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, pd\u001b[38;5;241m.\u001b[39mDataFrame) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, pd\u001b[38;5;241m.\u001b[39mSeries):\n", + "\u001b[1;31mValueError\u001b[0m: Could not interpret value `N_exp` for parameter `x`" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = sns.lineplot(data=result_df, x='N_exp', y='mean', hue=)\n", + "ax.fill_between(result_df_ave['N_exp'], result_df_ave['mean']-result_df_ave['std'], result_df_ave['mean']+result_df_ave['std'], alpha=0.2, )\n", + "ax.legend()\n", + "ax.set_xlabel('Number of iterations')\n", + "ax.set_ylabel('Cumulative best guess')\n", + "ax.set_title('Backtracing 1-dimensional noisy Schwefel function')" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n", + "c:\\Users\\d23895jm\\AppData\\Local\\anaconda3\\envs\\BO\\lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Backtracing 1-dimensional noisy Schwefel function')" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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927s3r271K2WiRMnQqlUYtWqVfjhhx8sF+OgoCAsWrQImzZtwvvvvw+FQoGOHTsiPj7esm1OTg66deuGjz/+GI888gg2bNiAjz76CA0aNEBSUtIt/26PPvoolEolvv76ayxZsgRbt27FQw89ZLXOI488guXLl+ORRx7BTz/9hHvuuQcjR460utg60vHjx9G3b19kZmZixYoV+Oijj3DgwAG8/vrrld7H+++/j507d+L999/Hp59+ipMnT2LYsGGYNGkSrl27hs8//xxLlizB5s2b8eijj1ptu2DBAjzwwANo0qQJvvvuO6xatQo5OTno3r07jh8/brWuwWDA8OHD0bdvX/z000+YOHEili1bhsWLF1vW+fbbb/HUU0+hZ8+eWLt2LdatW4fnnnsOeXl5FR7D119/jbvvvhu+vr745ptv8NlnnyEjIwO9evXCjh07Sq1/zz33oEGDBvjxxx8xa9YsfP3113juuees1jl79izGjh2LVatW4eeff8akSZPw5ptv4oknnqj03/ZmycnJePDBB/HQQw9h/fr1GDx4MGbPno3//e9/lnWuXbuGLl264Pfff8drr72G9evXo1+/fpgxYwYmT55c4f6nTZuGDz/8EM888ww2bdqEVatW4b777kNaWhoAYMyYMQgPDy/1ZW00GvHxxx9j5MiRiIyMLHf/nTt3xt69e/HMM89g7969FSZ+lb1O3OpvIkkS+vTpg82bN1u2+eeff5CZmQmNRoM//vjDsnzz5s1o27Yt/P39AQBbtmxB165dkZmZiY8++gg//fQTWrVqhTFjxlja1zz66KNYs2YNAGDKlCnYvXs31q5dC6D489W+fXscPXoUb7/9Nn7++WfcddddeOaZZzBv3ryKTkUpd911lyXJvPfeey3XvNtx6NAhTJ8+Hc899xx++ukntGjRApMmTcL27dst61y5cgXt27fH2rVrMW3aNPz6669Yvnw5/Pz8kJGRgTZt2uCLL74AALz88suWeG7+jN/oySefxMyZM9G/f3+sX78er732GjZt2oQuXbogNTXVat3KvNfdjiCX9MUXXwgApR5qtVp88MEHFW5rMpmEwWAQ8+fPF0FBQcJsNgshhDh37pyQy+XiwQcfrHD7nj17iqZNmwqTySQmT54sVCqV+N///ldqPZ1OJ8aPH19u7A8//PAtj9NoNIqioiJRv3598dxz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "result_df_ave = result_df.T.describe().T[['mean', 'std']].reset_index(names='N_exp')\n", + "ax = sns.lineplot(data=result_df_ave, x='N_exp', y='mean', label='noise=0.01')\n", + "ax.fill_between(result_df_ave['N_exp'], result_df_ave['mean']-result_df_ave['std'], result_df_ave['mean']+result_df_ave['std'], alpha=0.2, )\n", + "ax.legend()\n", + "ax.set_xlabel('Number of iterations')\n", + "ax.set_ylabel('Cumulative best guess')\n", + "ax.set_title('Backtracing 1-dimensional noisy Schwefel function')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/src/baybe_utils.py b/src/baybe_utils.py new file mode 100644 index 0000000..b22e1d5 --- /dev/null +++ b/src/baybe_utils.py @@ -0,0 +1,151 @@ +from baybe.targets import NumericalTarget +from baybe.objective import Objective +from baybe.parameters import ( + NumericalContinuousParameter +) + +from baybe.recommenders import ( + SequentialGreedyRecommender, + RandomRecommender +) + +from baybe.searchspace import SearchSpace +from baybe import Campaign + +from src import schwefel + +import numpy as np + +from tqdm import tqdm + + +def run_optimization_campaign( + NUM_ITERATIONS, + NUM_INIT_OBS, + N_DIMS_SCHWEF, + NOISE_LEVEL_SCHWEF, + ITERATION_BATCH_SIZE, + SCHWEFEL_RANGE = (-50,50), + recommender_init = None, + recommender_main = None +): + """ + Utility function for running a bayesian optimization campaign. + + NUM_ITERATIONS: Number of bayesian optimization iterations to run for + NUM_INIT_OBS: number of random initial observations to make before starting BO + N_DIMS_SCWEF: number of x dimensions of schwefel function to optimize + NOISE_LEVEL_SCHWEF: variance of noise added to schwefel function + ITERATION_BATCH_SIZE: number of observations to make per BO batch + reccomender_init: (BayBE Reccomender): recommender to use for initial sampling. Default random + recommender_main: (BayBE reccomender): recommender to use for main BO loop. Default baybe sequential greedy with EI + + """ + # Define Schweffel oracle + schweffer = schwefel.SchwefelProblem(n_var = N_DIMS_SCHWEF, noise_level=NOISE_LEVEL_SCHWEF, range = SCHWEFEL_RANGE) + target = NumericalTarget(name = 'schwefel', mode = "MIN") + parameters = [ + NumericalContinuousParameter(f'schwefel{i+1}', bounds = (-500,500)) for i in range(N_DIMS_SCHWEF) + ] + + objective = Objective(mode = "SINGLE", targets = [target]) + searchspace = SearchSpace.from_product(parameters) + + if recommender_init is None: + recommender_init = RandomRecommender() + if recommender_main is None: + recommender_main = SequentialGreedyRecommender(acquisition_function_cls='EI') + + print("Collecting initial observations") + campaign_init = Campaign(searchspace, objective, recommender_init) + random_params = campaign_init.recommend(NUM_INIT_OBS) + + y_init = schweffer.f(random_params.to_numpy()) + + random_params.insert(N_DIMS_SCHWEF, 'schwefel', y_init) + + optimization_campaign = Campaign(searchspace, objective, recommender_main) + optimization_campaign.add_measurements(random_params) + + print('Beginning optimization campaign') + for i in tqdm(range(NUM_ITERATIONS)): + reccs = optimization_campaign.recommend(ITERATION_BATCH_SIZE) + + y_vals = schweffer.f(reccs.to_numpy()) + + reccs.insert(N_DIMS_SCHWEF, 'schwefel', y_vals) + + optimization_campaign.add_measurements(reccs) + + return optimization_campaign + + + +def iteration_noise_grid_search(iterations_list, noise_list, NUM_INIT_OBS, N_DIMS_SCHWEF, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE = (-50, 50)): + """ + Utility to run a parameter grid experiment varying noise level and number of BO iterations. Runs full grid in serial. + Params: + ------- + iteraitons_list: list of ints - number of BO iterations to run + noise_list - list of floats - noise values to run + NUM_INIT_JOBS - int + N_DIMS_SCWEF - int + ITERATION_BATCH_SIZE - int + + returns: + --------- + iteration_results: an abomination of dictionaries. Outer level: results keyed by number of iterations; next layer: results keyed by noise level. Values are BayBE campaign objects of completed campaign + """ + iteration_results = {} + + for its in iterations_list: + noise_results = {} + for noise_level in noise_list: + opt_campaign = run_optimization_campaign(its, NUM_INIT_OBS, N_DIMS_SCHWEF, noise_level, ITERATION_BATCH_SIZE, SCHWEFEL_RANGE=SCHWEFEL_RANGE) + noise_results[str(noise_level)] = opt_campaign + iteration_results[str(its)] = noise_results + + return iteration_results + +def process_grid_searh_results(grid_search_results): + """ + Process results from iteration_noise_grid_search function to extract a performance matrix of best result for each campaign + + Params: + -------- + grid_search_results: dict of dicts of BayBE campaigns + + Returns: + ------- + n_its - list - iteration numbers used + n_noise - list - noise values used + performance_matrix: matrix of best observed values (min schwefel val) for each campaign from grid search, arranged with iteration varying on axis 0 and noise on axis 1 + """ + + + n_its = len(grid_search_results) + n_noise = len(grid_search_results[list(grid_search_results.keys())[0]]) + + performance_matrix = np.zeros((n_its, n_noise)) + + + + # fill out performance matrix + iteration_vals = [] + noise_vals = [] + + first_pass = True + for i, (its, entry) in enumerate(grid_search_results.items()): + iteration_vals.append(its) + for j, (noise, camp) in enumerate(entry.items()): + if first_pass: + noise_vals.append(noise) + best_result = camp.measurements['schwefel'].min() + # hack to flip matrix BO iterations upside down for plotting + performance_matrix[n_its - 1 - i, j] = best_result + first_pass = False + + iteration_vals = iteration_vals[::-1] + + return iteration_vals, noise_vals, performance_matrix + diff --git a/src/baybe_utils/run_experiment_baybe.py b/src/baybe_utils/run_experiment_baybe.py new file mode 100644 index 0000000..2355137 --- /dev/null +++ b/src/baybe_utils/run_experiment_baybe.py @@ -0,0 +1,159 @@ +# %% +import matplotlib.pyplot as plt +import numpy as np +import torch + +from botorch.models.gp_regression import ( + SingleTaskGP, +) +from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood +from botorch.fit import fit_gpytorch_model +from botorch.models.transforms.outcome import Standardize + +from botorch.optim.optimize import optimize_acqf +from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement +from botorch.sampling.normal import SobolQMCNormalSampler +from botorch.utils.transforms import normalize, unnormalize +import os +import gc + + + +from baybe.targets import NumericalTarget +from baybe.objective import Objective +from baybe.parameters import ( + NumericalContinuousParameter +) + +from baybe.recommenders import ( + SequentialGreedyRecommender, + RandomRecommender +) + +from baybe.searchspace import SearchSpace +from baybe import Campaign +from baybe import simulation + +tkwargs = { + "dtype": torch.double, + "device": torch.device("cuda" if torch.cuda.is_available() else "cpu"), +} +SMOKE_TEST = os.environ.get("SMOKE_TEST") +# SMOKE_TEST = True +print("SMOKE_TEST", SMOKE_TEST) +NUM_RESTARTS = 10 if not SMOKE_TEST else 2 +RAW_SAMPLES = 512 if not SMOKE_TEST else 4 +MC_SAMPLES = 128 if not SMOKE_TEST else 16 +batch_size = 1 + + + +# %% +from botorch.utils.sampling import draw_sobol_samples +from src.schwefel import SchwefelProblem +from time import time + +def run_experiment(n_init, noise_level, budget, seed, noise_bool, bounds, fp): + """ + Run a bayesian optimization campaign on the 2-dimensional + schwefel function using the specified parameters. Uses BayBE with the + SequentialGreedyRecommender with Expected improvement acquisition function. + + :param n_init: Number of randomly selected initial trials to run + :type n_init: int + :param noise_level: Variance of Gaussian noise to add to scwhefel function values + :type noise_level: float + :param budget: Number of optimization trials to run (in addition to n_init) + :type budget: int + :param seed: Random seed + :type seed: int + :param noise_bool: Artifact from Botorch implementation, does nothing + :type noise_bool: bool + :return train_X: Scwhefel X values evaluated + :type train_X: Tensor + :return train_Y: The Schwefel function values associated with train_X points, including noise + :type train_Y: Tensor + :return train_Y_real: The 'true' noise-free Y values + :type train_Y_real: Tensor + """ + + N_DIMS_SCHWEF = 2 + ITERATION_BATCH_SIZE = 1 + + torch.manual_seed(seed) + np.random.seed(seed) + + problem = SchwefelProblem(n_var=N_DIMS_SCHWEF, noise_level=noise_level, range = bounds) + + #bounds = torch.tensor(problem.bounds, **tkwargs) + + target = NumericalTarget(name = 'schwefel', mode = "MIN") + parameters = [ + NumericalContinuousParameter(f'schwefel{i+1}', bounds = bounds) for i in range(N_DIMS_SCHWEF) + ] + + objective = Objective(mode = "SINGLE", targets = [target]) + searchspace = SearchSpace.from_product(parameters) + + + recommender_init = RandomRecommender() + recommender_main = SequentialGreedyRecommender(acquisition_function_cls='EI') + + + print("Collecting initial observations") + campaign_init = Campaign(searchspace, objective, recommender_init) + random_params = campaign_init.recommend(n_init) + + y_init = problem.y(random_params.to_numpy()) + y_init_real = problem.f(random_params.to_numpy()) + + random_params.insert(N_DIMS_SCHWEF, 'schwefel', y_init) + + optimization_campaign = Campaign(searchspace, objective, recommender_main) + optimization_campaign.add_measurements(random_params) + + y_real = [] + print('Beginning optimization campaign') + for i in range(budget): + reccs = optimization_campaign.recommend(ITERATION_BATCH_SIZE) + + y_vals = problem.y(reccs.to_numpy()) + y_real.append(problem.f(reccs.to_numpy())) + + reccs.insert(N_DIMS_SCHWEF, 'schwefel', y_vals) + + optimization_campaign.add_measurements(reccs) + + measurements = optimization_campaign.measurements + + # get X and noisy y values + x_names = [f'schwefel{i+1}' for i in range(N_DIMS_SCHWEF)] + x_train = measurements[x_names].to_numpy() + y_train = measurements['schwefel'].to_numpy() + + # compile noise-free ground truth vals + y_real_complete = np.zeros(len(y_init_real) + len(y_real)) + + for i, val in enumerate(y_init_real): + y_real_complete[i] = val + + for i, val in enumerate(y_real): + y_real_complete[i+len(y_init_real)] = val + + + + train_X = torch.from_numpy(x_train) + train_Y = torch.from_numpy(y_train) + train_Y_real = torch.from_numpy(y_real_complete) + + os.makedirs(fp, exist_ok=True) + fname = f"{fp}/{problem.__class__.__name__[:5]}_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt" + torch.save((train_X, train_Y, train_Y_real, None), fname) + + return train_X, train_Y, train_Y_real, None + + + +if __name__ == "__main__": + run_experiment(5, 0.1, 5, 0, True) + run_experiment(5, 0.1, 5, 0, False) \ No newline at end of file diff --git a/src/baybe_utils/run_experiment_random_baybe.py b/src/baybe_utils/run_experiment_random_baybe.py new file mode 100644 index 0000000..706a842 --- /dev/null +++ b/src/baybe_utils/run_experiment_random_baybe.py @@ -0,0 +1,160 @@ +# %% +import matplotlib.pyplot as plt +import numpy as np +import torch + +from botorch.models.gp_regression import ( + SingleTaskGP, +) +from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood +from botorch.fit import fit_gpytorch_model +from botorch.models.transforms.outcome import Standardize + +from botorch.optim.optimize import optimize_acqf +from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement +from botorch.sampling.normal import SobolQMCNormalSampler +from botorch.utils.transforms import normalize, unnormalize +import os +import gc + + + +from baybe.targets import NumericalTarget +from baybe.objective import Objective +from baybe.parameters import ( + NumericalContinuousParameter +) + +from baybe.recommenders import ( + SequentialGreedyRecommender, + RandomRecommender +) + +from baybe.searchspace import SearchSpace +from baybe import Campaign +from baybe import simulation + +tkwargs = { + "dtype": torch.double, + "device": torch.device("cuda" if torch.cuda.is_available() else "cpu"), +} +SMOKE_TEST = os.environ.get("SMOKE_TEST") +# SMOKE_TEST = True +print("SMOKE_TEST", SMOKE_TEST) +NUM_RESTARTS = 10 if not SMOKE_TEST else 2 +RAW_SAMPLES = 512 if not SMOKE_TEST else 4 +MC_SAMPLES = 128 if not SMOKE_TEST else 16 +batch_size = 1 + + + +# %% +from botorch.utils.sampling import draw_sobol_samples +from src.schwefel import SchwefelProblem +from time import time + +def run_experiment(n_init, noise_level, budget, seed, noise_bool, bounds, fp): + """ + Run a bayesian optimization campaign on the 2-dimensional + schwefel function using the specified parameters. Uses BayBE with the + SequentialGreedyRecommender with Expected improvement acquisition function. + + :param n_init: Number of randomly selected initial trials to run + :type n_init: int + :param noise_level: Variance of Gaussian noise to add to scwhefel function values + :type noise_level: float + :param budget: Number of optimization trials to run (in addition to n_init) + :type budget: int + :param seed: Random seed + :type seed: int + :param noise_bool: Artifact from Botorch implementation, does nothing + :type noise_bool: bool + :return train_X: Scwhefel X values evaluated + :type train_X: Tensor + :return train_Y: The Schwefel function values associated with train_X points, including noise + :type train_Y: Tensor + :return train_Y_real: The 'true' noise-free Y values + :type train_Y_real: Tensor + """ + + N_DIMS_SCHWEF = 2 + ITERATION_BATCH_SIZE = 1 + + + torch.manual_seed(seed) + np.random.seed(seed) + + problem = SchwefelProblem(n_var=N_DIMS_SCHWEF, noise_level=noise_level, range = bounds) + + #bounds = torch.tensor(problem.bounds, **tkwargs) + + target = NumericalTarget(name = 'schwefel', mode = "MIN") + parameters = [ + NumericalContinuousParameter(f'schwefel{i+1}', bounds = bounds) for i in range(N_DIMS_SCHWEF) + ] + + objective = Objective(mode = "SINGLE", targets = [target]) + searchspace = SearchSpace.from_product(parameters) + + + recommender_init = RandomRecommender() + #recommender_main = SequentialGreedyRecommender(acquisition_function_cls='EI') + + + print("Collecting random observations observations") + campaign_init = Campaign(searchspace, objective, recommender_init) + random_params = campaign_init.recommend(n_init + budget) + + y_init = problem.y(random_params.to_numpy()) + y_init_real = problem.f(random_params.to_numpy()) + + random_params.insert(N_DIMS_SCHWEF, 'schwefel', y_init) + + #optimization_campaign = Campaign(searchspace, objective, recommender_main) + campaign_init.add_measurements(random_params) + + #y_real = [] + #print('Beginning optimization campaign') + #for i in range(budget): + # reccs = optimization_campaign.recommend(ITERATION_BATCH_SIZE) + # + # y_vals = problem.y(reccs.to_numpy()) + # y_real.append(problem.f(reccs.to_numpy())) + # + # reccs.insert(N_DIMS_SCHWEF, 'schwefel', y_vals) + # + # optimization_campaign.add_measurements(reccs) + + measurements = campaign_init.measurements + + # get X and noisy y values + x_names = [f'schwefel{i+1}' for i in range(N_DIMS_SCHWEF)] + x_train = measurements[x_names].to_numpy() + y_train = measurements['schwefel'].to_numpy() + + # compile noise-free ground truth vals + y_real_complete = y_init_real + + #for i, val in enumerate(y_init_real): + # y_real_complete[i] = val# + + #for i, val in enumerate(y_real): + # y_real_complete[i+len(y_init_real)] = val + + + + train_X = torch.from_numpy(x_train) + train_Y = torch.from_numpy(y_train) + train_Y_real = torch.from_numpy(y_real_complete) + + os.makedirs(fp, exist_ok=True) + fname = f"{fp}/{problem.__class__.__name__[:5]}_n_init_{n_init}_noiselvl_{noise_level}_budget_{budget}_seed_{seed}_noise_{noise_bool}.pt" + torch.save((train_X, train_Y, train_Y_real, None), fname) + + return train_X, train_Y, train_Y_real, None + + + +if __name__ == "__main__": + run_experiment(5, 0.1, 5, 0, True) + run_experiment(5, 0.1, 5, 0, False) \ No newline at end of file diff --git a/src/baybe_utils/run_grid_experiments_baybe.py b/src/baybe_utils/run_grid_experiments_baybe.py new file mode 100644 index 0000000..60c42fc --- /dev/null +++ b/src/baybe_utils/run_grid_experiments_baybe.py @@ -0,0 +1,60 @@ +#import ray +import argparse +from time import time, sleep +from run_experiment_baybe import run_experiment +from datetime import datetime +import gc + +MAX_NUM_PENDING_TASKS = 12 + + +#@ray.remote +def worker(n_init, noise_level, budget, seed, noise_bool, bounds, fp): + + try: + run_experiment(n_init, noise_level, budget, seed, noise_bool,bounds, fp) + # saved file looks like this: results\Schwe_n_init_6_noiselvl_0_budget_0_seed_2_noise_False.pt + except Exception as e: + print(e) + print(f'problem {n_init} noise {noise_level} budget {budget} seed {seed} failed') + return 1 + + return 0 + +def run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget, bounds, fp): + + # ray.init(local_mode=True) + #ray.init(ignore_reinit_error=True) + start_time = time() + tasks = [] + + for seed in seeds: + for n_init in n_inits: + for noise_level in noise_levels: + for noise_bool in noise_bools: + #if len(tasks) > MAX_NUM_PENDING_TASKS: + # completed_tasks, tasks = ray.wait(tasks, num_returns=1) + # ray.get(completed_tasks[0]) + + #sleep(1) + task = worker(n_init, noise_level, budget, seed, noise_bool, bounds, fp) + tasks.append(task) + print(f'Started problem {n_init} noise {noise_level} budget {budget} seed {seed}, time: {time() - start_time:.2f}s') + #gc.collect() + + # while len(tasks) > 0: + # completed_tasks, tasks = ray.wait(tasks, num_returns=1) + # print(ray.get(completed_tasks[0])) + + + print('all experiments done, time: %.2fs' % (time() - start_time)) + +if __name__ == "__main__": + + seeds = [0] + n_inits = [2, 4, 6 ,8, 10] + noise_levels = [0, 0.01, 0.1, 0.5] + # budgets = [10, 20, 50] + noise_bools = [True, False] + budget = 10 + run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget) diff --git a/src/baybe_utils/run_grid_experiments_baybe_random.py b/src/baybe_utils/run_grid_experiments_baybe_random.py new file mode 100644 index 0000000..69fd07c --- /dev/null +++ b/src/baybe_utils/run_grid_experiments_baybe_random.py @@ -0,0 +1,60 @@ +#import ray +import argparse +from time import time, sleep +from run_experiment_random_baybe import run_experiment +from datetime import datetime +import gc + +MAX_NUM_PENDING_TASKS = 12 + + +#@ray.remote +def worker(n_init, noise_level, budget, seed, noise_bool, bounds, fp): + + try: + run_experiment(n_init, noise_level, budget, seed, noise_bool, bounds, fp) + # saved file looks like this: results\Schwe_n_init_6_noiselvl_0_budget_0_seed_2_noise_False.pt + except Exception as e: + print(e) + print(f'problem {n_init} noise {noise_level} budget {budget} seed {seed} failed') + return 1 + + return 0 + +def run_grid_experiments_random(seeds, n_inits, noise_levels, noise_bools, budget, bounds, fp): + + # ray.init(local_mode=True) + #ray.init(ignore_reinit_error=True) + start_time = time() + tasks = [] + + for seed in seeds: + for n_init in n_inits: + for noise_level in noise_levels: + for noise_bool in noise_bools: + #if len(tasks) > MAX_NUM_PENDING_TASKS: + # completed_tasks, tasks = ray.wait(tasks, num_returns=1) + # ray.get(completed_tasks[0]) + + #sleep(1) + task = worker(n_init, noise_level, budget, seed, noise_bool, bounds, fp) + tasks.append(task) + print(f'Started problem {n_init} noise {noise_level} budget {budget} seed {seed}, time: {time() - start_time:.2f}s') + #gc.collect() + + # while len(tasks) > 0: + # completed_tasks, tasks = ray.wait(tasks, num_returns=1) + # print(ray.get(completed_tasks[0])) + + + print('all experiments done, time: %.2fs' % (time() - start_time)) + +if __name__ == "__main__": + + seeds = [0] + n_inits = [2, 4, 6 ,8, 10] + noise_levels = [0, 0.01, 0.1, 0.5] + # budgets = [10, 20, 50] + noise_bools = [True, False] + budget = 10 + run_grid_experiments(seeds, n_inits, noise_levels, noise_bools, budget) diff --git a/src/schwefel.py b/src/schwefel.py new file mode 100644 index 0000000..5f7a90c --- /dev/null +++ b/src/schwefel.py @@ -0,0 +1,34 @@ +import numpy as np + +class SchwefelProblem: + def __init__(self, n_var=1, noise_level=0.01, range = (-50, 50)): + """ + y = f(x) + eps + """ + self.noise_level = noise_level + self.n_var = n_var # Number of variables/dimensions + self.bounds = np.array([[range[0]] * self.n_var, [range[1]] * self.n_var]) + + def _schwefel_individual(self, x): + return x * np.sin(np.sqrt(np.abs(x))) + + def f(self, x): + return 418.9829 * self.n_var - np.sum(self._schwefel_individual(x), axis=1) + + def eps(self, x): + # Assuming the noise is independent of x for simplicity + return np.random.normal(0, self.noise_level, x.shape[0]) + + def y(self, x): + f = self.f(x) + eps = self.eps(x) + return f + eps + +# Test code if this file is the main program being run +if __name__ == "__main__": + # Create a SchwefelProblem instance with 3 variables/dimensions + schwefel = SchwefelProblem(n_var=3, noise_level=1.) + x_test = np.array([[420, 420, 420], [420, 420, 420]]) # Example input vector + print("Objective function value (f):", schwefel.f(x_test)) + print("Noisy objective function value (y):", schwefel.y(x_test)) + diff --git a/src/seed_data.csv b/src/seed_data.csv new file mode 100644 index 0000000..4ca1035 --- /dev/null +++ b/src/seed_data.csv @@ -0,0 +1,4 @@ +schwefel1,Yield +356.99134680215377,403.0454233719017 +-309.0047300290056,123.75848185395103 +-55.674007109553486,470.42364275539364 diff --git a/src/visualization.py b/src/visualization.py new file mode 100644 index 0000000..3b5cf48 --- /dev/null +++ b/src/visualization.py @@ -0,0 +1,25 @@ +import seaborn as sn +import pandas as pd + +def grid_search_heatmap(iterations_list, noise_list, performance_matrix): + """ + plot a heatmap + + Params: + ------- + iterations_list: list of number of iterations used + noise list: list of noise values used + performance matrix: np array of dims len(iterations_list) x len(noise_list) with smallest noise, smallest iterations in lower left corner ('origin') + + returns: + ------ + matplotlib ax object + """ + + df_heatmap = pd.DataFrame(performance_matrix, index = [str(its) for its in iterations_list], columns = [str(noise) for noise in noise_list]) + + ax = sn.heatmap(df_heatmap, annot=True, fmt = '.3g', cmap = 'crest') + ax.set_xlabel('Noise level') + ax.set_ylabel('Number of initial samples') + + return ax \ No newline at end of file diff --git a/trial_notebooks/botorch_version_grid_serach_try.ipynb b/trial_notebooks/botorch_version_grid_serach_try.ipynb new file mode 100644 index 0000000..5292950 --- /dev/null +++ b/trial_notebooks/botorch_version_grid_serach_try.ipynb @@ -0,0 +1,7063 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "a3263ed0", + "metadata": {}, + "outputs": [], + "source": [ + "# ! pip install botorch gpytorch\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8a718b29", + "metadata": {}, + "outputs": [], + "source": [ + "import numpyro\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d8b3bd8d", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def schwefel_1d(x):\n", + "\n", + " return 418.9829 - x * np.sin(np.sqrt(np.abs(x)))\n", + "\n", + "def schwefel_nd(args):\n", + " output = 0\n", + " \n", + " for dim in range(args):\n", + " output += schwefel_1d(args[dim])\n", + "\n", + "def add_gaussian_noise(signal, noise_level):\n", + "\n", + " return signal + np.random.normal(0, noise_level, 1)[0]\n", + "\n", + "def schwefel_1d_with_noise(x, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_1d(x)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "def schwefel_nd_with_noise(args, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_nd(args)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "c4f9bcae", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def create_data(seed, n_init, noise_level):\n", + "\n", + " np.random.seed(seed)\n", + " X_bounds = np.array([-500, 500])\n", + " X = np.random.uniform(X_bounds[0], X_bounds[1], size=( n_init,))\n", + " X = np.append(X, X_bounds)\n", + " X = np.sort(X)\n", + " y = schwefel_1d_with_noise(X, noise_level = noise_level)\n", + "\n", + " X_unmeasured = np.linspace(X_bounds[0], X_bounds[1], 200)\n", + " ground_truth = schwefel_1d_with_noise(X_unmeasured, noise_level = 0)\n", + " \n", + " return X.reshape(-1,1), y.reshape(-1,1), X_unmeasured.reshape(-1,1), ground_truth.reshape(-1,1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "6500496f", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "from botorch.models import SingleTaskGP\n", + "from botorch.fit import fit_gpytorch_model\n", + "from gpytorch.mlls import ExactMarginalLogLikelihood\n", + "from botorch.acquisition import ExpectedImprovement\n", + "from gpytorch.distributions import MultivariateNormal\n", + "import gpytorch\n", + "\n", + "def step(X_measured, y_measured, X_unmeasured):\n", + " # Convert data to tensors\n", + " \n", + " \n", + " # Initialize GP model\n", + "# print(X_measured.shape, y_measured.unsqueeze(-1).shape)\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + " \n", + " # Fit GP model\n", + " mll = ExactMarginalLogLikelihood(gp_model.likelihood, gp_model)\n", + " fit_gpytorch_model(mll)\n", + " \n", + " # Predict on unmeasured data\n", + " gp_model.eval()\n", + " with torch.no_grad(), gpytorch.settings.fast_pred_var():\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + " # For visualization or further processing, you can obtain mean and variance\n", + " y_pred = posterior.mean\n", + " y_sampled = posterior.variance.sqrt()\n", + " \n", + " # Compute acquisition function (Expected Improvement here)\n", + " EI = ExpectedImprovement(model=gp_model, best_f=y_measured.max(), maximize=True)\n", + " acq_values = EI(X_unmeasured.unsqueeze(-2))\n", + " \n", + " return acq_values, (y_pred, y_sampled)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "2653595b", + "metadata": {}, + "outputs": [], + "source": [ + "# import numpy as np\n", + "\n", + "# def run_gp(num_steps, X, y, X_unmeasured, ground_truth, schwefel_1d_with_noise, noise_level):\n", + "# X = torch.tensor(X)\n", + "# y = torch.tensor(y)\n", + "# X_unmeasured = torch.tensor(X_unmeasured)\n", + "# ground_truth = torch.tensor(ground_truth)\n", + " \n", + "# for e in range(num_steps):\n", + "# print(f\"\\nStep {e+1}/{num_steps}\")\n", + "# # Compute acquisition function and get predictions\n", + "# acq, (y_pred, y_sampled) = step(X, y, X_unmeasured)\n", + " \n", + "# # Get the next point to evaluate\n", + "# idx = acq.argmax() # Use argmax since EI maximizes the acquisition\n", + "# next_point = X_unmeasured[idx]\n", + " \n", + "# # Measure the point\n", + "# next_point_value = schwefel_1d_with_noise(next_point.numpy(), noise_level)\n", + " \n", + "# # Update measured data\n", + "# X = torch.cat([X, next_point.unsqueeze(0)], dim=0)\n", + "# y = torch.cat([y, torch.tensor([next_point_value], dtype=torch.float)], dim=0)\n", + " \n", + "# # Calculate metrics after the loop\n", + "# mse = torch.mean((y_pred - ground_truth) ** 2).item()\n", + "# average_uncertainty = torch.mean(y_sampled).item()\n", + " \n", + "# return mse, average_uncertainty\n", + "import torch\n", + "import numpy as np\n", + "\n", + "def standardize_data(data):\n", + " \"\"\"Standardize data to have mean=0 and std=1.\"\"\"\n", + " mean = torch.mean(data, dim=0, keepdim=True)\n", + " std = torch.std(data, dim=0, keepdim=True)\n", + " return (data - mean) / std\n", + "\n", + "\n", + "def run_gp(num_steps, X, y, X_unmeasured, ground_truth, schwefel_1d_with_noise, noise_level):\n", + " # Convert to tensors and standardize\n", + " X = torch.tensor(X, dtype=torch.float32)\n", + " y = torch.tensor(y, dtype=torch.float32)\n", + " X_unmeasured = torch.tensor(X_unmeasured, dtype=torch.float32)\n", + " ground_truth = torch.tensor(ground_truth, dtype=torch.float32)\n", + " \n", + " # Standardize features and target\n", + " X = standardize_data(X)\n", + " X_unmeasured = standardize_data(X_unmeasured)\n", + " y= standardize_data(y)\n", + " ground_truth = standardize_data(ground_truth)\n", + " for e in range(num_steps):\n", + " print(f\"\\nStep {e+1}/{num_steps}\")\n", + " # Compute acquisition function and get predictions\n", + " acq, (y_pred, y_sampled) = step(X, y, X_unmeasured)\n", + " \n", + " # Rest of your loop...\n", + "\n", + " # Calculate metrics after the loop\n", + " mse = torch.mean((y_pred - ground_truth) ** 2).item()\n", + " average_uncertainty = torch.mean(y_sampled).item()\n", + " \n", + " return mse, average_uncertainty\n" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "6205bcb5", + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "import pandas as pd\n", + "\n", + "def grid_search(seeds, n_inits, noise_levels):\n", + " results = [] # Initialize an empty list to store results\n", + "\n", + " # Iterate over all combinations of seeds, n_inits, and noise_levels\n", + " for seed, n_init, noise_level in itertools.product(seeds, n_inits, noise_levels):\n", + " print(f\"Seed: {seed}, n_init: {n_init}, Noise Level: {noise_level}\")\n", + " \n", + " # Create data for the current combination\n", + " X, y, X_unmeasured, ground_truth = create_data(seed, n_init, noise_level)\n", + " print(X.shape) # Should be [n, d] where d is the number of dimensions/features\n", + " print(y.shape) \n", + " # Run Gaussian Process (GP) optimization/modeling for the current combination\n", + " mse, average_uncertainty = run_gp(5, X, y, X_unmeasured, ground_truth, schwefel_1d_with_noise, noise_level)\n", + " print(mse)\n", + " # Collect the results\n", + " results.append({\n", + " \"Seed\": seed,\n", + " \"n_init\": n_init,\n", + " \"Noise_Level\": noise_level,\n", + " \"MSE\": mse,\n", + " \"Average_Uncertainty\": average_uncertainty\n", + " })\n", + "\n", + " # Convert the results to a pandas DataFrame for easy analysis and reporting\n", + " results_df = pd.DataFrame(results)\n", + " \n", + " return results_df\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe8f5ddb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "01f42404", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Seed: 1, n_init: 5, Noise Level: 0\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4834703207015991\n", + "Seed: 1, n_init: 5, Noise Level: 0.01\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.471142292022705\n", + "Seed: 1, n_init: 5, Noise Level: 0.1\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4834703207015991\n", + "Seed: 1, n_init: 5, Noise Level: 0.5\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.490060567855835\n", + "Seed: 1, n_init: 10, Noise Level: 0\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4958250522613525\n", + "Seed: 1, n_init: 10, Noise Level: 0.01\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4987499713897705\n", + "Seed: 1, n_init: 10, Noise Level: 0.1\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4684855937957764\n", + "Seed: 1, n_init: 10, Noise Level: 0.5\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.4980649948120117\n", + "Seed: 1, n_init: 15, Noise Level: 0\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.0959746837615967\n", + "Seed: 1, n_init: 15, Noise Level: 0.01\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.8582366704940796\n", + "Seed: 1, n_init: 15, Noise Level: 0.1\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/gpytorch/distributions/multivariate_normal.py:319: NumericalWarning: Negative variance values detected. This is likely due to numerical instabilities. Rounding negative variances up to 1e-06.\n", + " warnings.warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/optim/fit.py:102: OptimizationWarning: `scipy_minimize` terminated with status 3, displaying original message from `scipy.optimize.minimize`: ABNORMAL_TERMINATION_IN_LNSRCH\n", + " warn(\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.8659234046936035\n", + "Seed: 1, n_init: 15, Noise Level: 0.5\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.850039005279541\n", + "Seed: 1, n_init: 20, Noise Level: 0\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.9220656156539917\n", + "Seed: 1, n_init: 20, Noise Level: 0.01\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n", + "1.7824245691299438\n", + "Seed: 1, n_init: 20, Noise Level: 0.1\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.952939510345459\n", + "Seed: 1, n_init: 20, Noise Level: 0.5\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.9188467264175415\n", + "Seed: 1, n_init: 25, Noise Level: 0\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.348071575164795\n", + "Seed: 1, n_init: 25, Noise Level: 0.01\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.3391432762145996\n", + "Seed: 1, n_init: 25, Noise Level: 0.1\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.3390276432037354\n", + "Seed: 1, n_init: 25, Noise Level: 0.5\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.3398637771606445\n", + "Seed: 2, n_init: 5, Noise Level: 0\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0889959335327148\n", + "Seed: 2, n_init: 5, Noise Level: 0.01\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0889965295791626\n", + "Seed: 2, n_init: 5, Noise Level: 0.1\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.0889968872070312\n", + "Seed: 2, n_init: 5, Noise Level: 0.5\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0889971256256104\n", + "Seed: 2, n_init: 10, Noise Level: 0\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.6680113077163696\n", + "Seed: 2, n_init: 10, Noise Level: 0.01\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.6696722507476807\n", + "Seed: 2, n_init: 10, Noise Level: 0.1\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.6700429916381836\n", + "Seed: 2, n_init: 10, Noise Level: 0.5\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.6719379425048828\n", + "Seed: 2, n_init: 15, Noise Level: 0\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.7897077798843384\n", + "Seed: 2, n_init: 15, Noise Level: 0.01\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.7927340269088745\n", + "Seed: 2, n_init: 15, Noise Level: 0.1\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.7925740480422974\n", + "Seed: 2, n_init: 15, Noise Level: 0.5\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.7896960973739624\n", + "Seed: 2, n_init: 20, Noise Level: 0\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n", + "2.1042706966400146\n", + "Seed: 2, n_init: 20, Noise Level: 0.01\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.103878974914551\n", + "Seed: 2, n_init: 20, Noise Level: 0.1\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n", + "2.104372262954712\n", + "Seed: 2, n_init: 20, Noise Level: 0.5\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.103878974914551\n", + "Seed: 2, n_init: 25, Noise Level: 0\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.1595683097839355\n", + "Seed: 2, n_init: 25, Noise Level: 0.01\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.1565327644348145\n", + "Seed: 2, n_init: 25, Noise Level: 0.1\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.161508798599243\n", + "Seed: 2, n_init: 25, Noise Level: 0.5\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.159533977508545\n", + "Seed: 3, n_init: 5, Noise Level: 0\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.6003402471542358\n", + "Seed: 3, n_init: 5, Noise Level: 0.01\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.60093355178833\n", + "Seed: 3, n_init: 5, Noise Level: 0.1\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.6003402471542358\n", + "Seed: 3, n_init: 5, Noise Level: 0.5\n", + "(7, 1)\n", + "(7, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.6003451347351074\n", + "Seed: 3, n_init: 10, Noise Level: 0\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.451256275177002\n", + "Seed: 3, n_init: 10, Noise Level: 0.01\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.4498707056045532\n", + "Seed: 3, n_init: 10, Noise Level: 0.1\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.4499812126159668\n", + "Seed: 3, n_init: 10, Noise Level: 0.5\n", + "(12, 1)\n", + "(12, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.449458360671997\n", + "Seed: 3, n_init: 15, Noise Level: 0\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.7906279563903809\n", + "Seed: 3, n_init: 15, Noise Level: 0.01\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "1.7892225980758667\n", + "Seed: 3, n_init: 15, Noise Level: 0.1\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.7892377376556396\n", + "Seed: 3, n_init: 15, Noise Level: 0.5\n", + "(17, 1)\n", + "(17, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.789238691329956\n", + "Seed: 3, n_init: 20, Noise Level: 0\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.0686287879943848\n", + "Seed: 3, n_init: 20, Noise Level: 0.01\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.053746223449707\n", + "Seed: 3, n_init: 20, Noise Level: 0.1\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0540030002593994\n", + "Seed: 3, n_init: 20, Noise Level: 0.5\n", + "(22, 1)\n", + "(22, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0544493198394775\n", + "Seed: 3, n_init: 25, Noise Level: 0\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.0695652961730957\n", + "Seed: 3, n_init: 25, Noise Level: 0.01\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 5/5\n", + "2.0689313411712646\n", + "Seed: 3, n_init: 25, Noise Level: 0.1\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0327603816986084\n", + "Seed: 3, n_init: 25, Noise Level: 0.5\n", + "(27, 1)\n", + "(27, 1)\n", + "\n", + "Step 1/5\n", + "\n", + "Step 2/5\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n", + "/tmp/ipykernel_1292286/1166517645.py:15: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " gp_model = SingleTaskGP(torch.tensor(X_measured), torch.tensor(y_measured))\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/gp_regression.py:161: UserWarning: The model inputs are of type torch.float32. It is strongly recommended to use double precision in BoTorch, as this improves both precision and stability and can help avoid numerical errors. See https://github.com/pytorch/botorch/discussions/1444\n", + " self._validate_tensor_args(X=transformed_X, Y=train_Y, Yvar=train_Yvar)\n", + "/nfs/home/upratius/.conda/envs/gpax_hae/lib/python3.10/site-packages/botorch/models/utils/assorted.py:174: InputDataWarning: Input data is not contained to the unit cube. Please consider min-max scaling the input data.\n", + " warnings.warn(msg, InputDataWarning)\n", + "/tmp/ipykernel_1292286/1166517645.py:24: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " posterior = gp_model(torch.tensor(X_unmeasured))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Step 4/5\n", + "\n", + "Step 5/5\n", + "2.0699245929718018\n", + " Seed n_init Noise_Level MSE Average_Uncertainty\n", + "0 1 5 0.00 1.483470 0.533026\n", + "1 1 5 0.01 1.471142 0.559593\n", + "2 1 5 0.10 1.483470 0.533026\n", + "3 1 5 0.50 1.490061 0.552982\n", + "4 1 10 0.00 1.495825 0.691920\n", + "5 1 10 0.01 1.498750 0.697778\n", + "6 1 10 0.10 1.468486 0.678819\n", + "7 1 10 0.50 1.498065 0.701203\n", + "8 1 15 0.00 3.095975 0.546266\n", + "9 1 15 0.01 1.858237 0.474034\n", + "10 1 15 0.10 1.865923 0.469591\n", + "11 1 15 0.50 1.850039 0.471573\n", + "12 1 20 0.00 1.922066 0.307850\n", + "13 1 20 0.01 1.782425 0.365753\n", + "14 1 20 0.10 1.952940 0.362849\n", + "15 1 20 0.50 1.918847 0.308808\n", + "16 1 25 0.00 2.348072 0.225434\n", + "17 1 25 0.01 2.339143 0.226166\n", + "18 1 25 0.10 2.339028 0.225726\n", + "19 1 25 0.50 2.339864 0.225640\n", + "20 2 5 0.00 1.088996 0.848628\n", + "21 2 5 0.01 1.088997 0.848630\n", + "22 2 5 0.10 1.088997 0.848629\n", + "23 2 5 0.50 1.088997 0.848631\n", + "24 2 10 0.00 1.668011 0.796792\n", + "25 2 10 0.01 1.669672 0.797943\n", + "26 2 10 0.10 1.670043 0.798097\n", + "27 2 10 0.50 1.671938 0.800202\n", + "28 2 15 0.00 1.789708 0.501271\n", + "29 2 15 0.01 1.792734 0.501560\n", + "30 2 15 0.10 1.792574 0.501509\n", + "31 2 15 0.50 1.789696 0.501207\n", + "32 2 20 0.00 2.104271 0.313216\n", + "33 2 20 0.01 2.103879 0.313138\n", + "34 2 20 0.10 2.104372 0.313260\n", + "35 2 20 0.50 2.103879 0.313138\n", + "36 2 25 0.00 2.159568 0.236000\n", + "37 2 25 0.01 2.156533 0.235369\n", + "38 2 25 0.10 2.161509 0.236499\n", + "39 2 25 0.50 2.159534 0.236013\n", + "40 3 5 0.00 1.600340 0.669741\n", + "41 3 5 0.01 1.600934 0.669584\n", + "42 3 5 0.10 1.600340 0.669741\n", + "43 3 5 0.50 1.600345 0.669737\n", + "44 3 10 0.00 1.451256 0.629858\n", + "45 3 10 0.01 1.449871 0.631171\n", + "46 3 10 0.10 1.449981 0.631360\n", + "47 3 10 0.50 1.449458 0.631218\n", + "48 3 15 0.00 1.790628 0.425344\n", + "49 3 15 0.01 1.789223 0.425260\n", + "50 3 15 0.10 1.789238 0.425436\n", + "51 3 15 0.50 1.789239 0.425482\n", + "52 3 20 0.00 2.068629 0.345784\n", + "53 3 20 0.01 2.053746 0.344664\n", + "54 3 20 0.10 2.054003 0.344776\n", + "55 3 20 0.50 2.054449 0.344390\n", + "56 3 25 0.00 2.069565 0.221183\n", + "57 3 25 0.01 2.068931 0.221628\n", + "58 3 25 0.10 2.032760 0.257487\n", + "59 3 25 0.50 2.069925 0.221043\n" + ] + } + ], + "source": [ + "# Define your parameter space\n", + "seeds = [1, 2, 3]\n", + "n_inits = [5, 10, 15, 20, 25]\n", + "noise_levels = [0, 0.01, 0.1, 0.5]\n", + "\n", + "# Assuming create_data and run_gp functions are defined elsewhere\n", + "\n", + "# Run the grid search\n", + "results_df = grid_search(seeds, n_inits, noise_levels)\n", + "\n", + "# Display the results DataFrame\n", + "print(results_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "44006b4d", + "metadata": {}, + "outputs": [], + "source": [ + "results_df.to_csv('grid_search_results_botorch_v3_normalized.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "af6ce5a2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Seedn_initNoise_LevelMSEAverage_Uncertainty
0150.001.4834700.533026
1150.011.4711420.559593
2150.101.4834700.533026
3150.501.4900610.552982
41100.001.4958250.691920
51100.011.4987500.697778
61100.101.4684860.678819
71100.501.4980650.701203
81150.003.0959750.546266
91150.011.8582370.474034
101150.101.8659230.469591
111150.501.8500390.471573
121200.001.9220660.307850
131200.011.7824250.365753
141200.101.9529400.362849
151200.501.9188470.308808
161250.002.3480720.225434
171250.012.3391430.226166
181250.102.3390280.225726
191250.502.3398640.225640
20250.001.0889960.848628
21250.011.0889970.848630
22250.101.0889970.848629
23250.501.0889970.848631
242100.001.6680110.796792
252100.011.6696720.797943
262100.101.6700430.798097
272100.501.6719380.800202
282150.001.7897080.501271
292150.011.7927340.501560
302150.101.7925740.501509
312150.501.7896960.501207
322200.002.1042710.313216
332200.012.1038790.313138
342200.102.1043720.313260
352200.502.1038790.313138
362250.002.1595680.236000
372250.012.1565330.235369
382250.102.1615090.236499
392250.502.1595340.236013
40350.001.6003400.669741
41350.011.6009340.669584
42350.101.6003400.669741
43350.501.6003450.669737
443100.001.4512560.629858
453100.011.4498710.631171
463100.101.4499810.631360
473100.501.4494580.631218
483150.001.7906280.425344
493150.011.7892230.425260
503150.101.7892380.425436
513150.501.7892390.425482
523200.002.0686290.345784
533200.012.0537460.344664
543200.102.0540030.344776
553200.502.0544490.344390
563250.002.0695650.221183
573250.012.0689310.221628
583250.102.0327600.257487
593250.502.0699250.221043
\n", + "
" + ], + "text/plain": [ + " Seed n_init Noise_Level MSE Average_Uncertainty\n", + "0 1 5 0.00 1.483470 0.533026\n", + "1 1 5 0.01 1.471142 0.559593\n", + "2 1 5 0.10 1.483470 0.533026\n", + "3 1 5 0.50 1.490061 0.552982\n", + "4 1 10 0.00 1.495825 0.691920\n", + "5 1 10 0.01 1.498750 0.697778\n", + "6 1 10 0.10 1.468486 0.678819\n", + "7 1 10 0.50 1.498065 0.701203\n", + "8 1 15 0.00 3.095975 0.546266\n", + "9 1 15 0.01 1.858237 0.474034\n", + "10 1 15 0.10 1.865923 0.469591\n", + "11 1 15 0.50 1.850039 0.471573\n", + "12 1 20 0.00 1.922066 0.307850\n", + "13 1 20 0.01 1.782425 0.365753\n", + "14 1 20 0.10 1.952940 0.362849\n", + "15 1 20 0.50 1.918847 0.308808\n", + "16 1 25 0.00 2.348072 0.225434\n", + "17 1 25 0.01 2.339143 0.226166\n", + "18 1 25 0.10 2.339028 0.225726\n", + "19 1 25 0.50 2.339864 0.225640\n", + "20 2 5 0.00 1.088996 0.848628\n", + "21 2 5 0.01 1.088997 0.848630\n", + "22 2 5 0.10 1.088997 0.848629\n", + "23 2 5 0.50 1.088997 0.848631\n", + "24 2 10 0.00 1.668011 0.796792\n", + "25 2 10 0.01 1.669672 0.797943\n", + "26 2 10 0.10 1.670043 0.798097\n", + "27 2 10 0.50 1.671938 0.800202\n", + "28 2 15 0.00 1.789708 0.501271\n", + "29 2 15 0.01 1.792734 0.501560\n", + "30 2 15 0.10 1.792574 0.501509\n", + "31 2 15 0.50 1.789696 0.501207\n", + "32 2 20 0.00 2.104271 0.313216\n", + "33 2 20 0.01 2.103879 0.313138\n", + "34 2 20 0.10 2.104372 0.313260\n", + "35 2 20 0.50 2.103879 0.313138\n", + "36 2 25 0.00 2.159568 0.236000\n", + "37 2 25 0.01 2.156533 0.235369\n", + "38 2 25 0.10 2.161509 0.236499\n", + "39 2 25 0.50 2.159534 0.236013\n", + "40 3 5 0.00 1.600340 0.669741\n", + "41 3 5 0.01 1.600934 0.669584\n", + "42 3 5 0.10 1.600340 0.669741\n", + "43 3 5 0.50 1.600345 0.669737\n", + "44 3 10 0.00 1.451256 0.629858\n", + "45 3 10 0.01 1.449871 0.631171\n", + "46 3 10 0.10 1.449981 0.631360\n", + "47 3 10 0.50 1.449458 0.631218\n", + "48 3 15 0.00 1.790628 0.425344\n", + "49 3 15 0.01 1.789223 0.425260\n", + "50 3 15 0.10 1.789238 0.425436\n", + "51 3 15 0.50 1.789239 0.425482\n", + "52 3 20 0.00 2.068629 0.345784\n", + "53 3 20 0.01 2.053746 0.344664\n", + "54 3 20 0.10 2.054003 0.344776\n", + "55 3 20 0.50 2.054449 0.344390\n", + "56 3 25 0.00 2.069565 0.221183\n", + "57 3 25 0.01 2.068931 0.221628\n", + "58 3 25 0.10 2.032760 0.257487\n", + "59 3 25 0.50 2.069925 0.221043" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "8ae8d2ff", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Seedn_initNoise_LevelMSEAverage_Uncertainty
01100.0042108.11908817.544797
11100.0140813.52953015.307410
21100.1037841.94507715.802484
31100.5037550.8713663.830761
41150.0038389.63200014.470949
51150.0138349.54083712.016277
61150.1037489.49278011.868182
71150.5038289.5088833.746136
81200.0040191.9832643.811547
91200.0137858.78213222.654309
101200.1037773.53406217.449285
111200.5040106.16278320.949178
122100.0040301.27388119.379407
132100.0140308.00880419.379004
142100.1038778.94186610.257270
152100.5038225.9417094.929497
162150.0038749.7617024.129729
172150.0138660.03254314.906107
182150.1037840.0049334.291684
192150.5037846.2691254.292110
202200.0042369.54536319.049765
212200.0140294.00149817.056114
222200.1039115.47505010.273374
232200.5045580.41014518.010720
243100.0040642.4254856.167951
253100.0139174.92458014.297714
263100.1037548.82134515.840703
273100.5037905.8828493.912628
283150.0037822.9234113.523961
293150.0143567.76893016.288372
303150.1038178.29328723.374256
313150.5041235.7544447.550453
323200.0037889.52177223.649989
333200.0139445.48427414.958631
343200.1044042.98032618.591112
353200.5039537.8424234.317835
\n", + "
" + ], + "text/plain": [ + " Seed n_init Noise_Level MSE Average_Uncertainty\n", + "0 1 10 0.00 42108.119088 17.544797\n", + "1 1 10 0.01 40813.529530 15.307410\n", + "2 1 10 0.10 37841.945077 15.802484\n", + "3 1 10 0.50 37550.871366 3.830761\n", + "4 1 15 0.00 38389.632000 14.470949\n", + "5 1 15 0.01 38349.540837 12.016277\n", + "6 1 15 0.10 37489.492780 11.868182\n", + "7 1 15 0.50 38289.508883 3.746136\n", + "8 1 20 0.00 40191.983264 3.811547\n", + "9 1 20 0.01 37858.782132 22.654309\n", + "10 1 20 0.10 37773.534062 17.449285\n", + "11 1 20 0.50 40106.162783 20.949178\n", + "12 2 10 0.00 40301.273881 19.379407\n", + "13 2 10 0.01 40308.008804 19.379004\n", + "14 2 10 0.10 38778.941866 10.257270\n", + "15 2 10 0.50 38225.941709 4.929497\n", + "16 2 15 0.00 38749.761702 4.129729\n", + "17 2 15 0.01 38660.032543 14.906107\n", + "18 2 15 0.10 37840.004933 4.291684\n", + "19 2 15 0.50 37846.269125 4.292110\n", + "20 2 20 0.00 42369.545363 19.049765\n", + "21 2 20 0.01 40294.001498 17.056114\n", + "22 2 20 0.10 39115.475050 10.273374\n", + "23 2 20 0.50 45580.410145 18.010720\n", + "24 3 10 0.00 40642.425485 6.167951\n", + "25 3 10 0.01 39174.924580 14.297714\n", + "26 3 10 0.10 37548.821345 15.840703\n", + "27 3 10 0.50 37905.882849 3.912628\n", + "28 3 15 0.00 37822.923411 3.523961\n", + "29 3 15 0.01 43567.768930 16.288372\n", + "30 3 15 0.10 38178.293287 23.374256\n", + "31 3 15 0.50 41235.754444 7.550453\n", + "32 3 20 0.00 37889.521772 23.649989\n", + "33 3 20 0.01 39445.484274 14.958631\n", + "34 3 20 0.10 44042.980326 18.591112\n", + "35 3 20 0.50 39537.842423 4.317835" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "id": "610cd775", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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RAkICKBly5b83//9nzZv48aNxMfHExoamiW+SpUqAHzxxReoqpqrbdy4cYNr167Z/MTFxeW4Tr9+/di5c2eWcXB3797NpUuXtLpt3bqV/v37U7p0aWbPns2sWbNo06YNe/bsyVXdsjNq1ChKly6d5YLibjExMTz22GNs3ryZESNGMH36dFJTU3nqqadYu3Ztjuv26tWLtWvXMmjQID7++GNeffVVbt26xYULF7SYZcuW0a1bN9zc3Jg9ezYTJ07k+PHjPP7441mS9fuRnJxM69at+fLLLxkwYADvv/8+rVq1Yty4cbz++usAODg48MwzzxAVFZWlR3VUVBRpaWna+TCbzTz11FPMnTuX7t2788EHH9CjRw/ee+89+vXr98D1FUIIIR5Wy5cvp2fPnjg6OtK/f39Onz7NoUOHgIL9rP7hhx947bXX6NevHwsWLCAgIACABQsW0LhxY6ZMmcKMGTMwGAz06dMny5fXAwcO5IMPPqBr167Mnj0bFxcXunXrlmU7MTExtGjRgm3btvHyyy+zYMECatSowQsvvMD8+fPz4QhmdfPmTTp37kzDhg159913qVOnDm+99RYbN27UYkwmE08++SQRERE0adKEd999l1GjRhEfH8/vv/+uxQ0fPpw33niDVq1asWDBAgYNGsTy5csJCQnBaDTabPfkyZP079+fjh07smDBAho1asSyZctwcnLiiSeeYNmyZSxbtozhw4cDcOjQIfbu3UtoaCjvv/8+L774Itu3b6dNmzZ2G+Hyup+PPPIIU6ZMASyNsdbtBwcH8/zzz5ORkcE333xjU6a1o0evXr2y7eXbt29fFEVhxYoVWZatWLGCTp06Ubp0adLT0wkJCWH//v288sorfPTRRwwbNoy//vrrntcMOalatSoDBgzg008/tXkOhz1Dhgxh0qRJBAUF8d5779G6dWtmzpxp93oos08//ZRXX32VwMBA5s+fT0REBI0aNeLAgQNaTGG8tqdPn86AAQOoWbMm8+bNY/To0Wzfvp3g4GDtGPbr14+kpKQsf6PJycl899139O7dG71eDxT8NYgQRUoVQogSYMmSJSqgHjp0SP3www9Vd3d3NTk5WVVVVe3Tp4/atm1bVVVVtUqVKmq3bt209ZKTk9XatWurgFqlShV14MCB6ueff67GxMRk2UZ4eLgK2P2pXbt2jvU7efKkCqgf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qlWeG2Uzy+58rFq1irCwMN59911tXmpq6gM9uCu327YaMGAATz/9NIcOHWL58uU0btyYunXr5qrsfv36MWLECE6ePMk333yDq6sr3bt3zxJXv3596tevz9tvv83evXtp1aoVCxcuzJdOIW+//TZffvlllgZjuPM6PX36tHbXHFgeKhYXF3fP102pUqXo168f/fr1Iz09nZ49ezJ9+nTGjRuXL6/te6levTqqqlK1alWbThfZ6du3LwsWLCAhIYFvvvmGgIAAWrRoYVMeFOw1iBBFSYZKEEKUSG5ubnzyySdMnjzZbiJldezYMa5du5Zl/vnz5zl+/LjdYQMeRL9+/di/fz//+9//uHbtWpanHV+/ft1mWqfTad9aW28TNBqNnDhxIttxre5l9OjReHl5aU/bzaxr164cPHiQffv2afOSkpJYvHgxAQEBdseEA0vPj9TUVJt51atXx93dXat3SEgIHh4ezJgxI8vTiMFy69WD6tu3L/v27WPz5s1ZlsXFxZGRkaFN63Q6evfuzXfffceyZcvIyMjIcj769u3LP//8w6effpqlvJSUFJKSkh64zkIIIcTDIiUlhTVr1vDkk0/Su3fvLD8vv/wyt27d0m57LqzPar1ej6Io2vi6AOfOnSMqKsomzjqO68cff2wz/4MPPshSXq9evVi9erXdTgC5yXm6du3K/v37OXLkiM38uLg4li9fTqNGjez2HryXXr16ce3aNT788MMsy6w9Vvv27YvJZLI7ZFhGRkauG1hLlSplN1av12fpHfvBBx/YHP8HVapUKYBs69qlSxfKli3L7Nmz+emnn3LV29aqV69e6PV6/u///o+VK1fy5JNPatsDSEhIsMk5wdKIq9PpbJ6fceHCBa1zRF5Vr16d5557jkWLFtkMTQaW1w6Q5e46a6/0bt26ZVvu3dcijo6OBAYGoqoqRqMxX17b99KzZ0/0ej0RERFZXieqqmapY79+/UhLS2Pp0qVs2rSJvn372iwvjGsQIYqS9LgVQpRY2d2+k9nWrVsJDw/nqaeeokWLFri5ufHXX3/xv//9j7S0NCZPnpxlnVWrVtncomPVsWNHypcvn+P2+vbty5gxYxgzZgze3t5ZvvUdMmQIN27coF27dlSuXJnz58/zwQcf0KhRI+0b83/++YdHHnmEsLAwIiMj77mPd/P09GTUqFF2H1I2duxY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D6H0eBtD4cbJyclRjx49qubk5JSq/eXLm9SvEpuqXyU2KfBqqn6V2FS9fHmTqqqqarVa1evXr6tWq/WGdb5+/boKqNu3by9W7vHHH1dr166thoSEqP369VMPHjzoJpOQkKB27NhR9ff3V2NjY9XZs2erZrPZsf3EiRPqnXfeqfr7+6utWrVSN2/erALqmjVrfNY3JSVFBdQdO3b43Gbbtm0qoH711Vdq586d1cDAQLVnz57qsWPHfGo/a9YstX379o7l0aNHq/fee6/62muvqVFRUWrNmjXVv/zlL26/qcaNG6tLlixxfMZlzlfjxo19HsOFCxeqsbGxjuW///3vakREhJqbm+tY9/zzz6stW7b02seNfi8F78j1tPpT0WNYHnbbd999p06YMEGtVauWWqtWLXXixImFrs9VjQqzX7e/qqqzQlVL4nw1ISFBtSTOV9VZodp6L7KFtnlbL5Q/Lufe7bcqY1Km3Kid8Msvb6hfJTZRf/nljWLXl5UNK/Zr8ZSH/aqqvo2h2K9VG7FfqymV+J9YErvtxucDC+WGPcdtjrdk2IJwC6KqKlZrtk8viyWDEyfm4Hl6i7buxMmXsFgy8tvkFNmf6mNmGXs0aUJCArm53nMzjRgxgpSUFDZu3Mh3331Hp06dGDBgANfyoxp27drFqFGjeOaZZzh69CgrV65k1apVzJunPQG02Wzcf//9+Pn58e2337JixQqef95LxFMRpKVpUwpr1vQxqseF6dOns3jxYg4cOIDBYOCxxx4rcR92tm3bxunTp9m2bRurV69m1apVrFq1yqPs/v1aEv7333+fpKQkx7IvpKWluR3rnj17iIuLc4uoGzJkCMePH+f69eueuhAE4SanU6dOTJs2jQkTJpCZmcl7771H586dufPOO/npp58qW73KwyV61nanNh3XducULZp22zxtuys2q+fphn2e09YXzKEnlD8yJpVK0bar02aMjZ1ITEw8v5xZyulfXsdqzeb0L6/zy5mlxMTE06jR+AL9erZhS4LYr6VD7FdBqMZUk/9ESZVQhZHiZIJQGJsth+07iqhYXCJUcnOT2bGzg0/SffscRq8PKlbOYDCwatUqxo8fz4oVK+jUqRN9+vRh5MiRtGvXDoDdu3ezb98+UlJS8PfX8ussWrSIhIQEPvvsM5544gnmzJnD1KlTGT16NABNmjRh7ty5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66027Mo+xB6sBxERERHRCcVisWDSpEnYsGGDvk5RFGzYsAEzZszodDmKohjGsCUiIiKiEw973BIRERERdaOlS5di4cKFmDx5MqZOnYqVK1eisbER1157LQDg6quvRkZGBlasWAFAG6928uTJGDRoEJxOJ9auXYtnn30WjzzySF++DCIiIiLqY0zcEhERERF1o0svvRTl5eW44447UFJSgvHjx2PdunX6hGWHDh2CKPpufGtsbMTixYtx5MgR2O12DB8+HM899xwuvfTSvnoJRERERNQPMHFLRERERNTNlixZgiVLlgTdtnHjRsPy3/72N/ztb3/rhVoRERERUTjhGLdERERERERERERE/QwTt0RERERERERERET9DBO3RERERERERERERP0ME7dERERERERERERE/QwTt0RERERERERERET9DBO3RERERERERERERP0ME7dERERERERERERE/QwTt0RERERERERERET9DBO3RERERERERERERP0ME7dERERERERERERE/UyfJm4/+eQTLFiwAOnp6RAEAW+++Wa78a+//jrmzJmDpKQkxMTEYMaMGXjvvfcMMX/+858hCILh3/Dhw3vwVRARERERERERERF1rz5N3DY2NmLcuHF4+OGHOxX/ySefYM6cOVi7di22bNmC008/HQsWLMB3331niBs1ahSKi4v1f5999llPVJ+IiIiIiIiIiIioR5j6cudnn302zj777E7Hr1y50rD897//HW+99RbeeecdTJgwQV9vMpmQmpraXdUkIiIiIiIiIiIi6lV9mrg9XoqioL6+HgkJCYb1e/bsQXp6Omw2G2bMmIEVK1YgOzs7ZDlOpxNOp1NfrqurAwC43W643e6eqbyf1n30xr6oZ7ANwx/bMPyxDQcGtmP46+025O8KEREREQ1UYZ24vffee9HQ0IBLLrlEXzdt2jQ89dRTGDZsGIqLi7F8+XLMmjUL27dvR3R0dNByVqxYgeXLl7dZ//777yMiIqLH6h9o/fr1vbYv6hlsw/DHNgx/bMOBge0Y/nqrDZuamnplP0REREREvS1sE7cvvPACli9fjrfeegvJycn6ev+hF8aOHYtp06YhJycHr7zyCq677rqgZS1btgxLly7Vl+vq6pCVlYUzzzwTMTExPfcivNxuN9avX485c+bAbDb3+P6o+7ENwx/bMPyxDQcG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "# Convert the list of dictionaries into a DataFrame for easier manipulation\n", + "df = results_df\n", + "\n", + "# Plot settings\n", + "plt.figure(figsize=(14, 6))\n", + "\n", + "# Plot 1: MSE\n", + "plt.subplot(1, 2, 1) # 1 row, 2 columns, first plot\n", + "for key, grp in df.groupby(['Seed', 'n_init']):\n", + " plt.plot(grp['Noise_Level'], grp['MSE'], marker='o', linestyle='-', label=f'Seed {key[0]}, n_init {key[1]}')\n", + "plt.title('MSE vs. Noise Level')\n", + "plt.xlabel('Noise Level')\n", + "plt.ylabel('MSE')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "\n", + "# Plot 2: Average Uncertainty\n", + "plt.subplot(1, 2, 2) # 1 row, 2 columns, second plot\n", + "for key, grp in df.groupby(['Seed', 'n_init']):\n", + " plt.plot(grp['Noise_Level'], grp['Average_Uncertainty'], marker='x', linestyle='--', label=f'Seed {key[0]}, n_init {key[1]}')\n", + "plt.title('Average Uncertainty vs. Noise Level')\n", + "plt.xlabel('Noise Level')\n", + "plt.ylabel('Average Uncertainty')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b3efada", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:.conda-gpax_hae]", + "language": "python", + "name": "conda-env-.conda-gpax_hae-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.0" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/trial_notebooks/gpax_schwefel.ipynb b/trial_notebooks/gpax_schwefel.ipynb new file mode 100644 index 0000000..4c4b2a9 --- /dev/null +++ b/trial_notebooks/gpax_schwefel.ipynb @@ -0,0 +1,5279 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 23, + "id": "f64ae931", + "metadata": {}, + "outputs": [], + "source": [ + "from src.schwefel import SchwefelProblem\n", + "from time import time\n", + "import gpax\n", + "import numpyro" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "b01fe3e8", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def schwefel_1d(x):\n", + "\n", + " return 418.9829 - x * np.sin(np.sqrt(np.abs(x)))\n", + "\n", + "def schwefel_nd(args):\n", + " output = 0\n", + " \n", + " for dim in range(args):\n", + " output += schwefel_1d(args[dim])\n", + "\n", + "def add_gaussian_noise(signal, noise_level):\n", + "\n", + " return signal + np.random.normal(0, noise_level, 1)[0]\n", + "\n", + "def schwefel_1d_with_noise(x, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_1d(x)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "def schwefel_nd_with_noise(args, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_nd(args)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "ecbf7466", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def create_data(seed, n_init, noise_level):\n", + "\n", + " np.random.seed(seed)\n", + " X_bounds = np.array([-500, 500])\n", + " X = np.random.uniform(X_bounds[0], X_bounds[1], size=( n_init,))\n", + " X = np.append(X, X_bounds)\n", + " X = np.sort(X)\n", + " y = schwefel_1d_with_noise(X, noise_level = noise_level)\n", + "\n", + " X_unmeasured = np.linspace(X_bounds[0], X_bounds[1], 200)\n", + " ground_truth = schwefel_1d_with_noise(X_unmeasured, noise_level = 0)\n", + " \n", + " return X, y, X_unmeasured, ground_truth\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "ae1578be", + "metadata": {}, + "outputs": [], + "source": [ + "noise_prior = lambda: numpyro.sample(\"noise\", numpyro.distributions.HalfNormal(0.01))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "5ba4e33f", + "metadata": {}, + "outputs": [], + "source": [ + "def gp_kernel_prior():\n", + " length = numpyro.sample(\"k_length\", numpyro.distributions.Uniform(0.1, 2)) #0.1 2\n", + " scale = numpyro.sample(\"k_scale\", numpyro.distributions.LogNormal(0, 1))\n", + " # the hyperparameters are returned as dictionary\n", + " return {\"k_length\": length, \"k_scale\": scale}" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "e4efc886", + "metadata": {}, + "outputs": [], + "source": [ + "def step(X_measured, y_measured, X_unmeasured):\n", + " # Get random number generator keys for training and prediction\n", + " rng_key1, rng_key2 = gpax.utils.get_keys()\n", + " # Initialize GP model\n", + " gp_model = gpax.ExactGP(1, kernel='Matern', kernel_prior=gp_kernel_prior, noise_prior=noise_prior)\n", + " #gpax.ExactGP(1, kernel='Matern')\n", + " # Run HMC to obtain posterior samples for the GP model parameters\n", + " gp_model.fit(rng_key1, X_measured, y_measured)\n", + " # Get predictions (we don't need this step for optimization - only for visualization purposes)\n", + " y_pred, y_sampled = gp_model.predict(rng_key2, X_unmeasured, noiseless=True, n= 10)\n", + "\n", + " # Compute acquisition function\n", + "\n", + " #Upper confidence bound\n", + " #obj = gpax.acquisition.UCB(rng_key2, gp_model, X_unmeasured, beta= 10, maximize=False, noiseless=True)\n", + "\n", + " #Expected improvement\n", + " obj = gpax.acquisition.EI(rng_key2, gp_model, X_unmeasured, xi=0.01, maximize=False, n=10, noiseless=True) #xi = 0.01\n", + "\n", + " # pure uncertainty-based\n", + " #obj = gpax.acquisition.UE(rng_key2, gp_model, X_unmeasured, noiseless=True)\n", + "\n", + " return obj, (y_pred, y_sampled)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "23e5cdaf", + "metadata": {}, + "outputs": [], + "source": [ + "def run_gp(num_steps, X, y, X_unmeasured, ground_truth, schwefel_1d_with_noise, noise_level ):\n", + " for e in range(num_steps):\n", + " print(\"\\nStep {}/{}\".format(e+1, num_steps))\n", + " # Compute acquisition function\n", + " acq, (y_pred, y_sampled) = step(X, y, X_unmeasured)\n", + " # Get the next point to evaluate\n", + " idx = acq.argmin()\n", + " next_point = X_unmeasured[idx:idx+1]\n", + "\n", + " # Measure the point\n", + " next_point_value = schwefel_1d_with_noise(next_point, noise_level)\n", + " #Note that in experiment this is the step when you go to the lab. Strong insentive to learn how to make convergence faster!\n", + "\n", + " # Update measured data\n", + " X = np.append(X, X_unmeasured[idx:idx+1])\n", + " y = np.append(y, next_point_value)\n", + "\n", + "# # Plot observed points, mean prediction, and acqusition function\n", + "# lower_b = y_pred - y_sampled.std(axis=(0,1))\n", + "# upper_b = y_pred + y_sampled.std(axis=(0,1))\n", + "# fig, (ax1, ax2) = plt.subplots(1, 2, dpi=100, figsize=(14, 5.5))\n", + "# ax1.scatter(X[:-1], y[:-1], marker='x', c='k', label=\"Observations\", s=64)\n", + "# ax1.fill_between(X_unmeasured, lower_b, upper_b, color='r', alpha=0.3, label=\"Model uncertainty\")\n", + "# ax2.plot(X_unmeasured, acq, lw=2, c='orangered', label='Acquisition function')\n", + "# ax2.scatter(X_unmeasured[idx], acq[idx], s=90, c='orangered', label='Next point to measure')\n", + "# for ax in fig.axes:\n", + "# ax.plot(X_unmeasured, y_pred, lw=2, c='b', label='Posterior mean')\n", + "# ax.plot(X_unmeasured, ground_truth, label='Ground truth')\n", + "# #ax.set_ylim(3.0, 8)\n", + "# ax.set_xlabel(\"$X$\", fontsize=16)\n", + "# ax.set_ylabel(\"$y$\", fontsize=16)\n", + "# ax.legend(loc='best', fontsize=10)\n", + "# plt.show()\n", + " # Quantifying prediction accuracy\n", + " mse = np.mean((y_pred - ground_truth)**2)\n", + " average_uncertainty = np.mean(y_sampled.std(axis=(0,1))) \n", + " return mse, average_uncertainty" + ] + }, + { + "cell_type": "markdown", + "id": "e2771527", + "metadata": {}, + "source": [ + "# run experiments" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "c0a4327d", + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "import pandas as pd\n", + "\n", + "def grid_search(seeds, n_inits, noise_levels):\n", + " results = [] # Initialize an empty list to store results\n", + "\n", + " # Iterate over all combinations of seeds, n_inits, and noise_levels\n", + " for seed, n_init, noise_level in itertools.product(seeds, n_inits, noise_levels):\n", + " print(f\"Seed: {seed}, n_init: {n_init}, Noise Level: {noise_level}\")\n", + " \n", + " # Create data for the current combination\n", + " X, y, X_unmeasured, ground_truth = create_data(seed, n_init, noise_level)\n", + " \n", + " # Run Gaussian Process (GP) optimization/modeling for the current combination\n", + " mse, average_uncertainty = run_gp(5, X, y, X_unmeasured, ground_truth, schwefel_1d_with_noise, noise_level)\n", + " \n", + " # Collect the results\n", + " results.append({\n", + " \"Seed\": seed,\n", + " \"n_init\": n_init,\n", + " \"Noise_Level\": noise_level,\n", + " \"MSE\": mse,\n", + " \"Average_Uncertainty\": average_uncertainty\n", + " })\n", + "\n", + " # Convert the results to a pandas DataFrame for easy analysis and reporting\n", + " results_df = pd.DataFrame(results)\n", + " \n", + " return results_df\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "63b0451c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Seed: 1, n_init: 10, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "sample: 100%|â–ˆ| 4000/4000 [00:18<00:00, 219.94it/s, 3 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 1.26 1.00\n", + " k_scale 453.36 0.00 453.36 453.36 453.36 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:21<00:00, 184.16it/s, 6 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 43.01 0.00 43.01 43.00 43.01 6.19 1.21\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:28<00:00, 140.09it/s, 9 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 66.33 1.00\n", + " k_scale 32.17 0.00 32.17 32.17 32.17 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:29<00:00, 134.14it/s, 19 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 103.83 1.00\n", + " k_scale 62.30 0.00 62.30 62.30 62.30 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 120.15it/s, 1 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 23.13 0.00 23.13 23.13 23.13 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 10, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:20<00:00, 194.76it/s, 10 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.85 1.00\n", + " k_scale 51.21 0.00 51.21 51.21 51.21 10.25 1.11\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:25<00:00, 155.65it/s, 24 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 111.50 1.00\n", + " k_scale 55.50 0.00 55.50 55.50 55.50 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 121.13it/s, 59 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 15.22 0.00 15.22 15.22 15.22 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 128.46it/s, 4 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 39.38 0.00 39.38 39.38 39.38 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 113.39it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 nan nan\n", + " k_scale 1.44 0.00 1.44 1.44 1.44 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 10, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:27<00:00, 143.14it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 nan nan\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 2.54 2.68\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 126.65it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 2.29 0.00 2.29 2.29 2.29 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:27<00:00, 147.69it/s, 4 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 33.72 1.00\n", + " k_scale 110.68 0.00 110.68 110.68 110.68 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:32<00:00, 123.35it/s, 46 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.55 0.00 0.55 0.55 0.55 25.39 1.02\n", + " k_scale 61.08 0.00 61.08 61.08 61.08 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 110.28it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 2.29 0.00 2.29 2.29 2.29 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 1, n_init: 10, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:27<00:00, 143.49it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 nan nan\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:29<00:00, 134.99it/s, 42 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 nan nan\n", + " k_scale 22.43 0.00 22.43 22.43 22.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:28<00:00, 140.47it/s, 10 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 nan nan\n", + " k_scale 19.19 0.00 19.19 19.19 19.19 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:34<00:00, 114.43it/s, 59 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 0.50 1.00\n", + " k_scale 19.17 0.00 19.17 19.17 19.17 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 109.37it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 nan nan\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 15, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:42<00:00, 94.46it/s, 907 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 11.89 1.05\n", + " k_scale 21.37 0.00 21.37 21.37 21.37 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:42<00:00, 93.05it/s, 2 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 0.50 1.00\n", + " k_scale 19.05 0.00 19.05 19.05 19.05 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 76.33it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 4.72 0.00 4.72 4.72 4.72 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:45<00:00, 87.51it/s, 2 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.58 0.00 0.58 0.58 0.58 43.14 1.00\n", + " k_scale 213.11 0.00 213.11 213.11 213.11 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:59<00:00, 67.51it/s, 4 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 0.50 1.00\n", + " k_scale 19.44 0.00 19.44 19.44 19.44 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 15, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 109.75it/s, 8 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 0.50 1.00\n", + " k_scale 29.13 0.00 29.13 29.13 29.13 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:45<00:00, 87.38it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 nan nan\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.59it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 26.94 1.08\n", + " k_scale 31.46 0.00 31.46 31.46 31.46 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 75.96it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 1.44 0.00 1.44 1.44 1.44 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.91it/s, 764 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 52.69 1.00\n", + " k_scale 18.97 0.00 18.97 18.97 18.97 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 1, n_init: 15, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:38<00:00, 105.02it/s, 14 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 17.26 1.05\n", + " k_scale 26.21 0.00 26.21 26.21 26.21 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 107.60it/s, 21 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.63 0.00 0.63 0.63 0.63 0.52 1.00\n", + " k_scale 59.03 0.00 59.03 59.03 59.03 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:49<00:00, 80.36it/s, 42 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 20.04 0.00 20.04 20.04 20.04 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:54<00:00, 73.99it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:45<00:00, 88.47it/s, 2 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.71 0.00 0.71 0.71 0.71 0.51 1.00\n", + " k_scale 1767.44 0.00 1767.44 1767.44 1767.44 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 15, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:41<00:00, 95.97it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 nan nan\n", + " k_scale 3.31 0.00 3.31 3.31 3.31 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:46<00:00, 86.92it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 2.58 0.00 2.58 2.58 2.58 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 76.68it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 1.43 0.00 1.43 1.43 1.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:53<00:00, 74.14it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.70 10.83 1.00\n", + " k_scale 43.37 0.00 43.37 43.37 43.37 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:57<00:00, 70.15it/s, 7 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 23.98 0.00 23.98 23.98 23.98 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 1, n_init: 20, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:04<00:00, 61.87it/s, 222 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 22.21 0.00 22.21 22.21 22.21 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 54.81it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 9.48 0.00 9.48 9.48 9.48 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 63.88it/s, 526 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 44.27 1.01\n", + " k_scale 23.40 0.00 23.40 23.40 23.40 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:13<00:00, 54.58it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 nan nan\n", + " k_scale 9.27 0.00 9.27 9.27 9.27 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:07<00:00, 58.88it/s, 2 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.71 0.00 0.71 0.71 0.71 12.33 1.01\n", + " k_scale 158.38 0.00 158.38 158.38 158.38 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 20, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 65.36it/s, 2 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 nan nan\n", + " k_scale 22.11 0.00 22.11 22.11 22.11 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:04<00:00, 62.27it/s, 3 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 nan nan\n", + " k_scale 43.46 0.00 43.46 43.46 43.46 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:57<00:00, 70.05it/s, 8 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 9.87 1.96\n", + " k_scale 29.56 0.00 29.56 29.56 29.56 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 55.42it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 10.78 0.00 10.78 10.78 10.78 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:15<00:00, 52.91it/s, 37 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 0.50 1.00\n", + " k_scale 13.89 0.00 13.89 13.89 13.89 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 20, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 108.08it/s, 2 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.00 0.75 0.75 0.75 0.55 1.00\n", + " k_scale 3627.27 0.00 3627.27 3627.27 3627.27 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:53<00:00, 75.01it/s, 65 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.70 129.84 1.00\n", + " k_scale 368.42 0.00 368.42 368.42 368.42 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:54<00:00, 73.63it/s, 20 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.71 0.00 0.71 0.71 0.71 0.50 1.00\n", + " k_scale 141.89 0.00 141.89 141.89 141.89 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:05<00:00, 60.87it/s, 15 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 nan nan\n", + " k_scale 29.60 0.00 29.60 29.60 29.60 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:59<00:00, 67.46it/s, 128 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 41.78 1.05\n", + " k_scale 95.80 0.00 95.80 95.80 95.80 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 1, n_init: 20, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:53<00:00, 75.17it/s, 3 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 0.50 1.00\n", + " k_scale 41.47 0.00 41.47 41.47 41.47 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.98it/s, 120 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 2.40 1.06\n", + " k_scale 55.54 0.00 55.54 55.54 55.54 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:57<00:00, 69.45it/s, 4 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 22.33 0.00 22.33 22.33 22.33 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:11<00:00, 55.70it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 0.50 1.00\n", + " k_scale 9.28 0.00 9.28 9.28 9.28 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:17<00:00, 51.53it/s, 710 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 252.71 1.01\n", + " k_scale 33.28 0.00 33.28 33.28 33.28 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 10, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1381.43it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.37 0.44 1.47 0.72 1.99 1667.02 1.00\n", + " k_scale 77684.52 19737.01 74845.76 47334.99 106374.62 1028.83 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1466.18 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 125.74it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.78 0.00 0.78 0.78 0.78 2.52 3.55\n", + " k_scale 1322.64 0.07 1322.67 1322.67 1322.67 10.24 1.11\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 118.31it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.72 0.00 0.72 0.72 0.72 2.42 3.45\n", + " k_scale 730.23 0.00 730.23 730.23 730.23 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 105.32it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.80 0.02 0.80 0.78 0.83 2.63 2.48\n", + " k_scale 14139.49 1284.56 13997.53 12068.98 15933.91 2.57 2.74\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.42 1.99\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 109.84it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.73 0.00 0.73 0.73 0.73 2.50 2.75\n", + " k_scale 770.65 0.00 770.65 770.65 770.65 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 10, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1369.12it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.37 0.44 1.45 0.71 2.00 1405.14 1.00\n", + " k_scale 77769.19 19278.49 75023.91 46533.59 104351.18 1023.67 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1126.38 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:16<00:00, 240.32it/s, 299 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.33 0.00 1.33 1.33 1.33 4.48 1.24\n", + " k_scale 42100.00 5.49 42099.73 42090.94 42108.29 5.03 1.39\n", + " noise 0.01 0.00 0.01 0.01 0.01 6.31 1.02\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 118.59it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.76 0.00 0.76 0.75 0.76 2.42 3.21\n", + " k_scale 898.89 0.00 898.89 898.89 898.89 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 107.37it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.72 0.00 0.72 0.72 0.73 2.59 2.77\n", + " k_scale 1049.96 0.00 1049.96 1049.96 1049.96 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 111.18it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.80 0.00 0.80 0.80 0.81 2.56 3.11\n", + " k_scale 11041.06 377.98 11029.73 10460.64 11624.72 2.71 2.63\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.11 2.36\n", + "\n", + "Seed: 2, n_init: 10, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1359.35it/s, 15 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.37 0.44 1.46 0.72 2.00 1399.38 1.00\n", + " k_scale 76932.52 19242.04 73795.89 44063.46 104610.05 1136.90 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1497.74 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:28<00:00, 142.58it/s, 73 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.57 0.01 0.57 0.56 0.58 2.48 3.09\n", + " k_scale 34279.02 5444.43 33814.66 26670.43 43931.08 2.81 2.21\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.56 1.58\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 118.47it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.00 0.75 0.75 0.75 2.60 3.24\n", + " k_scale 875.17 0.00 875.17 875.17 875.17 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 109.10it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.98 0.00 0.98 0.98 0.99 3.88 1.72\n", + " k_scale 31298.88 6078.77 33533.25 21089.32 40153.30 2.86 2.38\n", + " noise 0.01 0.00 0.01 0.01 0.01 9.27 1.11\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 112.14it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.76 0.00 0.76 0.75 0.76 2.48 3.09\n", + " k_scale 781.51 0.00 781.51 781.51 781.51 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 10, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1364.35it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.37 0.45 1.44 0.72 2.00 1317.19 1.00\n", + " k_scale 78146.24 20451.55 75144.06 48157.69 107827.02 1008.43 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1466.19 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:32<00:00, 121.95it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.71 2.43 3.41\n", + " k_scale 415.63 0.00 415.63 415.63 415.63 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:34<00:00, 117.27it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.12 0.00 1.12 1.12 1.12 3.34 1.87\n", + " k_scale 10019.22 0.00 10019.22 10019.22 10019.22 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:38<00:00, 103.47it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.61 0.00 0.61 0.61 0.61 2.62 2.93\n", + " k_scale 145.20 0.00 145.20 145.20 145.20 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 112.26it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.71 0.00 0.71 0.71 0.71 2.81 3.08\n", + " k_scale 51.69 0.00 51.69 51.69 51.69 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 15, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1331.88it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.53 0.37 1.63 1.01 2.00 1339.42 1.00\n", + " k_scale 87519.71 20460.04 84588.73 53983.97 117041.66 1122.05 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1468.50 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:46<00:00, 86.38it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.02 0.02 1.01 0.99 1.05 2.51 2.63\n", + " k_scale 34436.52 359.54 34392.83 33947.11 35061.64 3.35 2.12\n", + " noise 0.01 0.00 0.01 0.01 0.01 5.20 1.84\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.26it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 2.58 3.41\n", + " k_scale 3486.92 0.00 3486.92 3486.92 3486.92 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 9.53 1.30\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:44<00:00, 90.43it/s, 154 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.86 0.00 0.86 0.86 0.86 7.68 1.05\n", + " k_scale 33469.60 5.34 33469.00 33461.31 33478.26 7.82 1.04\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:56<00:00, 70.67it/s, 14 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.84 0.00 0.84 0.84 0.84 2.56 2.90\n", + " k_scale 32029.86 741.37 32171.88 30797.09 32993.38 5.79 1.54\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.43 2.11\n", + "\n", + "Seed: 2, n_init: 15, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1328.13it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.52 0.38 1.62 0.96 2.00 1356.37 1.00\n", + " k_scale 86537.73 21212.71 83274.28 55043.46 117774.72 1280.80 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 998.80 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:09<00:00, 428.27it/s, 4 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.06 0.00 1.06 1.06 1.06 0.66 1.00\n", + " k_scale 40269.16 0.00 40269.16 40269.16 40269.16 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 76.43it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.79 0.00 0.79 0.79 0.79 2.43 3.51\n", + " k_scale 1027.18 0.00 1027.18 1027.18 1027.18 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.78it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.80 0.00 0.80 0.80 0.80 0.50 1.00\n", + " k_scale 33483.21 0.00 33483.21 33483.21 33483.21 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 65.37it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.80 0.00 0.80 0.80 0.80 2.70 2.33\n", + " k_scale 1012.96 0.00 1012.96 1012.96 1012.96 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 2, n_init: 15, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1283.64it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.54 0.39 1.63 0.97 2.00 1412.43 1.00\n", + " k_scale 88030.25 20978.13 84436.31 58139.70 121263.59 969.50 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1462.23 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 110.50it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.85 0.01 0.85 0.84 0.88 2.41 3.31\n", + " k_scale 59930.79 3737.75 60122.50 54468.01 65680.98 6.86 1.01\n", + " noise 0.01 0.00 0.01 0.01 0.01 2.96 2.56\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.59it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.77 0.00 0.77 0.77 0.77 2.94 2.00\n", + " k_scale 1017.46 0.00 1017.46 1017.46 1017.46 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:28<00:00, 142.06it/s, 2 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.48 0.00 1.48 1.48 1.48 nan nan\n", + " k_scale 33536.13 0.00 33536.13 33536.13 33536.13 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:44<00:00, 89.27it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.98 0.00 0.98 0.97 0.98 2.56 4.84\n", + " k_scale 43486.80 31.29 43491.35 43437.86 43529.67 3.94 1.15\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.74 1.89\n", + "\n", + "Seed: 2, n_init: 15, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1301.86it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.53 0.38 1.61 0.98 2.00 1580.83 1.00\n", + " k_scale 86985.98 21150.47 84024.19 57585.51 119230.65 1301.04 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1223.35 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:46<00:00, 86.77it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.90 0.00 0.90 0.89 0.90 2.43 3.26\n", + " k_scale 873.22 0.00 873.22 873.22 873.22 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 75.72it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.71 0.00 0.71 0.71 0.71 3.35 2.19\n", + " k_scale 216.43 0.00 216.43 216.43 216.43 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.57it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.06 0.00 1.06 1.06 1.07 2.39 3.61\n", + " k_scale 3997.68 294.03 4012.69 3541.05 4426.89 2.49 2.78\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.52 2.05\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.66it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.73 0.00 0.73 0.73 0.73 4.38 1.59\n", + " k_scale 66.19 0.00 66.19 66.19 66.19 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 20, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1269.91it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.49 0.42 1.59 0.88 2.00 1200.97 1.00\n", + " k_scale 118164.95 26672.58 114027.52 78118.53 157083.81 1027.62 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1473.49 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:14<00:00, 278.66it/s, 445 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.36 0.00 1.36 1.36 1.36 6.42 1.09\n", + " k_scale 38612.71 10.01 38610.38 38600.81 38630.97 4.92 1.52\n", + " noise 0.01 0.00 0.01 0.01 0.01 12.88 1.18\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.79it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.78 0.00 0.78 0.78 0.78 2.66 2.62\n", + " k_scale 2825.90 0.00 2825.90 2825.90 2825.90 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 76.91it/s, 4 steps of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.80 0.00 0.80 0.80 0.80 4.62 1.27\n", + " k_scale 36894.27 2131.50 37918.45 33092.84 38763.09 3.80 1.48\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.11 1.83\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:18<00:00, 51.17it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.00 0.75 0.75 0.75 2.68 2.43\n", + " k_scale 1570.49 0.00 1570.49 1570.49 1570.49 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 20, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1271.76it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.50 0.40 1.60 0.87 2.00 1672.10 1.00\n", + " k_scale 116911.77 25761.19 113579.77 74720.73 153895.17 1332.34 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1418.84 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:26<00:00, 149.17it/s, 49 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.73 0.00 0.73 0.73 0.73 5.04 1.08\n", + " k_scale 45344.56 2409.35 46301.34 41283.48 48429.14 3.15 1.70\n", + " noise 0.01 0.00 0.01 0.01 0.01 6.74 1.43\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:03<00:00, 63.17it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.74 0.00 0.74 0.74 0.74 2.43 3.77\n", + " k_scale 1386.61 0.00 1386.61 1386.61 1386.61 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:11<00:00, 55.99it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.88 0.00 0.88 0.88 0.88 2.57 2.90\n", + " k_scale 1705.12 0.00 1705.12 1705.12 1705.12 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:19<00:00, 50.52it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.72 0.00 0.72 0.72 0.72 2.43 3.49\n", + " k_scale 1499.16 0.00 1499.16 1499.16 1499.16 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 20, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1253.16it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.48 0.41 1.57 0.85 2.00 1376.79 1.00\n", + " k_scale 118090.76 25711.47 115393.38 78558.57 155900.17 1266.75 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1253.46 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:13<00:00, 54.08it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.77 0.00 0.77 0.77 0.77 2.37 3.57\n", + " k_scale 1044.28 0.00 1044.28 1044.28 1044.28 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 64.25it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.74 0.00 0.74 0.74 0.74 2.53 3.15\n", + " k_scale 1796.61 0.00 1796.61 1796.61 1796.61 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:11<00:00, 55.60it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.00 0.75 0.75 0.76 2.44 3.08\n", + " k_scale 1853.54 0.00 1853.54 1853.54 1853.54 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:18<00:00, 51.10it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.74 0.00 0.74 0.74 0.74 2.51 2.85\n", + " k_scale 1225.29 0.00 1225.29 1225.29 1225.29 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 2, n_init: 20, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1259.29it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.50 0.40 1.60 0.91 2.00 1529.65 1.00\n", + " k_scale 116887.55 26172.67 113047.02 75429.32 156277.38 1215.53 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1075.58 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:11<00:00, 56.16it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.02 0.69 0.67 0.71 2.41 3.26\n", + " k_scale 24016.94 296.13 24034.71 23626.46 24425.04 2.56 3.50\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.47 1.85\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:04<00:00, 62.37it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.62 2.93\n", + " k_scale 1000.69 0.00 1000.69 1000.69 1000.69 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:11<00:00, 55.71it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.93 0.00 0.93 0.93 0.94 2.71 2.50\n", + " k_scale 239.18 0.00 239.18 239.18 239.18 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:17<00:00, 51.35it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.78 2.91\n", + " k_scale 1985.26 0.00 1985.26 1985.26 1985.26 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 10, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1364.40it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.09 0.51 1.12 0.33 1.93 1670.82 1.00\n", + " k_scale 72827.19 18358.48 70312.22 45540.64 100423.82 978.72 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1387.74 1.01\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 125.78it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 2.56 2.91\n", + " k_scale 1285.04 0.00 1285.04 1285.04 1285.04 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:30<00:00, 133.06it/s, 511 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.82 0.01 0.82 0.81 0.84 2.63 2.63\n", + " k_scale 29644.94 5260.62 31315.31 22760.34 36941.11 3.04 2.09\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.26 1.73\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:38<00:00, 102.98it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 2.43 3.25\n", + " k_scale 697.36 0.00 697.36 697.36 697.36 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 111.64it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 2.58 3.11\n", + " k_scale 680.96 0.00 680.96 680.96 680.96 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 10, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1382.69it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.08 0.52 1.10 0.29 1.92 1407.85 1.00\n", + " k_scale 72597.62 17751.08 69995.16 44860.73 99821.12 1096.96 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1354.13 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 125.61it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.68 0.68 0.69 2.50 3.50\n", + " k_scale 2849.67 2.81 2850.45 2844.25 2852.92 4.00 1.54\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.62 1.67\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 119.68it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.76 0.01 0.76 0.75 0.78 3.01 1.96\n", + " k_scale 17294.53 181.36 17285.67 17008.40 17589.36 15.01 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 2.62 2.75\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 105.46it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.71 0.70 0.71 2.74 2.41\n", + " k_scale 21914.92 4980.35 22556.78 13193.37 28289.91 2.54 2.85\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.70 1.79\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:36<00:00, 110.02it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 2.94 2.45\n", + " k_scale 782.16 0.00 782.16 782.16 782.16 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 10, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1414.25it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.09 0.54 1.09 0.34 1.99 1345.22 1.00\n", + " k_scale 73442.73 18546.60 70887.00 44081.99 100563.94 1125.69 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1401.42 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:31<00:00, 127.01it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.72 0.04 0.72 0.67 0.78 2.58 2.54\n", + " k_scale 20545.85 303.07 20494.04 20097.95 21003.21 7.80 1.56\n", + " noise 0.01 0.00 0.01 0.01 0.01 8.85 1.19\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:33<00:00, 120.69it/s, 32 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.22 0.00 1.22 1.22 1.23 3.40 1.95\n", + " k_scale 46053.85 4719.94 46442.46 38450.46 52729.11 3.84 2.02\n", + " noise 0.01 0.00 0.01 0.01 0.01 4.81 1.69\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 107.03it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 3.10 2.49\n", + " k_scale 2318.61 0.00 2318.61 2318.61 2318.61 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 113.72it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.61 0.00 0.61 0.61 0.61 2.88 2.52\n", + " k_scale 392.86 0.00 392.86 392.86 392.86 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 10, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1367.00it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.11 0.53 1.15 0.36 1.99 1465.46 1.00\n", + " k_scale 72984.98 18601.47 69862.14 45510.64 101631.62 1006.12 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1488.59 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:32<00:00, 124.92it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.70 2.39 4.23\n", + " k_scale 7140.82 0.00 7140.82 7140.82 7140.82 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 113.60it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 3.38 2.02\n", + " k_scale 181.07 0.00 181.07 181.07 181.07 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:37<00:00, 105.85it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 0.50 1.00\n", + " k_scale 625.13 0.00 625.13 625.13 625.13 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 112.48it/s, 1023 steps\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 2.71 3.05\n", + " k_scale 78.94 0.00 78.94 78.94 78.94 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 15, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1337.31it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.10 0.53 1.10 0.36 2.00 1518.59 1.00\n", + " k_scale 92965.45 21841.80 89628.97 62175.77 127285.95 1193.38 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1338.88 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:46<00:00, 86.93it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.74 0.00 0.74 0.74 0.74 3.06 2.49\n", + " k_scale 1281.33 0.00 1281.33 1281.33 1281.33 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:51<00:00, 77.30it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.65 2.93\n", + " k_scale 1172.89 0.00 1172.89 1172.89 1172.89 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:53<00:00, 75.24it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 2.42 3.78\n", + " k_scale 1595.62 0.00 1595.62 1595.62 1595.62 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 64.17it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 3.13 2.18\n", + " k_scale 993.19 0.00 993.19 993.19 993.19 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 15, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1314.98it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.10 0.52 1.10 0.37 1.99 1444.20 1.00\n", + " k_scale 93594.58 22037.80 90110.72 62150.04 128535.92 1150.32 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1532.01 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:21<00:00, 186.69it/s, 93 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.84 0.00 0.84 0.84 0.84 8.90 1.22\n", + " k_scale 35965.30 573.32 36036.41 35207.02 36779.65 7.67 1.05\n", + " noise 0.01 0.00 0.01 0.01 0.01 8.18 1.05\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:35<00:00, 111.49it/s, 29 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.72 0.00 0.72 0.72 0.72 6.12 1.11\n", + " k_scale 34234.30 1889.20 34463.96 32046.79 36858.13 5.48 1.44\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.34 1.63\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 76.06it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.57 3.06\n", + " k_scale 902.09 0.00 902.09 902.09 902.09 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.61it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 2.56 2.85\n", + " k_scale 307.71 0.00 307.71 307.71 307.71 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 15, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1305.07it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.13 0.53 1.15 0.37 2.00 1311.67 1.00\n", + " k_scale 93333.09 21738.07 90516.12 60132.22 126522.04 1211.89 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1079.81 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:46<00:00, 86.23it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.52 2.88\n", + " k_scale 1541.87 0.00 1541.87 1541.87 1541.87 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:44<00:00, 90.58it/s, 647 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.10 0.00 1.10 1.09 1.10 2.93 2.29\n", + " k_scale 32615.19 683.14 32782.82 31548.90 33491.86 18.84 1.11\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.49 1.69\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 75.79it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.01 0.75 0.75 0.76 2.38 3.80\n", + " k_scale 9405.91 124.95 9414.80 9194.33 9575.03 2.78 2.57\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.28 2.10\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 65.41it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 5.63 1.45\n", + " k_scale 1010.56 0.00 1010.56 1010.56 1010.56 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 3, n_init: 15, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1326.89it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.11 0.53 1.14 0.33 1.96 1604.20 1.00\n", + " k_scale 92860.34 21734.16 89477.55 57990.46 125428.90 1250.82 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1338.40 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:45<00:00, 88.13it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 3.73 1.39\n", + " k_scale 273.22 0.00 273.22 273.22 273.22 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:52<00:00, 75.98it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 4.60 1.48\n", + " k_scale 218.84 0.00 218.84 218.84 218.84 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:53<00:00, 74.19it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 2.87 2.23\n", + " k_scale 325.07 0.00 325.07 325.07 325.07 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 64.51it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.00 0.65 0.65 0.65 2.47 2.86\n", + " k_scale 76.61 0.00 76.61 76.61 76.61 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 3, n_init: 20, Noise Level: 0\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1249.57it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.11 0.53 1.12 0.35 1.99 1416.08 1.00\n", + " k_scale 103793.10 22921.46 100951.85 68617.83 139373.88 1388.80 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 975.40 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:19<00:00, 208.22it/s, 2 steps of\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.87 0.00 0.87 0.87 0.87 1.50 1.74\n", + " k_scale 81931.34 0.00 81931.34 81931.34 81931.34 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:01<00:00, 64.93it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.65 0.01 0.65 0.64 0.66 2.54 2.88\n", + " k_scale 16396.64 2730.67 16537.21 12003.95 20176.70 2.49 2.89\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.51 1.93\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 55.37it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.68 0.00 0.68 0.68 0.68 2.60 3.29\n", + " k_scale 1287.73 0.00 1287.73 1287.73 1287.73 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:18<00:00, 51.28it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.70 2.49 3.48\n", + " k_scale 344.00 0.00 344.00 344.00 344.00 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 nan nan\n", + "\n", + "Seed: 3, n_init: 20, Noise Level: 0.01\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1268.59it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.10 0.53 1.11 0.34 1.97 1668.94 1.00\n", + " k_scale 105032.97 22799.59 102893.23 69152.84 139024.75 1271.63 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1200.58 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 54.84it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.64 0.00 0.64 0.64 0.64 2.44 3.46\n", + " k_scale 4593.36 0.00 4593.36 4593.36 4593.36 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 4.45 1.48\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:03<00:00, 63.41it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 2.68 2.72\n", + " k_scale 343.26 0.00 343.26 343.26 343.26 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:10<00:00, 56.47it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.73 0.00 0.73 0.72 0.73 2.90 2.60\n", + " k_scale 15385.37 137.50 15365.96 15194.92 15600.57 2.95 2.60\n", + " noise 0.01 0.00 0.01 0.01 0.01 4.96 1.78\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:17<00:00, 51.49it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.66 0.00 0.66 0.66 0.66 3.40 2.21\n", + " k_scale 374.75 0.00 374.75 374.75 374.75 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 20, Noise Level: 0.1\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1241.89it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.11 0.53 1.12 0.35 1.98 1166.88 1.00\n", + " k_scale 104306.29 22616.40 101626.67 71035.95 141794.48 1016.80 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1335.59 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:13<00:00, 54.40it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.87 2.79\n", + " k_scale 430.68 0.00 430.68 430.68 430.68 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 63.78it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.49 3.55\n", + " k_scale 4437.30 0.00 4437.30 4437.30 4437.30 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 8.50 1.02\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:09<00:00, 57.88it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.75 0.00 0.75 0.75 0.76 2.51 3.08\n", + " k_scale 16119.34 66.89 16109.67 16023.27 16241.33 7.75 1.30\n", + " noise 0.01 0.00 0.01 0.01 0.01 3.25 2.36\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:17<00:00, 51.66it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.54 0.00 0.54 0.54 0.54 2.68 2.73\n", + " k_scale 1269.00 0.00 1269.00 1269.00 1269.00 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "Seed: 3, n_init: 20, Noise Level: 0.5\n", + "\n", + "Step 1/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [00:03<00:00, 1271.50it/s, 7 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 1.10 0.52 1.11 0.33 1.95 1569.24 1.00\n", + " k_scale 104599.68 23676.24 101679.95 67753.70 138586.31 1137.48 1.00\n", + " noise 0.01 0.01 0.01 0.00 0.02 1359.68 1.00\n", + "\n", + "\n", + "Step 2/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 55.34it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.53 3.18\n", + " k_scale 685.96 0.00 685.96 685.96 685.96 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 3/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:02<00:00, 64.02it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.69 0.00 0.69 0.69 0.69 2.88 2.15\n", + " k_scale 65.58 0.00 65.58 65.58 65.58 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 4/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:12<00:00, 55.18it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.70 0.00 0.70 0.70 0.70 3.08 2.58\n", + " k_scale 158.34 0.00 158.34 158.34 158.34 nan nan\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + "\n", + "Step 5/5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:111: FutureWarning: `noise_prior` is deprecated and will be removed in a future version. Please use `noise_prior_dist` instead, which accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.HalfNormal(scale=0.1)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "/lustre/isaac/scratch/upratius/projects/gpax/gpax/models/gp.py:119: UserWarning: `kernel_prior` will remain available for complex priors. However, for modifying only the lengthscales, it is recommended to use `lengthscale_prior_dist` instead. `lengthscale_prior_dist` accepts an instance of a numpyro.distributions Distribution object, e.g., `dist.Gamma(2, 5)`, rather than a function that calls `numpyro.sample`.\n", + " warnings.warn(\n", + "sample: 100%|â–ˆ| 4000/4000 [01:17<00:00, 51.64it/s, 1023 steps \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + " k_length 0.67 0.00 0.67 0.67 0.67 0.50 1.00\n", + " k_scale 437.95 0.00 437.95 437.95 437.95 0.50 1.00\n", + " noise 0.01 0.00 0.01 0.01 0.01 0.50 1.00\n", + "\n", + " Seed n_init Noise_Level MSE Average_Uncertainty\n", + "0 1 10 0.00 206665.11 4.705776\n", + "1 1 10 0.01 206703.03 1.1732969\n", + "2 1 10 0.10 206704.39 1.4820279\n", + "3 1 10 0.50 206695.95 1.1728493\n", + "4 1 15 0.00 206429.17 4.312067\n", + "5 1 15 0.01 206703.86 nan\n", + "6 1 15 0.10 206194.23 41.119843\n", + "7 1 15 0.50 206438.97 nan\n", + "8 1 20 0.00 204810.6 nan\n", + "9 1 20 0.01 204980.75 3.6358469\n", + "10 1 20 0.10 205313.08 9.566991\n", + "11 1 20 0.50 205050.28 nan\n", + "12 2 10 0.00 206827.7 nan\n", + "13 2 10 0.01 206230.03 nan\n", + "14 2 10 0.10 206634.8 nan\n", + "15 2 10 0.50 206980.36 nan\n", + "16 2 15 0.00 204085.3 nan\n", + "17 2 15 0.01 204540.2 nan\n", + "18 2 15 0.10 202565.88 nan\n", + "19 2 15 0.50 205339.92 nan\n", + "20 2 20 0.00 200644.86 nan\n", + "21 2 20 0.01 201124.2 nan\n", + "22 2 20 0.10 200712.36 nan\n", + "23 2 20 0.50 201804.08 nan\n", + "24 3 10 0.00 205953.39 nan\n", + "25 3 10 0.01 205981.02 nan\n", + "26 3 10 0.10 206296.47 nan\n", + "27 3 10 0.50 205876.56 nan\n", + "28 3 15 0.00 202675.38 nan\n", + "29 3 15 0.01 202699.94 nan\n", + "30 3 15 0.10 202658.06 nan\n", + "31 3 15 0.50 202984.28 nan\n", + "32 3 20 0.00 201440.75 nan\n", + "33 3 20 0.01 201990.44 nan\n", + "34 3 20 0.10 203485.16 nan\n", + "35 3 20 0.50 201839.02 nan\n" + ] + } + ], + "source": [ + "# Define your parameter space\n", + "seeds = [1, 2, 3]\n", + "n_inits = [10, 15, 20]\n", + "noise_levels = [0, 0.01, 0.1, 0.5]\n", + "\n", + "# Assuming create_data and run_gp functions are defined elsewhere\n", + "\n", + "# Run the grid search\n", + "results_df = grid_search(seeds, n_inits, noise_levels)\n", + "\n", + "# Display the results DataFrame\n", + "print(results_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cd33131", + "metadata": {}, + "outputs": [], + "source": [ + "results_df.to_csv('grid_search_results.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "46f6f5b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Seedn_initNoise_LevelMSEAverage_Uncertainty
01100.00206665.114.705776
11100.01206703.031.1732969
21100.10206704.391.4820279
31100.50206695.951.1728493
41150.00206429.174.312067
51150.01206703.86nan
61150.10206194.2341.119843
71150.50206438.97nan
81200.00204810.6nan
91200.01204980.753.6358469
101200.10205313.089.566991
111200.50205050.28nan
122100.00206827.7nan
132100.01206230.03nan
142100.10206634.8nan
152100.50206980.36nan
162150.00204085.3nan
172150.01204540.2nan
182150.10202565.88nan
192150.50205339.92nan
202200.00200644.86nan
212200.01201124.2nan
222200.10200712.36nan
232200.50201804.08nan
243100.00205953.39nan
253100.01205981.02nan
263100.10206296.47nan
273100.50205876.56nan
283150.00202675.38nan
293150.01202699.94nan
303150.10202658.06nan
313150.50202984.28nan
323200.00201440.75nan
333200.01201990.44nan
343200.10203485.16nan
353200.50201839.02nan
\n", + "
" + ], + "text/plain": [ + " Seed n_init Noise_Level MSE Average_Uncertainty\n", + "0 1 10 0.00 206665.11 4.705776\n", + "1 1 10 0.01 206703.03 1.1732969\n", + "2 1 10 0.10 206704.39 1.4820279\n", + "3 1 10 0.50 206695.95 1.1728493\n", + "4 1 15 0.00 206429.17 4.312067\n", + "5 1 15 0.01 206703.86 nan\n", + "6 1 15 0.10 206194.23 41.119843\n", + "7 1 15 0.50 206438.97 nan\n", + "8 1 20 0.00 204810.6 nan\n", + "9 1 20 0.01 204980.75 3.6358469\n", + "10 1 20 0.10 205313.08 9.566991\n", + "11 1 20 0.50 205050.28 nan\n", + "12 2 10 0.00 206827.7 nan\n", + "13 2 10 0.01 206230.03 nan\n", + "14 2 10 0.10 206634.8 nan\n", + "15 2 10 0.50 206980.36 nan\n", + "16 2 15 0.00 204085.3 nan\n", + "17 2 15 0.01 204540.2 nan\n", + "18 2 15 0.10 202565.88 nan\n", + "19 2 15 0.50 205339.92 nan\n", + "20 2 20 0.00 200644.86 nan\n", + "21 2 20 0.01 201124.2 nan\n", + "22 2 20 0.10 200712.36 nan\n", + "23 2 20 0.50 201804.08 nan\n", + "24 3 10 0.00 205953.39 nan\n", + "25 3 10 0.01 205981.02 nan\n", + "26 3 10 0.10 206296.47 nan\n", + "27 3 10 0.50 205876.56 nan\n", + "28 3 15 0.00 202675.38 nan\n", + "29 3 15 0.01 202699.94 nan\n", + "30 3 15 0.10 202658.06 nan\n", + "31 3 15 0.50 202984.28 nan\n", + "32 3 20 0.00 201440.75 nan\n", + "33 3 20 0.01 201990.44 nan\n", + "34 3 20 0.10 203485.16 nan\n", + "35 3 20 0.50 201839.02 nan" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "373fb5c5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:.conda-gpax_hae]", + "language": "python", + "name": "conda-env-.conda-gpax_hae-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.0" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/trial_notebooks/gpax_schwefel_beta.ipynb b/trial_notebooks/gpax_schwefel_beta.ipynb new file mode 100644 index 0000000..b5daffc --- /dev/null +++ b/trial_notebooks/gpax_schwefel_beta.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "id": "81b1b4f2", + "metadata": {}, + "outputs": [], + "source": [ + "from time import time\n", + "import gpax\n", + "import numpyro\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7845c44f", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def schwefel_1d(x):\n", + "\n", + " return 418.9829 - x * np.sin(np.sqrt(np.abs(x)))\n", + "\n", + "def schwefel_nd(args):\n", + " output = 0\n", + " \n", + " for dim in range(args):\n", + " output += schwefel_1d(args[dim])\n", + "\n", + "def add_gaussian_noise(signal, noise_level):\n", + "\n", + " return signal + np.random.normal(0, noise_level, 1)[0]\n", + "\n", + "def schwefel_1d_with_noise(x, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_1d(x)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "def schwefel_nd_with_noise(args, noise_level = 0.01):\n", + " # Calculate the Schwefel function value\n", + "\n", + " schwefel_value = schwefel_nd(args)\n", + "\n", + " # Add Gaussian noise to the Schwefel function value\n", + "\n", + " noisy_schwefel_value = add_gaussian_noise(schwefel_value, noise_level)\n", + "\n", + " return noisy_schwefel_value\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7ed300b", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def create_data(seed, n_init, noise_level):\n", + "\n", + " np.random.seed(seed)\n", + " X_bounds = np.array([-500, 500])\n", + " X = np.random.uniform(X_bounds[0], X_bounds[1], size=( n_init,))\n", + " X = np.append(X, X_bounds)\n", + " X = np.sort(X)\n", + " y = schwefel_1d_with_noise(X, noise_level = noise_level)\n", + "\n", + " X_unmeasured = np.linspace(X_bounds[0], X_bounds[1], 200)\n", + " ground_truth = schwefel_1d_with_noise(X_unmeasured, noise_level = 0)\n", + " \n", + " return X, y, X_unmeasured, ground_truth\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "53f74f4b", + "metadata": {}, + "outputs": [], + "source": [ + "X, y, X_unmeasured, ground_truth = create_data(5, 15, 0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "7fac3cae", + "metadata": {}, + "outputs": [], + "source": [ + "# set variable names for gpax:\n", + "\n", + "X_test = X_unmeasured\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "defb4547", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "sample: 100%|â–ˆ| 4000/4000 [00:02<00:00, 1438.98it/s, 3 steps o\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mean std median 5.0% 95.0% n_eff r_hat\n", + "k_length[0] 60.16 18.79 64.62 43.15 82.82 28.27 1.01\n", + " k_scale 72369.17 15777.58 70201.93 53413.12 99248.16 53.36 1.03\n", + " noise 1.62 1.59 1.15 0.09 3.63 70.02 1.01\n", + "\n" + ] + } + ], + "source": [ + "import gpax\n", + "# Get random number generator keys (see JAX documentation for why it is neccessary)\n", + "rng_key, rng_key_predict = gpax.utils.get_keys()\n", + "\n", + "# Initialize model\n", + "gp_model = gpax.ExactGP(1, kernel='Matern')\n", + "\n", + "# Run HMC to obtain posterior samples\n", + "gp_model.fit(rng_key, X, y, num_chains=1)\n", + "\n", + "# Get GP prediction\n", + "posterior_mean, f_samples = gp_model.predict(rng_key_predict, X_test, n=200)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a95987d5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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EiecMFJMnfqesNsdYt68HULU14v3Z88WgKjPzxeB/HyxdNEiYTKZxH333Sc2bNggpk+fLmJiYsT06dND+8jJyRFPPPGEEEKI//3vfyI+Pl58+umnYseOHWLJkiXixRdfFEIIsWvXLmEymcSPP/4Y+u3y5cuFpmliy5YtTR7/7t27hdPpFGPGjBHr1q0T77//vkhNTRWTJk0KtTnhhBOEy+USY8eOFevXrxevv/66cDqdof3m5+cLs9ks3njjDbF9+3axfPly8dRTT4V+/+9//1t07dpVfPbZZ2LLli1i+vTpwm63i/nz5wshhPjmm28EIHr16iW++OILsXnzZlFWViYGDBgg7r777ojj7d+/f2hZY2OjuOeee0R+fr7YunVr6LjeeustIYQQNTU14sILLxSnn366KCwsFIWFhcLj8Yht27YJQKxYseIX9UF8fLyYPHmy2Lhxo5g5c6bQNE188cUXB7wuvwW/5f43YMDAnwP7G0P1aHHS8cADD4icnByxYcMGIYQQK1euFOnp6eL1118XQgixZcuWiJezwrBhw8TNN98shBDilVdeEYmJiRHrvV6vMJvN4r333juo4zhUpEOIfQnG2rVrfzfCEYHGxhDhENu2iUsuvFSccMJIsWpZo+jZ81hx9tlXCm9VnXj/7bcFEGr797POEqeddlrEpu644w7RrVu30Hc96XjsscdE586dRWNjY5OHccYZZ4jrr78+9P2mm24SJ554YrOH/a9//Ut06dJFBAKB0LJnn31WuFwu4ff7hRBywM3Ly4toc+edd4q8vDwhhBDvvvuuiI+PF9XV1fts3+12C6fTKRYuXBix/KqrrhKXXHKJECJMOubMmRPR5oknnhAdOnQIfd+wYYMAxLp165o9nxtuuEGcd955oe9XXHGFGDlyZESbaNJxsH1w3HHHRWxn4MCB4s477xRCHPi6/FoYpMOAAQMHwsGSjhZ3r9x1111cfPHFdO3aFavVSt++fbnlllsYNWoUAEVFRQBkZGRE/C4jIyO0rqioiPT09Ij1FouF5OTkUJtoeDweqqurIz6HCqmpqUyZMoXMzEyKiooYP348RUVFZGZmMmXKFFJTU3+fHW3eHP4/ORmfX2o34swN3HrrFD75ZCbLV2/c52frNm9m6ODBEcuGDh3Kpk2b8Pv9+7S/4IILaGhooH379lxzzTW8//77EW6Aa665hjfffBO3201jYyNvvPEGV155ZbOHvW7dOgYPHhyRfG3o0KGhejcKxx57bESbwYMHh47xtNNOIycnh/bt23PZZZcxa9askMZl8+bN1NfXc9ppp+FyuUKfV199lS1btkQcy4ABAyK+X3zxxWzfvp3FixcDMGvWLPr160fXrl1DbZ599ln69+9PWloaLpeLF198kZ07dzZ7vr+lD3r16hXxu6ysLIqLi4EDXxcDBgwYaGm0OOl4++23mTVrFm+88QbLly9n5syZPProo8ycOfOQ7nfKlCkkJCSEPm3atDmk+0tNTeW2226LWHbbbbf9ZsJRXV1NXV0dAb8/UhRqseAL8gWn2c2Jxx/HsccO55777oHgwCbsdmoAHxBoaDjofbZp04YNGzbw3HPPERMTw5gxYxg2bFioAu9f//pX7HY777//Ph999BFerzdCX3EoEBcXx/Lly3nzzTfJysrinnvuoXfv3lRWVoYExZ988gkrV64MfdauXRuh6wCIjY2N+J6ZmcnJJ5/MG2+8AcAbb7wRIsQAs2fPZty4cVx11VV88cUXrFy5kn/84x80NjYekvOMziSraRqBYATSga6LAQMGDLQ0Wpx03HHHHSFrR8+ePbnsssu49dZbmTJlCiBf+gB79+6N+N3evXtD6zIzM0OzPQWfz0d5eXmoTTQmTJhAVVVV6LNr167f+9QiUFpayuOPPx6x7PHHH282quVgEAgEqK2tpaqqCl9lZXhFSgqYzfiDlg6n2YMrJsCNNz7EvK8+YdGSJQBoLhduoGO7dvzw3XcRycIWLFhA586dIyrU6hETE8Nf//pXpk2bxvz581m0aBFr1qwBpJXpiiuuYPr06UyfPp2LL754vzVr8vLyWLRoUYQodMGCBcTFxdG6devQsiXB41ZYvHgxnTp1Ch2jxWLh1FNPZerUqaxevZrt27fz9ddf061bN+x2Ozt37qRjx44Rn4Mhm6NGjeKtt95i0aJFbN26lYsvvjjiOIcMGcKYMWPo27cvHTt23Md6YrPZmrQY/Zo+OBD2d10MGDBgoKXR4qSjvr5+n9oOZrM5NHvLzc0lMzOTr776KrS+urqaJUuWMDjoEhg8eDCVlZUsW7Ys1Obrr78mEAgwaNCgJvdrt9uJj4+P+BwqqCgV5VKZOnVqyNXSVFTLwaIhaJ2wWCxYt20Lr0hMxBcw4Q9I0hGjuXHF+OnYsSennz6Kac88I9s5HMQC1116KfPz87nvvvvYuHEjM2fO5JlnnmHcuHFN7nfGjBm88sor/PTTT2zdupXXX3+dmJgYcnJyQm2uvvpqvv76az777LP9ulYAxowZw65du7jppptYv349H3zwAZMmTeK2226LuDd27tzJbbfdxoYNG3jzzTd5+umnGTt2LAAff/wx06ZNY+XKlezYsYNXX32VQCBAly5diIuLY9y4cdx6663MnDmTLVu2sHz5cp5++umDsqide+651NTUcP3113PSSSeRnZ0dWtepUyeWLl3K559/zsaNG5k4cSL5+fkRv2/Xrh2rV69mw4YNlJaWNml5ONg+2B8O5roYMGDAQIvisChM9oMrrrhCtGrVSnz88cdi27Zt4r333hOpqali/PjxoTYPPfSQSExMFB988IFYvXq1GDlypMjNzY0Qtp1++umib9++YsmSJeKHH34QnTp1CokEDwZHY/RKSUmJ2LNnj6iuqgoLSPPzhairE1VlXnHWWVeIk04aKcT69SJQUyM2bBDigw+2CavVJoWklZXCv2KFKMjPFy8+/LDI69xZWK1W0bZt24hoISEihaTvv/++GDRokIiPjxexsbHi2GOPFV9++eU+x3f88ceL7t27H9S5zJ8/XwwcOFDYbDaRmZkp7rzzTuH1ekPrTzjhBDFmzBjxz3/+U8THx4ukpCTxr3/9KyS8/P7778UJJ5wgkpKSRExMjOjVq1cogkQIGeHz5JNPii5dugir1SrS0tLE8OHDxbfffiuECAtJKyoqmjy+Cy+8UADiv//9b8Ryt9stRo8eLRISEkRiYqK4/vrrxV133SV69+4dalNcXCxOO+004XK5BCC++eabfYSkB9sHY8eOjdj/yJEjxRVXXCGEOPjr8kthCEkNGDBwIByskFQTomULcNTU1DBx4kTef/99iouLyc7O5pJLLuGee+7BZrMBMv/ApEmTePHFF6msrOS4447jueeeo3PnzqHtlJeXc+ONN/LRRx9hMpk477zzmDZtGi6X66COo7q6moSEBKqqqvaxerjdbrZt20Zubu4vLu2t8nRUVVXtIxpVFpCEhATuvffeffQE+4PP5wu5lNKdTixKROp0Qm4uO4pslJSZSUqCDp610Lo1bls8P/8sEEIjt42XlMQA7NxJZVUV9YATSOzfP6T5+C0QQtCpUyfG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot results\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(6, 3))\n", + "ax.set_xlabel(\"$x$\")\n", + "ax.set_ylabel(\"$y$\")\n", + "ax.scatter(X, y, marker='x', c='k', zorder=1, label=\"Noisy observations\", alpha=0.7)\n", + "for y1 in f_samples:\n", + " ax.plot(X_test, y1.mean(0), lw=.1, zorder=0, c='r', alpha=.1)\n", + "l, = ax.plot(X_test, f_samples[0].mean(0), lw=1, c='r', alpha=1, label=\"Sampled predictions\")\n", + "ax.plot(X_test, posterior_mean, lw=1.5, zorder=1, c='b', label='Posterior mean')\n", + "ax.plot(X_test, ground_truth, c='k', linestyle='--', label='True function', alpha=0.5)\n", + "ax.legend(loc='upper left')\n", + "l.set_alpha(0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "672fcbb2", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:.conda-gpax_hae]", + "language": "python", + "name": "conda-env-.conda-gpax_hae-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.0" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}