{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# OPTaaS Demo - Warm Start with Prior Mean from Expression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup / imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from mindfoundry.optaas.client.client import OPTaaSClient, Goal\n", "from mindfoundry.optaas.client.parameter import FloatParameter, ChoiceParameter\n", "\n", "from utils.demo import Demo\n", "from utils.prior_means import PriorMeansSimpleDemo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Demonstration problems\n", "We create two problems for demonstration purposes, one in a flat, non-conditional parameter space, and the other in a conditional parameter space.\n", "\n", "In the flat parameter space problem, the target is one-dimensional, and is the sum of a base polynomial, which gives the global shape of the function, and a low-amplitude sin curve, which has the effect of disturbing the location of the maximum slightly. The base polynomial is later passed as a \"prior mean function\" in the form of an explicity expression. This allows the optimizer to disregard the vast majority of the search space, and get close to the maximum very quickly.\n", "\n", "The conditional parameter space problem has a single binary selection parameter. Querying the first value for the selection parameter results in exactly the same target function as the flat parameter space problem, but the second value results in this same target function subtracted by 20. This information is also later passed through prior mean function to the optimizer, allowing the optimizer to focus entirely on the first selection parameter initially, where the maximum really resides." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Non conditional demonstration problem. The function that will be provided as a prior mean is shown as a dashed line:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(
,\n", " ,\n", " )" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"Non conditional demonstration problem. The function that will be provided as a prior mean is shown as a dashed line:\")\n", "prior_means_example = PriorMeansSimpleDemo()\n", "prior_means_example.plot_target_against_mean(-20, 20)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Non conditional demonstration problem. The function that will be provided as a prior mean is shown as a dashed line:\n" ] }, { "data": { "image/png": "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IYsGNr0EpRTPP/88mzdvpmfPnuzYscOut+ItOnbsSEFBgf2mCdJ+7o477mD69On2id/rr7/evv7KK68kKyuLlStXunye7Oxs9u7da9dDufvuu5k+fXqlwmXlERAQQHBwMH/5y1+AYkP+zjtQUUOkWm3I16w5C0DHjqYhv5Dw9z8F+HY7qEsvvZQtW7Zw9OhRIiMjKz0hOGDAAIAScW+lFNOmTcNisXDrrbeW2H7gwIEAbhmqjIwMTp48aTfkX331FZ06dWLZsmUltrvpppt4+OGH2bZtG/fdd18JA+kNunTpAhTH9wHq1q3L9u3bef7555k9eza9e/cu8dQwZMgQlFL89ttvLp/HuKkZHnmbNm1KdAHyJE2aNLE/YThqkleUuVKrDXlamgwvIcGHVZRM3KZOnSzAn+xs53rYvkRlUw8NIiIiaNeuHcuXL7cvy83NZfr06fZsFUdiY2MJDg62p7C5gpGx0rVrV3Jzc3nyySeJjY21e4YGSinefPNN8vLymDJlileyVRyJjY3Fz8+PdevW2ZcppXjllVfYv38/GzZsYNSokvJPRnqgO9fH0HLp1KkTDz74oFs3AXcJDg7mzz//JDc3F0f121KlA+dQqw35sWOSaH/tte28OxCTGiU8/DSg+O67dG8PpdLce++93HnnnW7L1zpj4MCBLF261B7X/eqrrzhz5gz169fntddKdqALCAigV69ebhkqw6ONiYnhP//5D7t37+bf//63XSOmNN424AZ169YlJibGroFiMHToUHtaoDP1wX79+rFq1SqXdWtSUlLw9/fn4MGDvPPOO/YbX3Xg5+fHtm3bOHDgAP7+YKs18m2PPD8/ACgkKsps8XYh0aWLeOLJyS5UQtRS1q9fz969e8nNza2yIb/mmms4ceIEy5YtQ2vNe++9R3R0NI8++ijz588vET8HyTffsGEDubmuyRwkJSXRtGlTtNa88sorjBgxwmUdbW/Ts2dP1q5de07uvCFW5agRbpCQkEBmZqbLWuYpKSm0b9+eyZMn06xZM+66666qD7wMjLkUo5rX0NzyaUNer14OdeqkeXsYJjXMbbc1ByA/33fnRg4dOmRv31XVSbErrriChg0b8vbbb/P999+zevVqHnjgAR566CHq16/PK6+8UmL7nj17UlBQwLZtrtVfGBOda9asAeD111+v0nhrkh49enD06FF7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(
,\n", " ,\n", " )" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"Non conditional demonstration problem. The function that will be provided as a prior mean is shown as a dashed line:\")\n", "prior_means_example = PriorMeansSimpleDemo()\n", "prior_means_example.plot_conditional_target_against_prior_means(-20, 20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect to the OPTaaS server" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "client = OPTaaSClient(\"Your Optimize URL\", \"Your API Key\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [], "source": [ "x = FloatParameter(name='x', id='id_x_1', minimum=-20, maximum=20)\n", "x_1 = FloatParameter(name='x_1', id='id_x_1', minimum=-20, maximum=20)\n", "x_2 = FloatParameter(name='x_2', id='id_x_2', minimum=-20, maximum=20)\n", "choice_y = ChoiceParameter(name='y', id='id_y', choices=[x_1, x_2])\n", "\n", "parameters_simple_space = [x]\n", "\n", "parameters_conditional_space = [choice_y]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "initial_configurations = 1\n", "\n", "simple_task_with_prior_mean = client.create_task(\n", " title='Prior Mean Optimization',\n", " parameters=parameters_simple_space,\n", " goal=Goal.max,\n", " prior_means=[(x + 3) * (2 - x) * (x - 1) * (x + 2) * (x - .5) * (x + 1.5)],\n", " initial_configurations=initial_configurations,\n", " random_seed=8\n", ")\n", "\n", "simple_task_without_prior_mean = client.create_task(\n", " title='Prior Mean Optimization',\n", " parameters=parameters_simple_space,\n", " goal=Goal.max,\n", " initial_configurations=initial_configurations,\n", " random_seed=8\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from mindfoundry.optaas.client.expressions import PriorMeanExpression\n", "\n", "initial_configurations = 1\n", "\n", "prior_for_x1 = PriorMeanExpression(\n", " when=x_1.is_present(),\n", " then=(x_1 + 3) * (2 - x_1) * (x_1 - 1) * (x_1 + 2) * (x_1 - .5) * (x_1 + 1.5)\n", ")\n", "\n", "prior_for_x2 = PriorMeanExpression(\n", " when=x_2.is_present(),\n", " then=(x_2 + 3) * (2 - x_2) * (x_2 - 1) * (x_2 + 2) * (x_2 - .5) * (x_2 + 1.5) + 20\n", ")\n", "\n", "conditional_task_with_prior_mean = client.create_task(\n", " title='Prior Mean Optimization',\n", " parameters=parameters_conditional_space,\n", " goal=Goal.max,\n", " prior_means=[prior_for_x1, prior_for_x2],\n", " initial_configurations=initial_configurations,\n", " random_seed=8\n", ")\n", "\n", "conditional_task_without_prior_mean = client.create_task(\n", " title='Prior Mean Optimization',\n", " parameters=parameters_conditional_space,\n", " goal=Goal.max,\n", " initial_configurations=initial_configurations,\n", " random_seed=8\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Create a Simple Task and Run Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use Prior Mean" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "[{'type': 'default', 'values': {'x': 0.0}}]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "configurations = simple_task_with_prior_mean.generate_configurations(initial_configurations)\n", "\n", "demo = Demo(['x'])\n", "\n", "display(configurations)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAJNCAYAAADwAzVvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3xddZnv8e+TS1PSNinSomhpI6OtQGkDtApoAbUHOsLAQYbhEhC5NMKocxgH5NJxAMcqchF1HIEItV5CqdYb48xRxAOWkTJQsEC1BRHbUsA2peykbdhp0/2cP/ZOSdPcsy6/ZH/er1deyV7ZWevJGqf5sNbea5m7CwAAIFQlaQ8AAADQG2IFAAAEjVgBAABBI1YAAEDQiBUAABA0YgUAAAStLO0B+mPChAleU1OT9hgAACAmTz755BZ3n9jd94ZFrNTU1GjlypVpjwEAAGJiZut7+h6ngQAAQNCIFQAAEDRiBQAABG1YvGalO7t27dLGjRuVzWbTHqWojB49WpMmTVJ5eXnaowAAisSwjZWNGzdq3LhxqqmpkZmlPU5RcHe99tpr2rhxo975znemPQ4AoEjEdhrIzBaZ2WYzW91p2UwzW2Fmz5rZf5hZ1WDXn81mdcABBxAqCTIzHXDAARzNAgAkKs7XrCyWNK/LsrslXePuR0j6iaSrhrIBQiV57HMAQNJiixV3Xy5pa5fF0yQtL3z9K0lnxrX9JJSWlqq2tlYzZ87UUUcdpUcffXRQ6/nqV7+q1tbWSGdra2vT3LlzVVtbq6VLl0a6bgAAkpT0u4FWSzqt8PVZkg5OePuR2m+//bRq1So9/fTT+tKXvqRrr712UOuJI1Z+97vfadeuXVq1apXOPvvsfv1Me3t7pDMAABCFpGPlYkmfNLMnJY2TtLOnJ5pZvZmtNLOVTU1NiQ04WC0tLdp///33PL7llls0e/ZszZgxQ9dff70kaceOHTrllFM0c+ZMTZ8+XUuXLtXXv/51vfLKK/rgBz+oD37wg/us95prrtFhhx2mGTNm6Morr5QkrV+/Xh/+8Ic1Y8YMffjDH9aGDRv2+pnNmzfr/PPP16pVq1RbW6s//elP+vznP6/Zs2dr+vTpqq+vl7tLkk488URdd911OuGEE/S1r30trt0DAMDguXtsH5JqJK3u4XtTJT3en/UcffTR3tUf/vCHfZYlraSkxGfOnOnTpk3zqqoqX7lypbu7//KXv/T58+d7Lpfz3bt3+ymnnOK/+c1vfNmyZX7ppZfu+flMJuPu7lOmTPGmpqZ91v/aa6/51KlTPZfLubv766+/7u7up556qi9evNjd3e+55x4//fTT9/nZhx56yE855ZS91tXh/PPP9/vvv9/d3U844QS//PLLB/R7h7DvAQAji6SV3kMHJPrWZTM70N03m1mJpH+WdGcU673iF1do1V9WRbGqPWrfVquvzvtqr8/pOA0kSStWrNDHPvYxrV69Wg888IAeeOABHXnkkZKk7du3649//KPmzJmjK6+8UldffbVOPfVUzZkzp9f1V1VVafTo0br00kt1yimn6NRTT92zrR//+MeSpAsuuECf/exn+/x9HnroId18881qbW3V1q1bdfjhh+tv/uZvJKnfp4kAAEhDnG9dXiJphaRpZrbRzC6RdK6ZPS9praRXJH07ru0n7dhjj9WWLVvU1NQkd9e1116rVatWadWqVXrhhRd0ySWXaOrUqXryySd1xBFH6Nprr9XnP//5XtdZVlamxx9/XGeeeaZ++tOfat68rm+uyuvrHTrZbFZ///d/r2XLlunZZ5/V/Pnz93r78ZgxYwb+CwMAkJDYjqy4+7k9fCvyF0b0dQQkCWvXrtXu3bt1wAEH6OSTT9bnPvc51dXVaezYsXr55ZdVXl6u9vZ2veUtb9H555+vsWPHavHixZKkcePGadu2bZowYcJe69y+fbtaW1v1kY98RMccc4ze9a53SZKOO+443XfffbrgggvU2NioD3zgA73O1hEmEyZM0Pbt27Vs2TL97d/+bfQ7AQCAGAzbK9iG4I033lBtba2k/Gt/vvOd76i0tFQnnXSS1qxZo2OPPVaSNHbsWH3/+9/XCy+8oKuuukolJSUqLy/XHXfcIUmqr6/XX//1X+uggw7SQw89tGf927Zt0+mnn65sNit31+233y5J+vrXv66LL75Yt9xyiyZOnKhvf7v3A1Tjx4/X/PnzdcQRR6impkazZ8+OY3cAABAL88K7QkI2a9YsX7ly5V7L1qxZo0MPPTSliYob+x4AEDUze9LdZ3X3Pe66DAAAgkasAACAoBErAAAgaMQKAAAIGrECBKyxUaqpkUpK8p8bG9OeaGCSmD/ubQz39SexDdaf/jaG+/r71NOlbUP6CPVy+8WKfZ+M73/fvbLSXXrzo7IyvzzKbUyZ4m6W/xz1upOYP85tDPf1J7EN1p/+Nob7+juol8vt89blISgtLdURRxyx5/E555yja665ZsDr+fjHP65TTz211wu1XXrppfrMZz6jww47TF/84hd13XXX9bners877rjj9Oijjw54vq5C2PfFoKZGWr9+3+WjJ2zSh7528ZDX//JvT9Czd/+DcjtH71lWMiqrwy6+XW899tdyuXKey/9j0enrnOfk8r2+7u55axf8Qrtef/s+2y3b/2W961/nDnl+SXrhcw+q/fV3xLaN4b7+JLbB+tPfRlrrnzJFWrduyKvfo7e3LnNRuCHofG+guN199917vh5srEQRKkhOl5tp75HdMlGbd2we8vrX3HfBXqEiSbmdo/X8Dz6uqtk/V4mVyGQyM5VYiUqtNL/MTCbb83XX53V879nM27rdbnvmIM1464whzy9JazMHxbqN4b7+JLbB+tPfRlrr7+nfqFj0dMglpI8oTgPFcbh7zJgx+yzLZDI+depUX7t2rbu7n3POOd7Q0LDn+Z/5zGf8yCOP9A996EO+efNmd3e/8MIL/Yc//KG7uz/44INeW1vr06dP94suusiz2ay75++O/MQTT/jVV1+9527P5513nru7n3766X7UUUf5YYcd5nfddZe7e7fP65g3l8v5lVde6YcffrhPnz7d77vvPnfP36n5hBNO8DPPPNOnTZvm55133p47PnfGaaBkTJmy92HXjo8pU6JZv1n36zeLZv1xz5/ENob7+pPYButPfxvDff0d1MtpoNRDpD8fQ42VuM63dcRAx0fHH/0HHnjAjznmGF+yZImffPLJe54vyb9f2OiNN97on/zkJ939zVh54403fNKkSf7cc8+5u/sFF1zgt99+u7u/GSvu+0bSa6+95u7ura2tfvjhh/uWLVu6fV7H42XLlvncuXO9vb3d//KXv/jBBx/sr7zyij/00ENeVVXlL730ku/evduPOeYYf+SRR/b5vYmVZHz5jpdc5dtjO08c9z9AvBYg/fUnsQ3Wn/42hvv6OxR9rMT1j3J3R1Y6zJ8/39/ylrf4Sy+9tGdZSUmJ79q1y93d//SnP/nMmTPd/c1YWbVqlc+ZM2fP8x988EE/44wz3L33WLn++ut9xowZPmPGDK+qqvIVK1Z0+7yOx1dccYXfc889e5af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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xScoreConfiguration Type
17-2.62921818.7832exploitation
16-2.62922118.7832exploitation
18-2.62921718.7832exploitation
19-2.62921518.7832exploitation
15-2.62922418.7832exploitation
14-2.62922618.7832exploitation
13-2.62923218.7832exploitation
12-2.62923518.7832exploitation
11-2.62924818.7832exploitation
10-2.62928318.7832exploitation
9-2.62957918.7831exploitation
7-2.62661818.781exploitation
8-2.63514718.772exploitation
1-2.67945117.9934exploitation
4-2.67993617.9783exploitation
3-2.68612317.7746exploitation
6-2.56311617.4204exploitation
21.68095316.5742exploitation
00.00000011.7201default
5-0.50000510.8112exploitation
\n", "
" ], "text/plain": [ " x Score Configuration Type\n", "17 -2.629218 18.7832 exploitation\n", "16 -2.629221 18.7832 exploitation\n", "18 -2.629217 18.7832 exploitation\n", "19 -2.629215 18.7832 exploitation\n", "15 -2.629224 18.7832 exploitation\n", "14 -2.629226 18.7832 exploitation\n", "13 -2.629232 18.7832 exploitation\n", "12 -2.629235 18.7832 exploitation\n", "11 -2.629248 18.7832 exploitation\n", "10 -2.629283 18.7832 exploitation\n", "9 -2.629579 18.7831 exploitation\n", "7 -2.626618 18.781 exploitation\n", "8 -2.635147 18.772 exploitation\n", "1 -2.679451 17.9934 exploitation\n", "4 -2.679936 17.9783 exploitation\n", "3 -2.686123 17.7746 exploitation\n", "6 -2.563116 17.4204 exploitation\n", "2 1.680953 16.5742 exploitation\n", "0 0.000000 11.7201 default\n", "5 -0.500005 10.8112 exploitation" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_iterations = 20\n", "\n", "for i in range(number_of_iterations):\n", " configuration = configurations[i]\n", " x = configuration.values['x']\n", " score = prior_means_example.target({'id_x': x})\n", "\n", " demo.display(configuration, score, i)\n", "\n", " next_configuration = simple_task_with_prior_mean.record_result(configuration=configuration, score=score)\n", " configurations.append(next_configuration)\n", "\n", "simple_task_with_prior_mean.complete()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Do Not Use Prior Mean" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'type': 'default', 'values': {'x': 0.0}}]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "configurations = simple_task_without_prior_mean.generate_configurations(initial_configurations)\n", "\n", "demo = Demo(['x'])\n", "\n", "display(configurations)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAJXCAYAAABfUGTVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de7SddX3v+883CSUEEB1cvEUI7C2XcskCAgJVoJUitRRr1VIFxYPKthU9WkWhjHZLd+3xCAq13duSUqwtEalYb9iteAFRgQ0BgzdAOAoaEViCRLlFAr/zx1qJuWcF1lpz/cjrNcYaybz9nu96BgPePM8z56zWWgAAprppgx4AAGAsRAsA0AXRAgB0QbQAAF0QLQBAF0QLANCF7qKlqs6vqrur6jtjeO7ZVbVo9Of7VXXfZMwIAIy/6u1zWqrq0CT3J/nX1tpeG/G6NyfZt7V24oQNBwBMmO6OtLTWrkhy78r3VdV/qarPV9V1VfW1qtp9LS99ZZILJ2VIAGDczRj0AONkfpI3ttZuqarnJflfSX5n+YNVtVOSnZN8ZUDzAQBPUPfRUlVbJTkkyceravndm6/2tD9JcnFr7dHJnA0AGD/dR0tGTnHd11obWs9z/iTJmyZpHgBgAnR3TcvqWmu/SPLDqnpFktSIucsfr6rdkjwtyVUDGhEAGAfdRUtVXZiRANmtqhZX1euSHJfkdVV1Q5LvJnnJSi95ZZKPtd7eJgUArKK7tzwDAJum7o60AACbpq4uxN1uu+3anDlzBj0GADBBrrvuup+11rZf22NdRcucOXOycOHCQY8BAEyQqrp9XY85PQQAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0IWBRktVHVVVN1fVrVV16iBmWHDXXZlz1VWZdvnlmXPVVVlw112DGOMJWbAgmTMnmTZt5M8FC6w/metPxjasP/ht9L7+ZGzD+oPfRu/rb1BrbSA/SaYn+f+S7JLkN5LckOQ31/ea/fffv42nC+68s8366ldbLrtsxc+sr361XXDnneO6nYl0wQWtzZrVWvLrn1mzRu63/sSvPxnbsP7gt9H7+pOxDesPfhu9r79ckoVtHR1QI49Pvqo6OMm7W2svGr192mhE/T/res28efPawoULx22GOVddlduXLl3j/s2X3ZeDFp8zbtuZSFe/42NZes8z1rh/823vzEFn/Yn1J3j9ydiG9Qe/jd7Xn4xtWH/w2xjU+jvtlNx22xNefoWquq61Nm9tjw3y9NCzk/x4pduLR+9bRVWdVFULq2rh8PDwuA7wo7UES5Isnb7NuG5nIi29Z4eNut/647v+ZGzD+oPfRu/rT8Y2rD/4bQxq/R/9aFyWH5t1HYKZ6J8kr0hy3kq3X53k79f3mvE+PbTTlVeucmpo+c9OV145rtuZSDvttOqhuuU/O+1k/clYfzK2Yf3Bb6P39SdjG9Yf/DZ6X3+5rOf00CCPtCxO8pyVbs9OcsdkDvCeXXbJrGmr7oJZ06blPbvsMpljPCHveU8ya9aq982aNXK/9Sd+/cnYhvUHv43e15+MbVh/8Nvoff0xWVfNTPRPkhlJfpBk5/z6Qtw91/ea8T7S0trIxbg7XXllq9EjLD1dhLvcBReMlG7VyJ/jfVGU9Qe/DesPfhu9rz8Z27D+4LfR+/qtrf9Iy8AuxE2SqnpxknMy8k6i81tr6+218b4QFwCYWtZ3Ie6MyR5mZa21/0zyn4OcAQDog0/EBQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALowkGipqldU1Xer6rGqmjeIGQCAvgzqSMt3kvxRkisGtH0AoDMzBrHR1tqNSVJVg9g8ANChKX9NS1WdVFULq2rh8PDwoMcBAAZkwo60VNWXkjxjLQ+d3lr79FjXaa3NTzI/SebNm9fGaTwAoDMTFi2ttSMmam0AYNMz5U8PAQAkg3vL80uranGSg5N8rqq+MIg5AIB+DOrdQ59M8slBbBsA6JPTQwBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXBhItVXVmVd1UVd+qqk9W1VMHMQcA0I9BHWn5YpK9Wmv7JPl+ktMGNAcA0ImBREtr7dLW2rLRm1cnmT2IOQCAfkyFa1pOTPK/1/VgVZ1UVQurauHw8PAkjgUATCUzJmrhqvpSkmes5aHTW2ufHn3O6UmWJVmwrnVaa/OTzE+SefPmtQkYFQDowIRFS2vtiPU9XlUnJDk6yQtba2IEAFivCYuW9amqo5K8K8lhrbUHBzEDANCXQV3T8g9Jtk7yxapaVFX/OKA5AIBODORIS2vtvw5iuwBAv6bCu4cAADZItAAAXRhztFTVFlW120QOAwCwLmOKlqr6gySLknx+9PZQVX1mIgcDAFjZWI+0vDvJgUnuS5LW2qIkcyZmJACANY01Wpa11pZM6CQAAOsx1rc8f6eqXpVkelU9N8lbklw5cWMBAKxqrEda3pxkzyRLk3w0yZIkb52ooQAAVrfBIy1VNT3JZ0a/S+j0iR8JAGBNGzzS0lp7NMmDVbXNJMwDALBWY72m5eEk366qLyZ5YPmdrbW3TMhUAACrGWu0fG70BwBgIMYULa21j1TVbyTZdfSum1trj0zcWAAAqxpTtFTV4Uk+kuS2JJXkOVV1QmvtiokbDQDg18Z6euj9SY5srd2cJFW1a5ILk+w/UYMBAKxsrJ/TstnyYEmS1tr3k2w2MSMBAKxprEdaFlbVPyf5t9HbxyW5bmJGAgBY01ij5U+TvCkjH99fSa5I8r8maigAgNWNNVpmJPm71toHkhWfkrv5hE0FALCasV7T8uUkW6x0e4skXxr/cQAA1m6s0TKztXb/8hujf581MSMBAKxprNHyQFXtt/xGVc1L8tDEjAQAsKaxXtPy1iQfr6o7krQkz0py7IRNBQCwmvUeaamqA6rqGa21a5PsnuSiJMuSfD7JDydhPgCAJBs+PXRukl+N/v3gJH+R5H8m+XmS+RM4FwDAKjZ0emh6a+3e0b8fm2R+a+0TST5RVYsmdjQAgF/b0JGW6VW1PGxemOQrKz021uthAACesA2Fx4VJvlpVP8vIu4W+liRV9V+TLJng2QAAVlhvtLTW3lNVX07yzCSXttba6EPTkrx5oocDAFhug6d4WmtXr+W+70/MOAAAazfWD5cDABgo0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdEC0AQBdECwDQBdECAHRBtAAAXRAtAEAXRAsA0AXRAgB0QbQAAF0QLQBAF0QLANAF0QIAdEG0AABdGEi0VNX/qKpvVdWiqrq0qp41iDkAgH4M6kjLma21fVprQ0kuSfJXA5oDAOjEQKKltfaLlW5umaQNYg4AoB8zBrXhqnpPktckWZLkt9fzvJOSnJQkO+644+QMBwBMOdXaxBzkqKovJXnGWh46vbX26ZWed1qSma21/76hNefNm9cWLlw4jlMCAFNJVV3XWpu3tscm7EhLa+2IMT71o0k+l2SD0QIAbLoG9e6h565085gkNw1iDgCgH4O6puW9VbVbkseS3J7kjQOaAwDoxECipbX2skFsFwDol0/EBQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAQC6IFoAgC6IFgCgC6IFAOiCaAEAuiBaAIAuiBYAoAuiBQDogmgBALow0GipqndUVauq7QY5BwAw9Q0sWqrqOUl+N8mPBjUDANCPQR5pOTvJO5O0Ac4AAHRiINFSVcck+Ulr7YYxPPekqlpYVQuHh4cnYToAYCqaMVELV9WXkjxjLQ+dnuQvkhw5lnVaa/OTzE+SefPmOSoDAJuoCYuW1toRa7u/qvZOsnOSG6oqSWYnub6qDmyt3TlR8wAAfZuwaFmX1tq3k+yw/HZV3ZZkXmvtZ5M9CwDQD5/TAgB0YdKPtKyutTZn0DMAAFOfIy0AQBdECwDQBdECAHRBtAAAXRj4hbgAMEiPPPJIFi9enIcffnjQo2xSZs6cmdmzZ2ezzTYb82tECwCbtMWLF2frrbfOnDlzMvqhp0yw1lruueeeLF68ODvvvPOYX+f0EACbtIcffjjbbrutYJlEVZVtt912o49uiRYANnmCZfI9nn0uWgCALogWABiw6dOnZ2hoKHPnzs1+++2XK6+88nGtc8455+TBBx8c19mWLl2aI444IkNDQ7nooovGde2N5UJcABiwLbbYIosWLUqSfOELX8hpp52Wr371qxu9zjnnnJPjjz8+s2bNGrfZvvnNb+aRRx5ZMd9YLFu2LDNmjH9iiBYAGPXWz781i+4c+3+cx2LoGUM556hzxvz8X/ziF3na05624vaZZ56Zf//3f8/SpUvz0pe+NGeccUYeeOCB/PEf/3EWL16cRx99NH/5l3+Zu+66K3fccUd++7d/O9ttt10uu+yyVdY99dRT85nPfCYzZszIkUcembPOOiu33357TjzxxAwPD2f77bfPhz/84ey4444rXnP33Xfn+OOPz/DwcIaGhvKJT3wiCxYsyGc/+9k89NBDOeSQQ3LuueemqnL44YfnkEMOyTe+8Y0cc8wxefvb3/7Ed95qRAsADNhDDz2UoaGhPPzww/npT3+ar3zlK0mSSy+9NLfcckuuueaatNZyzDHH5Iorrsjw8HCe9axn5XOf+1ySZMmSJdlmm23ygQ98IJdddlm22267Vda/995788lPfjI33XRTqir33XdfkuTkk0/Oa17zmpxwwgk5//zz85a3vCWf+tSnVrxuhx12yHnnnZezzjorl1xyyYrX/NVf/VWS5NWvfnUuueSS/MEf/EGS5L777ntcR4jGSrQAwKiNOSIynlY+PXTVVVflNa95Tb7zne/k0ksvzaWXXpp99903SXL//ffnlltuyQte8IK84x3vyLve9a4cffTRecELXrDe9Z/ylKdk5syZef3rX5/f//3fz9FHH71iW//xH/+RZCRA3vnOd25w1ssuuyzve9/78uCDD+bee+/NnnvuuSJajj322Me9D8bChbgAMIUcfPDB+dnPfpbh4eG01nLaaadl0aJFWbRoUW699da87nWvy6677prrrrsue++9d0477bT89V//9XrXnDFjRq655pq87GUvy6c+9akcddRRa33eht6G/PDDD+fP/uzPcvHFF+fb3/523vCGN6zyWStbbrnlxv/CG0G0AMAUctNNN+XRRx/Ntttumxe96EU5//zzc//99ydJfvKTn+Tuu+/OHXfckVmzZuX444/PO97xjlx//fVJkq233jq//OUv11jz/vvvz5IlS/LiF78455xzzoqjOoccckg+9rGPJUkWLFiQ5z//+eudbXmgbLfddrn//vtz8cUXj9vvPRZODwHAgC2/piUZ+Yj7j3zkI5k+fXqOPPLI3HjjjTn44IOTJFtttVUuuOCC3HrrrTnllFMybdq0bLbZZvnQhz6UJDnppJPye7/3e3nmM5+5yoW4v/zlL/OSl7wkDz/8cFprOfvss5MkH/zgB3PiiSfmzDPPXHEh7vo89alPzRve8IbsvffemTNnTg444ICJ2B3rVK21Sd3gEzFv3ry2cOHCQY8BwJPIjTfemD322GPQY2yS1rbvq+q61tq8tT3f6SEAoAuiBQDogmgBALogWgCALogWAKALogUA6IJoAYCNsGBBMmdOMm3ayJ8LFjzxNadPn56hoaEVP+9973sf1zqvfe1rN/iBb69//evzve99L0nyt3/7t2Nad/XnHXLIIY9rvifK57QAsEnbmM9pWbAgOemk5MEHf33frFnJ/PnJccc9/hm22mqrFZ96+0S89rWvzdFHH52Xv/zl47rd8ZpvdT6nBQAmyOmnrxosycjt008f/20tWbIku+22W26++eYkyStf+cr80z/9U5KRiHj729+e/fbbLy984QszPDy8xuu//OUvZ999983ee++dE088MUuXLk2SHH744Vm4cGFOPfXUFZ/Ee9xocf3hH/5h9t9//+y5556ZP39+kqz1eVtttVWSkU/vPeWUU7LXXntl7733zkUXXZQkufzyy3P44Yfn5S9/eXbfffccd9xxGZeDJK21bn7233//BgDj6Xvf+96Yn1vVWrLmT9UTm2HatGlt7ty5K34+9rGPtdZau/TSS9tBBx3ULrzwwvaiF71oxfOTtAsuuKC11toZZ5zR3vSmN7XWWjvhhBPaxz/+8fbQQw+12bNnt5tvvrm11tqrX/3qdvbZZ7fWWjvssMPatdde21prbcstt1xljnvuuae11tqDDz7Y9txzz/azn/1src9bfvviiy9uRxxxRFu2bFm7884723Oe85x2xx13tMsuu6w95SlPaT/+8Y/bo48+2g466KD2ta99bY3fe237PsnCto4OcKQFAMZoxx037v6x2mKLLVZ8k/OiRYty7LHHJkl+93d/N3vvvXfe9KY35bzzzlvx/GnTpq14zvHHH5+vf/3rq6x38803Z+edd86uu+6aJDnhhBNyxRVXbHCOD37wg5k7d24OOuig/PjHP84tt9yy3ud//etfzytf+cpMnz49T3/603PYYYfl2muvTZIceOCBmT17dqZNm5ahoaHcdtttY94f6yJaJthEXLAFwGC85z0j17CsbNaskfsnwmOPPZYbb7wxW2yxRe699951Pq+qVrndHsepmMsvvzxf+tKXctVVV+WGG27Ivvvuu+JbnddlfdvZfPPNV/x9+vTpWbZs2UbPtDrRMoGWX7B1++0jBxBvv33ktnAB6NNxx41cdLvTTknVyJ9P9CLc9Tn77LOzxx575MILL8yJJ56YRx55JMlIzCx/l9BHP/rRPP/5z1/ldbvvvntuu+223HrrrUmSf/u3f8thhx22xvqbbbbZijWXLFmSpz3taZk1a1ZuuummXH311Wt93soOPfTQXHTRRXn00UczPDycK664IgceeOD4/PJrMWPCVma9F2xN1D/gAEys444b/3+HL7/QdbmjjjoqJ554Ys4777xcc8012XrrrXPooYfmb/7mb3LGGWdkyy23zHe/+93sv//+2WabbVZcALvczJkz8+EPfziveMUrsmzZshxwwAF54xvfuMZ2TzrppOyzzz7Zb7/9cv755+cf//Efs88++2S33XbLQQcdtNbnLVjp/7xf+tKX5qqrrsrcuXNTVXnf+96XZzzjGbnpppvGdweN8pbnCTRt2sgRltVVJY89NvnzALCmjXnL81QxUW9Bnmze8jyFTNQFWwCwKRItE2iyL9gCYNPwZDjK8niIlgk02RdsAcCTmQtxJ9hEXLAFAJsiR1oAgC6IFgCgC6IFADbCgrvuypyrrsq0yy/PnKuuyoK77nrCa06fPj1DQ0PZc889M3fu3HzgAx/IY2P4bIxTTjkle+65Z0455ZTHtd3lX3x422235aMf/ejjWmMyuaYFAMZowV135aSbb86Do0Fx+9KlOWn0W5iPe/rTH/e6y797KEnuvvvuvOpVr8qSJUtyxhlnrPd15557boaHh1f5yPzHY3m0vOpVr3pC60w0R1oAYIxO/8EPVgTLcg8+9lhO/8EPxm0bO+ywQ+bPn59/+Id/SGstjz76aE455ZQccMAB2WeffXLuuecmSY455pg88MADed7znpeLLroon/3sZ/O85z0v++67b4444ojcNXoE6N3vfnfOOuusFevvtddea3x54amnnpqvfe1rGRoaytlnnz1uv8t4c6QFAMboR0uXbtT9j9cuu+ySxx57LHfffXc+/elPZ5tttsm1116bpUuX5rd+67dy5JFH5jOf+Uy22mqrFUdofv7zn+fqq69OVeW8887L+973vrz//e8f0/be+9735qyzzsoll1wyrr/HeBMtADBGO26+eW5fS6Ds+ARPz6zN8q/ZufTSS/Otb31rxRckLlmyJLfcckt23nnnVZ6/ePHiHHvssfnpT3+aX/3qV2s8/mTg9BAAjNF7dtkls6at+p/OWdOm5T277DKu2/nBD36Q6dOnZ4cddkhrLX//93+fRYsWZdGiRfnhD3+YI488co3XvPnNb87JJ5+cb3/72zn33HPz8MMPJ0lmzJixykW9y+/vkWgBgDE67ulPz/zddstOm2+eSrLT5ptn/m67PaGLcFc3PDycN77xjTn55JNTVXnRi16UD33oQ3nkkUeSJN///vfzwAMPrPG6JUuW5NnPfnaS5CMf+ciK++fMmZPrr78+SXL99dfnhz/84Rqv3XrrrfPLX/5y3H6HieL0EABshOOe/vRxjZQkeeihhzI0NJRHHnkkM2bMyKtf/er8+Z//eZLk9a9/fW677bbst99+aa1l++23z6c+9ak11nj3u9+dV7ziFXn2s5+dgw46aEWcvOxlL8u//uu/ZmhoKAcccEB23XXXNV67zz77ZMaMGZk7d25e+9rX5m1ve9u4/n7jpZafM+vBvHnz2sKFCwc9BgBPIjfeeGP22GOPQY+xSVrbvq+q61pr89b2fKeHAIAuiBYAoAuiBYBNXk+XSjxZPJ59LloA2KTNnDkz99xzj3CZRK213HPPPZk5c+ZGvc67hwDYpM2ePTuL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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xScoreConfiguration Type
3-0.12688815.9173exploitation
4-0.12367415.9102exploitation
5-0.11772315.8828exploitation
6-0.11043315.8241exploitation
7-0.10235515.7265exploitation
8-0.09360315.5819exploitation
9-0.08746815.4565exploitation
10-0.08658715.4368exploitation
11-0.07947715.2636exploitation
12-0.07638015.18exploitation
13-0.07414015.1165exploitation
14-0.07256415.0702exploitation
15-0.07124815.0307exploitation
16-0.07045615.0064exploitation
17-0.06912114.9649exploitation
18-0.06900014.961exploitation
19-0.06887414.9571exploitation
2-0.25113412.9763exploitation
00.00000011.7201default
118.323846-4.3304e+07exploitation
\n", "
" ], "text/plain": [ " x Score Configuration Type\n", "3 -0.126888 15.9173 exploitation\n", "4 -0.123674 15.9102 exploitation\n", "5 -0.117723 15.8828 exploitation\n", "6 -0.110433 15.8241 exploitation\n", "7 -0.102355 15.7265 exploitation\n", "8 -0.093603 15.5819 exploitation\n", "9 -0.087468 15.4565 exploitation\n", "10 -0.086587 15.4368 exploitation\n", "11 -0.079477 15.2636 exploitation\n", "12 -0.076380 15.18 exploitation\n", "13 -0.074140 15.1165 exploitation\n", "14 -0.072564 15.0702 exploitation\n", "15 -0.071248 15.0307 exploitation\n", "16 -0.070456 15.0064 exploitation\n", "17 -0.069121 14.9649 exploitation\n", "18 -0.069000 14.961 exploitation\n", "19 -0.068874 14.9571 exploitation\n", "2 -0.251134 12.9763 exploitation\n", "0 0.000000 11.7201 default\n", "1 18.323846 -4.3304e+07 exploitation" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_iterations = 20\n", "\n", "for i in range(number_of_iterations):\n", " configuration = configurations[i]\n", " x = configuration.values['x']\n", " score = prior_means_example.target({'id_x': x})\n", "\n", " demo.display(configuration, score, i)\n", "\n", " next_configuration = simple_task_without_prior_mean.record_result(configuration=configuration, score=score)\n", " configurations.append(next_configuration)\n", "\n", "simple_task_without_prior_mean.complete()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Create a Conditional Task and Run Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use Prior Mean" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'type': 'default', 'values': {'y': {'x_1': 0.0}}}]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "configurations = conditional_task_with_prior_mean.generate_configurations(initial_configurations)\n", "\n", "demo = Demo(['x_1', 'x_2', 'y'])\n", "\n", "display(configurations)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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fd/khoSbN2/WQw89NKhzZFLetoEAABiI0M6dWv7BB6pvaVH58OFaccwxQ55OkNwbSJJ27dqliy66SI2Njbrlllv6fN99992nhoaGg5a2H4xkWLnooouGdB6vMbICAEA/kiuf17W0yOnTlc/TuVXLxIkTVVNTox/96Edyzqm9vV033HCD5s+fr1mzZum+++6TJH3pS1/S/v37dcopp+jRRx/VH/7wB51yyimaM2eOlixZop2Jmm6++WbdcccdneefMWPGIZsKLlu2TOFwWJWVlbr77rvT9rOkGyMrAAD0Y/kHH6ipW3umqaNDyz/4IK03axxzzDHq6OjQrl279Pvf/15jxozR2rVr1dLSolNPPVVLly7V448/rpEjR3aOyEQiEb388ssyM91///267bbbdOedd6b0/W699VbdcccdeuKJJ9L2M3iBsAIAQD8yufJ5chuclStX6s033+zcuLCxsVGbNm3S0UcffdDrt27dqgsuuEDbt2/XgQMHDvl6LqANBABAPzK18vkHH3ygwsJCTZw4Uc45/fCHP9S6deu0bt06ffjhh1q6dOkh77n22mt1zTXX6K233tJ9992nWCwmSSoqKjposm7yeDYirAAA0I9MrHze0NCgq666Stdcc43MTGeffbbuvfdetba2SpLee+897d+//5D3NTY26qijjpIkPfjgg53HKyoq9Nprr0mSXnvtNX344YeHvHfUqFHau3dv2n4GrxBWAADoh1crnzc3N3feurxkyRItXbpU3/3udyVJV1xxhU488UTNnTtXM2bM0JVXXqm2trZDznHzzTfrq1/9qk477TSNHz++8/g//MM/aPfu3aqsrNS9996r44477pD3zpo1S0VFRZo9e3agJ9hasjcWZPPmzXO1tbV+lwEAyCHr16/X9OnT/S4jL/V07c3sVefcvJ5ez8gKAAAINMIKAAAINMIKAAAINMIKACBvZcO8zVwzmGtOWAEA5KWSkhJ98sknBJYMcs7pk08+UUlJyYDexwq2AIC8NGXKFG3dulUNDQ1+l5JXSkpKNGXKlAG9h7ACAMhLxcXFObk0fS6iDQQAAAKNsAIAAAKNsAIAAAItK5bbN7MGSXUenX68pI89Oneu4Br1j2vUN65P/7hG/eMa9S+br9E059yEnr6QFWHFS2ZW29teBIjjGvWPa9Q3rk//uEb94xr1L1evEW0g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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x_1x_2yScoreConfiguration Type
18NoneNone1.75864438.2544exploitation
11NoneNone-0.71084138.0058exploitation
10NoneNone-0.69929937.9785exploitation
2NoneNone1.69685537.1993exploitation
5NoneNone-2.70537437.0071exploitation
6NoneNone-0.62697736.3648exploitation
15NoneNone-0.79360636.1457exploitation
4NoneNone-0.61579735.9365exploitation
8NoneNone-0.15919635.7054exploitation
16NoneNone-0.80911735.4312exploitation
7NoneNone-2.47665732.3247exploitation
1NoneNone0.00000031.7201exploitation
12NoneNone-0.89075030.5459exploitation
3NoneNone-0.44784829.2896exploitation
13NoneNone-0.91030129.2749exploitation
9NoneNone-0.36466329.242exploitation
19NoneNone0.05219028.3043exploitation
14NoneNone1.52074927.8485exploitation
17NoneNone1.36034226.0831exploitation
0NoneNone0.00000011.7201default
\n", "
" ], "text/plain": [ " x_1 x_2 y Score Configuration Type\n", "18 None None 1.758644 38.2544 exploitation\n", "11 None None -0.710841 38.0058 exploitation\n", "10 None None -0.699299 37.9785 exploitation\n", "2 None None 1.696855 37.1993 exploitation\n", "5 None None -2.705374 37.0071 exploitation\n", "6 None None -0.626977 36.3648 exploitation\n", "15 None None -0.793606 36.1457 exploitation\n", "4 None None -0.615797 35.9365 exploitation\n", "8 None None -0.159196 35.7054 exploitation\n", "16 None None -0.809117 35.4312 exploitation\n", "7 None None -2.476657 32.3247 exploitation\n", "1 None None 0.000000 31.7201 exploitation\n", "12 None None -0.890750 30.5459 exploitation\n", "3 None None -0.447848 29.2896 exploitation\n", "13 None None -0.910301 29.2749 exploitation\n", "9 None None -0.364663 29.242 exploitation\n", "19 None None 0.052190 28.3043 exploitation\n", "14 None None 1.520749 27.8485 exploitation\n", "17 None None 1.360342 26.0831 exploitation\n", "0 None None 0.000000 11.7201 default" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_iterations = 20\n", "\n", "for i in range(number_of_iterations):\n", " configuration = configurations[i]\n", " if 'x_1' in configuration.values['y'].keys():\n", " score = prior_means_example.conditional_target({'id_x_1': configuration.values['y']['x_1'], 'id_y': 0})\n", " else:\n", " score = prior_means_example.conditional_target({'id_x_2': configuration.values['y']['x_2'], 'id_y': 1})\n", " demo.display(configuration, score, i)\n", " next_configuration = conditional_task_with_prior_mean.record_result(configuration=configuration, score=score)\n", " configurations.append(next_configuration)\n", "\n", "conditional_task_with_prior_mean.complete()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Do Not Use Prior Mean" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'type': 'default', 'values': {'y': {'x_1': 0.0}}}]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "configurations = conditional_task_without_prior_mean.generate_configurations(initial_configurations)\n", "\n", "demo = Demo(['x_1', 'x_2', 'y'])\n", "\n", "display(configurations)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "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+vjjjzVv3jwdfvjhuvzyy/WjH/1IJ598sg4//PCN9r/11ltr0KBBOv/88/WNb3xDJ598ctt7/eY3v5GUCzA//OEPu6x16tSpuvbaa9XS0qL33ntPI0eObAs9Z5555iYfAwAAio2JzCXmkEMO0bvvvqvm5mZFhK688krNnDlTM2fO1Guvvabvfe972mOPPTRjxgztu+++uvLKK/W3f/u3G+2zsrJSzz33nL71rW/pvvvu0wknnNDhdl19jXzFihX6y7/8S9199916+eWXdcEFF6xzrZ0tttii5x8YAIA+QugpMXPmzNGaNWu03Xbb6b6YEPUAABEkSURBVPjjj9dtt92mjz/+WJL09ttva+nSpVq0aJGqqqp0zjnn6PLLL9cLL7wgSdpqq6300UcfbdDnxx9/rOXLl+ukk07STTfd1DaqdOihh+rOO++UJDU2NuprX/vaRmtrDTjbb7+9Pv74Y919990F+9wAABQbp7dKQOucHil3i4ZJkyZpwIABOu644zR79mwdcsghkqQtt9xSt99+u1577TVdccUVqqio0MCBA3XzzTdLkurr63XiiSdq6NCh60xk/uijj3TqqadqxYoVigjdeOONkqSf/vSnGjdunK677rq2icwb88UvflEXXHCB9t13X1VXV+uggw4qxuEAAKAoHBFZ19Bnamtro6mpaZ222bNna++9986oorRx7AEAhWZ7RkTUdrSO01sAACAJhB4AAJAEQg8AAEgCoQcAACSB0AMAAJJA6AEAAEkg9PRQY6NUXS1VVOSeGxt73+eAAQNUU1PT9rjmmms2qZ/zzjuvywsGnn/++Xr11VclSf/wD//QrX7X3+7QQw/dpPoAAMgS1+npwbViGhul+nqppeXztqoqqaFBqqvb9Lq23HLLtqsu98Z5552nk08+Wd/+9rcL+r6Fqm99XKcHAFBoJXedHttn2H7F9lrbHRZme0/bM9s9PrR9aX7dVbbfbrfupL6oe8KEdQOPlFueMKHw77V8+XLtueeemjt3riTprLPO0s9//nNJuRDygx/8QAcccICOOeYYNTc3b7D/E088of3331/77ruvxo0bp5UrV0qSjjrqKDU1NWn8+PFtV4Kuyye20047TQceeKBGjhyphoYGSepwuy233FJS7urRV1xxhfbZZx/tu+++uuuuuyRJTz75pI466ih9+9vf1l577aW6ujqlFK4BACUqIvr8IWlvSXtKelJSbTe2HyDpHUkj8stXSbq8p+974IEHxvpeffXVDdo6Y0dIGz7sbnfRoYqKihg1alTb484774yIiClTpsTo0aNj8uTJcfzxx7dtLyluv/32iIi4+uqr46KLLoqIiLFjx8avf/3r+PTTT2PYsGExd+7ciIg499xz48Ybb4yIiCOPPDKef/75iIjYYost1qlj2bJlERHR0tISI0eOjHfffbfD7VqX77777hgzZkysXr063nnnndhll11i0aJFMXXq1Nh6663jrbfeijVr1sTo0aPjqaee2uBz9+TYAwDQHZKaopMckMlIT0TMjoi5PdjlGEn/HRELilVTdwwf3rP27tp8883b7qQ+c+ZMnXnmmZKkY489Vvvuu68uuugi3XrrrW3bV1RUtG1zzjnn6Omnn16nv7lz52rXXXfVHnvsIUkaO3aspk2b1mUdP/3pTzVq1CiNHj1ab731lubNm7fR7Z9++mmdddZZGjBggHbYYQcdeeSRev755yVJBx98sIYNG6aKigrV1NRo/vz53T4eAAAUQ7lMZP6OpMnrtV1s+yXbt9netrMdbdfbbrLd1NFpoJ6YODE3h6e9qqpcezGsXbtWs2fP1uabb6733nuv0+1sr7Mcm3Aq6cknn9Tjjz+u6dOn68UXX9T+++/fdlf1zmzsfTbbbLO21wMGDNDq1at7XBOAtBTjiyJAe0ULPbYftz2rg8epPeznC5JOkfTrds03S/qypBpJiyX9pLP9I6IhImojonbw4MGb8Ek+V1eXm7Q8YoRk5557O4l5Y2688Ubtvffemjx5ssaNG6dVq1ZJyoWh1m9p3XHHHfra1762zn577bWX5s+fr9dee02S9O///u868sgjN+h/4MCBbX0uX75c2267raqqqjRnzhw9++yzHW7X3hFHHKG77rpLa9asUXNzs6ZNm6aDDz64MB8eQFJavyiyYEFu4sCCBbllgg8KqbJYHUfEmAJ1daKkFyJiSbu+217b/rmkBwv0Xl2qqyt8yGmdKNzqhBNO0Lhx43Trrbfqueee01ZbbaUjjjhCf//3f6+rr75aW2yxhV555RUdeOCB2mabbdomELcaNGiQfvnLX+qMM87Q6tWrddBBB+nCCy/c4H3r6+u133776YADDtBtt92mf/mXf9F+++2nPffcU6NHj+5wu8Z2/wc6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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x_1x_2yScoreConfiguration Type
1NoneNone0.00000031.7201exploitation
11NoneNone-0.45471229.4306exploitation
0NoneNone0.00000011.7201default
7NoneNone-2.0246404.99033exploitation
5NoneNone3.742500-3141.53exploitation
2NoneNone-5.027339-5045.61exploitation
10NoneNone-5.113011-5795.42exploitation
15NoneNone4.439549-9385.37exploitation
13NoneNone-5.866769-16646.1exploitation
6NoneNone5.485031-34562.7exploitation
12NoneNone-6.850455-51034.2exploitation
18NoneNone6.023823-60810.9exploitation
8NoneNone6.142009-68348.6exploitation
16NoneNone6.978654-146471exploitation
9NoneNone7.393434-206385exploitation
4NoneNone-8.984586-325440exploitation
19NoneNone8.400990-439440exploitation
17NoneNone8.453560-455924exploitation
3NoneNone8.828187-588863exploitation
14NoneNone10.632505-1.76036e+06exploitation
\n", "
" ], "text/plain": [ " x_1 x_2 y Score Configuration Type\n", "1 None None 0.000000 31.7201 exploitation\n", "11 None None -0.454712 29.4306 exploitation\n", "0 None None 0.000000 11.7201 default\n", "7 None None -2.024640 4.99033 exploitation\n", "5 None None 3.742500 -3141.53 exploitation\n", "2 None None -5.027339 -5045.61 exploitation\n", "10 None None -5.113011 -5795.42 exploitation\n", "15 None None 4.439549 -9385.37 exploitation\n", "13 None None -5.866769 -16646.1 exploitation\n", "6 None None 5.485031 -34562.7 exploitation\n", "12 None None -6.850455 -51034.2 exploitation\n", "18 None None 6.023823 -60810.9 exploitation\n", "8 None None 6.142009 -68348.6 exploitation\n", "16 None None 6.978654 -146471 exploitation\n", "9 None None 7.393434 -206385 exploitation\n", "4 None None -8.984586 -325440 exploitation\n", "19 None None 8.400990 -439440 exploitation\n", "17 None None 8.453560 -455924 exploitation\n", "3 None None 8.828187 -588863 exploitation\n", "14 None None 10.632505 -1.76036e+06 exploitation" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_iterations = 20\n", "\n", "for i in range(number_of_iterations):\n", " configuration = configurations[i]\n", " if 'x_1' in configuration.values['y'].keys():\n", " score = prior_means_example.conditional_target({'id_x_1': configuration.values['y']['x_1'], 'id_y': 0})\n", " else:\n", " score = prior_means_example.conditional_target({'id_x_2': configuration.values['y']['x_2'], 'id_y': 1})\n", " demo.display(configuration, score, i)\n", " next_configuration = conditional_task_without_prior_mean.record_result(configuration=configuration, score=score)\n", " configurations.append(next_configuration)\n", "\n", "conditional_task_without_prior_mean.complete()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } } }, "nbformat": 4, "nbformat_minor": 2 }