{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sequential Domain Reduction\n", "\n", "## Background\n", "Sequential domain reduction is a process where the bounds of the optimization problem are mutated (typically contracted) to reduce the time required to converge to an optimal value. The advantage of this method is typically seen when a cost function is particularly expensive to calculate, or if the optimization routine oscilates heavily. \n", "\n", "## Basics\n", "\n", "The basic steps are a *pan* and a *zoom*. These two steps are applied at one time, therefore updating the problem search space evey iteration.\n", "\n", "**Pan**: recentering the region of interest around the most optimal point found.\n", "\n", "**Zoom**: contract the region of interest.\n", "\n", "![](sdr.png)\n", "\n", "\n", "## Parameters\n", "\n", "There are three parameters for the built-in `SequentialDomainReductionTransformer` object:\n", "\n", "\n", "$\\gamma_{osc}:$ shrinkage parameter for oscillation. Typically [0.5-0.7]. Default = 0.7\n", "\n", "$\\gamma_{pan}:$ panning parameter. Typically 1.0. Default = 1.0\n", "\n", "$\\eta:$ zoom parameter. Default = 0.9\n", "\n", "\n", "More information can be found in this reference document:\n", "\n", "---\n", "\n", "Title: \"On the robustness of a simple domain reduction scheme for simulation‐based optimization\" \n", "\n", "Date: 2002 \n", "\n", "Author: Stander, N. and Craig, K. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "---\n", "Let's start by importing the packages we'll be needing" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from hbayes import BayesianOptimization\n", "from hbayes import SequentialDomainReductionTransformer\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create an example cost function. This is the [Ackley function](https://en.wikipedia.org/wiki/Ackley_function), which is quite non-linear. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def ackley(**kwargs):\n", " x = np.fromiter(kwargs.values(), dtype=float)\n", " arg1 = -0.2 * np.sqrt(0.5 * (x[0] ** 2 + x[1] ** 2))\n", " arg2 = 0.5 * (np.cos(2. * np.pi * x[0]) + np.cos(2. * np.pi * x[1]))\n", " return -1.0 * (-20. * np.exp(arg1) - np.exp(arg2) + 20. + np.e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the standard bounds for this problem." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "\n", "pbounds = {'x': (-5, 5), 'y': (-5, 5)}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "This is where we define our `bound_transformer` , the Sequential Domain Reduction Transformer\n", "\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "bounds_transformer = SequentialDomainReductionTransformer()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can set up two idential optimization problems, except one has the `bound_transformer` variable set." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "mutating_optimizer = BayesianOptimization(\n", " f=ackley,\n", " pbounds=pbounds,\n", " verbose=0,\n", " random_state=1,\n", " bounds_transformer=bounds_transformer\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "mutating_optimizer.maximize(\n", " init_points=2,\n", " n_iter=50,\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "standard_optimizer = BayesianOptimization(\n", " f=ackley,\n", " pbounds=pbounds,\n", " verbose=0,\n", " random_state=1,\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "standard_optimizer.maximize(\n", " init_points=2,\n", " n_iter=50,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After both have completed we can plot to see how the objectives performed. It's quite obvious to see that the Sequential Domain Reduction technique contracted onto the optimal point relativly quickly." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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8cUXU11dzYknnogQgrS0NB5//HEKC/tz1q2trcyfP5+EhASeeuopQK07fOMb3+C+++4bdZXMvffeS1xcHAsXLgRUVH/TTTd5fF0m0wiqimJiVdolrVA1Pw3H7FXK19tSp6YSRQvuXa/+ziaedLLKy09cNvLjnnKrGlu3+VGdqokAhByjieH+sHTpUmlUZBjs3buXWbNmhemMopOysjI2bdrkqr6JRPbu3css2xbVxVl2ku8nvPxtZV426yJVLRINHHobHr8UbnhD/f7BvfCzBt8uj56scUdCn13l+TVhRwixWUrp0TNCp2s0kcuiL/sn8AALnc1s0VI+CQMj+bZKdVXjj41vsDqrtcBHBPqvdAxSXl4e7lMYeyYuU+WU032kdiIJV06+1XeNvOaYRYu85thACLjkoXCfRXAxIvmuFrXwajg9ajRu6HSNRhOpJKQrv6OuJtXspSN5jQe0yGs0kYoQKppv2Kt6BjJKwn1GmnGIFnmNJpJJyoLaHer3sZ5NrIkItMj7wa9//WvmzJnD/PnzWbhwIZ9++imgOlC7urqCdpyysjKamppG/PxHHnmEW265xeNjL730EvPnz2fWrFnMmzePl156yef+1q9fz0cffeS6/dBDD/HYY48FdE4nnnhiQNtrAiQ5GzqcQ9h0ukbjAb3w6oOPP/6YtWvXsmXLFhISEmhqaqKnpwdQIn/ttde6vGTGmr6+Pr8aibZv386tt97KW2+9xeTJkzly5AhnnXUWU6ZMYf78+V6ft379elJTU11CPdiEzB/cvyRGir+v85jEfcqVr25XzTFJZIn867cNHBQRDArmwXm/9fpwbW0tubm5Lq8Wo4Hovvvuo6amhtNPP53c3Fzeffddbr75ZjZu3IjVauXyyy932QOXlZVx3XXX8corr9Db28u///1vZs6cSXNzM1dffTXV1dWccMIJuDemffGLX6SyshKbzcZ3v/tdVq9WTn+pqanceOONrFu3jgceeICDBw9y9913k5mZyYIFCwZ4yhjce++9/PSnP2XyZDV4ePLkydx+++3cc889/Otf/2LlypUsWLCA9957D7vdzsMPP0x+fj4PPfQQJpOJxx9/nPvvv5+3337bZam8cuVKFi1axAcffEBnZyePPfYYd999Nzt37uTKK6/krrvucp2vxWLh5z//OS+//DIAjY2NnH322fzzn//k8ccf57777qOnp4fly5fz4IMPYjKZhrzOk08+ebR/6ejEqPtPyh7opa/RONHpGh+cffbZVFZWMn36dL75zW/y3nvvAfCd73yHoqIi3n33Xd59911ApXU2bdrEjh07eO+999ixY4drP7m5uWzZsoWbb77ZNc3pl7/8JSeffDK7d+/mkksu4ejRo67tH374YTZv3symTZu47777XD40nZ2dLF++nO3btzN16lTuuOMONmzYwIcffjhg4Ic73qyHd+/e7brd1dXFtm3bePDBB7nhhhsoKyvjpptu4vvf/z7btm3jlFNOGbLf+Ph4Nm3axE033cSqVat44IEH2LVrF4888sgAAzdQA0i2bdvG+vXryc7O5pZbbmHv3r0888wzbNiwgW3btmEymXjiiSeGvE4t8MNgRPJ60VXjhciK5IeJuENFamoqmzdv5oMPPuDdd9/lyiuv5Le//S3XX3/9kG2fffZZ1qxZg91up7a2lj179rjSIZdeeikAS5Ys4YUXXgDg/fffd/1+wQUXkJXVf+l933338eKLyqq/srKSgwcPkpOTg8lk4rLLLgPg008/ZeXKlRizca+88koOHDgwotdpWA+feuqptLe3e7QOHoy79fCcOXNc3jhTpkyhsrKSnJyBfuVSSq699lp+8IMfsGTJEv7yl7+wefNmlweP1WolPz8fYMDr1AyDIfJ60VXjhcgS+TBhMplYuXIlK1euZN68eTz66KNDRP7IkSPce++9bNy4kaysLK6//voBNsJGGsVkMnm05XVn/fr1rFu3jo8//pjk5GRWrlzp2ldiYmLA+WnDenjBgn473uGshz3d9kSg1sO/+MUvKCkp4atf/SqgRP+6667j7rvvHrLtSF7nMUmyEcnrfLzGMzpd44P9+/dz8OBB1+1t27a5RtO5W/O2t7eTkpJCRkYG9fX1vP766z73feqpp/Lkk08C8Prrr9PaqmZotrW1kZWVRXJyMvv27eOTTz7x+Pzly5fz3nvv0dzc7Mr1e+LWW2/l7rvvdtkZlJeX85vf/IYf/vCHrm0M6+EPP/yQjIwMMjIygmo9/Morr7Bu3Truu+8+131f+MIXeO6551x2wy0tLS77ZY2fuCJ5LfIaz+hI3gcWi4Vvf/vbmM1mYmNjOe6441izZg0Aq1ev5txzz3Xl5hctWsTMmTOZOHEiJ53k2zjrjjvu4Oqrr2bOnDmceOKJlJaqS+5zzz2Xhx56iFmzZjFjxgyvE5MKCwv5xS9+wQknnEBmZqbL1ncwCxcu5He/+x0XXXQRvb29xMXF8fvf/37A9omJiSxatIje3l4efvhhAC666CIuv/xy/vOf/3D//fcH8L82lD/84Q9UV1ezbJmyuL344ou58847ueuuuzj77LNxOBzExcXxwAMPDD/fVTMQY+FV5+Q1XtBWwxpWrlzJvffey9KlHp1KxyX6feGk1wrv3AUrb4OEtHCfjSZMhMxqWAhxhRBitxDCIYQYcgAhRKkQwiKEuHU0x9FoNF6IS4Jzfq0FXuOV0aZrdgGXAn/18vgfAN/JaU1YWb9+fbhPQaPRhIhRibyUci94rsQQQnwROAJ0juYYzuP4PWxaE/2MpxSjRjPeCUl1jRAiFfgJ8Es/tl0thNgkhNjU2Ng45PHExESam5v1B1sDKIFvbm4mMTEx3Kei0UQEPiN5IcQ6oMDDQ/8tpfyPl6f9AvijlNLiKwKXUq4B1oBaeB38eElJCVVVVXj6AtAcmyQmJlJSoqtJNBp/8CnyUsozR7Df5cDlQojfA5mAQwhhk1L+JdAdxcXFuTxXNBqNRhMYIamTl1K6jE6EEL8ALCMReI1Go9GMjtGWUF4ihKgCTgBeFUK8EZzT0mg0Gk0wGG11zYvAiz62+cVojqHRaDSakTOuOl6FEI3AaMxLcoGRj1aKLI6l1wr69UYzx9JrhdC83klSyjxPD4wrkR8tQohN3lp7o41j6bWCfr3RzLH0WmHsX692odRoNJooRou8RqPRRDHRJvJrwn0CY8ix9FpBv95o5lh6rTDGrzeqcvIajUajGUi0RfIajUajcUOLvEaj0UQxUSHyQohzhRD7hRCHhBC3hft8go0Q4mEhRIMQYpfbfdlCiLeEEAedP7PCeY7BQggxUQjxrhBij3MgzXed90fr600UQnwmhNjufL2/dN4/WQjxqfM9/YwQIj7c5xoshBAmIcRWIcRa5+1ofq3lQoidQohtQohNzvvG9L0c8SIvhDABDwDnAbOBq4UQs8N7VkHnEeDcQffdBrwtpZwGvO28HQ3YgR9KKWcDK4BvOf+e0fp6u4EzpJQLgIXAuUKIFcDvUE6uxwGtwNfCd4pB57vAXrfb0fxaAU6XUi50q40f0/dyxIs8sAw4JKX8XErZAzwNrArzOQUVKeX7QMugu1cBjzp/fxT44lieU6iQUtZKKbc4f+9AiUEx0ft6pZTS4rwZ5/wngTOA55z3R83rFUKUABcAf3feFkTpax2GMX0vR4PIFwOVbrernPdFOxOklLXO3+uACeE8mVAghCgDFgGfEsWv15m+2AY0AG8BhwGzlNLu3CSa3tN/An4MOJy3c4je1wrqC/tNIcRmIcRq531j+l4OidWwZmyRUkohRFTVwjqniz0PfE9K2e4+fCbaXq+Usg9YKITIRBn+zQzvGYUGIcSFQIOUcrMQYmWYT2esOFlKWS2EyAfeEkLsc39wLN7L0RDJVwMT3W6XOO+LduqFEIUAzp8NYT6foCGEiEMJ/BNSyhecd0ft6zWQUpqBd1HW3ZlCCCMIi5b39EnAxUKIclRa9Qzgz0TnawVASlnt/NmA+gJfxhi/l6NB5DcC05wr9PHAVcDLYT6nseBl4Drn79cB3kYxRhTOHO0/gL1Syj+4PRStrzfPGcEjhEgCzkKtQ7wLXO7cLCper5TydilliZSyDPU5fUdK+WWi8LUCCCFShBBpxu/A2cAuxvi9HBUdr0KI81G5PhPwsJTy1+E9o+AihHgKWImyKK0H7gBeAp4FSlH2zF+SUg5enI04hBAnAx8AO+nP2/4UlZePxtc7H7X4ZkIFXc9KKe8UQkxBRbvZwFbgWilld/jONLg40zW3SikvjNbX6nxdxryNWOBJKeWvhRA5jOF7OSpEXqPRaDSeiYZ0jUaj0Wi8oEVeo9Foohgt8hqNRhPFaJHXaDSaKEaLvEaj0UQxWuQ1Go0mitEir9FoNFHM/wfeWo1BHRdo/AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(mutating_optimizer.space.target, label='Mutated Optimizer')\n", "plt.plot(standard_optimizer.space.target, label='Standard Optimizer')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's plot the actual contraction of one of the variables (`x`)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# example x-bound shrinking\n", "x_min_bound = [b[0][0] for b in bounds_transformer.bounds]\n", "x_max_bound = [b[0][1] for b in bounds_transformer.bounds]\n", "x = [x[0] for x in mutating_optimizer.space.params]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x_min_bound[1:], label='x lower bound')\n", "plt.plot(x_max_bound[1:], label='x upper bound')\n", "plt.plot(x[1:], label='x')\n", "plt.legend()" ] } ], "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" } }, "nbformat": 4, "nbformat_minor": 2 }