{
"cells": [
{
"cell_type": "markdown",
"id": "1e4d6cc9",
"metadata": {
"customInput": null,
"originalKey": "06e172a0-2da3-4c90-93c2-be01bf4f6d45",
"papermill": {
"duration": 0.003713,
"end_time": "2024-11-13T07:14:20.009854",
"exception": false,
"start_time": "2024-11-13T07:14:20.006141",
"status": "completed"
},
"showInput": false,
"tags": []
},
"source": [
"This tutorial illustrates use of a Global Stopping Strategy (GSS) in combination with the Service API. For background on the Service API, see the Service API Tutorial: https://ax.dev/tutorials/gpei_hartmann_service.html GSS is also supported in the Scheduler API, where it can be provided as part of `SchedulerOptions`. For more on `Scheduler`, see the Scheduler tutorial: https://ax.dev/tutorials/scheduler.html\n",
"\n",
"Global Stopping stops an optimization loop when some data-based criteria are met which suggest that future trials will not be very helpful. For example, we might stop when there has been very little improvement in the last five trials. This is as opposed to trial-level early stopping, which monitors the results of expensive evaluations and terminates those that are unlikely to produce promising results, freeing resources to explore more promising configurations. For more on trial-level early stopping, see the tutorial: https://ax.dev/tutorials/early_stopping/early_stopping.html"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "54300c79",
"metadata": {
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:20.018042Z",
"iopub.status.busy": "2024-11-13T07:14:20.017578Z",
"iopub.status.idle": "2024-11-13T07:14:23.078157Z",
"shell.execute_reply": "2024-11-13T07:14:23.077352Z"
},
"executionStartTime": 1683829335587,
"executionStopTime": 1683829339370,
"originalKey": "00a04d2c-d990-41c1-9eef-bbb05fba000d",
"papermill": {
"duration": 3.34791,
"end_time": "2024-11-13T07:14:23.361217",
"exception": false,
"start_time": "2024-11-13T07:14:20.013307",
"status": "completed"
},
"requestMsgId": "1c560539-1c7d-4c7a-ae55-e87c3b601859",
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[ERROR 11-13 07:14:22] ax.storage.sqa_store.encoder: ATTENTION: The Ax team is considering deprecating SQLAlchemy storage. If you are currently using SQLAlchemy storage, please reach out to us via GitHub Issues here: https://github.com/facebook/Ax/issues/2975\n"
]
},
{
"data": {
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:22] ax.utils.notebook.plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:22] ax.utils.notebook.plotting: Please see\n",
" (https://ax.dev/tutorials/visualizations.html#Fix-for-plots-that-are-not-rendering)\n",
" if visualizations are not rendering.\n"
]
},
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"\n",
"from ax.service.ax_client import AxClient, ObjectiveProperties\n",
"from ax.utils.measurement.synthetic_functions import Branin, branin\n",
"from ax.utils.notebook.plotting import init_notebook_plotting, render\n",
"\n",
"init_notebook_plotting()"
]
},
{
"cell_type": "markdown",
"id": "7c6504b9",
"metadata": {
"customInput": null,
"originalKey": "8688d729-b402-4a4c-b796-94fdcf5e022c",
"papermill": {
"duration": 0.042009,
"end_time": "2024-11-13T07:14:23.479631",
"exception": false,
"start_time": "2024-11-13T07:14:23.437622",
"status": "completed"
},
"showInput": false,
"tags": []
},
"source": [
"# 1. What happens without global stopping? Optimization can run for too long.\n",
"This example uses the Branin test problem. We run 25 trials, which turns out to be far more than needed, because we get close to the optimum quite quickly."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4f424c58",
"metadata": {
"customInput": null,
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:23.568739Z",
"iopub.status.busy": "2024-11-13T07:14:23.568446Z",
"iopub.status.idle": "2024-11-13T07:14:23.572208Z",
"shell.execute_reply": "2024-11-13T07:14:23.571679Z"
},
"executionStartTime": 1683829339516,
"executionStopTime": 1683829339531,
"originalKey": "320a952b-9e78-43e1-a55b-76a355e90f83",
"papermill": {
"duration": 0.051776,
"end_time": "2024-11-13T07:14:23.573488",
"exception": false,
"start_time": "2024-11-13T07:14:23.521712",
"status": "completed"
},
"requestMsgId": "14e3a517-c7d0-4300-92d9-57ceb5afca34",
"showInput": true,
"tags": []
},
"outputs": [],
"source": [
"def evaluate(parameters):\n",
" x = np.array([parameters.get(f\"x{i+1}\") for i in range(2)])\n",
" return {\"branin\": (branin(x), 0.0)}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "dd2e0ac5",
"metadata": {
"customInput": null,
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:23.662249Z",
"iopub.status.busy": "2024-11-13T07:14:23.661753Z",
"iopub.status.idle": "2024-11-13T07:14:23.665379Z",
"shell.execute_reply": "2024-11-13T07:14:23.664784Z"
},
"executionStartTime": 1683829339659,
"executionStopTime": 1683829339668,
"originalKey": "5740fbc2-97d6-465b-b01c-61e6c34c0220",
"papermill": {
"duration": 0.051218,
"end_time": "2024-11-13T07:14:23.666645",
"exception": false,
"start_time": "2024-11-13T07:14:23.615427",
"status": "completed"
},
"requestMsgId": "ff819cc9-ff17-4763-a857-83662b01e955",
"showInput": true,
"tags": []
},
"outputs": [],
"source": [
"params = [\n",
" {\n",
" \"name\": f\"x{i + 1}\",\n",
" \"type\": \"range\",\n",
" \"bounds\": [*Branin._domain[i]],\n",
" \"value_type\": \"float\",\n",
" \"log_scale\": False,\n",
" }\n",
"\n",
" for i in range(2)\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5c7703b6",
"metadata": {
"customInput": null,
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:23.753808Z",
"iopub.status.busy": "2024-11-13T07:14:23.753328Z",
"iopub.status.idle": "2024-11-13T07:14:23.765172Z",
"shell.execute_reply": "2024-11-13T07:14:23.764645Z"
},
"executionStartTime": 1683829339782,
"executionStopTime": 1683829339834,
"originalKey": "65667172-14df-437b-bdd0-5a59580e4054",
"papermill": {
"duration": 0.057761,
"end_time": "2024-11-13T07:14:23.766476",
"exception": false,
"start_time": "2024-11-13T07:14:23.708715",
"status": "completed"
},
"requestMsgId": "e0bc2847-17a5-43d7-bf49-ed97c90f1d50",
"showInput": true,
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[WARNING 11-13 07:14:23] ax.service.ax_client: Random seed set to 0. Note that this setting only affects the Sobol quasi-random generator and BoTorch-powered Bayesian optimization models. For the latter models, setting random seed to the same number for two optimizations will make the generated trials similar, but not exactly the same, and over time the trials will diverge more.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.service.utils.instantiation: Created search space: SearchSpace(parameters=[RangeParameter(name='x1', parameter_type=FLOAT, range=[-5.0, 10.0]), RangeParameter(name='x2', parameter_type=FLOAT, range=[0.0, 15.0])], parameter_constraints=[]).\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.core.experiment: The is_test flag has been set to True. This flag is meant purely for development and integration testing purposes. If you are running a live experiment, please set this flag to False\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: Using Models.BOTORCH_MODULAR since there is at least one ordered parameter and there are no unordered categorical parameters.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=2 num_trials=None use_batch_trials=False\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: `verbose`, `disable_progbar`, and `jit_compile` are not yet supported when using `choose_generation_strategy` with ModularBoTorchModel, dropping these arguments.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[INFO 11-13 07:14:23] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+BoTorch', steps=[Sobol for 5 trials, BoTorch for subsequent trials]). Iterations after 5 will take longer to generate due to model-fitting.\n"
]
}
],
"source": [
"ax_client = AxClient(random_seed=0, verbose_logging=False)\n",
"\n",
"ax_client.create_experiment(\n",
" name=\"branin_test_experiment\",\n",
" parameters=params,\n",
" objectives={\"branin\": ObjectiveProperties(minimize=True)},\n",
" is_test=True,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d81a6f00",
"metadata": {
"customInput": null,
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:23.853121Z",
"iopub.status.busy": "2024-11-13T07:14:23.852616Z",
"iopub.status.idle": "2024-11-13T07:14:40.610434Z",
"shell.execute_reply": "2024-11-13T07:14:40.609790Z"
},
"executionStartTime": 1683829339928,
"executionStopTime": 1683829356006,
"originalKey": "1f208de3-5189-4847-a779-940795977845",
"papermill": {
"duration": 16.802668,
"end_time": "2024-11-13T07:14:40.611785",
"exception": false,
"start_time": "2024-11-13T07:14:23.809117",
"status": "completed"
},
"requestMsgId": "95f327f2-327f-4284-93ae-3053c9b6ec45",
"showInput": true,
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/tmp.jh7tLjWjTJ/Ax-main/ax/modelbridge/cross_validation.py:464: UserWarning:\n",
"\n",
"Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n",
"\n",
"/tmp/tmp.jh7tLjWjTJ/Ax-main/ax/modelbridge/cross_validation.py:464: UserWarning:\n",
"\n",
"Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n",
"\n",
"/tmp/tmp.jh7tLjWjTJ/Ax-main/ax/modelbridge/cross_validation.py:464: UserWarning:\n",
"\n",
"Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n",
"\n",
"/tmp/tmp.jh7tLjWjTJ/Ax-main/ax/modelbridge/cross_validation.py:464: UserWarning:\n",
"\n",
"Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n",
"\n",
"/tmp/tmp.jh7tLjWjTJ/Ax-main/ax/modelbridge/cross_validation.py:464: UserWarning:\n",
"\n",
"Encountered exception in computing model fit quality: RandomModelBridge does not support prediction.\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 32.7 s, sys: 53.3 ms, total: 32.7 s\n",
"Wall time: 16.8 s\n"
]
}
],
"source": [
"%%time\n",
"for i in range(25):\n",
" parameters, trial_index = ax_client.get_next_trial()\n",
" # Local evaluation here can be replaced with deployment to external system.\n",
" ax_client.complete_trial(\n",
" trial_index=trial_index, raw_data=evaluate(parameters)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "75af1677",
"metadata": {
"customInput": null,
"customOutput": null,
"execution": {
"iopub.execute_input": "2024-11-13T07:14:40.698890Z",
"iopub.status.busy": "2024-11-13T07:14:40.698137Z",
"iopub.status.idle": "2024-11-13T07:14:41.076391Z",
"shell.execute_reply": "2024-11-13T07:14:41.075716Z"
},
"executionStartTime": 1683829356136,
"executionStopTime": 1683829356616,
"originalKey": "a369aafa-8ee4-4c02-bea6-673271da81ab",
"papermill": {
"duration": 0.423558,
"end_time": "2024-11-13T07:14:41.077923",
"exception": false,
"start_time": "2024-11-13T07:14:40.654365",
"status": "completed"
},
"requestMsgId": "b601e1e9-fd2d-4faf-a369-04e5c4a9f8cb",
"showInput": true,
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"linkText": "Export to plot.ly",
"plotlyServerURL": "https://plot.ly",
"showLink": false
},
"data": [
{
"hoverinfo": "none",
"legendgroup": "",
"line": {
"width": 0
},
"mode": "lines",
"showlegend": false,
"type": "scatter",
"x": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"y": [
37.28956500488602,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
2.314935450620526,
2.314935450620526,
1.238791199748606,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025
]
},
{
"fill": "tonexty",
"fillcolor": "rgba(128,177,211,0.3)",
"legendgroup": "objective value",
"line": {
"color": "rgba(128,177,211,1)"
},
"mode": "lines",
"name": "objective value",
"text": [
"
Parameterization:
x1: 2.126607894897461
x2: 8.887859880924225",
"
Parameterization:
x1: 3.681450095027685
x2: 0.5568291060626507",
"
Parameterization:
x1: 9.260048242285848
x2: 12.935160705819726",
"
Parameterization:
x1: -3.1931319646537304
x2: 3.921633088029921",
"
Parameterization:
x1: -1.7758215544745326
x2: 14.612732883542776",
"
Parameterization:
x1: 5.701862381143716
x2: 0.0",
"
Parameterization:
x1: 2.4660003487928686
x2: 0.0",
"
Parameterization:
x1: 3.7220696511670024
x2: 2.4525526294179705",
"
Parameterization:
x1: -5.0
x2: 15.0",
"
Parameterization:
x1: 3.5616387587581517
x2: 1.8915173433058645",
"
Parameterization:
x1: 3.12488100408407
x2: 2.2503910785510652",
"
Parameterization:
x1: -5.0
x2: 11.154322792698595",
"
Parameterization:
x1: 3.0144035240745666
x2: 2.4319647975709637",
"
Parameterization:
x1: 10.0
x2: 0.0",
"
Parameterization:
x1: 10.0
x2: 3.474009741456615",
"
Parameterization:
x1: 9.196050780293186
x2: 2.8365751841310334",
"
Parameterization:
x1: 9.084714305950614
x2: 4.199544536511258",
"
Parameterization:
x1: 9.598833978574145
x2: 2.6877001035829586",
"
Parameterization:
x1: 4.552897079878386
x2: 15.0",
"
Parameterization:
x1: -5.0
x2: 0.0",
"
Parameterization:
x1: -0.7744598378428424
x2: 7.985950539915349",
"
Parameterization:
x1: -3.671782602758383
x2: 15.0",
"
Parameterization:
x1: -2.892723538347914
x2: 11.817112512472379",
"
Parameterization:
x1: -3.253184748074256
x2: 12.937519934563243",
"
Parameterization:
x1: -2.987550131468358
x2: 12.514772122537396"
],
"type": "scatter",
"x": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"y": [
37.28956500488602,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
2.314935450620526,
2.314935450620526,
1.238791199748606,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025
]
},
{
"fill": "tonexty",
"fillcolor": "rgba(128,177,211,0.3)",
"hoverinfo": "none",
"legendgroup": "",
"line": {
"width": 0
},
"mode": "lines",
"showlegend": false,
"type": "scatter",
"x": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"y": [
37.28956500488602,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
3.545194409651578,
2.314935450620526,
2.314935450620526,
1.238791199748606,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025,
0.40064777347000025
]
}
],
"layout": {
"showlegend": true,
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
],
"sequentialminus": [
[
0.0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1.0,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Best objective found vs. # of iterations"
},
"xaxis": {
"title": {
"text": "Iteration"
}
},
"yaxis": {
"title": {
"text": "Branin"
}
}
}
},
"text/html": [
"