{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# OPTaaS Multi-Objective\n", "\n", "### Note: To run this notebook, you need an API Key. You can get one here.\n", "\n", "OPTaaS can optimize multiple objectives within a single Task. Your scoring function should return a dictionary of scores for each objective. You can also optionally return a dictionary of variances for each objective (i.e. return a tuple of dictionaries)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define your parameters and objectives\n", "We will use [this multi-objective optimization example](https://sop.tik.ee.ethz.ch/download/supplementary/testproblems/dtlz2/index.php#Formulation):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import math\n", "\n", "from mindfoundry.optaas.client.parameter import FloatParameter\n", "from mindfoundry.optaas.client.objective import Objective\n", "from mindfoundry.optaas.client.goal import Goal\n", "\n", "parameters=[\n", " FloatParameter('x1', minimum=0, maximum=1),\n", " FloatParameter('x2', minimum=0, maximum=1)\n", "]\n", "\n", "objectives = [\n", " Objective(\"f1\", goal=Goal.max), # or goal=Goal.min as appropriate\n", " Objective(\"f2\", goal=Goal.max) # you can also specify known_min_score and known_max_score\n", "]\n", "\n", "def scoring_function(x1, x2):\n", " g = ((x1 - 0.5) ** 2) + ((x2 - 0.5) ** 2)\n", " x1_pi2 = x1 * math.pi / 2\n", " f1 = ((1 + g) * math.cos(x1_pi2))\n", " f2 = ((1 + g) * math.sin(x1_pi2))\n", " return {\"f1\": f1, \"f2\": f2}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect to OPTaaS using your API Key" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from mindfoundry.optaas.client.client import OPTaaSClient\n", "\n", "client = OPTaaSClient('https://optaas.mindfoundry.ai', '')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create your Task" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "task = client.create_task(\n", " title='Multi-objective Example',\n", " parameters=parameters,\n", " objectives=objectives,\n", " initial_configurations=4\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run your Task\n", "At the end we will retrieve the set of Pareto front Results. These are the Results where, for each objective, the score cannot be improved without reducing the score for another objective." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running task \"Multi-objective Example\" for 30 iterations\n", "\n", "Iteration: 0 Score: {'f1': 0.7071067811865476, 'f2': 0.7071067811865475}\n", "Configuration: {'x1': 0.5, 'x2': 0.5}\n", "\n", "Iteration: 1 Score: {'f1': 1.0393644740751975, 'f2': 0.430518861410726}\n", "Configuration: {'x1': 0.25, 'x2': 0.75}\n", "\n", "Iteration: 2 Score: {'f1': 0.43051886141072604, 'f2': 1.0393644740751975}\n", "Configuration: {'x1': 0.75, 'x2': 0.25}\n", "\n", "Iteration: 3 Score: {'f1': 0.8574530376869998, 'f2': 0.5729318028014647}\n", "Configuration: {'x1': 0.375, 'x2': 0.375}\n", "\n", "Iteration: 4 Score: {'f1': 4.118843994562698e-08, 'f2': 1.311068760938587}\n", "Configuration: {'x1': 0.99999998, 'x2': 0.7471209844157051}\n", "\n", "Iteration: 5 Score: {'f1': 0.09592193816780585, 'f2': 1.4567384014126048}\n", "Configuration: {'x1': 0.9581408891314421, 'x2': 0.0}\n", "\n", "Iteration: 6 Score: {'f1': 1.1752659197219903, 'f2': 0.5522576509385636}\n", "Configuration: {'x1': 0.2796537691999611, 'x2': 0.0}\n", "\n", "Iteration: 7 Score: {'f1': 0.4164848656933371, 'f2': 1.2727990678700287}\n", "Configuration: {'x1': 0.7986765186547115, 'x2': 0.99999998}\n", "\n", "Iteration: 8 Score: {'f1': 0.6372316613982189, 'f2': 1.1079497568369399}\n", "Configuration: {'x1': 0.6677206544264276, 'x2': 0.0}\n", "\n", "Iteration: 9 Score: {'f1': 0.7853418846852135, 'f2': 0.9786915387002382}\n", "Configuration: {'x1': 0.5695002799034684, 'x2': 0.99999998}\n", "\n", "Iteration: 10 Score: {'f1': 0.2996334146590194, 'f2': 1.3471648754563859}\n", "Configuration: {'x1': 0.860672395860025, 'x2': 0.99999998}\n", "\n", "Iteration: 11 Score: {'f1': 0.27096842792228526, 'f2': 1.364096007108697}\n", "Configuration: {'x1': 0.8751648295134814, 'x2': 0.0}\n", "\n", "Iteration: 12 Score: {'f1': 0.6765313066411998, 'f2': 1.0751481701020844}\n", "Configuration: {'x1': 0.6424451308839596, 'x2': 0.99999998}\n", "\n", "Iteration: 13 Score: {'f1': 0.7795915234218058, 'f2': 0.9840004819662557}\n", "Configuration: {'x1': 0.5734595718837381, 'x2': 0.0}\n", "\n", "Iteration: 14 Score: {'f1': 0.7788805899434732, 'f2': 0.9846551702225278}\n", "Configuration: {'x1': 0.5739482921665194, 'x2': 0.0}\n", "\n", "Iteration: 15 Score: {'f1': 0.27668935894543406, 'f2': 1.3607574498971329}\n", "Configuration: {'x1': 0.8722940463621401, 'x2': 0.99999998}\n", "\n", "Iteration: 16 Score: {'f1': 0.4113293194354817, 'f2': 1.2762642468118035}\n", "Configuration: {'x1': 0.8015144651650478, 'x2': 0.0}\n", "\n", "Iteration: 17 Score: {'f1': 1.16208933052274, 'f2': 0.5693873859019918}\n", "Configuration: {'x1': 0.2900378594243644, 'x2': 0.99999998}\n", "\n", "Iteration: 18 Score: {'f1': 0.49868273799395746, 'f2': 1.2152080249424346}\n", "Configuration: {'x1': 0.7520923609477937, 'x2': 0.99999998}\n", "\n", "Iteration: 19 Score: {'f1': 0.823213807070615, 'f2': 0.9431211120917674}\n", "Configuration: {'x1': 0.5431506072927972, 'x2': 0.0}\n", "\n", "Iteration: 20 Score: {'f1': 0.8270894739656314, 'f2': 0.9394209151689157}\n", "Configuration: {'x1': 0.5404278743492107, 'x2': 0.99999998}\n", "\n", "Iteration: 21 Score: {'f1': 0.6831757365569862, 'f2': 1.0694969008566544}\n", "Configuration: {'x1': 0.6381142020364394, 'x2': 0.0}\n", "\n", "Iteration: 22 Score: {'f1': 0.8370902299430105, 'f2': 0.9298208432046696}\n", "Configuration: {'x1': 0.533380305465506, 'x2': 0.0}\n", "\n", "Iteration: 23 Score: {'f1': 0.7429468741187083, 'f2': 1.0172717043616415}\n", "Configuration: {'x1': 0.5984235477977614, 'x2': 0.99999998}\n", "\n", "Iteration: 24 Score: {'f1': 0.6740670480706229, 'f2': 1.0772363132257081}\n", "Configuration: {'x1': 0.6440471663477743, 'x2': 0.99999998}\n", "\n", "Iteration: 25 Score: {'f1': 0.5965258202153979, 'f2': 1.1408083469630266}\n", "Configuration: {'x1': 0.6932782772637422, 'x2': 0.0}\n", "\n", "Iteration: 26 Score: {'f1': 0.30016699935835744, 'f2': 1.3468449043351842}\n", "Configuration: {'x1': 0.8604000451071535, 'x2': 0.0}\n", "\n", "Iteration: 27 Score: {'f1': 0.16080975748499476, 'f2': 1.4245097056049982}\n", "Configuration: {'x1': 0.9284363664329726, 'x2': 0.99999998}\n", "\n", "Iteration: 28 Score: {'f1': 0.6050539453579511, 'f2': 1.1340177648914858}\n", "Configuration: {'x1': 0.6879766387152254, 'x2': 0.99999998}\n", "\n", "Iteration: 29 Score: {'f1': 0.6799645231375991, 'f2': 1.0722319646634353}\n", "Configuration: {'x1': 0.6402093797980355, 'x2': 0.0}\n", "\n", "Task Completed\n", "\n" ] } ], "source": [ "pareto_set = task.run(scoring_function, max_iterations=30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot your results" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7MAAAHjCAYAAADxD0ixAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XuclnP+x/HXt9JpHUpRzaTtQGHLTsxgI4xTSYTS+q1TTm05C1mHHHJOSCSWJYfECJVDRdwRas10UNlK5NBBSpYVSofr98dlVKSo+56rmXk9H4953N3XXHPNZ/Kw9j3f7/fzCVEUIUmSJElSaVIh6QIkSZIkSfq9DLOSJEmSpFLHMCtJkiRJKnUMs5IkSZKkUscwK0mSJEkqdQyzkiRJkqRSxzArSZIkSSp1DLOSJEmSpFLHMCtJkiRJKnUqJV3A71W7du2oYcOGSZchSZIkScqAiRMnfhFF0Q4bu6/UhdmGDRtSVFSUdBmSJEmSpAwIIXzyW+5zm7EkSZIkqdQxzEqSJEmSSh3DrCRJkiSp1Cl1Z2YlSZIkKR1WrFjBvHnzWLZsWdKllEtVq1alfv36bLXVVpv09YZZSZIkSeXSvHnz2GabbWjYsCEhhKTLKVeiKGLJkiXMmzePRo0abdIz3GYsSZIkqVxatmwZtWrVMsgmIIRArVq1NmtV3DArSZIkqdwyyCZnc//uDbOSJEmSpFLHMCtJkiRJG9GnD6RS615LpeLrm+O5554jhMDMmTN/uvbxxx/TvHlzAMaOHUv79u1/8XVjx45lu+22o2XLluy6665ccsklm1fIenTp0oWhQ4cC0K9fP7777ru0f4/NYZiVJEmSpI3Iy4POndcE2lQqfp+Xt3nPHTJkCPvvvz9PPvnk7/7a1q1bM3nyZCZPnswLL7zAW2+9tXnFbIBhVpIkSZJKofx8KCiIA+zVV8evBQXx9U21dOlS3nrrLf71r39tUpgtVq1aNXJycpg/fz4A3377Laeffjp5eXm0bNmS4cOHA/Dee++x9957k5OTwx577MHs2bPXWQUG6Nu3L9dee+06z+/fvz8LFiwgPz+f/Px8Vq1aRZcuXWjevDktWrTgzjvv3OTaN4ejeSRJkiTpN8jPh+7d4frroVevzQuyAMOGDaNt27Y0bdqU7bffnkmTJrHnnnv+7uf897//Zfbs2RxwwAEA3HjjjRx88ME89NBDfPXVV+y9994ceuih3HfffVxwwQWceOKJ/PDDD6xatYrPP/98o88///zzueOOO0ilUtSuXZuJEycyf/58pk+fDsBXX331u2tOB1dmJUmSJOk3SKVg4MA4yA4c+MsztL/XkCFDOOGEEwA44YQTGDJkyO/6+nHjxrHHHntQt25d2rdvT926dQF4+eWXueWWW8jJyeGggw5i2bJlfPrpp/zlL3/hpptu4tZbb+WTTz6hWrVqm1R348aNmTNnDueddx6jRo1i22233aTnbC5XZiVJkiRpI4rPyBZvLc7P37ytxkuWLOG1115j+vTphBBYtWoVIQT6/I6OUq1bt+aFF17g/fffZ//99+fYY48lJyeHKIp45plnaNas2Tr377bbbuyzzz68+OKLtGnThgcffJCmTZuyevXqn+75LXNfa9asybvvvsvo0aMZMGAABQUFPPTQQ7/9h08TV2YlSZIkaSMKC9cNrsVnaAsLN+15Q4cO5ZRTTuGTTz7h448/Zu7cuTRq1Ig333zzdz+radOmXH755dx6660AtGnThrvvvpsoigCYPHkyAHPmzKFx48acf/75HH300UydOpU6deqwaNEilixZwvLly3nhhRfW+z222WYbvvnmGwC++OILVq9eTceOHbn++uuZNGnSpvwVbDbDrNIqUy3LJUmSpCT17PnLFdj8/Pj6phgyZAjHHnvsOtc6duzIE088sUnP69atG2+88QYfffQRvXr1YsWKFeyxxx40b96cXr16AfDUU0/RvHlzcnJymDlzJqeccgpbbbUVV199Nfvssw/t27dn1113Xe/zu3btyhFHHEF+fj7z58/noIMOIicnhy5dunDzzTdvUs2bKxSn9dIiNzc3KioqSroM/Yri7RfD7lvIfkfXIvXmVmnp9CZJkiSl24wZM9htt92SLqNcW98/gxDCxCiKcjf2tZ6ZVVoVb7f4ts2ZLKswju+ig3nz7DY0a9gGaJR0eZIkSZLKCLcZK+3y82HRcd14ZPkJtKo2mWb9ukPjxtC0KZx7Ljz/PCxdmnSZkiRJkkoxw6zSLpWCi15tz/xe99O00kdMGDQT7roLdtkFHn4Yjj4att8+Tr233AKTJ8NaHdQkSZIkaWMMs0qrtVuW9+4NBU8HjrqkGakW58OLL8KXX8KYMXDhhfGfL78c9twT6tWDk0+Gxx+HRYuS/jEkSZIkbeEMs0qrjbYsr1IFDjkkbm/87ruwYAEMGhRfGzUqDrR16sQB9/LLYexY+OGHhH4aSZIkSVsquxlry7F6dbzlePTo+OPtt2HlSvjDH+JU3KZN/LHzzhBC0tVKkiSplLObcfI2p5uxK7PaclSoAHvtBVdcAa+/DkuWwLBhcMop8J//wHnnxU2kmjSB7t3jz/3vf0lXLUmSJG2SihUrkpOTQ/PmzTn++OP57rvv0vLcQYMGsWDBgt/1NV26dKFRo0bk5OSQk5ND//7901LL2LFjefvtt9PyrJ8zzGrLte220KED3HsvfPghzJ4N99wDzZvDY4/BscdCrVpwwAFw441QVGQjKUmSJJUa1apVY8qUKUyfPp3KlStz3333/eavXbVq1a9+blPCLMBtt93GlClTmDJlCueff/7v+p6/JpNh1jmzKj123jn+OOec+Bzt22+v2ZJ81VXxR61acNhh8Xbkww+HrKykq5YkSVJpcOGFMGVKep+ZkwP9+v2mW1u3bs3UqVMBOOaYY5g7dy7Lli3jggsuoGvXrgBsvfXW9OjRg9GjR3P77bdTrVo1evTowdKlS6lduzaDBg3irbfeoqioiBNPPJFq1aoxfvx43n77bS655BJWrlxJXl4eAwcOpEqVKr+prp9/z+XLl6/3WQ0bNuTUU0/l+eefZ8WKFTz99NNUrVqV++67j4oVK/L4449z991307p16037u1wPV2ZVOlWuDAcdBDffDJMmweefx52Q27WLWyqfdhpkZ8Mee8Cll8YdlJctS7pqSZIk6RdWrlzJyJEjadGiBQAPPfQQEydOpKioiP79+7NkyRIAvv32W5o3b86///1v9tlnH8477zyGDh3KxIkTOf3007nyyivp1KkTubm5DB48mClTphBCoEuXLjz11FNMmzaNlStXMnDgwPXWcemll/60zXjatGm/+J65ubkbfFbt2rWZNGkS3bt3p2/fvjRs2JBu3bpx0UUXMWXKlLQGWXBlVmXFjjvCiSfGH6tXw9Spa1Zt77oL+vaFatXiAFzcSKpZMwiBPn0gL29NB2aI83BhIfTsmdhPJEmSpJL0G1dQ0+n7778nJycHiFdmzzjjDAD69+/Pc889B8DcuXOZPXs2tWrVomLFinTs2BGAWbNmMX36dA477DAg3gJcr169X3yPWbNm0ahRI5o2bQrAqaeeyoABA7jwwgt/ce9tt91Gp06d1rn28++5oWcdd9xxAOy11148++yzm/E389sYZlX2VKgQb+nIyYHLLoOlS+MRP8XhduTI+L4GDaBNG9plHU6HTofy4NAa5OevOytXkiRJypTiM7NrGzt2LGPGjGH8+PFUr16dgw46iGU/7jCsWrUqFStWBCCKIv70pz8xfvz4DX6PzZ1e8/PvuSHFW5crVqzIypUrN+v7/hZuM1bZt/XW0L493H03vP8+zJkDAwfGs2yffJLm1x3PB1/V4g+Ht2JM/o1cc9w0Cp6K1lmplSRJkkrC119/Tc2aNalevTozZ85kwoQJ672vWbNmLF68+Kcwu2LFCt577z0AttlmG7755hsAdt11Vz7++GM++OADAB577DEOPPDATaptU561di3pZphV+dOoEXTrBs89F4//GTeOcMUVZO+wgkPHXsUbX+1B/plN4iYAr70GK1YkXbEkSZLKibZt27Jy5Ur22GMPevXqxb777rve+ypXrszQoUO57LLL+POf/0xOTs5PXYO7dOlCt27dyMnJIYoiHn74YY4//nhatGhBhQoV6Nat2ybVVrVq1d/9rKOOOornnnuOnJwcxo0bt0nf99eEzV12Lmm5ublRUVFR0mWojCneWnzpSZ+x8MHnuaL5CGpPHgPLl0ONGnFjqaOPhrZtYbvtki5XkiRJaTBjxgx22223pMso19b3zyCEMDGKotyNfa0rsyr31j4j2/POehw1oiu7ffACrz+7BJ59Fo45Bl5+GU44AXbYIR75c8898OmnSZcuSZIklVuGWZV7hYVxkC0+I5ufH7//9/Q/wLHHwsMPw8KFMG5cvPX400/hvPPgj3+Eli3hmmtg4kQoZbscJEmSpNLMbcbSppg1C0aMiD/efjseB5SdHW9FPvroOBH/xkHUkiRJSsaMGTPYddddCSEkXUq5FEURM2fOdJuxVKKaNYNLL41XaxcujFdv994bHnkEjjgCateG44+Hxx6DL79MulpJkiStR9WqVVmyZMlmj6/R7xdFEUuWLKFq1aqb/IyMrcyGEB4C2gOLoihqvoH78oAJwF+jKBq6see6Mqst2rJl8Oqra1ZtFy6EihVh//3XrNruvHPSVUqSJIl4nM28efN+muOqklW1alXq16/PVltttc7137oym8kwewCwFHj018JsCKEi8AqwDHjIMKsyZfVqKCpaE2ynTYuv7777mmC7zz5QwQ0SkiRJUrHEtxlHUfQGsLH9lecBzwCLMlWHlJgKFeKtxzfcAFOnwocfQr9+ULcu3HYbtGoF9erBmWfGYfe775KuWJIkSSo1ElsSCiFkA8cC9yVVg1SiGjeGCy6ItyEvXgyDB8eNop5+Gjp0iM/ZdugA//oXfP550tVKkiRJW7RKCX7vfsBlURSt2lj3sBBCV6ArQIMGDUqgNCnDataEv/0t/vjhB3j99TXbkUeMgBBg333jrcgdOsCuu8bXJEmSJAEZHs0TQmgIvLC+M7MhhI+A4v93Xhv4DugaRdGwDT3TM7Mq06II3n03DrTDh8OkSfH1nXdeE2xbtYJKSf4eSpIkScqcxBtA/VhEQ34lzP7svkE/3mcDKGlt8+bB88/H4fa11+JV3O23hyOPjMNtmzawzTZJVylJkiSlTeINoEIIQ4DxQLMQwrwQwhkhhG4hhG6Z+p5SmVO/PnTvDiNHxudsn346DrIvvhjPsa1dO55rO3AgzJ+fdLWSJElSicnoymwmuDIrAStXwltvrdmO/OGH8fW99oq3Ih99NOyxh+dsJUmSVOpsEduMM8EwK/1MFMGMGWuaR02YEF9r0GDNOdsDDoDKlZOuVJIkSdoow6xUXi1cGG9DHj4cXnkFli2DbbeNtyN36BC/1qiRdJWSJEnSehlmJcF338GYMXGwff75+NxtpUrxSm2HDnDUUdCoUdJVSpIkST8xzEpa16pV8M47a87ZzpgRX2/RYs125L32ggoZ6wsnSZIkbZRhVtKGzZ4dr9YOHw5vvgmrV0O9evFqbYcOcPDBULVq0lVKkiSpnEl8NI+kLdwuu0CPHvD667BoETz6KLRqBYMHx+N/ateGjh3hkUfgiy9++rI+fSCVWvdRqVR8XZIkSSophllJUKsWnHwyDB0aB9eRI+P3EyZAly5Qpw60bg19+3JA3ffp3HlNoE2loHNnyMtL9CeQJElSOeM2Y0m/Lopg0qR4K/KIEfDuuwB8u1Mz/vVFB6qdcAwXPbkPvW+oQI8ea74slYLCQujZM6G6JUmSVGp5ZlZS+n3yyU/zbFe9NpaKq1fyZbUsno2OY6+bOtLy/Nak3qhI585QUAD5+UkXLEmSpNLGMCspY1IpOLPTV9za+gWqjXyGNqtHUWnlMpb+YUeeXnUcOTccT8sLDojHAEmSJEm/gw2gJGVE8RnZB4fWoNOwk6g+6jl23m4x97R+ipe+PZATVz1Ky0sOgaws+Pvf4zm3K1cmXbYkSZLKGMOspN+lsHDdLcT5+XD+FVvzj0mdmd6rgJ23Xcz0a4fGo30GD4bDDoO6deGss2D0aFixItkfQJIkSWWC24wlbZbildrigLvO+32/h1Gj4Omn45m2S5fC9tvDMcdAp05wyCG0O6Yyhx7KOg2k7rgjXtB96aXkfi5JkiQlw23GkkrE+lZqCwri61SrBsceC088AYsXw7BhcMQRcbht1w7q1OG2xV147eIX6dfnByAOspdcAocemtzPJEmSpC2fK7OSSt7y5fDyy/Fc2+HD4euv+YrtGL/jMfRb9Dfa9jmYiy61eZQkSVJ5ZDdjSaXD8uUwZgwjT3+aVoueYzv+B3XqwAknwN/+Bnl5EELSVUqSJKmEuM1YUulQpQp3zDqSIxcPouN+n9ORZ5i9434wcCDssw80awbXXgvvv590pZIkSdqCGGYlJar4jGzfvjDmzarsd/txNJv+DAOu/hz+9S/YaSfo3TsOtXl50K8ffPZZ0mVLkiQpYYZZSYkaMyYOssXdjHv0iN+/+FYNOP10ePVVmDsXbr8dVq+Giy6C+vXjkT+DBsH//pdo/ZIkSUqGZ2YllS4zZ8bdkQcPhjlzoEoVOOooOPHEuFNylSpJVyhJkqTN4JlZSWXTrrvG244/+ADGj4euXeH11+MRQHXrwllnwdix8SquJEmSyizDrKTSKQTYd1/o3x8WLICRI+MV2iefjIfdNmgAl14KU6ZAKduBIkmSpI0zzEoq/SpVgrZt4dFH4fPPYcgQ2HPPuFlUy5bwpz/BjTfCRx8lXakkSZLSxDArqWypXj2eUTtiBCxcGI/4qVULrroKGjeGVq1gwABYvDjpSiVJkrQZDLOSyq5ataBbNxg3Dj7+GG6+Gb75Bs49F+rVgyOPjBtJLV2adKWSJEn6nQyzksqHP/4R/vEPmDYNpk6Nh9tOmwYnnQR16sTdkF98EVasSLpSSZIk/QaG2TTp0wdSqXWvpVLxdUlbmBYt4JZb4tXaN96Ak0+GUaOgfft4xfbss+Gtt2wcJUmStAUzzKZJXh507rwm0KZS8fu8vGTrkrQBFSpA69Zw333w2WfxOdtDD4VBg2D//eMztldeCe+9l3SlkiRJ+pkQlbKVh9zc3KioqCjpMtarOMB27x73nCkoiCeESCplvvkGhg2Lz9O+8ko8s/bPf463Ip9wAuy0U9IVSpIklVkhhIlRFOVu7D5XZtMoPz8OstdfH78aZKVSaptt1mw9XrAgnmVbtSr07BmfvT3oIHjgAfjyy6QrlSRJKrcMs2mUSsUrsr16xa8/P0MrqRSqUwfOOw8mTIDZs+G66+KRP127Qt26cMwx8PTT8P33SVcqSZJUrhhm06R4i3FBAfTuHb+ufYZWUhmw887xb6tmzICiojjkvvNO/C97nTrQpQu8/DKsXJl0pZIkSWWeYTZNCgvXPSObnx+/LyxMti5JGRAC7LUX3H47zJ0LY8bA8cfDc89BmzZQvz5ceGH8PwClrC+BJElSaWEDKElKl2XL4lm1TzwBL7wAP/wAu+wCf/tb3Dxql12SrlCSJGmLZwMoSSppVatCx47wzDPw+efw4INx5+PevaFp03hWV79+8ZlbSZIkbRbDrCRlQo0acMYZ8Oqr8Vbkvn1h1Sq46CLIzobDDovn2f7vf0lXKkmSVCoZZiUp07Kz4eKLYdIk+M9/4IorYM4cOO002HHH+LztsGGwfHnSlUqSJJUahllJKkm77RYPo/7gAxg/Hs46C15/HY49Nh7107UrjB0Lq1cnXakkSdIWzTArSUkIAfbdF+6+GxYsgJEjoX37uHlUfj40aACXXgpTptgRWZIkaT0Ms5KUtEqVoG1beOwxWLQIhgyBli3jZlEtW0Lz5nDjjfDRRwD06fPLGdapVHxdkiSpvDDMStKWpHp1OOEEeP75uOvxwIGw/fZw1VXQuDHstx/HzB9A906Lfwq0qRR07hw3S5YkSSovnDMrSaXBxx/Dk0/C4MEwfTqrK1bi1QqH8++mJ3PP3A4MGVaN/Pz41lQKCguhZ89EK5YkSdokzpmVpLKkYUP4xz9g2jSYOpUKl1xMXrVpXPXe/zHzf/Voemc3mDCB1GuRq7SSJKlcMMxKUmnTogWpNrfQdKuPefikVxm11dHUfP5R+MtfqHt4C97u3I/8Fl8kXaUkSVJGGWYlqZQpPiP71NMVOO2xg6kz+lEaV1vIWfyTretuzS73XhTPtj3hBBgzxjE/kiSpTDLMSlIpU1gIBQX8dEYW4PuttuWjQ85iz+UTeOfBqdC9O7zyChx2GDRpAjfcAPPmJVe0JElSmhlmJamU6dmTdZo9de4Mw4bFi7AFBXDkP1qQ6tAP5s+Px/w0aQK9esEf/xjPsh02DFasSPaHkCRJ2kyGWUkqxX6+SpufH78vLASqVl2z1fjDD+Hyy2HyZDj2WNhpp7ih1OzZidYvSZK0qRzNI0nlycqVMHIkPPggvPgirFoFBx4IZ54JHTtCtWpJVyhJkso5R/NIkn6pUiU46igYPhw+/RRuuik+S3vyyZCVBeedB+++m3SVkiRJG2WYlaTyKisr3nr8/vvw2mvQrh088ADk5MSDau+7D77+OukqJUmS1sswK0nlXYUK8WHbwYNhwQLo3x+WL487IterB126wJtvQik7liJJkso2w6wkaY3tt1+z1fidd+Ltx888A61bw+67w+23w6JFSVcpSZJkmJUkrUcI8Vbj+++Hzz6Dhx6Kg+4ll0D9+nD88TB6dNxASpIkKQGGWUnShm29NZx2Grz1Frz3Xrxym0pB27bQuDFcd13cTEqSJKkEGWYlSb9d8Vbj+fPhqaegWTO49lpo2BCOOCLekvzDD0lXKUmSygHDrCTp96tSBTp3hpdfhjlz4KqrYNo06NQp3oZ86aUwc2bSVUqSpDLMMCtJ2jyNGkHv3vDJJ/Dii7D//tCvH+y2W9w46pFH4Lvvkq5SkiSVMYZZSVJ6VKwYz6p99lmYOxduvRU+/zwe7VOvXjzqZ+LEpKuUJEllhGFWkpR+detCz54waxa8/jp06ACDBkFuLuy5J9x7L3z1VdJVSpKkUswwK0nKnBDggAPg0UfjET8DBkAUwTnnxKu1p5wCb7wRX5MkSfodDLOSpJJRowacfTZMnhxvNz7tNBg+HA48MO6K3KdPvC1ZkiTpNzDMSpJKXvFW488+i7cf16kDl10Wd0I+7jh46SVYtSrpKiVJ0hbMMCtJSk716nDqqTBuHMyYARdeCG++CUceGc+uvfpq7vvHx6RS635ZKhUv5EqSpPLLMCtJ2jLsuivcdhvMmwdDh0Lz5nDDDfy9T2NoczjTrymA5ctJpeIRt3l5SRcsSZKSFKJS1nQjNzc3KioqSroMSVJJ+PRTePhhlt37EFUXfcrS6jvwQHQW+wzqTqvO9ZOuTpIkZUAIYWIURbkbu8+VWUnSlqtBA7jmGqoumMOj/zeSMd+14oLvb6bV3xpCp07x2J9S9ktZSZKUHoZZSdIWL/VGRS5+pS2Teg0jt+YcPu3UA157DQ46CP78Z/jnP+Hbb5MuU5IklaCMhdkQwkMhhEUhhOm/8vkTQwhTf/x4O4Tw50zVIkkqvYrPyBYUQO/ecPszDdnr1T68PngePPggVKgAf/973An54othzpykS5YkSSUgkyuzg4C2G/j8R8CBURTtAVwP/DODtUiSSqnCwjjI5ufH7/Pz4/f/nlYdzjgjnls7bhwcfjjcdRfsvDO0bw+jR8Pq1ckWL0mSMiajDaBCCA2BF6Ioar6R+2oC06Moyt7YM20AJUn6VfPnw/33xx+LFkHTpnDOOdClC2y7bdLVSZKk36C0NYA6AxiZdBGSpFIuOzvei/zpp/D441CzJlxwQXz9nHPiWbaSJKlMSDzMhhDyicPsZRu4p2sIoSiEULR48eKSK06SVDpVqQInnggTJsA778Bxx8Xna3ffHQ47DIYPh1Wrkq5SkiRthkTDbAhhD+BBoEMURUt+7b4oiv4ZRVFuFEW5O+ywQ8kVKEkq/fLy4JFHYN48uPFGmDkTjjkGmjSBPn1gya/+50eSJG3BEguzIYQGwLPAyVEUvZ9UHZKkcmKHHeCKK+Cjj2DoUGjYEC67LO6CfOaZMGVK0hVKkqTfIZOjeYYA44FmIYR5IYQzQgjdQgjdfrzlaqAWcG8IYUoIwa5OkqTMq1QJOnaEsWNh6lQ45RR44glo2RJat45bJa9YkXSVkiRpIzLazTgT7GYsSUq7//4XHn4YBgyI59RmZUG3btC1K9Spk3R1kiSVK6Wtm7EkScmpWRN69ID334cXXoAWLeDqq2GnneCkk+Df/4ZS9stfSZLKOsOsJEnFKlaEI4+EUaPiRlHdu8OIEbDvvrD33vDoo7BsWdJVSpIkDLOSJK1fs2Zw110wf368/fjbb+HUU6FBA7jySpg7N+kKJUkq1wyzkiRtyDbbwNlnw3vvwSuvQKtWcMst0KgRdOoEr7/uFmRJkhJgmJUk6bcIAQ49FIYNgw8/hIsvhlQKDjoI/vxn+Oc/49VbSZJUIgyzkiT9Xg0bwq23xluNH3wQKlSAv/89nll78cVxR2RJkpRRhllJkjZV9epwxhkweTKMGwdt2kD//rDzztC+PYweDatXJ12lJEllkmFWkqTNFQLsvz88+SR8/DH06gVFRdC2Ley2Wxxw//e/pKuUJKlMMcxKkpRO2dlw3XXwySfw+OOw/fZwwQXx9XPOgRkzkq5QkqQywTArSVImVKkCJ54I48dDYSF07Bifr919dzjsMBg+HFatSrpKSZJKLcOsJEmZlpsLgwbBvHlw440wcyYccww0aQJ9+sCSJUlXKElSqWOYlSSppOywA1xxBXz0EQwdGs+qveyyuAvymWfClClJVyhJUqlhmJUkqaRVqhRvO06lYOpUOOUUGDIEWraE1q3hqadgxYqkq5QkaYtmmJUkKUktWsD998dbkG+/HRYsgBNOiGfZXn89LFyYdIWSJG2RDLOSJG0JataEHj1g9mx44YU45F59NTRoACedBBMmQBTRp0+8oLu2VCo+eiuBjonWAAAgAElEQVRJUnlimJUkaUtSoQIceSSMGgWzZkH37jBiBPzlL7D33rT/76OcfPyynwJtKgWdO0NeXrJlS5JU0gyzkiRtqZo2hbvugvnzYcAA+PZbdr/lVOasasCUI6/ktgvn07kzFBRAfn7SxUqSVLIMs5Ikbem22QbOPhveew/GjKHyga24YNktXHhXQ8bUPYn8bSe6/ViSVO4YZiVJKi1CgEMOIXXBMPJqfEDhPufR+L0RkJtL18EH8nCHYaTGrALcfixJKvsMs5IklSLFIbXvM41oNeEOJg+fS68/3E6Vzz/h0W+OpWGbZrxwxAC6HP+t248lSWWaYVaSpFKksHDdM7IHHLUdBz/fg3su+AAKCqhUrzbtR53LjO8akP/qVY72kSSVWSGKoqRr+F1yc3OjoqKipMuQJGmLk0pB5+Mjbj7qbeo90Zd2K4YTttoKTj45Hvuz++5JlyhJ0kaFECZGUZS7sftcmZUkqQwo3n5c8HTgzIf3o/qo59i3xizmtz0DBg+GP/0pHvmTSkEp+0W2JEnrY5iVJKkM+Pn24/x8uOWZXRi8370wdy707h3fdPDBkJsLTzwBK1YkW7QkSZvBbcaSJJUX338Pjz8Od9wBM2fCTjvBhRfCmWfCttsmXZ0kSYDbjCVJ0s9VqwZnnRXPq33+eWjcGC6+OA61l14ar+BKklRKGGYlSSpvKlSA9u1h7Nh463G7dnDnnXG4PflkmDIl6QolSdoow6wkSeVZbi4MGQIffADnngvDhkHLlnDooTBqFH1ujUil1v2SVAr69EmmXEmSihlmJUkSNGwYr87OnQu33gozZsARR3D2fS147uiHGTt6ObCma3JeXrLlSpJkmJUkSWvUqAE9e8JHH8Gjj7L1thXpv/R0djuiIa8cfDNndvpqna7JkiQlxTArSZJ+qXLlNednX36ZbxrtwWGpK3hvaQPyR/aEBQuSrlCSVM4ZZiVJ0q8LgVSlw/jL/0Zz75mTeIkjiW6/Pd6WfOaZMGtW0hVKksopw6wkSfpVxWdkCwrg7AdaUnPUEPK2m828dmfB4MGw225w3HHw738nXaokqZwxzEqSpF9VWMg6Z2Tz8+G2ZxrzRKsB8MkncOWV8YifffeFgw6CkSMhipIsWZJUToSolP0HJzc3NyoqKkq6DEmSVGzpUnjgAbjjDpg3D/bYI24i9de/QqVKSVcnSSplQggToyjK3dh9rsxKkqTNs/XWcNFF8OGHMGgQrFwJJ50EO+8Md98N332XdIWSpDLIMCtJktKjcmU49VSYNg1GjID69eH886FBA7juOliyJOkKJUlliGFWkiSlV4UKcNRR8Oab8UerVnDttXGovfBC+PTTpCuUJJUBhllJkpQ5++0Xr9JOnw6dOsGAAdCkCZxySnxNkqRNZJiVJEmZ96c/wSOPxOdqzz0Xnn0WWrSA9u15ovs4Uq+t25AylYI+fRKqVZJUKtjNWJIklbwvv4xXafv3hy++4J1Kf6Ho4MvYredRUKHCT7NtIR4P1LNnsuVKkkqO3YwlSdKWa/vtoVeveFbtPffQovZnnP3yMdQ9rDmD2zzClT1XANC5M+TluVIrSfolw6wkSUpO9epwzjlUmzubp499gh+irXhwRReOu2xnXmx3D389+jsmT14TasFgK0mKGWYlSVLiUuMqcfa4/+OZq6ZwXJUX+SRqQN9l53HT4IZ8cfHNXHPh1+Tnx0F27WArSSq/DLOSJClRxQG1oADyDw68WqUdbauPI7/SON5cnstNXMEpvRrw+v5X0q3TF/F9+UlXLUlKmmFWkiQlqrBwTbOnzp1h2DC4/nqYUGl/OlV7iQO2nsTMnQ6n9Vs3M/WbhuS/dCksXJhs0ZKkxBlmJUlSonr2jFda1w61N98ML70EL74I2x3Ukn3nPs0VR01nRIVjiO64Axo1ggsugHnzki1ekpQYw6wkSdoi/DzUFm8lnjAB+vaF7fffndojH2ff7WayIP9vcO+90KQJdOsGH3+caO2SpJLnnFlJkrTF6tMnbva09hnZVOrH2bOdP4Zbb4WHHoLVq+Hkk+Hyy2GXXRKrV5K0+X7rnFnDrCRJKt3mzYuXbu+/H374AU44Aa68EnbfPenKJEmb4LeGWbcZS5Kk0q1+fejXL95qfPHFMHw4NG8OnTrBlClJVydJyhDDrCRJKhvq1In3JX/8MVxxBbzyCrRsCUcfHe9LliSVKYZZSZJUttSuDTfcAJ98Ar17w5tvwt57Q9u28NZbSVcnSUoTw6wklQN9+sRNc9aWSsXXpTKrRg3o1SsOtbfcApMmwf77x92kXnsNSlnfEEnSugyzklQO5OVB585rAm0qFb/Py0u2LqlEbLMNXHZZvP34zjth1iw45JA42I4caaiVpFLKMCtJ5UB+fjy3s3NnuPrq+HXtOZ5SuVC9Olx4IcyZAwMGwNy50K5dvAV5+HBDrSSVMoZZSSon8vOhe3e4/vr41SCrcqtqVTj7bPjgA3jwQfjySzjmGMjJgaefjmfWSpK2eIZZSSonUikYODA+Qjhw4C/P0ErlTuXKcMYZ8bbjRx+F5cvjbQvNm8Pjj8PKlUlXKEnaAMOsJJUDxWdkCwri5q7FW44NtBJQqRKcfDK89x489dSa97vuCg89BD/8kHSFkqT1MMxKUjlQWLjuGdniM7SO3pTWUrFi/FueKVPguedgu+3ildtddom3MyxfnnSFkqS1hKiUNTvIzc2NioqKki5DkiSVdVEEo0bFB83Hj4esLOjZE846K24mJUnKiBDCxCiKcjd2nyuzkiRJ6xMCHHEEvPUWjBkTr9BeeCE0ahQPaf7mm6QrlKRyzTArSZK0ISHEc2nHjoU33oi7Hl92GTRsCDfcQL/rvv7F+fNUKs67kqTMMcxKkiT9Vq1bw+jRMGECtGoFvXpxzm1/ZNKRvRg3bAmwpuFaXl7CtUpSGWeYlSRJ+r322Qeefx4mTWKrtody8fc30PK4hryx3+X8vdOSdRquSZIywzArSZK0qVq2hKFDYfp05uzenv3fvpVpSxuS/+pV8OWXSVcnSWWaYVaSJGkzpRb9iUM+H8KAbtMZSTu48ca4UdQ118BXXyVdniSVSYZZSZKkzVB8RragAM4buDvbjXqKA2pMZVHOYdC7d9woqndv+PrrpEuVpDIlY2E2hPBQCGFRCGH6r3w+hBD6hxA+CCFMDSHsmalaJEmSMqWwkHXOyObnw3XPtmDQkUNh8uT4wjXXxCu1N93kSB9JSpMQRVFmHhzCAcBS4NEoipqv5/PtgPOAdsA+wF1RFO2zsefm5uZGRUVF6S5XkiQpcyZNgmuvjZtG1aoFl14K55wDW2+ddGWStMUJIUyMoih3Y/dlbGU2iqI3gA11PuhAHHSjKIomADVCCPUyVY8kSVJi9twTRoyAd96BvfeGf/wDGjeGvn3hu++Srk6SSqUkz8xmA3PXej/vx2uSJEllU14evPQSjB8fd0K+9NI41N55J3z/fdLVSVKpkmSYDeu5tt49zyGEriGEohBC0eLFizNcliRJUobtuy+MHg1vvgnNm0OPHtCkCfTvD8uWJV2dJJUKSYbZecBOa72vDyxY341RFP0ziqLcKIpyd9hhhxIpTpIkKeP22w/GjIHXX4emTeGCC2DnneHee2H58qSrk6QtWpJhdgRwyo9djfcFvo6i6LME65EkSUrGAQfA2LHw2mtx1+NzzoFddoH774cffki6OknaImVyNM8QYDzQLIQwL4RwRgihWwih24+3vATMAT4AHgDOzlQtkiRJpUJ+PrzxBrz8MtSvD926QdOm9GvxL/rdtmKdW++4A9q1S6hOSdoCZGw0T6Y4mkeSJJULURSfq73mGnjnHT6kMR/89SraPH4yd/SvxCWXxM2Qe/RIulBJSq/ER/NIkiRpM4QAbdvChAnwwgtsXb8GbZ46nbnb7k7RxU/QveuqdYJsKgV9+iRXriSVNMOsJEnSliwEOPJI6nxaxBW7D+PL76vxBCdy7oN/Ztp1z0IUkUpB587x5B9JKi8Ms5IkSaXAHXcGbpnRgfP3n8xfeYqa26ykxbUdWZCVy33HjKLgqYj8/KSrlKSSY5iVJEnawt1xBz+dkX19XAX2ub0zO301ndv+NIjlC7/kqf8dQf61B8ZzayWpnDDMSpIkbeHGjFm32VOPHnBW90pc+f6pPHrFLHr+YQDL35sNrVvHLY4nT062YEkqAYZZSZKkLdxLL/GLZk9PP/1js+MbK3PE82ezS/iQD7veGjeM2nPP+BDtrFnJFS1JGWaYlSRJKmUKC6GggJ/OyObnwyNPV+eZJj3ho4+gV684Ae++O5xxBnzySbIFS1IGOGdWkiSpLFq0CG65Be69N55Z260bXHEF1KmTdGWStEHOmZUkSSrPdtwx7hw1ezaccgoMGACNG8OVV8JXXyVdnSRtNsOsJElSWbbTTvDAA/Cf/8DRR8NNN0GjRvGq7bffJl2dJG0yw6wkSVJ50LQpDBkSdzref3+4/HJo0gTuuQeWL0+6Okn63QyzkiRJ5UlODjz/PLz1Fuy6K5x3HjRrBoMGwcqVSVcnSb+ZYVaSJKk8atUqnvEzejTUrg2nnQYtWsDQobB6ddLVSdJGGWYlSZLKqxDg8MPjWT/PPBO/P/54yMuDUaPiLsiStIUyzEqSJJV3IcBxx8G0afDII/Dll3DEEcxtciCT+r+5zq2pFPTpk1CdkrSWXw2zIYQWIYQJIYS5IYR/hhBqrvW5d0qmPEmSJJWYihXjMT6zZsGAAez49Wz2vKA1S/Y9kkEXTOaOO6Bz53jhFgy2kpK1oZXZgcC1QAvgfeDNEEKTHz+3VYbrkiRJUlIqV4azz6bK3A/5sOutVHhnPF3670m9i/+PW8/6gPz8OMiuHWwlqaRtKMxuE0XRqCiKvoqiqC9wLjAqhLAv4AEKSZKksq56dZrc35OBl8zhBq7kuIojOPnm3Xgn92zO7bSQggLIz0+6SEnl1YbCbBRC2O6nN1GUAjoCjwF/zHRhkiRJSl4qBXc+XIMfet3Antt9yOtNu9Jy4gNM/qYJ+a9eBV9/nXSJksqpDYXZFsBuIYQLii9EUTQVOAR4NtOFSZIkKVnFW4kLCqB3bzjjyrocPnsAl3eYwQvhaLjxRmjShNfa38Hro5f94ms9TyspkzYUZmcBnwGnhxBqhhC2DyFsDywFLiuR6iRJkpSYwkJ+2kqcSsHNN0PfvrBjq52pOWoIh9SYyJeN9uLgFy+mcbtmzLhsEKxa5XlaSSWi0gY+NxAYBTQGJgJhrc9FP16XJElSGdWz55o/rx1sf/LsnjxYOJqet77Gdmdfxk59TmPs+Dl0ntHb87SSMi5EGxmGHUIYGEVR9xKqZ6Nyc3OjoqKipMuQJEnS2qKIhXVzmLQomwm9XqJ376QLklRahRAmRlGUu7H7NrTNGIAtKchKkiRpy5QaG5jy1R9pWWcBAwfG25IlKZM2GmYlSZKkDSk+I9uiTRb1Vi+goCB+b6CVlEmGWUmSJG2W4vO02blZsHgx+a2WU1AQX5ekTNlQAyhJkiRpo35qFPVhVvy6cCH5+X+0AZSkjHJlVpIkSemR9WOYXbAg2ToklQuGWUmSJKVHdnb8apiVVAIMs5IkSUoPV2YllSDDrCRJktKjVi3YaiuYPz/pSiSVA4ZZSZIkpUeFClCvniuzkkqEYVaSJEnpk5VlmJVUIgyzkiRJSp/sbMOspBJhmJUkSVL6uDIrqYQYZiVJkpQ+WVnw9dfw7bdJVyKpjDPMSpIkKX0czyOphBhmJUmSlD6GWUklxDArSZKk9DHMSiohhllJkiSlT3Z2/GqYlZRhhllJkiSlz7bbQvXqhllJGWeYlSRJUvqEEG81nj8/6UoklXGGWUmSJKWXs2YllQDDrCRJktLLMCupBBhmJUmSlF7Z2XGYjaKkK5FUhhlmJUmSlF5ZWfD99/D110lXIqkMM8xKkiQpvZw1K6kEGGYlSZKUXsVh1o7GkjLIMCtJkqT0cmVWUgkwzEqSJCm9DLOSSoBhVpIkSelVvTrUqGGYlZRRhllJkiSln7NmJWWYYVaSJEnpl5VlAyhJGWWYlSRJUvq5MispwwyzkiRJSr+sLPjsM1i9OulKJJVRhllJkiSlX3Y2rFwJX3yRdCWSyijDrCRJktLP8TySMswwK0mSpPQzzErKMMOsJEmS0q84zNrRWFKGGGYlSZKUfnXrxq+uzErKEMOsJEmS0q9yZdhxR8OspIwxzEqSJCkznDUrKYMMs5IkScoMw6ykDDLMSpIkKTOysmwAJSljDLOSJEnKjKwsWLQIVqxIuhJJZZBhVpIkSZmRnQ1RBJ9/nnQlksogw6wkSZIyo3jWrOdmJWWAYVaSJEmZYZiVlEEZDbMhhLYhhFkhhA9CCP9Yz+cbhBBSIYTJIYSpIYR2maxHkiRJJcgwKymDMhZmQwgVgQHAEcDuwP+FEHb/2W1XAQVRFLUETgDuzVQ9kiRJKmE77AAVK9rRWFJGZHJldm/ggyiK5kRR9APwJNDhZ/dEwLY//nk7wF/bSZIklRUVK0Lduq7MSsqIShl8djYwd63384B9fnbPtcDLIYTzgD8Ah2awHkmSJJW07GzDrKSMyOTKbFjPtehn7/8PGBRFUX2gHfBYCOEXNYUQuoYQikIIRYsXL85AqZIkScqIrCzDrKSMyGSYnQfstNb7+vxyG/EZQAFAFEXjgapA7Z8/KIqif0ZRlBtFUe4OO+yQoXIlSZKUdoZZSRmSyTBbCOwSQmgUQqhM3OBpxM/u+RQ4BCCEsBtxmHXpVZIkqazIyoIvv4Rly5KuRFIZk7EwG0XRSuBcYDQwg7hr8XshhN4hhKN/vO1i4KwQwrvAEKBLFEU/34osSZKk0srxPJIyJJMNoIii6CXgpZ9du3qtP/8H2C+TNUiSJClB2dnx64IF0LhxsrVIKlMyuc1YkiRJ5Z0rs5IyxDArSZKkzDHMSsoQw6wkSZIyp2ZNqFLFMCsp7QyzkiRJypwQ4tXZ+fOTrkRSGWOYlSRJUmZlZ7syKyntDLOSJEnKrKwsw6yktDPMSpIkKbMMs5IywDArSZKkzMrKgqVL4Ztvkq5EUhlimJUkSVJmOZ5HUgYYZiVJkpRZxWHWjsaS0sgwK0mSpMzKzo5fXZmVlEaGWUmSJGVWvXrxq2FWUhoZZiVJkpRZ22wTfxhmJaWRYVaSJEmZ53geSWlmmJUkSVLmZWXZAEpSWhlmJUmSlHnZ2a7MSkorw6wkSZIyr3ibcRQlXYmkMsIwK0mSpMzLyoIffoAvv0y6EkllhGFWkiRJmZeVFb+61VhSmhhmJUmSlHmGWUlpZpiVJElS5hWHWTsaS0oTw6wkSZIyz5VZSWlmmJUkSVLmVakCtWoZZiWljWFWkiRJJaN4PI8kpYFhVpIkSSXDMCspjQyzkiRJKhlZWTaAkpQ2hllJkiSVjOxsWLgQVq1KuhJJZYBhVpIklVl9+kAqte61VCq+rgRkZcHq1bBoUdKVSCoDDLOSJKnMysuDzp3XBNpUKn6fl5dsXeWW43kkpZFhVpIklVn5+VBQEAfYq6+OXwsK4utKgGFWUhoZZiVJUpmWnw/du8P118evBtkEGWYlpZFhVpIklWmpFAwcCL16xa8/P0OrElSnDlSoYEdjSWlhmJUkSWVW8RnZggLo3XvNlmMDbUIqVYoDrSuzktLAMCtJksqswsJ1z8gWn6EtLEy2rnItK8swKyktKiVdgCRJUqb07PnLa/n5nptNVFYWfPpp0lVIKgNcmZUkSVLJcWVWUpoYZiVJklRysrJg8WJYvjzpSiSVcoZZSZIklZzs7Ph14cJk65BU6hlmJUmSVHKcNSspTQyzkiRJKjmGWUlpYpiVJElSyTHMSkoTw6wkSZJKTq1asNVWhllJm80wK0mSpJJToUK8Ojt/ftKVSCrlDLOSJEkqWc6alZQGhllJkiSVLMOspDQwzEqSJKlkGWYlpYFhVpIkSSUrKwu+/hq+/TbpSiSVYoZZSZIklazs7PjV1VlJm8EwK0mSpJLlrFlJaWCYlSRJUskyzEpKA8OsJEmSSpZhVlIaGGYlSZJUsrbdFqpXN8xK2iyGWUmSJJWsEBzPI2mzGWYlSZJU8rKzYf78pKuQVIoZZiVJklTyXJmVtJkMs5IkSSp5xWE2ipKuRFIpZZiVJElSycvKgu+/h6+/TroSSaWUYVaSJEklz/E8kjaTYVaSJEklLzs7fjXMStpEhllJkiSVvOKVWTsaS9pEhllJkiSVvHr14ldXZiVtIsOsJEmSSl716lCjhmFW0iYzzEqSJCkZzpqVtBkMs5IkSUpGdrZhVtImM8xKkiQpGVlZNoCStMkMs5IkSUpGVhZ89hmsXp10JZJKIcOsJEmSkpGVBStXwhdfJF2JpFLIMCtJkqRkFM+a9dyspE1gmJUkSVIyDLOSNkNGw2wIoW0IYVYI4YMQwj9+5Z7OIYT/hBDeCyE8kcl6JEmStAXJzo5fDbOSNkGlTD04hFARGAAcBswDCkMII6Io+s9a9+wCXA7sF0XRf0MIO2aqHkmSJP1/e/cea1lZ3gH49w6XqilUUyA6DAoIJKXGFjsYm5rKiUbBNqCRTECwtUFpacRYb7Wx0Aq2TccYTRMugjXUJoijtji1NDRpD9Yb5hxrY0VLg2BhgpHRUprWG3Te/rEPehjHOXvG2Zd15nmSk7PW2t/s/c7Mm733b3/fWnvOPPnJo9+uaAzsh0nOzD47yV3dfXd3fy/JTUnO2W3Mq5Nc1d0PJkl3PzDBegAAmCeHHZYcc4yZWWC/TDLMHpvkvlX7O1aOrXZKklOq6lNVdXtVnbmnO6qqi6tquaqWd+7cOaFyAQCYuo0bhVlgv0wyzNYejvVu+4cmOTnJGUnOT/LeqnriD/2h7uu6e3N3bz766KMPeKEAAMyIMAvsp0mG2R1Jjlu1vynJ7s9UO5J8tLsf7u57ktyZUbgFAOBgcOyxwiywXyYZZpeSnFxVJ1TV4UnOS7J9tzE3J1lIkqo6KqNlx3dPsCYAAObJxo3J17+ePPzwrCsBBmZiYba7H0nymiS3Jvlykm3dfUdVXVFVZ68MuzXJN6vqS0kWk7ypu785qZoAAJgzGzcm3aNAC7APJvbVPEnS3bckuWW3Y5ev2u4kr1/5AQDgYLNx4+j3/fcnmzbNthZgUCa5zBgAAPZudZgF2AfCLAAAM7F1a/Kpex4bZhcXR8cB1iLMAgAwE6efnrz0N4/Jrg2HJPffn8XFZMuW0XGAtUz0nFkAAPhRFhaSD35oQ772gqfk0Otuzlfe+VA+f1Zl00c3JH+zIalKNmwY/dg+MNtVs/5v5wDbunX0AdDCwg+OLS4mS0vJm988u7qmQZgFAGBmFhaSpZ//lZzwzx/Oyx9/Y56wuCvZtWt0heNde9nunnXpwzXrQL379qwff+DbL3jchlz20sqRb9+QXzjz6Czed1K2bEm2bZt1o02eMAsAwMwsLiZb7r02l1x2ba65ZvQGfPUM016NE3j3dvvQt2f9+Ad6+5FH5vPvN+eeleRvk+TS0f4XH/+mfOjmt+eMhcNnWNV0CLMAAMzEo+fIPhpgFxYeu7+mquSQQ0Y/MCnTCNcH4D7ef8OufOvGv86l335H8tbF5MQPJCedNOt/vYkSZgEAmImlpccG14WF0f7S0j7MzsKkPfqhyRxbXEze8PfJJZe9KK989wtz/Z2vymGnnZZcfXXyilfMuryJqR7A1Plqmzdv7uXl5VmXAQAAMHO7r3BYXExe97L78vFNF+SJ//qJ5MILk6uuSo48ctaljq2qPtfdm9cat2EaxQAAAHDg7WmFw7s/clyuf/li8ra3JTfemAdPfFaWr1l6zJ9bD9/pbGYWAABgvfrkJ/Odl12QQx64P/de/Ed5+jVvzOLHN+zb+elTZmYWAADgYPfc5+Zx//YvefCXX5KnX/e7+cpJL8ql535tboPsvhBmAQAA1rMnPSnH3LYtN//q9XnCPV/MRS//9uCDbCLMAgAArHuLt1Veffurcv1b7s4f33RiFhdnXdGPT5gFAABYx1Zf8fjyP3l8tm0b7Q890AqzAAAA69jevtN5yFzNGAAAgLnhasYAAACsW8IsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAAIMjzAIAADA4wiwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDjCLAAAMDVbtyaLi489trg4Og77QpgFAACm5vTTky1bfhBoFxdH+6efPtu6GJ5DZ10AAABw8FhYSLZtGwXYSy5JrrlmtL+wMOvKGBozswAAwFQtLIyC7JVXjn4LsuwPYRYAAJiqxcXRjOxll41+734OLYxDmAUAAKbm0XNkt21LrrjiB0uOBVr2lTALAABMzdLSY8+RffQc2qWl2dbF8FR3z7qGfbJ58+ZeXl6edRkAAABMQFV9rrs3rzXOzCwAAACDI8wCAAAwOMIsAAAAgyPMAgAAMDgTDbNVdWZV3VlVd1XVW/Yy7tyq6qpa8yRfAAAAmFiYrapDklyV5KwkpyY5v6pO3cO4I5K8NslnJ1ULAAAA68skZ2afneSu7r67u7+X5KYk5+xh3JVJtib5zgRrAQAAYB2ZZJg9Nsl9q/Z3rBz7vqo6Lclx3f2xvd1RVV1cVctVtbxz584DXykAAACDMskwW3s41t+/sWpDknclecNad9Td13X35u7efPTRRx/AEgEAABiiSctVuDUAAAZRSURBVIbZHUmOW7W/Kcn9q/aPSPKMJLdV1VeTPCfJdheBAgAAYC2TDLNLSU6uqhOq6vAk5yXZ/uiN3f1Qdx/V3cd39/FJbk9ydncvT7AmAAAA1oGJhdnufiTJa5LcmuTLSbZ19x1VdUVVnT2pxwUAAGD9O3SSd97dtyS5Zbdjl/+IsWdMshYAAADWj0kuMwYAAICJEGYBAAAYnOrutUfNkarameQ/Zl3HGo5K8o1ZF8Hc0yeMQ58wDn3COPQJ49AnjGPSffK07l7zO1kHF2aHoKqWu9tXDLFX+oRx6BPGoU8Yhz5hHPqEccxLn1hmDAAAwOAIswAAAAyOMDsZ1826AAZBnzAOfcI49Anj0CeMQ58wjrnoE+fMAgAAMDhmZgEAABgcYRYAAIDBEWZ/DFV1ZlXdWVV3VdVb9nD7T1TVB1du/2xVHT/9Kpm1Mfrk9VX1par6QlX9Q1U9bRZ1Mltr9cmqcedWVVfVzC+Hz/SN0ydVtWXlOeWOqrpx2jUye2O87jy1qhar6vMrrz0vnkWdzFZVva+qHqiqL/6I26uq/mylj75QVc+ado3M3hh9csFKf3yhqj5dVT83zfqE2f1UVYckuSrJWUlOTXJ+VZ2627CLkjzY3ScleVeSP51ulczamH3y+SSbu/uZST6cZOt0q2TWxuyTVNURSV6b5LPTrZB5ME6fVNXJSX4vyS91988med3UC2Wmxnw++f0k27r7tCTnJbl6ulUyJ25IcuZebj8ryckrPxcnuWYKNTF/bsje++SeJM9beR97ZaZ8YShhdv89O8ld3X13d38vyU1JztltzDlJ/mJl+8NJnl9VNcUamb01+6S7F7v7Wyu7tyfZNOUamb1xnk+S0YvE1iTfmWZxzI1x+uTVSa7q7geTpLsfmHKNzN44fdJJjlzZ/qkk90+xPuZEd/9Tkv/cy5Bzkry/R25P8sSqesp0qmNerNUn3f3pR19zMoP3scLs/js2yX2r9nesHNvjmO5+JMlDSX56KtUxL8bpk9UuSvJ3E62IebRmn1TVaUmO6+6PTbMw5so4zyenJDmlqj5VVbdX1d4+TWd9GqdP/jDJhVW1I8ktSS6dTmkMzL6+h4Gpv489dJoPts7saYZ19+85GmcM69vYPVBVFybZnOR5E62IebTXPqmqDRmdqvDKaRXEXBrn+eTQjJYEnpHRp+OfqKpndPd/Tbg25sc4fXJ+khu6+51V9YtJ/nKlT3ZNvjwGxPtYxlZVCxmF2edO83HNzO6/HUmOW7W/KT+8TOf7Y6rq0IyW8uxtOQfrzzh9kqp6QZK3Jjm7u787pdqYH2v1yRFJnpHktqr6apLnJNnuIlAHnXFfdz7a3Q939z1J7swo3HLwGKdPLkqyLUm6+zNJHpfkqKlUx5CM9R4GquqZSd6b5Jzu/uY0H1uY3X9LSU6uqhOq6vCMLqCwfbcx25P8+sr2uUn+sbt9onVwWbNPVpaPviejIOv8toPTXvukux/q7qO6+/juPj6jc1LO7u7l2ZTLjIzzunNzkoUkqaqjMlp2fPdUq2TWxumTe5M8P0mq6mcyCrM7p1olQ7A9ya+tXNX4OUke6u6vzboo5ktVPTXJXyV5RXf/+7Qf3zLj/dTdj1TVa5LcmuSQJO/r7juq6ooky929PcmfZ7R0566MZmTPm13FzMKYffKOJD+Z5EMr1we7t7vPnlnRTN2YfcJBbsw+uTXJC6vqS0n+L8mbpv0pObM1Zp+8Icn1VfU7GS0bfaUP2w8+VfWBjE5JOGrl/Ok/SHJYknT3tRmdT/3iJHcl+VaS35hNpczSGH1yeUbXBLp65X3sI909tZVj5bkLAACAobHMGAAAgMERZgEAABgcYRYAAIDBEWYBAAAYHGEWAACAwRFmAWDOVNVrq+rLVfWRqvpMVX23qt4467oAYJ74nlkAmD+/neSsJP+b5GlJXjLbcgBg/piZBYA5UlXXJjkxyfYkF3T3UpKHZ1sVAMwfM7MAMEe6+7eq6swkC939jVnXAwDzyswsAAAAgyPMAgAAMDjCLAAAAINT3T3rGgCAVarqq0k2Z3Rti+UkRybZleR/kpza3f89u+oAYD4IswAAAAyOZcYAAAAMjjALAADA4AizAAAADI4wCwAAwOAIswAAAAyOMAsAAMDgCLMAAAAMzv8DW+QUed73GrQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "\n", "all_results = task.get_results()\n", "all_f1_scores = [result.score['f1'] for result in all_results]\n", "all_f2_scores = [result.score['f2'] for result in all_results]\n", "\n", "ordered_pareto_set = sorted(pareto_set, key=lambda result: result.score['f1'])\n", "pareto_f1_scores = [result.score['f1'] for result in ordered_pareto_set]\n", "pareto_f2_scores = [result.score['f2'] for result in ordered_pareto_set]\n", "\n", "plt.figure(figsize=(16,8))\n", "plt.plot(all_f1_scores, all_f2_scores, 'xb', label='All Results')\n", "plt.plot(pareto_f1_scores, pareto_f2_scores, 'r', label='Pareto Front')\n", "plt.xlabel('f1')\n", "plt.ylabel('f2')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot the domain space" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7MAAAHjCAYAAADxD0ixAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3X20XWV9L/rvLwk5kCO+VHKqQwzBDkEw4KZEXsbRGsQW9DqwHqrCSLUUNRet2tHbdqiXA9erTX1pR+3R4VVzLPVcjLwcGK1cpMVRSoatgpeNIOVFCkUIEU+JOeq1RswLz/1jbTCEvOxN9tprPzufzxgZc89nPXuu33yetebmy5xrrmqtBQAAAHoyb9QFAAAAwFQJswAAAHRHmAUAAKA7wiwAAADdEWYBAADojjALAABAd4RZAAAAuiPMAgAA0B1hFgAAgO4sGHUBU3XIIYe0pUuXjroMAAAAhuDmm2/+fmtt8d76dRdmly5dmvHx8VGXAQAAwBBU1QOT6ecyYwAAALojzAIAANAdYRYAAIDudPeZWQAAgJmydevWbNiwIY888sioS5lzDjzwwBx66KE54IADntLvC7MAAAC7sWHDhhx88MFZunRpqmrU5cwZrbVs2rQpGzZsyOGHH/6UtuEyYwAAgN145JFH8uxnP1uQnWZVlWc/+9n7dMZbmAUAANgDQXY49nVchVkAAAC6I8wCAABMk7Vrk6VLk3nzBsu1a6dnu3/1V3+Vqsq3v/3tx9vuv//+LFu2LEmybt26vPa1r33S761bty7PeMYzctxxx+VFL3pR/uAP/mB6CtrBOeeckyuuuCJJ8ud//ufZvHnztD/HrgizAAAA02Dt2mTVquSBB5LWBstVq6Yn0F5yySV52ctelksvvXTKv/vyl788t9xyS2655ZZcffXV+drXvrbvBe2GMAsAANCZ889Pds5xmzcP2vfFv/3bv+VrX/ta/uIv/uIphdnHHHTQQRkbG8t3v/vdJMlPfvKTnHvuuXnpS1+a4447Ll/60peSJHfccUdOOOGEjI2N5dhjj80999zzhLPASfKnf/qn+cAHPvCE7X/iE5/IQw89lFNOOSWnnHJKtm/fnnPOOSfLli3LMccck49//ONPufZd8dU8AAAA02D9+qm1T9Zf//Vf5/TTT88RRxyRX/iFX8g3v/nN/PIv//KUt/ODH/wg99xzT37lV34lSbJ69eq88pWvzEUXXZQf/vCHOeGEE/KqV70qn/nMZ/K7v/u7WblyZbZs2ZLt27fnX//1X/e6/fe85z35sz/7s1x//fU55JBDcvPNN+e73/1ubr/99iTJD3/4wynXvCfOzAIAAEyDJUum1j5Zl1xySc4666wkyVlnnZVLLrlkSr//D//wDzn22GPznOc8J6997WvznOc8J0nyla98JR/5yEcyNjaWFStW5JFHHsn69etz8skn54//+I/z0Y9+NA888EAOOuigp1T3C17wgtx3331597vfnb/927/N05/+9Ke0nd1xZhYAAGAarF49+IzsjpcaL1o0aH+qNm3alL//+7/P7bffnqrK9u3bU1X52Mc+NultvPzlL8/VV1+df/7nf87LXvayvP71r8/Y2Fhaa7nyyitz5JFHPqH/UUcdlRNPPDFf/vKXc9ppp+Vzn/tcjjjiiDz66KOP95nM98M+61nPyre+9a1ce+21+dSnPpXLL788F1100eR3fi+Gdma2qi6qqoer6vbdPF5V9YmqureqbquqqZ8nBwAAmCVWrkzWrEkOOyypGizXrBm0P1VXXHFF3vKWt+SBBx7I/fffnwcffDCHH354/vEf/3HK2zriiCPy/ve/Px/96EeTJKeddlo++clPprWWJLnllluSJPfdd19e8IIX5D3veU/OOOOM3HbbbfnFX/zFPPzww9m0aVN+9rOf5eqrr97lcxx88MH58Y9/nCT5/ve/n0cffTRnnnlmPvShD+Wb3/zmUxmC3RrmZcafT3L6Hh5/dZIXTvxbleTTQ6yFnQzrluHA3DbKY8eoj1ujfv598VjtVcmCBYNlb/uQ9D0HwzJXxmSu7Md0mep47I/jN5v3eeXK5P77k0cfHSz3Jcgmg0uMX//61z+h7cwzz8wXv/jFp7S98847L1/96lfzne98JxdccEG2bt2aY489NsuWLcsFF1yQJLnsssuybNmyjI2N5dvf/nbe8pa35IADDsiFF16YE088Ma997Wvzohe9aJfbX7VqVV796lfnlFNOyXe/+92sWLEiY2NjOeecc/LhD3/4KdW8W621of1LsjTJ7bt57LNJzt5h/e4kz93bNo8//vjGvvnCF1pbtKi1k/L19r78cTspX2+LFg3aAXZnlMeOUR+3Rv38+2Ln2t+Wz3a3D631PQfDMlfGZK7sx3SZ6njsj+M30/t85513DmfDtNZ2Pb5Jxttk8uZkOj3Vf3sJs1cnedkO69clWb63bQqz++6wwwZv/p/koLY189tPclA7KV9vhx026sqA2WyUx45RH7dG/fz74om1z2uPJm1r5nW1D631PQfDMlfGZK7sx3SZ6njsj+M30/sszA7XvoTZUd7NuHbR1nbZsWpVVY1X1fjGjRuHXNbct359siLrsjBbsiDbc0C2ZEXW7fMtw4G5bZTHjlEft0b9/PviibUPbtyxII92tQ9J33MwLHNlTObKfkyXqY7H/jh+++M+s2ujDLMbkjx/h/VDkzy0q46ttTWtteWtteWLFy+ekeLmsiVLknVZkS1ZmK2Zn61ZmHVZsc+3DAfmtlEeO0Z93Br18++LHWvfNvFnf1vmdbUPSd9zMCxzZUzmyn5Ml6mOx/44fvvjPrNro/xqnquSvKuqLk1yYpIftda+N8J69huDW4afnFM3X5cVWZd1WZHbFp2cNftwy3Bg7hvlsWPUx61RP/++2Ln27+fZOSSbutqHpO85GJa5MiZzZT+my1THY38cv/1xn9mNyVyL/FT+JbkkyfeSbM3gLOxbk5yX5LyJxyvJp5L8S5J/yiQ+L9t8ZnbafOELg88bVA2Wc/kmAcD0GeWxY9THrVE//754rPaktfnzB8ve9qG1vudgWObKmMyV/ZguUx2P/XH8ZnKffWZ2uPblM7M16NuP5cuXt/Hx8VGXAQAA7AfuuuuuHHXUUaMuY87a1fhW1c2tteV7+91RfmYWAACAvZg/f37GxsaybNmyvOENb8jmzZunZbuf//zn89BDu7xt0W7deOONOfHEEzM2NpajjjoqH/jAB/bY/9Zbb80111yzD1XunjALAAAwnW64IfnwhwfLaXDQQQfl1ltvze23356FCxfmM5/5zKR/d/v27bt97KmE2d/6rd/KmjVrHq/njW984x77C7MAAAA9uOGG5NRTkwsuGCynKdA+5uUvf3nuvffeJMmv//qv5/jjj8+LX/zirFmz5vE+T3va03LhhRfmxBNPzA033JCbb745r3jFK3L88cfntNNOy/e+971cccUVGR8fz8qVKzM2Npaf/vSnue6663LcccflmGOOybnnnpuf/exnT3r+hx9+OM997nOTDM4YH3300UmSn/zkJzn33HPz0pe+NMcdd1y+9KUvZcuWLbnwwgtz2WWXZWxsLJdddtm0joUwCwAAMF3WrUu2bEm2bx8s162btk1v27Ytf/M3f5NjjjkmSXLRRRfl5ptvzvj4eD7xiU9k06ZNSQbBctmyZfnGN76RE088Me9+97tzxRVX5Oabb865556b888/P7/xG7+R5cuXZ+3atbn11ltTVTnnnHNy2WWX5Z/+6Z+ybdu2fPrTn35SDb/3e7+XI488Mq9//evz2c9+No888kiSZPXq1XnlK1+Zm266Kddff33+8A//MFu3bs0HP/jBvOlNb8qtt96aN73pTdM2FokwCwAAMH1WrEgWLkzmzx8sV6zY503+9Kc/zdjYWJYvX54lS5bkrW99a5LkE5/4RF7ykpfkpJNOyoMPPph77rknyeCM6Zlnnpkkufvuu3P77bfnV3/1VzM2NpY/+qM/yoYNG570HHfffXcOP/zwHHHEEUkGlxN/9atffVK/Cy+8MOPj4/m1X/u1fPGLX8zpp5+eJPnKV76Sj3zkIxkbG8uKFSvyyCOPZP369fu873syyu+ZBQAAmFtOPjm57rrBGdkVKwbr++ixz8zuaN26dfm7v/u73HDDDVm0aNHjATJJDjzwwMyfPz/J4KtYX/ziF+eGvVzuPJVvufmlX/qlvOMd78jb3/72LF68OJs2bUprLVdeeWWOPPLIJ/T9xje+MentTpUzswAAANPp5JOT979/WoLs7vzoRz/Ks571rCxatCjf/va3c+ONN+6y35FHHpmNGzc+Hma3bt2aO+64I0ly8MEH58c//nGS5EUvelHuv//+xz+Pe/HFF+cVr3jFk7b35S9/+fHge88992T+/Pl55jOfmdNOOy2f/OQnH3/slltuedJzTDdhFgAAoDOnn356tm3blmOPPTYXXHBBTjrppF32W7hwYa644oq8973vzUte8pKMjY3l61//epLknHPOyXnnnZexsbG01vKXf/mXecMb3pBjjjkm8+bNy3nnnfek7V188cU58sgjMzY2lje/+c1Zu3Zt5s+fnwsuuCBbt27Nsccem2XLluWCCy5Ikpxyyim58847h3IDqJrK6eTZYPny5W18fHzUZQAAAPuBu+66K0cdddSoy5izdjW+VXVza2353n7XmVkAAAC6I8wCAADQHWEWAABgD3r7aGYv9nVchVkAAIDdOPDAAx//6hmmT2stmzZtyoEHHviUt+F7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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "all_x1_values = [result.configuration.values['x1'] for result in all_results]\n", "all_x2_values = [result.configuration.values['x2'] for result in all_results]\n", "\n", "pareto_x1_values = [result.configuration.values['x1'] for result in pareto_set]\n", "pareto_x2_values = [result.configuration.values['x2'] for result in pareto_set]\n", "\n", "plt.figure(figsize=(16,8))\n", "plt.plot(all_x1_values, all_x2_values, 'ob', label='All Results')\n", "plt.plot(pareto_x1_values, pareto_x2_values, '.r', label='Pareto Set')\n", "plt.xlabel('x1')\n", "plt.ylabel('x2')\n", "plt.legend()\n", "plt.show()" ] } ], "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.3" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }