diff --git a/tutorials/human_in_the_loop/human_in_the_loop.ipynb b/tutorials/human_in_the_loop/human_in_the_loop.ipynb new file mode 100644 index 00000000000..36ab52f5eb0 --- /dev/null +++ b/tutorials/human_in_the_loop/human_in_the_loop.ipynb @@ -0,0 +1,5058 @@ +{ + "metadata": { + "language_info": { + "name": "python", + "mimetype": "text/x-python", + "nbconvert_exporter": "python", + "file_extension": ".py", + "pygments_lexer": "ipython3", + "codemirror_mode": { + "name": "ipython", + "version": 3 + } + }, + "kernelspec": { + "name": "python3", + "display_name": "python3", + "language": "python" + }, + "operator_data": [] + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "originalKey": "30b21773-7e2c-41bf-990f-a6c2aa89be06", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "# Ask-tell Optimization in a Human-in-the-loop Setting\n", + "\n", + "Some optimization experiments, like the one described in LINK, can be conducted in a completely automated manner.\n", + "Other experiments may require a human in the loop, for instance a scientist manually conducting and evaluating each trial in a lab.\n", + "In this tutorial we demonstrate this ask-tell optimization in a human-in-the-loop setting by imagining the task of maximizing the strength of a 3D printed part using compression testing (i.e., crushing the part) where different print settings will have to be manually tried and evaluated.\n", + "\n", + "\n", + "### Background\n", + "\n", + "In 3D printing, several parameters can significantly affect the mechanical properties of the printed object:\n", + "\n", + "- **Infill Density**: The percentage of material used inside the object. Higher infill density generally increases strength but also weight and material usage.\n", + "- **Layer Height**: The thickness of each layer of material. Smaller layer heights can improve surface finish and detail but increase print time.\n", + "- **Infill Type**: The pattern used to fill the interior of the object. Different patterns (e.g., honeycomb, gyroid, lines, rectilinear) offer various balances of strength, speed, and material efficiency.\n", + "\n", + "- **Strength Measurement**: In this tutorial, we assume the strength of the 3D printed part is measured using compression testing, which evaluates how the object performs under compressive stress.\n", + "\n", + "### Learning Objectives\n", + "- Understand black box optimization concepts\n", + "- Define an optimization problem using Ax\n", + "- Configure and run an experiment using Ax's `Client`\n", + "- Analyze the results of the optimization\n", + "\n", + "### Prerequisites\n", + "- Familiarity with Python and basic programming concepts\n", + "- Understanding of adaptive experimentation and Bayesian optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "8f38bebe-cf19-42e9-a73f-064df271299a", + "showInput": true, + "customInput": null, + "language": "markdown" + }, + "source": [ + "## Step 1: Import Necessary Modules" + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "5e8f7986-eb55-4dae-b63e-329760017aab", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739301999671, + "executionStopTime": 1739302002547, + "serverExecutionDuration": 2591.1049650749, + "collapsed": false, + "requestMsgId": "5e8f7986-eb55-4dae-b63e-329760017aab" + }, + "source": [ + "import pandas as pd\n", + "\n", + "from ax.preview.api.client import Client\n", + "from ax.preview.api.configs import ExperimentConfig, RangeParameterConfig, ChoiceParameterConfig, ParameterType, GenerationStrategyConfig" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "I0211 112640.185 _utils_internal.py:282] NCCL_DEBUG env var is set to None\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "I0211 112640.186 _utils_internal.py:300] NCCL_DEBUG is forced to WARN from None\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "a766f271-0d97-4c01-96dc-64e92b6cd713", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 2: Initialize Client\n", + "\n", + "Create an instance of the `Client` to manage the state of your experiment." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "9a08d007-be86-42ec-8f32-f4102548c2e0", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739302212796, + "executionStopTime": 1739302213094, + "serverExecutionDuration": 1.4741730410606, + "collapsed": false, + "requestMsgId": "9a08d007-be86-42ec-8f32-f4102548c2e0" + }, + "source": [ + "client = Client(random_seed=42)" + ], + "execution_count": 15, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "ff991a0a-6522-4aa6-a7ef-d8a494a207bb", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 3: Configure Experiment\n", + "\n", + "Define the parameters for the 3D printing optimization problem.\n", + "The infill density and layer height can take on any value within their respective bounds so we will configure both using `RangeParameterConfig`s.\n", + "On the other hand, infill type be either have one of four distinct values: \"honeycomb\", \"gyroid\", \"lines\", or \"rectilinear\".\n", + "We will use a `ChoiceParameterConfig` to represent it in the optimization." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "62ead57f-d835-4d67-a095-f64a818a97fe", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739302215052, + "executionStopTime": 1739302216000, + "serverExecutionDuration": 2.0144580630586, + "collapsed": false, + "requestMsgId": "62ead57f-d835-4d67-a095-f64a818a97fe" + }, + "source": [ + "infill_density = RangeParameterConfig(name=\"infill_density\", parameter_type=ParameterType.FLOAT, bounds=(0, 100))\n", + "layer_height = RangeParameterConfig(name=\"layer_height\", parameter_type=ParameterType.FLOAT, bounds=(0.1, 0.4))\n", + "infill_type = ChoiceParameterConfig(name=\"infill_type\", parameter_type=ParameterType.STRING, values=[\"honeycomb\", \"gyroid\", \"lines\", \"rectilinear\"])\n", + "\n", + "experiment_config = ExperimentConfig(\n", + " name=\"3d_print_strength_experiment\",\n", + " parameters=[infill_density, layer_height, infill_type],\n", + " # The following arguments are optional\n", + " description=\"Maximize strength of 3D printed parts\",\n", + " owner=\"developer\",\n", + ")\n", + "\n", + "client.configure_experiment(experiment_config=experiment_config)" + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:30:15 from_config:89] `is_ordered` is not specified for `ChoiceParameter` \"infill_type\". Defaulting to `False` since the parameter is a string with more than 2 choices.. To override this behavior (or avoid this warning), specify `is_ordered` during `ChoiceParameter` construction. Note that choice parameters with exactly 2 choices are always considered ordered and that the user-supplied `is_ordered` has no effect in this particular case.\n[W 250211 11:30:15 from_config:89] `sort_values` is not specified for `ChoiceParameter` \"infill_type\". Defaulting to `False` for parameters of `ParameterType` STRING. To override this behavior (or avoid this warning), specify `sort_values` during `ChoiceParameter` construction.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "d259ac8b-55c4-410f-bc8a-f690b877a7e2", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 4: Configure Optimization\n", + "We want to maximize the compressive strength of our part, so we will set the objective to `compressive_strength`.\n", + "However, we know that modifying the infill density, layer height, and infill type will affect the weight of the part as well.\n", + "We'll include a requirement that the part must not weigh more than 10 grams by setting an outcome constraint when we call `configure_experiment`.\n", + "\n", + "The following code will tell the `Client` that we intend to maximize compressive strength while keeping the weight less than 10 grams." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "76e7739a-148b-495f-a3a7-6e7fa9f5007d", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739302224108, + "executionStopTime": 1739302224462, + "serverExecutionDuration": 32.510571996681, + "collapsed": false, + "requestMsgId": "76e7739a-148b-495f-a3a7-6e7fa9f5007d" + }, + "source": [ + "client.configure_optimization(objective=\"compressive_strength\", outcome_constraints=[\"weight <= 10\"])" + ], + "execution_count": 18, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "3882f4bd-c7c3-4fff-9754-a9c97b27c5a0", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 5: Run Trials\n", + "\n", + "Now the `Client` has been configured we can begin conducting the experiment.\n", + "Use `attach_trial` to attach any existing data, use `get_next_trials` to generate parameter suggestions, and use `complete_trial` to report manually observed results." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "ec740d5d-c42e-44d6-bc3b-1659df2aeb9c", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "### Attach Existing Trials\n", + "\n", + "Sometimes in our optimization experiments we may already have some previously collected data from manual \"trials\" conducted before the Ax experiment began.\n", + "This can be incredibly useful!\n", + "If we attach this data as custom trials, Ax will be able to use the data points in its optimization algorithm and improve performance." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "a46ec55d-4848-4ea2-8adf-5cc0eabee74f", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739302378450, + "executionStopTime": 1739302378753, + "serverExecutionDuration": 78.725646948442, + "collapsed": false, + "requestMsgId": "a46ec55d-4848-4ea2-8adf-5cc0eabee74f" + }, + "source": [ + "# Pairs of previously evaluated parameterizations and associated metric readings\n", + "existing_trials = [\n", + " (\n", + " {\"infill_density\": 10.43, \"layer_height\": 0.3, \"infill_type\": \"gyroid\"},\n", + " {\"compressive_strength\": 1.74, \"weight\": 0.52},\n", + " ),\n", + " (\n", + " {\"infill_density\": 55.54, \"layer_height\": 0.12, \"infill_type\": \"lines\"},\n", + " {\"compressive_strength\": 4.63, \"weight\": 2.31},\n", + " ),\n", + " (\n", + " {\"infill_density\": 99.43, \"layer_height\": 0.35, \"infill_type\": \"rectilinear\"},\n", + " {\"compressive_strength\": 5.68, \"weight\": 2.84},\n", + " ),\n", + " (\n", + " {\"infill_density\": 41.44, \"layer_height\": 0.21, \"infill_type\": \"rectilinear\"},\n", + " {\"compressive_strength\": 3.95, \"weight\": 1.97},\n", + " ),\n", + " (\n", + " {\"infill_density\": 27.23, \"layer_height\": 0.37, \"infill_type\": \"honeycomb\"},\n", + " {\"compressive_strength\": 7.36, \"weight\": 3.31},\n", + " ),\n", + " (\n", + " {\"infill_density\": 33.57, \"layer_height\": 0.24, \"infill_type\": \"honeycomb\"},\n", + " {\"compressive_strength\": 13.99, \"weight\": 6.29},\n", + " ),\n", + "]\n", + "\n", + "for parameters, data in existing_trials:\n", + " # Attach the parameterization to the Client as a trial and immediately complete it with the existing data\n", + " trial_index = client.attach_trial(parameters=parameters)\n", + " client.complete_trial(trial_index=trial_index, raw_data=data)" + ], + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 10.43, 'layer_height': 0.3, 'infill_type': 'gyroid'}] as trial 0.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 55.54, 'layer_height': 0.12, 'infill_type': 'lines'}] as trial 1.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 99.43, 'layer_height': 0.35, 'infill_type': 'rectilinear'}] as trial 2.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 41.44, 'layer_height': 0.21, 'infill_type': 'rectilinear'}] as trial 3.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 27.23, 'layer_height': 0.37, 'infill_type': 'honeycomb'}] as trial 4.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[INFO 02-11 11:32:58] ax.core.experiment: Attached custom parameterizations [{'infill_density': 33.57, 'layer_height': 0.24, 'infill_type': 'honeycomb'}] as trial 5.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "b0d142bb-ec8f-40ea-91c7-4dcaff78e017", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "### Ask for trials\n", + "\n", + "Now, let's have Ax suggest which trials to evaluate so that we can find the optimal configuration more efficiently.\n", + "We'll do this by calling `get_next_trials`.\n", + "We'll make use of Ax's support for parallelism, i.e. suggesting more than one trial at a time -- this can allow us to conduct our experiment much faster!\n", + "If our lab had three identical 3D printers, we could ask Ax for a batch of three trials and evaluate three different infill density, layer height, and infill types at once.\n", + "\n", + "Note that there will always be a tradeoff between \"parallelism\" and optimization performance since the quality of a suggested trial is often proportional to the amount of data Ax has access to, see LINK for a more detailed explanation." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "ca30046b-8991-48dd-9054-f77a69ca3818", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739303219138, + "executionStopTime": 1739303228549, + "serverExecutionDuration": 9018.6875869986, + "collapsed": false, + "requestMsgId": "ca30046b-8991-48dd-9054-f77a69ca3818" + }, + "source": [ + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:46:59 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:00 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:47:03 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:03 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:47:05 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:05 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 11:47:08 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 11:47:08 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": "{6: {'infill_density': 55.554822572861525,\n 'layer_height': 0.20415599070305307,\n 'infill_type': 'honeycomb'},\n 7: {'infill_density': 54.683393750974744,\n 'layer_height': 0.2036382018243807,\n 'infill_type': 'honeycomb'},\n 8: {'infill_density': 55.09291142294557,\n 'layer_height': 0.20379656095227633,\n 'infill_type': 'honeycomb'}}" + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "befe8927-94f8-49ad-960c-bac135191cc7", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "### Tell Ax the results\n", + "\n", + "In a real-world scenerio we would print parts using the three suggested parameterizations and measure the compressive strength and weight manually, though in this tutorial we will simulate by calling a function.\n", + "Once the data is collected we will tell Ax the result by calling `complete_trial`." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "c5608094-e4f6-444e-9feb-3f21b3ee0d5c", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739303299312, + "executionStopTime": 1739303299558, + "serverExecutionDuration": 31.877135974355, + "collapsed": false, + "requestMsgId": "c5608094-e4f6-444e-9feb-3f21b3ee0d5c" + }, + "source": [ + "def evaluate(\n", + " infill_density: float, layer_height: float, infill_type: str\n", + ") -> dict[str, float]:\n", + " strength_map = {\"lines\": 1, \"rectilinear\": 2, \"gyroid\": 5, \"honeycomb\": 10}\n", + " weight_map = {\"lines\": 1, \"rectilinear\": 2, \"gyroid\": 3, \"honeycomb\": 9}\n", + "\n", + " return {\n", + " \"compressive_strength\": (\n", + " infill_density / layer_height * strength_map[infill_type]\n", + " )\n", + " / 100,\n", + " \"weight\": (infill_density / layer_height * weight_map[infill_type]) / 200,\n", + " }\n", + "\n", + "\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ], + "execution_count": 23, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "4cdda4f1-a7aa-4ee9-af0a-c1b59d605d21", + "showInput": true, + "customInput": null, + "language": "markdown" + }, + "source": [ + "We'll repeat this process a number of times.\n", + "Typically experimentation will continue until a satisfactory combination has been found, experimentation resources (in this example our 3D printing filliment) have been exhausted, or we feel we have spent enough time on optimization." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "326411ea-a32d-4adf-af57-90dcb2068210", + "showInput": true, + "customInput": null, + "language": "python", + "executionStartTime": 1739304312859, + "executionStopTime": 1739304423646, + "serverExecutionDuration": 110571.35569898, + "collapsed": false, + "requestMsgId": "326411ea-a32d-4adf-af57-90dcb2068210", + "outputsInitialized": true + }, + "source": [ + "# Ask Ax for the next trials\n", + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ], + "execution_count": 33, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:05:13 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:05:14 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:46 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:05:47 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:23 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:24 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:06:24 cholesky:40] A not p.d., added jitter of 1.0e-08 to the diagonal\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:07:03 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": "{12: {'infill_density': 6.8390949792989035,\n 'layer_height': 0.10033017222776183,\n 'infill_type': 'lines'},\n 13: {'infill_density': 69.97573414543979,\n 'layer_height': 0.3883630888145679,\n 'infill_type': 'honeycomb'},\n 14: {'infill_density': 0.0,\n 'layer_height': 0.2669496338558103,\n 'infill_type': 'lines'}}" + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "350e994b-04af-40ce-a06c-49b0ac50cfeb", + "showInput": true, + "customInput": null, + "language": "python", + "executionStartTime": 1739304518872, + "executionStopTime": 1739304519200, + "serverExecutionDuration": 33.687502960674, + "collapsed": false, + "requestMsgId": "350e994b-04af-40ce-a06c-49b0ac50cfeb", + "outputsInitialized": true + }, + "source": [ + "# Tell Ax the result of those trials\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ], + "execution_count": 34, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "7ec66975-ce39-4b23-b34b-c28433915204", + "showInput": true, + "customInput": null, + "language": "python" + }, + "source": [ + "# Ask Ax for the next trials\n", + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "18489525-1f14-4285-806e-f3218743975f", + "showInput": true, + "customInput": null, + "language": "python" + }, + "source": [ + "# Tell Ax the result of those trials\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "b65f8045-23b4-49f1-ae7a-b7c3e936bfc9", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 6: Analyze Results\n", + "\n", + "At any time during the experiment you may analyze the results of the experiment.\n", + "Most commonly this means extracting the parameterization from the best performing trial you conducted.\n", + "The best trial will have the optimal objective value **without violating any outcome constraints**." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "06b6978f-53f6-45fa-8383-b9c19ec33a82", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "python" + }, + "source": [ + "best_parameters, prediction, index, name = client.get_best_parameterization()\n", + "print(\"Best Parameters:\", best_parameters)\n", + "print(\"Prediction (mean, variance):\", prediction)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "8c64d2d0-394c-49db-8594-0b50b45524ff", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Step 7: Compute Analyses\n", + "\n", + "Ax can also produce a number of analyses to help interpret the results of the experiment via `client.compute_analyses`.\n", + "Users can manually select which analyses to run, or can allow Ax to select which would be most relevant.\n", + "In this case Ax selects the following:\n", + "* **Parrellel Coordinates Plot** shows which parameterizations were evaluated and what metric values were observed -- this is useful for getting a high level overview of how thoroughly the search space was explored and which regions tend to produce which outcomes\n", + "* **Scatter Plot** shows both metric values for each trial -- this is useful for understanding the tradeoffs between competing metrics, like compressive strength and weight.\n", + "* **Interaction Analysis Plot** shows which parameters have the largest affect on the function and plots the most important parameters as 1 or 2 dimensional surfaces\n", + "* **Summary** lists all trials generated along with their parameterizations, observations, and miscellaneous metadata" + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "c5572f5c-7efe-4945-88b2-73229813ee7c", + "outputsInitialized": true, + "isAgentGenerated": false, + "language": "python", + "executionStartTime": 1739304525265, + "executionStopTime": 1739304526128, + "serverExecutionDuration": 554.08962001093, + "collapsed": false, + "requestMsgId": "c5572f5c-7efe-4945-88b2-73229813ee7c" + }, + "source": [ + "client.compute_analyses()" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[ERROR 02-11 12:08:45] ax.analysis.analysis: Failed to compute InteractionPlot: Expected the input to have 3 dimensionality (based on the ard_num_dims argument). Got 6.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n[W 250211 12:08:45 assorted:264] Data (input features) is not contained to the unit cube. Please consider min-max scaling the input data.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "## Parallel Coordinates for compressive_strength\n\n### View arm parameterizations with their respective metric values" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "dimensions": [ + { + "label": "infill_density", + "values": [ + 10.43, + 55.54, + 99.43, + 41.44, + 27.23, + 33.57, + 55.554822572862, + 54.683393750975, + 55.092911422946, + 62.918913989666, + 62.841059296851, + 62.729662826186, + 6.8390949792989, + 69.97573414544, + 0 + ] + }, + { + "label": "layer_height", + "values": [ + 0.3, + 0.12, + 0.35, + 0.21, + 0.37, + 0.24, + 0.20415599070305, + 0.20363820182438, + 0.20379656095228, + 0.29462241973253, + 0.29481719683613, + 0.28419076021344, + 0.10033017222776, + 0.38836308881457, + 0.26694963385581 + ] + }, + { + "label": "infill_type", + "ticktext": [ + "gyroid", + "honeycomb", + "lines", + "rectilinear" + ], + "tickvals": [ + "0", + "1", + "2", + "3" + ], + "values": [ + 0, + 2, + 3, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2 + ] + }, + { + "label": "compressive_streng...", + "values": [ + 1.74, + 4.63, + 5.68, + 3.95, + 7.36, + 13.99, + 27.211948266395, + 26.853209889436, + 27.033288081759, + 21.355779389357, + 21.315262464754, + 22.073083156917, + 0.68165884972003, + 18.018121742474, + 0 + ] + } + ], + "labelangle": -45, + "line": { + "color": [ + 1.74, + 4.63, + 5.68, + 3.95, + 7.36, + 13.99, + 27.211948266395, + 26.853209889436, + 27.033288081759, + 21.355779389357, + 21.315262464754, + 22.073083156917, + 0.68165884972003, + 18.018121742474, + 0 + ], + "showscale": true + }, + "type": "parcoords" + } + ], + "layout": { + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "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" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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 + } + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "## Observed compressive_strength vs. weight\n\n### Compare arms by their observed metric values" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "customdata": [ + [ + 0, + "0_0" + ], + [ + 1, + "1_0" + ], + [ + 2, + "2_0" + ], + [ + 3, + "3_0" + ], + [ + 4, + "4_0" + ], + [ + 5, + "5_0" + ], + [ + 6, + "6_0" + ], + [ + 7, + "7_0" + ], + [ + 8, + "8_0" + ], + [ + 9, + "9_0" + ], + [ + 10, + "10_0" + ], + [ + 11, + "11_0" + ], + [ + 12, + "12_0" + ], + [ + 13, + "13_0" + ], + [ + 14, + "14_0" + ] + ], + "hovertemplate": "compressive_strength=%{x}
weight=%{y}
trial_index=%{marker.color}
arm_name=%{customdata[1]}", + "legendgroup": "", + "marker": { + "color": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "coloraxis": "coloraxis", + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "orientation": "v", + "showlegend": false, + "x": [ + 1.74, + 4.63, + 5.68, + 3.95, + 7.36, + 13.99, + 27.211948266395, + 26.853209889436, + 27.033288081759, + 21.355779389357, + 21.315262464754, + 22.073083156917, + 0.68165884972003, + 18.018121742474, + 0 + ], + "xaxis": "x", + "y": [ + 0.52, + 2.31, + 2.84, + 1.97, + 3.31, + 6.29, + 12.245376719878, + 12.083944450246, + 12.164979636791, + 9.6101007252107, + 9.5918681091391, + 9.9328874206125, + 0.34082942486002, + 8.1081547841131, + 0 + ], + "yaxis": "y", + "type": "scatter" + } + ], + "layout": { + "coloraxis": { + "colorbar": { + "title": { + "text": "trial_index" + } + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "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" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "compressive_strength" + }, + "type": "linear", + "range": [ + -1.5958371203083, + 28.807785386704 + ], + "autorange": true + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "weight" + }, + "type": "linear", + "range": [ + -0.86822652617919, + 13.113603246057 + ], + "autorange": true + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "## Summary for 3d_print_strength_experiment\n\n### High-level summary of the `Trial`-s in this `Experiment`" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": " trial_index arm_name ... layer_height infill_type\n0 0 0_0 ... 0.300000 gyroid\n1 1 1_0 ... 0.120000 lines\n2 2 2_0 ... 0.350000 rectilinear\n3 3 3_0 ... 0.210000 rectilinear\n4 4 4_0 ... 0.370000 honeycomb\n5 5 5_0 ... 0.240000 honeycomb\n6 6 6_0 ... 0.204156 honeycomb\n7 7 7_0 ... 0.203638 honeycomb\n8 8 8_0 ... 0.203797 honeycomb\n9 9 9_0 ... 0.294622 honeycomb\n10 10 10_0 ... 0.294817 honeycomb\n11 11 11_0 ... 0.284191 honeycomb\n12 12 12_0 ... 0.100330 lines\n13 13 13_0 ... 0.388363 honeycomb\n14 14 14_0 ... 0.266950 lines\n\n[15 rows x 10 columns]", + "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
trial_indexarm_nametrial_statusgeneration_methodgeneration_nodeweightcompressive_strengthinfill_densitylayer_heightinfill_type
000_0COMPLETEDNoneNone0.5200001.74000010.4300000.300000gyroid
111_0COMPLETEDNoneNone2.3100004.63000055.5400000.120000lines
222_0COMPLETEDNoneNone2.8400005.68000099.4300000.350000rectilinear
333_0COMPLETEDNoneNone1.9700003.95000041.4400000.210000rectilinear
444_0COMPLETEDNoneNone3.3100007.36000027.2300000.370000honeycomb
555_0COMPLETEDNoneNone6.29000013.99000033.5700000.240000honeycomb
666_0COMPLETEDBoTorchMBM12.24537727.21194855.5548230.204156honeycomb
777_0COMPLETEDBoTorchMBM12.08394426.85321054.6833940.203638honeycomb
888_0COMPLETEDBoTorchMBM12.16498027.03328855.0929110.203797honeycomb
999_0COMPLETEDBoTorchMBM9.61010121.35577962.9189140.294622honeycomb
101010_0COMPLETEDBoTorchMBM9.59186821.31526262.8410590.294817honeycomb
111111_0COMPLETEDBoTorchMBM9.93288722.07308362.7296630.284191honeycomb
121212_0COMPLETEDBoTorchMBM0.3408290.6816596.8390950.100330lines
131313_0COMPLETEDBoTorchMBM8.10815518.01812269.9757340.388363honeycomb
141414_0COMPLETEDBoTorchMBM0.0000000.0000000.0000000.266950lines
\n
", + "application/vnd.dataresource+json": { + "schema": { + "fields": [ + { + "name": "index", + "type": "integer" + }, + { + "name": "trial_index", + "type": "integer" + }, + { + "name": "arm_name", + "type": "string" + }, + { + "name": "trial_status", + "type": "string" + }, + { + "name": "generation_method", + "type": "string" + }, + { + "name": "generation_node", + "type": "string" + }, + { + "name": "weight", + "type": "number" + }, + { + "name": "compressive_strength", + "type": "number" + }, + { + "name": "infill_density", + "type": "number" + }, + { + "name": "layer_height", + "type": "number" + }, + { + "name": "infill_type", + "type": "string" + } + ], + "primaryKey": [ + "index" + ], + "pandas_version": "1.4.0" + }, + "data": [ + { + "index": 0, + "trial_index": 0, + "arm_name": "0_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 0.52, + "compressive_strength": 1.74, + "infill_density": 10.43, + "layer_height": 0.3, + "infill_type": "gyroid" + }, + { + "index": 1, + "trial_index": 1, + "arm_name": "1_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 2.31, + "compressive_strength": 4.63, + "infill_density": 55.54, + "layer_height": 0.12, + "infill_type": "lines" + }, + { + "index": 2, + "trial_index": 2, + "arm_name": "2_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 2.84, + "compressive_strength": 5.68, + "infill_density": 99.43, + "layer_height": 0.35, + "infill_type": "rectilinear" + }, + { + "index": 3, + "trial_index": 3, + "arm_name": "3_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 1.97, + "compressive_strength": 3.95, + "infill_density": 41.44, + "layer_height": 0.21, + "infill_type": "rectilinear" + }, + { + "index": 4, + "trial_index": 4, + "arm_name": "4_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 3.31, + "compressive_strength": 7.36, + "infill_density": 27.23, + "layer_height": 0.37, + "infill_type": "honeycomb" + }, + { + "index": 5, + "trial_index": 5, + "arm_name": "5_0", + "trial_status": "COMPLETED", + "generation_method": null, + "generation_node": null, + "weight": 6.29, + "compressive_strength": 13.99, + "infill_density": 33.57, + "layer_height": 0.24, + "infill_type": "honeycomb" + }, + { + "index": 6, + "trial_index": 6, + "arm_name": "6_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 12.2453767199, + "compressive_strength": 27.2119482664, + "infill_density": 55.5548225729, + "layer_height": 0.2041559907, + "infill_type": "honeycomb" + }, + { + "index": 7, + "trial_index": 7, + "arm_name": "7_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 12.0839444502, + "compressive_strength": 26.8532098894, + "infill_density": 54.683393751, + "layer_height": 0.2036382018, + "infill_type": "honeycomb" + }, + { + "index": 8, + "trial_index": 8, + "arm_name": "8_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 12.1649796368, + "compressive_strength": 27.0332880818, + "infill_density": 55.0929114229, + "layer_height": 0.203796561, + "infill_type": "honeycomb" + }, + { + "index": 9, + "trial_index": 9, + "arm_name": "9_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 9.6101007252, + "compressive_strength": 21.3557793894, + "infill_density": 62.9189139897, + "layer_height": 0.2946224197, + "infill_type": "honeycomb" + }, + { + "index": 10, + "trial_index": 10, + "arm_name": "10_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 9.5918681091, + "compressive_strength": 21.3152624648, + "infill_density": 62.8410592969, + "layer_height": 0.2948171968, + "infill_type": "honeycomb" + }, + { + "index": 11, + "trial_index": 11, + "arm_name": "11_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 9.9328874206, + "compressive_strength": 22.0730831569, + "infill_density": 62.7296628262, + "layer_height": 0.2841907602, + "infill_type": "honeycomb" + }, + { + "index": 12, + "trial_index": 12, + "arm_name": "12_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 0.3408294249, + "compressive_strength": 0.6816588497, + "infill_density": 6.8390949793, + "layer_height": 0.1003301722, + "infill_type": "lines" + }, + { + "index": 13, + "trial_index": 13, + "arm_name": "13_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 8.1081547841, + "compressive_strength": 18.0181217425, + "infill_density": 69.9757341454, + "layer_height": 0.3883630888, + "infill_type": "honeycomb" + }, + { + "index": 14, + "trial_index": 14, + "arm_name": "14_0", + "trial_status": "COMPLETED", + "generation_method": "BoTorch", + "generation_node": "MBM", + "weight": 0, + "compressive_strength": 0, + "infill_density": 0, + "layer_height": 0.2669496339, + "infill_type": "lines" + } + ] + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "## Cross Validation for compressive_strength\n\n### Out-of-sample predictions using leave-one-out CV" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "customdata": [ + [ + "3_0" + ], + [ + "1_0" + ], + [ + "6_0" + ], + [ + "5_0" + ], + [ + "4_0" + ], + [ + "7_0" + ], + [ + "8_0" + ], + [ + "0_0" + ], + [ + "11_0" + ], + [ + "2_0" + ], + [ + "9_0" + ], + [ + "10_0" + ] + ], + "error_x": { + "array": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ] + }, + "error_y": { + "array": [ + 10.065214982043, + 10.069727610954, + 0.27511783669402, + 3.8095050686341, + 5.0930925345785, + 0.28122785184062, + 0.24997998215677, + 10.069976566808, + 0.32290985455613, + 10.066435839527, + 0.27550306138656, + 0.28592102575416 + ] + }, + "hovertemplate": "observed=%{x}
predicted=%{y}
arm_name=%{customdata[0]}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "orientation": "v", + "showlegend": false, + "x": [ + 3.95, + 4.63, + 27.211948266395, + 13.99, + 7.36, + 26.853209889436, + 27.033288081759, + 1.74, + 22.073083156917, + 5.68, + 21.355779389357, + 21.315262464754 + ], + "xaxis": "x", + "y": [ + 7.2557049776999, + 7.3827788336743, + 26.963978880983, + 15.349413830228, + 7.4846369417761, + 27.036712566745, + 27.009495794508, + 7.1742184222211, + 22.083248413638, + 7.1353832179209, + 21.337529950851, + 21.373944604498 + ], + "yaxis": "y", + "type": "scatter" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "shapes": [ + { + "line": { + "color": "gray", + "dash": "dot" + }, + "type": "line", + "x0": -2.9017420953896, + "x1": 27.591119822771, + "y0": -2.9017420953896, + "y1": 27.591119822771 + } + ], + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "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" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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 + } + } + }, + "xaxis": { + "anchor": "y", + "constrain": "domain", + "domain": [ + 0.41046261358062, + 0.58953738641938 + ], + "range": [ + -2.9017420953896, + 27.591119822771 + ], + "title": { + "text": "observed" + }, + "type": "linear" + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "scaleanchor": "x", + "scaleratio": 1, + "title": { + "text": "predicted" + }, + "type": "linear", + "range": [ + -4.6186106976073, + 29.132550822424 + ], + "autorange": true + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "## Cross Validation for weight\n\n### Out-of-sample predictions using leave-one-out CV" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "customdata": [ + [ + "6_0" + ], + [ + "9_0" + ], + [ + "2_0" + ], + [ + "1_0" + ], + [ + "0_0" + ], + [ + "10_0" + ], + [ + "8_0" + ], + [ + "5_0" + ], + [ + "11_0" + ], + [ + "7_0" + ], + [ + "4_0" + ], + [ + "3_0" + ] + ], + "error_x": { + "array": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ] + }, + "error_y": { + "array": [ + 0.58011797739151, + 0.58011797739151, + 0.89360442055339, + 0.9445975094157, + 1.6870418018892, + 0.58011797739151, + 0.58011797739151, + 0.58011797739151, + 0.58011797739151, + 0.58011797739151, + 4.9398023972393, + 0.8936114648769 + ] + }, + "hovertemplate": "observed=%{x}
predicted=%{y}
arm_name=%{customdata[0]}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "orientation": "v", + "showlegend": false, + "x": [ + 12.245376719878, + 9.6101007252107, + 2.84, + 2.31, + 0.52, + 9.5918681091391, + 12.164979636791, + 6.29, + 9.9328874206125, + 12.083944450246, + 3.31, + 1.97 + ], + "xaxis": "x", + "y": [ + 9.8153599556339, + 10.246734726256, + 2.0486479118573, + 2.2519520718291, + 2.5307942799353, + 10.249719267758, + 9.8285203507293, + 10.790210131365, + 10.193896982896, + 9.8417851985399, + 6.9656486982061, + 2.3873358906759 + ], + "yaxis": "y", + "type": "scatter" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "shapes": [ + { + "line": { + "color": "gray", + "dash": "dot" + }, + "type": "line", + "x0": 0.5148, + "x1": 12.367830487077, + "y0": 0.5148, + "y1": 12.367830487077 + } + ], + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "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" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.11111111111111, + "#46039f" + ], + [ + 0.22222222222222, + "#7201a8" + ], + [ + 0.33333333333333, + "#9c179e" + ], + [ + 0.44444444444444, + "#bd3786" + ], + [ + 0.55555555555556, + "#d8576b" + ], + [ + 0.66666666666667, + "#ed7953" + ], + [ + 0.77777777777778, + "#fb9f3a" + ], + [ + 0.88888888888889, + "#fdca26" + ], + [ + 1, + "#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 + } + } + }, + "xaxis": { + "anchor": "y", + "constrain": "domain", + "domain": [ + 0.40442483891749, + 0.59557516108251 + ], + "range": [ + 0.5148, + 12.367830487077 + ], + "title": { + "text": "observed" + }, + "type": "linear" + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "scaleanchor": "x", + "scaleratio": 1, + "title": { + "text": "predicted" + }, + "type": "linear", + "range": [ + 0.2292136659683, + 12.519989907523 + ], + "autorange": true + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": "[,\n ,\n ,\n ,\n ,\n ]" + }, + "metadata": {}, + "execution_count": 35 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "a255016e-650c-4e96-a931-136ac4f79fef", + "outputsInitialized": false, + "isAgentGenerated": false, + "language": "markdown", + "showInput": true + }, + "source": [ + "## Conclusion\n", + "\n", + "This tutorial demonstrates how to use Ax's `Client` for optimizing the strength of 3D printed parts in a human-in-the-loop setting. By iteratively collecting data and refining parameters, you can effectively apply black box optimization to real-world experiments." + ] + } + ] +} diff --git a/website/tutorials.json b/website/tutorials.json index 343eff31a3d..cedd47c994c 100644 --- a/website/tutorials.json +++ b/website/tutorials.json @@ -3,6 +3,10 @@ { "id": "ask_tell", "title": "Ask-tell Optimization with Ax" + }, + { + "id": "human_in_the_loop", + "title": "Ask-tell Optimization in a Human-in-the-loop Setting" } ] }