{ "cells": [ { "cell_type": "markdown", "id": "77765219", "metadata": { "collapsed": true, "customInput": null, "originalKey": "ac61b043-8ebf-43b9-9fa5-ed9a42a184ce", "papermill": { "duration": 0.006374, "end_time": "2024-09-23T20:32:57.749446", "exception": false, "start_time": "2024-09-23T20:32:57.743072", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Tune a CNN on MNIST\n", "\n", "This tutorial walks through using Ax to tune two hyperparameters (learning rate and momentum) for a PyTorch CNN on the MNIST dataset trained using SGD with momentum." ] }, { "cell_type": "code", "execution_count": 1, "id": "d4b97dc4", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:32:57.763043Z", "iopub.status.busy": "2024-09-23T20:32:57.762468Z", "iopub.status.idle": "2024-09-23T20:33:01.421760Z", "shell.execute_reply": "2024-09-23T20:33:01.420587Z" }, "executionStartTime": 1690415246079, "executionStopTime": 1690415266324, "originalKey": "c2b37f0f-3644-4367-912f-f775082f6676", "papermill": { "duration": 3.685277, "end_time": "2024-09-23T20:33:01.440797", "exception": false, "start_time": "2024-09-23T20:32:57.755520", "status": "completed" }, "requestMsgId": "0b481630-f0f4-436a-a205-a25aa163a364", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:01] ax.utils.notebook.plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:01] ax.utils.notebook.plotting: Please see\n", " (https://ax.dev/tutorials/visualizations.html#Fix-for-plots-that-are-not-rendering)\n", " if visualizations are not rendering.\n" ] }, { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import torch\n", "\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "from ax.service.ax_client import AxClient, ObjectiveProperties\n", "from ax.service.utils.report_utils import exp_to_df\n", "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", "from ax.utils.tutorials.cnn_utils import evaluate, load_mnist, train\n", "from torch._tensor import Tensor\n", "from torch.utils.data import DataLoader\n", "\n", "init_notebook_plotting()" ] }, { "cell_type": "code", "execution_count": 2, "id": "c092784e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:01.524281Z", "iopub.status.busy": "2024-09-23T20:33:01.523765Z", "iopub.status.idle": "2024-09-23T20:33:01.529302Z", "shell.execute_reply": "2024-09-23T20:33:01.528768Z" }, "executionStartTime": 1690415266521, "executionStopTime": 1690415266529, "originalKey": "4d0a27c4-a6ce-4b7d-97eb-1c229aabb375", "papermill": { "duration": 0.049199, "end_time": "2024-09-23T20:33:01.530579", "exception": false, "start_time": "2024-09-23T20:33:01.481380", "status": "completed" }, "requestMsgId": "fd975d25-a185-4b09-a50f-7b2bcd89f93f", "showInput": true, "tags": [] }, "outputs": [], "source": [ "torch.manual_seed(42)\n", "dtype = torch.float\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "markdown", "id": "9003a843", "metadata": { "customInput": null, "originalKey": "10384e51-444c-4265-b56d-ad078d05d2a1", "papermill": { "duration": 0.041071, "end_time": "2024-09-23T20:33:01.613475", "exception": false, "start_time": "2024-09-23T20:33:01.572404", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 1. Load MNIST data\n", "First, we need to load the MNIST data and partition it into training, validation, and test sets.\n", "\n", "Note: this will download the dataset if necessary." ] }, { "cell_type": "code", "execution_count": 3, "id": "ad119fae", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:01.697397Z", "iopub.status.busy": "2024-09-23T20:33:01.696785Z", "iopub.status.idle": "2024-09-23T20:33:12.096363Z", "shell.execute_reply": "2024-09-23T20:33:12.095592Z" }, "executionStartTime": 1690415266733, "executionStopTime": 1690415266902, "originalKey": "6f0949e2-1064-44b8-99c0-f6ce23df7c63", "papermill": { "duration": 10.443158, "end_time": "2024-09-23T20:33:12.097846", "exception": false, "start_time": "2024-09-23T20:33:01.654688", "status": "completed" }, "requestMsgId": "8ce7dd21-9afb-4379-ad11-4112b4d27f8a", "showInput": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Failed to download (trying next):\n", "HTTP Error 403: Forbidden\n", "\n", "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/9912422 [00:00= p2\" or \"p1 + p2 <= some_bound\".\n", " # outcome_constraints: Optional, a list of strings of form \"constrained_metric <= some_bound\".\n", ")" ] }, { "cell_type": "markdown", "id": "73b704a8", "metadata": { "customInput": null, "originalKey": "af441a83-50fd-4385-a380-d8ebc570c0e5", "papermill": { "duration": 0.042868, "end_time": "2024-09-23T20:33:12.548352", "exception": false, "start_time": "2024-09-23T20:33:12.505484", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 4. Define how to evaluate trials\n" ] }, { "cell_type": "markdown", "id": "e91c6a08", "metadata": { "customInput": null, "originalKey": "c7630dfd-548b-408a-badf-b6abf79275e2", "papermill": { "duration": 0.042899, "end_time": "2024-09-23T20:33:12.634059", "exception": false, "start_time": "2024-09-23T20:33:12.591160", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "First we define a simple CNN class to classify the MNIST images" ] }, { "cell_type": "code", "execution_count": 6, "id": "edf1d68f", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:12.721297Z", "iopub.status.busy": "2024-09-23T20:33:12.720775Z", "iopub.status.idle": "2024-09-23T20:33:12.726000Z", "shell.execute_reply": "2024-09-23T20:33:12.725421Z" }, "executionStartTime": 1690415267282, "executionStopTime": 1690415267286, "originalKey": "e41fea0a-ae71-4e6f-8c0a-6eb6ae143fb0", "papermill": { "duration": 0.05046, "end_time": "2024-09-23T20:33:12.727287", "exception": false, "start_time": "2024-09-23T20:33:12.676827", "status": "completed" }, "requestMsgId": "60f14ec9-eb1b-4e88-95c5-15c91f999c90", "showInput": true, "tags": [] }, "outputs": [], "source": [ "class CNN(nn.Module):\n", " \n", " def __init__(self) -> None:\n", " super().__init__()\n", " self.conv1 = nn.Conv2d(1, 20, kernel_size=5, stride=1)\n", " self.fc1 = nn.Linear(8 * 8 * 20, 64)\n", " self.fc2 = nn.Linear(64, 10)\n", "\n", " def forward(self, x: Tensor) -> Tensor:\n", " x = F.relu(self.conv1(x))\n", " x = F.max_pool2d(x, 3, 3)\n", " x = x.view(-1, 8 * 8 * 20)\n", " x = F.relu(self.fc1(x))\n", " x = self.fc2(x)\n", " return F.log_softmax(x, dim=-1)" ] }, { "cell_type": "markdown", "id": "42a9a16a", "metadata": { "customInput": null, "originalKey": "8ef6bcb9-c492-4874-b8c7-a07f7e6291ad", "papermill": { "duration": 0.043446, "end_time": "2024-09-23T20:33:12.813638", "exception": false, "start_time": "2024-09-23T20:33:12.770192", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "In this tutorial, we want to optimize classification accuracy on the validation set as a function of the learning rate and momentum. The `train_evaluate` function takes in a parameterization (set of parameter values), computes the classification accuracy, and returns that metric. " ] }, { "cell_type": "code", "execution_count": 7, "id": "eafe2fe7", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:12.902258Z", "iopub.status.busy": "2024-09-23T20:33:12.901765Z", "iopub.status.idle": "2024-09-23T20:33:12.905998Z", "shell.execute_reply": "2024-09-23T20:33:12.905345Z" }, "executionStartTime": 1690415267388, "executionStopTime": 1690415267395, "originalKey": "a7e4bcc4-7494-429b-bb93-7ad84d0985af", "papermill": { "duration": 0.050234, "end_time": "2024-09-23T20:33:12.907485", "exception": false, "start_time": "2024-09-23T20:33:12.857251", "status": "completed" }, "requestMsgId": "5d486dbf-60cb-453d-8f24-8605f974b0a7", "showInput": true, "tags": [] }, "outputs": [], "source": [ "def train_evaluate(parameterization):\n", " \"\"\"\n", " Train the model and then compute an evaluation metric.\n", "\n", " In this tutorial, the CNN utils package is doing a lot of work\n", " under the hood:\n", " - `train` initializes the network, defines the loss function\n", " and optimizer, performs the training loop, and returns the\n", " trained model.\n", " - `evaluate` computes the accuracy of the model on the\n", " evaluation dataset and returns the metric.\n", "\n", " For your use case, you can define training and evaluation functions\n", " of your choosing.\n", "\n", " \"\"\"\n", " net = CNN()\n", " net = train(\n", " net=net,\n", " train_loader=train_loader,\n", " parameters=parameterization,\n", " dtype=dtype,\n", " device=device,\n", " )\n", "\n", " return evaluate(\n", " net=net, \n", " data_loader=valid_loader, \n", " dtype=dtype, \n", " device=device,\n", " )\n" ] }, { "cell_type": "markdown", "id": "f1707cfb", "metadata": { "customInput": null, "originalKey": "9ab127a8-021f-4ec8-9f4e-f4256a2e322a", "papermill": { "duration": 0.043079, "end_time": "2024-09-23T20:33:12.993422", "exception": false, "start_time": "2024-09-23T20:33:12.950343", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 5. Run optimization loop\n" ] }, { "cell_type": "markdown", "id": "20fb6e6e", "metadata": { "customInput": null, "originalKey": "411a2fb4-e8a3-4414-bc17-09f0b5ba3e74", "papermill": { "duration": 0.043484, "end_time": "2024-09-23T20:33:13.080451", "exception": false, "start_time": "2024-09-23T20:33:13.036967", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "First we use `attach_trial` to attach a custom trial with manually-chosen parameters. This step is optional, but we include it here to demonstrate adding manual trials and to serve as a baseline model with decent performance. " ] }, { "cell_type": "code", "execution_count": 8, "id": "7d3041d6", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:13.168762Z", "iopub.status.busy": "2024-09-23T20:33:13.168172Z", "iopub.status.idle": "2024-09-23T20:33:19.893765Z", "shell.execute_reply": "2024-09-23T20:33:19.893085Z" }, "executionStartTime": 1690415267533, "executionStopTime": 1690415287786, "originalKey": "1388ef55-5642-46ab-b297-c76a73a48aca", "papermill": { "duration": 6.771374, "end_time": "2024-09-23T20:33:19.895134", "exception": false, "start_time": "2024-09-23T20:33:13.123760", "status": "completed" }, "requestMsgId": "b32a4981-ad59-46e1-b701-fa5a5f118d8b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:13] ax.core.experiment: Attached custom parameterizations [{'lr': 2.6e-05, 'momentum': 0.58}] as trial 0.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:19] ax.service.ax_client: Completed trial 0 with data: {'accuracy': (0.841833, None)}.\n" ] } ], "source": [ "# Attach the trial\n", "ax_client.attach_trial(\n", " parameters={\"lr\": 0.000026, \"momentum\": 0.58}\n", ")\n", "\n", "# Get the parameters and run the trial \n", "baseline_parameters = ax_client.get_trial_parameters(trial_index=0)\n", "ax_client.complete_trial(trial_index=0, raw_data=train_evaluate(baseline_parameters))" ] }, { "cell_type": "markdown", "id": "6ff3d1fd", "metadata": { "customInput": null, "originalKey": "f0f886a1-c5c8-44bb-b2fd-9fa3f140357a", "papermill": { "duration": 0.043319, "end_time": "2024-09-23T20:33:19.981849", "exception": false, "start_time": "2024-09-23T20:33:19.938530", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Now we start the optimization loop.\n", "\n", "At each step, the user queries the client for a new trial then submits the evaluation of that trial back to the client.\n", "\n", "Note that Ax auto-selects an appropriate optimization algorithm based on the search space. For more advanced use cases that require a specific optimization algorithm, pass a `generation_strategy` argument into the `AxClient` constructor. Note that when Bayesian Optimization is used, generating new trials may take a few minutes." ] }, { "cell_type": "code", "execution_count": 9, "id": "8e2a04a2", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:33:20.070261Z", "iopub.status.busy": "2024-09-23T20:33:20.069758Z", "iopub.status.idle": "2024-09-23T20:36:32.470558Z", "shell.execute_reply": "2024-09-23T20:36:32.469835Z" }, "executionStartTime": 1690415287908, "executionStopTime": 1690415945107, "originalKey": "bff5d714-1ab3-43d3-b9b3-8c3a53c81dcb", "papermill": { "duration": 192.491895, "end_time": "2024-09-23T20:36:32.517293", "exception": false, "start_time": "2024-09-23T20:33:20.025398", "status": "completed" }, "requestMsgId": "a203534f-85dd-4dfa-9fa6-6aa46a0200a3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.QqcA7fo0ui/Ax-main/ax/modelbridge/cross_validation.py:463: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 09-23 20:33:20] ax.service.ax_client: Generated new trial 1 with parameters {'lr': 0.009955, 'momentum': 0.633423} using model Sobol.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:26] ax.service.ax_client: Completed trial 1 with data: {'accuracy': (0.100333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.QqcA7fo0ui/Ax-main/ax/modelbridge/cross_validation.py:463: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 09-23 20:33:26] ax.service.ax_client: Generated new trial 2 with parameters {'lr': 9e-05, 'momentum': 0.335441} using model Sobol.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:33] ax.service.ax_client: Completed trial 2 with data: {'accuracy': (0.884333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.QqcA7fo0ui/Ax-main/ax/modelbridge/cross_validation.py:463: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 09-23 20:33:33] ax.service.ax_client: Generated new trial 3 with parameters {'lr': 2e-06, 'momentum': 0.902833} using model Sobol.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:40] ax.service.ax_client: Completed trial 3 with data: {'accuracy': (0.678667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.QqcA7fo0ui/Ax-main/ax/modelbridge/cross_validation.py:463: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 09-23 20:33:40] ax.service.ax_client: Generated new trial 4 with parameters {'lr': 0.10174, 'momentum': 0.065787} using model Sobol.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:46] ax.service.ax_client: Completed trial 4 with data: {'accuracy': (0.100333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.QqcA7fo0ui/Ax-main/ax/modelbridge/cross_validation.py:463: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 09-23 20:33:46] ax.service.ax_client: Generated new trial 5 with parameters {'lr': 0.017004, 'momentum': 0.802601} using model Sobol.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:53] ax.service.ax_client: Completed trial 5 with data: {'accuracy': (0.088167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:33:53] ax.service.ax_client: Generated new trial 6 with parameters {'lr': 3.5e-05, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:00] ax.service.ax_client: Completed trial 6 with data: {'accuracy': (0.774, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:00] ax.service.ax_client: Generated new trial 7 with parameters {'lr': 8.3e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:07] ax.service.ax_client: Completed trial 7 with data: {'accuracy': (0.897667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:08] ax.service.ax_client: Generated new trial 8 with parameters {'lr': 4.6e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:15] ax.service.ax_client: Completed trial 8 with data: {'accuracy': (0.891333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:16] ax.service.ax_client: Generated new trial 9 with parameters {'lr': 0.000125, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:22] ax.service.ax_client: Completed trial 9 with data: {'accuracy': (0.853167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:23] ax.service.ax_client: Generated new trial 10 with parameters {'lr': 7.2e-05, 'momentum': 0.726163} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:30] ax.service.ax_client: Completed trial 10 with data: {'accuracy': (0.900833, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:31] ax.service.ax_client: Generated new trial 11 with parameters {'lr': 0.000173, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:38] ax.service.ax_client: Completed trial 11 with data: {'accuracy': (0.846833, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:39] ax.service.ax_client: Generated new trial 12 with parameters {'lr': 5.9e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:46] ax.service.ax_client: Completed trial 12 with data: {'accuracy': (0.892167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:47] ax.service.ax_client: Generated new trial 13 with parameters {'lr': 8.7e-05, 'momentum': 0.64011} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:54] ax.service.ax_client: Completed trial 13 with data: {'accuracy': (0.8895, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:34:55] ax.service.ax_client: Generated new trial 14 with parameters {'lr': 6.1e-05, 'momentum': 0.819741} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:02] ax.service.ax_client: Completed trial 14 with data: {'accuracy': (0.906333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:03] ax.service.ax_client: Generated new trial 15 with parameters {'lr': 1e-06, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:10] ax.service.ax_client: Completed trial 15 with data: {'accuracy': (0.15, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:11] ax.service.ax_client: Generated new trial 16 with parameters {'lr': 3.3e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:18] ax.service.ax_client: Completed trial 16 with data: {'accuracy': (0.82, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:19] ax.service.ax_client: Generated new trial 17 with parameters {'lr': 0.000113, 'momentum': 0.591139} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:26] ax.service.ax_client: Completed trial 17 with data: {'accuracy': (0.911, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:27] ax.service.ax_client: Generated new trial 18 with parameters {'lr': 8.5e-05, 'momentum': 0.551459} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:34] ax.service.ax_client: Completed trial 18 with data: {'accuracy': (0.888167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:36] ax.service.ax_client: Generated new trial 19 with parameters {'lr': 0.000109, 'momentum': 0.719968} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:42] ax.service.ax_client: Completed trial 19 with data: {'accuracy': (0.919667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:44] ax.service.ax_client: Generated new trial 20 with parameters {'lr': 0.000143, 'momentum': 0.63833} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:51] ax.service.ax_client: Completed trial 20 with data: {'accuracy': (0.902667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:52] ax.service.ax_client: Generated new trial 21 with parameters {'lr': 9.5e-05, 'momentum': 0.698897} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:35:59] ax.service.ax_client: Completed trial 21 with data: {'accuracy': (0.897333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:01] ax.service.ax_client: Generated new trial 22 with parameters {'lr': 0.000133, 'momentum': 0.747599} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:07] ax.service.ax_client: Completed trial 22 with data: {'accuracy': (0.930333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:09] ax.service.ax_client: Generated new trial 23 with parameters {'lr': 0.000189, 'momentum': 0.672589} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:16] ax.service.ax_client: Completed trial 23 with data: {'accuracy': (0.938167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:17] ax.service.ax_client: Generated new trial 24 with parameters {'lr': 0.000177, 'momentum': 0.547454} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:24] ax.service.ax_client: Completed trial 24 with data: {'accuracy': (0.916667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:25] ax.service.ax_client: Generated new trial 25 with parameters {'lr': 0.000269, 'momentum': 0.596213} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:32] ax.service.ax_client: Completed trial 25 with data: {'accuracy': (0.936, None)}.\n" ] } ], "source": [ "for i in range(25):\n", " parameters, trial_index = ax_client.get_next_trial()\n", " # Local evaluation here can be replaced with deployment to external system.\n", " ax_client.complete_trial(trial_index=trial_index, raw_data=train_evaluate(parameters))" ] }, { "cell_type": "markdown", "id": "3d9842b2", "metadata": { "customInput": null, "originalKey": "ccd16059-db9f-475b-b527-75afb320e0f4", "papermill": { "duration": 0.045713, "end_time": "2024-09-23T20:36:32.608390", "exception": false, "start_time": "2024-09-23T20:36:32.562677", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "### How many trials can run in parallel?\n", "By default, Ax restricts number of trials that can run in parallel for some optimization stages, in order to improve the optimization performance and reduce the number of trials that the optimization will require. To check the maximum parallelism for each optimization stage:" ] }, { "cell_type": "code", "execution_count": 10, "id": "d459ee9b", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:32.700741Z", "iopub.status.busy": "2024-09-23T20:36:32.700444Z", "iopub.status.idle": "2024-09-23T20:36:32.707208Z", "shell.execute_reply": "2024-09-23T20:36:32.706576Z" }, "executionStartTime": 1690415945269, "executionStopTime": 1690415945336, "originalKey": "7182d2f9-912c-464c-b5ad-f65ce6f00017", "papermill": { "duration": 0.054648, "end_time": "2024-09-23T20:36:32.708437", "exception": false, "start_time": "2024-09-23T20:36:32.653789", "status": "completed" }, "requestMsgId": "4cb4ff79-e45b-4c7d-86a1-7f8007eb2c81", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(5, 5), (-1, 3)]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_max_parallelism()" ] }, { "cell_type": "markdown", "id": "db6a4cd3", "metadata": { "customInput": null, "originalKey": "e2f429e6-2ec8-4af2-906b-52a36a53d329", "papermill": { "duration": 0.045624, "end_time": "2024-09-23T20:36:32.799388", "exception": false, "start_time": "2024-09-23T20:36:32.753764", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "The output of this function is a list of tuples of form (number of trials, max parallelism), so the example above means \"the max parallelism is 5 for the first 5 trials and 3 for all subsequent trials.\" This is because the first 5 trials are produced quasi-randomly and can all be evaluated at once, and subsequent trials are produced via Bayesian optimization, which converges on optimal point in fewer trials when parallelism is limited. MaxParallelismReachedException indicates that the parallelism limit has been reached –– refer to the 'Service API Exceptions Meaning and Handling' section at the end of the tutorial for handling.\n", "\n" ] }, { "cell_type": "markdown", "id": "bf21680d", "metadata": { "customInput": null, "originalKey": "86c7aef9-993a-411e-add5-05839b00d3cf", "papermill": { "duration": 0.045483, "end_time": "2024-09-23T20:36:32.890456", "exception": false, "start_time": "2024-09-23T20:36:32.844973", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "### How to view all existing trials during optimization?" ] }, { "cell_type": "code", "execution_count": 11, "id": "3ebfa49c", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:32.982746Z", "iopub.status.busy": "2024-09-23T20:36:32.982464Z", "iopub.status.idle": "2024-09-23T20:36:33.012706Z", "shell.execute_reply": "2024-09-23T20:36:33.012165Z" }, "executionStartTime": 1690415945532, "executionStopTime": 1690415946199, "originalKey": "3fbad5dc-863a-494e-b04f-d7dc1e47936c", "papermill": { "duration": 0.077892, "end_time": "2024-09-23T20:36:33.013989", "exception": false, "start_time": "2024-09-23T20:36:32.936097", "status": "completed" }, "requestMsgId": "905ea8b6-add0-473e-8516-5be6ad7d7658", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[WARNING 09-23 20:36:32] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trial_indexarm_nametrial_statusgeneration_methodaccuracylrmomentum
000_0COMPLETEDManual0.8418330.0000260.580000
111_0COMPLETEDSobol0.1003330.0099550.633423
222_0COMPLETEDSobol0.8843330.0000900.335441
333_0COMPLETEDSobol0.6786670.0000020.902833
444_0COMPLETEDSobol0.1003330.1017400.065787
555_0COMPLETEDSobol0.0881670.0170040.802601
666_0COMPLETEDBoTorch0.7740000.0000350.000000
777_0COMPLETEDBoTorch0.8976670.0000831.000000
888_0COMPLETEDBoTorch0.8913330.0000461.000000
999_0COMPLETEDBoTorch0.8531670.0001251.000000
101010_0COMPLETEDBoTorch0.9008330.0000720.726163
111111_0COMPLETEDBoTorch0.8468330.0001730.000000
121212_0COMPLETEDBoTorch0.8921670.0000591.000000
131313_0COMPLETEDBoTorch0.8895000.0000870.640110
141414_0COMPLETEDBoTorch0.9063330.0000610.819741
151515_0COMPLETEDBoTorch0.1500000.0000010.000000
161616_0COMPLETEDBoTorch0.8200000.0000331.000000
171717_0COMPLETEDBoTorch0.9110000.0001130.591139
181818_0COMPLETEDBoTorch0.8881670.0000850.551459
191919_0COMPLETEDBoTorch0.9196670.0001090.719968
202020_0COMPLETEDBoTorch0.9026670.0001430.638330
212121_0COMPLETEDBoTorch0.8973330.0000950.698897
222222_0COMPLETEDBoTorch0.9303330.0001330.747599
232323_0COMPLETEDBoTorch0.9381670.0001890.672589
242424_0COMPLETEDBoTorch0.9166670.0001770.547454
252525_0COMPLETEDBoTorch0.9360000.0002690.596213
\n", "
" ], "text/plain": [ " trial_index arm_name trial_status generation_method accuracy lr \\\n", "0 0 0_0 COMPLETED Manual 0.841833 0.000026 \n", "1 1 1_0 COMPLETED Sobol 0.100333 0.009955 \n", "2 2 2_0 COMPLETED Sobol 0.884333 0.000090 \n", "3 3 3_0 COMPLETED Sobol 0.678667 0.000002 \n", "4 4 4_0 COMPLETED Sobol 0.100333 0.101740 \n", "5 5 5_0 COMPLETED Sobol 0.088167 0.017004 \n", "6 6 6_0 COMPLETED BoTorch 0.774000 0.000035 \n", "7 7 7_0 COMPLETED BoTorch 0.897667 0.000083 \n", "8 8 8_0 COMPLETED BoTorch 0.891333 0.000046 \n", "9 9 9_0 COMPLETED BoTorch 0.853167 0.000125 \n", "10 10 10_0 COMPLETED BoTorch 0.900833 0.000072 \n", "11 11 11_0 COMPLETED BoTorch 0.846833 0.000173 \n", "12 12 12_0 COMPLETED BoTorch 0.892167 0.000059 \n", "13 13 13_0 COMPLETED BoTorch 0.889500 0.000087 \n", "14 14 14_0 COMPLETED BoTorch 0.906333 0.000061 \n", "15 15 15_0 COMPLETED BoTorch 0.150000 0.000001 \n", "16 16 16_0 COMPLETED BoTorch 0.820000 0.000033 \n", "17 17 17_0 COMPLETED BoTorch 0.911000 0.000113 \n", "18 18 18_0 COMPLETED BoTorch 0.888167 0.000085 \n", "19 19 19_0 COMPLETED BoTorch 0.919667 0.000109 \n", "20 20 20_0 COMPLETED BoTorch 0.902667 0.000143 \n", "21 21 21_0 COMPLETED BoTorch 0.897333 0.000095 \n", "22 22 22_0 COMPLETED BoTorch 0.930333 0.000133 \n", "23 23 23_0 COMPLETED BoTorch 0.938167 0.000189 \n", "24 24 24_0 COMPLETED BoTorch 0.916667 0.000177 \n", "25 25 25_0 COMPLETED BoTorch 0.936000 0.000269 \n", "\n", " momentum \n", "0 0.580000 \n", "1 0.633423 \n", "2 0.335441 \n", "3 0.902833 \n", "4 0.065787 \n", "5 0.802601 \n", "6 0.000000 \n", "7 1.000000 \n", "8 1.000000 \n", "9 1.000000 \n", "10 0.726163 \n", "11 0.000000 \n", "12 1.000000 \n", "13 0.640110 \n", "14 0.819741 \n", "15 0.000000 \n", "16 1.000000 \n", "17 0.591139 \n", "18 0.551459 \n", "19 0.719968 \n", "20 0.638330 \n", "21 0.698897 \n", "22 0.747599 \n", "23 0.672589 \n", "24 0.547454 \n", "25 0.596213 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_trials_data_frame()" ] }, { "cell_type": "markdown", "id": "4c9f7018", "metadata": { "customInput": null, "originalKey": "9f1ebc55-e6f2-498f-9185-569227c2f3d5", "papermill": { "duration": 0.0464, "end_time": "2024-09-23T20:36:33.106422", "exception": false, "start_time": "2024-09-23T20:36:33.060022", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 6. Retrieve best parameters\n", "\n", "Once it's complete, we can access the best parameters found, as well as the corresponding metric values. Note that these parameters may not necessarily be the set that yielded the highest _observed_ accuracy because Ax uses the highest model _predicted_ accuracy to choose the best parameters (see [here](https://ax.dev/api/service.html#module-ax.service.utils.best_point_mixin) for more details). Due to randomness in the data or the algorithm itself, using observed accuracy may result in choosing an outlier for the best set of parameters. Using the model predicted best will use the model to regularize the observations and reduce the likelihood of picking some outlier in the data." ] }, { "cell_type": "code", "execution_count": 12, "id": "94097442", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:33.200701Z", "iopub.status.busy": "2024-09-23T20:36:33.200226Z", "iopub.status.idle": "2024-09-23T20:36:33.501298Z", "shell.execute_reply": "2024-09-23T20:36:33.500521Z" }, "executionStartTime": 1690415946312, "executionStopTime": 1690415949198, "originalKey": "8fdf0023-2bf5-4cdd-93ea-a8a708dc6845", "papermill": { "duration": 0.349998, "end_time": "2024-09-23T20:36:33.502940", "exception": false, "start_time": "2024-09-23T20:36:33.152942", "status": "completed" }, "requestMsgId": "c0b8c25d-c6ae-476e-be23-f1b963df296b", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'lr': 0.00018943860779047254, 'momentum': 0.6725887214728918}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "best_parameters, values = ax_client.get_best_parameters()\n", "best_parameters" ] }, { "cell_type": "code", "execution_count": 13, "id": "fda46306", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:33.603022Z", "iopub.status.busy": "2024-09-23T20:36:33.602683Z", "iopub.status.idle": "2024-09-23T20:36:33.607612Z", "shell.execute_reply": "2024-09-23T20:36:33.607079Z" }, "executionStartTime": 1690415949308, "executionStopTime": 1690415949313, "originalKey": "f3eb18fc-be99-494a-aeac-e9b05a3bc182", "papermill": { "duration": 0.059269, "end_time": "2024-09-23T20:36:33.608927", "exception": false, "start_time": "2024-09-23T20:36:33.549658", "status": "completed" }, "requestMsgId": "ac214ea0-ea8c-46f2-a988-b42893ef6d6d", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 0.9205199675367304}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean, covariance = values\n", "mean" ] }, { "cell_type": "markdown", "id": "4ef917d0", "metadata": { "customInput": null, "originalKey": "6be3b006-d090-4c73-a64a-12901d1af817", "papermill": { "duration": 0.04651, "end_time": "2024-09-23T20:36:33.701582", "exception": false, "start_time": "2024-09-23T20:36:33.655072", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 7. Plot the response surface and optimization trace\n", "\n", "Contour plot showing classification accuracy as a function of the two hyperparameters.\n", "\n", "The black squares show points that we have actually run; notice how they are clustered in the optimal region." ] }, { "cell_type": "code", "execution_count": 14, "id": "a86a04d9", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:33.795711Z", "iopub.status.busy": "2024-09-23T20:36:33.795209Z", "iopub.status.idle": "2024-09-23T20:36:34.390180Z", "shell.execute_reply": "2024-09-23T20:36:34.389444Z" }, "executionStartTime": 1690415949431, "executionStopTime": 1690415953540, "originalKey": "1beca759-2fa5-48d1-bfed-c9b13a054733", "papermill": { "duration": 0.646596, "end_time": "2024-09-23T20:36:34.394361", "exception": false, "start_time": "2024-09-23T20:36:33.747765", "status": "completed" }, "requestMsgId": "fa48963e-b43c-4079-81a4-079d347fe9ba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:36:33] ax.service.ax_client: Retrieving contour plot with parameter 'lr' on X-axis and 'momentum' on Y-axis, for metric 'accuracy'. Remaining parameters are affixed to the middle of their range.\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "autocolorscale": false, "autocontour": true, "colorbar": { "tickfont": { "size": 8 }, "ticksuffix": "", "x": 0.45, "y": 0.5 }, "colorscale": [ [ 0.0, "rgb(247,252,253)" ], [ 0.125, "rgb(229,245,249)" ], [ 0.25, "rgb(204,236,230)" ], [ 0.375, "rgb(153,216,201)" ], [ 0.5, "rgb(102,194,164)" ], [ 0.625, "rgb(65,174,118)" ], [ 0.75, "rgb(35,139,69)" ], [ 0.875, "rgb(0,109,44)" ], [ 1.0, "rgb(0,68,27)" ] ], "contours": { "coloring": "heatmap" }, "hoverinfo": "x+y+z", "ncontours": 25, "type": "contour", "x": [ 1e-06, 1.3011511650442548e-06, 1.692994354296022e-06, 2.2028415765056147e-06, 2.866229883678204e-06, 3.729398352432554e-06, 4.852511011181743e-06, 6.3138503555892e-06, 8.215273746089953e-06, 1.0689313005882424e-05, 1.390841207112662e-05, 1.809694657026198e-05, 2.354686311364001e-05, 3.063802837345029e-05, 3.986470631277378e-05, 5.1870009063012666e-05, 6.749072272319499e-05, 8.781563250096393e-05, 0.00011426141253772724, 0.00014867137004306603, 0.00019344392634026088, 0.0002516997901283655, 0.0003274994751669172, 0.0004261263236648159, 0.0005544547624925005, 0.0007214294601814526, 0.000938688782612345, 0.0012213760031100258, 0.0015891948094037057, 0.002067782677737912, 0.0026904978401970136, 0.0035007443993213955, 0.004554997653699184, 0.005926740503884541, 0.007711585311544345, 0.010033938212454078, 0.013055670395116691, 0.01698740074503987, 0.02210317627048227, 0.028759573555516536, 0.03742055263793628, 0.04868979566145066, 0.06335278435066323, 0.0824315491666629, 0.10725590623460621, 0.13955614735503497, 0.18158364372009145, 0.23626776957937787, 0.3074200836506151, 0.4 ], "xaxis": "x", "y": [ 0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0 ], "yaxis": "y", "z": [ [ 0.6957330039039327, 0.6941858141473526, 0.6934861988844155, 0.6938234622481394, 0.6953775357022972, 0.6983074999273307, 0.7027391322294856, 0.7087522108637041, 0.7163684822320755, 0.7255413175388845, 0.7361481274024436, 0.7479865464683205, 0.7607752342860848, 0.7741598643291214, 0.7877245041474522, 0.8010081536849234, 0.813525744609921, 0.8247924575867539, 0.8343498356666015, 0.8417919057515099, 0.8467894022136553, 0.849110238504331, 0.8486345973060248, 0.8453633917396823, 0.8394193558393278, 0.8310406042775793, 0.820567102752113, 0.8084210528757824, 0.7950826646928926, 0.7810631224521531, 0.7668767165451205, 0.7530141059348173, 0.7399184986146133, 0.7279662169448626, 0.7174526875690934, 0.7085844078872212, 0.7014769416799693, 0.6961585320616912, 0.6925785301202596, 0.6906195514455786, 0.6901121066057198, 0.6908504085641883, 0.6926081307316516, 0.6951530543099949, 0.6982597762239364, 0.7017199191372158, 0.7053495627852866, 0.7089938743599927, 0.7125291339035419, 0.7158625147639305 ], [ 0.6954373645853296, 0.694015182340541, 0.6934738526975208, 0.6940030880552985, 0.6957818996463039, 0.6989669950179991, 0.7036802715929575, 0.7099961486504894, 0.7179296493744756, 0.7274262590245931, 0.7383546206156009, 0.7505030666914175, 0.7635808145443461, 0.7772243738423847, 0.791009344588505, 0.8044673472797492, 0.8171073648690214, 0.8284403338820343, 0.8380054482812954, 0.8453963792014646, 0.8502855017663261, 0.8524442775903133, 0.8517581712110088, 0.848234864618998, 0.8420050426562159, 0.833315605708844, 0.8225157685273627, 0.8100370666620543, 0.7963687608756796, 0.7820304614450481, 0.7675439600517155, 0.7534062463336108, 0.7400655067531913, 0.7279015795242539, 0.7172119084494988, 0.7082035466859018, 0.7009912578453235, 0.6956012934029064, 0.6919800321153649, 0.6900063784470928, 0.6895066494837784, 0.6902706366925506, 0.6920676008571336, 0.6946611259299817, 0.6978219935324692, 0.7013385139210632, 0.7050240309795236, 0.7087215810317569, 0.7123059066110334, 0.715683192687497 ], [ 0.6951499109826992, 0.6938554805136197, 0.6934753692344702, 0.6941995884124093, 0.6962060929344851, 0.6996490589531472, 0.7046463308414318, 0.7112667905723581, 0.7195185663783129, 0.7293391054654769, 0.7405881640485683, 0.7530446986634259, 0.766408465967206, 0.780306855917442, 0.7943071102433478, 0.8079336423049903, 0.8206897145190235, 0.8320822914319276, 0.8416485182255143, 0.8489820201450636, 0.8537571126860167, 0.8557490755593886, 0.8548488780040453, 0.8510711327055926, 0.8445545667550447, 0.8355548831771649, 0.8244304894501671, 0.8116221318263294, 0.7976279422967475, 0.7829757353029327, 0.7681945553933884, 0.7537874642873632, 0.7402073738308566, 0.7278374043793078, 0.7169768137726786, 0.7078330464340189, 0.7005199446066304, 0.6950616915885958, 0.6914016603486213, 0.6894150498383644, 0.6889240225328886, 0.6897140135948243, 0.691549955274235, 0.6941913299463999, 0.6974052044239413, 0.7009766760263285, 0.7047164465094347, 0.7084655058014571, 0.7120971318464216, 0.7155165814108748 ], [ 0.6948704761190699, 0.6937063026380375, 0.6934900544247562, 0.6944119318897989, 0.6966486989374914, 0.7003518455210935, 0.7056349953331655, 0.712561322321855, 0.7211318976191164, 0.7312759896122454, 0.7428443613039388, 0.7556065331276104, 0.7692527970743276, 0.7834014818171726, 0.7976115938171368, 0.8114005241537094, 0.8242660536865706, 0.8357114556904485, 0.8452721327481924, 0.852541976977736, 0.8571975435714754, 0.8590181967474606, 0.8579006266372661, 0.8538665289014812, 0.8470627522619448, 0.8377538052288517, 0.8263072161759709, 0.8131728025402867, 0.7988573716784546, 0.7838967045464852, 0.7688268355680838, 0.7541566271529195, 0.7403434528637396, 0.727773473434353, 0.716747552267635, 0.7074733579295172, 0.700063690062682, 0.6945405895715804, 0.6908443945066063, 0.6888466098299935, 0.6883652893106219, 0.6891815846835125, 0.6910561916481771, 0.6937445943700514, 0.697010252515711, 0.700635156326374, 0.7044274645943245, 0.7082262097307107, 0.7119032813707076, 0.7153630706170787 ], [ 0.6945988862876632, 0.6935672267976689, 0.6935171877385585, 0.6946390488051942, 0.6971082500443722, 0.7010734442386997, 0.7066438727563064, 0.7138768389239594, 0.7227662047504491, 0.73323293092459, 0.7451186941176482, 0.7581835328169856, 0.7721082849999957, 0.786502291019324, 0.8009164588637688, 0.8148613546358798, 0.8278295271632672, 0.8393208473090429, 0.8488692866006827, 0.8560693190796795, 0.8606000380264646, 0.8622451544112011, 0.8609072881898491, 0.8566153602009574, 0.8495244076902702, 0.8399077331151039, 0.8281418982306425, 0.8146856358165652, 0.8000542164394595, 0.7847911343184265, 0.7694391364609652, 0.7545126021059271, 0.7404730926433544, 0.7277095597358046, 0.716524258871766, 0.7071249133204488, 0.6996231591283062, 0.6940388231243823, 0.6903091837916278, 0.6883020696330207, 0.6878314786903752, 0.6886743598272157, 0.690587272020061, 0.6933218122109863, 0.6966379476540147, 0.7003146736492982, 0.70415771051537, 0.7080042263181561, 0.7117248019187611, 0.7152230275660585 ], [ 0.6943349630154928, 0.6934378178743711, 0.6935560257120784, 0.6948798357064251, 0.697583233216046, 0.7018118870804327, 0.707670501125192, 0.7152103540733838, 0.7244179574334937, 0.7352058477176, 0.7474065359162761, 0.7607705473830638, 0.7749692917183505, 0.7896032086268538, 0.804215258233935, 0.8183093912825506, 0.831373184353454, 0.8429034024892964, 0.8524329025356542, 0.8595570571894072, 0.8639577946318386, 0.8654234300267397, 0.8638627142345886, 0.8593119248882081, 0.8519343417623606, 0.8420120350678495, 0.8299304966125368, 0.8161572023549944, 0.8012156577504487, 0.7856568016609459, 0.7700298024001035, 0.7548542600713585, 0.7405956401726308, 0.7276454285514073, 0.7163070546702496, 0.7067881250725773, 0.6991989917215324, 0.6935571984332547, 0.6897969440995158, 0.6877824043817881, 0.687323581671184, 0.6881933101674045, 0.6901441197276419, 0.6929238385774867, 0.6962890632437196, 0.7000159123713725, 0.7039077774885883, 0.7078000596536489, 0.7115621136253157, 0.7150967957748751 ], [ 0.6940785250620063, 0.6933176303098422, 0.693605805597424, 0.6951331600333532, 0.6980720957781335, 0.7025651555110652, 0.7087123571470053, 0.7165588099094073, 0.7260835445696258, 0.7371905698725969, 0.7497031659939096, 0.7633623289909239, 0.7778300809714984, 0.7926980635060795, 0.8075014532633751, 0.8217378073897315, 0.8348899999485504, 0.846451994037196, 0.8559558524719673, 0.8629981643988835, 0.8672639874880356, 0.868546493103038, 0.8667607556611191, 0.8619505301334502, 0.8542873795735678, 0.8440621008651644, 0.8316689966363631, 0.8175840975887199, 0.8023388997542484, 0.7864915029285922, 0.770597191825142, 0.7551804797505123, 0.7407104431872606, 0.7275808385481694, 0.7160960469111524, 0.7064633850124984, 0.6987918010279546, 0.6930964897721779, 0.6893085552805397, 0.6872885501429071, 0.6868425482759936, 0.6877393650250545, 0.6897276164162246, 0.6925514878642043, 0.6959643336650453, 0.6997395200941277, 0.7036782246171499, 0.7076141826466944, 0.711415608519485, 0.7149846937602906 ], [ 0.6938293904402433, 0.6932062109282993, 0.6936657491182181, 0.6953978649364645, 0.6985732514265034, 0.7033311877909345, 0.709766864922994, 0.7179190871875112, 0.7277592859901383, 0.7391828520613818, 0.7520037842524252, 0.765953548519456, 0.7806848358346028, 0.7957806070823805, 0.8107684336272487, 0.825139712724694, 0.8383728952482312, 0.8499594530376381, 0.8594309792436077, 0.8663855976887105, 0.8705117872478877, 0.8716078214323435, 0.8695952818817133, 0.8645255099179807, 0.8565783790342596, 0.8460533566280171, 0.8333534209672021, 0.8189629528855352, 0.8034211789128186, 0.7872930613063134, 0.7711396830456299, 0.7554901517278512, 0.7408168527519022, 0.727515543044102, 0.7158913290962525, 0.7061510634503919, 0.6984021718497516, 0.6926574372668647, 0.688844858495351, 0.6868214010234055, 0.6863892845520326, 0.6873134089108486, 0.6893385991530268, 0.6922055310421089, 0.6956644517889828, 0.6994861054157391, 0.703469574932519, 0.7074470353374048, 0.7112856490949293, 0.7148870138498048 ], [ 0.6935873784476809, 0.6931031018039513, 0.693735066311283, 0.6956727742284459, 0.6990850864174195, 0.7041078865208634, 0.7108314049462576, 0.7192880158044829, 0.7294414445542965, 0.7411783874295269, 0.7543035264453308, 0.7685388123016076, 0.7835276768477837, 0.798844532718731, 0.8140095377819068, 0.8285081748127224, 0.8418147600440108, 0.8534185910632509, 0.8628511188462549, 0.8697123199175457, 0.8736943825556207, 0.8746009216963734, 0.8723602003421338, 0.8670312432154108, 0.8588022475227292, 0.8479812797876457, 0.8349798427908913, 0.8202904468579308, 0.8044597734420843, 0.7880593344010345, 0.7716556800646415, 0.7557821826401472, 0.7409142259200382, 0.7274492913282585, 0.7156929811470446, 0.7058515083860663, 0.6980306590464342, 0.6922407447584634, 0.6884066536775082, 0.686381806390804, 0.6859646496866275, 0.6869162786523466, 0.6889778576580521, 0.691886693062608, 0.6953900666028516, 0.6992562358070737, 0.7032823135336259, 0.7072990232980129, 0.7111725669625543, 0.7148040210669353 ], [ 0.6933523116937164, 0.6930078431568062, 0.6938129594340722, 0.6959566974440885, 0.6996059659128764, 0.7048931263921896, 0.7119033233560931, 0.7206623856312749, 0.7311262386041515, 0.7431728216812447, 0.7565974798618866, 0.7711126793357556, 0.7863526806407062, 0.801883495598194, 0.8172180739111068, 0.8318362407180184, 0.8452084749765382, 0.8568222228274068, 0.8662091230910138, 0.8729713221760442, 0.8768050018042624, 0.8775193503435101, 0.8750494762569415, 0.8694621723536046, 0.8609539586794944, 0.8498414141607201, 0.8365443990651439, 0.8215633167337716, 0.805452012794218, 0.7887882218740248, 0.772143618442341, 0.756055499389594, 0.741001928445607, 0.7273818300429734, 0.715501069644871, 0.7055650448014904, 0.6976777860739456, 0.6918470777762241, 0.6879946971137398, 0.6859705682174708, 0.6855694532513907, 0.6865487606511335, 0.6886461316641336, 0.6915956503878153, 0.69514178095706, 0.6990504356024021, 0.7031168858329383, 0.7071705161326518, 0.7110766615923293, 0.7147359520962747 ], [ 0.6931240181105951, 0.6929199762600168, 0.6938986269169425, 0.6962484349830188, 0.7001342404505766, 0.7056847621059009, 0.7129799414070976, 0.7220389576057692, 0.7328098547220702, 0.7451617675055672, 0.7588806993851249, 0.7736696788959606, 0.7891538989721586, 0.8048911330277776, 0.8203873412898663, 0.8351169592286021, 0.8485469342740257, 0.8601631891875109, 0.8694978825711875, 0.8761556464121864, 0.8798369351204748, 0.8803567346493261, 0.8776571524859861, 0.8718128214794414, 0.8630285692713596, 0.8516293850676109, 0.8380433037941828, 0.8227783697381614, 0.8063952871458239, 0.7894776730803302, 0.7726019711733146, 0.7563090533818279, 0.7410793375338841, 0.7273129046216413, 0.7153156481435995, 0.7052919740425065, 0.6973440436282607, 0.6914770616279249, 0.6876096991526304, 0.6855884385611405, 0.685204452587258, 0.6862115882824861, 0.6883441084183417, 0.6913330286585044, 0.6949201494437077, 0.6988691841143745, 0.7029736959179116, 0.707061846082754, 0.7109981991504818, 0.7146830143335534 ], [ 0.692902332934552, 0.6928390463417402, 0.6939912673389214, 0.6965467833090692, 0.7006682525070381, 0.7064806364236111, 0.7140585651096548, 0.7234144750357078, 0.7344884607347307, 0.7471408192810738, 0.7611482238546181, 0.776204328465862, 0.7919253781037322, 0.807861085077726, 0.8235106519757502, 0.8383434033516199, 0.8518230687758636, 0.8634343804013661, 0.872710349844838, 0.8792584082318862, 0.8827835564830818, 0.8831067938702702, 0.8801773694665689, 0.8740778150465336, 0.8650212360518758, 0.853340914427587, 0.8394728612683877, 0.8239324944359678, 0.807287056849558, 0.7901256946807506, 0.773029254550805, 0.7565418247691819, 0.7411458446185322, 0.7272422607748299, 0.715136757552752, 0.7050325732919068, 0.6970298883991197, 0.6911312796163298, 0.6872523220518809, 0.6852361171929391, 0.6848703503423057, 0.6859054394495703, 0.6880724203364327, 0.6910994005107621, 0.6947256764171753, 0.6987129138823865, 0.7028531050358624, 0.7069733067450138, 0.7109374114379539, 0.7146453850256069 ], [ 0.6926871006439679, 0.692764605464366, 0.6940900834053103, 0.6968505401795713, 0.7012063431215394, 0.7072785883120638, 0.7151364949971066, 0.724785675060443, 0.7361582189054549, 0.7491055679942465, 0.7633950926624598, 0.7787111519183735, 0.7946611784239528, 0.8107870154674449, 0.8265813527344414, 0.8415086930225203, 0.8550298691425714, 0.8666287595366234, 0.8758395627332108, 0.8822728197763006, 0.8856383458792959, 0.8857633603982973, 0.8826043851139495, 0.8762518962444669, 0.8669272325434847, 0.8549718357636087, 0.8408294792094787, 0.8250226719836478, 0.8081248618060052, 0.7907303581912164, 0.7734240339904228, 0.7567528266789779, 0.7412008581512362, 0.7271696460170342, 0.7149644265884746, 0.704787095135527, 0.6967357419389721, 0.6908102713893766, 0.6869231779737082, 0.6849142493836559, 0.6845677921736656, 0.6856309343035636, 0.6878316428214069, 0.6908952835517869, 0.6945588141662892, 0.6985820090629421, 0.7027554302098183, 0.7069051519084151, 0.7108944949356026, 0.7146232105047797 ], [ 0.6924781768414868, 0.6926962153639655, 0.6941942859052926, 0.6971585098774786, 0.7017468585480227, 0.7080764611420236, 0.7162110359738353, 0.726149300218828, 0.737815299255161, 0.7510516163047275, 0.7656163625088962, 0.7811846978611482, 0.7973553942368894, 0.8136626326068402, 0.8295928471040084, 0.8446060179291338, 0.8581604091508636, 0.8697393859310459, 0.8788786676329919, 0.88519221257531, 0.8883949114008921, 0.8883204008226793, 0.8849325946015395, 0.8783299452869833, 0.8687419656656742, 0.8565181090485964, 0.8421096817611046, 0.8260459872384659, 0.8089063307121552, 0.7912898074340087, 0.7737849297855081, 0.7569411094062622, 0.741243806389916, 0.727094811225916, 0.7147986722892505, 0.7045557672224734, 0.6964619896516318, 0.6905145314311758, 0.6866228271372927, 0.6846234238583326, 0.6842973646241832, 0.685388633140428, 0.6876222922565867, 0.6907211385046232, 0.6944199612470386, 0.698476803970038, 0.7026809429923659, 0.7068575945163315, 0.7108696099611838, 0.7146166055219062 ], [ 0.6922754300672557, 0.6926334502329183, 0.6943030976276745, 0.6974695084190227, 0.702288156901676, 0.7088721109018175, 0.7172795071976602, 0.7275021100695381, 0.739455892950984, 0.7529745936893181, 0.7678071242424429, 0.7836195580660273, 0.8000021736274094, 0.816481710699943, 0.8325386175003332, 0.8476286603497777, 0.8612078689707731, 0.8727594385996088, 0.8818209427387756, 0.8880100602752464, 0.8910470111813675, 0.8907720368042068, 0.8871565499312697, 0.8803069974758434, 0.8704609921329434, 0.857975835324639, 0.8433101222643825, 0.8269996396729457, 0.8096291901426118, 0.791802265855027, 0.7741106227660716, 0.7571057645500981, 0.7412741401711678, 0.7270175122254667, 0.7146395005927695, 0.7043387920200481, 0.6962089799045341, 0.6902445077002404, 0.6863517761364903, 0.6843641709285165, 0.6840595931837194, 0.6851790344843112, 0.6874448241828931, 0.6905773675309287, 0.6943094609841525, 0.6983975817729746, 0.7026298683639383, 0.7068308057591832, 0.7108628799426826, 0.7146256526815882 ], [ 0.6920787435307675, 0.6925758994288926, 0.694415757212989, 0.6977823687095672, 0.7028286147667241, 0.7096634143854155, 0.7183392519494171, 0.7288408928093844, 0.7410762257007054, 0.7548701715954805, 0.7699625197081154, 0.7860103858993818, 0.802595738313871, 0.8192381108162698, 0.8354122472647747, 0.8505700179031626, 0.8641655583205111, 0.8756822394832964, 0.8846598210711302, 0.8907200011380749, 0.8935885750744258, 0.8931125656664675, 0.8892709792042597, 0.8821782609568943, 0.872080034546259, 0.8593412710265795, 0.8444275957579629, 0.8278809540424213, 0.8102912734196659, 0.7922660436713044, 0.7743998598331555, 0.7572459290723608, 0.7412913356523176, 0.726937511384168, 0.7144869069699183, 0.7041363466633952, 0.695977023267855, 0.6900006004206671, 0.6861104764302695, 0.6841369608107322, 0.6838549405441948, 0.6850025733667586, 0.6872996316692153, 0.6904643127401056, 0.694227600149123, 0.6983445733583218, 0.7026023837813669, 0.7068249143025734, 0.7108743908120576, 0.7146504019830453 ], [ 0.6918880167491954, 0.6925231700936907, 0.694531522920439, 0.6980959456204598, 0.7033666337319601, 0.7104482773148124, 0.7193876474423008, 0.7301624768347659, 0.742672571090586, 0.7567340785344598, 0.7720777585266433, 0.788351914669418, 0.805130403398163, 0.8219258018344999, 0.83820744255428, 0.8534236261070801, 0.8670269393940527, 0.8785012764338954, 0.8873889132052075, 0.893315860208984, 0.8960137259740144, 0.895336480608908, 0.8912708055020628, 0.8839391340850986, 0.8735949971020118, 0.8606108419417717, 0.845459051142543, 0.8286873907539017, 0.810890529228665, 0.7926795448131414, 0.7746514593405375, 0.7573607892579425, 0.7412948970083046, 0.7268545792189214, 0.7143408771114171, 0.703948582899332, 0.6957663918831024, 0.6897831610312624, 0.6858993230125423, 0.6839422021388999, 0.6836838050566212, 0.6848596198100549, 0.6871870438839224, 0.6903822548923222, 0.6941746078214973, 0.698317956362052, 0.7025986183818629, 0.7068400056552282, 0.7109041905229269, 0.7146908704693448 ], [ 0.6917031670805946, 0.6924748896659155, 0.694649676288534, 0.6984091209599808, 0.7039006468207678, 0.7112246423565924, 0.7204221145235793, 0.7314637421913166, 0.7442412638040098, 0.7585621150438508, 0.7741481347271958, 0.7906389758061512, 0.8076005969226354, 0.8245388811626836, 0.8409180539738697, 0.8561831806426505, 0.8697856494563297, 0.8812102258291146, 0.8900020295950192, 0.8957916710496316, 0.8983168006765901, 0.8974384904469656, 0.8931511652894264, 0.8855852223160283, 0.8750019808432347, 0.8617811567385665, 0.8464016029504926, 0.8294165558850953, 0.8114250299356215, 0.7930412736256485, 0.7748643162959465, 0.7574495845553516, 0.7412843590685197, 0.7267684959952723, 0.7142013876622292, 0.7037756271233014, 0.6955773189631297, 0.6895924912968392, 0.6857186532672261, 0.6837802406775395, 0.6835465193974566, 0.6847504775221083, 0.6871073248746795, 0.6903314123020847, 0.6941506544394416, 0.6983178543771011, 0.7026186523469025, 0.7068761216804452, 0.7109522886951755, 0.7147470419873322 ], [ 0.6915241311409254, 0.6924307082719697, 0.6947695256687928, 0.6987208083119627, 0.7044291247827942, 0.7119904969928943, 0.7214401272215546, 0.7327416318570238, 0.7457787126585117, 0.7603501684495795, 0.7761690431562707, 0.7928665167898609, 0.8100008791435883, 0.8270715951393985, 0.8435380978516854, 0.8588425592212792, 0.872435523001421, 0.883802974712978, 0.8924932023892649, 0.8981416969352022, 0.9004923701872913, 0.8994135387856411, 0.8949074262506788, 0.8871123545425255, 0.8762972983790631, 0.8628490199972368, 0.8472525426622995, 0.8300662108033909, 0.811892979564816, 0.7933498412950831, 0.775037407354382, 0.7575116112769106, 0.741259289878744, 0.7266790533142563, 0.7140684069984964, 0.7036175805078304, 0.6954099984248451, 0.6894288425851323, 0.6855687460134995, 0.6836513582416791, 0.6834433494506681, 0.6846753828093333, 0.6870606725627839, 0.6903119399481255, 0.6941558510447368, 0.6983443363408228, 0.7026625164297707, 0.7069332602541039, 0.7110186563888851, 0.7148188670600797 ], [ 0.6913508660945119, 0.6923903009805564, 0.6948904096125457, 0.699029957716296, 0.704950582215055, 0.7127438812076078, 0.7224392220912306, 0.7339931628046472, 0.7472814133993092, 0.762094227357805, 0.7781359955859442, 0.7950296187444448, 0.812325961431673, 0.8295183590210252, 0.8460617770576541, 0.8613958429524421, 0.8749706133702181, 0.8862736423576938, 0.8948567066359678, 0.9003604514149092, 0.9025352593732959, 0.9012568225345707, 0.8965352044735545, 0.8885165987969244, 0.8774774880000403, 0.8638114446786036, 0.8480093495129843, 0.8306342813358416, 0.8122927213951806, 0.7936039719662097, 0.7751697955767097, 0.7575462261381004, 0.7412192931734249, 0.7265860556760858, 0.7139418960414197, 0.7034745192203717, 0.6952645846552143, 0.6892924153119719, 0.6854498207453236, 0.6835557718284256, 0.6833744934108941, 0.6846345037129902, 0.6870472179572672, 0.6903239287944255, 0.6941902487264732, 0.6983974161059854, 0.7027301916497676, 0.707011375071619, 0.7111032260093917, 0.7149062628731495 ], [ 0.6911833508082867, 0.6923533699066238, 0.6950117000916516, 0.6993355601663375, 0.7054635834810762, 0.7134828949494549, 0.7234170073129964, 0.7352154367901451, 0.7487459611883576, 0.7637903958082024, 0.7800446364457045, 0.7971235136131779, 0.8145707247107143, 0.8318737764615832, 0.8484835012682266, 0.8638373371119822, 0.8773852137257626, 0.8886166011450247, 0.897087080775141, 0.9024427181376653, 0.9044405658697937, 0.9029638096748398, 0.8980303808964768, 0.8897942772414013, 0.8785393271189684, 0.8646656639675686, 0.8486697007333842, 0.831118866442748, 0.8126227451355745, 0.7938025085179362, 0.7752606349274741, 0.7575528496160735, 0.7411640107437409, 0.7264893220108211, 0.7138218091022096, 0.7033464947278979, 0.6951411924104751, 0.6891833585565367, 0.6853620370683742, 0.6834936329641639, 0.6833400811120736, 0.6846279393734078, 0.6870670245929917, 0.6903674053262254, 0.694253838266801, 0.698477052198113, 0.7028216091553124, 0.7071103756055317, 0.7112058913446712, 0.7150091133754417 ], [ 0.6910215868609744, 0.6923196461515462, 0.6951328055348609, 0.6996366518992071, 0.7059667483976855, 0.7142057053346778, 0.7243711714997493, 0.7364056508149898, 0.7501690627292094, 0.7654349070214255, 0.7818907581035244, 0.7991436008359363, 0.816730237348179, 0.8341326583934378, 0.8507979065816523, 0.8661615912127432, 0.8796738772867292, 0.8908264966676421, 0.8991791463212726, 0.9043835698473008, 0.9062036781467351, 0.9045302561905323, 0.8993891169380248, 0.8909419803716425, 0.8794798449694967, 0.8654091424310935, 0.849231481173323, 0.8315182463492887, 0.8128816936406045, 0.7939444179657377, 0.7753091744867874, 0.757530969107967, 0.7410931246871919, 0.7263886871661913, 0.7137080947519738, 0.7032335341851311, 0.6950398968478075, 0.6891017698476842, 0.6853054943365926, 0.6834650272703376, 0.6833401735848532, 0.6846557196254554, 0.6871200881959292, 0.6904423313038729, 0.6943465499911511, 0.6985831477611022, 0.7029366502573943, 0.7072301272147242, 0.7113265077356303, 0.7151272694948559 ], [ 0.690865599399252, 0.6922888915673018, 0.6952531736625922, 0.6999323184560751, 0.7064587576602791, 0.7149105535533586, 0.7252994921692918, 0.7375611072117781, 0.7515475479695887, 0.7670241366753111, 0.783670315623739, 0.801085463449008, 0.818799772412712, 0.836290041219539, 0.8529998743908008, 0.8683634182820895, 0.8818314367224366, 0.8928982669539619, 0.9011280266405755, 0.9061783864549373, 0.907820292647779, 0.9059522220812755, 0.9006078692305333, 0.8919565803621367, 0.8802963344975814, 0.8660395864328655, 0.8496927922561224, 0.8318308900917766, 0.8130683691304528, 0.7940287964608231, 0.7753147623522503, 0.7574801418703829, 0.7410063595248573, 0.7262840033427967, 0.7136006967102053, 0.7031356409028388, 0.6949607336880371, 0.6890476951215216, 0.685280231489608, 0.6834699742497341, 0.6833747628450112, 0.6847178048275464, 0.6872063365777471, 0.6905486037363388, 0.6944682538243834, 0.6987155506921684, 0.7030751466340149, 0.707370451405536, 0.7114648923792559, 0.7152605494684552 ], [ 0.690715437833854, 0.6922609003334366, 0.6953722941040423, 0.7002216984908097, 0.7069383579787761, 0.7155957614449144, 0.7261998438404851, 0.738679223304333, 0.7528783813255508, 0.7685546156465209, 0.7853794409315978, 0.8029448835311139, 0.8207748242168845, 0.8383412042307912, 0.85508454942365, 0.8704379132541653, 0.8838530226162273, 0.8948271607235933, 0.9029291647316541, 0.9078228720999333, 0.9092864299166944, 0.9072260863758256, 0.9016834033834517, 0.8928352434849172, 0.8809863633842718, 0.8665549537499688, 0.8500519602166698, 0.8320554624375385, 0.8131817388802193, 0.7940548738576492, 0.7752768492081075, 0.7573999977222606, 0.7409034841729446, 0.7261751414670787, 0.713499554745365, 0.7030527948921922, 0.6949036995072972, 0.6890211288495522, 0.6852862270913277, 0.6835084272941429, 0.6834437719140433, 0.6848140859253543, 0.6873256297607487, 0.6906860550752003, 0.6946187595533518, 0.6988740539662763, 0.7032368807054656, 0.7075311262443351, 0.7116208247639425, 0.7154087392862762 ], [ 0.6905711763695881, 0.6922355003367379, 0.695489700781803, 0.700503987306761, 0.7074043668980345, 0.7162597377100356, 0.727070205713559, 0.7397575405956043, 0.7541586723734041, 0.7700230421568307, 0.7870144563171139, 0.8047178569222275, 0.8226511240664762, 0.8402816861655495, 0.8570473568652007, 0.8723804703885835, 0.8857340809080729, 0.89660875458468, 0.9045783399225412, 0.9093130711151305, 0.9105984496307885, 0.9083485610710066, 0.9026128067062521, 0.8935754415375581, 0.8815477841420065, 0.8669534623402946, 0.8503075435783364, 0.8321908301401016, 0.8132209403465405, 0.7940220178232248, 0.7751949915402525, 0.7572902414943573, 0.7407843137558424, 0.7260619924926504, 0.7134046055809431, 0.7029849534807835, 0.6948687521549375, 0.6890220143359127, 0.6853233995690313, 0.6835802739132181, 0.68354705507196, 0.6849443847503136, 0.6874777603331221, 0.6908544536288432, 0.6947978172953935, 0.6990583961493144, 0.7034215861794626, 0.7077118869203812, 0.7117940472356905, 0.7155715932473846 ], [ 0.6904329143642652, 0.6922125543447224, 0.6956049740505252, 0.7007784401029926, 0.7078556772782363, 0.7169009837282836, 0.7279086688971286, 0.7407937334390604, 0.755385685958206, 0.7714262932661619, 0.7885718872139622, 0.8064006071451927, 0.824424655141299, 0.842107300832185, 0.8588840184787402, 0.8741867996316152, 0.8874703892318399, 0.8982389690891399, 0.906071683401839, 0.910645382817002, 0.9117530644657788, 0.9093167039250722, 0.9033934998252665, 0.8941749622206121, 0.881978743230693, 0.8672335982131772, 0.8504583398273909, 0.8322360674942993, 0.8131852857017452, 0.79392973746367, 0.7750688544772434, 0.7571506552096479, 0.7406487112485624, 0.7259444686208731, 0.7133157838003178, 0.7029320519955371, 0.6948558112943539, 0.6890502441814025, 0.6853916076513503, 0.6836853361833172, 0.6836843983412437, 0.6851084545518649, 0.6876624540333628, 0.6910535041955941, 0.6950051181712733, 0.699268262098373, 0.70362894876436, 0.7079124264570946, 0.7119842656932379, 0.7157488346262375 ], [ 0.6903007765126368, 0.6921919609653091, 0.6957177425776108, 0.7010443749129345, 0.7082912614126283, 0.7175180989526764, 0.7287134431468556, 0.7417856171519155, 0.7565568516705689, 0.7727614356576837, 0.7900484741927172, 0.807989598463964, 0.8260916664366742, 0.8438141517200328, 0.8605905676490341, 0.8758529418408363, 0.8890580720677201, 0.8997140835670209, 0.9074056925070366, 0.9118165750466292, 0.9127473527218234, 0.9101279300397466, 0.9040232471338426, 0.8946319184094123, 0.8822776891442874, 0.8673941223598132, 0.8505033912472062, 0.8321904611590869, 0.8130742657484853, 0.7937776864456785, 0.7748982142391905, 0.756981099980177, 0.7404965889372227, 0.7258225044319087, 0.713233022743711, 0.7028940045074152, 0.6948647590628277, 0.6891056609112172, 0.6854906510025719, 0.6838233714140491, 0.6838555201998171, 0.6853059807612973, 0.6878793705616479, 0.6912828489134476, 0.6952402951801424, 0.6995032838465934, 0.7038586070478557, 0.7081323965691408, 0.7121911504095749, 0.7159401564468877 ], [ 0.69017491285254, 0.6921736553863579, 0.6958276849554481, 0.701301175220191, 0.7087101747620328, 0.7181097858548998, 0.7294828630832797, 0.7427311555314415, 0.7576697726467555, 0.7740257356638589, 0.7914411841115969, 0.8094815480165013, 0.8276486856992175, 0.8453986455289013, 0.862163363275142, 0.8773752827995516, 0.8904936146358913, 0.9010307496669143, 0.9085772436988518, 0.9128237963932532, 0.9135787696461746, 0.9107800221708204, 0.90450016602062, 0.8949447562703107, 0.8824433794233529, 0.8674340767043627, 0.8504419898784349, 0.832053514219259, 0.8128875531906575, 0.7935656655928813, 0.7746829601782003, 0.7567815176072094, 0.7403279096870721, 0.7256960579178992, 0.713156255390583, 0.7028707046325318, 0.6948954408458976, 0.6891880577625262, 0.6856202710497803, 0.683994073029239, 0.6840600725197914, 0.6855365819839386, 0.688128104614858, 0.6915420683230293, 0.6955029242731025, 0.6997630416691731, 0.7041101535378096, 0.708371408662035, 0.712414336976676, 0.7161452223620401 ], [ 0.6900554985916043, 0.6921576098901125, 0.6959345310363056, 0.7015482922381069, 0.7091115592876908, 0.7186748543972403, 0.7302153938591445, 0.743628467738757, 0.7587222336505254, 0.775216668486187, 0.7927472203721275, 0.810873436964965, 0.829092531295538, 0.8468575045525801, 0.8635991024461209, 0.8787505659531363, 0.8917738754635024, 0.9021860035355037, 0.9095836041566874, 0.9136645870383695, 0.914245157394078, 0.9112711397131685, 0.9048227348264734, 0.8951122621768441, 0.8824748865541451, 0.8673527890412623, 0.8502736815754699, 0.8318249494608481, 0.8126250052394828, 0.7932936249396013, 0.7744230963959984, 0.7565519318729527, 0.7401426880084819, 0.7255651114104067, 0.7130854152208931, 0.7028620263840394, 0.6949476661612677, 0.6892971796272899, 0.6857801519984479, 0.6841970716580039, 0.6842976417277022, 0.6857998112153683, 0.6884081871408859, 0.6918306826394144, 0.695792525621024, 0.7000470653262489, 0.7043831358610229, 0.7086290349702913, 0.7126534273697025, 0.7163636676334715 ], [ 0.6899427337540271, 0.6921438341389854, 0.6960380629826556, 0.7017852468416461, 0.7094946463662761, 0.7192122260099516, 0.7309096362495158, 0.7444758345178306, 0.7597122083989509, 0.7763319265655255, 0.7939640322316714, 0.812162520610775, 0.8304203229577538, 0.8481877778574408, 0.8648948318388505, 0.8799759038056572, 0.8928960975634924, 0.9031772765759251, 0.9104224419369293, 0.9143368881649759, 0.9147447535760643, 0.9115998263124092, 0.9049897994867679, 0.8951335683870724, 0.8823716027200873, 0.8671498769291286, 0.8499982691338237, 0.8315047118387681, 0.8122866655368045, 0.792961665227111, 0.7741187429264189, 0.7562924495136288, 0.7399409909123387, 0.7254296723947913, 0.7130204370487923, 0.702867825068947, 0.6950212096467618, 0.6894327241450041, 0.6859699220312107, 0.684431936430657, 0.6845677501808903, 0.6860951572762681, 0.6887190868068321, 0.6921481532274356, 0.696108565071343, 0.7003548354775346, 0.7046770581150695, 0.7089048098294796, 0.7129079911263456, 0.7165951002098356 ], [ 0.6898368426480979, 0.6921323752305416, 0.6961381160274103, 0.7020116311421555, 0.7098587592732777, 0.7197209370554948, 0.7315643311411183, 0.7452717037209935, 0.7606378660983891, 0.7773694270642906, 0.7950893231296114, 0.8133463374273613, 0.8316294913553838, 0.8493868512032384, 0.8660479577835364, 0.8810487879217489, 0.8938579181705973, 0.9040024047315578, 0.9110918346428262, 0.9148390498835511, 0.9150761983466558, 0.9117650160620903, 0.9050005788219395, 0.8950081574493451, 0.8821332433770864, 0.8668252505166906, 0.8496158144675938, 0.8310929701191968, 0.8118727653810148, 0.7925700388302426, 0.7737701364725885, 0.7560032608652683, 0.7397229385473405, 0.7252897742048051, 0.7129612578225016, 0.70288793822386, 0.6951158121463825, 0.689594342939378, 0.6861891546837253, 0.684698176473205, 0.6848698577536882, 0.6864220464595041, 0.6890602116746778, 0.6924938842741513, 0.6964504557876621, 0.7006857852627737, 0.7049913823675442, 0.7091982310769093, 0.7131775666364402, 0.7168391018974112 ], [ 0.6897380731563223, 0.6921233175209844, 0.6962345789402951, 0.7022271096976719, 0.7102033152234006, 0.7202001417639539, 0.7321783634005897, 0.7460146951159593, 0.7614975771609667, 0.7783273184264676, 0.7961210579890619, 0.8144227169689631, 0.8327177864491266, 0.8504524556595684, 0.8670562549491365, 0.8819670974856696, 0.8946573769870219, 0.9046596362491393, 0.9115902765620186, 0.9151698376336408, 0.9152385399966612, 0.9117660382522137, 0.9048546684460356, 0.8947358653099691, 0.881759849629882, 0.8663791142814493, 0.8491266398208392, 0.8305901176832694, 0.8113837242444583, 0.7921191501050342, 0.7733776306908718, 0.7556846401752577, 0.7394887046128338, 0.725145476591335, 0.712907817384373, 0.7029221865835251, 0.6952311818881276, 0.6897816429923225, 0.6864373703907029, 0.6849952425932905, 0.6852033636260897, 0.6867798443820348, 0.6894309110770568, 0.6928672246512145, 0.6968175600651221, 0.7010393020412857, 0.7053255302963888, 0.7095087615750537, 0.713461662536444, 0.7170952296189061 ], [ 0.6896466958511636, 0.6921167822178873, 0.6963273941983525, 0.7024314203535557, 0.7105278269591615, 0.7206491146268593, 0.7327507651047515, 0.7467036044532251, 0.7622899180762851, 0.7792039859861788, 0.7970574694612939, 0.815389786619607, 0.8336832845882532, 0.8513826748780169, 0.867917873607897, 0.8827291063766864, 0.8952929228977247, 0.9051476378826971, 0.9119166842354066, 0.9153284370274931, 0.9152312390186494, 0.9116026206420947, 0.9045520432696948, 0.8943168831026903, 0.8812517893925788, 0.8658119676671355, 0.8485313280015006, 0.8299967724828229, 0.8108201495747203, 0.7916095551510143, 0.7729416960159534, 0.7553369455744067, 0.7392385165420204, 0.7249968661599425, 0.7128600591854043, 0.7029703750759781, 0.6953669957468493, 0.6899941881480259, 0.6867140381944514, 0.6853225291495688, 0.6855676082666595, 0.6871678580333056, 0.6898304776848163, 0.6932674699590021, 0.6972091913136851, 0.7014147292831329, 0.7056788849643003, 0.7098358308512459, 0.7137597592028928, 0.7173630167550178 ], [ 0.6895630029405613, 0.6921129267443643, 0.6964165578603505, 0.7026243747103854, 0.7108319038814057, 0.7210672522396714, 0.7332807181194678, 0.7473374067766951, 0.7630136754175405, 0.7799980566005875, 0.7978970630855752, 0.8162459771523942, 0.8345243943197722, 0.8521759509869292, 0.8686313454453991, 0.8833334887274517, 0.8957634191229557, 0.9054654995075893, 0.9120704004288905, 0.9153144571099525, 0.915054170622803, 0.9112748912378833, 0.9040930585810384, 0.8937517576064555, 0.8806097573225691, 0.8651246046115456, 0.8478307216313938, 0.8293137761432101, 0.8101828358758193, 0.791041960984705, 0.772462919023782, 0.7549606187060642, 0.7389726554515951, 0.7248440566725903, 0.7128179309488247, 0.7030322938380773, 0.6955229005851272, 0.6902315007393609, 0.6870185776075608, 0.6856793760956809, 0.6859618756005543, 0.6875853380108812, 0.6902581497571711, 0.6936938647435145, 0.6976246162006903, 0.701811368603733, 0.7060507927195905, 0.7101788368466359, 0.714071310338469, 0.7176419745630565 ], [ 0.6894873070485179, 0.6921119438783018, 0.6965021191466475, 0.702805858218226, 0.7111152527180936, 0.7214540745862403, 0.7337675560172436, 0.7479152589644603, 0.7636678489658564, 0.780708402288028, 0.7986386213427801, 0.8169900270753849, 0.835239860884179, 0.852831089082744, 0.8691955878899156, 0.8837793229397011, 0.8960681467835805, 0.9056127371219694, 0.9120511964875473, 0.9151279320167858, 0.914707625688126, 0.9107833785625963, 0.9034784496950843, 0.8930413903646114, 0.8798347735232064, 0.8643181119619275, 0.847025921410768, 0.8285421922125059, 0.8094727630689904, 0.7904172241239494, 0.7719420013315182, 0.7545561840106394, 0.7386914558551595, 0.7246871892097497, 0.712781385277726, 0.7031077192452151, 0.6956985146648476, 0.6904930633283568, 0.6873503606206879, 0.6860650711892229, 0.6863853953527035, 0.6880314809332262, 0.6907131135644298, 0.6941456048762755, 0.6980630569433122, 0.7022284819330769, 0.7064405652152907, 0.7105371477668903, 0.714395744643901, 0.7179315936665911 ], [ 0.6894199398371311, 0.6921140606716789, 0.6965841797278369, 0.7029758298985498, 0.7113776777303099, 0.7218092257616638, 0.7342107653273083, 0.7484365014908052, 0.7642516539413348, 0.7813341428575105, 0.7992812065868993, 0.8176209857466635, 0.8358287693793464, 0.8533472602990511, 0.8696099069424523, 0.8840660941394812, 0.8962068068627796, 0.9055892942211466, 0.9118592730599808, 0.9147693210216804, 0.9141923101418652, 0.9101290104140757, 0.9027093301694951, 0.8921870354654386, 0.8789281810168187, 0.8633938667806983, 0.8461182834009202, 0.8276833035607963, 0.8086910941364535, 0.7897363485857136, 0.7713797580360406, 0.754124247665717, 0.738395305139055, 0.7245264321899038, 0.7127503802021389, 0.703196414949068, 0.6958934291219728, 0.6907783205520445, 0.6877087138458163, 0.6864788523554052, 0.6868373455554291, 0.6885054320187601, 0.6911945059724941, 0.6946218400867187, 0.6985236937408725, 0.7026652938101043, 0.7068474815377519, 0.7109101040266577, 0.7147324675685098, 0.718231345609742 ], [ 0.6893612504775051, 0.6921195371563811, 0.6966628927272329, 0.703134321697248, 0.7116190804570625, 0.7221324741330607, 0.7346099861155811, 0.7489006594047051, 0.7647645223340618, 0.7818746475210622, 0.7998241628444658, 0.8181382152475551, 0.8362905465810064, 0.8537240034418278, 0.8698739984964982, 0.884193695062035, 0.8961795205558643, 0.9053955415385687, 0.9114952591888292, 0.9142395069703118, 0.9135093427679448, 0.9093131111139514, 0.9017871885917237, 0.8911902959906948, 0.877891641995864, 0.8623535325499277, 0.8451094153333641, 0.8267386089375762, 0.8078391720552328, 0.7890004833030739, 0.7707771156950086, 0.753665496183825, 0.7380846428005977, 0.724361981244325, 0.7127248796613965, 0.7032981329173507, 0.696107209496801, 0.6910866810645828, 0.6880929207848065, 0.6869199101944375, 0.687316855209077, 0.6890062878195815, 0.6917014171776232, 0.6951216766358748, 0.6990056673363351, 0.7031209937922268, 0.7072707904355009, 0.711297020279396, 0.7150808631318805, 0.7185406844694668 ], [ 0.689311603977973, 0.6921286648442373, 0.6967384614439674, 0.7032814374742979, 0.7118394590030427, 0.7224237119409023, 0.7349650118955475, 0.7493074425242778, 0.7652061033331045, 0.7823295354857084, 0.8002671164778054, 0.8185413910094197, 0.8366249614152041, 0.8539612251866918, 0.8699879481442556, 0.8841624253645184, 0.8959868280081437, 0.9050322751554346, 0.9109602097717002, 0.9135397931080326, 0.9126602514531585, 0.9083373972583011, 0.9007138839498476, 0.8900531191455833, 0.8767271328662544, 0.8611990542886172, 0.8440011719590291, 0.825709818699624, 0.806918516031804, 0.7882109189701341, 0.770135109856911, 0.7531806946717643, 0.7377599594500327, 0.7241940589458893, 0.7127048539181184, 0.7034126144696878, 0.6963393973119018, 0.6914175195662549, 0.6885022242125798, 0.6873873906211099, 0.6878230070836013, 0.6895330990976113, 0.6922328935793105, 0.6956441801195671, 0.6995080816957479, 0.7035947389694907, 0.70770971263868, 0.7116971875237929, 0.7154402958088133, 0.718859048518929 ], [ 0.6892713793790167, 0.6921417650302953, 0.696811137805124, 0.7034173516377416, 0.7120389068760715, 0.7226829543465947, 0.7352757888747052, 0.7496567448508488, 0.7655762628562844, 0.7826986755272615, 0.8006099757139358, 0.8188305011958775, 0.8368321240850354, 0.8540591988413591, 0.8699522294738498, 0.8839729893727084, 0.8956296854489885, 0.9045007129892476, 0.9102556014050575, 0.9126718983158867, 0.9116469678877878, 0.9072039719882997, 0.8994916396065658, 0.8887777900902665, 0.8754369381029964, 0.8599326526023597, 0.8427956494558776, 0.8245988497259901, 0.8059308170519436, 0.787369084326621, 0.7694548821489366, 0.7526706847572696, 0.7374217955788805, 0.7240229143915787, 0.7126902799006525, 0.7035395913039104, 0.6965895116898404, 0.6917701789096401, 0.6889358286638563, 0.687880397624508, 0.6883548406484646, 0.6900848738303068, 0.6927879407785418, 0.6961883783887672, 0.7000300067939054, 0.7040856565724232, 0.70816344325901, 0.712109875277682, 0.7158101124694529, 0.7191858619348253 ], [ 0.6892409678251561, 0.6921591869095571, 0.6968812205569319, 0.7035423074316491, 0.7122176113834604, 0.7229103379350431, 0.7355424145448011, 0.7499486432104269, 0.7658750821882668, 0.7829821845533967, 0.8008529290468481, 0.8190058448487836, 0.8369124838609125, 0.8540185616838611, 0.8697677008697131, 0.8836264922758481, 0.8951094607383642, 0.9038024896798147, 0.9093833266317872, 0.9116379507776957, 0.9104718207451219, 0.9059153178066464, 0.8981230359029074, 0.8873669244996278, 0.874023642944357, 0.858556816690404, 0.8414951789181626, 0.8234078195409249, 0.804877932763746, 0.7864765418968689, 0.7687376769338685, 0.7521363821905992, 0.7370707400986827, 0.7238488226392504, 0.7126811414713574, 0.7036787865073079, 0.6968570510027878, 0.6921439722730692, 0.6893929030120223, 0.6883979961353742, 0.688911355117735, 0.6906605803325969, 0.6933655266882044, 0.6967532645743025, 0.7005704814940636, 0.7045928466622311, 0.708631154259889, 0.7125343338100869, 0.7161896443662679, 0.7195205365413769 ], [ 0.6892207705248912, 0.6921813055185517, 0.6969490532065672, 0.7036566148897093, 0.7123758515989538, 0.7231061186838809, 0.7357651356275956, 0.7501833951344861, 0.7661028557391609, 0.7831804251687493, 0.8009964425266981, 0.8190680288125771, 0.8368668255504342, 0.8538403108943354, 0.8694356008359664, 0.883124434791642, 0.8944279273501626, 0.9029396498993217, 0.9083456866212175, 0.910440480108893, 0.9091375273720412, 0.9044742879728909, 0.8966110014251276, 0.885823459884422, 0.8724901249566465, 0.857074296340476, 0.8401023189552499, 0.8221390396696664, 0.8037618817152276, 0.7855349832007668, 0.7679848375495325, 0.7515787741304472, 0.7367074286554883, 0.7236720840001487, 0.7126774296186672, 0.703829915547636, 0.6971414945461295, 0.6925381853913016, 0.68987258312841, 0.6889392149882432, 0.6894915125968324, 0.6912591504812456, 0.6939645847419857, 0.697337800202692, 0.7011285165091828, 0.7051153848916933, 0.7091119969859728, 0.7129697964218031, 0.7165782091593781, 0.7198624735835535 ], [ 0.6892111966105368, 0.6922085195141839, 0.6970150217275615, 0.703760648467952, 0.7125139959142717, 0.7232706694139055, 0.7359443453913136, 0.7503614359959273, 0.766260087940414, 0.7832940022599253, 0.8010412559551737, 0.8190179634579154, 0.8366962646706542, 0.8535257981053308, 0.8689575418700761, 0.8824687063311393, 0.893587256824534, 0.9019146401210361, 0.9071453823182699, 0.9090824079855212, 0.9076471840303257, 0.9028840965179452, 0.8949588029750111, 0.8841506457132224, 0.8708395445074439, 0.8554880929468371, 0.8386198474324776, 0.820795008255956, 0.8025848369713046, 0.7845462234570405, 0.7671978021465614, 0.7509989161253244, 0.7363325417267209, 0.7234930231895584, 0.7126791425714532, 0.7039926872389779, 0.6974423042282791, 0.6929520788332835, 0.6903739746100656, 0.6895030499651944, 0.6900942413170416, 0.6918794830275, 0.6945840171877513, 0.6979409183895684, 0.7017030974318769, 0.7056523253248477, 0.7096051047413714, 0.7134154817647607, 0.7169751129716038, 0.7202110655220052 ], [ 0.6892126609104449, 0.6922412488032832, 0.6970795520431569, 0.7038548443718927, 0.7126324991915078, 0.723404476738034, 0.7360805803562265, 0.7504833754199731, 0.7663474892992206, 0.7833237586233428, 0.8009883780118641, 0.8188568572315785, 0.8364022413521198, 0.8530767226025491, 0.8683355029213778, 0.8816615767007853, 0.8925900097291005, 0.9007302988889242, 0.9057855041060835, 0.9075670373193101, 0.9060042547355853, 0.901148306924987, 0.8931700342903102, 0.882352032380596, 0.8690753341905894, 0.8538014495920347, 0.8370507523909108, 0.8193784019739361, 0.8013491191381522, 0.7835121958019123, 0.7663780991424148, 0.7503979288032476, 0.7359468025083429, 0.723311988338895, 0.7126862858347873, 0.7041668046778822, 0.6977589262690128, 0.6933848903168045, 0.6908961555639273, 0.690088466907834, 0.6907184389436457, 0.6925204469835969, 0.6952226984511196, 0.6985615270968905, 0.7022931878200274, 0.706202703303374, 0.7101095954054446, 0.7138705961902969, 0.7173796524645211, 0.7205656978421313 ], [ 0.6892255816466906, 0.6922799320371715, 0.6971431073032206, 0.7039396975950523, 0.7127318995347833, 0.7235081375287128, 0.7361745164110003, 0.7505499929934671, 0.7663659716369665, 0.7832707696636626, 0.8008390803418701, 0.8185862100655296, 0.835986513010398, 0.8524951232146913, 0.8675718204761114, 0.8807056863862056, 0.8914391251763563, 0.8993898456379152, 0.904269520033827, 0.9058980400319898, 0.9042125587477158, 0.8992708195305905, 0.8912486035682666, 0.8804314590727059, 0.8672011872515248, 0.8520178402374902, 0.8353982221869936, 0.8178920672707068, 0.8000571888260175, 0.7824349450487303, 0.7655273423116467, 0.7497769942841945, 0.7355509746014559, 0.7231293498734175, 0.7126988721468132, 0.7043519661455664, 0.6980907928988167, 0.6938358370498972, 0.691438179435266, 0.6906944048839841, 0.6913629759433504, 0.69318088506851, 0.6958794785547617, 0.6991985124399728, 0.7028977323248717, 0.7067655383474651, 0.7106245740750949, 0.7143343361164091, 0.7177911169267851, 0.7209257508696972 ], [ 0.6892503780717982, 0.6923250239863519, 0.6972061849714596, 0.7040157586873599, 0.7128128147015476, 0.7235823549262269, 0.7362269643644558, 0.7505622332996339, 0.7663166425413501, 0.7831363371952618, 0.8005948906400744, 0.8182078056837244, 0.8354511458269421, 0.8517833689375759, 0.8666691783174134, 0.8796040354692931, 0.8901379089516922, 0.8978968681216993, 0.9026012626685184, 0.9040794434888917, 0.9022762567734001, 0.8972558577062596, 0.889198719851106, 0.8783930405870123, 0.8652210450665494, 0.8501409580725474, 0.8336656348970457, 0.816339010979204, 0.7987116385844462, 0.7813166210165593, 0.7646472255343729, 0.7491373523313293, 0.7351458595086603, 0.722945499260609, 0.712716921357019, 0.7045478659723486, 0.6984373240519456, 0.6943041180889074, 0.6919990778682223, 0.6913197793954786, 0.6920266989965673, 0.6938596171982033, 0.6965531865788375, 0.6998507420302656, 0.7035156598482952, 0.7073398370789192, 0.7111491357224219, 0.7148058904040502, 0.7182087903659904, 0.721290601585447 ], [ 0.6892874680584719, 0.6923769928111219, 0.6972693137407222, 0.7040836302733682, 0.7128759381757845, 0.7236279339126711, 0.7362388649602273, 0.7505212003087014, 0.7662007990657309, 0.7829219823836131, 0.8002575847724547, 0.8177237028506605, 0.8347985050869895, 0.8509441483438883, 0.8656305960151912, 0.878359971236858, 0.8886900203132483, 0.8962553085117411, 0.9007849146363519, 0.9021156156584352, 0.9001998359474926, 0.8951079528864735, 0.8870248783379446, 0.8762411531678694, 0.8631390837341983, 0.8481747030757607, 0.8318565470352098, 0.8147223903442392, 0.7973151843465811, 0.7801594714579747, 0.7637395172267124, 0.7484802962584516, 0.7347322939516121, 0.7227608476351063, 0.7127404602268113, 0.7047541953608765, 0.698797929046146, 0.694788916703297, 0.6925778635863393, 0.6919634856134769, 0.6927084344401065, 0.6945554440056234, 0.6972426341479563, 0.7005170683397975, 0.704145886716058, 0.7079245961542039, 0.7116823678566429, 0.715284442732584, 0.7186319535954022, 0.7216596254312295 ], [ 0.6893372656566141, 0.6924363172444902, 0.6973330502950748, 0.7041439633414934, 0.7129220349270851, 0.7236457764785285, 0.7362112833844723, 0.7504281511579842, 0.766019920712935, 0.7826294378676517, 0.7998291779794903, 0.8171362256107993, 0.8340312444277129, 0.8499804578358116, 0.8644594162069392, 0.8769771745453869, 0.8870994575312123, 0.8944694482375775, 0.8988249929253596, 0.90001124907023, 0.8979880936659896, 0.8928319285149291, 0.8847318446927447, 0.8739804194245886, 0.8609596998412903, 0.8461231688460559, 0.8299746816368313, 0.8130455025074682, 0.7958706564216674, 0.778965834618361, 0.7628060544786656, 0.7478071686124705, 0.7343111470222725, 0.7225758243068625, 0.7127695221538745, 0.7049706431651422, 0.6991720082422838, 0.6952894027374393, 0.6931735332811072, 0.692624401627786, 0.6934069917258757, 0.6952671503757089, 0.6979466189300894, 0.7011963320732467, 0.7047873198537515, 0.7085188051953221, 0.7122233531792672, 0.7157691739646095, 0.7190598863070012, 0.7220321981002661 ], [ 0.6894001786321166, 0.6925034837042512, 0.6973979759381244, 0.7041974533266403, 0.7129519368810917, 0.7236368764107797, 0.7361454032992304, 0.7502844893579408, 0.765775661744189, 0.7822606391081143, 0.7993119152111072, 0.8164479525728093, 0.8331522940550331, 0.8488955888032537, 0.8631592907362783, 0.8754596450123778, 0.8853705422401452, 0.8925438916444379, 0.8967263320270904, 0.8977713436502088, 0.8956461203487209, 0.8904328829858091, 0.8823246384227259, 0.8716156924029053, 0.8586874954701227, 0.8439906287649129, 0.8280239157623501, 0.8113117734997031, 0.7943809900771551, 0.7777381314608974, 0.7618487369264332, 0.7471193566509448, 0.7338833171813132, 0.7223908751599752, 0.7128041468223763, 0.705196896622706, 0.6995589546774379, 0.6958047349599009, 0.6937850704967329, 0.6933013916968324, 0.6941211668813263, 0.6959935089808237, 0.6986639281329967, 0.7018873655337436, 0.7054388599524211, 0.7091214497064572, 0.7127711722216732, 0.7162592644905296, 0.7194918691224361, 0.7224076973043393 ], [ 0.6894766060020264, 0.6925789833514258, 0.697464693107716, 0.7042448360095501, 0.7129665381281909, 0.7236023137332493, 0.7360425204362667, 0.7500917574634282, 0.7654698428570103, 0.7818177150104637, 0.7987082606466523, 0.8156617052970254, 0.8321648479923149, 0.8476931137555153, 0.861734165721342, 0.8738116851101582, 0.8835079026834337, 0.8904835485497296, 0.8944940660003874, 0.8954011885164281, 0.8931792812148999, 0.8879161716615397, 0.8798085154059597, 0.8691520388847416, 0.8563272625168601, 0.84178152155387, 0.8260082674795182, 0.8095247467913576, 0.7928492157537943, 0.776478857593097, 0.7608695203875593, 0.7464182876358485, 0.7334497291180526, 0.7222064609503354, 0.7128443797816435, 0.7054326420379915, 0.699958155665384, 0.6963340633910051, 0.6944114484995846, 0.6939933094851487, 0.6948497459575904, 0.6967332838022258, 0.6993933419839305, 0.7025889959687097, 0.7060994046109972, 0.7097315139645823, 0.7133249059544349, 0.7167538965434317, 0.719927185613678, 0.7227855045108705 ], [ 0.6895669355807033, 0.6926633091125255, 0.6975338217976375, 0.7042868832570577, 0.7129667898985206, 0.7235432488314856, 0.7359040357882299, 0.7498516292518098, 0.7651044422787517, 0.7813029778743118, 0.7980208864571082, 0.814780535848602, 0.8310723504285601, 0.8463768714988902, 0.8601882656299729, 0.8720378832430885, 0.881516455933999, 0.8882936157848881, 0.8921336095452208, 0.8929063428238749, 0.890593197159102, 0.8852873880527247, 0.8771889496507385, 0.8665947219946601, 0.8538839663942953, 0.839500436294422, 0.8239318823841804, 0.807688071453889, 0.791278448958884, 0.775190574932221, 0.759870410288494, 0.7457054239657172, 0.7330113304870909, 0.7220230555109008, 0.7128902719564694, 0.7056775654149697, 0.7003689943587631, 0.6968765315998029, 0.6950516331210809, 0.6946990012755332, 0.6955915084515351, 0.6974852336234537, 0.7001336371786532, 0.703300048882314, 0.7067678514429545, 0.7103479838724904, 0.7138836383580184, 0.717252256475112, 0.7203651242854101, 0.723165006643077 ] ], "zauto": true, "zmax": 0.9153284370274931, "zmin": -0.9153284370274931 }, { "autocolorscale": false, "autocontour": true, "colorbar": { "tickfont": { "size": 8 }, "ticksuffix": "", "x": 1, "y": 0.5 }, "colorscale": [ [ 0.0, "rgb(255,247,251)" ], [ 0.14285714285714285, "rgb(236,231,242)" ], [ 0.2857142857142857, "rgb(208,209,230)" ], [ 0.42857142857142855, "rgb(166,189,219)" ], [ 0.5714285714285714, "rgb(116,169,207)" ], [ 0.7142857142857143, "rgb(54,144,192)" ], [ 0.8571428571428571, "rgb(5,112,176)" ], [ 1.0, "rgb(3,78,123)" ] ], "contours": { "coloring": "heatmap" }, "hoverinfo": "x+y+z", "ncontours": 25, "type": "contour", "x": [ 1e-06, 1.3011511650442548e-06, 1.692994354296022e-06, 2.2028415765056147e-06, 2.866229883678204e-06, 3.729398352432554e-06, 4.852511011181743e-06, 6.3138503555892e-06, 8.215273746089953e-06, 1.0689313005882424e-05, 1.390841207112662e-05, 1.809694657026198e-05, 2.354686311364001e-05, 3.063802837345029e-05, 3.986470631277378e-05, 5.1870009063012666e-05, 6.749072272319499e-05, 8.781563250096393e-05, 0.00011426141253772724, 0.00014867137004306603, 0.00019344392634026088, 0.0002516997901283655, 0.0003274994751669172, 0.0004261263236648159, 0.0005544547624925005, 0.0007214294601814526, 0.000938688782612345, 0.0012213760031100258, 0.0015891948094037057, 0.002067782677737912, 0.0026904978401970136, 0.0035007443993213955, 0.004554997653699184, 0.005926740503884541, 0.007711585311544345, 0.010033938212454078, 0.013055670395116691, 0.01698740074503987, 0.02210317627048227, 0.028759573555516536, 0.03742055263793628, 0.04868979566145066, 0.06335278435066323, 0.0824315491666629, 0.10725590623460621, 0.13955614735503497, 0.18158364372009145, 0.23626776957937787, 0.3074200836506151, 0.4 ], "xaxis": "x2", "y": [ 0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0 ], "yaxis": "y2", "z": [ [ 0.01625264769168407, 0.016967574026816094, 0.0194153800511533, 0.022287411087711987, 0.02477203444571341, 0.02646840431835034, 0.02721494811421162, 0.026999947001941912, 0.025918893889996977, 0.024149622911310228, 0.02193203380706432, 0.01954541809840115, 0.017276606559270855, 0.015371487519586445, 0.013973289931803136, 0.013085022295282675, 0.012613159596273276, 0.01248857237412072, 0.012775858034237484, 0.01367699401449155, 0.015402024242634758, 0.018009702119293355, 0.021370360968636187, 0.02524177363232705, 0.02935056246488954, 0.03343773447439683, 0.037279984476768564, 0.04070034874929237, 0.04357324383266316, 0.045824546301774495, 0.047426353713150474, 0.04838652083779895, 0.04873412396597101, 0.04850324413671346, 0.047718448747237484, 0.046385592876186876, 0.044490740010327386, 0.04200834345548823, 0.038918244640281, 0.035230924923102674, 0.031023600536716697, 0.026499250287186617, 0.022100556041382946, 0.0187123657761397, 0.017706160831971098, 0.019946083516520413, 0.024750687516748384, 0.030912895960395523, 0.03759313592599315, 0.04429657273892049 ], [ 0.01615390393935574, 0.016795118403850166, 0.0191953913488355, 0.022038122443532072, 0.02450165630517136, 0.02618045226445204, 0.026911040531982837, 0.02668080162321314, 0.02558456287931537, 0.023799447663541296, 0.021564606215124633, 0.01915885671952586, 0.016869479652770282, 0.014944292837701986, 0.013529165600173684, 0.012627950774496983, 0.012145085862835697, 0.012009694072044459, 0.012288999615411007, 0.013190908827997942, 0.014926882813162727, 0.0175481201084201, 0.02091484260309366, 0.024778789694632895, 0.028864906470388436, 0.03291486994814888, 0.03670709167389082, 0.0400669463200624, 0.04287180153327975, 0.04505118478119844, 0.04658155071673869, 0.04747563758668345, 0.047767512849591034, 0.047495721093504854, 0.04668803453665042, 0.04535162914259537, 0.04347168949136735, 0.041019684657721524, 0.03797081987668342, 0.03432996260976143, 0.030168621797590934, 0.025685725949635838, 0.021327051587480918, 0.018002776843911886, 0.017133088027188142, 0.01955904831019772, 0.024509881061133002, 0.030759723401968104, 0.03748946905092891, 0.04422166790792402 ], [ 0.016180291560083528, 0.016733945581089673, 0.019063680767743296, 0.021857789329533223, 0.024286703789456368, 0.025939026338934378, 0.026648140715843042, 0.02639964654128632, 0.025287112822828268, 0.023486525219064063, 0.0212359181440167, 0.01881322878694782, 0.016505650028218206, 0.014562278011749316, 0.01313109646895232, 0.012216716561335592, 0.011721862679297933, 0.011574269240635503, 0.0118439005748357, 0.012744427102779357, 0.014488377892150269, 0.017119267132002576, 0.02048757643470381, 0.0243395051433987, 0.02839859253312118, 0.03240724077604692, 0.03614552792410985, 0.03944109169256884, 0.042174196393227024, 0.04427801870356949, 0.045733448970420795, 0.04655828922663647, 0.046791886481068884, 0.04647762754177209, 0.045646916776106675, 0.04430867778852605, 0.04244761427689313, 0.040032601027224765, 0.037034674288903176, 0.03345378963779414, 0.029356923348889476, 0.024940874149666715, 0.020656921757983407, 0.01743928792929282, 0.01673749564302244, 0.019342635261522755, 0.024409890667924084, 0.030717654916582966, 0.03747305652770806, 0.044215437058711116 ], [ 0.016320526077517446, 0.01677506657935697, 0.01901342577897593, 0.02174098246208797, 0.024122665257055902, 0.025740250463537367, 0.02642281535438292, 0.026153344246523567, 0.025023583924636675, 0.023207979742979213, 0.020943111457527197, 0.0185056621818732, 0.01618223573169941, 0.014222570152876897, 0.0127762131984207, 0.011848417220464931, 0.011340528628360134, 0.011179285310282698, 0.01143752062452416, 0.012334515749219597, 0.014083566821268604, 0.016720437557968624, 0.02008624228506189, 0.02392207372646253, 0.02795027369772839, 0.03191398396315294, 0.035594875092692345, 0.03882275572300542, 0.04148071712944179, 0.04350556889481735, 0.04488270424208492, 0.04563516583116866, 0.045807878086413734, 0.045449473751989405, 0.04459545533579544, 0.04325696712267372, 0.041418677898430435, 0.039047307731360184, 0.03611025364973174, 0.032603364399595866, 0.028590454136212463, 0.02426847654260458, 0.020097060691465485, 0.017032152826351326, 0.016527814798332867, 0.01929912237938708, 0.02444999764858579, 0.030785479045190106, 0.03754288699786478, 0.04427715405668404 ], [ 0.016560726002591, 0.016907203520049412, 0.019036319808831425, 0.021681348457928552, 0.02400441606632277, 0.02557980962671419, 0.026231293904644713, 0.0259384799586278, 0.024790771250175713, 0.022960700169089406, 0.02068308176679231, 0.01823300676554591, 0.015896028156845297, 0.01392191705778268, 0.012461229216721744, 0.011519719832713719, 0.010997697651584613, 0.010821321858128749, 0.011066442702165153, 0.011957822861602602, 0.013709274448931585, 0.016348785500723148, 0.01970845324764943, 0.0235246315374279, 0.02751861681027045, 0.031434272237477516, 0.035054768415629725, 0.038211978388123395, 0.040791735625296976, 0.042734450297073255, 0.04403007187795884, 0.044707054468461876, 0.04481620565306732, 0.04441183325446161, 0.04353404517878509, 0.04219672949218577, 0.04038501686712356, 0.03806396148770323, 0.0351979071968628, 0.03177948622910413, 0.027870870287855128, 0.02367168214101577, 0.019652779749791918, 0.016787668716362815, 0.016505968778398203, 0.019425487980551402, 0.02462649692411035, 0.030960355670245805, 0.03769700108464857, 0.044405501713554923 ], [ 0.01688548657774908, 0.017117541042196607, 0.019122966546221202, 0.0216718277658323, 0.02392635656394598, 0.025453048842008122, 0.026069547300243124, 0.02575143001319403, 0.024585288972644517, 0.02274140483980839, 0.02045254712987976, 0.017991909818485852, 0.015643575078735577, 0.013656776346690835, 0.012182533580404468, 0.011226956212228568, 0.010689655516409468, 0.01049664648281474, 0.01072696675269174, 0.01161076831692624, 0.013362176690810175, 0.01600139538531358, 0.019351810745002217, 0.023145338316195065, 0.027102333304261268, 0.030967337311481064, 0.034524914596020716, 0.03760888355431653, 0.04010771981804829, 0.04196538404326444, 0.043176418664320315, 0.04377485087420176, 0.04381768289171754, 0.043365352312231036, 0.042463123809923675, 0.041128206834200334, 0.039346745089193454, 0.0370826645174598, 0.03429788996874423, 0.030982788936305745, 0.027199494467473582, 0.0231528513859173, 0.01932731482011912, 0.016707151539572695, 0.01666680066083279, 0.019713648846426877, 0.02493295098039986, 0.031237949938903997, 0.037932556531823265, 0.044598604345456476 ], [ 0.01727890080966102, 0.01739249899058486, 0.01926330076211199, 0.021704887027585985, 0.023882557585524263, 0.025355076368939165, 0.025933369297605754, 0.02558843199845054, 0.02440363590160921, 0.02254670734619598, 0.020248118434256286, 0.01777889459134657, 0.0154212695712099, 0.013423414379766952, 0.011936297281417286, 0.010966233585186521, 0.010412472038408914, 0.010201325577904503, 0.010415216288190516, 0.011289643356509897, 0.013038888407066114, 0.01567535329882919, 0.01901395883181146, 0.022782417726730956, 0.026700209145377043, 0.030512492544421073, 0.03400510950143638, 0.03701369352042287, 0.03942924655511776, 0.0411992097621462, 0.04232273525471633, 0.04283957204567108, 0.04281323139240777, 0.04231076068625616, 0.04138317994749917, 0.040051657357750924, 0.03830395950545558, 0.03610347013381745, 0.033410367441428, 0.030213737316787444, 0.02657727921031683, 0.022713413896592004, 0.019121438903199218, 0.016786504383797023, 0.016998633502201144, 0.020151316725488002, 0.025360650144246703, 0.03161263788674325, 0.03824592232946693, 0.04485407374371569 ], [ 0.017725390451571187, 0.01771841933645061, 0.019446989359220172, 0.021772747010071824, 0.023866904472209127, 0.025280866030999622, 0.02581845694510591, 0.025445653850172747, 0.02424225973149692, 0.022373180878049122, 0.02006636829019626, 0.01759043791483233, 0.015225439508134642, 0.013218008305852891, 0.011718585321187094, 0.01073355253145946, 0.010162120824219871, 0.00993134215414298, 0.0101272506195676, 0.010990713159520405, 0.012736051145968071, 0.015367816302846263, 0.018692636122801826, 0.022434195691760875, 0.02631113338295109, 0.030069154645662833, 0.03349525520559046, 0.03642674313736477, 0.038757014266255316, 0.040436898009811935, 0.04147014912738345, 0.04190236981057971, 0.041803894116685815, 0.04124888388853555, 0.04029476361348862, 0.03896736351754734, 0.03725674709436003, 0.03512639012705542, 0.032535422699801274, 0.029472627144598335, 0.02600477669895435, 0.022353755309050906, 0.019033258766253978, 0.017016534810910314, 0.017484788169015525, 0.02072324776343964, 0.025899199521409875, 0.032077760506695925, 0.038632794572116616, 0.045169066033827435 ], [ 0.018210291488170906, 0.018082104905013312, 0.01966377903865104, 0.021867591027425685, 0.02387323210832009, 0.025225354250171694, 0.02572048717499076, 0.025319259521393134, 0.024097617826073576, 0.022217418786471294, 0.019903895693898353, 0.017423043272228433, 0.015052432741167613, 0.013036744758901436, 0.011525466704012116, 0.010524923594588117, 0.009934597850644088, 0.009682712472824416, 0.009859175457948283, 0.010710316552934522, 0.012450416701061373, 0.015076077289286251, 0.01838572400151009, 0.022099136015783196, 0.025934124828155394, 0.029636864086043983, 0.03299537611961132, 0.03584849329470989, 0.03809185527602891, 0.039679562696824835, 0.040619938014446945, 0.040964545415567544, 0.04079085038179973, 0.04018065715397461, 0.03919849788108839, 0.037875641477862425, 0.03620519340466478, 0.034151404125410116, 0.031673066371876696, 0.028759589120272173, 0.025482117491319064, 0.02207314806790531, 0.01905824660476864, 0.017383944454812134, 0.01810557895909735, 0.02141259361527305, 0.02653714275922205, 0.03262590016786767, 0.03908832572528931, 0.04554034645229829 ], [ 0.018720204053374746, 0.01847119231232679, 0.019903772560557472, 0.021981743872527253, 0.023895445550349673, 0.025183528485954444, 0.02563518720638491, 0.025205469380685346, 0.023966232849872936, 0.022076089584190137, 0.01975738432861502, 0.017273306480446, 0.014898693923521025, 0.012875909650835718, 0.011353115390267494, 0.010336474795008935, 0.009726030997705016, 0.009451594031197991, 0.009607245368692495, 0.010444957833662255, 0.012178923204242194, 0.014797623521721988, 0.018091290091807075, 0.021775872693486457, 0.02556835645398733, 0.02921530391101498, 0.03250563395776614, 0.03527954354687868, 0.0374347475519628, 0.03892847334426958, 0.03977354371095793, 0.040027565161886575, 0.039775432503992514, 0.03910714140151943, 0.038095092571125165, 0.03677685231229014, 0.03514939281982456, 0.03317847113503739, 0.03082324954950954, 0.028074597182006392, 0.025009000533895903, 0.02186973769425385, 0.01918951094407988, 0.017872717703844406, 0.01884025906829568, 0.022202108443734603, 0.027262545225465826, 0.0332491549808983, 0.039607258950272374, 0.045964358902747665 ], [ 0.019243152634017328, 0.01887437369538358, 0.02015762963568601, 0.02210781646449693, 0.023927623032396535, 0.025150504936115394, 0.025558397204654026, 0.02510061408267421, 0.02384474210062409, 0.021945985187292672, 0.019623653064324988, 0.017137972017621086, 0.014760830115685832, 0.012731964959280705, 0.011197896903636453, 0.010164544034303988, 0.009532774409883682, 0.00923437910863101, 0.00936795307731771, 0.010191386990209191, 0.01191876147295839, 0.01453018762815076, 0.017807626309077645, 0.021463238463960123, 0.02521317718392312, 0.028804316672497127, 0.032026341278083105, 0.03472064362901084, 0.0367868256467376, 0.03818506695521062, 0.038932586124769644, 0.03909307708562051, 0.03875914427275452, 0.03802954149887273, 0.03698536025392284, 0.035671415246591, 0.03408946080446511, 0.032207543496464895, 0.029985879914341804, 0.027417481496416443, 0.024584696348588425, 0.021740590154079163, 0.01941826126935433, 0.018465571541610867, 0.01966855758177468, 0.023075072550500758, 0.02806348502973124, 0.03393939168939149, 0.04018405999531665, 0.04643729724556959 ], [ 0.019768612600357883, 0.01928149820981738, 0.02041669854971403, 0.022238815803264696, 0.023964100162127976, 0.025121594470856937, 0.025486124377089022, 0.0250011812304155, 0.023729939927662706, 0.021824061769199085, 0.01949969790326809, 0.017013978945103987, 0.014635663557709573, 0.012601610067093162, 0.01105643730525214, 0.010005752600377147, 0.009351483809484319, 0.009027770212036879, 0.009138102513289342, 0.009946666132672864, 0.01166743038005408, 0.014271790418771337, 0.01753328111844765, 0.021160289318107837, 0.024868130798444733, 0.028403919213577083, 0.0315579733287453, 0.03417270358366675, 0.036149390547185516, 0.03745095922826544, 0.0380988773640184, 0.038162928631938625, 0.03774368142199784, 0.036949227191549396, 0.03587023499249012, 0.03455982333115676, 0.03302554844781118, 0.031238583541822587, 0.029160841285408134, 0.02678794632773222, 0.024208064584384636, 0.021681798536655316, 0.019734386024396026, 0.019145198479541447, 0.02057168341242472, 0.024015899976848425, 0.028928428650035257, 0.0346884642185642, 0.04081304062370785, 0.04695517558251416 ], [ 0.020287453699457482, 0.01968358802818204, 0.020673090199553275, 0.022368222966395155, 0.02399953575606635, 0.025092356724132604, 0.02541458833089602, 0.024903854661738584, 0.02361881309472311, 0.021707473103063663, 0.019382725232265675, 0.016898496194126096, 0.014520271149061237, 0.012481826799737339, 0.010925673244159273, 0.009857058218708484, 0.009179171159240938, 0.008828835914058641, 0.008914864372367865, 0.009708221417121486, 0.011422780977883623, 0.014020775429850123, 0.01726708588761649, 0.020866324786841136, 0.024532971737084592, 0.02801431504941986, 0.03110117791569048, 0.03363680218434032, 0.035523918087837524, 0.03672795476550184, 0.037274435573545615, 0.037239185200960964, 0.03673095424107126, 0.03586775710328194, 0.03475079435875476, 0.03344266203182471, 0.0319578597047062, 0.03027158330068988, 0.02834801680605748, 0.026185592844583463, 0.023877586229912165, 0.021688639905992194, 0.020127054038284475, 0.019895168648243974, 0.02153284537461502, 0.025010468503328418, 0.029846490954763234, 0.035488391543278576, 0.04148846929760269, 0.04751389525339181 ], [ 0.02079183942810386, 0.020072799847986635, 0.020919708080551273, 0.022490043740185508, 0.02402896092062797, 0.02505864299967937, 0.02534025803853421, 0.02480554661051097, 0.023508569333557133, 0.02159359668133258, 0.01927017674133464, 0.01678894765595734, 0.014412011125518086, 0.01236990863079835, 0.010802883482557236, 0.009715787998336627, 0.009013239009140162, 0.008635047421262712, 0.008695814603277079, 0.009473880996598405, 0.011183049886806044, 0.013775835501253783, 0.017008175415464906, 0.02058090392419409, 0.0242076776053048, 0.027635904088138357, 0.030656782985595443, 0.03311419330068945, 0.034912065522768605, 0.036018055836503735, 0.036461498120837404, 0.03632414933899799, 0.03572311241919055, 0.034786906255722484, 0.03362828536898041, 0.0323206313591728, 0.03088667184850093, 0.029306587687178292, 0.0275473159935661, 0.025609946767070044, 0.023591409785685007, 0.021755767529971215, 0.020585263615089777, 0.02070047943730229, 0.022537415516758967, 0.026046240970479858, 0.03080759395676861, 0.03633149396614947, 0.042204666586859965, 0.048109306796463025 ], [ 0.021275108983756456, 0.020442356137016598, 0.02115024714986893, 0.022598837247844533, 0.024047813681735513, 0.02501662915403032, 0.025259881134711892, 0.024703423307335475, 0.02339665962623223, 0.021480053208382116, 0.01915974673473929, 0.016683028000909816, 0.01430853811024185, 0.012263475489010368, 0.010685703527229093, 0.009579653008887959, 0.008851496271091358, 0.008444297556849471, 0.008478957425565595, 0.009241900445468547, 0.010946883002942947, 0.013536031961474662, 0.016756002837361384, 0.020303856949456214, 0.023892458209405283, 0.02726928942700688, 0.03022580159239155, 0.03260630980502517, 0.03431567577794838, 0.03532346915427598, 0.03566253359226366, 0.03542038020395788, 0.034722572128592956, 0.0337086975823339, 0.03250415511843914, 0.031194572324826152, 0.029812359800131354, 0.028343721712258026, 0.026758705885018413, 0.025060490590026744, 0.023347409715484376, 0.02187742082966881, 0.02109829126764385, 0.021547813975932355, 0.02357286906101638, 0.027112248472680994, 0.03180254516934464, 0.03721049073520021, 0.04295608431738272, 0.048737265672743786 ], [ 0.021731658411412, 0.020786463304873916, 0.02135917258007275, 0.02268972792742675, 0.02405196177674901, 0.024962839915215432, 0.025170506515418026, 0.02459492479508376, 0.023280794950546593, 0.021364720266207858, 0.01904939279831215, 0.01657871045937049, 0.014207808143565323, 0.012160476192794457, 0.010572125751718333, 0.009446747063374443, 0.008692158007351476, 0.00825490465294436, 0.008262735226234556, 0.00901097766432369, 0.010713350882662794, 0.01330080711854948, 0.01651034915423794, 0.02003529252628686, 0.02358776093965722, 0.02691528094390248, 0.029809433886951738, 0.032114764572953515, 0.03373677883049124, 0.034646609998663834, 0.03488025188913961, 0.03453071273726031, 0.03373204520750583, 0.0326354379102483, 0.03138008704767523, 0.030065498728087774, 0.02873542519514999, 0.02738322240942228, 0.025982246525948716, 0.024536699947584676, 0.02314325465712272, 0.022047635599491123, 0.021656021485577152, 0.022425593990357665, 0.024628606614866846, 0.028198993324747037, 0.032823057188666876, 0.038118564171983935, 0.043737368697155415, 0.04939368106673059 ], [ 0.02215683026256614, 0.02110022803714538, 0.021541687074177144, 0.022758405725998906, 0.024037716248645428, 0.024894166222795906, 0.025069501341132866, 0.02447777985518987, 0.023158958335541886, 0.021245741066157866, 0.018937340911893846, 0.01647424795100347, 0.014108075498504017, 0.012059180810104137, 0.010460487730216956, 0.009315532643028812, 0.008533832168247121, 0.008065604185495921, 0.008046028011769533, 0.008780259511548403, 0.010481957239965867, 0.013069990748795496, 0.016271327611083988, 0.01977560063823225, 0.02329427230494659, 0.02657489538434999, 0.029409065742452174, 0.03164134808793712, 0.0331775895867286, 0.03399010289409936, 0.034117611510633854, 0.033658275716262745, 0.03275457008172762, 0.03156975883267115, 0.030258043937713783, 0.02893463554806208, 0.027656531309225588, 0.026425476345026063, 0.025218131059333754, 0.02403808351445512, 0.022976482273759, 0.022260439793209706, 0.022249161819503465, 0.023323906260324094, 0.025695729650359347, 0.02929831329295215, 0.03386172759165094, 0.03904939640313764, 0.04454340852410701, 0.05007455751781678 ], [ 0.022546816256142375, 0.021379578553930335, 0.021693693164233925, 0.022801118662986963, 0.024001838323901424, 0.024807877177241228, 0.024954563588472686, 0.024350016987957065, 0.0230294131179644, 0.0211215292389661, 0.018822086131013244, 0.016368168980435863, 0.014007883119306754, 0.011958165271022557, 0.010349451529608514, 0.009184816910085524, 0.008375496201345969, 0.007875530968210987, 0.007828145102687617, 0.008549342383786228, 0.010252641878550213, 0.012843801155192913, 0.01603938307189082, 0.01952545097575984, 0.023012915396501552, 0.026249352625975324, 0.02902626360776112, 0.031188022126886723, 0.03264050156647868, 0.033356777919829404, 0.03337782288160215, 0.03280650753240038, 0.0317935437357038, 0.030514662759633597, 0.02914031889576293, 0.027803465556442534, 0.02657654529982131, 0.02547106381302134, 0.02446673067291906, 0.023564225673707744, 0.0228445773264005, 0.022510024420728764, 0.022869361041642045, 0.024234363084518228, 0.026766811171662235, 0.030403233879319418, 0.03491199436739063, 0.03999718477521701, 0.04536937011047903, 0.05077602949013632 ], [ 0.022898574480286378, 0.021621194461333117, 0.021811755014747143, 0.022814661150115566, 0.02394154179737542, 0.024701628107299825, 0.02482373127232835, 0.02420997238270613, 0.02289070828247786, 0.020990770599434987, 0.018702389931873953, 0.01625926966497168, 0.013906048433912062, 0.011856290431358347, 0.010237976533738034, 0.009053720546000793, 0.00821646621781294, 0.007684194480356512, 0.0076088115518774865, 0.008318268741979372, 0.010025779104496337, 0.012622841154129302, 0.015815286416111053, 0.019285786689324933, 0.022744843031130387, 0.025940067791370685, 0.028662765175523915, 0.030756908990961174, 0.03212807565829048, 0.03274966161679641, 0.03266434633994966, 0.03197916813748106, 0.03085275357844732, 0.029473574167293348, 0.02802959572863605, 0.02667378618329088, 0.02549658965746659, 0.024520811090979564, 0.02372864463723861, 0.023114831019076007, 0.022745049554452185, 0.02279088373560114, 0.0235092532278177, 0.025149937185492657, 0.027835683180126292, 0.03150782431320761, 0.0359680781250262, 0.04095664145349276, 0.04621072080971261, 0.05149438924960705 ], [ 0.02320976101203181, 0.021822446873408802, 0.02189306277735945, 0.022796360745281505, 0.02385449285383301, 0.024573466139129668, 0.02467538939679604, 0.024056295768427754, 0.022741681723984095, 0.02085242276826483, 0.018577275240609918, 0.016146603154414796, 0.013801646137003912, 0.011752677570233738, 0.010125288101560917, 0.008921641841662269, 0.008056361064086984, 0.007491449551017765, 0.007388151433740687, 0.008087521198872032, 0.00980217225413811, 0.012408089065601254, 0.015600123833605423, 0.019057813298505543, 0.022491426305462785, 0.025648638886032072, 0.028320465469661774, 0.03035027576400437, 0.03164302320539115, 0.032171961376918135, 0.03198088316217883, 0.031180345130552147, 0.029936407413191857, 0.028450395595673812, 0.026929020156737656, 0.025547779164080367, 0.024418105315495705, 0.023575852457884947, 0.023004755590418213, 0.022689769598669543, 0.022675508225475458, 0.02309792302766847, 0.024162450012011966, 0.026064795277672817, 0.028897249941145474, 0.03260706531838663, 0.03702491886122806, 0.041922981853958964, 0.04706324307313001, 0.05222610859137604 ], [ 0.023478674995444457, 0.02198134929156832, 0.021935401474755468, 0.02274406541824848, 0.023738808970239503, 0.024421834508152284, 0.024508275606237476, 0.023887954966792767, 0.02258146220257391, 0.02070571345602176, 0.018446020069867553, 0.016029467570691947, 0.013693989356707554, 0.011646682058665368, 0.010010844061261133, 0.008788218138012322, 0.00789506329969767, 0.0072974642464060805, 0.007166669750043406, 0.007858015270701383, 0.009583044444008112, 0.01220088445340799, 0.01539528074194488, 0.018842982494205237, 0.022254238293661976, 0.02537682967034844, 0.028001398009325225, 0.02997051314356795, 0.031188182733283037, 0.03162704218537616, 0.03133135781265575, 0.030414451444605334, 0.029049158884900644, 0.027449567177302275, 0.025842283206469075, 0.024428096054557324, 0.023342929559851913, 0.02263770402886367, 0.022296290061354473, 0.022289121640388997, 0.022633730685430873, 0.02342653546315927, 0.024823499736045324, 0.026974143131970652, 0.029947328967169735, 0.03369673195911025, 0.0380781123400837, 0.04289190563726421, 0.04792304086239095, 0.05296785506061979 ], [ 0.023704215878894146, 0.022096519082651714, 0.021937125667160093, 0.022656132936798315, 0.023593058291723635, 0.02424557671286455, 0.02432148541095485, 0.023704239887376355, 0.022409470680129148, 0.020550138123803435, 0.018308150576539492, 0.01590739345419453, 0.013582610431279047, 0.011537866696217881, 0.00989430076249818, 0.008653286424323002, 0.007732678784606272, 0.00710268646528153, 0.00694523426236473, 0.007631091247713707, 0.009370025022864395, 0.012002908020253495, 0.015202419917713733, 0.018642970547497206, 0.02203503265525794, 0.02512654754458062, 0.02770771080383603, 0.029620108509719405, 0.0307664897577792, 0.03111839466835744, 0.030719889502556417, 0.029686211586782772, 0.028196124738597186, 0.026476127295462074, 0.024773717681698382, 0.023317963265315263, 0.02227339271271873, 0.021708351806817367, 0.02160488391530278, 0.02191322032012591, 0.02261772281913754, 0.023772651396023095, 0.025487827760167548, 0.027874087722625774, 0.03098251805320751, 0.034773292095844205, 0.03912384912587776, 0.04385957312619098, 0.04878654005753166, 0.05371650334948766 ], [ 0.02388585145017286, 0.02216714910194467, 0.02189714070109252, 0.022531423641160057, 0.023416260670031816, 0.024043941480473136, 0.02411447776355843, 0.023504766616434455, 0.02222542163874354, 0.02038545763881953, 0.01816343424269882, 0.01578013156633383, 0.013467242348386152, 0.011425975999733799, 0.009775480173311915, 0.008516844674532254, 0.0075694963644066466, 0.0069078104739494, 0.00672505809404231, 0.007408504832054332, 0.009165130505511786, 0.011816154750843447, 0.015023453353261877, 0.018459651065001716, 0.021835717000817816, 0.024899816343830903, 0.02744163708545684, 0.029301613086617006, 0.03038093933604457, 0.030649593614220184, 0.030150751204497266, 0.029000632974726024, 0.02738288900715543, 0.025535770236399684, 0.02372840761300864, 0.022221310708241876, 0.02121243849752123, 0.020790356597138192, 0.020932651879133624, 0.02156269093615671, 0.02262576993295283, 0.024132764526622025, 0.026151667977563752, 0.02876151780625507, 0.03200008517950066, 0.03583381950828297, 0.04015885790463786, 0.04482257925626843, 0.04965048427388808, 0.05446914254797318 ], [ 0.02402359538561712, 0.02219298892593568, 0.021814891089133193, 0.02236929764905219, 0.02320789139955298, 0.023816589401931453, 0.023887081665807483, 0.023289482158548754, 0.02202932488800756, 0.020211696444527742, 0.01801187377213081, 0.015647641769744376, 0.013347801746237627, 0.011310912550272488, 0.009654339324765763, 0.008379015347015536, 0.007405949020446472, 0.006713744421138885, 0.0065076834269184765, 0.007192415197470706, 0.008970738045443924, 0.011642899172269678, 0.014860507357930746, 0.018295061927279272, 0.02165832100347022, 0.024698744114193566, 0.027205460900164687, 0.02901760331838395, 0.030034541356988968, 0.03022424651933268, 0.029628314565318798, 0.028362958725895174, 0.02661548796591303, 0.02463489429469088, 0.02271230864952236, 0.02114292818592499, 0.02016377390061035, 0.0198869784056377, 0.02028225945807752, 0.021238484636293554, 0.022656477129900772, 0.024503939453696003, 0.02681199209910143, 0.029634002029007494, 0.032997877690540946, 0.03687592006753155, 0.04118035379681281, 0.04577792655313181, 0.05051192726587921, 0.055223079890495005 ], [ 0.024117993160403608, 0.022174335197441605, 0.02169035646399717, 0.022169617405245406, 0.022967888578938042, 0.023563601997912617, 0.023639504390888254, 0.02305867029454556, 0.02182148827088538, 0.020029141664821247, 0.017853702188534673, 0.015510083590366517, 0.013224374244091676, 0.011192716361591639, 0.009530943272092888, 0.008240012383602413, 0.0072425778206133325, 0.006521579765140117, 0.006294966013978032, 0.006985367932382576, 0.008789548855314456, 0.011485651540706816, 0.014715880555677838, 0.01815136643144356, 0.021504959452160608, 0.02452548617476693, 0.027001477951092687, 0.028770636923308484, 0.029730269014551648, 0.02984593228343832, 0.029156979768694927, 0.02777859846952561, 0.02590036856146005, 0.023780630673493775, 0.021732373975827952, 0.020088652760563545, 0.019132054914033837, 0.019002322324036997, 0.019656994273321335, 0.020941904617385106, 0.0227087987177942, 0.02488380482571033, 0.027466440657322132, 0.030489702614808153, 0.03397424730778857, 0.037897669124617464, 0.04218599177403088, 0.04672299814726587, 0.05136822287172077, 0.05597584158464835 ], [ 0.024170115298820773, 0.022112030678374434, 0.02152405554342525, 0.021932756437717152, 0.022696664957026463, 0.02328549389156694, 0.02337234180809713, 0.022812958915697967, 0.021602521573844895, 0.01983834345819066, 0.01768937951688694, 0.01536780895741114, 0.013097202756511394, 0.01107154812019657, 0.009405442646222987, 0.008100113005057231, 0.0070800000503134985, 0.006332563510741983, 0.006089059496991226, 0.0067902689889949444, 0.008624538574102591, 0.01134710395512226, 0.014591994722509953, 0.01803080894291142, 0.02137779071905467, 0.02438220405855949, 0.026831952416197822, 0.028563204496388755, 0.0294710014548074, 0.02951813094305632, 0.02874109037744253, 0.02725303456183291, 0.025244312409010535, 0.022980839844712237, 0.02079667486194865, 0.019065587552843034, 0.01812311410388197, 0.018141506155127655, 0.01906083201109611, 0.020674622503828382, 0.022782056554747663, 0.025270535685854113, 0.028113257835769095, 0.03132730233824518, 0.03492798791898561, 0.03889755831662183, 0.04317382494365167, 0.047655531471566294, 0.052217013252138254, 0.05672517124320036 ], [ 0.024181557041340115, 0.022007471706116513, 0.021317058594841874, 0.021659615184806916, 0.022395125076101825, 0.022983228677561002, 0.023086591186898278, 0.02255332907664769, 0.021373341831040272, 0.01964011682678357, 0.01751959132285253, 0.015221357513534352, 0.012966679345142238, 0.010947677054585719, 0.00927805680146936, 0.0079596355938253, 0.006918882998981268, 0.006148074171692433, 0.005892397632389558, 0.006610344457211775, 0.008478891644492538, 0.011230065929270127, 0.014491338876630795, 0.01793566574235997, 0.02127897144926843, 0.024271021254072562, 0.026699070821227074, 0.028397677972885713, 0.029259462200493847, 0.029244146250061387, 0.028384834541660457, 0.02679170267822202, 0.024654317879397432, 0.02224405832235781, 0.019914496759258903, 0.018082346141315746, 0.01714423318272781, 0.017310846260584822, 0.01849848970231059, 0.02043868245699534, 0.022875947497146408, 0.025662827898138733, 0.028751231004981437, 0.032145942505398414, 0.035858283542437225, 0.03987445014694432, 0.04414226727692794, 0.048573593019908316, 0.05305621600323015, 0.05746902637183467 ], [ 0.02415444354504508, 0.021862623819446182, 0.021071008963320297, 0.021351644788127927, 0.02206468848305701, 0.02265823897292421, 0.022783666722074842, 0.022281125867978438, 0.021135180077530985, 0.019435544961028495, 0.017345249270907297, 0.015071454782099779, 0.012833341065821634, 0.010821474109627046, 0.009149063510398174, 0.007818924960803419, 0.006759924995907347, 0.0059696024142492955, 0.005707671512026226, 0.006449080096591926, 0.00835591759041743, 0.011137389880770227, 0.014416407675044346, 0.017868192213098547, 0.021210608653317205, 0.024193977012580418, 0.026604894409586837, 0.028276257702965303, 0.029098155575683123, 0.029027023897341672, 0.028092135624908154, 0.02639984823033735, 0.024137434887028995, 0.021579376161023917, 0.019096380723316105, 0.017149304539944194, 0.016204456285560345, 0.016518051035696604, 0.017975455996714247, 0.020236490537758105, 0.02299054029189837, 0.026059866855778165, 0.029379635079301594, 0.032945169862584084, 0.036764664308223144, 0.040827538899149585, 0.04509006027314394, 0.04947555435562396, 0.05388401057977561, 0.05820557329818278 ], [ 0.024091439694257255, 0.021680045320299653, 0.0207881542817524, 0.02101087977022467, 0.02170731971041726, 0.02231245098925148, 0.02246541784296687, 0.0219980710311707, 0.020889589443652375, 0.019225984055783355, 0.017167493733116167, 0.01491901336335152, 0.012697870168030648, 0.010693411019918615, 0.00901879610251808, 0.0076783462923269916, 0.00660384539552739, 0.005798737353615433, 0.005537797841993172, 0.0063101347231582705, 0.008258948932390426, 0.011071888311198942, 0.014369635937419953, 0.01783056801011069, 0.02117471075448519, 0.02415297980704368, 0.02655131177043339, 0.028200920265244806, 0.028989303899050668, 0.028869469140635734, 0.027866537107859274, 0.026082363332858186, 0.023700551307090294, 0.020996225748319334, 0.01835406688158886, 0.01627882157199277, 0.015314923547484252, 0.015772399403743094, 0.017497984766782358, 0.020070787027296415, 0.023126262376117906, 0.026461292072330004, 0.029998181362690324, 0.03372489061847726, 0.03764696869507081, 0.041756316654633474, 0.04601624303362581, 0.0503600694295085, 0.054698824348948565, 0.05893318086540351 ], [ 0.023995763458016704, 0.02146291842216912, 0.020471387964353112, 0.020639980485521528, 0.021325565591598525, 0.021948313743880364, 0.022134150123802175, 0.02170627700819049, 0.0206384542812929, 0.01901306936068407, 0.01698769832937474, 0.0147651371975762, 0.012561098887194833, 0.010564065781440216, 0.008887648877036122, 0.007538289049551763, 0.006451385267358531, 0.005637159405917055, 0.005385873599206244, 0.006197223572818845, 0.008191223437165421, 0.011036246036535066, 0.014353331920431827, 0.017824842322203927, 0.021173139465833466, 0.02414976228271494, 0.02653999371756058, 0.028173369404542906, 0.028934788595055164, 0.02877376830815612, 0.027711088305845958, 0.025843612784862274, 0.02335013670488938, 0.02050406802142563, 0.017700285177107658, 0.015485355915827672, 0.014489174440672993, 0.015084863369825539, 0.017073035518935558, 0.019944599905521682, 0.023283877144641123, 0.026867158769809864, 0.03060697032223281, 0.0344853300422081, 0.038505310601008445, 0.04266054338301333, 0.046920125239464844, 0.051226053182624645, 0.05549931850267401, 0.05965041315772828 ], [ 0.02387120146827579, 0.021215087344980902, 0.020124301416638766, 0.020242286075336183, 0.02092260020614603, 0.021568832683867403, 0.021792648269427634, 0.021408261817655434, 0.020383999762105632, 0.018798722017324437, 0.01680747609817578, 0.014611128770862295, 0.012424018925650622, 0.010434134900051335, 0.00875609152872341, 0.007399182029292667, 0.006303320505048583, 0.005486640365510535, 0.005255112414060484, 0.006113972361878436, 0.008155757209176004, 0.011032932434591709, 0.014369612670202866, 0.01785288170462662, 0.021207564589793858, 0.024185839680780086, 0.026572352508377584, 0.028194992559827634, 0.028936098501184383, 0.02874171906282622, 0.027628238641189268, 0.0256872610984072, 0.023091957742408332, 0.020111975356788825, 0.017148336043769197, 0.014785366021836218, 0.013743321084491592, 0.014468109313277402, 0.016708143035916515, 0.01986117858021565, 0.02346445234780352, 0.027277897211959553, 0.031206447639436894, 0.035226996361232464, 0.039340050109176954, 0.04354022025210699, 0.047801262567795315, 0.05207266135766956, 0.05628437398628533, 0.06035602147676063 ], [ 0.023722125084978438, 0.020941102171854496, 0.019751246963577256, 0.0198218782630636, 0.020502277262243136, 0.021177606971200906, 0.021444200177162788, 0.02110696376160837, 0.02012880107803256, 0.01858515598228574, 0.016628686777029233, 0.014458498937438018, 0.012287795531022104, 0.010304452631768083, 0.008624693194219, 0.007261520675810146, 0.006160488880649205, 0.005349050890921182, 0.005148759482396922, 0.006063750003295258, 0.008155219054013793, 0.011064119943674417, 0.014420345230094904, 0.017916323139530878, 0.02127942389545868, 0.02426247370568556, 0.026649507419013004, 0.028266825311815416, 0.028994288463187197, 0.028774574151528096, 0.027619748601021496, 0.02561611514640081, 0.022930788722422973, 0.019828131659736164, 0.01671142109953809, 0.014196840674439477, 0.013095925140176707, 0.013936287437330502, 0.016411201323537072, 0.019823908299685215, 0.02366932041079555, 0.027694270277751898, 0.03179736288978725, 0.03595064791697362, 0.04015176704363515, 0.04439556545927186, 0.04865943413253939, 0.05289927141465523, 0.05705307754820422, 0.06104893574600642 ], [ 0.023553504643240845, 0.020646266387187327, 0.019357410638793256, 0.019383655532033705, 0.020069188892928483, 0.020778868897355023, 0.02109262043542207, 0.020805754476988157, 0.019875791000640918, 0.018374884034519205, 0.016453444408241452, 0.014308978781893805, 0.012153785835353516, 0.010176017202058364, 0.008494156531373429, 0.007125907531810487, 0.006023832168764559, 0.005226374757773052, 0.005069985288114006, 0.006049496585572853, 0.008191819408770373, 0.011131615575876443, 0.014507097530171672, 0.018016534908780826, 0.021389890097682097, 0.024380643620925808, 0.02677225843258502, 0.028389525713024832, 0.029109950788874617, 0.028873002677950916, 0.027686624842583857, 0.025631997641513558, 0.022870147782789185, 0.019659296654609398, 0.016401732187102686, 0.013738306078598462, 0.012567350369075535, 0.013504506611563065, 0.016190155323308055, 0.019836207432542198, 0.02390003163385879, 0.028117329616227014, 0.03238073025574888, 0.03665726274097885, 0.04094123660146346, 0.045226992018552854, 0.049494621589918464, 0.05370546443505109, 0.05780470797678589, 0.061728255486782194 ], [ 0.023370918837240698, 0.02033668465561106, 0.01894889246503689, 0.01893341580653129, 0.01962872850953423, 0.0203775227784999, 0.020742270783500872, 0.020508448249049915, 0.019628264121078418, 0.018170721521744485, 0.016284124178347015, 0.014164532637443926, 0.012023560797643634, 0.010050023672196533, 0.008365361951676807, 0.006993106390690826, 0.005894453761690317, 0.005120728025015546, 0.005021764012418115, 0.0060735704897040225, 0.00826722767386008, 0.011236811689337428, 0.014631102341731726, 0.018154587504335025, 0.02153984662615859, 0.024541025997246533, 0.026941069363265433, 0.028563359888051167, 0.029283201309429505, 0.029037071707232267, 0.02782908513068167, 0.02573566481419968, 0.02291209148952665, 0.019610305444794182, 0.01622938679911619, 0.01342724105845472, 0.012178366761886881, 0.013187917270885722, 0.016052609110184888, 0.019901411809833014, 0.024158301439857272, 0.028548370652482207, 0.032957790765100796, 0.037348009891399296, 0.04170940650466217, 0.04603508705079606, 0.05030698960280251, 0.0544910078981014, 0.05853872256334882, 0.062393240480705874 ], [ 0.023180555304096608, 0.02001930547056511, 0.018532789401278497, 0.0184779434041428, 0.019187153332460447, 0.019979179155270296, 0.02039807401453466, 0.020219304814507406, 0.01938987561555568, 0.017975786128229632, 0.016123367055928033, 0.014027371010761382, 0.011898929680520032, 0.009927902675656271, 0.00823942168185064, 0.006864110185333324, 0.0057736910659658995, 0.005034379700801575, 0.005006749260235865, 0.006137640789168446, 0.008382529197245055, 0.011380660610511514, 0.01479323674578641, 0.018331236169998644, 0.02172987335198812, 0.02474398402854121, 0.027156061166782472, 0.02878819956486271, 0.029513680764563746, 0.029266249395232813, 0.02804655610241825, 0.025926777321424815, 0.02305709603609441, 0.019683685392017876, 0.016201387556484377, 0.013278042302754003, 0.011947944322888877, 0.013000414445591775, 0.01600538012286409, 0.020022652319345618, 0.024445953070203398, 0.02898888670908513, 0.033529975650802304, 0.03802422204240702, 0.042457375245042915, 0.046820592219366755, 0.051096867408955374, 0.055255839219952405, 0.05925474381225567, 0.06304330121169047 ], [ 0.022989197492505064, 0.0197019507428262, 0.018117272419103204, 0.018025092395296715, 0.018751639322675567, 0.019590178148740086, 0.020065516587272975, 0.019943022146908726, 0.0191646319038924, 0.017793491577304966, 0.015974080433736028, 0.013899961747932418, 0.011781965477842472, 0.009811363636563188, 0.008117742657132169, 0.0067402217972747135, 0.005663200243986908, 0.004969768779261466, 0.005027165397772584, 0.006242645750374396, 0.008538227649354654, 0.011563675127238108, 0.014994018246560957, 0.01854691583054401, 0.021960242786019338, 0.02498956672581818, 0.027417015539331863, 0.02906353140215532, 0.029800571114076576, 0.02955942906004677, 0.028337703673818982, 0.02620392727499775, 0.023304041942903076, 0.019879461419841784, 0.016320837710573136, 0.013299971038906771, 0.01189054601418826, 0.012953128186226008, 0.01605405043406674, 0.020202733542924504, 0.024764857368012896, 0.029440522550542345, 0.03409887054133959, 0.03868736895148295, 0.043186371103214945, 0.04758438503507348, 0.05186473128539395, 0.05600004995776344, 0.05995254640766438, 0.06367798916296669 ], [ 0.022804191967221304, 0.019393321289235762, 0.017711643962494035, 0.01758385328842643, 0.018330317372436636, 0.01921759347056799, 0.019750633928364045, 0.019684715031280515, 0.018956870164237343, 0.017627532870336672, 0.015839432646028, 0.013785037333970513, 0.0116750290957381, 0.009702440265828635, 0.008002096241324363, 0.0066231456082983435, 0.00556504834310245, 0.004929511055706104, 0.00508473441171471, 0.0063888257603339875, 0.008734291398102905, 0.011785953877296643, 0.0152336171598905, 0.018801748227634536, 0.02223092655380453, 0.025277517666701072, 0.02772338825535547, 0.029388477208312686, 0.030142625328394335, 0.02991497193988408, 0.028700492778969296, 0.026564717569597485, 0.023650303490155795, 0.020195187140947417, 0.01658661713818838, 0.013495708835652383, 0.012013676955518618, 0.01305303386188285, 0.016202580071889794, 0.02044402203760766, 0.025116871496460542, 0.029905027734397932, 0.03466618030549223, 0.03933903154475262, 0.043897731713413844, 0.048327460822779944, 0.052611187744014694, 0.05672387059519837, 0.06063204444053393, 0.06429698703139723 ], [ 0.022633389635515925, 0.019102963855890026, 0.017326355407086713, 0.017164383111707666, 0.017932274931122406, 0.018869206098036252, 0.019459971274430426, 0.019449874758731535, 0.018771223446636395, 0.017481860489852487, 0.015722838982572807, 0.013685595797722078, 0.011580789400026378, 0.009603535083258848, 0.007894691306687348, 0.006515085501923841, 0.005481804379391414, 0.00491638854205142, 0.005180653658579033, 0.006575823335519918, 0.00897023572443215, 0.012047227857729978, 0.015511883466609751, 0.019095560174631168, 0.022541611272788226, 0.025607292389653043, 0.028074331113979348, 0.029761823493630962, 0.030538208355486103, 0.03033076504646427, 0.029132270593947875, 0.027005883831052496, 0.024091928236336775, 0.02062619261781635, 0.016993605433312436, 0.013861047723505607, 0.012316616577452037, 0.013302080045123265, 0.01645304587954051, 0.02074835257650341, 0.025503778584494294, 0.030384210245159665, 0.03523369448813576, 0.03998087646145903, 0.044592884022825345, 0.049050915201040636, 0.05333695733232543, 0.057427655841232744, 0.06129327889727943, 0.06490009891149875 ], [ 0.02248505431239883, 0.018841182523364246, 0.01697295683271628, 0.016777971099352876, 0.017567502385168937, 0.01855343454267672, 0.019200512287199663, 0.019244305233461254, 0.018612568239012653, 0.01736064106278707, 0.01562793674245905, 0.013604892372078223, 0.011502235541446294, 0.009517458449748372, 0.007798245186255362, 0.0064188419040998096, 0.005416616559644475, 0.004933315325544009, 0.005315629604834336, 0.006802829700112679, 0.009245228120563869, 0.01234692223308143, 0.015828385170297006, 0.019427911085088286, 0.022891722388467255, 0.0259780830425334, 0.028468720914551014, 0.030182058326672024, 0.030985346392983275, 0.030804289687094723, 0.02962986581892065, 0.027523445430752108, 0.024623880067595173, 0.021165996651566724, 0.017533379665470878, 0.01438581797737239, 0.012790865319015552, 0.013697109412638403, 0.016805549162925114, 0.021116959189557256, 0.025927230337599753, 0.030879890981378548, 0.03580325338031768, 0.04061463098724327, 0.045273324559843967, 0.04975592697659899, 0.05404285894772347, 0.058111870390130035, 0.0619364054120456, 0.06548724049451929 ], [ 0.02236773297758031, 0.01861887639889019, 0.016663945454869593, 0.016436905169074006, 0.01724675991825353, 0.018279207880440573, 0.018979568089085776, 0.01907403146706438, 0.01848595194936377, 0.017268202408831524, 0.015558547067763388, 0.013546418945134626, 0.011442677373173851, 0.009447456204976326, 0.007716044416867094, 0.006337896206197137, 0.0053732580809251595, 0.004983276876042293, 0.005489960058238913, 0.007068751086890388, 0.009558202406662025, 0.012684226647399145, 0.016182454492333055, 0.019798127411426083, 0.023280454126722982, 0.026388848568852756, 0.02890519360142766, 0.03064741321332928, 0.03148178135096441, 0.03133269594868985, 0.030189696110928987, 0.02811287064985755, 0.02524031388292948, 0.021806806739916477, 0.01819519237998287, 0.015055671601629843, 0.013422063659502997, 0.014230573573281204, 0.017258301423692946, 0.02155043535428247, 0.026388694573425804, 0.03139385974768224, 0.03637671486391811, 0.04124205838338478, 0.04594059998223455, 0.050443741399028144, 0.054729794604504445, 0.05877707510606942, 0.06256168228702987, 0.06605842932304078 ], [ 0.02229008443652844, 0.01844728822117061, 0.01641247810357008, 0.016154201868018334, 0.016981340685160697, 0.01805576954482477, 0.018804621408529194, 0.018945178120865856, 0.01839649902961743, 0.01720896179597046, 0.015518621875581652, 0.013513868564764399, 0.011405729463198755, 0.00939721871279693, 0.0076519842212677495, 0.006276465809832647, 0.005356120276442372, 0.005069245012096801, 0.005703647211081345, 0.007372369311915501, 0.009907968793595782, 0.013058167367583813, 0.01657323802832954, 0.020205341392477334, 0.02370680351830283, 0.02683834856155173, 0.029382181617812447, 0.031155907684170477, 0.03202502745750979, 0.0319128786687387, 0.03080787627991603, 0.028769242074353198, 0.025934851453739294, 0.022540028464453018, 0.01896700155604541, 0.01585410432414239, 0.014192559328917526, 0.01489177394191028, 0.017807861522175478, 0.022048724608747218, 0.026889409430710776, 0.03192783345998312, 0.036955922255408793, 0.041864933686133844, 0.04659628792468786, 0.051115653758144586, 0.055398734619919045, 0.05942391361080305, 0.06316945878896414, 0.06661377513840289 ], [ 0.022260667159185055, 0.01833765681642856, 0.016231922329838135, 0.01594316993626151, 0.016782713147530784, 0.017892405685067038, 0.018683124703248816, 0.018863818628467973, 0.018349296455839804, 0.0171873376474815, 0.015512175246025977, 0.013511082962594321, 0.011395274414529418, 0.009370863309827598, 0.007610572914922691, 0.00623950814605289, 0.005370131830777213, 0.005194076897216314, 0.005956519536495787, 0.007712478038891095, 0.01029331031306992, 0.01346767557434175, 0.01699974723220799, 0.02064853154333818, 0.02416960644588393, 0.027325178927222134, 0.029897952573858074, 0.03170539443294884, 0.0326124272781282, 0.032541551042248595, 0.03148032111428911, 0.029487410998561607, 0.02670083440672749, 0.02335672316518997, 0.019836372558279622, 0.016764196968524957, 0.015083771088748862, 0.015668247895692437, 0.018449472082716356, 0.022611139759164144, 0.02743034566302322, 0.032483417293609027, 0.03754267344134155, 0.04248502010678685, 0.04724197820652164, 0.05177299333875991, 0.056050703209317494, 0.060053099266550065, 0.06376016373420872, 0.06715347035632611 ], [ 0.022287692764590167, 0.0183007813445917, 0.016135244911096087, 0.015816800784038066, 0.01666204222007905, 0.01779810252766219, 0.0186222575759045, 0.018835799430096802, 0.018349261922025056, 0.01720764684944047, 0.015543200134254379, 0.013541982340377144, 0.011415402196105833, 0.009372882398111624, 0.007596885991241005, 0.006232649634519945, 0.005420589603945112, 0.00536041156022851, 0.0062483427136151804, 0.008087984934886463, 0.010713059993920209, 0.013911647608893374, 0.017460906170527916, 0.021126562580208563, 0.024667573825288294, 0.02784780765679924, 0.03045064753250697, 0.03229360314808688, 0.03324120490953756, 0.033215312874219145, 0.03220283835038202, 0.030262133141180335, 0.02753153897700706, 0.024247978149316417, 0.020791157990108465, 0.0177698272242854, 0.01607787274801717, 0.016546985208793757, 0.01917743461533383, 0.023236406276898918, 0.028012177992356082, 0.03306206948433252, 0.03813869164737662, 0.04310404620890331, 0.04787925449466076, 0.05241710777430877, 0.05668676450090378, 0.060665402558875495, 0.06433429437950168, 0.06767778070508915 ], [ 0.0223787583262505, 0.01834652585647025, 0.01613427650070716, 0.015787020014610294, 0.016629615828401584, 0.017781152110060785, 0.018628656920736782, 0.01886654854453943, 0.018401001110893732, 0.017273992009697887, 0.015615573155484494, 0.013610478513513586, 0.011470324153824173, 0.009408051370388332, 0.007616456189713209, 0.006262019134689503, 0.005512902534172187, 0.005570579363290379, 0.006578906178436544, 0.008497977698020727, 0.01116615678197422, 0.014388994611412546, 0.017955594252840646, 0.02163822288520989, 0.025199326314482157, 0.028404609252589877, 0.031038317504517327, 0.03291818156256518, 0.03390851468077171, 0.033930711429582226, 0.03297120902187312, 0.031088181536222448, 0.028420345709599216, 0.02520517784480192, 0.021819939949101846, 0.018856346176256512, 0.017158730624459148, 0.017515314736954946, 0.019985470491961456, 0.023922723803220938, 0.0286352660019321, 0.03366507042887376, 0.03874559821063327, 0.043723684073501454, 0.04850967654463583, 0.05304934786316564, 0.0573080089979749, 0.06126163889538323, 0.06489240563990296, 0.06818703606016878 ], [ 0.02254057713227076, 0.018483314418932376, 0.016238939051269597, 0.01586388567999195, 0.016694235869305803, 0.01784874221151279, 0.018708141512906486, 0.01896088223147938, 0.018508663254687984, 0.01739014517622046, 0.015732952203459247, 0.013720374782054389, 0.01156426333346958, 0.009481294709604966, 0.007675092146738892, 0.006333978527075072, 0.005652273617566106, 0.0058265374279784145, 0.006948079522176531, 0.00894175726060415, 0.011651680925929442, 0.014898680469029915, 0.018482682453879993, 0.022182258104452464, 0.025763426295285757, 0.02899389667263393, 0.03165895707714165, 0.03357673266144843, 0.034611484272990496, 0.034684293730447596, 0.03378125397831059, 0.031960435495040906, 0.029360864084801243, 0.026220181798490696, 0.022912268259116127, 0.020010841691794963, 0.018312258966518304, 0.018561443688085433, 0.020867031926170985, 0.024667839040143864, 0.029299644540921304, 0.03429349662653827, 0.03936488773053603, 0.04434552868564786, 0.04913476316311104, 0.053671052929178446, 0.05791554053081631, 0.06184265684554229, 0.06543509965960345, 0.06868162150911432 ], [ 0.022778732022657098, 0.01871768250536639, 0.01645656044049544, 0.016054862662579106, 0.01686265966497514, 0.01800657928412863, 0.01886545885405421, 0.019122826682758148, 0.018675806214509788, 0.017559436176409617, 0.015898673438184845, 0.013875258265977389, 0.011701326424270679, 0.009597514953518321, 0.007778630141835317, 0.006454766547562713, 0.00584336871537101, 0.006129837950883618, 0.007355839361840932, 0.009418844213736817, 0.012168871249274571, 0.015439748165415575, 0.01904106229225169, 0.02275739996853852, 0.0263584062448615, 0.02961394998152747, 0.032310534439393974, 0.03426684738536545, 0.035347251695756886, 0.035472649919071626, 0.03462888660463208, 0.032873946773052796, 0.030347016521763828, 0.027285425026248155, 0.02405874741119938, 0.021222137179720588, 0.019526411294662892, 0.019674713458643647, 0.021815545844711508, 0.025469123603728383, 0.030005023144272825, 0.03494819986354054, 0.03999790595592109, 0.04497107878616636, 0.049755976049275695, 0.05428353682116351, 0.05851046375171975, 0.06240932685478173, 0.06596301576483668, 0.06916196868038908 ], [ 0.023097476247308377, 0.019053951637567023, 0.016791406616074766, 0.016364313971538185, 0.01713918622567056, 0.018258596920221682, 0.019104083575726294, 0.019355472364172878, 0.018905282828564164, 0.0177846544207108, 0.016115655291701367, 0.014078392414255162, 0.01188536638134653, 0.009761396869846952, 0.0079326396030891, 0.006630100897705966, 0.006090033371192559, 0.00648162887394232, 0.007802271388525026, 0.009928965261649728, 0.012717127535894344, 0.016011335439165938, 0.019629667451506252, 0.023362389877205188, 0.02698279296833109, 0.03026304120959373, 0.03299101738046962, 0.03498613252111607, 0.03611299599625218, 0.036292447901691685, 0.035510152656500635, 0.03382398548067923, 0.031373088517149574, 0.028393959389772485, 0.025251024159298432, 0.022480648288328475, 0.020790986148533, 0.02084566033289006, 0.022824588733908045, 0.02632365139467741, 0.03075079357899856, 0.035629791876135755, 0.040645830727036286, 0.04560171943011188, 0.050374704679190405, 0.05488807465483195, 0.05909387223489098, 0.06296253047204464, 0.06647682083095527, 0.06962854736977994 ], [ 0.023499602960267724, 0.01949407743745205, 0.01724452357113721, 0.01679331335407881, 0.017525461936970892, 0.01860679313159336, 0.019426092068806536, 0.01966087611702267, 0.019199158901170618, 0.018067972394075895, 0.016386317223821962, 0.014332618447940869, 0.012119847685843555, 0.009977206270441874, 0.008142118953969987, 0.006864806331581294, 0.0063951108810666795, 0.006882680190433095, 0.008287554083680296, 0.010472026071389367, 0.013296001424467224, 0.01661268114034269, 0.020247488395686884, 0.023995997167828364, 0.027635127473872277, 0.030939455197410072, 0.03369839510697941, 0.035732233759359286, 0.036905961913745566, 0.03714045990558599, 0.03642125866768818, 0.03480606896725571, 0.03243375231492763, 0.029539453730957132, 0.026481717653158272, 0.023778180583747494, 0.02209736370157441, 0.022065960202745136, 0.023888000159488415, 0.027228271383410496, 0.031536044341453094, 0.036338634550152266, 0.04130965623267249, 0.046238706479499576, 0.050992252396881155, 0.055485890404893594, 0.059666837248374856, 0.06350315013426101, 0.06697720009771158, 0.0700818574976153 ], [ 0.023986396293791238, 0.02003768959152115, 0.017813909164562616, 0.017339807391750398, 0.018020535538096186, 0.01905121837568952, 0.01983212761677571, 0.02004002058333301, 0.019558669973551206, 0.018410897088185437, 0.01671251983895436, 0.01464027422290388, 0.01240772730922285, 0.010248606974728054, 0.008411227464218936, 0.007162539501947196, 0.006760387506243057, 0.007333425982784276, 0.008811930688748937, 0.011048075878670419, 0.013905178984903642, 0.017243123889697547, 0.02089358064479385, 0.024657032278072217, 0.028313980523264483, 0.03164150642795968, 0.03443069593961049, 0.03650285411804365, 0.0377234789253423, 0.03801358183568643, 0.03735859064305742, 0.035815977059971846, 0.03352407107446424, 0.0307161675430283, 0.027744321880086447, 0.0251077170057477, 0.02343823782342587, 0.023328315406681392, 0.0249999470764157, 0.028179673123753725, 0.032359580760235505, 0.03707483553604311, 0.04199018076867595, 0.04688315323233909, 0.05160982386875972, 0.056078145454961974, 0.06023039726756768, 0.0640320595536448, 0.0674648484678069, 0.07052242142932132 ], [ 0.024557666133150382, 0.02068230579852015, 0.018494957208912238, 0.0179990701201446, 0.018621138080953364, 0.019590108902626076, 0.020321456593857336, 0.02049283304476343, 0.019984219495459463, 0.018814252599862375, 0.01709553076225544, 0.015003137288022859, 0.012751363167080665, 0.010578518522254486, 0.008743095474492396, 0.007525659067557704, 0.007186655993831594, 0.007834012286509085, 0.009375675135124066, 0.011657268062663905, 0.014544457736437593, 0.017902094670434108, 0.02156706755642341, 0.025344355216944094, 0.029017964080166134, 0.03236755202029592, 0.03518600110907085, 0.037295768081652074, 0.038562975271811996, 0.038908846437048596, 0.03831872479621114, 0.03684975684295386, 0.03463948951804416, 0.031918909449357914, 0.029033099602713653, 0.026463220034271866, 0.02480737385650541, 0.02462632101057864, 0.026154951757035246, 0.029174443590072284, 0.033219949303174665, 0.03783824899270152, 0.04268799809919735, 0.04753601935462807, 0.052228514044197115, 0.05666592820851811, 0.060785548299503646, 0.06455011475437017, 0.06794046232380986, 0.0709507766907086 ] ] }, { "hoverinfo": "text", "legendgroup": "In-sample", "marker": { "color": "black", "opacity": 0.5, "symbol": 1 }, "mode": "markers", "name": "In-sample", "text": [ "Arm 0_0
accuracy: 0.841833 (SEM: None)
lr: 2.6e-05
momentum: 0.58", "Arm 10_0
accuracy: 0.900833 (SEM: None)
lr: 7.17709e-05
momentum: 0.726163", "Arm 11_0
accuracy: 0.846833 (SEM: None)
lr: 0.000173219
momentum: 0", "Arm 12_0
accuracy: 0.892167 (SEM: None)
lr: 5.90187e-05
momentum: 1", "Arm 13_0
accuracy: 0.8895 (SEM: None)
lr: 8.66972e-05
momentum: 0.64011", "Arm 14_0
accuracy: 0.906333 (SEM: None)
lr: 6.09416e-05
momentum: 0.819741", "Arm 15_0
accuracy: 0.15 (SEM: None)
lr: 1e-06
momentum: 0", "Arm 16_0
accuracy: 0.82 (SEM: None)
lr: 3.33183e-05
momentum: 1", "Arm 17_0
accuracy: 0.911 (SEM: None)
lr: 0.00011265
momentum: 0.591139", "Arm 18_0
accuracy: 0.888167 (SEM: None)
lr: 8.50861e-05
momentum: 0.551459", "Arm 19_0
accuracy: 0.919667 (SEM: None)
lr: 0.000109174
momentum: 0.719968", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 20_0
accuracy: 0.902667 (SEM: None)
lr: 0.000142941
momentum: 0.63833", "Arm 21_0
accuracy: 0.897333 (SEM: None)
lr: 9.49914e-05
momentum: 0.698897", "Arm 22_0
accuracy: 0.930333 (SEM: None)
lr: 0.000133054
momentum: 0.747599", "Arm 23_0
accuracy: 0.938167 (SEM: None)
lr: 0.000189439
momentum: 0.672589", "Arm 24_0
accuracy: 0.916667 (SEM: None)
lr: 0.000176955
momentum: 0.547454", "Arm 2_0
accuracy: 0.884333 (SEM: None)
lr: 8.95174e-05
momentum: 0.335441", "Arm 3_0
accuracy: 0.678667 (SEM: None)
lr: 1.77012e-06
momentum: 0.902833", "Arm 4_0
accuracy: 0.100333 (SEM: None)
lr: 0.10174
momentum: 0.0657866", "Arm 5_0
accuracy: 0.0881667 (SEM: None)
lr: 0.0170037
momentum: 0.802601", "Arm 6_0
accuracy: 0.774 (SEM: None)
lr: 3.46162e-05
momentum: 0", "Arm 7_0
accuracy: 0.897667 (SEM: None)
lr: 8.30164e-05
momentum: 1", "Arm 8_0
accuracy: 0.891333 (SEM: None)
lr: 4.63421e-05
momentum: 1", "Arm 9_0
accuracy: 0.853167 (SEM: None)
lr: 0.000124575
momentum: 1" ], "type": "scatter", "x": [ 2.6e-05, 7.177094972712725e-05, 0.00017321949049554298, 5.9018702568891935e-05, 8.66972191163919e-05, 6.09416010429868e-05, 1e-06, 3.3318321796084146e-05, 0.00011264952079461006, 8.508614356931696e-05, 0.00010917385197593587, 0.00995509203921593, 0.00014294133300164923, 9.499137956414196e-05, 0.0001330535722607629, 0.00018943860779047254, 0.00017695546559483256, 8.95174165429637e-05, 1.7701150611603212e-06, 0.10173960742426996, 0.0170037365367624, 3.4616185641528946e-05, 8.301636451443766e-05, 4.63420589234253e-05, 0.00012457466003662634 ], "xaxis": "x", "y": [ 0.58, 0.7261629704636734, 0.0, 1.0, 0.6401104818328034, 0.8197412447122748, 0.0, 1.0, 0.5911385299893963, 0.5514587906490103, 0.7199679226692515, 0.6334228515625, 0.6383300687166493, 0.6988972675211316, 0.7475990089171277, 0.6725887214728918, 0.5474540626617792, 0.33544088527560234, 0.9028334226459265, 0.06578655354678631, 0.8026014352217317, 0.0, 1.0, 1.0, 1.0 ], "yaxis": "y" }, { "hoverinfo": "text", "legendgroup": "In-sample", "marker": { "color": "black", "opacity": 0.5, "symbol": 1 }, "mode": "markers", "name": "In-sample", "showlegend": false, "text": [ "Arm 0_0
accuracy: 0.841833 (SEM: None)
lr: 2.6e-05
momentum: 0.58", "Arm 10_0
accuracy: 0.900833 (SEM: None)
lr: 7.17709e-05
momentum: 0.726163", "Arm 11_0
accuracy: 0.846833 (SEM: None)
lr: 0.000173219
momentum: 0", "Arm 12_0
accuracy: 0.892167 (SEM: None)
lr: 5.90187e-05
momentum: 1", "Arm 13_0
accuracy: 0.8895 (SEM: None)
lr: 8.66972e-05
momentum: 0.64011", "Arm 14_0
accuracy: 0.906333 (SEM: None)
lr: 6.09416e-05
momentum: 0.819741", "Arm 15_0
accuracy: 0.15 (SEM: None)
lr: 1e-06
momentum: 0", "Arm 16_0
accuracy: 0.82 (SEM: None)
lr: 3.33183e-05
momentum: 1", "Arm 17_0
accuracy: 0.911 (SEM: None)
lr: 0.00011265
momentum: 0.591139", "Arm 18_0
accuracy: 0.888167 (SEM: None)
lr: 8.50861e-05
momentum: 0.551459", "Arm 19_0
accuracy: 0.919667 (SEM: None)
lr: 0.000109174
momentum: 0.719968", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 20_0
accuracy: 0.902667 (SEM: None)
lr: 0.000142941
momentum: 0.63833", "Arm 21_0
accuracy: 0.897333 (SEM: None)
lr: 9.49914e-05
momentum: 0.698897", "Arm 22_0
accuracy: 0.930333 (SEM: None)
lr: 0.000133054
momentum: 0.747599", "Arm 23_0
accuracy: 0.938167 (SEM: None)
lr: 0.000189439
momentum: 0.672589", "Arm 24_0
accuracy: 0.916667 (SEM: None)
lr: 0.000176955
momentum: 0.547454", "Arm 2_0
accuracy: 0.884333 (SEM: None)
lr: 8.95174e-05
momentum: 0.335441", "Arm 3_0
accuracy: 0.678667 (SEM: None)
lr: 1.77012e-06
momentum: 0.902833", "Arm 4_0
accuracy: 0.100333 (SEM: None)
lr: 0.10174
momentum: 0.0657866", "Arm 5_0
accuracy: 0.0881667 (SEM: None)
lr: 0.0170037
momentum: 0.802601", "Arm 6_0
accuracy: 0.774 (SEM: None)
lr: 3.46162e-05
momentum: 0", "Arm 7_0
accuracy: 0.897667 (SEM: None)
lr: 8.30164e-05
momentum: 1", "Arm 8_0
accuracy: 0.891333 (SEM: None)
lr: 4.63421e-05
momentum: 1", "Arm 9_0
accuracy: 0.853167 (SEM: None)
lr: 0.000124575
momentum: 1" ], "type": "scatter", "x": [ 2.6e-05, 7.177094972712725e-05, 0.00017321949049554298, 5.9018702568891935e-05, 8.66972191163919e-05, 6.09416010429868e-05, 1e-06, 3.3318321796084146e-05, 0.00011264952079461006, 8.508614356931696e-05, 0.00010917385197593587, 0.00995509203921593, 0.00014294133300164923, 9.499137956414196e-05, 0.0001330535722607629, 0.00018943860779047254, 0.00017695546559483256, 8.95174165429637e-05, 1.7701150611603212e-06, 0.10173960742426996, 0.0170037365367624, 3.4616185641528946e-05, 8.301636451443766e-05, 4.63420589234253e-05, 0.00012457466003662634 ], "xaxis": "x2", "y": [ 0.58, 0.7261629704636734, 0.0, 1.0, 0.6401104818328034, 0.8197412447122748, 0.0, 1.0, 0.5911385299893963, 0.5514587906490103, 0.7199679226692515, 0.6334228515625, 0.6383300687166493, 0.6988972675211316, 0.7475990089171277, 0.6725887214728918, 0.5474540626617792, 0.33544088527560234, 0.9028334226459265, 0.06578655354678631, 0.8026014352217317, 0.0, 1.0, 1.0, 1.0 ], "yaxis": "y2" } ], "layout": { "annotations": [ { "font": { "size": 14 }, "showarrow": false, "text": "Mean", "x": 0.25, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 14 }, "showarrow": false, "text": "Standard Error", "x": 0.8, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" } ], "autosize": false, "height": 450, "hovermode": "closest", "legend": { "orientation": "h", "x": 0, "y": -0.25 }, "margin": { "b": 100, "l": 35, "pad": 0, "r": 35, "t": 35 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "accuracy" }, "width": 950, "xaxis": { "anchor": "y", "autorange": false, "domain": [ 0.05, 0.45 ], "exponentformat": "e", "range": [ -6.0, -0.3979400086720376 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "lr" }, "type": "log" }, "xaxis2": { "anchor": "y2", "autorange": false, "domain": [ 0.6, 1 ], "exponentformat": "e", "range": [ -6.0, -0.3979400086720376 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "lr" }, "type": "log" }, "yaxis": { "anchor": "x", "autorange": false, "domain": [ 0, 1 ], "exponentformat": "e", "range": [ 0.0, 1.0 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "momentum" }, "type": "linear" }, "yaxis2": { "anchor": "x2", "autorange": false, "domain": [ 0, 1 ], "exponentformat": "e", "range": [ 0.0, 1.0 ], "tickfont": { "size": 11 }, "tickmode": "auto", "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "render(ax_client.get_contour_plot(param_x=\"lr\", param_y=\"momentum\", metric_name=\"accuracy\"))" ] }, { "cell_type": "markdown", "id": "c6a6138c", "metadata": { "customInput": null, "originalKey": "5c91d83a-9a90-4ea0-8df9-9d242d998cb3", "papermill": { "duration": 0.060158, "end_time": "2024-09-23T20:36:34.515111", "exception": false, "start_time": "2024-09-23T20:36:34.454953", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Here we plot the optimization trace, showing the progression of finding the point with the optimal objective:\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "2f490657", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:34.637390Z", "iopub.status.busy": "2024-09-23T20:36:34.636706Z", "iopub.status.idle": "2024-09-23T20:36:34.684357Z", "shell.execute_reply": "2024-09-23T20:36:34.683670Z" }, "executionStartTime": 1690415953760, "executionStopTime": 1690415954260, "originalKey": "3a767bdf-7ef3-48e7-b853-6fae5e9e02ff", "papermill": { "duration": 0.110699, "end_time": "2024-09-23T20:36:34.685663", "exception": false, "start_time": "2024-09-23T20:36:34.574964", "status": "completed" }, "requestMsgId": "043de459-6a28-4796-b237-808385c9e54c", "showInput": true, "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8976666666666666, 0.8976666666666666, 0.8976666666666666, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9063333333333333, 0.9063333333333333, 0.9063333333333333, 0.911, 0.911, 0.9196666666666666, 0.9196666666666666, 0.9196666666666666, 0.9303333333333333, 0.9381666666666667, 0.9381666666666667, 0.9381666666666667 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "legendgroup": "objective value", "line": { "color": "rgba(128,177,211,1)" }, "mode": "lines", "name": "objective value", "text": [ "
Parameterization:
lr: 2.6e-05
momentum: 0.58", "
Parameterization:
lr: 0.00995509203921593
momentum: 0.6334228515625", "
Parameterization:
lr: 8.95174165429637e-05
momentum: 0.33544088527560234", "
Parameterization:
lr: 1.7701150611603212e-06
momentum: 0.9028334226459265", "
Parameterization:
lr: 0.10173960742426996
momentum: 0.06578655354678631", "
Parameterization:
lr: 0.0170037365367624
momentum: 0.8026014352217317", "
Parameterization:
lr: 3.4616185641528946e-05
momentum: 0.0", "
Parameterization:
lr: 8.301636451443766e-05
momentum: 1.0", "
Parameterization:
lr: 4.63420589234253e-05
momentum: 1.0", "
Parameterization:
lr: 0.00012457466003662634
momentum: 1.0", "
Parameterization:
lr: 7.177094972712725e-05
momentum: 0.7261629704636734", "
Parameterization:
lr: 0.00017321949049554298
momentum: 0.0", "
Parameterization:
lr: 5.9018702568891935e-05
momentum: 1.0", "
Parameterization:
lr: 8.66972191163919e-05
momentum: 0.6401104818328034", "
Parameterization:
lr: 6.09416010429868e-05
momentum: 0.8197412447122748", "
Parameterization:
lr: 1e-06
momentum: 0.0", "
Parameterization:
lr: 3.3318321796084146e-05
momentum: 1.0", "
Parameterization:
lr: 0.00011264952079461006
momentum: 0.5911385299893963", "
Parameterization:
lr: 8.508614356931696e-05
momentum: 0.5514587906490103", "
Parameterization:
lr: 0.00010917385197593587
momentum: 0.7199679226692515", "
Parameterization:
lr: 0.00014294133300164923
momentum: 0.6383300687166493", "
Parameterization:
lr: 9.499137956414196e-05
momentum: 0.6988972675211316", "
Parameterization:
lr: 0.0001330535722607629
momentum: 0.7475990089171277", "
Parameterization:
lr: 0.00018943860779047254
momentum: 0.6725887214728918", "
Parameterization:
lr: 0.00017695546559483256
momentum: 0.5474540626617792", "
Parameterization:
lr: 0.00026919668257926213
momentum: 0.5962125063356507" ], "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8976666666666666, 0.8976666666666666, 0.8976666666666666, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9063333333333333, 0.9063333333333333, 0.9063333333333333, 0.911, 0.911, 0.9196666666666666, 0.9196666666666666, 0.9196666666666666, 0.9303333333333333, 0.9381666666666667, 0.9381666666666667, 0.9381666666666667 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8843333333333333, 0.8976666666666666, 0.8976666666666666, 0.8976666666666666, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9008333333333334, 0.9063333333333333, 0.9063333333333333, 0.9063333333333333, 0.911, 0.911, 0.9196666666666666, 0.9196666666666666, 0.9196666666666666, 0.9303333333333333, 0.9381666666666667, 0.9381666666666667, 0.9381666666666667 ] } ], "layout": { "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Best objective found vs. # of iterations" }, "xaxis": { "title": { "text": "Iteration" } }, "yaxis": { "title": { "text": "Accuracy" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "render(\n", " ax_client.get_optimization_trace()\n", ") " ] }, { "cell_type": "markdown", "id": "d3b5b086", "metadata": { "customInput": null, "executionStartTime": 1689617061294, "executionStopTime": 1689617061325, "originalKey": "09aaec9d-c178-42e2-b549-663cd17f8c3d", "papermill": { "duration": 0.063425, "end_time": "2024-09-23T20:36:34.812839", "exception": false, "start_time": "2024-09-23T20:36:34.749414", "status": "completed" }, "requestMsgId": "09aaec9d-c178-42e2-b549-663cd17f8c3d", "showInput": false, "tags": [] }, "source": [ "## 8. Train CNN with best hyperparameters and evaluate on test set\n", "Note that the resulting accuracy on the test set generally won't be the same as the maximum accuracy achieved on the evaluation set throughout optimization. " ] }, { "cell_type": "code", "execution_count": 16, "id": "e62c97bc", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:34.941348Z", "iopub.status.busy": "2024-09-23T20:36:34.940828Z", "iopub.status.idle": "2024-09-23T20:36:34.964308Z", "shell.execute_reply": "2024-09-23T20:36:34.963765Z" }, "executionStartTime": 1690415954397, "executionStopTime": 1690415954452, "originalKey": "27f92d16-93c4-43bb-a37f-e7a1aeecd856", "papermill": { "duration": 0.089123, "end_time": "2024-09-23T20:36:34.965558", "exception": false, "start_time": "2024-09-23T20:36:34.876435", "status": "completed" }, "requestMsgId": "07eba5ce-bebe-4588-8dbb-07553efeb2b0", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[WARNING 09-23 20:36:34] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" ] }, { "data": { "text/plain": [ "{'lr': 0.00018943860779047254, 'momentum': 0.6725887214728918}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = ax_client.get_trials_data_frame()\n", "best_arm_idx = df.trial_index[df[\"accuracy\"] == df[\"accuracy\"].max()].values[0]\n", "best_arm = ax_client.get_trial_parameters(best_arm_idx)\n", "best_arm" ] }, { "cell_type": "code", "execution_count": 17, "id": "0d838e3f", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:35.094595Z", "iopub.status.busy": "2024-09-23T20:36:35.094011Z", "iopub.status.idle": "2024-09-23T20:36:35.098207Z", "shell.execute_reply": "2024-09-23T20:36:35.097617Z" }, "executionStartTime": 1690415954677, "executionStopTime": 1690415954681, "originalKey": "d0c7c645-c230-4654-a3b5-a01c61a09393", "papermill": { "duration": 0.070078, "end_time": "2024-09-23T20:36:35.099465", "exception": false, "start_time": "2024-09-23T20:36:35.029387", "status": "completed" }, "requestMsgId": "0a962cef-65a1-4f95-9410-37a9a8e5c5ac", "showInput": true, "tags": [] }, "outputs": [], "source": [ "combined_train_valid_set = torch.utils.data.ConcatDataset(\n", " [\n", " train_loader.dataset.dataset,\n", " valid_loader.dataset.dataset,\n", " ]\n", ")\n", "combined_train_valid_loader = torch.utils.data.DataLoader(\n", " combined_train_valid_set,\n", " batch_size=BATCH_SIZE,\n", " shuffle=True,\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "id": "8e27d805", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:36:35.229771Z", "iopub.status.busy": "2024-09-23T20:36:35.229245Z", "iopub.status.idle": "2024-09-23T20:37:04.525267Z", "shell.execute_reply": "2024-09-23T20:37:04.524542Z" }, "executionStartTime": 1690415954791, "executionStopTime": 1690416061340, "originalKey": "5695c78b-4c6e-4d35-ab08-6c60781bd8f1", "papermill": { "duration": 29.363599, "end_time": "2024-09-23T20:37:04.527219", "exception": false, "start_time": "2024-09-23T20:36:35.163620", "status": "completed" }, "requestMsgId": "e22fa0c7-88cc-4d8a-bb7d-4f96fbae9a42", "showInput": true, "tags": [] }, "outputs": [], "source": [ "net = train(\n", " net=CNN(),\n", " train_loader=combined_train_valid_loader,\n", " parameters=best_arm,\n", " dtype=dtype,\n", " device=device,\n", ")\n", "test_accuracy = evaluate(\n", " net=net,\n", " data_loader=test_loader,\n", " dtype=dtype,\n", " device=device,\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "id": "cbcd5a65", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:04.659045Z", "iopub.status.busy": "2024-09-23T20:37:04.658415Z", "iopub.status.idle": "2024-09-23T20:37:04.662556Z", "shell.execute_reply": "2024-09-23T20:37:04.661850Z" }, "executionStartTime": 1690416061460, "executionStopTime": 1690416061467, "originalKey": "7522e229-9641-4383-a892-12c3f0a8011c", "papermill": { "duration": 0.070452, "end_time": "2024-09-23T20:37:04.663846", "exception": false, "start_time": "2024-09-23T20:37:04.593394", "status": "completed" }, "requestMsgId": "5552d77d-9c9d-4712-9256-2cb3da836f2c", "showInput": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Accuracy (test set): 97.96%\n" ] } ], "source": [ "print(f\"Classification Accuracy (test set): {round(test_accuracy*100, 2)}%\")" ] }, { "cell_type": "markdown", "id": "9808c47b", "metadata": { "customInput": null, "originalKey": "c8232211-4837-4677-b86c-bce730635fff", "papermill": { "duration": 0.063616, "end_time": "2024-09-23T20:37:04.791416", "exception": false, "start_time": "2024-09-23T20:37:04.727800", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 9. Save / reload optimization to JSON / SQL\n", "We can serialize the state of optimization to JSON and save it to a `.json` file or save it to the SQL backend. For the former:" ] }, { "cell_type": "code", "execution_count": 20, "id": "9247ab87", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:04.920842Z", "iopub.status.busy": "2024-09-23T20:37:04.920338Z", "iopub.status.idle": "2024-09-23T20:37:04.948486Z", "shell.execute_reply": "2024-09-23T20:37:04.947915Z" }, "executionStartTime": 1690416061571, "executionStopTime": 1690416061657, "originalKey": "6afddb45-c980-4b14-b5e9-927747ea98ea", "papermill": { "duration": 0.094599, "end_time": "2024-09-23T20:37:04.949821", "exception": false, "start_time": "2024-09-23T20:37:04.855222", "status": "completed" }, "requestMsgId": "bab02be8-706c-4422-b97b-c222b5084bba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:04] ax.service.ax_client: Saved JSON-serialized state of optimization to `ax_client_snapshot.json`.\n" ] } ], "source": [ "ax_client.save_to_json_file() # For custom filepath, pass `filepath` argument." ] }, { "cell_type": "code", "execution_count": 21, "id": "c7e1d29b", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:05.079348Z", "iopub.status.busy": "2024-09-23T20:37:05.078821Z", "iopub.status.idle": "2024-09-23T20:37:05.207344Z", "shell.execute_reply": "2024-09-23T20:37:05.206736Z" }, "executionStartTime": 1690416061758, "executionStopTime": 1690416062132, "originalKey": "31e6f7b4-cf6b-4967-95ff-f76d03657fb2", "papermill": { "duration": 0.194868, "end_time": "2024-09-23T20:37:05.208690", "exception": false, "start_time": "2024-09-23T20:37:05.013822", "status": "completed" }, "requestMsgId": "f2d10848-f995-420d-88e7-9036894d7b1b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:05] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] } ], "source": [ "restored_ax_client = (\n", " AxClient.load_from_json_file()\n", ") # For custom filepath, pass `filepath` argument." ] }, { "cell_type": "markdown", "id": "d7e4fca9", "metadata": { "customInput": null, "originalKey": "122510f5-5b9e-4b1c-9f5e-8c8ea2e08848", "papermill": { "duration": 0.064439, "end_time": "2024-09-23T20:37:05.338057", "exception": false, "start_time": "2024-09-23T20:37:05.273618", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "To store state of optimization to an SQL backend, first follow [setup instructions](https://ax.dev/docs/storage.html#sql) on Ax website." ] }, { "cell_type": "markdown", "id": "16f2aadc", "metadata": { "customInput": null, "originalKey": "bd80e639-aa0f-4dc1-8542-0caf0d674fda", "papermill": { "duration": 0.064348, "end_time": "2024-09-23T20:37:05.466942", "exception": false, "start_time": "2024-09-23T20:37:05.402594", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Having set up the SQL backend, pass `DBSettings` to `AxClient` on instantiation (note that `SQLAlchemy` dependency will have to be installed – for installation, refer to [optional dependencies](https://ax.dev/docs/installation.html#optional-dependencies) on Ax website):" ] }, { "cell_type": "code", "execution_count": 22, "id": "b6bc5605", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:05.596945Z", "iopub.status.busy": "2024-09-23T20:37:05.596435Z", "iopub.status.idle": "2024-09-23T20:37:05.607081Z", "shell.execute_reply": "2024-09-23T20:37:05.606396Z" }, "executionStartTime": 1690416062222, "executionStopTime": 1690416062314, "originalKey": "80eb6a2e-6564-405e-b5d4-d448e32dbf60", "papermill": { "duration": 0.077263, "end_time": "2024-09-23T20:37:05.608396", "exception": false, "start_time": "2024-09-23T20:37:05.531133", "status": "completed" }, "requestMsgId": "65f2307f-b800-4415-b9e7-11734a2a6889", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:05] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] } ], "source": [ "from ax.storage.sqa_store.structs import DBSettings\n", "\n", "# URL is of the form \"dialect+driver://username:password@host:port/database\".\n", "db_settings = DBSettings(url=\"sqlite:///foo.db\")\n", "# Instead of URL, can provide a `creator function`; can specify custom encoders/decoders if necessary.\n", "new_ax = AxClient(db_settings=db_settings)" ] }, { "cell_type": "markdown", "id": "b9bf9a09", "metadata": { "customInput": null, "originalKey": "adafd3aa-b84e-4e86-9694-a29f94c6d5f3", "papermill": { "duration": 0.063909, "end_time": "2024-09-23T20:37:05.736354", "exception": false, "start_time": "2024-09-23T20:37:05.672445", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "When valid `DBSettings` are passed into `AxClient`, a unique experiment name is a required argument (`name`) to `ax_client.create_experiment`. The **state of the optimization is auto-saved** any time it changes (i.e. a new trial is added or completed, etc). \n", "\n", "To reload an optimization state later, instantiate `AxClient` with the same `DBSettings` and use `ax_client.load_experiment_from_database(experiment_name=\"my_experiment\")`." ] }, { "cell_type": "markdown", "id": "93debb67", "metadata": { "customInput": null, "originalKey": "2f4a875b-1e18-4352-955d-576d6b01c5ed", "papermill": { "duration": 0.063514, "end_time": "2024-09-23T20:37:05.863767", "exception": false, "start_time": "2024-09-23T20:37:05.800253", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Special Cases" ] }, { "cell_type": "markdown", "id": "71938f6b", "metadata": { "customInput": null, "originalKey": "0d49e448-4768-401d-ac1d-810aee633c9a", "papermill": { "duration": 0.063851, "end_time": "2024-09-23T20:37:05.991627", "exception": false, "start_time": "2024-09-23T20:37:05.927776", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "**Evaluation failure**: should any optimization iterations fail during evaluation, `log_trial_failure` will ensure that the same trial is not proposed again." ] }, { "cell_type": "code", "execution_count": 23, "id": "952f0387", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:06.121064Z", "iopub.status.busy": "2024-09-23T20:37:06.120421Z", "iopub.status.idle": "2024-09-23T20:37:07.386230Z", "shell.execute_reply": "2024-09-23T20:37:07.385556Z" }, "executionStartTime": 1690416062420, "executionStopTime": 1690416064316, "originalKey": "faa83f1d-31da-481a-96e4-ccbc12f30b91", "papermill": { "duration": 1.332163, "end_time": "2024-09-23T20:37:07.387651", "exception": false, "start_time": "2024-09-23T20:37:06.055488", "status": "completed" }, "requestMsgId": "80a40c3a-76ed-4e1d-aa77-3652fadbe69f", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.ax_client: Generated new trial 26 with parameters {'lr': 0.00025, 'momentum': 0.757336} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.ax_client: Registered failure of trial 26.\n" ] } ], "source": [ "_, trial_index = ax_client.get_next_trial()\n", "ax_client.log_trial_failure(trial_index=trial_index)" ] }, { "cell_type": "markdown", "id": "cb13c375", "metadata": { "customInput": null, "originalKey": "c826a96e-9431-49bd-87d7-62b517537a15", "papermill": { "duration": 0.06423, "end_time": "2024-09-23T20:37:07.517435", "exception": false, "start_time": "2024-09-23T20:37:07.453205", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "**Need to run many trials in parallel**: for optimal results and optimization efficiency, we strongly recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). However, if your use case needs to dispatch many trials in parallel before they are updated with data and you are running into the *\"All trials for current model have been generated, but not enough data has been observed to fit next model\"* error, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`." ] }, { "cell_type": "markdown", "id": "78f88eb8", "metadata": { "customInput": null, "originalKey": "683378e0-893b-49a1-b090-084dc394da1a", "papermill": { "duration": 0.064624, "end_time": "2024-09-23T20:37:07.646193", "exception": false, "start_time": "2024-09-23T20:37:07.581569", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Service API Exceptions Meaning and Handling\n", "[**`DataRequiredError`**](https://ax.dev/api/exceptions.html#ax.exceptions.core.DataRequiredError): Ax generation strategy needs to be updated with more data to proceed to the next optimization model. When the optimization moves from initialization stage to the Bayesian optimization stage, the underlying BayesOpt model needs sufficient data to train. For optimal results and optimization efficiency (finding the optimal point in the least number of trials), we recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). Therefore, the correct way to handle this exception is to wait until more trial evaluations complete and log their data via `ax_client.complete_trial(...)`. \n", "\n", "However, if there is strong need to generate more trials before more data is available, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`. With this setting, as many trials will be generated from the initialization stage as requested, and the optimization will move to the BayesOpt stage whenever enough trials are completed." ] }, { "cell_type": "markdown", "id": "b645e9ad", "metadata": { "customInput": null, "originalKey": "4602d41d-43aa-46d2-9ca6-392c414d0b5f", "papermill": { "duration": 0.064128, "end_time": "2024-09-23T20:37:07.774532", "exception": false, "start_time": "2024-09-23T20:37:07.710404", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "[**`MaxParallelismReachedException`**](https://ax.dev/api/modelbridge.html#ax.modelbridge.generation_strategy.MaxParallelismReachedException): generation strategy restricts the number of trials that can be run simultaneously (to encourage sequential optimization), and the parallelism limit has been reached. The correct way to handle this exception is the same as `DataRequiredError` – to wait until more trial evluations complete and log their data via `ax_client.complete_trial(...)`.\n", " \n", "In some cases higher parallelism is important, so `enforce_sequential_optimization=False` kwarg to AxClient allows the user to suppress limiting of parallelism. It's also possible to override the default parallelism setting for all stages of the optimization by passing `choose_generation_strategy_kwargs` to `ax_client.create_experiment`:" ] }, { "cell_type": "code", "execution_count": 24, "id": "d0f5cae9", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:07.904989Z", "iopub.status.busy": "2024-09-23T20:37:07.904444Z", "iopub.status.idle": "2024-09-23T20:37:07.915394Z", "shell.execute_reply": "2024-09-23T20:37:07.914715Z" }, "executionStartTime": 1690416064534, "executionStopTime": 1690416064564, "originalKey": "d62e6cfd-5127-450e-80b7-d0edcaf97d6c", "papermill": { "duration": 0.078528, "end_time": "2024-09-23T20:37:07.917101", "exception": false, "start_time": "2024-09-23T20:37:07.838573", "status": "completed" }, "requestMsgId": "cb9a17f9-5734-41c6-9018-c0635c61d8b3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter x. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter y. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.service.utils.instantiation: Created search space: SearchSpace(parameters=[RangeParameter(name='x', parameter_type=FLOAT, range=[-5.0, 10.0]), RangeParameter(name='y', parameter_type=FLOAT, range=[0.0, 15.0])], parameter_constraints=[]).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: Using Models.BOTORCH_MODULAR since there is at least one ordered parameter and there are no unordered categorical parameters.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=2 num_trials=None use_batch_trials=False\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: `verbose`, `disable_progbar`, and `jit_compile` are not yet supported when using `choose_generation_strategy` with ModularBoTorchModel, dropping these arguments.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 09-23 20:37:07] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+BoTorch', steps=[Sobol for 5 trials, BoTorch for subsequent trials]). Iterations after 5 will take longer to generate due to model-fitting.\n" ] } ], "source": [ "ax_client = AxClient()\n", "ax_client.create_experiment(\n", " parameters=[\n", " {\"name\": \"x\", \"type\": \"range\", \"bounds\": [-5.0, 10.0]},\n", " {\"name\": \"y\", \"type\": \"range\", \"bounds\": [0.0, 15.0]},\n", " ],\n", " # Sets max parallelism to 10 for all steps of the generation strategy.\n", " choose_generation_strategy_kwargs={\"max_parallelism_override\": 10},\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "id": "73eb4e7e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2024-09-23T20:37:08.048688Z", "iopub.status.busy": "2024-09-23T20:37:08.048219Z", "iopub.status.idle": "2024-09-23T20:37:08.053024Z", "shell.execute_reply": "2024-09-23T20:37:08.052360Z" }, "executionStartTime": 1690416064679, "executionStopTime": 1690416064702, "originalKey": "bc15d2cf-8ddc-4d66-83b6-7469cd15aa4d", "papermill": { "duration": 0.072208, "end_time": "2024-09-23T20:37:08.054386", "exception": false, "start_time": "2024-09-23T20:37:07.982178", "status": "completed" }, "requestMsgId": "996c4bd3-b296-4cf9-8f95-cbf488639c2f", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(5, 10), (-1, 10)]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_max_parallelism() # Max parallelism is now 10 for all stages of the optimization." ] } ], "metadata": { "fileHeader": "", "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.15" }, "papermill": { "default_parameters": {}, "duration": 252.092342, "end_time": "2024-09-23T20:37:09.228300", "environment_variables": {}, "exception": null, "input_path": "/tmp/tmp.QqcA7fo0ui/Ax-main/tutorials/tune_cnn_service.ipynb", "output_path": "/tmp/tmp.QqcA7fo0ui/Ax-main/tutorials/tune_cnn_service.ipynb", "parameters": {}, "start_time": "2024-09-23T20:32:57.135958", "version": "2.6.0" } }, "nbformat": 4, "nbformat_minor": 5 }