{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimisation: Ask-and-tell interface\n", "\n", "If you want more control than the [`Optimisation`](http://pints.readthedocs.io/en/latest/optimisers/running.html) interface offers, you can access optimisation methods directly via an \"ask-and-tell\" interface.\n", "\n", "First, we set up a problem:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function\n", "import pints\n", "import pints.toy as toy\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Load a forward model\n", "model = toy.LogisticModel()\n", "\n", "# Create some toy data\n", "real_parameters = [0.015, 500]\n", "times = np.linspace(0, 1000, 1000)\n", "values = model.simulate(real_parameters, times)\n", "\n", "# Add noise\n", "values += np.random.normal(0, 10, values.shape)\n", "\n", "# Create an object with links to the model and time series\n", "problem = pints.SingleOutputProblem(model, times, values)\n", "\n", "# Select a score function\n", "score = pints.SumOfSquaresError(problem)\n", "\n", "# Select some boundaries\n", "boundaries = pints.RectangularBoundaries([0, 200], [1, 1000])\n", "\n", "# Choose an initial position\n", "x0 = [0, 700]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we create an XNES optimiser object and run a simple optimisation:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can run a simple optimisation:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1.50093485e-02 4.99438682e+02]\n" ] } ], "source": [ "# Create an XNES object\n", "xnes = pints.XNES(x0, boundaries=boundaries)\n", "\n", "# Run optimisation\n", "for i in range(500):\n", " # Get the next points to evaluate\n", " xs = xnes.ask()\n", " # Evaluate the scores for each point\n", " fxs = [score(x) for x in xs]\n", " # Pass the result back to XNES\n", " xnes.tell(fxs)\n", "\n", "# Show the best solution\n", "print(xnes.xbest())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One advantage of this type of interface is that it gives us the freedom to evaluate the score function in any way we like. For example using parallelisation:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1.50093485e-02 4.99438682e+02]\n" ] } ], "source": [ "# Create an XNES object\n", "xnes = pints.XNES(x0, boundaries=boundaries)\n", "\n", "# Create parallel evaluator\n", "e = pints.ParallelEvaluator(score)\n", "\n", "# Run optimisation\n", "for i in range(500):\n", " # Get the next points to evaluate\n", " xs = xnes.ask()\n", " # Evaluate the scores in parallel!\n", " fxs = e.evaluate(xs)\n", " # Pass the result back to XNES\n", " xnes.tell(fxs)\n", "\n", "# Show the best solution\n", "print(xnes.xbest())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that, for our toy problem, the time it takes to set up parallelisation actually outweighs its benefits!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another thing we can do is track exactly what happens over time:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create an XNES object\n", "xnes = pints.XNES(x0, boundaries=boundaries)\n", "\n", "# Run optimisation\n", "best = []\n", "for i in range(500):\n", " # Get the next points to evaluate\n", " xs = xnes.ask()\n", " # Evaluate the scores\n", " fxs = [score(x) for x in xs]\n", " # Pass the result back to XNES\n", " xnes.tell(fxs)\n", " # Store the best score\n", " best.append(xnes.fbest())\n", "\n", "# Show how the score converges\n", "plt.figure()\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Score')\n", "plt.plot(best)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a simple 2d problem, we can also graph the trajectory of the optimiser through the parameter space" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create an XNES object\n", "xnes = pints.XNES(x0, boundaries=boundaries)\n", "\n", "# Run optimisation\n", "best = []\n", "mean = []\n", "allx = []\n", "for i in range(250):\n", " # Get the next points to evaluate\n", " xs = xnes.ask()\n", " # Evaluate the scores\n", " fxs = [score(x) for x in xs]\n", " # Pass the result back to XNES\n", " xnes.tell(fxs)\n", " # Store the best score\n", " best.append(xnes.fbest())\n", " # Store the mean of the population of points\n", " mean.append(np.mean(xs, axis=0))\n", " # Store all requested points\n", " allx.extend(xs)\n", "mean = np.array(mean)\n", "allx = np.array(allx)\n", "\n", "# Plot the optimiser convergence\n", "plt.figure(figsize=(18, 2))\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Score')\n", "plt.plot(best)\n", "\n", "# Plot the optimiser trajectory\n", "plt.figure(figsize=(18, 8))\n", "plt.xlabel('Parameter 1')\n", "plt.ylabel('Parameter 2')\n", "plt.axhline(real_parameters[1], color='green')\n", "plt.axvline(real_parameters[0], color='green')\n", "plt.plot(allx[:, 0], allx[:, 1], 'x', color='red', alpha=0.25)\n", "plt.plot(mean[:, 0], mean[:, 1], alpha=0.75)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "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.6" } }, "nbformat": 4, "nbformat_minor": 2 }