{ "cells": [ { "cell_type": "markdown", "id": "5558c0a8", "metadata": { "collapsed": true, "customInput": null, "originalKey": "ac61b043-8ebf-43b9-9fa5-ed9a42a184ce", "papermill": { "duration": 0.006185, "end_time": "2025-01-31T05:17:46.401298", "exception": false, "start_time": "2025-01-31T05:17:46.395113", "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": "e2aaa762", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:46.414195Z", "iopub.status.busy": "2025-01-31T05:17:46.413804Z", "iopub.status.idle": "2025-01-31T05:17:50.501491Z", "shell.execute_reply": "2025-01-31T05:17:50.500726Z" }, "executionStartTime": 1690415246079, "executionStopTime": 1690415266324, "originalKey": "c2b37f0f-3644-4367-912f-f775082f6676", "papermill": { "duration": 4.114224, "end_time": "2025-01-31T05:17:50.521360", "exception": false, "start_time": "2025-01-31T05:17:46.407136", "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 01-31 05:17:50] ax.utils.notebook.plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:17:50] 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", " \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": "356d1277", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:50.610355Z", "iopub.status.busy": "2025-01-31T05:17:50.609901Z", "iopub.status.idle": "2025-01-31T05:17:50.615218Z", "shell.execute_reply": "2025-01-31T05:17:50.614612Z" }, "executionStartTime": 1690415266521, "executionStopTime": 1690415266529, "originalKey": "4d0a27c4-a6ce-4b7d-97eb-1c229aabb375", "papermill": { "duration": 0.05159, "end_time": "2025-01-31T05:17:50.616491", "exception": false, "start_time": "2025-01-31T05:17:50.564901", "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": "0d22941a", "metadata": { "customInput": null, "originalKey": "10384e51-444c-4265-b56d-ad078d05d2a1", "papermill": { "duration": 0.043374, "end_time": "2025-01-31T05:17:50.703295", "exception": false, "start_time": "2025-01-31T05:17:50.659921", "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": "ebdf14e3", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:50.792454Z", "iopub.status.busy": "2025-01-31T05:17:50.791914Z", "iopub.status.idle": "2025-01-31T05:17:52.225467Z", "shell.execute_reply": "2025-01-31T05:17:52.224761Z" }, "executionStartTime": 1690415266733, "executionStopTime": 1690415266902, "originalKey": "6f0949e2-1064-44b8-99c0-f6ce23df7c63", "papermill": { "duration": 1.479861, "end_time": "2025-01-31T05:17:52.227038", "exception": false, "start_time": "2025-01-31T05:17:50.747177", "status": "completed" }, "requestMsgId": "8ce7dd21-9afb-4379-ad11-4112b4d27f8a", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0.00/9.91M [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": "44123ac1", "metadata": { "customInput": null, "originalKey": "af441a83-50fd-4385-a380-d8ebc570c0e5", "papermill": { "duration": 0.044603, "end_time": "2025-01-31T05:17:52.695629", "exception": false, "start_time": "2025-01-31T05:17:52.651026", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 4. Define how to evaluate trials\n" ] }, { "cell_type": "markdown", "id": "c47db2a9", "metadata": { "customInput": null, "originalKey": "c7630dfd-548b-408a-badf-b6abf79275e2", "papermill": { "duration": 0.044817, "end_time": "2025-01-31T05:17:52.785159", "exception": false, "start_time": "2025-01-31T05:17:52.740342", "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": "ddf1fa7d", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:52.876045Z", "iopub.status.busy": "2025-01-31T05:17:52.875771Z", "iopub.status.idle": "2025-01-31T05:17:52.880760Z", "shell.execute_reply": "2025-01-31T05:17:52.880202Z" }, "executionStartTime": 1690415267282, "executionStopTime": 1690415267286, "originalKey": "e41fea0a-ae71-4e6f-8c0a-6eb6ae143fb0", "papermill": { "duration": 0.05202, "end_time": "2025-01-31T05:17:52.882050", "exception": false, "start_time": "2025-01-31T05:17:52.830030", "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": "4de8213e", "metadata": { "customInput": null, "originalKey": "8ef6bcb9-c492-4874-b8c7-a07f7e6291ad", "papermill": { "duration": 0.045083, "end_time": "2025-01-31T05:17:52.971997", "exception": false, "start_time": "2025-01-31T05:17:52.926914", "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": "8c67531e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:53.070520Z", "iopub.status.busy": "2025-01-31T05:17:53.069994Z", "iopub.status.idle": "2025-01-31T05:17:53.074304Z", "shell.execute_reply": "2025-01-31T05:17:53.073744Z" }, "executionStartTime": 1690415267388, "executionStopTime": 1690415267395, "originalKey": "a7e4bcc4-7494-429b-bb93-7ad84d0985af", "papermill": { "duration": 0.058423, "end_time": "2025-01-31T05:17:53.075621", "exception": false, "start_time": "2025-01-31T05:17:53.017198", "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": "e71a72f7", "metadata": { "customInput": null, "originalKey": "9ab127a8-021f-4ec8-9f4e-f4256a2e322a", "papermill": { "duration": 0.04466, "end_time": "2025-01-31T05:17:53.165195", "exception": false, "start_time": "2025-01-31T05:17:53.120535", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 5. Run optimization loop\n" ] }, { "cell_type": "markdown", "id": "a33303a3", "metadata": { "customInput": null, "originalKey": "411a2fb4-e8a3-4414-bc17-09f0b5ba3e74", "papermill": { "duration": 0.044758, "end_time": "2025-01-31T05:17:53.255098", "exception": false, "start_time": "2025-01-31T05:17:53.210340", "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": "91dfc971", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2025-01-31T05:17:53.347270Z", "iopub.status.busy": "2025-01-31T05:17:53.346754Z", "iopub.status.idle": "2025-01-31T05:18:00.319425Z", "shell.execute_reply": "2025-01-31T05:18:00.318833Z" }, "executionStartTime": 1690415267533, "executionStopTime": 1690415287786, "originalKey": "1388ef55-5642-46ab-b297-c76a73a48aca", "papermill": { "duration": 7.02031, "end_time": "2025-01-31T05:18:00.320755", "exception": false, "start_time": "2025-01-31T05:17:53.300445", "status": "completed" }, "requestMsgId": "b32a4981-ad59-46e1-b701-fa5a5f118d8b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:17:53] ax.core.experiment: Attached custom parameterizations [{'lr': 2.6e-05, 'momentum': 0.58}] as trial 0.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:00] 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": "fbb751b0", "metadata": { "customInput": null, "originalKey": "f0f886a1-c5c8-44bb-b2fd-9fa3f140357a", "papermill": { "duration": 0.045474, "end_time": "2025-01-31T05:18:00.411540", "exception": false, "start_time": "2025-01-31T05:18:00.366066", "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": "7d8df9ea", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:18:00.503709Z", "iopub.status.busy": "2025-01-31T05:18:00.503166Z", "iopub.status.idle": "2025-01-31T05:21:12.024190Z", "shell.execute_reply": "2025-01-31T05:21:12.023515Z" }, "executionStartTime": 1690415287908, "executionStopTime": 1690415945107, "originalKey": "bff5d714-1ab3-43d3-b9b3-8c3a53c81dcb", "papermill": { "duration": 191.615883, "end_time": "2025-01-31T05:21:12.072643", "exception": false, "start_time": "2025-01-31T05:18:00.456760", "status": "completed" }, "requestMsgId": "a203534f-85dd-4dfa-9fa6-6aa46a0200a3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.8SPGnWMU26/Ax-main/ax/modelbridge/cross_validation.py:439: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 01-31 05:18:00] 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 01-31 05:18:07] ax.service.ax_client: Completed trial 1 with data: {'accuracy': (0.100333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.8SPGnWMU26/Ax-main/ax/modelbridge/cross_validation.py:439: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 01-31 05:18:07] 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 01-31 05:18:14] ax.service.ax_client: Completed trial 2 with data: {'accuracy': (0.884333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.8SPGnWMU26/Ax-main/ax/modelbridge/cross_validation.py:439: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 01-31 05:18:14] 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 01-31 05:18:21] ax.service.ax_client: Completed trial 3 with data: {'accuracy': (0.678667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.8SPGnWMU26/Ax-main/ax/modelbridge/cross_validation.py:439: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 01-31 05:18:21] 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 01-31 05:18:28] ax.service.ax_client: Completed trial 4 with data: {'accuracy': (0.100333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.8SPGnWMU26/Ax-main/ax/modelbridge/cross_validation.py:439: UserWarning:\n", "\n", "Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n", "\n", "[INFO 01-31 05:18:28] 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 01-31 05:18:35] ax.service.ax_client: Completed trial 5 with data: {'accuracy': (0.088167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:35] 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 01-31 05:18:42] ax.service.ax_client: Completed trial 6 with data: {'accuracy': (0.774, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:43] 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 01-31 05:18:50] ax.service.ax_client: Completed trial 7 with data: {'accuracy': (0.9055, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:50] ax.service.ax_client: Generated new trial 8 with parameters {'lr': 4.8e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:57] ax.service.ax_client: Completed trial 8 with data: {'accuracy': (0.8565, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:18:58] ax.service.ax_client: Generated new trial 9 with parameters {'lr': 0.00015, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:05] ax.service.ax_client: Completed trial 9 with data: {'accuracy': (0.486167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:06] ax.service.ax_client: Generated new trial 10 with parameters {'lr': 1.3e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:13] ax.service.ax_client: Completed trial 10 with data: {'accuracy': (0.8575, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:14] ax.service.ax_client: Generated new trial 11 with parameters {'lr': 1.1e-05, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:21] ax.service.ax_client: Completed trial 11 with data: {'accuracy': (0.622667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:21] ax.service.ax_client: Generated new trial 12 with parameters {'lr': 7e-05, 'momentum': 0.253302} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:28] ax.service.ax_client: Completed trial 12 with data: {'accuracy': (0.887167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:29] ax.service.ax_client: Generated new trial 13 with parameters {'lr': 1e-06, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:36] ax.service.ax_client: Completed trial 13 with data: {'accuracy': (0.133333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:37] ax.service.ax_client: Generated new trial 14 with parameters {'lr': 0.000139, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:44] ax.service.ax_client: Completed trial 14 with data: {'accuracy': (0.849833, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:44] ax.service.ax_client: Generated new trial 15 with parameters {'lr': 5e-06, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:51] ax.service.ax_client: Completed trial 15 with data: {'accuracy': (0.828167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:52] ax.service.ax_client: Generated new trial 16 with parameters {'lr': 1.9e-05, 'momentum': 1.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:19:59] ax.service.ax_client: Completed trial 16 with data: {'accuracy': (0.827, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:00] ax.service.ax_client: Generated new trial 17 with parameters {'lr': 3.9e-05, 'momentum': 0.566309} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:07] ax.service.ax_client: Completed trial 17 with data: {'accuracy': (0.874, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:08] ax.service.ax_client: Generated new trial 18 with parameters {'lr': 7.5e-05, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:15] ax.service.ax_client: Completed trial 18 with data: {'accuracy': (0.810667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:16] ax.service.ax_client: Generated new trial 19 with parameters {'lr': 2.4e-05, 'momentum': 0.763182} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:23] ax.service.ax_client: Completed trial 19 with data: {'accuracy': (0.883667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:24] ax.service.ax_client: Generated new trial 20 with parameters {'lr': 0.000286, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:31] ax.service.ax_client: Completed trial 20 with data: {'accuracy': (0.8355, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:32] ax.service.ax_client: Generated new trial 21 with parameters {'lr': 5.7e-05, 'momentum': 0.448405} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:39] ax.service.ax_client: Completed trial 21 with data: {'accuracy': (0.881, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:41] ax.service.ax_client: Generated new trial 22 with parameters {'lr': 2.8e-05, 'momentum': 0.805158} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:47] ax.service.ax_client: Completed trial 22 with data: {'accuracy': (0.888167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:49] ax.service.ax_client: Generated new trial 23 with parameters {'lr': 0.000838, 'momentum': 0.0} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:55] ax.service.ax_client: Completed trial 23 with data: {'accuracy': (0.405333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:20:57] ax.service.ax_client: Generated new trial 24 with parameters {'lr': 5.1e-05, 'momentum': 0.337101} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:04] ax.service.ax_client: Completed trial 24 with data: {'accuracy': (0.873667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:05] ax.service.ax_client: Generated new trial 25 with parameters {'lr': 6.8e-05, 'momentum': 0.740126} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:12] ax.service.ax_client: Completed trial 25 with data: {'accuracy': (0.897833, 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": "043562e9", "metadata": { "customInput": null, "originalKey": "ccd16059-db9f-475b-b527-75afb320e0f4", "papermill": { "duration": 0.053261, "end_time": "2025-01-31T05:21:12.173707", "exception": false, "start_time": "2025-01-31T05:21:12.120446", "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": "e51d556e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:12.271483Z", "iopub.status.busy": "2025-01-31T05:21:12.270726Z", "iopub.status.idle": "2025-01-31T05:21:12.277794Z", "shell.execute_reply": "2025-01-31T05:21:12.277250Z" }, "executionStartTime": 1690415945269, "executionStopTime": 1690415945336, "originalKey": "7182d2f9-912c-464c-b5ad-f65ce6f00017", "papermill": { "duration": 0.057302, "end_time": "2025-01-31T05:21:12.279104", "exception": false, "start_time": "2025-01-31T05:21:12.221802", "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": "50f379e6", "metadata": { "customInput": null, "originalKey": "e2f429e6-2ec8-4af2-906b-52a36a53d329", "papermill": { "duration": 0.04753, "end_time": "2025-01-31T05:21:12.374375", "exception": false, "start_time": "2025-01-31T05:21:12.326845", "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": "0896541b", "metadata": { "customInput": null, "originalKey": "86c7aef9-993a-411e-add5-05839b00d3cf", "papermill": { "duration": 0.047265, "end_time": "2025-01-31T05:21:12.470849", "exception": false, "start_time": "2025-01-31T05:21:12.423584", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "### How to view all existing trials during optimization?" ] }, { "cell_type": "code", "execution_count": 11, "id": "1a3f086a", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:12.566472Z", "iopub.status.busy": "2025-01-31T05:21:12.565996Z", "iopub.status.idle": "2025-01-31T05:21:12.598286Z", "shell.execute_reply": "2025-01-31T05:21:12.597751Z" }, "executionStartTime": 1690415945532, "executionStopTime": 1690415946199, "originalKey": "3fbad5dc-863a-494e-b04f-d7dc1e47936c", "papermill": { "duration": 0.081539, "end_time": "2025-01-31T05:21:12.599600", "exception": false, "start_time": "2025-01-31T05:21:12.518061", "status": "completed" }, "requestMsgId": "905ea8b6-add0-473e-8516-5be6ad7d7658", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trial_indexarm_nametrial_statusgeneration_methodgeneration_nodeaccuracylrmomentum
000_0COMPLETEDNoneNone0.8418330.0000260.580000
111_0COMPLETEDSobolGenerationStep_00.1003330.0099550.633423
222_0COMPLETEDSobolGenerationStep_00.8843330.0000900.335441
333_0COMPLETEDSobolGenerationStep_00.6786670.0000020.902833
444_0COMPLETEDSobolGenerationStep_00.1003330.1017400.065787
555_0COMPLETEDSobolGenerationStep_00.0881670.0170040.802601
666_0COMPLETEDBoTorchGenerationStep_10.7740000.0000350.000000
777_0COMPLETEDBoTorchGenerationStep_10.9055000.0000831.000000
888_0COMPLETEDBoTorchGenerationStep_10.8565000.0000481.000000
999_0COMPLETEDBoTorchGenerationStep_10.4861670.0001501.000000
101010_0COMPLETEDBoTorchGenerationStep_10.8575000.0000131.000000
111111_0COMPLETEDBoTorchGenerationStep_10.6226670.0000110.000000
121212_0COMPLETEDBoTorchGenerationStep_10.8871670.0000700.253302
131313_0COMPLETEDBoTorchGenerationStep_10.1333330.0000010.000000
141414_0COMPLETEDBoTorchGenerationStep_10.8498330.0001390.000000
151515_0COMPLETEDBoTorchGenerationStep_10.8281670.0000051.000000
161616_0COMPLETEDBoTorchGenerationStep_10.8270000.0000191.000000
171717_0COMPLETEDBoTorchGenerationStep_10.8740000.0000390.566309
181818_0COMPLETEDBoTorchGenerationStep_10.8106670.0000750.000000
191919_0COMPLETEDBoTorchGenerationStep_10.8836670.0000240.763182
202020_0COMPLETEDBoTorchGenerationStep_10.8355000.0002860.000000
212121_0COMPLETEDBoTorchGenerationStep_10.8810000.0000570.448405
222222_0COMPLETEDBoTorchGenerationStep_10.8881670.0000280.805158
232323_0COMPLETEDBoTorchGenerationStep_10.4053330.0008380.000000
242424_0COMPLETEDBoTorchGenerationStep_10.8736670.0000510.337101
252525_0COMPLETEDBoTorchGenerationStep_10.8978330.0000680.740126
\n", "
" ], "text/plain": [ " trial_index arm_name trial_status generation_method generation_node \\\n", "0 0 0_0 COMPLETED None None \n", "1 1 1_0 COMPLETED Sobol GenerationStep_0 \n", "2 2 2_0 COMPLETED Sobol GenerationStep_0 \n", "3 3 3_0 COMPLETED Sobol GenerationStep_0 \n", "4 4 4_0 COMPLETED Sobol GenerationStep_0 \n", "5 5 5_0 COMPLETED Sobol GenerationStep_0 \n", "6 6 6_0 COMPLETED BoTorch GenerationStep_1 \n", "7 7 7_0 COMPLETED BoTorch GenerationStep_1 \n", "8 8 8_0 COMPLETED BoTorch GenerationStep_1 \n", "9 9 9_0 COMPLETED BoTorch GenerationStep_1 \n", "10 10 10_0 COMPLETED BoTorch GenerationStep_1 \n", "11 11 11_0 COMPLETED BoTorch GenerationStep_1 \n", "12 12 12_0 COMPLETED BoTorch GenerationStep_1 \n", "13 13 13_0 COMPLETED BoTorch GenerationStep_1 \n", "14 14 14_0 COMPLETED BoTorch GenerationStep_1 \n", "15 15 15_0 COMPLETED BoTorch GenerationStep_1 \n", "16 16 16_0 COMPLETED BoTorch GenerationStep_1 \n", "17 17 17_0 COMPLETED BoTorch GenerationStep_1 \n", "18 18 18_0 COMPLETED BoTorch GenerationStep_1 \n", "19 19 19_0 COMPLETED BoTorch GenerationStep_1 \n", "20 20 20_0 COMPLETED BoTorch GenerationStep_1 \n", "21 21 21_0 COMPLETED BoTorch GenerationStep_1 \n", "22 22 22_0 COMPLETED BoTorch GenerationStep_1 \n", "23 23 23_0 COMPLETED BoTorch GenerationStep_1 \n", "24 24 24_0 COMPLETED BoTorch GenerationStep_1 \n", "25 25 25_0 COMPLETED BoTorch GenerationStep_1 \n", "\n", " accuracy lr momentum \n", "0 0.841833 0.000026 0.580000 \n", "1 0.100333 0.009955 0.633423 \n", "2 0.884333 0.000090 0.335441 \n", "3 0.678667 0.000002 0.902833 \n", "4 0.100333 0.101740 0.065787 \n", "5 0.088167 0.017004 0.802601 \n", "6 0.774000 0.000035 0.000000 \n", "7 0.905500 0.000083 1.000000 \n", "8 0.856500 0.000048 1.000000 \n", "9 0.486167 0.000150 1.000000 \n", "10 0.857500 0.000013 1.000000 \n", "11 0.622667 0.000011 0.000000 \n", "12 0.887167 0.000070 0.253302 \n", "13 0.133333 0.000001 0.000000 \n", "14 0.849833 0.000139 0.000000 \n", "15 0.828167 0.000005 1.000000 \n", "16 0.827000 0.000019 1.000000 \n", "17 0.874000 0.000039 0.566309 \n", "18 0.810667 0.000075 0.000000 \n", "19 0.883667 0.000024 0.763182 \n", "20 0.835500 0.000286 0.000000 \n", "21 0.881000 0.000057 0.448405 \n", "22 0.888167 0.000028 0.805158 \n", "23 0.405333 0.000838 0.000000 \n", "24 0.873667 0.000051 0.337101 \n", "25 0.897833 0.000068 0.740126 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_trials_data_frame()" ] }, { "cell_type": "markdown", "id": "e231dab9", "metadata": { "customInput": null, "originalKey": "9f1ebc55-e6f2-498f-9185-569227c2f3d5", "papermill": { "duration": 0.047764, "end_time": "2025-01-31T05:21:12.695229", "exception": false, "start_time": "2025-01-31T05:21:12.647465", "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": "45489970", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:12.792066Z", "iopub.status.busy": "2025-01-31T05:21:12.791562Z", "iopub.status.idle": "2025-01-31T05:21:13.182980Z", "shell.execute_reply": "2025-01-31T05:21:13.182258Z" }, "executionStartTime": 1690415946312, "executionStopTime": 1690415949198, "originalKey": "8fdf0023-2bf5-4cdd-93ea-a8a708dc6845", "papermill": { "duration": 0.442031, "end_time": "2025-01-31T05:21:13.184549", "exception": false, "start_time": "2025-01-31T05:21:12.742518", "status": "completed" }, "requestMsgId": "c0b8c25d-c6ae-476e-be23-f1b963df296b", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'lr': 6.844706951213188e-05, 'momentum': 0.7401263354814377}" ] }, "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": "5fb7e3db", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:13.282593Z", "iopub.status.busy": "2025-01-31T05:21:13.282060Z", "iopub.status.idle": "2025-01-31T05:21:13.286780Z", "shell.execute_reply": "2025-01-31T05:21:13.286216Z" }, "executionStartTime": 1690415949308, "executionStopTime": 1690415949313, "originalKey": "f3eb18fc-be99-494a-aeac-e9b05a3bc182", "papermill": { "duration": 0.055291, "end_time": "2025-01-31T05:21:13.288107", "exception": false, "start_time": "2025-01-31T05:21:13.232816", "status": "completed" }, "requestMsgId": "ac214ea0-ea8c-46f2-a988-b42893ef6d6d", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 0.9022904560889984}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean, covariance = values\n", "mean" ] }, { "cell_type": "markdown", "id": "4f0de73f", "metadata": { "customInput": null, "originalKey": "6be3b006-d090-4c73-a64a-12901d1af817", "papermill": { "duration": 0.048025, "end_time": "2025-01-31T05:21:13.384578", "exception": false, "start_time": "2025-01-31T05:21:13.336553", "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": "f0647d79", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:13.481564Z", "iopub.status.busy": "2025-01-31T05:21:13.481019Z", "iopub.status.idle": "2025-01-31T05:21:14.114285Z", "shell.execute_reply": "2025-01-31T05:21:14.113462Z" }, "executionStartTime": 1690415949431, "executionStopTime": 1690415953540, "originalKey": "1beca759-2fa5-48d1-bfed-c9b13a054733", "papermill": { "duration": 0.705182, "end_time": "2025-01-31T05:21:14.137313", "exception": false, "start_time": "2025-01-31T05:21:13.432131", "status": "completed" }, "requestMsgId": "fa48963e-b43c-4079-81a4-079d347fe9ba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:13] 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.24880850897160894, 0.30167811022569263, 0.38306990647955214, 0.46737628049481955, 0.5342848339666133, 0.5764202578778725, 0.5972094450955386, 0.604971291569559, 0.6097926223142247, 0.6225920384114396, 0.651102222298114, 0.692889779897696, 0.7344974140134288, 0.7627038669411098, 0.7776067508103192, 0.7906915926231504, 0.8093520899152963, 0.8288614615988776, 0.8420771211135742, 0.850022595878914, 0.8551325572872548, 0.8466574964893411, 0.802280346763217, 0.7093687448659869, 0.5830184234748698, 0.46070769535698997, 0.3785335460833624, 0.3504064143618357, 0.36489365955490694, 0.3971615200152753, 0.4238068757393167, 0.43137164749581214, 0.4175192831751893, 0.3884803372900329, 0.3555209549255198, 0.3307652156087324, 0.322369091747935, 0.33054400794042454, 0.34676250147347815, 0.3573683061321332, 0.3505572516441785, 0.32358334482474016, 0.28600512287894325, 0.2559613846908622, 0.25053198522011616, 0.276046934552572, 0.3251074191168274, 0.3820855352296933, 0.43228644419793744, 0.468104800896469 ], [ 0.25198386465815764, 0.3057596599263703, 0.3877779882497033, 0.4723681156068186, 0.5393407427899858, 0.5815393128834335, 0.6025385366532702, 0.6106370614076195, 0.6157881386644084, 0.6287883386907106, 0.6573004708213998, 0.6988297063820302, 0.73992089310674, 0.7675983023365257, 0.7824031551824571, 0.7959453696751361, 0.8149215338262836, 0.8334173145365354, 0.8437272067215755, 0.8476927941744428, 0.8494475608879742, 0.8395447168498922, 0.7957659701977956, 0.7046167861664187, 0.5801681708968629, 0.4592881718940028, 0.3779492859233827, 0.35019937445647653, 0.3647776215418357, 0.3969472160559288, 0.4233171060758715, 0.43039712962844595, 0.4158362809108086, 0.3859275812683549, 0.3521004902357899, 0.3267042471852349, 0.3180881732184931, 0.3265289048972842, 0.34339983867573537, 0.3548305181644815, 0.34879064299489215, 0.3223897105976471, 0.28515871320774616, 0.2552975695214613, 0.24997549913676054, 0.27558812178702446, 0.32475880292367254, 0.38184944286216055, 0.4321459607074552, 0.4680317709292271 ], [ 0.25542551651872664, 0.31009831095082147, 0.3927071038564447, 0.4775337332822658, 0.5445293446621989, 0.5867672118752714, 0.6079712745504597, 0.6164130983785195, 0.6219014544360755, 0.63510044237571, 0.663596497817805, 0.7048332354874854, 0.7453654972500752, 0.7724771713688274, 0.7871646096454799, 0.8011580943964662, 0.820433171879427, 0.8378587824625368, 0.8451578022466442, 0.8450159445352555, 0.8433150457684181, 0.8319555777362095, 0.7888331696051416, 0.6995711348675133, 0.5771733447792741, 0.4578537800472633, 0.377432960732239, 0.3500917719008864, 0.3647549238644167, 0.3968029893165207, 0.42287386578695524, 0.4294539826419234, 0.41417906233248963, 0.3834014323294521, 0.3487094792115951, 0.32267424473037404, 0.3138374804796852, 0.3225430554736295, 0.3400695876074779, 0.35233740373349764, 0.34709301457223773, 0.321299522111101, 0.28445239329607735, 0.25480074683414733, 0.2495928593971643, 0.27528699973748477, 0.3245347320979379, 0.38169898457856954, 0.432056732638445, 0.46798544644742 ], [ 0.25912904337684617, 0.3146886167952742, 0.39785120857444006, 0.4828669623488614, 0.5498446193171116, 0.5920980406782488, 0.6135015518810263, 0.6222927447875001, 0.6281251171290302, 0.6415200593977978, 0.6699814000458104, 0.7108914025387312, 0.7508229472739318, 0.7773333589117692, 0.7918849286039503, 0.8063238029044109, 0.8258810674709985, 0.8421810361213286, 0.8463670605658387, 0.841994392672, 0.8367410271912042, 0.8238977812531798, 0.781489118756832, 0.6942370630060248, 0.5740370512666536, 0.45640592793982016, 0.3769849653565701, 0.3500835698288765, 0.36482549652822377, 0.3967290158713591, 0.4224778378515839, 0.42854370014805593, 0.4125502516961314, 0.3809058626136346, 0.34535320245633205, 0.31868141491711705, 0.3096234840282567, 0.31859245782161244, 0.33677671107486323, 0.34989265968478495, 0.3454669004719163, 0.32031445753382365, 0.2838873240106617, 0.2544718061994778, 0.24938480069423474, 0.27514416982762224, 0.32443566228137743, 0.3816344686069287, 0.4320189433206869, 0.46796592273953064 ], [ 0.26308937737607535, 0.31952447291871017, 0.40320365233721567, 0.4883611131568375, 0.5552801090970353, 0.59752549158712, 0.6191228637846977, 0.6282689020614165, 0.6344511741172956, 0.6480383490582698, 0.6764457055539471, 0.7169947078708524, 0.7562845186407657, 0.7821594256447728, 0.796557712664218, 0.8114364001798973, 0.8312592515936584, 0.8463794064177728, 0.8473536126695487, 0.8386313359290305, 0.8297326605944861, 0.8153802525755931, 0.7737420629705696, 0.6886205963977201, 0.5707627829905155, 0.4549460996650883, 0.376605575317729, 0.3501745358625775, 0.3649890833424816, 0.3967253356479319, 0.4221296250754574, 0.42766774081980485, 0.410952470970737, 0.37844486678869865, 0.3420369842279619, 0.31473202547441564, 0.3054527247168724, 0.3146831749079934, 0.3335262097692611, 0.3474999683828683, 0.34391474340770734, 0.31943601102777436, 0.2834643920637709, 0.2543112991499623, 0.24935170141333268, 0.27515990878020835, 0.32446179221286126, 0.38165602641706126, 0.43203267025988834, 0.46797323995132245 ], [ 0.26730081470836325, 0.3245991289959794, 0.4087571923622199, 0.4940089895069735, 0.5608289296622502, 0.6030428731052193, 0.6248283171027258, 0.6343340414702784, 0.6408711853985556, 0.6546459351554363, 0.6829793905440973, 0.7231331336687217, 0.7617410559328704, 0.786947618611627, 0.8011763556259381, 0.816489665493274, 0.8365617283689242, 0.850449389507844, 0.848116569727861, 0.8349308199233816, 0.8222982327141722, 0.8064131279935709, 0.7656013074963048, 0.6827285059590501, 0.5673544142532905, 0.4534758538115628, 0.37629494743031416, 0.3503642435183456, 0.3652452430876389, 0.3967918526150074, 0.4218297486558348, 0.4268275246236519, 0.4093883330103801, 0.37602245171366216, 0.3387661788168084, 0.3108323893680961, 0.30133179749084615, 0.3108213196698565, 0.33032311020121174, 0.34516298892600744, 0.342438888899344, 0.31866548913194337, 0.2831842077514348, 0.2543194376416333, 0.24949358247450104, 0.2753341677163795, 0.324613063061192, 0.3817636122733568, 0.43209788487260287, 0.4680073829482464 ], [ 0.27175702870552204, 0.3299052036231324, 0.41450400808274035, 0.4998029026025265, 0.5664837824484099, 0.6086431212894914, 0.6306106416965559, 0.6404802167576866, 0.6473762386273492, 0.6613329238063484, 0.6895718992490502, 0.7292961638955469, 0.767182990151904, 0.7916898840044466, 0.8057340529995015, 0.821477258713975, 0.8417824808265891, 0.8543866512697189, 0.8486555233139922, 0.8308977319780514, 0.8144471484785691, 0.797007738466881, 0.7570772019926361, 0.6765682962844398, 0.5638161947917478, 0.45199682167402383, 0.37605312079944786, 0.35065207426270084, 0.3655933513032904, 0.3969283354140413, 0.421578646981255, 0.4260244290999041, 0.4078604346136656, 0.3736426258444846, 0.33554615653250025, 0.30698884848701447, 0.2972673345839507, 0.30701303966874116, 0.3271724522734769, 0.3428853482415531, 0.3410415796647055, 0.31800400771592796, 0.28304710360277974, 0.25449609366431086, 0.24981010739496373, 0.27566657237011705, 0.3248891586412227, 0.38195700339551136, 0.4322144525852063, 0.46806828136756207 ], [ 0.2764510852544204, 0.3354347014348532, 0.42043571835054605, 0.5057346869962704, 0.5722369688513612, 0.6143188126882736, 0.6364622034194098, 0.6466990786696064, 0.6539569664177362, 0.6680889239448058, 0.6962121668057344, 0.7354728072993203, 0.7726003588338871, 0.7963778821947571, 0.8102238120848038, 0.8263927275425013, 0.8469154769615215, 0.858187031172761, 0.8489705437924568, 0.8265377913555584, 0.8061899136867117, 0.7871765887061153, 0.7481811211137714, 0.6701481914951126, 0.5601527421265988, 0.45051070514812197, 0.37588001818696337, 0.3510372202064548, 0.3660326026868748, 0.39713441842962904, 0.42137667466940915, 0.42525978570397716, 0.40637134949558845, 0.37130938841960176, 0.33238228934943176, 0.3032077568909753, 0.29326598823037336, 0.30326450129418864, 0.32407927653353724, 0.34067063209005677, 0.3397249502335583, 0.3174524895122315, 0.28305313394405074, 0.25484080000111503, 0.2503005835710765, 0.27615642441674365, 0.32528950651220506, 0.38223580072648805, 0.4323821332964606, 0.46815580985992555 ], [ 0.28137546048484574, 0.3411790325817141, 0.42654340086159953, 0.5117957184936947, 0.5780804061101981, 0.6200621788502199, 0.6423750187223096, 0.6529818913608432, 0.6606035658884588, 0.6749030704614534, 0.7028886450869839, 0.7416516234659791, 0.7779828289644104, 0.8010030050181612, 0.8146384636363936, 0.8312295156978169, 0.8519546760975242, 0.8618465455659927, 0.849062176889704, 0.8218575363139945, 0.7975381135022743, 0.7769333318201566, 0.7389254412458407, 0.6634771183882792, 0.5563690325116798, 0.44901927430670996, 0.3757754477349021, 0.3515186874221554, 0.36656201409070277, 0.3974096032927329, 0.4212241018454943, 0.4245348762217196, 0.4049236211976351, 0.3690267184649256, 0.3292799362627696, 0.299495463680196, 0.28933441295340506, 0.2995818735709527, 0.32104861114830535, 0.33852237600739404, 0.3384910217994203, 0.31701166223366967, 0.2832020753765729, 0.25535275213227177, 0.25096396477303823, 0.2768027039088502, 0.32581327995301657, 0.3825994303039778, 0.4326005822014304, 0.4682697885192803 ], [ 0.2865220606680012, 0.3471290345034478, 0.43281761374622435, 0.5179769339636684, 0.5840056448507233, 0.6258651223747035, 0.6483407708674968, 0.6593195506483709, 0.6673058204107817, 0.6817640499358641, 0.7095893314358319, 0.7478207518677591, 0.7833197226597567, 0.805556395303486, 0.8189706751293909, 0.8359809720873947, 0.8568940355868944, 0.8653613904117218, 0.8489314384750781, 0.8168643080239839, 0.7885043868155263, 0.7662927395908117, 0.7293235134498119, 0.6565646869284308, 0.5524703905028027, 0.4475243646578309, 0.3757391050330566, 0.35209529986705645, 0.36718042810207424, 0.39775326080844575, 0.4211211136624129, 0.42385092927180457, 0.403519755962795, 0.3667985636596137, 0.3262444284094433, 0.2958582955491132, 0.28547924749472964, 0.29597131162718143, 0.318085458646105, 0.33644405621515994, 0.3373416973254362, 0.31668205727974225, 0.2834934281636984, 0.2560308112728934, 0.2517988548399412, 0.2776040728078312, 0.32645940080474145, 0.38304714522877126, 0.4328693509727992, 0.46840998349898566 ], [ 0.2918822442525591, 0.3532749959228173, 0.43924841925401537, 0.5242688529979952, 0.5900038882429748, 0.6317192344660161, 0.6543508277137454, 0.6657026040705943, 0.6740531235065328, 0.6886601288945273, 0.7163018002274743, 0.753967943834895, 0.7886000455600074, 0.8100289686211543, 0.8232129656293944, 0.8406403609812415, 0.8617275178728924, 0.8687279434937879, 0.8485798075896833, 0.8115662314010745, 0.7791023965463134, 0.755270668456855, 0.71938963268665, 0.6494211681352953, 0.5484624771730257, 0.44602787408586075, 0.3757705755157258, 0.352765703891006, 0.3678865171885536, 0.3981646332981405, 0.4210678100632059, 0.42320911690812263, 0.4021622156028445, 0.36462882910536065, 0.3232810540107324, 0.29230253909005777, 0.2817070964511701, 0.2924389398836632, 0.3151947824730303, 0.3344390805304348, 0.33627875691935866, 0.3164640090332284, 0.2839264185175186, 0.2568735085289854, 0.2528035125569619, 0.2785588795939143, 0.3272265431669492, 0.3835780282206018, 0.4331878892939247, 0.46857610781123815 ], [ 0.2974468459546486, 0.35960668297356324, 0.4458254094531618, 0.5306616013517728, 0.5960660127178791, 0.637615813945652, 0.6603962610294182, 0.6721212727012664, 0.6808345048308229, 0.6955791845125529, 0.7230132371648647, 0.7600805973578725, 0.7938125178600693, 0.8144114372085713, 0.8273577222573445, 0.845200873203894, 0.8664490979402739, 0.8719427661329903, 0.8480092177703475, 0.8059721929238932, 0.7693467959813116, 0.7438840213107935, 0.7091390034184567, 0.6420574694356472, 0.5443512770076976, 0.44453175947893203, 0.37586933717140103, 0.3535283733059786, 0.3686787883878872, 0.398642837344009, 0.4210642057851521, 0.4226105513349548, 0.4008534103858406, 0.3625213660432181, 0.32039504319495266, 0.28883442291475253, 0.2780245116884299, 0.2889908350267606, 0.3123814934126805, 0.33251077930674966, 0.3353038534919505, 0.31635765474576755, 0.2845000017720231, 0.2578790501507311, 0.2539758576909472, 0.2796651649324989, 0.3281131379299204, 0.38419099474921115, 0.4335555467362899, 0.46876782230594893 ], [ 0.3032062028079137, 0.3661133673650548, 0.4525377338533843, 0.5371449360870368, 0.6021825901799049, 0.6435458876691154, 0.6664678672807735, 0.678565474656907, 0.6876386581616045, 0.7025087376614079, 0.7297104761956239, 0.766145794607673, 0.7989456078853837, 0.8186943360142791, 0.8313972182288435, 0.8496556383516071, 0.871052771176529, 0.875002604445261, 0.847222046724997, 0.8000918155239736, 0.7592531912587156, 0.732150705232437, 0.6985877016971446, 0.6344851075585889, 0.5401430835191297, 0.4430380330474303, 0.37603476354776294, 0.35438161499144977, 0.3695555885195992, 0.39918686692223015, 0.42111023060401226, 0.4220562817474945, 0.39959569197218164, 0.3604799605629808, 0.3175915527603631, 0.28546009966368624, 0.2744379736037206, 0.28563300882988835, 0.3096504359199053, 0.3306623964386646, 0.3344185087122437, 0.3163629350086502, 0.28521286642530563, 0.25904532385693874, 0.25531347815516237, 0.28092066836959945, 0.32911737812115166, 0.3848847967256821, 0.433971574972387, 0.4689847368244122 ], [ 0.30915018207021705, 0.37278385647611584, 0.45937412885188295, 0.5437082723332659, 0.6083439116444073, 0.6495002322858849, 0.6725561898345762, 0.68502485022636, 0.6944539713053768, 0.7094359881891285, 0.7363800389189409, 0.7721503420405209, 0.8039875680985655, 0.822868050784881, 0.8353236324341262, 0.8539977380337872, 0.87553256166354, 0.8779043901804922, 0.8462211044244934, 0.7939354306481501, 0.7488381001329658, 0.7200895853035589, 0.6877526338695308, 0.6267161790659896, 0.535844483627105, 0.4415487583400392, 0.3762661270331763, 0.3553235750074562, 0.37051510989299247, 0.39979559690932587, 0.42120572981597115, 0.4215472913100157, 0.3983913464278858, 0.35850832235097907, 0.31487565093972547, 0.28218562797517666, 0.27095387231119206, 0.2823713908903413, 0.30700637442064366, 0.3288970804628568, 0.3336241092722067, 0.31647959480260845, 0.2860634390295149, 0.2603699061996157, 0.2568136382687312, 0.2823228360244016, 0.3302372250406623, 0.38565802673646715, 0.4344351303135054, 0.46922641152227074 ], [ 0.31526821087417173, 0.3796065252605156, 0.46632294889200143, 0.550340711569523, 0.6145400122205366, 0.6554693972736554, 0.6786515425060035, 0.6914887885416224, 0.7012685578165534, 0.7163478523047595, 0.7430081763338588, 0.7780808129347174, 0.8089264734046794, 0.8269228481028713, 0.8391290705130885, 0.8582202201299891, 0.8798825309160242, 0.8806452411819123, 0.8450096196842724, 0.7875140476090703, 0.7381189071709692, 0.7077204346675847, 0.676651492044543, 0.6187633286214944, 0.5314623408576158, 0.4400660459655021, 0.3765626023947922, 0.35635224518500436, 0.3715553964841308, 0.4004677869446846, 0.4213504649539163, 0.4210844942836511, 0.3972425873438748, 0.3566100735226878, 0.31225230222893835, 0.27901695448731056, 0.2675784888256929, 0.27921181134985024, 0.30445397963107634, 0.3272178757888789, 0.33292190347242, 0.3167071851179752, 0.2870498899034329, 0.2618500709328368, 0.25847328807120995, 0.28386882924229073, 0.331470415155921, 0.38650912279999095, 0.4349452765603649, 0.46949235835549785 ], [ 0.32154930750027394, 0.38656934983757657, 0.4733721992154747, 0.5570310713248563, 0.6207606973531024, 0.6614437291706714, 0.6847440343748653, 0.6979464556995414, 0.7080702904161006, 0.7232310019238979, 0.7495809127624865, 0.7839235921875137, 0.8137502616033172, 0.8308489072662857, 0.842805587366392, 0.8623161140453163, 0.8840967870792794, 0.8832224615074109, 0.8435912253168645, 0.7808393203531824, 0.7271138155493977, 0.695063881017111, 0.6653027064843863, 0.610639715112745, 0.5270037774181828, 0.4385920490299712, 0.3769232705524509, 0.3574654701615019, 0.37267435055239556, 0.4012020856307534, 0.42154411473381587, 0.42066873331535654, 0.3961515490900389, 0.3547887375868885, 0.3097263523428524, 0.27595989594698367, 0.26431797632167336, 0.27615998366853783, 0.30199781495025874, 0.32562771409293867, 0.3323129981393934, 0.31704506513426994, 0.28817013963896326, 0.26348279834556504, 0.2602890736479548, 0.2855555341673432, 0.33281446772378137, 0.3874363736233405, 0.4355009881531234, 0.469782042722371 ], [ 0.32798211414338485, 0.3936599426327503, 0.48050957008068573, 0.5637679161857893, 0.6269955702295777, 0.6674133969229414, 0.6908235957855212, 0.7043868242348275, 0.7148468359837103, 0.7300719058184267, 0.756084091765356, 0.7896649231818581, 0.8184467758175649, 0.8346363538851096, 0.846345211031282, 0.8662784469382302, 0.8881694945944565, 0.8856335412550497, 0.8419699419434208, 0.7739235117888413, 0.7158417956399491, 0.6821413497101129, 0.6537253950969166, 0.6023589757521995, 0.5224761552138216, 0.4371289583014971, 0.37734712256679265, 0.35866095482710003, 0.3738697396654063, 0.4019970350510409, 0.42178627622610165, 0.42030077689918677, 0.39512028023269746, 0.3530477285881948, 0.3073025133617, 0.27302012150086985, 0.2611783415448734, 0.27322148752282577, 0.29964232298101673, 0.3241294059080283, 0.3317983558841385, 0.3174924049460213, 0.28942186636936074, 0.26526478551377863, 0.26225734841738424, 0.28737957218911137, 0.3342666931035064, 0.388437924334287, 0.43610115360592466, 0.470094885253706 ], [ 0.334554931036011, 0.40086558892509916, 0.48772247231152477, 0.5705395899924135, 0.6332340602517383, 0.673368418256473, 0.6968800054386356, 0.7107987038363401, 0.7215856919873391, 0.7368568724004516, 0.7625034238506544, 0.795290956515699, 0.8230038087127788, 0.8382752950540127, 0.8497399678384326, 0.8701002608864916, 0.8920948843351363, 0.8878761561356676, 0.840150160558981, 0.7667794558295234, 0.7043225305858389, 0.6689750037327598, 0.6419393102210549, 0.5939351882920587, 0.5178870558731485, 0.4356789971148841, 0.37783306381935733, 0.35993627214626, 0.37513920409948115, 0.4028510755848292, 0.4220764662461499, 0.419981317020497, 0.3941507371437422, 0.3513903404745723, 0.3049853491315771, 0.2702031352433872, 0.25816542645491114, 0.2704017518984056, 0.29739181223427447, 0.32272563244357777, 0.3313787927105685, 0.31804818881947955, 0.2908025137637827, 0.26719245742323183, 0.2643741853269847, 0.28933731121465023, 0.3358242017219014, 0.3895117826617677, 0.43674457920989107, 0.4704302637429645 ], [ 0.3412557517853396, 0.40817328465158276, 0.4949980740344403, 0.5773342490980066, 0.6394654524650999, 0.6792986869783748, 0.7029029184759196, 0.7171707731901691, 0.7282742242034961, 0.7435720939577722, 0.7688245357638503, 0.8007878003696347, 0.8274091483007522, 0.8417558559450846, 0.8529819087531899, 0.8737746309475717, 0.895867264213995, 0.8899481668352933, 0.8381366239518944, 0.7594205173186864, 0.6925763590881323, 0.6555876807427734, 0.629964782910697, 0.5853828314983038, 0.5132442598592238, 0.4342444160317632, 0.3783799183619709, 0.36128887131749465, 0.3764802645813919, 0.40376255099637937, 0.42241412295717085, 0.4197109669931296, 0.39324477782928696, 0.3498197367360574, 0.3027792609820616, 0.26751425909653914, 0.25528489017689204, 0.2677060384495265, 0.2952504440720415, 0.32141893766746943, 0.3310549759812482, 0.3187112189628685, 0.29230929970977576, 0.26926197891050885, 0.26663538990103686, 0.29142487771320574, 0.3374839136487487, 0.39065582553602046, 0.4374299929873005, 0.4707875152072339 ], [ 0.34807229977516335, 0.4155697753116435, 0.5023233384548133, 0.584139896560931, 0.6456789178335949, 0.6851940011048535, 0.7088818954526835, 0.7234916128256808, 0.7348997055728169, 0.750203692147382, 0.7750330211315865, 0.806141572274436, 0.8316506251104765, 0.8450682176510801, 0.8560631367935976, 0.8772946840614374, 0.8994810302531829, 0.8918476182095982, 0.8359344070830104, 0.7518605500133827, 0.6806242156347034, 0.6420028274421171, 0.6178226649352248, 0.5767167440376292, 0.5085557247444854, 0.4328274872723371, 0.3789864334123923, 0.3627160862331078, 0.37789033033595754, 0.4047297137754297, 0.42279860767808053, 0.4194902594990142, 0.3924041560050048, 0.348338940360174, 0.30068847382334923, 0.26495861609591526, 0.25254219133978184, 0.26513942519564887, 0.2932222199440849, 0.32021172068276, 0.3308274227468818, 0.3194801197908465, 0.293939225642453, 0.27146926736654353, 0.26903651407937157, 0.2936381694776455, 0.33924256873814795, 0.39186780607777566, 0.4381560488786221, 0.47116593806953544 ], [ 0.35499206547897916, 0.42304159581022455, 0.5096850625183337, 0.590944417132288, 0.651863544241627, 0.6910440917087309, 0.7148064320868988, 0.7297497388333751, 0.7414493560264733, 0.7567377645426192, 0.7811144922206441, 0.8113384520254626, 0.8357161604914546, 0.8482026560952192, 0.8589758354052544, 0.8806536187345615, 0.9029306781066058, 0.8935727383516918, 0.8335488965345168, 0.7441138528132542, 0.6684875684176496, 0.6282444315413774, 0.6055342687262583, 0.567952081939076, 0.503829562733502, 0.43143049893677465, 0.3796512839730141, 0.3642151441998432, 0.37936670740300926, 0.4057507307049401, 0.4232292068882371, 0.41931964483894923, 0.39163051544455824, 0.3469508241486144, 0.2987170226842513, 0.26254111415614484, 0.24994257087845312, 0.262706790625899, 0.2913109689727976, 0.31910622843080105, 0.33069649844485793, 0.32035334266210325, 0.2956890864766618, 0.2738100061437898, 0.2715728707833314, 0.29597286904385683, 0.341096737289067, 0.39314536094433206, 0.43892133114313603, 0.47156479445240607 ], [ 0.3620023445261804, 0.4305751110724796, 0.5170699162980394, 0.5977356128978912, 0.658008368101011, 0.6968386523742444, 0.7206659896681582, 0.7359336373171925, 0.7479103831116113, 0.7631604320208312, 0.7870546325626453, 0.8163647354793768, 0.8395938158034879, 0.8511495818120893, 0.8617122976628859, 0.883844725435623, 0.906210815016726, 0.8951219375728865, 0.8309857691418754, 0.7361951244300549, 0.6561883551966048, 0.6143369515904643, 0.5931213055106823, 0.5591042747993771, 0.4990740175212405, 0.430055749035718, 0.38037307754938954, 0.36578317488068535, 0.38090660718646585, 0.40682368863132445, 0.423705134420272, 0.4191994894026042, 0.3909253846265907, 0.34565810143854087, 0.29686873975099176, 0.26026643038766034, 0.24749103537505646, 0.26041279828075126, 0.28952033593996124, 0.3181045487516026, 0.33066241597101625, 0.32132917106733316, 0.29755548109614594, 0.2762796586054772, 0.27423954914224136, 0.2984244577067309, 0.34304283117634354, 0.39448601799892064, 0.4397243589530156, 0.4719833125722779 ], [ 0.3690902763602375, 0.4381565572599372, 0.5244644829439459, 0.6045012394293092, 0.6641024064362624, 0.7025673691426517, 0.7264500260050143, 0.7420317994382174, 0.7542700232372985, 0.7694578867703121, 0.7928392501854906, 0.8212068889577789, 0.8432718422352673, 0.853899580392766, 0.8642649561581603, 0.8868614076246989, 0.9093161721826644, 0.8964938073342873, 0.8282509699251296, 0.7281194167001485, 0.643748917375781, 0.6003052449610811, 0.5806058218791468, 0.5501889809073912, 0.4942974405780789, 0.4287055393507461, 0.3811503589454741, 0.36741721941760785, 0.3825071551976797, 0.40794660041184705, 0.4242255338316531, 0.4191300743650146, 0.39029017170466335, 0.34446331727041474, 0.2951472419650074, 0.2581389960348169, 0.24519234101369974, 0.2582618818789957, 0.2878537697280052, 0.3172086038313083, 0.3307252351276498, 0.3224057262432903, 0.29953482335169973, 0.27887348275301826, 0.27703143031122496, 0.3009882300691147, 0.34507711540166913, 0.3958872042685893, 0.4405635911600431, 0.4724206892237877 ], [ 0.37624288332516975, 0.44577208341487723, 0.5318552990289556, 0.6112290422953701, 0.670134689318242, 0.7082199508283124, 0.7321480267848957, 0.7480327569016938, 0.7605155833565277, 0.7756164406885941, 0.7984543311848982, 0.8258516039734528, 0.8467387309843852, 0.8564434533772741, 0.8666264134238351, 0.8896972033301221, 0.9122416175107391, 0.8976871191645907, 0.8253506894377937, 0.7199020867486384, 0.631191932571385, 0.5861744942757704, 0.5680101350471253, 0.5412220414684634, 0.48950826695587335, 0.42738216914695704, 0.3819816151127376, 0.36911423969485685, 0.3841653999548426, 0.4091174110134315, 0.42478948094506697, 0.41911159461602854, 0.3897261598232984, 0.34336884004256896, 0.2935559192358849, 0.25616298210317906, 0.24305097822030214, 0.25625823105625645, 0.2863145122669525, 0.31642014406546853, 0.3308848624496184, 0.3235809731872742, 0.30162335351862946, 0.28158654636567787, 0.2799432038091963, 0.30365930905829236, 0.3471957200125704, 0.39734625415479263, 0.4414374312135104, 0.47287609234284816 ], [ 0.38344711001514103, 0.4534077933578124, 0.5392288951225516, 0.617906793783079, 0.6760942925135096, 0.7137861595819159, 0.7377495372172818, 0.7539251177352542, 0.7666344828953622, 0.7816225739389717, 0.8038860933633188, 0.8302858519880252, 0.849983263523665, 0.8587722593694375, 0.8687894727362128, 0.8923458071790809, 0.9149821687126094, 0.8987008235967564, 0.8222913406527013, 0.7115587482187395, 0.6185403459534864, 0.571970132586161, 0.5553567670721816, 0.5322194341140908, 0.4847149907119939, 0.4260879287610311, 0.3828652800307049, 0.37087112770237357, 0.38587832200009176, 0.4103340037368477, 0.4253959865472127, 0.41914415792830845, 0.3892345028019313, 0.342376853690812, 0.2920979233231688, 0.25434228574118006, 0.2410711570569941, 0.25440577777920304, 0.284905588036572, 0.31574074236550714, 0.3311410514092809, 0.32485272704516543, 0.3038171501624098, 0.28441374258501784, 0.28296938430421315, 0.3064326613430851, 0.34939465233629613, 0.3988604178601191, 0.44234423220739755, 0.47334866363705586 ], [ 0.39068986272142514, 0.46104978766205107, 0.546571836422515, 0.6245223296752684, 0.6819703702145368, 0.7192558415749775, 0.7432441938278014, 0.7596976022029216, 0.7726142957367499, 0.7874629834283176, 0.8091210396592882, 0.8344969389048409, 0.8529945616726331, 0.8608773551420086, 0.8707471691302412, 0.8948010927812624, 0.917533006710445, 0.8995340491529702, 0.8190795355046121, 0.7031052217837369, 0.6058173006522487, 0.5577177676092525, 0.5426683782963024, 0.5231972258858629, 0.4799261400503585, 0.42482509308924843, 0.3837997395970175, 0.3726847149592039, 0.38764284299601, 0.41159420654010226, 0.42604399923516256, 0.41922778436859914, 0.3888162212070718, 0.34148935042918926, 0.29077615743804863, 0.2526805174383387, 0.23925679343749023, 0.2527081834970369, 0.2836297941712476, 0.31517178893425885, 0.33149340299977076, 0.32621865984503173, 0.30611214236026596, 0.28734980587537623, 0.28610432877213315, 0.30930311308353503, 0.3516698094746307, 0.4004268699939698, 0.4432823020345607, 0.47383752127183654 ], [ 0.3979580488111029, 0.46868420552915285, 0.5538707632743565, 0.6310635859313307, 0.6877521877147674, 0.7246189576779188, 0.7486217562687866, 0.7653390786969694, 0.778442792063808, 0.793124630966633, 0.8141460110874192, 0.8384725589972621, 0.8557621371884305, 0.8627504364944495, 0.8724928004552839, 0.8970571353581271, 0.9198894893029601, 0.9001861014040379, 0.8157220612088885, 0.6945574851613737, 0.5930460675227205, 0.5434431053351905, 0.5299677002859396, 0.5141715258852553, 0.47515025228009644, 0.42359591500091354, 0.38478333650577085, 0.374551781957206, 0.38945583486348434, 0.4128957984348544, 0.4267324083990538, 0.41936240595604846, 0.38847219883137085, 0.3407081240856711, 0.2895932666129372, 0.2511809890988777, 0.23761149622657896, 0.25116882708899196, 0.28248969121285616, 0.3147144865348604, 0.3319413666949963, 0.32767630754744353, 0.30850412222561624, 0.2903893282908643, 0.2893422539537592, 0.31226536594448306, 0.35401699100511336, 0.40204271831963934, 0.44424990862543634, 0.47434176260060124 ], [ 0.405238615873191, 0.47629726639019004, 0.5611124314088297, 0.6375186351174735, 0.693429153891725, 0.7298656140029075, 0.7538721390102667, 0.7708385994482737, 0.7841079798665204, 0.7985947908683003, 0.818948238909091, 0.8422008479722954, 0.8582759405891297, 0.8643835786226686, 0.874019958294763, 0.8991082345044386, 0.9220471650405228, 0.9006564621253903, 0.812225856474396, 0.6859316228517516, 0.5802499745650856, 0.5291718733229278, 0.5172774685448027, 0.5051584377824802, 0.4703958486935724, 0.4224026187035034, 0.38581437509366046, 0.3764690675860427, 0.3913141289233526, 0.414236515929816, 0.42746004732954945, 0.4195478665704149, 0.3882031795965527, 0.340034764063955, 0.2885516288836398, 0.24984670304586726, 0.23613855528319733, 0.24979079366335105, 0.2814875945544156, 0.31436984627549114, 0.33248424178357305, 0.3292230773828577, 0.31098875768174455, 0.2935267759788961, 0.29267725403525147, 0.3153140133039974, 0.3564319118339046, 0.40370501260508385, 0.4452452852486751, 0.47486046692714357 ], [ 0.4125185904696856, 0.4838753110593583, 0.5682837517290811, 0.6438757224335501, 0.6989908533615444, 0.7349860921821811, 0.7589854427746604, 0.7761854358950376, 0.789598145915208, 0.8038610967550975, 0.8235153957542803, 0.8456704348694344, 0.8605264089210803, 0.865769275757112, 0.8753225585682983, 0.9009489369634875, 0.92400178725242, 0.9009447885680455, 0.8085979877268534, 0.6772437758197675, 0.5674523362983758, 0.5149297440014506, 0.5046203552753881, 0.49617401237822, 0.4656714094660657, 0.42124739308658526, 0.38689112613435656, 0.37843327850132574, 0.39321452500493104, 0.4156140594953674, 0.4282256964382312, 0.4197839221120159, 0.38800976489534184, 0.33947064995981885, 0.2876533473252469, 0.24868034200697486, 0.23484093050249988, 0.24857686425990982, 0.2806255666144777, 0.3141386839305396, 0.3331211790727343, 0.3308562554458343, 0.3135616054308358, 0.2967565058502199, 0.2961033184766284, 0.31844355658768253, 0.3589102151455902, 0.4054107535396972, 0.44626663585113896, 0.4753926982885168 ], [ 0.419785116332085, 0.49140484226945563, 0.575371829481504, 0.650123301185281, 0.7044270781691617, 0.7399708792527843, 0.763951985578442, 0.7813691135501595, 0.7949018960056775, 0.8089115873237387, 0.8278356454188094, 0.8488704924986489, 0.8625045121850945, 0.8669004798263203, 0.8763948716330993, 0.9025740592930876, 0.9257493281642657, 0.9010509128586097, 0.8048456254561294, 0.6685100913418819, 0.5546763833850916, 0.500742258293851, 0.49201890246474717, 0.4872342004116875, 0.4609853486794381, 0.4201323850721349, 0.3880118315625179, 0.3804410983988562, 0.39515380048537246, 0.41702610002401697, 0.4290280865788646, 0.4200702409142742, 0.38789241138558284, 0.33901694685752504, 0.28690024297908034, 0.24768426012856898, 0.23372124190801635, 0.24752950650399086, 0.2799054097792568, 0.3140216168167463, 0.3338511829571256, 0.3325730145154043, 0.3162181240645371, 0.30007278234573903, 0.29961434991360664, 0.3216484216603208, 0.3614474853955514, 0.40715690167965357, 0.4473121404148353, 0.4759375082467059 ], [ 0.42702549184749866, 0.4988725644222316, 0.5823640026473356, 0.6562500675528956, 0.7097278588798827, 0.7448106970196582, 0.7687623332447993, 0.7863794462086323, 0.8000081942828194, 0.8137347508439551, 0.8318976910654807, 0.851790786125774, 0.8642017981392438, 0.8677706379039243, 0.8772315516994035, 0.9039787102956746, 0.9272859930390399, 0.9009748415380959, 0.8009760207976374, 0.6597466732344753, 0.541945192802108, 0.4866347498794761, 0.4794954555680686, 0.47835480580707945, 0.45634598957163935, 0.4190596929993339, 0.38917470910993074, 0.38248919715916474, 0.3971287192248296, 0.4184702852618595, 0.42986590245731954, 0.4204064044087109, 0.3878514292477408, 0.33867460132869964, 0.28629384870397373, 0.24686047506029352, 0.2327817608402824, 0.24665086625592436, 0.2793286601462209, 0.31401906124070234, 0.3346731138462639, 0.33437042207063833, 0.318953687262565, 0.30346979423113407, 0.3032041820589076, 0.3249229752071327, 0.3640392612912183, 0.40894038638484786, 0.44837996030865224, 0.47649393867755263 ], [ 0.43422720668305625, 0.5062654223912741, 0.5892478793962314, 0.6622449945105607, 0.7148834949404227, 0.7494965307706092, 0.7734073292528594, 0.7912065693385688, 0.8049064014531235, 0.8183195681586214, 0.8356908215647438, 0.8544217201212325, 0.8656104352026278, 0.8683737282008116, 0.8778276653751564, 0.90515831308322, 0.9286082342709586, 0.9007167552449007, 0.7969964824539613, 0.6509695326773685, 0.5292816188495238, 0.4726322704056498, 0.4670720980603219, 0.46955143954811207, 0.4517615401128818, 0.41803136007221015, 0.39037795683742027, 0.3845742398279874, 0.39913604036360967, 0.4199442461868356, 0.4307377861178143, 0.42079190804120714, 0.38788698091488516, 0.33844433815287567, 0.28583540398093504, 0.246210661147359, 0.23202440228342552, 0.24594276029553014, 0.2788965820994527, 0.3141312305318296, 0.3355856909433065, 0.33624544847030147, 0.3217635970264315, 0.3069416713512998, 0.3068665975303229, 0.32826154103803845, 0.36668104870938867, 0.41075811471106716, 0.44946824361311094, 0.4770610245455899 ], [ 0.4413779774025771, 0.513570639220425, 0.5960113744478587, 0.6680973647548887, 0.7198845841804664, 0.7540196572190405, 0.7778781237913484, 0.7958409725024459, 0.809586311701224, 0.8226555539640302, 0.8392049557189432, 0.8567543822971723, 0.8667232531925005, 0.8687042943692845, 0.8781787191565762, 0.9061086266457271, 0.9297127653576199, 0.9002770085428412, 0.7929143540581769, 0.6421945398411542, 0.516708225283856, 0.4587595159551349, 0.4547705871214652, 0.4608394743669876, 0.44724006900777685, 0.41704936789862856, 0.39161975754740425, 0.3866928953999085, 0.4011725269488557, 0.42144560331034553, 0.4316423404931005, 0.4212261624373383, 0.38799908028211283, 0.3383266577755588, 0.28552585069582537, 0.24573614376268482, 0.23145071836595582, 0.2454066700764475, 0.27861016374343556, 0.31435813367258153, 0.33658749536671084, 0.33819497526553777, 0.3246430968962897, 0.3104825012780832, 0.31059534553450596, 0.33165841624987463, 0.36936833349803605, 0.4126069802218785, 0.4505751303968715, 0.4776377966536943 ], [ 0.4484657819354631, 0.5207757525668808, 0.6026427441932006, 0.6737968025054794, 0.7247220513295467, 0.7583716715534184, 0.7821662018875819, 0.800273530659181, 0.8140381881311772, 0.8267327961565735, 0.8424306841244515, 0.8587805856691977, 0.8675337816370409, 0.868757477892894, 0.8782806856838938, 0.9068257667915108, 0.9305965746727168, 0.899656129890678, 0.7887369920751749, 0.6334373765210705, 0.5042472188552417, 0.44504075506854907, 0.4426122907146132, 0.4522340004298317, 0.4427894822206802, 0.41611563014911, 0.3928982830632502, 0.38884184537413874, 0.4032349543598091, 0.42297197287963856, 0.43257813300620307, 0.4217084948135586, 0.3881875924001781, 0.3383218345162312, 0.2853658299201126, 0.24543789480573897, 0.23106189306661956, 0.24504373658030998, 0.27847011321813353, 0.31469957453517616, 0.33767697360526394, 0.3402158036146532, 0.3275873850999749, 0.3140863457864867, 0.3143841593373518, 0.3351078871832836, 0.3720965941124874, 0.4144838716857309, 0.4516987579243269, 0.4782232843567976 ], [ 0.4554788927646057, 0.5278686497452212, 0.6091306204338655, 0.6793333040460818, 0.7293871754283833, 0.7625445134760531, 0.786263410486468, 0.8044955342024198, 0.8182527965602331, 0.8305419930416197, 0.8453593084380956, 0.8604929073920424, 0.8680362854181638, 0.8685290483444024, 0.8781300285859664, 0.90730622632728, 0.931256938958882, 0.8988548217451451, 0.7844717443315412, 0.6247134899729541, 0.4919203845200526, 0.43149975861247425, 0.4306181263091434, 0.4437497821954136, 0.43841750011894215, 0.4152319863637794, 0.394211698362921, 0.391017792053267, 0.4053201185023421, 0.4245209729593588, 0.4335436992113786, 0.4222381506299973, 0.38845223365586573, 0.33842991553519064, 0.2853556797050875, 0.24531652938945764, 0.23085873815056784, 0.2448547562957073, 0.27847685591428983, 0.31515515173163633, 0.33885244129595365, 0.3423046627694017, 0.3305916275847254, 0.317747257096588, 0.3182267734541655, 0.3386042451131693, 0.3748613140375206, 0.41638568162491296, 0.4528372657743116, 0.4788165182292403 ], [ 0.4624059087072647, 0.5348376012360609, 0.6154640426046529, 0.6846972668808995, 0.733871616018923, 0.766530492118238, 0.79016198435875, 0.8084987175962443, 0.8222214375009175, 0.8340744882115361, 0.847982877828098, 0.8618847246339233, 0.8682257975130704, 0.8680154313049919, 0.877723725743236, 0.907546894347482, 0.9316914364580512, 0.8978739607852604, 0.7801259292583292, 0.6160380481387788, 0.4797490225907258, 0.41815973177401244, 0.41880850149199056, 0.43540121661783787, 0.4341316353257213, 0.41440019593539434, 0.39555816555576734, 0.3932174665578164, 0.40742484374521837, 0.42609022937167707, 0.43453754646205445, 0.42281429547962884, 0.38879257243939946, 0.3386507205645518, 0.28549543390012916, 0.24537230373103286, 0.230841690355317, 0.24484017834165167, 0.27863053260378834, 0.31572425908133456, 0.3401120873131268, 0.3444582186026107, 0.3336509708836609, 0.3214592938207853, 0.32211694049543277, 0.3421418016140431, 0.37765799394891, 0.4183093146843798, 0.453988800850771, 0.4794165326757886 ], [ 0.4692357851710608, 0.5416712925315882, 0.6216324883527091, 0.6898795173875502, 0.7381674380029499, 0.7703223097236883, 0.7938545707228337, 0.8122752864759004, 0.8259359761758834, 0.8373223029114881, 0.8502942224044157, 0.8629502471700639, 0.8680981486179535, 0.8672137337492213, 0.8770592908049823, 0.9075450745043385, 0.9318979595955277, 0.8967145982415485, 0.775706815924627, 0.6074258964401873, 0.46775388807359514, 0.40504324845113693, 0.4072032567004529, 0.4272022928569187, 0.4299391713705218, 0.41362193229590344, 0.396935847692712, 0.39543763653151814, 0.4095459905724101, 0.4276773814755741, 0.4355581575936598, 0.423436017207589, 0.3892080302969188, 0.3389838424051294, 0.28578482200077193, 0.24560511425667247, 0.23101080984012456, 0.24500010274995115, 0.2789309984957672, 0.31640608669761355, 0.34145397815639605, 0.34667308214752846, 0.33676055477088707, 0.3252165365585565, 0.3260484476068785, 0.3457149035442423, 0.3804821635700681, 0.4202516957899201, 0.4551515222671091, 0.48002236847679025 ], [ 0.4759578627755835, 0.5483588541990643, 0.6276259023549744, 0.6948713368555322, 0.7422671350654579, 0.7739130839979066, 0.797334252470478, 0.815817943088617, 0.8293888704204806, 0.8402781657257417, 0.8522869834408333, 0.8636845464955624, 0.8676499934559897, 0.8661217667148436, 0.8761347928059937, 0.907298502133421, 0.9318747271328598, 0.8953779603099048, 0.7712216049326828, 0.5988915163084447, 0.45595513243329405, 0.39217218829544603, 0.3958216102987384, 0.41916655365214667, 0.4258471422216613, 0.4128987773333134, 0.39834291240147524, 0.39767511351439655, 0.4116804629277683, 0.42928008776704396, 0.4366039946094503, 0.4241023282534545, 0.3896978835638106, 0.33942864818729734, 0.2862232700274386, 0.24601449792468538, 0.23136577990642643, 0.24533427991546058, 0.27937782322492904, 0.3171996226924003, 0.34287606262385983, 0.34894581812000985, 0.3399155246611624, 0.32901310308386944, 0.3300151324457437, 0.34931794759601514, 0.38332939318179327, 0.42220977806676474, 0.4563236060869141, 0.4806330752584499 ], [ 0.4825618942392329, 0.5548898900529877, 0.63343472326481, 0.6996644858071212, 0.7461636515657397, 0.7772963690271805, 0.8005945698930718, 0.8191199099575236, 0.8325731963383362, 0.8429355394309065, 0.8539556402181667, 0.8640835812761911, 0.8668788335892339, 0.8647380650905792, 0.8749488737363496, 0.906805360113568, 0.9316202957047159, 0.8938654486261383, 0.766677410238345, 0.5904489856085104, 0.4443722480088623, 0.3795676766498671, 0.38468210620827653, 0.41130705850760824, 0.4218623127805067, 0.4122322160648228, 0.3997775353398927, 0.39992675996299987, 0.41382521523038635, 0.430896031283256, 0.4376735023576675, 0.4248121682083655, 0.3902612654724455, 0.3399842813903138, 0.2868099024308133, 0.24659963376546834, 0.23190590799096578, 0.24584211121768595, 0.2799702917741862, 0.31810365549505254, 0.3443761767562684, 0.3512729533954206, 0.34311104371222373, 0.33284316307344636, 0.33401089863859884, 0.3529453943615977, 0.38619530474566455, 0.42418055049148295, 0.45750324990480146, 0.48124771387975385 ], [ 0.4890380694402269, 0.5612545033365014, 0.6390499086881704, 0.7042512265060411, 0.7498504028065678, 0.7804661746776914, 0.803629540812352, 0.8221749516605649, 0.835482671587455, 0.8452886448788492, 0.8552955333379081, 0.8641442189780393, 0.8657830365755804, 0.8630619043723483, 0.8735007639297576, 0.9060642933453684, 0.931133570655508, 0.8921786407739254, 0.7620812419530304, 0.5821119411033425, 0.43302401529213724, 0.3672500276086843, 0.37380256428863057, 0.4036363488259455, 0.4179911604125453, 0.41162363159119786, 0.401237903461775, 0.40218949589941116, 0.41597725904111255, 0.4325229247950384, 0.43876511218865144, 0.425564406577976, 0.39089716872567914, 0.3406496646110159, 0.2875435450149644, 0.24735934563119905, 0.23263012792724413, 0.2465226508117332, 0.28070740632948576, 0.3191167767790177, 0.3459520490369527, 0.35365098541307816, 0.34634230459025583, 0.33670095232743447, 0.3380297306696853, 0.35659178186880947, 0.389075582604308, 0.4261610452518642, 0.4586886772522273, 0.4818653587281484 ], [ 0.4953770385706718, 0.567443320823251, 0.6444629580999256, 0.7086243435683955, 0.7533212935996252, 0.7834169843923908, 0.8064336790270207, 0.8249773946256238, 0.8381116761864189, 0.847332481787765, 0.856302884375328, 0.8638642535386198, 0.8643618513327593, 0.8610933142555852, 0.8717902951472409, 0.9050744217384565, 0.9304138160927715, 0.8903192907958581, 0.7574399901758646, 0.5738935430924275, 0.42192845326351536, 0.3552386904109312, 0.3632000336516863, 0.3961664151195199, 0.41423985758522014, 0.41107430035623943, 0.4027222180911309, 0.40446030517300646, 0.4181336693628245, 0.4341585157734146, 0.43987724558084373, 0.4263578457413597, 0.39160444852531734, 0.3414235030692683, 0.2884227288645165, 0.24829210614232194, 0.23353700346489742, 0.24737460858105814, 0.28158788906031856, 0.3202373849872095, 0.34760130583151455, 0.3560763904820311, 0.3496045408614898, 0.3405807864375219, 0.34206570815260884, 0.360251738543234, 0.39196598372458324, 0.428148344791426, 0.45987814181428666, 0.4824850999166882 ], [ 0.5015699333125561, 0.5734475147615455, 0.6496659336212737, 0.7127771625996444, 0.7565707350535698, 0.7861437713109019, 0.8090020109948388, 0.8275221448530615, 0.8404552707435565, 0.8490628463373593, 0.856974811762237, 0.8632424189654959, 0.8626154195941588, 0.8588330889500201, 0.8698179112459596, 0.9038353516049946, 0.9294606640763772, 0.8882893296745326, 0.7527604098970012, 0.5658064423457503, 0.41110277296373493, 0.34355219936093623, 0.35289074907681867, 0.38890866641642496, 0.41061425567698995, 0.4105853877339171, 0.40422869780191784, 0.40673624132128516, 0.42029159055927917, 0.43580059111733005, 0.4410083177249692, 0.42719122409518195, 0.3923818260426565, 0.3423042888340858, 0.2894456952574386, 0.24939604181225555, 0.2346247330306943, 0.2483963542390441, 0.2826101858151519, 0.32146368944440395, 0.3493214770505665, 0.35854563196311423, 0.3528930379755893, 0.3444770738612429, 0.3461130194422614, 0.363919995557798, 0.3948623474527038, 0.4301395885172391, 0.46106993144474195, 0.4831060453760038 ], [ 0.5076083859749967, 0.5792588225938993, 0.654651478590071, 0.7167035667912403, 0.7595936595198313, 0.7886420126458642, 0.8113300906784846, 0.829804703487478, 0.8425092120259385, 0.8504763454822396, 0.8573093428118654, 0.8622783987733192, 0.8605447833654827, 0.8562827941236828, 0.8675846763374095, 0.9023471853647156, 0.9282741228653402, 0.8860908657485431, 0.7480491070053295, 0.5578627494411637, 0.4005633344630896, 0.3322081274516384, 0.3428900906789914, 0.38187390196794657, 0.4071198700162854, 0.4101579439643336, 0.4057555811017971, 0.40901443301846063, 0.4224482418795704, 0.4374469816311372, 0.44215674105607744, 0.42806321937168557, 0.3932278923161899, 0.3432903057510081, 0.290610401540402, 0.2506689393262258, 0.23589115570899294, 0.24958592256102097, 0.2837724707167723, 0.32279371504235693, 0.3511100020180749, 0.36105516830333934, 0.3562031438091846, 0.3483843283649494, 0.35016597454793547, 0.36759139853433426, 0.39776060475333325, 0.43213197915184176, 0.46226237196777087, 0.483727322835096 ], [ 0.513484546542604, 0.5848695643963759, 0.6594128338670174, 0.7203980114206439, 0.7623855336400986, 0.7909077022574701, 0.8134140124923175, 0.8318211801712925, 0.844269965798721, 0.8515704079152742, 0.8573054218200942, 0.8609728311941028, 0.8581518883145544, 0.8534447704025406, 0.8650922803532188, 0.9006105294756147, 0.9268545841475023, 0.8837261850262055, 0.743312525426171, 0.550074006599556, 0.390325607371585, 0.32122304384736283, 0.33321254696533403, 0.3750722853525565, 0.4037618662029962, 0.40979290045814565, 0.4073011289196173, 0.4112920891028498, 0.4246009225774528, 0.43909556624185797, 0.44332092872354034, 0.42897245211832735, 0.39414111255962647, 0.34437963504805186, 0.29191452793917744, 0.2521082529447289, 0.2373337584137994, 0.2509410197230743, 0.2850726516383803, 0.32422530748083717, 0.35296423552727224, 0.363601460899977, 0.3595302787408037, 0.35229718080188616, 0.35421901731291755, 0.3712609185657059, 0.40065678690784745, 0.4341227887121894, 0.4634538307562276, 0.4843480816856342 ], [ 0.5191910975954199, 0.5902726579935891, 0.6639438518318299, 0.7238555362086689, 0.764942369448724, 0.7929373613767087, 0.8152504222966156, 0.8335683041242127, 0.8457347168805553, 0.8523432916322853, 0.8569629142009424, 0.8593273101220432, 0.8554395830526716, 0.8503221333742577, 0.8623430419530128, 0.8986265005140092, 0.9252028291813481, 0.8811977513585783, 0.7385569354068908, 0.542451162098219, 0.3804041350151203, 0.31061247536319836, 0.3238716813987887, 0.3685133210596195, 0.4005450477588295, 0.40949106648740663, 0.4088636268975612, 0.4135665031764321, 0.42674701661700837, 0.4407442759476981, 0.44449929798955073, 0.42991748932624496, 0.3951198308615313, 0.34557016159446197, 0.29335548527223515, 0.25371111299693516, 0.23894968421902701, 0.25245903071884057, 0.28650837653722266, 0.32575613904532086, 0.35488145406552835, 0.36618098177297775, 0.36286994523134536, 0.35621039019576434, 0.3582667368301637, 0.3749236625310496, 0.40354703365011435, 0.4361093641007633, 0.4646427200775159, 0.48496749472512773 ], [ 0.5247212670716963, 0.595461631716919, 0.6682390080350689, 0.7270717754986911, 0.7672607334927445, 0.7947280474368125, 0.8168365263955283, 0.8350434329042229, 0.8469013763753976, 0.8527940880680581, 0.8562826066368121, 0.8573443817791252, 0.8524116142904283, 0.8469187700658424, 0.8593399087245293, 0.896396729337845, 0.9233200337841119, 0.8785082064323961, 0.7337884229608648, 0.535004547328713, 0.37081250238376706, 0.300390872058004, 0.3148801025699965, 0.3622058336237616, 0.39747384514640705, 0.40925312627902266, 0.4104413874900192, 0.41583505777223717, 0.4288839969583367, 0.44239109749074745, 0.4456902735471415, 0.4308968481941448, 0.3961622752561564, 0.34685958078353274, 0.2949304235315845, 0.2554743354243151, 0.2407357418082261, 0.2541370278205216, 0.2880770406186276, 0.32738371489974627, 0.3568588621890425, 0.3687902210257279, 0.3662177368871885, 0.3601188541042478, 0.36230387806804276, 0.3785748826807391, 0.4064276007213883, 0.4380891322961987, 0.46582750019951014, 0.48558475977502213 ], [ 0.5300688388553905, 0.6004306347850384, 0.6722934104826886, 0.7300429662327865, 0.7693377539417579, 0.7962773609815745, 0.8181700985047309, 0.8362445588175993, 0.8477685860561623, 0.8529227227929137, 0.8552662032475457, 0.8550275371139391, 0.8490726178767746, 0.8432393318869942, 0.8560864546428381, 0.8939233632780932, 0.9212077721056094, 0.8756603695430764, 0.7290128804730511, 0.5277438565512583, 0.36156330793904046, 0.2905715770375851, 0.3062494380608091, 0.3561579493683771, 0.39455230619033094, 0.40907963652514223, 0.4120327518723283, 0.4180952280874595, 0.4310094294191109, 0.4440340767482462, 0.44689229074923925, 0.4319090000136691, 0.3972665631434107, 0.34824540600798404, 0.29663624129099275, 0.2573944323300411, 0.24268841599993618, 0.2559717800455639, 0.28977579429952827, 0.3291053798704674, 0.3588935990278199, 0.37142569407556675, 0.36956934698604765, 0.36401761824085205, 0.3663253516845734, 0.382209985471763, 0.4092948668291242, 0.44005960513300424, 0.4670066822502883, 0.48619910117047843 ], [ 0.5352281611810118, 0.6051744452975583, 0.6761028065419932, 0.7327659537106261, 0.7711711256696372, 0.7975834506285395, 0.8192494846649107, 0.8371703129574746, 0.8483357198910706, 0.8527299527785814, 0.8539163178055735, 0.8523811999719401, 0.8454281057556922, 0.8392892240535462, 0.8525868747727643, 0.891209066314387, 0.9188680191333725, 0.8726572371079517, 0.7242359984632503, 0.5206781293834074, 0.3526681393475049, 0.2811668005437682, 0.29799031206480964, 0.35037708080408064, 0.3917840879266822, 0.4089710243228401, 0.4136360916634984, 0.4203445852823774, 0.43312097610996936, 0.4456713218382296, 0.44810379874078254, 0.4329523741618442, 0.3984307070344196, 0.34972497669378055, 0.29846959589804256, 0.259467623485186, 0.24480387929997538, 0.2579597635859086, 0.291601551936966, 0.3309183256954202, 0.3609827449010057, 0.3740839486369212, 0.37292057644869236, 0.36790188533781293, 0.37032624301299544, 0.3858245396382783, 0.4121453399977831, 0.4420183836621939, 0.468178830826787, 0.4868097711192846 ], [ 0.5401941528587608, 0.6096884758438696, 0.6796635874689159, 0.7352381951274238, 0.7727591132998228, 0.7986450160744857, 0.8200736060872835, 0.8378199668626013, 0.848602882718523, 0.8522173602608691, 0.8522364620472245, 0.8494107111005108, 0.8414844488997697, 0.8350745915270121, 0.8488459772153627, 0.888257017202905, 0.9163031518809374, 0.8695019818804464, 0.7194632584964303, 0.5138157360465033, 0.3441375531884964, 0.2721875983841953, 0.29011232681203647, 0.3448699137151619, 0.3891724499005879, 0.40892758555341324, 0.41524981046796466, 0.4225807993472473, 0.435216398443772, 0.44730100593676975, 0.4493232634864682, 0.4340253621858158, 0.39965262059776424, 0.3512954668558886, 0.3004269144031014, 0.26168984873857093, 0.24707800442743755, 0.26009717315243086, 0.2935510012836688, 0.3328195987105187, 0.36312332802235286, 0.37676157144136574, 0.3762673412426247, 0.3717670232364923, 0.37430182020586766, 0.3894142834861109, 0.4149756633028755, 0.44396316208684355, 0.4693425663487995, 0.4874160509280386 ], [ 0.5449623073333841, 0.6139687767407597, 0.68297279056803, 0.737457760897997, 0.774100552215619, 0.7994613091400513, 0.8206419599275403, 0.8381934317999709, 0.8485709060916451, 0.8513873432458198, 0.8502310301529729, 0.8461223080774724, 0.83724885630527, 0.8306023015287686, 0.8448691723170574, 0.8850709055367563, 0.9135159492184577, 0.8661979518268794, 0.7146999272231241, 0.5071643653793814, 0.3359810586642141, 0.2636438547366397, 0.282624047826924, 0.339642396954304, 0.3867202489246085, 0.40894948370950596, 0.41687234524222555, 0.4248016415413627, 0.4372935597207549, 0.4489213698054041, 0.45054917068723754, 0.43512632196476514, 0.40093012498026737, 0.3529538941372819, 0.3025044051751252, 0.264056781273195, 0.24950637775690776, 0.2623799341831523, 0.29562061362958875, 0.3348061079434182, 0.36531233127539525, 0.37945519468042915, 0.37960567920682825, 0.37560857219592864, 0.3782475415292635, 0.39297513140400586, 0.41778261998267846, 0.4458917312687785, 0.4704965671560557, 0.48801725209442426 ] ], "zauto": true, "zmax": 0.9318979595955277, "zmin": -0.9318979595955277 }, { "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.022491545451454622, 0.08338824321229792, 0.14618012151740145, 0.18700931045515803, 0.2049922577246946, 0.20199626904930296, 0.17899891724432707, 0.13539218530946354, 0.07451340644515583, 0.02266535328608271, 0.053078438494543016, 0.06983037654998547, 0.05529678546924837, 0.028338088558791146, 0.023347911397229686, 0.027348928534808137, 0.021829910517860342, 0.021086760943666027, 0.02137622929627108, 0.023279693513412136, 0.03096831604607492, 0.024866947830120126, 0.032386695995438905, 0.06479210576429957, 0.07322052906587605, 0.04185329713642099, 0.03968487433757232, 0.11183340769131693, 0.17382944339859907, 0.21226055140752967, 0.22843116229255275, 0.22751962540108747, 0.21277972060782832, 0.188741755459817, 0.16833126001630408, 0.1664435862762144, 0.17889915695192457, 0.19145901212597535, 0.200960119151388, 0.20898920828265716, 0.2093777851608592, 0.1906209462198736, 0.14504040422160086, 0.07564708538768385, 0.03510187028607662, 0.10615338986070999, 0.17001335651268715, 0.21057549995335642, 0.23071291408797362, 0.238417515553474 ], [ 0.023041184824595575, 0.0820775923190849, 0.14455296850144939, 0.18538775192201826, 0.20345893693918277, 0.200490375148758, 0.1776268185767211, 0.1344967944916399, 0.07441003391301367, 0.0229318806610712, 0.051834539821170623, 0.06815917293601825, 0.05384436933922754, 0.02748097293188058, 0.022356649241546324, 0.02597462465595204, 0.020474785652190023, 0.019872959824601886, 0.02038713024600294, 0.023256018206545062, 0.03136927309176272, 0.025391714851613165, 0.03290424435185769, 0.06512042785629872, 0.07350919932278795, 0.042332426977457295, 0.04016393250584009, 0.11196953808025763, 0.1738763162159669, 0.21224398183362855, 0.22828834928346944, 0.2270410229290875, 0.21156164629695584, 0.18632154817321084, 0.16473047068680927, 0.16262398617632476, 0.17558993357293165, 0.18859556075903441, 0.19855080351782037, 0.2072732472111494, 0.2083680067025105, 0.19001676996402983, 0.1444200867717313, 0.0742968928480604, 0.031925080309699934, 0.10532451265474972, 0.1696907587899988, 0.21045230224674363, 0.23067261854513849, 0.23840692854452036 ], [ 0.024801935105710292, 0.08095398908946154, 0.1429161635091336, 0.18370525157388454, 0.20185504459464948, 0.19891764798658412, 0.17621600070331755, 0.13364315239840477, 0.07452991388863368, 0.024003787354150513, 0.050846995487867384, 0.06658009270733954, 0.052461779848532605, 0.026771597379428705, 0.021527500339856554, 0.024703769615632924, 0.019241271812936576, 0.018826343990137433, 0.01972127545874077, 0.023725997837564752, 0.03229240202097095, 0.02682449731700717, 0.03433123764702767, 0.06596198018878068, 0.07427318197929449, 0.04369506989160845, 0.041579551499594365, 0.11238416546632239, 0.17403301638741628, 0.21226835948154618, 0.22815772264728412, 0.22656247718417075, 0.21033235578247605, 0.18386165424047438, 0.16103671400209577, 0.15868787533219672, 0.17217016510693378, 0.1856198757177784, 0.19604202020680658, 0.20549673222208364, 0.20734805946559867, 0.1894660491267414, 0.143964835218319, 0.07340922248406158, 0.02973584573048625, 0.10479604844792233, 0.16948588002577747, 0.21037409803778612, 0.23064704126404445, 0.2384002085032964 ], [ 0.027505347238394026, 0.08001267664864832, 0.14126424204071253, 0.1819580408383733, 0.2001778582556947, 0.1972749667913601, 0.17476176334719912, 0.13282308888824398, 0.07485018765716837, 0.025718497988089936, 0.05010875793178876, 0.06508924659046414, 0.05114076386056989, 0.026188997767120095, 0.020842868875462103, 0.023527801730022255, 0.018124100907831654, 0.017945027329818054, 0.019374670994303532, 0.024616638406971765, 0.03365409887307228, 0.028988041596622514, 0.03653719924086536, 0.06728960897274415, 0.07549366493747574, 0.04585675186185938, 0.0438355549728845, 0.11307252263677989, 0.1742985907098589, 0.21233351147029364, 0.22803961188026992, 0.22608524195796517, 0.209094952356067, 0.18136719848623045, 0.1572535611793305, 0.15463634191148434, 0.16864012308331228, 0.18253094141262702, 0.19343293297999184, 0.203660107237297, 0.20631904411925225, 0.1889701894892206, 0.1436775730870742, 0.07300442530622028, 0.028770152424998804, 0.10457473489735833, 0.16939999118425758, 0.2103412593203328, 0.2306362923543468, 0.23839738339636782 ], [ 0.030867758532309678, 0.07924647906559236, 0.1395914612889585, 0.18014236814137582, 0.19842475027147166, 0.19555925220267745, 0.17325927579333705, 0.13202787117226494, 0.075345502870018, 0.027897419457704374, 0.049607615784834046, 0.06368214207535497, 0.04987296263905451, 0.025710952783529733, 0.020282915763421148, 0.022438035728980295, 0.017118062944715497, 0.017225436764001414, 0.01932874779730992, 0.02584132805679005, 0.03536321355115131, 0.03169028969306136, 0.039365514227094466, 0.06906548440769798, 0.07714279515472895, 0.04870253146602355, 0.04680203111389725, 0.11402684699778907, 0.17467144250848987, 0.2124390785462742, 0.22793430902168554, 0.2256106221177071, 0.20785274396424203, 0.17884383400570844, 0.15338517493381143, 0.15047077469494902, 0.16500034050005558, 0.17932794421141446, 0.19072295417409893, 0.20176408259791231, 0.20528216577011846, 0.18853036177411245, 0.14355997835059833, 0.07309197975850458, 0.02915377538006342, 0.1046634311346526, 0.16943362710788298, 0.21035394260726456, 0.23064041815475436, 0.23839846499507958 ], [ 0.034661516682118795, 0.07864596948792259, 0.13789185249050726, 0.17825452918714121, 0.1965932115303629, 0.19376748906706984, 0.17170361005715193, 0.1312483009024688, 0.07598888919200036, 0.03038301867277133, 0.049326594168834045, 0.062353753078215925, 0.04865008295686839, 0.02531503062783122, 0.01982665512821398, 0.02142602019406127, 0.016218343159276085, 0.016662159482440805, 0.019552013073624627, 0.02731404415712639, 0.03733221397043526, 0.03476397692833934, 0.042665628526394314, 0.07124461991633307, 0.07918595955511999, 0.052109401770538, 0.05034252874388473, 0.11523666983704381, 0.17514935391069122, 0.212584518548823, 0.22784206769651413, 0.22513996884784132, 0.20660923593487324, 0.176297759179051, 0.1494363621655399, 0.14619287343929194, 0.16125162362235473, 0.17601028290426904, 0.18791176449657537, 0.1998096547946951, 0.20423873983528407, 0.1881474954197784, 0.14361244882588914, 0.07366956356896837, 0.030834843650700945, 0.10506098724023621, 0.16958657847664693, 0.21041208749719584, 0.23065940088474926, 0.23840344879287922 ], [ 0.038724657263863566, 0.07819972486617914, 0.1361592759183184, 0.1762908981534628, 0.19468087602424852, 0.19189675005947374, 0.17008977530588446, 0.1304748147532824, 0.07675258557784252, 0.03305121044472608, 0.049244686717523176, 0.06109859803599423, 0.04746405766411104, 0.024979535528954922, 0.019453096218713883, 0.020483902035235167, 0.01542085932701264, 0.016247934650009524, 0.020004314132949442, 0.028958098266580634, 0.03948345461109059, 0.03807867825593886, 0.046309283897661604, 0.07377839188106973, 0.08158425353894228, 0.05596201081202693, 0.0543319630165866, 0.1166891857389188, 0.17572951628214117, 0.2127691114476094, 0.22776310236820252, 0.22467467428714946, 0.20536812156547146, 0.17373573266248185, 0.14541263491388853, 0.1418046601651201, 0.15739506446993307, 0.1725775790242174, 0.18499933377261485, 0.19779812662444954, 0.20319019759610477, 0.1878222747279323, 0.14383409451612508, 0.0747232783869768, 0.03361305178221486, 0.10576229696545585, 0.1698578949570278, 0.21051541722744732, 0.23069315877819854, 0.23841231403696914 ], [ 0.042946634122311596, 0.07789465113620686, 0.1343874777255266, 0.17424795964427178, 0.1926855461781994, 0.18994422004909434, 0.16841275318952237, 0.12969758630240422, 0.07760876866392592, 0.03580924075045454, 0.049337820456399326, 0.05991082371289155, 0.04630719074798291, 0.024684271886893545, 0.019142277601288366, 0.01960477776896288, 0.014722558808068232, 0.015973821367504797, 0.02064206055667555, 0.03070944654439363, 0.041751321589422, 0.04153767345648677, 0.05019409400151641, 0.07661754436732059, 0.08429678411027858, 0.06016030370885602, 0.058664295190508926, 0.11836967280830805, 0.17640856795721302, 0.21299196587451102, 0.22769758780094873, 0.22421616557204138, 0.2041332704477867, 0.17116508568011762, 0.14132028139204258, 0.13730849186539956, 0.15343205428562262, 0.16902968704914098, 0.18198594281285974, 0.1957311277265057, 0.20213809131395138, 0.187555137444147, 0.14422275732833137, 0.07622897646304705, 0.037233743701213025, 0.10675852798463925, 0.17024589943826557, 0.21066344120437733, 0.23074154669733038, 0.23842502387396955 ], [ 0.04725210541222436, 0.07771635768077163, 0.13257014787622085, 0.17212234126227333, 0.1906052189159809, 0.1879072211391455, 0.1666675337475594, 0.12890662721014154, 0.07853015406474917, 0.03858892105488267, 0.049579926155324416, 0.0587842917695822, 0.04517228320261731, 0.02441109077785112, 0.01887608806312137, 0.018783012774953554, 0.014121627080509921, 0.01582953319592505, 0.02142273115217609, 0.03251654043021653, 0.044081876233378205, 0.045070343344819616, 0.05424082263518915, 0.07971442899927776, 0.08728257890551326, 0.06462130055440453, 0.06325341474661533, 0.12026193389872074, 0.17718263822400215, 0.21325202705135546, 0.22764565872925513, 0.2237658983041912, 0.20290871441720193, 0.16859373078844744, 0.1371664492718592, 0.13270707530288584, 0.14936429836756668, 0.16536670453014746, 0.17887220661543632, 0.19361063544232332, 0.20108409878086408, 0.1873462757854418, 0.14477505726639953, 0.0781543998593098, 0.041464145198000804, 0.10803750528052389, 0.17074821289690187, 0.21085545947035667, 0.2308043572200526, 0.23844152560812878 ], [ 0.05158882492183864, 0.07764955769613799, 0.13070097844644846, 0.16991084669049072, 0.18843811244986988, 0.18578323832412613, 0.16484915157384367, 0.12809188595143384, 0.07949046230056878, 0.04133995032132899, 0.049943989139191215, 0.05771266511513213, 0.04405273737579456, 0.02414422377308796, 0.01863882979594046, 0.018014511944189758, 0.013617556572325733, 0.01580388608737842, 0.022307799144835053, 0.0343386215251397, 0.04643136996048994, 0.04862494341420401, 0.058388779411855884, 0.08302445904005405, 0.09050200713810681, 0.06927776791507693, 0.06803081401988686, 0.12234873198162764, 0.1780473964037358, 0.2135480859961469, 0.2276074097307378, 0.22332534946866725, 0.2016986310343962, 0.16603016611376875, 0.13295924379702248, 0.1280034848027846, 0.14519383276472536, 0.16158898221625367, 0.17565909916948946, 0.1914389959265082, 0.20003002717095458, 0.18719563988284377, 0.1454864629443061, 0.0804617119993141, 0.04612205995951833, 0.10958420917399594, 0.17136178910098102, 0.211090569036017, 0.23088132218822194, 0.23846175106948944 ], [ 0.05591965236923053, 0.0776784717652605, 0.12877372164597992, 0.1676104892041141, 0.18618269380511895, 0.1835699457262776, 0.16295272194349367, 0.12724334264893097, 0.08046475602697113, 0.04402470318862014, 0.050402982521331983, 0.056689491225582714, 0.042942638741336574, 0.023870435079168705, 0.018417531961515406, 0.017296926920416365, 0.013211030021930997, 0.015885279264861715, 0.023264063957312574, 0.03614363430674406, 0.04876446834792337, 0.05216305473691553, 0.06259139268274105, 0.086506895771623, 0.09391772352227148, 0.07407573259855584, 0.07294232717458154, 0.12461219806322067, 0.17899810479739106, 0.2138787898744402, 0.2275828952965959, 0.2228960098369985, 0.2005073245315024, 0.16348347387421105, 0.12870784374739513, 0.12320118427766426, 0.14092304348975013, 0.15769713427718293, 0.1723479801919468, 0.18921894541809664, 0.198977816052324, 0.18710294356090948, 0.14635138319519397, 0.08311000751882902, 0.051074416637868325, 0.11138134216802731, 0.1720829580815247, 0.21136767197768008, 0.23097211469931062, 0.23848561708833144 ], [ 0.0602174833420071, 0.07778721497494573, 0.12678224699487775, 0.16521852557327368, 0.18383770711551578, 0.1812652333951576, 0.16097347663267003, 0.12635109886718757, 0.08142966452543653, 0.046614509040973376, 0.0509306237904015, 0.05570827994855843, 0.04183681516701701, 0.02357903446514584, 0.01820205530389303, 0.016629785327595313, 0.012903590708136712, 0.016062127874069746, 0.024263827522355775, 0.03790630130187744, 0.051052589933815395, 0.05565565650999033, 0.06681261772341696, 0.09012513799675437, 0.09749520776209855, 0.07897187692140412, 0.07794501202513344, 0.12703419641904382, 0.180029674257794, 0.21424265334968207, 0.22757213009269897, 0.22247937589812297, 0.19933920418602932, 0.16096331179849124, 0.1244226387336457, 0.11830405518803286, 0.13655468910841334, 0.15369204876737846, 0.16894062420709433, 0.186953631555611, 0.19792953941458152, 0.1870676723322862, 0.14736327575150665, 0.0860574947257788, 0.0562261467459579, 0.11340991857512812, 0.17290747707517917, 0.2116854851738241, 0.23107635151904252, 0.23851302607116748 ], [ 0.06446204878909453, 0.07796015247098162, 0.12472059718604997, 0.16273249036425805, 0.18140220275705496, 0.17886723468119187, 0.15890679919314157, 0.12540546153852655, 0.08236351572017153, 0.04908708825057034, 0.051501934084984526, 0.05476257378052659, 0.04073087465290224, 0.02326179391160605, 0.017985040640385558, 0.01601452534384043, 0.012697105866915812, 0.01632318920479002, 0.025284416662472924, 0.03960653936752133, 0.053272507273851966, 0.05908043406945905, 0.07102422792274328, 0.09384668109489024, 0.10120299534117773, 0.08393124879426951, 0.08300455013028328, 0.12959663827906928, 0.18113672117878063, 0.21463807077679214, 0.22757508940298196, 0.22207694136874925, 0.19819876012357823, 0.1584798958535612, 0.12011539171387797, 0.11331643280898637, 0.13209192783981188, 0.14957489852824501, 0.16543925247238273, 0.184646634586776, 0.19688740656401954, 0.18708909344481012, 0.14851476848755238, 0.08926319136538223, 0.06150910367157326, 0.11564983662606564, 0.17383058748744543, 0.21204255153171528, 0.23119359588807498, 0.23854386667259042 ], [ 0.06863787551669889, 0.0781822135008115, 0.12258304227301506, 0.16015023070215528, 0.17887556742248006, 0.17637435422639167, 0.15674825947861304, 0.12439702048567139, 0.0832463966066886, 0.05142480519019674, 0.0520936091501848, 0.05384600915596368, 0.039621223188706714, 0.02291280506335823, 0.017761751565262163, 0.015454415099108446, 0.01259307736600451, 0.01665775831973013, 0.02630743134981905, 0.04122822685616847, 0.05540523059587526, 0.062419951059682066, 0.07520383878075058, 0.09764288073246837, 0.10501269304012957, 0.08892540278154273, 0.08809321291562774, 0.13228174066864384, 0.18231362476713223, 0.21506332907705802, 0.2275917097457443, 0.22169018834316762, 0.1970905365950664, 0.15604397250838997, 0.11579943089126948, 0.10824315414135356, 0.1275383506739663, 0.14534715279667126, 0.16184656836689862, 0.1823019882823392, 0.1958537617374989, 0.18716626778272902, 0.149797788558953, 0.09268810383671891, 0.06687362647593613, 0.1180804022406606, 0.17484707634394153, 0.21243725253639667, 0.23132336069174125, 0.23857801455636762 ], [ 0.0727329659122287, 0.07843915894912341, 0.12036413193954126, 0.15746994162354536, 0.17625755528074827, 0.17378529665383846, 0.15449364725833017, 0.12331671927464555, 0.08406016128624072, 0.05361347666796362, 0.05268422903663115, 0.052952367875934346, 0.03850506483354746, 0.022528306266856007, 0.01752985149894389, 0.014954332512853122, 0.012591903596378502, 0.017055740231065108, 0.027317947544621853, 0.04275827038610505, 0.057435142732018385, 0.06566040643814292, 0.07933348600636608, 0.10148861871805503, 0.10889885750543936, 0.09393095073916527, 0.09318831979925886, 0.13507223146563951, 0.1835545835693073, 0.21551662112953526, 0.22762188965254518, 0.22132057815081552, 0.19601910282568594, 0.1536667786132925, 0.11148987509535345, 0.10308962223285097, 0.12289802252256725, 0.1410105898823407, 0.15816579699472047, 0.17992420031138448, 0.19483108228746635, 0.18729806339339186, 0.15120369491822913, 0.09629594552208731, 0.07228269358222976, 0.12068078450659006, 0.1759513406855642, 0.21286782193939738, 0.23146511195830108, 0.23861533323836104 ], [ 0.0767379276179256, 0.0787178015724414, 0.11805874573443476, 0.15469020222580193, 0.1735483204130893, 0.17109909608309887, 0.15213900479537149, 0.12215591936750667, 0.08478840294446031, 0.0556415536097571, 0.05325434118061062, 0.052075618383351605, 0.037380386392386424, 0.02210649970642026, 0.017289142749362003, 0.014520381136848346, 0.012692227828779106, 0.017507625969804638, 0.028303788006148245, 0.04418590785852337, 0.05934933958071655, 0.06879078349066577, 0.08339860553429883, 0.10536193514621485, 0.112838796273027, 0.09892845468548861, 0.09827108625486783, 0.13795150475524795, 0.1848536703541077, 0.2159960595144304, 0.22766549059867347, 0.2209695419977404, 0.19498902159075543, 0.1513599868924956, 0.10720389607075012, 0.0978618938134543, 0.11817553412192469, 0.13656731140340048, 0.1544007299181972, 0.1775182717710852, 0.19382197529470024, 0.18748317038703385, 0.15272341008032286, 0.10005348995997672, 0.07770800636868042, 0.12343039319335673, 0.1771374534155674, 0.21333236039404332, 0.23161827264812926, 0.2386556750031307 ], [ 0.0806453889361493, 0.07900618129816409, 0.1156621412912131, 0.15181001291236343, 0.1707484507719128, 0.16831514665271602, 0.14968065831254357, 0.12090645774632153, 0.085416402909159, 0.05749955375219814, 0.05378645157347938, 0.051209947127175484, 0.03624592919606756, 0.021647372136189537, 0.0170412837542612, 0.01415932682839664, 0.012890500635272613, 0.018004407506835192, 0.02925490397156417, 0.0455021908068522, 0.06113713182972313, 0.0718022621029352, 0.08738729986601647, 0.10924366547399411, 0.11681233293612317, 0.10390158892737214, 0.1033257676168528, 0.1409037323557563, 0.1862048845950643, 0.21649969044717354, 0.22772233807364844, 0.22063847147532187, 0.19400481573707787, 0.14913563506810393, 0.10296101931516227, 0.09256680041084515, 0.11337606838859852, 0.13201975874273614, 0.15055577613039328, 0.17508971548504412, 0.19282917247275821, 0.1877201169405641, 0.15434754758760805, 0.10393066119846915, 0.08312738550186564, 0.1263091770681194, 0.17839922921199178, 0.21382885083807593, 0.23178222669382958, 0.23869888188546518 ], [ 0.08444959871055846, 0.07929370001898378, 0.11317000070208103, 0.1488288341448035, 0.16785900397108103, 0.16543323429488105, 0.14711524831843026, 0.11956069834866713, 0.08593106687321551, 0.05917966439111693, 0.054264954488281364, 0.05034978072289077, 0.03510115053600226, 0.021152527286980295, 0.016789491629407696, 0.013877864150783563, 0.013180832529649366, 0.018537464529485147, 0.030162873751083067, 0.04669960052260954, 0.06278967060809554, 0.07468780919045644, 0.09128980717362307, 0.11311710344463759, 0.12080156373861396, 0.1088365076529482, 0.10833902243904128, 0.14391393817729115, 0.18760220194398072, 0.21702550774777338, 0.22779222277986919, 0.22032870902601492, 0.19307093293606056, 0.14700603679822843, 0.09878346148205999, 0.08721211817885892, 0.10850548631244572, 0.1273707326246802, 0.1466360206061053, 0.17264457258948837, 0.1918555232391334, 0.18800728612678766, 0.15606653230723816, 0.10790045143416144, 0.08852303158939129, 0.12929784784640655, 0.17973028926518936, 0.21435517442233332, 0.23195632324941368, 0.23874478670757582 ], [ 0.0881461472527011, 0.07957122139127866, 0.11057847538352657, 0.14574662724708629, 0.1648815452867897, 0.16245357008335654, 0.14443975882102356, 0.11811157779481248, 0.0863208557314563, 0.06067546162333483, 0.05467602522213685, 0.049489799998397956, 0.03394617731034651, 0.020625034078013617, 0.016538231036439865, 0.01368176183452593, 0.013555136393856257, 0.019098448955577985, 0.031020507953019503, 0.04777176340515929, 0.06429966755111192, 0.0774418909720429, 0.09509811406351841, 0.11696769931647712, 0.1247906221503374, 0.11372136693592126, 0.11329943732399894, 0.14696804212713166, 0.18903962023242699, 0.21757146669823788, 0.2278749019473702, 0.2200415384612601, 0.19219170902482183, 0.1449836729653784, 0.09469649580831967, 0.08180680969909636, 0.1035704394448503, 0.12262341704276512, 0.14264729204069737, 0.17018942681411192, 0.19090398584323282, 0.18834293328819712, 0.15787071141522255, 0.11193873649971335, 0.09388035063965168, 0.13237803833613163, 0.18112412377411488, 0.2149091267862701, 0.23213988110545264, 0.23879321416230304 ], [ 0.09173176786091487, 0.0798311414275259, 0.10788422996606212, 0.14256389797140806, 0.16181818832784542, 0.15937682556602062, 0.1416515455180573, 0.11655264600359676, 0.08657571634843171, 0.06198171046974377, 0.055007494182038645, 0.04862494730956509, 0.03278175445181322, 0.020069291936917023, 0.01629288727565996, 0.01357498584610844, 0.01400349041101832, 0.019679184485086702, 0.03182154565830298, 0.048713240029310496, 0.0656611867289404, 0.08006026954477588, 0.09880567051830752, 0.12078279593291835, 0.12876546050351878, 0.11854596200538593, 0.11819717019800625, 0.1500528798419293, 0.19051120167520405, 0.21813549765096732, 0.2279701007526447, 0.21977817563087187, 0.19137133036139034, 0.1430810624353329, 0.09072882607084226, 0.07636137399607347, 0.09857851888216675, 0.11778140923587598, 0.13859624169758716, 0.16773141573356057, 0.1899776164608403, 0.18872520367894768, 0.15975045462295348, 0.11602403993226731, 0.09918715020785958, 0.13553240508933675, 0.18257415132371088, 0.2154884344867209, 0.23233219322647525, 0.2388439819324114 ], [ 0.09520419264852137, 0.08006743537153176, 0.10508448597568819, 0.139281743735908, 0.15867163892301198, 0.15620417060110633, 0.1387483631242956, 0.11487810239561906, 0.08668701594270393, 0.06309422203093976, 0.05524871525864124, 0.04775042872366381, 0.031609190770500756, 0.019490912422500735, 0.01605942139184884, 0.01355893756942776, 0.014514617397343207, 0.0202715907386813, 0.032560425648124815, 0.04951936935895512, 0.06686949154760903, 0.08253985846379185, 0.1024071779029202, 0.12455140129424923, 0.1327136528369353, 0.12330145041224319, 0.12302368058589148, 0.15315620381849462, 0.19201111107465443, 0.218715519262689, 0.22807751382965058, 0.21953975934600475, 0.19061379568707876, 0.14131061225314634, 0.0869129324517279, 0.07088836244643006, 0.09353845478071816, 0.1128487580776683, 0.13449043563642515, 0.16527823811665715, 0.18907955618909483, 0.1891521501094305, 0.1616962428398693, 0.12013727954456423, 0.10443308128329457, 0.13874468617235153, 0.1840737744575926, 0.21609077139513752, 0.23253253136685004, 0.23889690183589665 ], [ 0.09856204528516793, 0.08027568565836443, 0.10217706636901575, 0.13590190569248417, 0.15544524287062628, 0.15293731434469057, 0.13572839207998305, 0.1130828284776221, 0.0866474825896628, 0.06400975159309762, 0.055390437127676335, 0.04686171281434636, 0.030430304998271335, 0.018896614562340677, 0.015844007913330068, 0.013631949076892273, 0.015076380784918847, 0.02086763561922056, 0.033232118660804014, 0.05018615467708967, 0.06792093412573824, 0.08487862006350065, 0.10589842950891103, 0.12826399435094082, 0.13662422001317084, 0.12798013928532878, 0.1277715240147755, 0.15626667068799596, 0.19353364993443703, 0.21930945124131193, 0.22819680686140034, 0.21932734265902676, 0.18992287804989694, 0.13968444836230076, 0.08328532776458147, 0.06540315444305927, 0.0884603865164225, 0.10783001421273052, 0.13033846297521118, 0.16283815633544485, 0.18821301590535597, 0.1896217503441069, 0.16369874501245404, 0.12426151758501502, 0.10960924515728727, 0.1419997240059755, 0.18561643094568786, 0.21671377489003332, 0.23274015072191157, 0.2389517809871956 ], [ 0.10180475892683695, 0.08045309484762364, 0.09916044236539419, 0.13242682709018178, 0.1521430383007164, 0.14957855019043306, 0.13259026498645077, 0.11116241770115486, 0.08645115353861159, 0.06472592679464254, 0.05542468290485403, 0.04595452790545601, 0.029247375101117353, 0.018294129512001826, 0.015652661388970767, 0.013789133420296076, 0.01567622748473015, 0.021459315610777723, 0.03383200911026401, 0.05071018156284011, 0.06881287799288627, 0.0870754925711434, 0.10927618906137732, 0.1319123599628915, 0.14048747636947606, 0.13257532054556564, 0.132434193910416, 0.15937381854105506, 0.19507328648462993, 0.2199152265066551, 0.22832761824093595, 0.21914188460319178, 0.18930208739401674, 0.1382142293037464, 0.07988662935089208, 0.05992514899152469, 0.08335623260080428, 0.10273029670031798, 0.1261500632276556, 0.16041999261940929, 0.1873812589877723, 0.1901319240241425, 0.16574888332151758, 0.1283817264626684, 0.11470791255708282, 0.14528346203621803, 0.18719564041823689, 0.2173550616850698, 0.23295429457215547, 0.2390084229642681 ], [ 0.10493251129253117, 0.08059848639456685, 0.09603378452859306, 0.12885971978170338, 0.1487698135092237, 0.14613080564575456, 0.12933309324158282, 0.10911320360393448, 0.08609333254210388, 0.06524119849892653, 0.055344641320496574, 0.04502485966369048, 0.02806309437065792, 0.017692108038950733, 0.01549086542154933, 0.014022605792745687, 0.016301544256630995, 0.022038661519897213, 0.0343558170853671, 0.051088560991940805, 0.06954364747804927, 0.0891303386118022, 0.11253809674685854, 0.1354894488577016, 0.14429489619989785, 0.13708114214144596, 0.1370059988471196, 0.16246803742962104, 0.1966246816965126, 0.22053080267999228, 0.2284695607909813, 0.21898424249279244, 0.18875463445826623, 0.13691094690903388, 0.07676131353241405, 0.05447963760945857, 0.0782402028608401, 0.09755538306412856, 0.12193627610545167, 0.15803311775941326, 0.18658758193480798, 0.1906805489109212, 0.1678378872549335, 0.13248457591544888, 0.1197223202032634, 0.14858292258728, 0.1888050461904256, 0.21801224314854054, 0.2331741988798697, 0.2390666289717145 ], [ 0.1079461712787057, 0.08071229506675152, 0.09279702074825115, 0.12520464119652677, 0.14533117123179654, 0.14259769834654185, 0.1259564945090385, 0.10693228738777565, 0.08557055714689817, 0.06555480948398434, 0.05514457108946397, 0.044068950995993915, 0.026880538453782684, 0.01710002177695245, 0.015363225946661962, 0.014322004658660157, 0.016939923426445597, 0.022597766238235024, 0.034799553538055264, 0.05131889266143018, 0.07011249906435846, 0.09104390909361014, 0.11568259520843492, 0.13898925865960057, 0.14803899793648007, 0.1414925064492017, 0.14148196625024714, 0.16554053548081848, 0.19818271142572572, 0.22115417283143593, 0.22862222353212908, 0.2188551648804475, 0.18828339664811924, 0.13578471963187283, 0.0739569853867421, 0.049100816976490144, 0.07312951533985149, 0.09231183290401677, 0.11770961739905447, 0.15568743069293872, 0.18583529296506224, 0.19126547627370244, 0.16995733730846949, 0.13655824363616625, 0.12464652144338925, 0.15188617183100087, 0.19043845223315703, 0.2186829399864978, 0.23339909679956738, 0.2391261989903887 ], [ 0.11084725313748442, 0.08079654777119705, 0.08945090474720478, 0.12146658469613864, 0.14183360042136067, 0.1389835996704927, 0.12246062186481575, 0.10461756628039982, 0.08488057685184215, 0.06566677784164562, 0.054819719251534525, 0.043083306283040766, 0.025703148367766923, 0.01652804626259607, 0.015273176862277435, 0.014675186595865919, 0.0175793510517628, 0.023128831048838703, 0.03515950332536135, 0.05139924516482051, 0.070519611441787, 0.09281781808210969, 0.11870886998632765, 0.1424067324605595, 0.15171324378997478, 0.14580498923875396, 0.14585776598604167, 0.16858330247173878, 0.19974248486795146, 0.22178337542806892, 0.2287851734900348, 0.21875528526232207, 0.18789088654776442, 0.13484458570278343, 0.07152298651243118, 0.043836737804391894, 0.06804540984144403, 0.08700716028077524, 0.11348428450327941, 0.15339332725416488, 0.18512768872683885, 0.19188454527353427, 0.1720991992152385, 0.14059224906644915, 0.1294752750961422, 0.15518227650413505, 0.19208985535380216, 0.21936479617888638, 0.23362822306596429, 0.2391869329043636 ], [ 0.11363787536277593, 0.08085483455769346, 0.08599710013156144, 0.11765158696048444, 0.13828455666287615, 0.13529370771189775, 0.11884619574252504, 0.10216776429250685, 0.08402234316853466, 0.0655778933310982, 0.05436625380124486, 0.04206470210814932, 0.024534735710475236, 0.015986910941703094, 0.015222768282915008, 0.015068961102723462, 0.01820833741530332, 0.023624227476997835, 0.035432232244357605, 0.05132815083921012, 0.07076609211822249, 0.09445452537467455, 0.1216168003242393, 0.14573767185805056, 0.15531195268727604, 0.1500147742640573, 0.15012964896534206, 0.171589072232132, 0.20129935954343744, 0.22241650343918995, 0.22895795753273332, 0.2186851166144478, 0.1875792237195101, 0.13409830454359087, 0.0695082075564876, 0.03875754509044082, 0.06301459248674683, 0.08165007808422314, 0.1092763945932168, 0.15116165627239936, 0.18446802929821632, 0.19253559622517877, 0.17425584967964625, 0.14457730880317626, 0.13420396157443426, 0.15846125587694143, 0.19375347273670424, 0.2200554920754011, 0.23386081822596236, 0.23924863159659088 ], [ 0.11632072220732954, 0.08089226862843199, 0.08243828701441938, 0.1137668569555048, 0.13469255237543706, 0.1315341317305672, 0.11511454017283938, 0.09958246734655571, 0.08299601291046117, 0.0652897260346968, 0.05378121080652065, 0.04101020685942953, 0.023379517721624166, 0.015487699738512412, 0.015212563824541295, 0.015489762915529868, 0.018816009823098192, 0.024076572465857156, 0.03561461546653889, 0.05110461410078425, 0.0708539993420786, 0.0959573242332377, 0.12440691729424645, 0.14897866183112007, 0.1588302245155927, 0.1541185997577436, 0.1542943971200921, 0.17455128485599533, 0.2028489530474474, 0.2230517125678597, 0.2291401042298514, 0.21864504683399544, 0.1873501103958305, 0.13355217563243485, 0.06795810232618833, 0.03396911477094532, 0.05807130325352612, 0.07625085051147137, 0.10510425699501554, 0.14900366117950492, 0.18385951171156512, 0.1932164826483388, 0.17642009460992408, 0.14850521145935425, 0.13882851865457196, 0.16171403154177105, 0.19542376505813147, 0.2207527565749645, 0.23409613268409007, 0.23931109800516542 ], [ 0.11889900630725932, 0.08091543333515587, 0.0787783012053487, 0.10982093212110097, 0.13106725787720064, 0.12771199058299781, 0.11126762532418556, 0.09686216526155939, 0.08180296648429466, 0.06480464764790983, 0.05306245636582825, 0.03991721194327452, 0.022242191541437053, 0.015041587319890965, 0.01524166322816795, 0.01592420667778205, 0.019392184664994642, 0.024478815592347235, 0.0357038859220087, 0.05072813298705476, 0.07078637881145959, 0.09733033223404455, 0.12708036693985622, 0.15212700523885808, 0.16226387389798685, 0.15811371401428204, 0.15834928201510012, 0.17746404940113555, 0.20438715181495395, 0.22368722858997633, 0.2293311257261374, 0.2186353351485033, 0.18720481160484007, 0.1332108840800385, 0.06691112595538157, 0.029634386842526263, 0.05326026568136717, 0.0708218110823963, 0.10098867834409739, 0.14693090537607706, 0.18330524229002207, 0.19392508204820993, 0.17858518081922778, 0.15236870962393642, 0.1433453914942789, 0.16493237684192183, 0.19709545543644516, 0.22145437832940618, 0.23433343053406058, 0.23937413813274233 ], [ 0.12137643129345035, 0.08093231341573119, 0.07502232037366345, 0.10582386870224775, 0.12741961416528844, 0.12383552807428613, 0.10730811906101667, 0.09400830378738317, 0.08044584357478658, 0.06412586670886204, 0.05220866414465569, 0.03878347791629787, 0.0211280587816301, 0.014659503347952995, 0.015307852253578997, 0.016359511590132745, 0.01992743193181216, 0.024824338057842933, 0.03569770228606665, 0.0501987345297033, 0.07056731523780298, 0.0985784835187497, 0.1296388766828132, 0.15518066509111134, 0.16560937194925957, 0.1619978379193954, 0.162292030024679, 0.18032210752471764, 0.2059101171514283, 0.22432135379324503, 0.22953051962235385, 0.21865610954387996, 0.18714414018421932, 0.13307738144270692, 0.06639509565454257, 0.02600066174122483, 0.04864082262624987, 0.06537813949449535, 0.09695329382008572, 0.14495517984573386, 0.1828082081355438, 0.19465930539269383, 0.18074480211179186, 0.1561614266020629, 0.14775149303812413, 0.1681088671788595, 0.1987635445080199, 0.22215821592784393, 0.23457199315247346, 0.23943756200235197 ], [ 0.12375715357061916, 0.0809522071625114, 0.07117711826965484, 0.10178747459205315, 0.12376195780730471, 0.11991424860877128, 0.10323945123274353, 0.09102335087638135, 0.07892859942644989, 0.06325748013532312, 0.05121930987337599, 0.03760719971428003, 0.020043212947850168, 0.014351731939115608, 0.015407866724591138, 0.016783811897958637, 0.02041314211204497, 0.025107064272239518, 0.03559423736286372, 0.04951702559085716, 0.07020199931788901, 0.09970752093089258, 0.13208472364331572, 0.15813821305801185, 0.16886379467735196, 0.1657691327883105, 0.1661207925001121, 0.18312079832978762, 0.20741428877911536, 0.22495247251856532, 0.22973777085716843, 0.21870736524871784, 0.18716844703424088, 0.1331528087352487, 0.0664241842670237, 0.023412131618408306, 0.04429247644997741, 0.059939052267846314, 0.0930249089239089, 0.14308839193528908, 0.18237124815668904, 0.19541710527900574, 0.18289310059865918, 0.1598777757795461, 0.1520441720178086, 0.1712368319947081, 0.20042332193567075, 0.2228622070332347, 0.2348111225341619, 0.23950118455360803 ], [ 0.1260457426775193, 0.0809856158945907, 0.06725141830803502, 0.09772559455393218, 0.12010815753578144, 0.11595907691299193, 0.09906589582498465, 0.08791088278031377, 0.07725658596571487, 0.06220454469283416, 0.0500946851313983, 0.03638709646263131, 0.018994802397579284, 0.014127476155368907, 0.015537745752183491, 0.017186382295259227, 0.02084160308030965, 0.02532158801995052, 0.0353922889260302, 0.04868426202443775, 0.06969681104785583, 0.10072398663000047, 0.13442070382662455, 0.16099878295510886, 0.17202477689434328, 0.16942617225637102, 0.16983411972590573, 0.1858560245711984, 0.208896386141224, 0.22557905581549628, 0.22995235358421717, 0.21878896429834827, 0.18727761684138697, 0.13343646631615685, 0.0669972610107387, 0.0222464297850673, 0.040321547718381034, 0.054529669852983555, 0.08923382249655672, 0.1413424348685269, 0.18199702406699028, 0.19619648280549923, 0.18502466400560008, 0.16351289067541983, 0.15622118650808484, 0.17431030890071597, 0.20207037466152186, 0.2235643764563799, 0.23505014435220334, 0.23956482647408747 ], [ 0.1282471398285975, 0.08104410711537197, 0.06325639363796857, 0.09365445898105183, 0.11647376082161753, 0.11198254585841039, 0.09479267814996054, 0.08467569754220772, 0.07543666331891657, 0.06097317358843978, 0.04883593409048695, 0.03512253328085622, 0.0179913785063795, 0.013994443095822404, 0.015693243082774425, 0.017557809912497373, 0.02120609330507414, 0.025463316497573656, 0.03509141655305778, 0.047702440623202176, 0.06905942056302718, 0.1016352098176886, 0.13665010136072508, 0.1637620281693563, 0.17509047067896236, 0.17296791725500768, 0.17343093774376764, 0.1885242202792697, 0.21035340769629285, 0.22619966523155122, 0.23017373303899713, 0.21890063618744893, 0.1874710693749454, 0.13392583251324697, 0.06809801810732272, 0.022726577203351223, 0.036867130400845986, 0.04918401269043326, 0.08561408158474752, 0.13972903845144088, 0.18168799181934192, 0.1969954931850976, 0.18713451965066646, 0.16706256398404043, 0.16028068153674188, 0.17732400018758798, 0.2037005922130031, 0.22426284316529316, 0.23528841072913612, 0.23962831496147483 ], [ 0.13036661439337116, 0.08114014817699375, 0.05920638550553814, 0.08959310789669292, 0.11287614666881902, 0.10799901635274368, 0.09042611723863239, 0.08132396627251717, 0.07347734890611617, 0.059570665418985015, 0.047445118818348425, 0.0338136853097815, 0.01704332909362354, 0.01395852422391792, 0.015870265629812908, 0.0178901415654039, 0.021500997346862838, 0.025528637006730144, 0.034692109772862786, 0.04657442048909209, 0.0682989077529773, 0.10244929020631463, 0.1387766571504663, 0.16642808218341776, 0.17805950758856548, 0.1763936933275444, 0.17691052733708765, 0.1911223197975331, 0.21178262842270676, 0.2268129557621332, 0.23040136739066522, 0.21904197960519337, 0.1877477663254207, 0.13461662984307787, 0.06969684974600561, 0.024753862295461854, 0.03410116246519591, 0.04394990954267401, 0.08220359173949746, 0.13825960255296793, 0.18144637396600483, 0.19781225015454287, 0.18921812568492652, 0.1705231941405528, 0.1642211696351407, 0.18027323178933327, 0.20531016936106558, 0.22495582623917296, 0.23552530270940197, 0.23969148441289204 ], [ 0.13240971820513078, 0.08128690824218421, 0.05511995029723095, 0.08556390067364869, 0.10933467786700794, 0.10402493261299887, 0.08597381801086425, 0.0778634366307687, 0.07138901325214926, 0.05800567538988101, 0.045925321532966315, 0.03246175826670926, 0.01616337522757954, 0.014023645879962531, 0.016065312962348643, 0.018177030101589664, 0.021721950052079726, 0.025515112833027858, 0.03419599502862347, 0.045304083516997995, 0.06742590168543817, 0.10317507582889203, 0.1408045364583944, 0.16899752151712275, 0.180930963953737, 0.179703169709985, 0.18027250463264266, 0.19364772819024606, 0.21318159573980164, 0.22741767799397175, 0.23063470957417098, 0.21921246523224208, 0.1881062235214345, 0.13550293479160488, 0.07175399300349646, 0.027986213528810103, 0.032212911415153644, 0.03889714483824447, 0.07904397408698821, 0.1369450162700959, 0.1812741334456442, 0.19864492924875263, 0.19127136011060322, 0.1738917381589433, 0.16804151349925234, 0.18315391466173814, 0.20689560641565438, 0.22564164978625023, 0.23576023242641855, 0.2397541770386663 ], [ 0.13438223771240318, 0.0814980279039421, 0.051021405405667304, 0.08159311711707641, 0.10587084168300531, 0.10007911442381569, 0.08144493440301498, 0.07430370871912374, 0.06918413392328443, 0.05628844228942562, 0.044280796288248846, 0.031069285665630254, 0.015367067454215073, 0.014191839212232344, 0.016275898194799666, 0.018413899040977982, 0.021866016936814125, 0.025421716880622544, 0.03360609161326921, 0.04389654804328263, 0.06645274022109247, 0.10382213374638327, 0.14273829504218055, 0.17147133054042382, 0.183704328704828, 0.1828963397343219, 0.1835168029028658, 0.19609829295057427, 0.21454812403790127, 0.22801267948000073, 0.23087320909843767, 0.21941143956463702, 0.18854452823672624, 0.13657732468352862, 0.07422320047556556, 0.03204980436028657, 0.03136879724686909, 0.03413089318673631, 0.07618002944942819, 0.13579546713210136, 0.18117294929657277, 0.19949177002185142, 0.19329050801794184, 0.17716566968501266, 0.1717409101403937, 0.18596250846588394, 0.20845370742660888, 0.22631874685355072, 0.2359926449609562, 0.23981624339861807 ], [ 0.13629014409900198, 0.08178735800540973, 0.04694313361872706, 0.07771164400884045, 0.10250836222750757, 0.09618308452077255, 0.07685053462144283, 0.07065661190185149, 0.06687762141220722, 0.05443108941920782, 0.042517188648414105, 0.029640531031337493, 0.014673148417992582, 0.01446353154089259, 0.016500936701077634, 0.01859814098017743, 0.02193191984868267, 0.025249113927271586, 0.032927129863443066, 0.042358456010577104, 0.065393648885129, 0.10440071217368341, 0.1445828435810688, 0.17385086772620126, 0.18637947327898263, 0.18597350221531403, 0.18664365525048324, 0.19847227692717387, 0.2158802879954958, 0.22859690538778207, 0.23111631382652253, 0.21963812971617544, 0.1890603611861421, 0.1378310534141203, 0.0770552528372888, 0.03665552611844487, 0.031655666010129646, 0.029812654161684823, 0.0736586538810432, 0.13482024614494567, 0.18114419477807434, 0.2003510773060197, 0.19527224741668206, 0.1803429413760548, 0.1753188760609229, 0.1886959874055184, 0.2099815765396339, 0.22698566236411818, 0.23622201989059888, 0.2398775428597631 ], [ 0.13813954160381642, 0.08216867191626884, 0.042929028758253135, 0.07395571808779967, 0.0992732604118432, 0.09236142299761421, 0.07220411494107856, 0.06693672294105307, 0.06448723293082519, 0.05244802378573806, 0.04064185103093638, 0.028182034556215388, 0.014103557147454088, 0.014838009157403544, 0.01674109244640516, 0.0187293622359969, 0.02192031885791931, 0.025000004715228983, 0.03216594831237055, 0.04069836313823953, 0.06426493575979432, 0.10492169253882132, 0.1463434102149261, 0.1761378330074577, 0.18895662324064955, 0.1889352435629523, 0.18965357793439827, 0.2007683323820489, 0.21717641484798222, 0.22916939846688428, 0.23136347172384544, 0.21989164913839448, 0.18965102271348827, 0.13925424687824364, 0.08020084843601973, 0.041608360476520743, 0.033043090009772264, 0.026186956014097672, 0.07152707196725706, 0.13402755576492528, 0.18118891834889705, 0.20122122160632241, 0.19721363398042027, 0.1834219508657105, 0.17877523310787122, 0.19135180804636023, 0.21147661273786048, 0.22764105512358054, 0.23644787253299662, 0.23993794397510917 ], [ 0.13993661437063193, 0.08265535856720065, 0.03903959543965913, 0.07036765492032175, 0.09619382879325981, 0.08864213023671617, 0.06752233188587763, 0.06316208258608202, 0.06203409098753544, 0.050356465423072885, 0.03866429517500269, 0.02670335774730113, 0.013682772234879332, 0.01531396503383074, 0.016999071569603893, 0.01880968310825561, 0.02183416300126034, 0.024679546948659, 0.031331989594091794, 0.03892727478085411, 0.06308519545631235, 0.10539653003373621, 0.148025501103473, 0.17833423598491466, 0.19143633132026233, 0.19178242042708185, 0.19254735415640664, 0.20298547609348508, 0.21843507575919938, 0.2297292983831363, 0.2316141325706727, 0.2201710041861286, 0.19031346259812448, 0.14083610881360273, 0.08361268195258731, 0.046781658912805744, 0.03539721521990714, 0.023593767917838928, 0.06983034108714148, 0.13342432883980743, 0.18130782790402206, 0.20210063873421957, 0.19911208497215063, 0.18640150969801017, 0.18211009474695428, 0.19392787893911603, 0.2129365031804915, 0.22828369894315978, 0.23666975488833888, 0.2399973247839861 ], [ 0.14168757225085943, 0.08326010659264899, 0.03535921687552954, 0.06699642547783399, 0.09330047965390337, 0.0850569636482355, 0.06282605855721775, 0.059355190643492615, 0.059543321428983595, 0.04817714726659443, 0.03659684397226143, 0.02521809487616874, 0.01343621587002496, 0.01589003602392193, 0.017279849213493573, 0.018844098501134936, 0.021679123049647975, 0.024295868400840255, 0.030437916181907457, 0.03705938886564509, 0.061875509621857276, 0.10583718133374541, 0.14963485899305057, 0.18044236480030176, 0.1938194516365211, 0.19451614273172002, 0.19532601817638917, 0.2051230654226622, 0.21965507643457494, 0.23027584046946073, 0.23186774963509388, 0.22047510144691712, 0.19104431285319018, 0.142565128378863, 0.08724673854932229, 0.05209247608419378, 0.038533552201134566, 0.022407559261263595, 0.06860824763333039, 0.133016066988481, 0.1815012786088879, 0.20298782878479438, 0.20096536257653827, 0.1892808147214801, 0.1853238525681606, 0.1964225318715612, 0.21435921533163715, 0.22891248293041583, 0.2368872562889747, 0.24005557303506014 ], [ 0.1433985960665768, 0.08399459255194708, 0.032005519588053734, 0.06389784410423892, 0.09062541739480215, 0.08164168994682994, 0.05814192527821714, 0.05554438878498095, 0.057044816783658206, 0.0459352336716195, 0.03445557579849499, 0.023745229473815948, 0.013387688143394307, 0.016565251303685524, 0.017590809483749435, 0.018840895270872883, 0.021464117076311934, 0.023860683291404557, 0.02950036337787619, 0.035113132710807654, 0.060659623461575995, 0.1062560183812853, 0.15117741985574776, 0.18246475554975908, 0.1961071149191103, 0.19713775699737981, 0.19799083966186357, 0.2071807752697944, 0.22083544710314706, 0.2308083539441121, 0.2321237813027392, 0.22080275574448976, 0.19183992285708626, 0.14442928193845753, 0.09106294737655068, 0.057484908244591626, 0.04226821371998353, 0.02285482978504207, 0.06789194514027412, 0.1328067066649069, 0.1817692645962106, 0.20388135456298986, 0.20277155682829937, 0.19205942152461816, 0.18841716288731403, 0.19883449458493682, 0.21574298805504588, 0.22952641100225302, 0.23710000376636772, 0.24011258633385443 ], [ 0.14507578291588363, 0.08486918791738629, 0.029138431640975286, 0.06113401224948454, 0.08820208416943315, 0.07843616339575359, 0.05350458397148095, 0.05176577202705516, 0.0545741091431095, 0.043661507446738204, 0.03226169866135444, 0.02231089811717456, 0.013556297448163423, 0.017339345447296366, 0.017941771805143277, 0.018812107528529732, 0.02120193095706751, 0.02339001040139536, 0.02854083224537043, 0.03311261177387288, 0.05946406715698096, 0.10666572747061383, 0.15265926774192934, 0.18440416216238747, 0.19830070459212606, 0.19964882988237517, 0.2005433082082952, 0.2091585758542893, 0.2219754319850604, 0.23132625964767237, 0.23238169265946226, 0.2211526987202502, 0.19269639615076412, 0.146416223016904, 0.09502537327399369, 0.06291988088551528, 0.046445117208438, 0.024847466202978844, 0.0677008991496154, 0.13279852019666805, 0.1821114147070844, 0.204779839562592, 0.20452906829577966, 0.1947372195703877, 0.19139093334955024, 0.2011628648037064, 0.2170863218342614, 0.23012460067710525, 0.23730766214759177, 0.2401682722172128 ], [ 0.14672509216470023, 0.08589269991503427, 0.026960654193371528, 0.058771562991033505, 0.08606433540262574, 0.07548410409484209, 0.04896004025890961, 0.048065788180680476, 0.05217329288033825, 0.04139385957127238, 0.030043548740503315, 0.020950536133754583, 0.013953855407791546, 0.018212922403664993, 0.018344872907813004, 0.018773965590400874, 0.02090991554669754, 0.022904962711021395, 0.027586688742165695, 0.031089617452819823, 0.05831817821262517, 0.10707919335145062, 0.1540865880624482, 0.1862635267123536, 0.20040183361512426, 0.20205113190031157, 0.20298511799098357, 0.21105671126269296, 0.22307447835136252, 0.23182906735014994, 0.2326409570231721, 0.22152358789216295, 0.1936096282448441, 0.14851345601215002, 0.09910211058978942, 0.068369021754017, 0.05094222688150852, 0.028052883893818218, 0.06804078819987383, 0.13299205742513734, 0.18252699236825506, 0.20568196559848032, 0.20623659065360003, 0.1973144087515614, 0.1942463094731965, 0.20340708544350372, 0.21838796826285864, 0.23070628120481743, 0.23750993389533506, 0.2402225481577039 ], [ 0.14835229281586063, 0.08707216012136701, 0.02569301463958822, 0.0568782636545766, 0.08424532468525263, 0.07283241777961665, 0.044570499325375004, 0.044504644058081355, 0.04989185853057649, 0.039179058760202626, 0.02783946348746858, 0.019711129454002108, 0.014583754415821193, 0.01918748198674732, 0.018814276153843804, 0.01874725546480473, 0.020610702218808268, 0.022432523468155146, 0.02667216120240815, 0.029086339942658614, 0.05725396727615746, 0.10750936869883636, 0.15546561959068486, 0.18804595017008258, 0.2024123220095168, 0.20434662129203, 0.20531815252887947, 0.2128756787175461, 0.22413222527399104, 0.23231637267904817, 0.23290105742094555, 0.22191401608773675, 0.19457534481011113, 0.15070849084682975, 0.10326500734934202, 0.07381095703623514, 0.055667585743909544, 0.032100807857097825, 0.0689028720814523, 0.13338613133034824, 0.18301489960498277, 0.20658647018809398, 0.2078930932574644, 0.19979147714274925, 0.1969846610983226, 0.2055669208787687, 0.21964691893590588, 0.2312707910936602, 0.2377065587068968, 0.24027534150146204 ], [ 0.14996291297530365, 0.08841267194817748, 0.02551185781748154, 0.055517791705407986, 0.08277611905120495, 0.07052988785437403, 0.040421148104416806, 0.04116042707103267, 0.047787173844014, 0.037074636766712875, 0.025701772281620232, 0.018652753061950893, 0.01544172695609257, 0.02026533549805056, 0.019365692749604424, 0.01875745509556763, 0.020332810130192468, 0.02200613272594363, 0.025839099034589297, 0.027158824501905175, 0.05630575947284657, 0.10796913006706013, 0.15680260554602551, 0.18975466362969376, 0.2043341750238614, 0.20653742804716088, 0.2075444695562975, 0.21461620852934077, 0.2251484921556941, 0.2327878537183765, 0.23316148800749922, 0.22232252114683715, 0.19558913966940314, 0.15298897716185128, 0.10748930980962912, 0.07922902955164225, 0.06055261972528687, 0.03670174262256587, 0.07026498988899395, 0.13397784841876378, 0.18357368509733368, 0.20749214377227135, 0.20949780381710573, 0.20216917977017862, 0.1996075687245984, 0.2076424341681207, 0.22086239386159343, 0.23181757509420892, 0.23789731288891694, 0.24032658934339737 ], [ 0.15156219214368044, 0.08991732406629212, 0.026473128340935688, 0.05474309631184294, 0.08168412427479456, 0.06862510937563757, 0.03662876227170012, 0.03813324677815596, 0.045924180678893416, 0.035150437895902956, 0.023701894458650206, 0.017847698566352547, 0.01651800316995425, 0.0214494430003096, 0.020015724357485703, 0.018834463111629788, 0.020110919588289616, 0.021665783256516073, 0.025137068486211916, 0.025380822880758158, 0.05550954196406683, 0.10847112233132765, 0.15810374418789966, 0.19139300007651744, 0.2061695619130834, 0.20862583808391671, 0.20966628601089776, 0.21627924470227658, 0.22612326712218936, 0.2332432673273197, 0.23342175542106014, 0.2227475957907782, 0.1966465120648817, 0.15534281784207563, 0.11175328523367165, 0.08460986050710856, 0.065545945300542, 0.04165908491395133, 0.0720939299322413, 0.1347626819664263, 0.18420155610063543, 0.2083978268588421, 0.2110501912493067, 0.2044485182581774, 0.20211680973926482, 0.2096339651514454, 0.22203382950102724, 0.23234618069957924, 0.23808200852559575, 0.24037623834407923 ], [ 0.15315503704821778, 0.09158717195312997, 0.02848755891046056, 0.05458958198526689, 0.08099146552634912, 0.06716365317895409, 0.0333500465913663, 0.03554737944795081, 0.0443737162770024, 0.03348890120492258, 0.02193560208785838, 0.017374747174173987, 0.01779990028858443, 0.02274320433293906, 0.020781070951451434, 0.01901171551118646, 0.01998547591663461, 0.021457201943309488, 0.024622168064250445, 0.023846731051026707, 0.05490196463551853, 0.10902759457363652, 0.1593751394110546, 0.19296436678066048, 0.20792079532440488, 0.21061427760639673, 0.21168596315608865, 0.2178659261723011, 0.22705669535206136, 0.233682445225711, 0.23368138007265393, 0.22318769755641418, 0.19774290273862982, 0.15775826257773237, 0.11603785684192433, 0.08994242146305795, 0.07060854785213125, 0.04684461953688563, 0.07434860657834964, 0.1357345837370053, 0.18489639397157392, 0.2093024071648227, 0.21254994878142883, 0.20663072124298262, 0.20451434454886294, 0.21154210934760986, 0.22316086653437467, 0.23285625422078524, 0.23826049245892827, 0.24042424449290312 ], [ 0.15474598169317444, 0.09342128477149966, 0.03137190747365253, 0.05506996729544765, 0.08071352226393139, 0.06618465671577395, 0.030782757611891753, 0.03354729869121581, 0.043208845528178205, 0.03218256184953422, 0.02052521116818551, 0.017307010139158172, 0.01927402010036543, 0.02415023187164411, 0.021677682758994146, 0.019324542873099204, 0.020001231680261158, 0.021429671876593722, 0.0243539059062151, 0.022670556935475882, 0.054518982613529075, 0.10965023131803253, 0.16062275188603892, 0.1944722184204603, 0.20959031129719835, 0.21250529766697127, 0.21360599186359477, 0.21937756866288413, 0.22794906741364693, 0.23410528989161605, 0.23393989736483853, 0.22364125869762808, 0.19887372843306103, 0.16022398281149383, 0.1203262686648355, 0.09521742186777336, 0.07571028124921762, 0.052174142528913926, 0.07698339758942645, 0.13688612779100345, 0.1856557729726043, 0.21020481682492262, 0.21399697736639556, 0.2087172254708783, 0.20680230263848226, 0.213367697595424, 0.22424333744279953, 0.2333475364948561, 0.2384326451000206, 0.2404705728223923 ], [ 0.15633915224788164, 0.09541685036996383, 0.034923963583761444, 0.05617251951831232, 0.08085783410340887, 0.06571729750822662, 0.029145570802797345, 0.032281973894086324, 0.04249891729951106, 0.031327031759418866, 0.019611860430462206, 0.017695826027368283, 0.020927689715591127, 0.025674127239599387, 0.022719957995753166, 0.01980779685239119, 0.020204448404240523, 0.021632286338792946, 0.02438985763291029, 0.021976107111582346, 0.05439419930625843, 0.1103499838749934, 0.1618523513313967, 0.19592003105346145, 0.21118064989551935, 0.21430155896760858, 0.21542897808769373, 0.22081564715006288, 0.2288008076723843, 0.23451177031427284, 0.23419685883595795, 0.22410669596153068, 0.20003441448770976, 0.16272912982733362, 0.12460378773099243, 0.10042689625170388, 0.08082739895199553, 0.057590782483401354, 0.07995112144665963, 0.13820867864815087, 0.1864769819712128, 0.21110402972552897, 0.21539136946219556, 0.21070965751955265, 0.20898296859017718, 0.21511177639281764, 0.22528125398776294, 0.23381985828184348, 0.23859837909086884, 0.24051519707866126 ], [ 0.15793823731019976, 0.09756932787056981, 0.03896888772133157, 0.05786328194640848, 0.08142355945100803, 0.06577781211611702, 0.028623771197117048, 0.03187500544089654, 0.04230188852886723, 0.031008771535731842, 0.01933009510215079, 0.018558483071475108, 0.022749672499525794, 0.027318277933227976, 0.02392008752078445, 0.020493054212269872, 0.02063887087692556, 0.022109014507370288, 0.024778781225029762, 0.021875037690672342, 0.054557057364297445, 0.11113690721431371, 0.16306947053337814, 0.1973112770624029, 0.2126944365010234, 0.21600581693860607, 0.2171576285668297, 0.2221817789334925, 0.229612462826732, 0.23490191764338153, 0.2344518332260817, 0.22458242015265525, 0.2012204252779278, 0.16526337794371085, 0.1288574449295344, 0.10556392052754802, 0.08594082843651772, 0.06305471107741671, 0.08320536161186987, 0.1396925754382358, 0.18735704860840005, 0.21199905901457194, 0.21673339322237892, 0.21260981609969423, 0.21105876809830726, 0.21677558890021137, 0.22627479466222733, 0.2342731354050472, 0.23875763783609072, 0.24055809935318315 ] ] }, { "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.8575 (SEM: None)
lr: 1.27923e-05
momentum: 1", "Arm 11_0
accuracy: 0.622667 (SEM: None)
lr: 1.07914e-05
momentum: 0", "Arm 12_0
accuracy: 0.887167 (SEM: None)
lr: 7.02368e-05
momentum: 0.253302", "Arm 13_0
accuracy: 0.133333 (SEM: None)
lr: 1e-06
momentum: 0", "Arm 14_0
accuracy: 0.849833 (SEM: None)
lr: 0.000139305
momentum: 0", "Arm 15_0
accuracy: 0.828167 (SEM: None)
lr: 5.31515e-06
momentum: 1", "Arm 16_0
accuracy: 0.827 (SEM: None)
lr: 1.94888e-05
momentum: 1", "Arm 17_0
accuracy: 0.874 (SEM: None)
lr: 3.94816e-05
momentum: 0.566309", "Arm 18_0
accuracy: 0.810667 (SEM: None)
lr: 7.49998e-05
momentum: 0", "Arm 19_0
accuracy: 0.883667 (SEM: None)
lr: 2.36692e-05
momentum: 0.763182", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 20_0
accuracy: 0.8355 (SEM: None)
lr: 0.00028621
momentum: 0", "Arm 21_0
accuracy: 0.881 (SEM: None)
lr: 5.71599e-05
momentum: 0.448405", "Arm 22_0
accuracy: 0.888167 (SEM: None)
lr: 2.81099e-05
momentum: 0.805158", "Arm 23_0
accuracy: 0.405333 (SEM: None)
lr: 0.00083796
momentum: 0", "Arm 24_0
accuracy: 0.873667 (SEM: None)
lr: 5.07493e-05
momentum: 0.337101", "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.9055 (SEM: None)
lr: 8.29759e-05
momentum: 1", "Arm 8_0
accuracy: 0.8565 (SEM: None)
lr: 4.7999e-05
momentum: 1", "Arm 9_0
accuracy: 0.486167 (SEM: None)
lr: 0.000150412
momentum: 1" ], "type": "scatter", "x": [ 2.6e-05, 1.2792253586029109e-05, 1.0791354519942786e-05, 7.02367810083068e-05, 1e-06, 0.00013930499592309077, 5.315153899164597e-06, 1.948875013008121e-05, 3.948164185366969e-05, 7.499984379052125e-05, 2.3669188411043803e-05, 0.00995509203921593, 0.0002862101432859929, 5.7159923070345386e-05, 2.8109928240713984e-05, 0.0008379595262357745, 5.0749255145850375e-05, 8.95174165429637e-05, 1.7701150611603212e-06, 0.10173960742426996, 0.0170037365367624, 3.461617457828348e-05, 8.29759076064034e-05, 4.799901126633236e-05, 0.0001504124168940844 ], "xaxis": "x", "y": [ 0.58, 1.0, 0.0, 0.25330199194725567, 0.0, 0.0, 1.0, 1.0, 0.5663088083167754, 0.0, 0.7631819571278741, 0.6334228515625, 0.0, 0.4484051029809602, 0.8051576766628131, 0.0, 0.33710110625593337, 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.8575 (SEM: None)
lr: 1.27923e-05
momentum: 1", "Arm 11_0
accuracy: 0.622667 (SEM: None)
lr: 1.07914e-05
momentum: 0", "Arm 12_0
accuracy: 0.887167 (SEM: None)
lr: 7.02368e-05
momentum: 0.253302", "Arm 13_0
accuracy: 0.133333 (SEM: None)
lr: 1e-06
momentum: 0", "Arm 14_0
accuracy: 0.849833 (SEM: None)
lr: 0.000139305
momentum: 0", "Arm 15_0
accuracy: 0.828167 (SEM: None)
lr: 5.31515e-06
momentum: 1", "Arm 16_0
accuracy: 0.827 (SEM: None)
lr: 1.94888e-05
momentum: 1", "Arm 17_0
accuracy: 0.874 (SEM: None)
lr: 3.94816e-05
momentum: 0.566309", "Arm 18_0
accuracy: 0.810667 (SEM: None)
lr: 7.49998e-05
momentum: 0", "Arm 19_0
accuracy: 0.883667 (SEM: None)
lr: 2.36692e-05
momentum: 0.763182", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 20_0
accuracy: 0.8355 (SEM: None)
lr: 0.00028621
momentum: 0", "Arm 21_0
accuracy: 0.881 (SEM: None)
lr: 5.71599e-05
momentum: 0.448405", "Arm 22_0
accuracy: 0.888167 (SEM: None)
lr: 2.81099e-05
momentum: 0.805158", "Arm 23_0
accuracy: 0.405333 (SEM: None)
lr: 0.00083796
momentum: 0", "Arm 24_0
accuracy: 0.873667 (SEM: None)
lr: 5.07493e-05
momentum: 0.337101", "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.9055 (SEM: None)
lr: 8.29759e-05
momentum: 1", "Arm 8_0
accuracy: 0.8565 (SEM: None)
lr: 4.7999e-05
momentum: 1", "Arm 9_0
accuracy: 0.486167 (SEM: None)
lr: 0.000150412
momentum: 1" ], "type": "scatter", "x": [ 2.6e-05, 1.2792253586029109e-05, 1.0791354519942786e-05, 7.02367810083068e-05, 1e-06, 0.00013930499592309077, 5.315153899164597e-06, 1.948875013008121e-05, 3.948164185366969e-05, 7.499984379052125e-05, 2.3669188411043803e-05, 0.00995509203921593, 0.0002862101432859929, 5.7159923070345386e-05, 2.8109928240713984e-05, 0.0008379595262357745, 5.0749255145850375e-05, 8.95174165429637e-05, 1.7701150611603212e-06, 0.10173960742426996, 0.0170037365367624, 3.461617457828348e-05, 8.29759076064034e-05, 4.799901126633236e-05, 0.0001504124168940844 ], "xaxis": "x2", "y": [ 0.58, 1.0, 0.0, 0.25330199194725567, 0.0, 0.0, 1.0, 1.0, 0.5663088083167754, 0.0, 0.7631819571278741, 0.6334228515625, 0.0, 0.4484051029809602, 0.8051576766628131, 0.0, 0.33710110625593337, 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" } ], "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" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "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": [ "
\n", "
" ] }, "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": "2d9c8f2e", "metadata": { "customInput": null, "originalKey": "5c91d83a-9a90-4ea0-8df9-9d242d998cb3", "papermill": { "duration": 0.100713, "end_time": "2025-01-31T05:21:14.342985", "exception": false, "start_time": "2025-01-31T05:21:14.242272", "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": "8de5c1b7", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:14.544658Z", "iopub.status.busy": "2025-01-31T05:21:14.544341Z", "iopub.status.idle": "2025-01-31T05:21:14.629469Z", "shell.execute_reply": "2025-01-31T05:21:14.628599Z" }, "executionStartTime": 1690415953760, "executionStopTime": 1690415954260, "originalKey": "3a767bdf-7ef3-48e7-b853-6fae5e9e02ff", "papermill": { "duration": 0.205592, "end_time": "2025-01-31T05:21:14.648998", "exception": false, "start_time": "2025-01-31T05:21:14.443406", "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": { "bdata": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRo=", "dtype": "i1" }, "y": { "bdata": "vS1rdUzw6j+9LWt1TPDqPxm9LWt1TOw/Gb0ta3VM7D8ZvS1rdUzsPxm9LWt1TOw/Gb0ta3VM7D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsPw==", "dtype": "f8" } }, { "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.461617457828348e-05
momentum: 0.0", "
Parameterization:
lr: 8.29759076064034e-05
momentum: 1.0", "
Parameterization:
lr: 4.799901126633236e-05
momentum: 1.0", "
Parameterization:
lr: 0.0001504124168940844
momentum: 1.0", "
Parameterization:
lr: 1.2792253586029109e-05
momentum: 1.0", "
Parameterization:
lr: 1.0791354519942786e-05
momentum: 0.0", "
Parameterization:
lr: 7.02367810083068e-05
momentum: 0.25330199194725567", "
Parameterization:
lr: 1e-06
momentum: 0.0", "
Parameterization:
lr: 0.00013930499592309077
momentum: 0.0", "
Parameterization:
lr: 5.315153899164597e-06
momentum: 1.0", "
Parameterization:
lr: 1.948875013008121e-05
momentum: 1.0", "
Parameterization:
lr: 3.948164185366969e-05
momentum: 0.5663088083167754", "
Parameterization:
lr: 7.499984379052125e-05
momentum: 0.0", "
Parameterization:
lr: 2.3669188411043803e-05
momentum: 0.7631819571278741", "
Parameterization:
lr: 0.0002862101432859929
momentum: 0.0", "
Parameterization:
lr: 5.7159923070345386e-05
momentum: 0.4484051029809602", "
Parameterization:
lr: 2.8109928240713984e-05
momentum: 0.8051576766628131", "
Parameterization:
lr: 0.0008379595262357745
momentum: 0.0", "
Parameterization:
lr: 5.0749255145850375e-05
momentum: 0.33710110625593337", "
Parameterization:
lr: 6.844706951213188e-05
momentum: 0.7401263354814377" ], "type": "scatter", "x": { "bdata": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRo=", "dtype": "i1" }, "y": { "bdata": "vS1rdUzw6j+9LWt1TPDqPxm9LWt1TOw/Gb0ta3VM7D8ZvS1rdUzsPxm9LWt1TOw/Gb0ta3VM7D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsPw==", "dtype": "f8" } }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": { "bdata": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRo=", "dtype": "i1" }, "y": { "bdata": "vS1rdUzw6j+9LWt1TPDqPxm9LWt1TOw/Gb0ta3VM7D8ZvS1rdUzsPxm9LWt1TOw/Gb0ta3VM7D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsP2Dl0CLb+ew/YOXQItv57D9g5dAi2/nsPw==", "dtype": "f8" } } ], "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" } ], "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" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "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": [ "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "render(\n", " ax_client.get_optimization_trace()\n", ") " ] }, { "cell_type": "markdown", "id": "7472b13d", "metadata": { "customInput": null, "executionStartTime": 1689617061294, "executionStopTime": 1689617061325, "originalKey": "09aaec9d-c178-42e2-b549-663cd17f8c3d", "papermill": { "duration": 0.144576, "end_time": "2025-01-31T05:21:14.935569", "exception": false, "start_time": "2025-01-31T05:21:14.790993", "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": "123af4d6", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:15.226267Z", "iopub.status.busy": "2025-01-31T05:21:15.225767Z", "iopub.status.idle": "2025-01-31T05:21:15.249805Z", "shell.execute_reply": "2025-01-31T05:21:15.249270Z" }, "executionStartTime": 1690415954397, "executionStopTime": 1690415954452, "originalKey": "27f92d16-93c4-43bb-a37f-e7a1aeecd856", "papermill": { "duration": 0.170797, "end_time": "2025-01-31T05:21:15.251059", "exception": false, "start_time": "2025-01-31T05:21:15.080262", "status": "completed" }, "requestMsgId": "07eba5ce-bebe-4588-8dbb-07553efeb2b0", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'lr': 8.29759076064034e-05, 'momentum': 1.0}" ] }, "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": "8e3a28b2", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:15.539250Z", "iopub.status.busy": "2025-01-31T05:21:15.538647Z", "iopub.status.idle": "2025-01-31T05:21:15.542764Z", "shell.execute_reply": "2025-01-31T05:21:15.542084Z" }, "executionStartTime": 1690415954677, "executionStopTime": 1690415954681, "originalKey": "d0c7c645-c230-4654-a3b5-a01c61a09393", "papermill": { "duration": 0.149927, "end_time": "2025-01-31T05:21:15.544161", "exception": false, "start_time": "2025-01-31T05:21:15.394234", "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": "67121184", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:15.831130Z", "iopub.status.busy": "2025-01-31T05:21:15.830617Z", "iopub.status.idle": "2025-01-31T05:21:46.102284Z", "shell.execute_reply": "2025-01-31T05:21:46.101615Z" }, "executionStartTime": 1690415954791, "executionStopTime": 1690416061340, "originalKey": "5695c78b-4c6e-4d35-ab08-6c60781bd8f1", "papermill": { "duration": 30.417166, "end_time": "2025-01-31T05:21:46.104069", "exception": false, "start_time": "2025-01-31T05:21:15.686903", "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": "d31498fe", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:46.395696Z", "iopub.status.busy": "2025-01-31T05:21:46.395089Z", "iopub.status.idle": "2025-01-31T05:21:46.398987Z", "shell.execute_reply": "2025-01-31T05:21:46.398235Z" }, "executionStartTime": 1690416061460, "executionStopTime": 1690416061467, "originalKey": "7522e229-9641-4383-a892-12c3f0a8011c", "papermill": { "duration": 0.148655, "end_time": "2025-01-31T05:21:46.400463", "exception": false, "start_time": "2025-01-31T05:21:46.251808", "status": "completed" }, "requestMsgId": "5552d77d-9c9d-4712-9256-2cb3da836f2c", "showInput": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Accuracy (test set): 39.1%\n" ] } ], "source": [ "print(f\"Classification Accuracy (test set): {round(test_accuracy*100, 2)}%\")" ] }, { "cell_type": "markdown", "id": "a5748730", "metadata": { "customInput": null, "originalKey": "c8232211-4837-4677-b86c-bce730635fff", "papermill": { "duration": 0.143501, "end_time": "2025-01-31T05:21:46.686777", "exception": false, "start_time": "2025-01-31T05:21:46.543276", "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": "d7d27bb7", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:46.976795Z", "iopub.status.busy": "2025-01-31T05:21:46.976067Z", "iopub.status.idle": "2025-01-31T05:21:47.006591Z", "shell.execute_reply": "2025-01-31T05:21:47.006037Z" }, "executionStartTime": 1690416061571, "executionStopTime": 1690416061657, "originalKey": "6afddb45-c980-4b14-b5e9-927747ea98ea", "papermill": { "duration": 0.17613, "end_time": "2025-01-31T05:21:47.007869", "exception": false, "start_time": "2025-01-31T05:21:46.831739", "status": "completed" }, "requestMsgId": "bab02be8-706c-4422-b97b-c222b5084bba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:47] 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": "3fefe7e7", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:47.295065Z", "iopub.status.busy": "2025-01-31T05:21:47.294795Z", "iopub.status.idle": "2025-01-31T05:21:47.432760Z", "shell.execute_reply": "2025-01-31T05:21:47.432175Z" }, "executionStartTime": 1690416061758, "executionStopTime": 1690416062132, "originalKey": "31e6f7b4-cf6b-4967-95ff-f76d03657fb2", "papermill": { "duration": 0.282983, "end_time": "2025-01-31T05:21:47.434127", "exception": false, "start_time": "2025-01-31T05:21:47.151144", "status": "completed" }, "requestMsgId": "f2d10848-f995-420d-88e7-9036894d7b1b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:47] 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": "3bf26346", "metadata": { "customInput": null, "originalKey": "122510f5-5b9e-4b1c-9f5e-8c8ea2e08848", "papermill": { "duration": 0.143179, "end_time": "2025-01-31T05:21:47.720860", "exception": false, "start_time": "2025-01-31T05:21:47.577681", "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": "d3bb6e51", "metadata": { "customInput": null, "originalKey": "bd80e639-aa0f-4dc1-8542-0caf0d674fda", "papermill": { "duration": 0.143121, "end_time": "2025-01-31T05:21:48.013706", "exception": false, "start_time": "2025-01-31T05:21:47.870585", "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": "a16678bc", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:48.302024Z", "iopub.status.busy": "2025-01-31T05:21:48.301741Z", "iopub.status.idle": "2025-01-31T05:21:48.313080Z", "shell.execute_reply": "2025-01-31T05:21:48.312568Z" }, "executionStartTime": 1690416062222, "executionStopTime": 1690416062314, "originalKey": "80eb6a2e-6564-405e-b5d4-d448e32dbf60", "papermill": { "duration": 0.157063, "end_time": "2025-01-31T05:21:48.314299", "exception": false, "start_time": "2025-01-31T05:21:48.157236", "status": "completed" }, "requestMsgId": "65f2307f-b800-4415-b9e7-11734a2a6889", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:48] 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": "64ce974c", "metadata": { "customInput": null, "originalKey": "adafd3aa-b84e-4e86-9694-a29f94c6d5f3", "papermill": { "duration": 0.143555, "end_time": "2025-01-31T05:21:48.602181", "exception": false, "start_time": "2025-01-31T05:21:48.458626", "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": "d592e3d4", "metadata": { "customInput": null, "originalKey": "2f4a875b-1e18-4352-955d-576d6b01c5ed", "papermill": { "duration": 0.14361, "end_time": "2025-01-31T05:21:48.890656", "exception": false, "start_time": "2025-01-31T05:21:48.747046", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Special Cases" ] }, { "cell_type": "markdown", "id": "53bd37b7", "metadata": { "customInput": null, "originalKey": "0d49e448-4768-401d-ac1d-810aee633c9a", "papermill": { "duration": 0.143379, "end_time": "2025-01-31T05:21:49.176983", "exception": false, "start_time": "2025-01-31T05:21:49.033604", "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": "902c1032", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:49.465094Z", "iopub.status.busy": "2025-01-31T05:21:49.464580Z", "iopub.status.idle": "2025-01-31T05:21:50.284912Z", "shell.execute_reply": "2025-01-31T05:21:50.284225Z" }, "executionStartTime": 1690416062420, "executionStopTime": 1690416064316, "originalKey": "faa83f1d-31da-481a-96e4-ccbc12f30b91", "papermill": { "duration": 0.966294, "end_time": "2025-01-31T05:21:50.286495", "exception": false, "start_time": "2025-01-31T05:21:49.320201", "status": "completed" }, "requestMsgId": "80a40c3a-76ed-4e1d-aa77-3652fadbe69f", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:50] ax.service.ax_client: Generated new trial 26 with parameters {'lr': 8e-06, 'momentum': 0.692368} using model BoTorch.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:50] 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": "42edfbbf", "metadata": { "customInput": null, "originalKey": "c826a96e-9431-49bd-87d7-62b517537a15", "papermill": { "duration": 0.143313, "end_time": "2025-01-31T05:21:50.573574", "exception": false, "start_time": "2025-01-31T05:21:50.430261", "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": "033938a2", "metadata": { "customInput": null, "originalKey": "683378e0-893b-49a1-b090-084dc394da1a", "papermill": { "duration": 0.146301, "end_time": "2025-01-31T05:21:50.870306", "exception": false, "start_time": "2025-01-31T05:21:50.724005", "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": "fe82ab40", "metadata": { "customInput": null, "originalKey": "4602d41d-43aa-46d2-9ca6-392c414d0b5f", "papermill": { "duration": 0.143028, "end_time": "2025-01-31T05:21:51.156605", "exception": false, "start_time": "2025-01-31T05:21:51.013577", "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": "db3955bc", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:51.444520Z", "iopub.status.busy": "2025-01-31T05:21:51.443811Z", "iopub.status.idle": "2025-01-31T05:21:51.456827Z", "shell.execute_reply": "2025-01-31T05:21:51.456248Z" }, "executionStartTime": 1690416064534, "executionStopTime": 1690416064564, "originalKey": "d62e6cfd-5127-450e-80b7-d0edcaf97d6c", "papermill": { "duration": 0.158224, "end_time": "2025-01-31T05:21:51.458098", "exception": false, "start_time": "2025-01-31T05:21:51.299874", "status": "completed" }, "requestMsgId": "cb9a17f9-5734-41c6-9018-c0635c61d8b3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:51] 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 01-31 05:21:51] 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 01-31 05:21:51] 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 01-31 05:21:51] 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 01-31 05:21:51] 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 01-31 05:21:51] 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 01-31 05:21:51] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:51] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 01-31 05:21:51] 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 01-31 05:21:51] 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": "95f87e9d", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2025-01-31T05:21:51.748214Z", "iopub.status.busy": "2025-01-31T05:21:51.747606Z", "iopub.status.idle": "2025-01-31T05:21:51.752488Z", "shell.execute_reply": "2025-01-31T05:21:51.751810Z" }, "executionStartTime": 1690416064679, "executionStopTime": 1690416064702, "originalKey": "bc15d2cf-8ddc-4d66-83b6-7469cd15aa4d", "papermill": { "duration": 0.151712, "end_time": "2025-01-31T05:21:51.753821", "exception": false, "start_time": "2025-01-31T05:21:51.602109", "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.16" }, "papermill": { "default_parameters": {}, "duration": 249.137543, "end_time": "2025-01-31T05:21:54.857745", "environment_variables": {}, "exception": null, "input_path": "/tmp/tmp.8SPGnWMU26/Ax-main/tutorials/tune_cnn_service.ipynb", "output_path": "/tmp/tmp.8SPGnWMU26/Ax-main/tutorials/tune_cnn_service.ipynb", "parameters": {}, "start_time": "2025-01-31T05:17:45.720202", "version": "2.6.0" } }, "nbformat": 4, "nbformat_minor": 5 }