{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Convenience methods for optimisation\n", "\n", "This example demonstrates how to use the convenience methods [fmin](http://pints.readthedocs.io/en/latest/optimisers/running.html#pints.fmin) and [curve_fit](http://pints.readthedocs.io/en/latest/optimisers/running.html#pints.curve_fit) for optimisation.\n", "\n", "These methods allow you to perform simple minimisation or curve fitting outside the time-series context typically used in Pints." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Minimisation with `fmin`\n", "\n", "In this part of the example, we define a function `f()` and estimate the arguments that minimise it. For this we use `fmin()`, which has a similar interface to [SciPy's fmin()](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin.html)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 3.00000001 -4.99999999]\n", "1.0\n" ] } ], "source": [ "import pints\n", "\n", "# Define a quadratic function f(x)\n", "def f(x):\n", " return 1 + (x[0] - 3) ** 2 + (x[1] + 5) ** 2\n", "\n", "# Choose a starting point for the search\n", "x0 = [1, 1]\n", "\n", "# Find the arguments for which it is minimised\n", "xopt, fopt = pints.fmin(f, x0, method=pints.XNES)\n", "print(xopt)\n", "print(fopt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can make a contour plot near the true solution to see how we're doing" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "x = np.linspace(0, 6, 100)\n", "y = np.linspace(-10, 0, 100)\n", "X, Y = np.meshgrid(x, y)\n", "Z = f(np.stack((X, Y)))\n", "\n", "plt.figure()\n", "plt.contour(X, Y, Z)\n", "plt.plot(xopt[0], xopt[1], 'x')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Curve fitting with `curve_fit`\n", "\n", "In this part of the example we fit a curve to some data, using `curve_fit()`, which has a similar interface to [SciPy's curve_fit()](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 8.60319652 2.97607871 1.02781417]\n" ] } ], "source": [ "# Define a quadratic function `y = f(x|a, b, c)`\n", "def f(x, a, b, c):\n", " return a + b * x + c * x ** 2\n", "\n", "# Generate some test noisy test data\n", "x = np.linspace(-5, 5, 100)\n", "e = np.random.normal(loc=0, scale=2, size=x.shape)\n", "y = f(x, 9, 3, 1) + e\n", "\n", "# Find the parameters that give the best fit\n", "p0 = [0, 0, 0]\n", "popt = pints.curve_fit(f, x, y, p0, method=pints.XNES)\n", "\n", "print(popt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we can use matplotlib to have a look at the results" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.plot(x, y, 'x', label='Noisy data')\n", "plt.plot(x, f(x, 9, 3, 1), label='Original function')\n", "plt.plot(x, f(x, *popt), label='Esimated function')\n", "plt.legend()\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.5" } }, "nbformat": 4, "nbformat_minor": 2 }