{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# OPTaaS: Plotting Results\n", "You can use a library like matplotlib to display a live view of your optimization results." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set up matplotlib" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define your scoring function\n", "For this example we will use the [Beale function](https://www.sfu.ca/~ssurjano/beale.html), which is widely used for testing optimization algorithms." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def beale_function(x, y):\n", " xy = x * y\n", " xy2 = xy * y\n", " xy3 = xy2 * y\n", " return ((1.5 - x + xy) ** 2) + ((2.25 - x + xy2) ** 2) + ((2.625 - x + xy3) ** 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect to the OPTaaS server and create a Task" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from mindfoundry.optaas.client.client import OPTaaSClient\n", "from mindfoundry.optaas.client.goal import Goal\n", "from mindfoundry.optaas.client.parameter import FloatParameter\n", "\n", "client = OPTaaSClient('https://optaas.mindfoundry.ai', '')\n", "\n", "task = client.create_task(\n", " title='Beale Optimization',\n", " parameters=[\n", " FloatParameter(name='x', minimum=-4.5, maximum=4.5),\n", " FloatParameter(name='y', minimum=-4.5, maximum=4.5)\n", " ], \n", " goal=Goal.min\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wrap your scoring function in a Plotting function" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [], "source": [ "from IPython.display import clear_output\n", "import math\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import FormatStrFormatter, MaxNLocator\n", "\n", "class Plotter:\n", " @staticmethod\n", " def make_plotting_function(task, scoring_function):\n", " return Plotter(task, scoring_function).get_score_and_display_plot\n", " \n", " def __init__(self, task, scoring_function):\n", " self.scoring_function = scoring_function\n", " self.current_iteration = 0\n", " self.all_scores = []\n", " self.best_scores = []\n", " self.minimise = task.json.get('goal') == \"min\"\n", " self.better_of = min if self.minimise else max\n", " self.best_score = math.inf if self.minimise else -math.inf \n", " self.df = pd.DataFrame(columns=[p['name'] for p in task.parameters] + ['score'])\n", "\n", " def get_score_and_display_plot(self, **configuration_values):\n", " score = self.scoring_function(**configuration_values)\n", " \n", " self._update_scores(score)\n", " self._update_table(configuration_values, score)\n", " self._plot_scores()\n", "\n", " display(plt.gcf())\n", " display(self.df)\n", " plt.close('all')\n", " \n", " self.current_iteration += 1\n", " return score\n", "\n", " def _update_scores(self, score):\n", " self.all_scores.append(score)\n", " self.best_score = self.better_of(self.best_score, score)\n", " self.best_scores.append(self.best_score)\n", " \n", " def _update_table(self, configuration_values, score):\n", " values_with_score = configuration_values.copy()\n", " values_with_score['score'] = score\n", " self.df.loc[self.current_iteration] = values_with_score\n", "\n", " def _plot_scores(self):\n", " clear_output(wait=True)\n", " plt.clf()\n", " \n", " fig = plt.figure(figsize=(20, 10))\n", " ax = fig.add_subplot(1, 2, 1)\n", " \n", " if self.minimise:\n", " ax.invert_yaxis()\n", " ax.yaxis.set_major_formatter(FormatStrFormatter('%d'))\n", " if all(score >= 0 for score in self.best_scores):\n", " ax.set_yscale('log')\n", "\n", " ax.set_ylabel('Score')\n", " ax.xaxis.set_major_locator(MaxNLocator(integer=True))\n", " ax.set_xlabel('Iterations')\n", "\n", " ax.plot(self.best_scores, 'g', label='Best so far')\n", " ax.plot(self.all_scores, 'ok')\n", " ax.legend()\n", "\n", "plotting_function = Plotter.make_plotting_function(task, beale_function)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the Task" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAJQCAYAAAB2LJVxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xucm2Wd9/HvbzqFEqgDclChnQS2gJRTqQMuHkEQAakoqyCGRVfWiIgHXFgp2VVXN8/qgoo8om5WEfcxCx0qHsAuoIDWAwhTLEhpEWSboRRpARkooULp7/kjmTpNT5k2yZX7yuf9evXF5Jok/d4tM/Ptdd/XfZm7CwAAIOl6QgcAAABoBkoNAACIAqUGAABEgVIDAACiQKkBAABRoNQAAIAoUGoAAEAUKDUAACAKlBoAABCF3tABtsVuu+3mmUwmdAwAANAiCxYseNzdd2/kuYkuNZlMRkNDQ6FjAACAFjGzcqPP5fQTAACIAqUGAABEgVIDAACikOhragAAaJcXXnhBy5Yt0+rVq0NHidKkSZM0ZcoUTZw4cavfg1IDAEADli1bpsmTJyuTycjMQseJirvriSee0LJly7T33ntv9ftw+gkAgAasXr1au+66K4WmBcxMu+666zbPglFqAABoEIWmdZrxZ0upAQAAUaDUAACQEBMmTNCMGTN06KGHaubMmfr1r3+9Ve9z6aWXqlKpNDXbn//8Zx177LGaMWOG5syZ09T3bhQXCgMAkBA77LCDFi5cKEm68cYbNXv2bP385z8f9/tceumlOuOMM5RKpZqW7be//a1eeOGFdfkasWbNGvX2Nq+KMFMDAEACPf3009pll13WPb744ot1+OGH65BDDtGnP/1pSdKzzz6rt771rTr00EN10EEHac6cObrsssu0fPlyHX300Tr66KM3eN8LL7xQ06dP1yGHHKLzzz9fklQul3XMMcfokEMO0THHHKPh4eH1XrNixQqdccYZWrhwoWbMmKE//OEP+uxnP6vDDz9cBx10kHK5nNxdknTUUUfpoosu0hvf+EZ95StfaeqfCTM1AACM08dv+LgW/rHxGYlGzHj5DF16/KWbfc5zzz2nGTNmaPXq1Xr00Ud1yy23SJJuuukmPfDAA7rjjjvk7nrb296m+fPna+XKldpzzz314x//WJI0MjKivr4+felLX9Ktt96q3Xbbbb33f/LJJ/X9739fS5YskZnpqaeekiSde+65OvPMM/Xe975XV1xxhT760Y/qBz/4wbrX7bHHHvrmN7+pSy65RNdff/2613zqU5+SJP3t3/6trr/+es2aNUuS9NRTT23VDNOWMFMDAEBCjJ5+WrJkiW644QadeeaZcnfddNNNuummm3TYYYdp5syZWrJkiR544AEdfPDB+ulPf6pPfvKT+sUvfqG+vr7Nvv9LXvISTZo0SX//93+va6+9dt3pqdtuu03vec97JFULyi9/+cstZr311lv16le/WgcffLBuueUWLVq0aN3nTjvttG34U9g0ZmoAABinLc2otMORRx6pxx9/XCtXrpS7a/bs2frgBz+4wfMWLFigefPmafbs2TruuOPWzZ5sTG9vr+644w7dfPPNuvrqq/XVr3513WzQWFtafr169Wqdc845Ghoa0tSpU/WZz3xmvXvQ7LjjjuM40sYxUwMAQAItWbJEL774onbddVe95S1v0RVXXKFVq1ZJkh555BGtWLFCy5cvVyqV0hlnnKHzzz9fd911lyRp8uTJeuaZZzZ4z1WrVmlkZEQnnniiLr300nUX/b7mNa/R1VdfLUkqlUp63etet9lsowVmt91206pVqzR37tymHffmJHKmxsxmSZo1bdq00FEAAGib0WtqpOrWAt/5znc0YcIEHXfccVq8eLGOPPJISdJOO+2k7373u3rwwQd1wQUXqKenRxMnTtTXv/51SVIul9MJJ5ygV7ziFbr11lvXvf8zzzyjk08+WatXr5a768tf/rIk6bLLLtP73/9+XXzxxdp999317W9/e7M5d955Z33gAx/QwQcfrEwmo8MPP7wVfxwbsNGrkZNoYGDAh4aGQscAAHSBxYsX64ADDggdI2ob+zM2swXuPtDI6zn9BAAAokCpAQAAUaDUAADQoCRfstHpmvFnS6kBAEDVVT2ZTEY9PT3KZDIqlUrrfX7SpEl64oknKDYt4O564oknNGnSpG16n0SufgIAoJlKpZJyudy6TR7L5bJyuZwkKZvNSpKmTJmiZcuWaeXKlcFyxmzSpEmaMmXKNr0Hq58AAF0vk8moXC5vMN67S6+mfY7bhzTi3g/dqwk9E5r+vuNZ/cRMDQCg69Vv0DhqzVNrdMjLDmlzmmTa0l2G24FSAwDoev39/RudqUn3pzXn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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", "
xyscore
00.0000000.00000014.203125
1-2.2500002.250000479.927994
22.250000-2.250000801.291275
3-1.125000-1.12500047.585869
43.3750003.37500018123.262255
5-3.3750001.1250004.421380
61.125000-3.3750001948.978155
7-1.687500-2.8125001903.334630
82.8125001.687500244.869170
9-3.9375003.93750057777.322420
10-1.8742741.2052314.692348
112.3830400.8699017.484335
12-1.8837361.91486583.735436
13-2.7365360.94600718.424704
14-2.4537521.64901738.979211
15-3.983674-0.077950115.829795
163.3208660.9053847.261428
17-3.4981220.58829458.511063
18-0.9885240.07979229.307633
192.6687771.26940249.315085
201.435750-0.2891762.329034
214.500000-0.64377844.382514
22-4.500000-1.135868312.585353
231.4745371.03723315.813165
24-0.214291-1.10895618.459892
\n", "
" ], "text/plain": [ " x y score\n", "0 0.000000 0.000000 14.203125\n", "1 -2.250000 2.250000 479.927994\n", "2 2.250000 -2.250000 801.291275\n", "3 -1.125000 -1.125000 47.585869\n", "4 3.375000 3.375000 18123.262255\n", "5 -3.375000 1.125000 4.421380\n", "6 1.125000 -3.375000 1948.978155\n", "7 -1.687500 -2.812500 1903.334630\n", "8 2.812500 1.687500 244.869170\n", "9 -3.937500 3.937500 57777.322420\n", "10 -1.874274 1.205231 4.692348\n", "11 2.383040 0.869901 7.484335\n", "12 -1.883736 1.914865 83.735436\n", "13 -2.736536 0.946007 18.424704\n", "14 -2.453752 1.649017 38.979211\n", "15 -3.983674 -0.077950 115.829795\n", "16 3.320866 0.905384 7.261428\n", "17 -3.498122 0.588294 58.511063\n", "18 -0.988524 0.079792 29.307633\n", "19 2.668777 1.269402 49.315085\n", "20 1.435750 -0.289176 2.329034\n", "21 4.500000 -0.643778 44.382514\n", "22 -4.500000 -1.135868 312.585353\n", "23 1.474537 1.037233 15.813165\n", "24 -0.214291 -1.108956 18.459892" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 24 Score: 18.459891669078395\n", "Configuration: {'x': -0.21429106458788935, 'y': -1.1089558008630254}\n", "\n", "Task Completed\n", "\n" ] }, { "data": { "text/plain": [ "{ 'configuration': { 'type': 'exploitation',\n", " 'values': {'x': 1.4357503818200903, 'y': -0.2891760183553166}},\n", " 'score': 2.3290336842404216,\n", " 'user_defined_data': None}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "task.run(plotting_function, max_iterations=25)" ] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }