{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multi-objective optimization\n", "\n", "When there are multiple objective functions ($p$) to be optimized, multi-objective optimization is used. \n", "Note that in this tutorial, \"solution\" means the pair of objective functions $y = (y_1(x), y_2(x), \\dots, y_p(x))$. \n", "Define the solution size relation $\\prec$ as follows. \n", "\n", "$y \\prec y^{'}\\Longleftrightarrow \\forall \\ i \\le p, y_i \\le y^{'}_i \\land \\exists \\ j \\le p, y_j < y^{'}_j$ \n", "\n", "A **Pareto solution** (in the maximization problem) is one in which no solution is larger than itself satisfying the above relations. \n", "In other words, if you try to improve the value of any objective function, one of the other objective functions will deteriorate. \n", "When there is a trade-off between objective functions, there are multiple Pareto solutions, and the numerical task is to find them efficiently.\n", "\n", "PHYSBO implements a Bayesian optimization method to find Pareto solutions efficiently. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.657438Z", "start_time": "2021-01-05T06:06:13.061216Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import physbo\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Test functions\n", "\n", "In this tutorial, we will use VLMOP2, which is a benchmark function for multi-objective optimization. \n", "The number of objective functions is two.\n", "\n", "$$\n", "\\begin{split}\n", " y_1(\\vec{x}) &= 1 - \\exp\\left[-\\sum_{i=1}^N\\left( x_i - 1/\\sqrt{N}\\right)^2\\right] \\\\\n", " y_2(\\vec{x}) &= 1 - \\exp\\left[-\\sum_{i=1}^N\\left( x_i + 1/\\sqrt{N}\\right)^2\\right],\n", "\\end{split}\n", "$$\n", "\n", "where $y_1$ and $y_2$ have minimums at $x_1 = x_2 = \\cdots x_N = 1/\\sqrt{N}$ and $x_1 = x_2 = \\cdots x_N = -1/\\sqrt{N}$, respectively, both of which are 0. Also, the upper bound is 1.\n", "\n", "Since PHYSBO solves a maximization problem, the objective function is again multiplied by -1.\n", "\n", "- Refernce\n", " - Van Veldhuizen, David A. Multiobjective evolutionary algorithms: classifications, analyses, and new innovations. No. AFIT/DS/ENG/99-01. AIR FORCE INST OF TECH WRIGHT-PATTERSONAFB OH SCHOOL OF ENGINEERING, 1999." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.662277Z", "start_time": "2021-01-05T06:06:13.658957Z" } }, "outputs": [], "source": [ "def vlmop2_minus(x):\n", " n = x.shape[1]\n", " y1 = 1 - np.exp(-1 * np.sum((x - 1/np.sqrt(n)) ** 2, axis = 1))\n", " y2 = 1 - np.exp(-1 * np.sum((x + 1/np.sqrt(n)) ** 2, axis = 1))\n", "\n", " return np.c_[-y1, -y2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preparation of search candidate data\n", "\n", "Let the input space $\\vec{x}$ be two-dimensional, and generate a grid of candidate points on [-2, 2] × [-2, 2]." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.676772Z", "start_time": "2021-01-05T06:06:13.664110Z" } }, "outputs": [], "source": [ "import itertools\n", "a = np.linspace(-2,2,101)\n", "test_X = np.array(list(itertools.product(a, a)))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.683329Z", "start_time": "2021-01-05T06:06:13.678152Z" } }, "outputs": [ { "data": { "text/plain": [ "array([[-2. , -2. ],\n", " [-2. , -1.96],\n", " [-2. , -1.92],\n", " ...,\n", " [ 2. , 1.92],\n", " [ 2. , 1.96],\n", " [ 2. , 2. ]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_X" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.688238Z", "start_time": "2021-01-05T06:06:13.684556Z" } }, "outputs": [ { "data": { "text/plain": [ "(10201, 2)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_X.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definition of simulator" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.693027Z", "start_time": "2021-01-05T06:06:13.690029Z" } }, "outputs": [], "source": [ "class simulator(object):\n", " def __init__(self, X):\n", " self.t = vlmop2_minus(X)\n", " \n", " def __call__( self, action):\n", " return self.t[action]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.699166Z", "start_time": "2021-01-05T06:06:13.694489Z" } }, "outputs": [], "source": [ "simu = simulator(test_X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting the functions\n", "\n", "Let's plot each of the two objective functions. The first objective function has a peak in the upper right corner, and the second objective function has a trade-off with a peak in the lower left corner (The star is the position of the peak.).\n", "\n", "### First objective function" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:13.958020Z", "start_time": "2021-01-05T06:06:13.701129Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.imshow(simu.t[:,0].reshape((101,101)), vmin=-1.0, vmax=0.0, origin=\"lower\", extent=[-2.0, 2.0, -2.0, 2.0])\n", "plt.title(\"objective 1\")\n", "plt.colorbar()\n", "plt.plot([1.0/np.sqrt(2.0)], [1.0/np.sqrt(2.0)], '*')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Second objective function" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.158089Z", "start_time": "2021-01-05T06:06:13.960026Z" }, "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUIAAAEICAYAAAAqbv2WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABw2ElEQVR4nO29f7Q9WVUf+Nmn7vt2q4CGoIANAROJE2OYZOwFOv6IEY3IOHY0StD8EJXpMQkZMyszAYe1jGPiSicz+aHiRDuEoAYFNEE6yzYIKMEkYui4GBGIpsOANCLIj/BD0/19t86eP87e++xz6lTduu/e996979Vnrfuq6tS5VXXr3vq8z/5x9iFmxoIFCxZcZ4TLvoAFCxYsuGwsRLhgwYJrj4UIFyxYcO2xEOGCBQuuPRYiXLBgwbXHQoQLFiy49liI8JqAiF5CRH9rYv/Hiej3n8N5z+W4CxbsEwsRLgAAMPPDmPkduxyDiF5PRM/Z93Eb5/k8InoNEX2IiH6biH6CiB67z3MsuF5YiHDBMeL3ALgbwBMBPAHAxwD808u8oAXHjYUIrxCI6A+JKvsvRPRWIvrqqsujREl9jIj+NRE9wb2XiegzZf0WIvq/ieg3iOh9RPSDRPQJru8dRPRmIvooEf1nIno6EX0PgC8C8EIxh1/oj0tETyWi3yKizh3na4joV2Q9ENHz5XgfJKJXENEjW5+TmX+GmX+CmT/KzL8L4IUAvmBPt3HBNcRChFcERHQC4F8C+FkAnwbgrwB4KRF9luv2ZwH8TQCPAvBmAC8dOdxdAP4ggD8K4DMB3AbgO+U8TwHwIwD+dwCfAuCLAbyTmV8A4BcAPFfM4ef6AzLzLwH4HQBf6pq/EcCPyfpfAfCnAPxxAJ8O4MMAfmDmx/9iAG+d2XfBgiGYeXldgReSGvstAMG1/TiA75L1lwB4mdv3MAA9gMfLNiORHiER1h9wfT8fwP8n6z8E4B+MXMPrATynamMAnynrfwvAi2X94XKeJ8j22wE8zb3vsQBOAaw2fO4nA/gQgC+67O9geR3va7VfWl1wifh0AO9m5uja3oWk5hTv1hVm/jgRfUjf5/p8KoBPBPAfiEjbCICatI8HcO8Zr/HHAPw7IvqLAL4WwC8z87tk3xMAvJKI/PX3AB4N4D2tg4kp/zMAvp2Zf+GM17RgwUKEVwi/CeDxRBQcGf4+AL/u+jxeV4joYQAeKe/z+ACA/wrgDzNzi4DeDeAPjFzDZCkjZn4bEb0LwFeiNIv1uN/CzP926hgK8W++FsDfZOYfnfOeBQvGsPgIrw5+CcDvAvjrRHRCRF8C4H8E8DLX5xlE9IVEdAPJV/hGZvZqEEKi/xjAPyCiTwMAIrqNiL5CuvwTAN9MRE+TAMdtRPTfyL73AdiUM/hjAL4dya/3E679BwF8jwZwiOhTieiO1gGI6DYAPwfghcz8gxvOt2DBRixEeEXAzDeRiO8rkVTd/wPgLzDzf3TdfgzA30DyqX0ugD83crjnAbgfwBuJ6KNIyuuz5Dz/HsA3A/gHAD4C4F8jmbUA8L0Avo6IPkxE3zdy7B9HCoj8HDN/wLV/L4B7APwsEX0MwBsBPHXkGM9BItzvkgj1x4no4yN9FyzYCGJeCrNedxBRQPLHPYGZf+Oyr2fBgovGoggXAMDnAHgQKeq8YMG1w85ESESPJ6KfJ6K3SRLvtzf6EBF9HxHdT0S/QkT/3a7nXbAfENGfBvDzAJ4n5vWCBZcGSc7/NeGK5zf230JEL5f9v0RET9zLeXc1jWWM52OZ+ZeJ6OEA/gOAP8XMb3N9noGUMPsMJL/P9zLzmP9nwYIF1xAy6ujXAXw5gAcAvAnAN1Rc8pcAPJmZv42IngXga5j5z+x67p0VITO/l5l/WdY/hpQYe1vV7Q4AP8IJbwTwKcsg+QULFlR4CoD7mfkdYp28DIk7PO4A8MOy/pMAnkYu4fWs2GseocjUP4aUyuFxG8qk3Qek7b2NY9wJ4E4A6NB97ifiEfu8xAULFjg8iN/BTX5oJyL5ij/xSfzBD/Wz+v6HX3norUj+aMXdzHy3rLd4orYcrQ8zr4noIwB+L1KmxJmxNyKUBN1/DuCvMvNHz3ocuSl3A8Aj6JH8VHranq5wwYIFNX6JX7fzMT74oR7//tW/b1bf7rH/6UFmvn3nk+4ZeyFCGfD/zwG8lJn/RaPLe+BGNQB4HEaGTS1YsOC4wAAi4sZ+MzCHJ7TPA0S0AvDJAD6464n3ETUmpNEGb2fmvz/S7R4Af0Gix58H4CPMPDCLFyxYcHxgME65n/XagDcBeBIRfYaMfnoWEnd43APgm2T965AS83dOht6HIvwCAH8ewFuI6M3S9n8gjXOFDIG6FylifD/SMLBv3sN5FyxYcCDYhyIUn99zAbwaqcjHi5n5rUT03QDuY+Z7kETXjxLR/UgjpJ6184mxByJk5n+DVJ1kqg8D+Mu7nmvBggWHBwaj39MINWa+F1V1I2b+Trf+IICv38vJHJbqMwsWLNgZcbrw0MFjIcIFCxbsBAbQL0S4YMGC645FES5YsOBagwGcHnkVq4UIFyxYsBMYvJjGCxYsuOZgoD9uHlyIcMGCBbshjSw5bixEuGDBgh1B6KdTiQ8eCxEuWLBgJ6RgyUKECxYsuMZIeYQLES5YsOCaIy6KcMGCBdcZiyJcsGDBtQeD0B/5hJgLES5YsGBnLKbxgv1i93loShz50KcFhw8G4SZ3l30ZO2EhwovEvkluX+dcyHLBDkgJ1YtpvMDjMshuV4xd80KQC2ZiCZYsOE7ym4P6cy3EuKABZkLPx60I93L1RPRiIno/Ef3qyP4vIaKPENGb5fWdrX5HAaLh67rgOn/2BZOIoFmvQ8W+FOFLALwQwI9M9PkFZv6qPZ3v4rE89G3ofVnU4rVFCpYct3G5l6tn5jcQ0RP3cayDwEJ626N1zxZyvBa4CsGSi7z6zyei/5eIfoaI/vAFnnc+FnNvv1ju5bVBzzTrdai4KD37ywCewMwfJ6JnAPgpAE9qdSSiOwHcCQC34hPP/8oO7WGlPf9v4kuuFLcEXK48rsLIkgu5emb+KDN/XNbvBXBCRI8a6Xs3M9/OzLef4Jbzu6hDUH8Uhq9jPMdW13Ng/3gW7AWRw6zXoeJCFCERPQbA+5iZiegpSAT8wYs4d3UhF3iuw/3SZ13beSpJ/z0sCvHokYouHPDvfQb2QoRE9OMAvgTAo4joAQB/A8AJADDzDwL4OgB/kYjWAP4rgGcxX/ATcBEkeMjkty30s5y3ab1EnY8eDMLpMsQOYOZv2LD/hUjpNReL8yS/q0R6Uxj7nPsmyEUlHi2YcfQJ1ced/DOG8yLASyQ/CtOfieMFk4e/F+dBigsZHhEOO1l6Dq4WEZ4HAZ4T+W0itvM+3l6J8zxIcVGIRwPGoggPA/smwD2R377Jbp8Yu7adCfI8SXEhxIPFEiy5bOyTBPdAgIdMfnNQX/9OxLjvgMtiMh8kGLQUZr0U7Iv8diS+vZPeefkgdyCi1mfcmhz3qRIXk/ngkKbzPE4qURzf1V8yCe6F/C466NI63x7I8Uxq8aLSchZcIJYJ3i8O+yDAMxDQmYnv0NNrNl3fDKLayYzeByEu6vAgwMBBjxqZg+MgwmMiwX0T4LbXsK9o8BmI6kxKcV8KcfEfXioWRXje2IUEtySlrYjvLIR3EYGUfRPnGczqMynFffgRl+jypYCZLkQREtEjAbwcwBMBvBPAM5n5w1WfPwrgHwF4BIAewPcw88s3Hfu49ewUtiAqCjSfBLctXBAovw4RZ7m+Le/B1sp6V1W9FHa4UKRgSTfrtSOeD+B1zPwkAK+T7Rq/C+AvMPMfBvB0AP+QiD5l04EPXxFui30/oHOPdwaio0t6YEeHeY99hjFFV9+bCSXn7/VWCnFRh0eAC5uz5A6kmgYA8MMAXg/geb4DM/+6W/9NIno/gE8F8F+mDnx1iPA8FMqcY25BgJdFfDXq69hY/8J/xikSm0leFGi+H5HCEmE+cKRgyezf9qOI6D63fTcz3z3zvY9m5vfK+m8BePRUZ6l0dQPAf9504OMnwpkEuDf1N+M4WxNeuCAPRWwTSut6Z6vGFqHN8PdtpRB3UYeLMrwQbDGy5APMfPvYTiJ6LYDHNHa9wG9ISb/RL5WIHgvgRwF8E/PmH85xE+G+SHAPBDiL/C6K8LY5/0xy3EiMm8znGWbzuRPiQobngn2OLGHmLxvbR0TvI6LHMvN7hejeP9LvEQB+GsALmPmNc857nER4UQQ48f6NxLcN6V2UydwigrHrrAhyIzFuMp8PgRAXMjw3XNDkTfcA+CYAd8nyVXUHIroB4JUAfoSZf3LugY+LCC+CAM9KfnOI7yyEtw2hjqi7jeefQ5ATxDhKijuazbMI8SxkCCyEuEcwA6fxQojwLgCvIKJvBfAuAM8EACK6HcC3MfNzpO2LAfxeInq2vO/ZzPzmqQMfDxHugwQvmgAv2lyec6wWWc6ZYEmP3Xi/3p+tCBHYSGSzgipnDaYs6nBvSKbx+RMhM38QwNMa7fcBeI6s/zMA/2zbYx8HEc4gwTMR4Mh7zkR8O6rF84woFwQ1dS1KclNzFE8oxVGVOGU2b1CIs9ThYipfOpaRJeeNDSR4ZjN4WxLclgAnCOei02hmR4X9NdfKb8ykHFGKZ1KJE+ru3NThQoY7Y8v0mYPEviZvejGArwLwfmb+nMZ+AvC9AJ6BlPn9bGb+5Z3OeRYC3Ib8tiG+kb7TyvISfziRJ6+NmccjzGNm9AiJblSJYwrxItXh4jfcERdjGp8n9nX1L0EazjKGr0Sa0P1JSJO3/6NdTrbRDD4PEmzNgxxCsy8RjRx3xnC21jzEu7xa8NfRuJbx6x+5L61+I/dl9FoGnScU9T5HBBXvOW5Vc5mIMm/JptehYl+z2L2BiJ440eUOpHA2A3gjEX2K5gNtc559+QHP/JBv83C3cMZgzW7oNhdWCCPmaKOZ5+QiTqjErUzmfajDxVQ+d6So8TKd5xzcBuDdbvsBaRsQIRHdiaQacSs+cd7R902CM/rMJsB9kd8mtTL18G4aDTIWsGiQExE1SCyUZNgyNas+k4S4pbm8dzJcsBWWUv3nABl3eDcAPIIeycCEEtzFBN5EfpuIby7pNfvtYaTL4D2NtjEC6CZ8Yq18sEox1kpx4FOso8/bKsQt/Ycb1eG2fsPFZ7g1DtnsnYOLIsL3AHi8236ctE2DtiTBVrezKMBtSbC+lm3I7zwrWW+qDtOq8DzHRK36DMisjiTPVIiz1OEEFnV4OViixvNxD4DnEtHLADwVwEe29Q8WmKG89qoAtyW++thbpvAMzr8lxqvJiB+nSRYVQXQNX1mtFr1SrCLRhUrcpBArdVh8hjP4DvdGhosynI1jjxrvK33mx5HqhD2KiB4A8DcAnAAAM/8ggHuRUmfuR0qf+eaznWie6bkLCU6qP3/+s5DfXJ/lsNPmPoA9sGPHHJCLInJbPdaKsSYlT0gNlTipECfU4eD9es0tU3nxG146mAnrhQgBZv6GDfsZwF/e6STnrAJHFeCU+qOZ/VrX1rqexnXthLHxwbXC6Rpm6cBX6IMovpnbhIjSlzhQiAOSHSZmN8lQz2mddvAbLspwb1hM44vAriS4KwGOkZ/vt+l6dsnLOytmVpYBhrEWniI7TwzF8LlxX2LhR5xSiCPm8rmow22V4ZJa08TiIzx30PZKa0oF7osAR/oUx9xWnY617YKxB7frGv6/SlG59ZIUiw3XyZvODUJsBVa8SdzyH25ShwsZHgwWIrxITJHgeRDgNuQ391pa25OJ4lv+wAYPqVds3qSsHuiaHOucP9nXJMXanxiq/cBoYIWnAiqb1OGYqXzeZLigwJJHeJGY43PLO937tiDBlgI8KwFOqsMZZvOcfdtiwu0H5vZnqQiKrPuEAlTi9ETlyaal5jaZy1O1FuvjnTcZLqpwgCWP8CIwZn4C4+SziQCnFGBjX9PsbZ17lGw3kN8E4fHMESgUuX0cfWjrAEWRWF2pq/rz6DG8OhuoRD+crxFcaSjEWQGVqn2W3/AsQZSFDM8EZmB9MYVZzw2HT4TnSYJTROX2T6q/bQhwA/lNEt6UMjRCavcZjBmu1Z+HkZYjRN+/QVQDlVgrQK8QB0qw9B9unlEvFGS80W+4LRYyPBMW0/iCMOoP3ESAUybwHAVYE8AU8bVIzycJT5nEY8S0jWk88lByPdlX1Y88eZh6ZLftTVx5+L1PUYlJDzGlEDf4D5W0i+IOahY3Issb/YaLMjx3LD7CC8K2M8S1c/baaS7lMfZAgpsIcAuF2Lq2UYyZxZvAbNc3alpLv6z2JlQiNijETf7DKUyQziw1uQ2WAMpW4IUIzw+EGUpwWzO4VoHbkt8G4uOZ6nDzyJQtf1jeRdMihCIi3FCAqJSjjlKJXPajatsfa4wQaxVIcIGTal/LdzjDbwhUZLiFMtw5gLKowiVYcmGYSpDGBZLgLgS4hWnMO0SLN76zlQroFR5n1ceBslLkxjLQYJhyixALdTgHY5HlsWF60ObtleFChruBefERXgxqYvJtaPgD90GALQU4RX5bmM0DkvPEdBZfYfUAslJh0V4SFplycv1qladBmEoFFipRo8/qSxxRiBZl1uF85iMcUYZuuJ75DVtJ2BehDOfi2pIhoV+ixucIomFyMrA/EjyjAhyovzHi9J8DjgDHiK9BdrOUoetD/kH0Cg9IxWeU3BwxDs6gxDYihDiM+BOnFGLM/kEiGprLLUKsyUoJbkwZTkWUZ2CUDBd/4UYsPsKLQEMJ7kUFtghwROU1yW/iPZOk11KGNd+f0TRuqsFYHsvIUpRe7urIkbntDxSzmIlNBRamsx63JlKNMk/5D+tgSuU31BEpZyLDXZXhNiYycK2UIWMxjS8WNQluwiYVuEkBehN4TP2NkVvA9D67xnFFeNbfFnF93DIIYmqQSAjPE4mQY6Th/gAU5q/5EWVzoARl6du9GctcklUrsuyjyrLdHJ63R2U4ikUZtsHHz/uHT4SV+XoWJdj0BU75AacIsKEMmSg/9C3yG9mX9rvPGnz7Dv9hBwUV8irpCWs1KKqxqRajKDjn5xMPeW6rCdG1jxKiD6ZMmcoNMixQmd6D429ShkskeWcsUeOLwDYkuMkUnjJpawKc6Dum/KYVoX6ehmnsf0dNX2Hrxri3eNFXm8eBkv2CtKAisEGiICeIkbhoN5XoTeAxQoTbFzCqDidN5Q0pNoWpfBZluC0ZzsU1IUNegiUXgG2VoGubNIUbam8QBa5N4DGVN0mM5TUxUZP0BkTXUoSt35qSQd3dpcOQ8J62MwkxdonU2B2HWEmrYSJLu5rWdsqW4oMGVcprGfSt/H0EjJvKm7CtMtxQqGEJnszHsfP94RMhNpDgmClcmdSFaXsGAjTymzKJK+IzciS497j+QEFuowqx3ufRoYwU5ze4dQ12yIE1DYZFPao/jrVvIomBUmypRFWIdkAu0m80qEKVGV34G6sUmFFTed/K8CLI8LqowiMPluxFzxLR04no14jofiJ6fmP/s4not4nozfJ6zhbHlisdUYJV22hJfG/e+ja/7vuNkeBkG+y9pvxCJlszubv0Xu5Sv7wPts403Df2svdU7yv2E6XzdXJ+PTZ5V0DuiyD9vRrW6y7uFeycg/vn7u1gmCFNb7fHis982Fp5p8XPwbUPktzPwcSbe91HivS/jWa9DhU7K0Ii6gD8AIAvR5q4/U1EdA8zv63q+nJmfu52B5flJiU4ZQq3zFs1R7sRtWj7q4e5Jj/Xx4jPm7pOMXqTuFaKtflctNm9mPgRtUZYqNoDcnUXE2qUlaSeiDkpPkuuJjuQ+RUjJ9OZxDzu5bhBfIO1QlSI6ivUoX6m2s+oCsolYXPA7sqwMSeKYcOIl8VE3owlfQZ4CoD7mfkdACBTdt4BoCbC3TClBFH/lw8lcdTBD2BoDjtyLU3UNgkaf3hSq03fME6AQ9+h/6wThNiC60+ex9QE1nMoIeqxka6NNKWmk/dHQDyH6b2yPz33DNIjOD+iXUHgtF2n5RT3Htl36O5VkZZTF2P1qTSI25mbDfN0b8GThQwBHL/1vw8ivA3Au932A0hzF9f400T0xQB+HcD/yszvbvQBEd0J4E4AuDV8khDUuBIcpMZ0Xd4e8wfWZpwnO8AKlnII4wrQEalXf0p8Y6RnfeHaq+XAHzj3ny1bcDhHhuF+pHJC4txILPEIpxaTwmsoRaZEdCzHp2B+xMKHSLFUjFmqtdWhXmBHQO/JLwyVISBKcIYy3DAcb1t/4Sjm9CV3P68YGIR45FHji7r6fwngicz8ZACvAfDDYx2Z+W5mvp2Zb79Bn5B3jCjBAt431PBJNUlQ9wPpbnjiqxQg09AfZsesSZCS8lG/ofe3sexLPkSg8ON5314nr+Be3Ui721cczx9Tz0Uor0V8h0z5vXYN7j4YiVu7b6MycKT302+j2q7+SQ2/Z8rfaQ0Kw+O2sKFYR9l3ej9t2H+dwTNfh4p9KML3AHi8236ctBmY+YNu80UA/u7sozsfYHpgGj7BsdSYFgECgPoG5SExX2AIbRPYBz+0rVKGmQRREISSS7q2ylQOud2O4bZT2+w7ld7KQoaA/fLM9NXtCFOPJL9Q1nQa8yeSRY4LlTihEKlP0WCOEQCl7Tq6bEPzQlJ5XRBlKPc8xjJh231PJKNRZinDseF4Cq82gbYybAzDW0zkBuQ3ct4gokcCeDmAJwJ4J4BnMvOHR/o+Ask991NzYhP7UIRvAvAkIvoMIroB4FkA7qku6rFu86sBvH320VvJ0qhIMDcOVN5oVWiiobqbQ4KBivfmyK5TViG31ZFdU4odUER79Rjn8qrOUyvHoJ+7oRRN2eao9JhCzKrS3SP9JzWINjf+WfnvR797/w+s3g+MK0P/zxJoR5LH1OZ5Yo6KPUZcjCR8PoDXMfOTALxOtsfwNwG8Ye6Bd1aEzLwmoucCeDVSfZMXM/Nbiei7AdzHzPcA+F+I6KsBrAF8CMCzZx3clNQelGC1v3ig9YHQtJKKAJvmrypBpwxN/ZHvlz9HoRqBal2VZfXZfdum2+V8hFkNyipzGTVGVoPEnFSfV4p+VAiQVJLkAg4UYu+EHiWViGgxazDCMPdQlV8fTQlyRyDd9vmGei21ihsEWKSfjkoRdTdQhnp8f++0D3D+UeTG+Y8dF5QacweAL5H1HwbwegDPqzsR0ecCeDSAfwXg9jkH3ktCNTPfC+Dequ073fp3APiOMx18TAnWfc5CgkqAtS/QTGdn4nZZ+RQmcHAPZYMAW6ZwYTYDjihHtovPWm3zcNWG23nzFwS1TNM+dv+pKfUNcPOXUH3U1MSQgEcyoxkE6tLzn8xbWQ/u3BpJ1gsNnMkxlB/Wpg3oOX/PDTK0zxCoTK2pR6Vswpxk6/MagndFwABibP1Ym3gUEd3ntu9m5rtnvvfRzPxeWf8tJLIrQEQBwN8D8OcAfNncizqKkSUAcoTYmzpTZtYYCXbjhKgJzpbSErIKNLPWEWBTAXYVWTrVl82/vA+o13Mfj63GGjvfYLmt6hAgzsTITi1mha0sSpnRmCTfLx1DUgpzmx5CzynKhxAw8BUiJnIMyUeILuQiDkj/jIpJpbZVhppq04okAxWZNnyIgxs8V+1dQ1Wo/0zn4QPMPKrSiOi1AB7T2PWC4pTMTFTPSgYA+EsA7mXmB2ZXqcLBE6GowT2QYJ0Kw0TZFPaBD+evMhUYaFwBWt8GAfq+funJE4AnyzF1uAltk5jKbR88cXGLghRJAiRUFmNAP06Idt5qmyLnzxghlW8cARKD+/SdUNSgR7ALtXxDxRxl6As1nEGxXaiJfIWwL05n5lEVR0TvI6LHMvN7Je7w/ka3zwfwRUT0lwA8DMANIvo4M0/5Ew+dCFHmCgLbk2DL/C1UoTdnsylWq0C2YWmpi+2rCJCLQAIaS8pk54kRrp+sG+b+Y2uaxNW2+++t0d6CFCOJj5BF9Qkh6kGikqv6COUckdO+WlCqcgxIydjiQzRTWZKy7YN7spN7ZGayEp5uO2U4KNQAlORY+wvt3upxFxN5J1zMLbgHwDcBuEuWrxpcBvOf1XUiejaA2zeRIHAMRAhspwQt8BGy8hPzt1xHDoio4nNjf5sE6EmzU7IEMtFRzh2slGFh/lbKsG0i62ff4j7557tQgLJbiJDckpmcMkypKVrYNRGimM5CiEWZfk4HZaKUY6cBFVGiBOGNJATle4x5mB4jmc3MKYodnTL0ZKhmsino6h9js1BDHCpFT4atoq5zynbt00S+MuYxXVSw5C4AryCibwXwLgDPBAAiuh3AtzHz7BoGNQ6bCAlZDfoIcT1iRJet/QGD9UFUWElM1VpNgk7NlQnLGCrEgghbbRgQYts0pmLb35MC9XNkKpDztjdXlSCbr0xu5TEJqggp6mdlUI8ULJHxyMmTkR5uBllKDvWZQLkLQB+hoRNWEakR4loZNtWbV2n5+yegrfZ2xXmayFeFDC/gI0g+8tMa7fcBGJAgM78EwEvmHPuwiRDIKm+uOTxDCXIXjMyKiLCSW0MFNgnQKUDvM/SkV+QSDpaZeIH9KcKWfxCAqznIA2WI6LdzKo36oykmRahjhClSuuXMzn8oypLkWH19TbIkCYxITUNThgAYsVSGqhiJc2qNT70BshXgleHAX6gukhw8GS3OsKkwwzX0AU6CkepWHjEOnwg3wStCnzxt6o8GShCiAO0hUbKz/RMq0IivVHt5hAmKdkulAVCb11PR48kUmrFb4U1goFCCYLiBEmQMRFEISmIUFN05RealHEBk1QcCe9+eG7ecjkupaIOqPVLlCEjCjfkN4Q5TTjHqlKGMWR7MsazkNKaqNhDWpvlMtinMsPgKFyI8R4yrQe5cuypBIEeHVQk683ajElyp73AzAUYZxqYR56h97f1D4qujx6i2ZxFhvV09e1SRn7UxCmXo/YMa4QWQlaBbFgpRht2RkKn3H0ZKfYLl1iQioT6TJEURanDcVSvD2meoqTUxzookmyoE2sPwanKcUIXbRJGbuC7m8ZFf/oEToaD2A3pneb3ulaDHDCXYMlmNJOW9palb5xKiTYK1j3CMAHU/MF8R+o8v/KNmah0k8cpw4CdUyUdsx/R5hwCyfzCyfYZEiOojJBAkeAIW/598flVuBJCOTx5ThnbRKEnCvlOnAonKbU+GU2pOxiMP9w3JcC6utSo88o99+ES4KUJc5wlW6TIpKTqPs/VKMHZuHyErRBcRzmN1YapO1WLpGyz3Q99bEd8oEQJNIpxDiEZ49gelAmwpQ1OCqg51m1xpLjGdtV/MZEgRIOI01LfPOYfMhAAZstcDFlXWz90jK8BNylDyDDXnUH2CVqjBzGd3kxz52UTyqgr1d2HFHKhdsqu+v2OqcIkgJzBm/Mc+bBw2EaqCs+1KGdbrgnpwf11a3szjQu1pe0mCqmJsX/2eRrAk983vAxrb5NrhrqEmw3q9QkGAsl6oOb9NjbbGdiIk6az7TAXqulOH7N4XCJZQjRRVTuk47FT5TGVY5BxSjiTr96nrpg6R1dy2xDIoBjtDFS6BEwDHy+GKwyZCoPQLjo0a8b5ANx8HvAoMm5VgXDkSk3YlOV8dJqtGWMkr37dJhI7gWpHkvC6BAW1XbPqH21R/ZOs+hzCrP1hVaq/8dAkGgkSEo7CkV4ZK/KFnyX6RESoyOiVqoKUnZCciEnGukYnTK0OtgK0EGJKa4yiJ9T6S7BSdHXfMX6hRY+5zbiGAQckuoFRnraTtCV/htR1tskSNLwAtv6AnQe8XbChBM0drJegJyZGVT5GxbTOTc/9m9LirjqfmMIbE6MlvKrk6feYN94gbSzfW2IiRkYMlqg5juu6WKR2h7dSQnmmT5bhsaTmi/gLSAyKVarRije2T9xXKUPMMyZEh5WPYSe2fI8qRJw2QqtG0MezniW2iQs1cnNlXeMTmcXPU7xHhwIlwRA0W62gQIuCVIEzRUa4X6EhMlWCK/JakN14nkIbKsEWAVVtackMJInMN5Y8/jBrXRETDXZWJC1YyZKf6KBdMUCUlXGPzljDEzyftOjpEAypCpEqWqgDTNrkLkPf0+gay6/S+SgYnLujSBenYZP2M2Vz2/y2Q/0nqb6Aej9xKwva+Qr1/U+ky9f7FV5ih3+MR48CJEJnMZL0Imgx8f5QryDglWJCgJ6QBeXlCFBNat53iK1JrGkQ4CKJYG+c2SDswUIeDAMmUMnQPTTGkThQgF9vSTwIhVi5L0mMGxMf5uOQVq9xbIs6macznhChDU6Ds5OeYMhRFykBK5RFVRXouoFSI+nsAyvxCua/FZPMWCaYyfabeVsxNp1kgaP3HPi4cBRHacoZJPBg2JyayBjiyKZuXfpRIM+DhlaCSqZElCkJs+QcLAqwVIAE2G1zdDmQ22vQ7MzVIbl0JCVATthCUpgTVWeeUWvTH1GvJ10Ze6fnri3oN5bltrHEnilDIMUWoRQlCkq4laGLBk5aJ7P15UybyWGGGunbhpvL+mwIn1z3B+sg/6mEToZHSCAmGMAiOWFTST55OyJMnqULssuIriY8KlVeYwmFIfIUSLIiT28GSWhnWStDIpiKYKSL0P0JTX3AEiEQ6UeYotoBIVluqEkFDhWgjRqIjQb0eUXp+qHAALI0mKTP9XuRApCSY0myg3KUfuYfGQ+SjB6RcxQCK0f7JUf15ffR4MnAyYiK3giBTpupZxiBf1aDJkX+kwyZCRWUSW5tHFRypK0nDtgnt0lmOEF1bDrA4kiveg1IROhJs+QYH24BL7nZkaJ/dPUhjZOjVICGZnJ5YZMgH16qPVEHVx0mEpSa1khR3OVPG+nuSJRTJ2j79xj6XBFBSoYZEiil9hs2dqCSodRFBVeHYwMMHT/7pmak+Zb4GSvmMZ8TOlWk2n2D6+g8N6gY5YuyFCIno6QC+F2nOkhcx813V/lsA/AiAzwXwQQB/hpnfOfPgQzXoU2W0kIISm1N9ECUIJb/glsErwhEl6Pr6NjOJAfDKK0MuE601YFIQI7sIdvYHlorQt7v9U/CkU5nJ9myqv05qClrgRBOlOSVBk5wviSvKilD4Ry1LVYlAuk9EAEVOGS7al0QZioqDrEeQDddjhsxcJ9cY7HTZX6iXwEhBlA5OnsLGHNsQvClVyFySlvcVBlXDzjxu+AoNy7A7AJt/noeOnYmQiDoAPwDgy5Emd38TEd3DzG9z3b4VwIeZ+TOJ6FkA/g6APzPzBDlKCORRGeooN8UH+/EPy2uJEpR9bPuUtHx/p9iMXOFIyu8vVWDRt2pLxKjbDdJrrJvonVKFXp5pdFX/Q6ufTllFxwdTqh6TeFMUGSBVaVIuYE6SVnKlnEitJBjyqX1eIUen7uw+ps+mqSzk9pGkw1jUWEzp3EfJ15m0OmJldBid3qiJJ7T2FRZv3yKCvGDyNh8D9qEInwLgfmZ+BwAQ0cuQZpvyRHgHgO+S9Z8E8EIiIt74S6KsCFUBUjWcToMhPnHaoseOtAp1p4rQ7WspQe8jbEy0DgLiiotjFP5BJcMukY8RhxKhLCmwIwrOJACI6ejuSPWvVwtiZj6k/FyreSrpKqzVpaM8xKYMGdRLMrQGKnTYnIgXTZKmnhIRWo1B+XrcUtWe9xlq2k0Ekm9SiEyH4wVJq0nFFpS97VeQBFSglKMoKo24LxOt9V6oKgRgo1GAGb7ChlLbVhVe96DJkWIfRHgbgHe77QcAPHWsj0z/+REAvxfAB+qDEdGdAO4EgFtXjxg/a+ULHFODKPqgVHKqFN2+Qgk6BVgnVBeFFIr1igSDI0EqCRBBlFHgkgCF/Iz0HPnVrlFlPQJg6TLCd6oKzb2Wu2fmtJJcQM43TB0tyCLkyJpzqOZr7+6ZkE9eijJ0PkMQ2ee0II0qQuTvxqpdF/8BACvTb6qUykRrvTmthOm+QUZjvsKzmLvb4ooFTa69abxvyNR+dwPAJ3/CY7nwDaoa1DlHfCqMJ0GNEKupFvIydjlBOroiC0ndCTGq3281JEFeaV/xdZmq5KwUlQC98guZDKlLxEe6DVFcQoikyhB+iWI73y9RQZy3tS06JajtzFkZcqSsCklYSHP8AnJlGQYIadrONF8IspldKEFYtFlJVaPJ6eJFLRIjgHLqDhPiCpbDqCkziJR8gXDtHZKP0BFgkWgtBFn4ChvjkNM/hQlfIXYwj6+bKlS3yxFjH0T4HgCPd9uPk7ZWnweIaAXgk5GCJpvh02WcHMpqUB8Gp+LsvVnBFSrQ+fwKX2ERaR4qQh/kqIfn2f4WCXai9ro0qJZCJrsWAdbr7uM07k9WfBqlVcJLDyqJS48zIVJ+TrNyBDRazFLZhdXv6PnCwsZpHwHJzeYUoVeFGk3W91F131W9kn5A3Q5KYPLeXvflhGojwNpB5QMNc3yF9XuAUhXOySk8DxV5TAGTI7nMMeyDCN8E4ElE9BlIhPcsAN9Y9bkHadapXwTwdQB+brN/UOBIUCPGPmdwLEpcjCgxv16pDrMyRKEMS1+hW++c8hPiyz5CIcCuIsAgRBeyAgwhpksUAgxGhCwWYN7Og2qmb5epQM6qMIqpHKXAQBQijJHAUfbLehrJQVZeX4PQajar2ksFFCAmpVNaMl7Z0m2UfzRSDOuWIskuZxHM8r0JuWp+oX04JDUqBJwIMKnCVJgBpa/Qq0I1iSd9hZWZ6hTdIMG6+tnuFDS5QubxtTeNxef3XACvRjJkXszMbyWi7wZwHzPfA+CfAPhRIrofwIeQyHI+KJObnXdMDVZR4qzaymjxQBmOjCYxRVIHQSRdxpSjBkRaJNixEF+qdtB1JQEGeXnyI9cGJHKcQhTy69y6kmKeOiTIQxvStUYCI6UfJe5IScs5BYdMyek/CYATGTpiUmWoM9bZEEKNLosvz9Jw9H5HNhOcJafR5xdq3xxJ1so0LjKNfPxsDvDQJNYhdi1foccmZbfvVJpNOBZVeASXOIW9+AiZ+V4A91Zt3+nWHwTw9Vsf2PsGXfTY1KApQDVnKZu1xYgPrwBLNVgPm+PqvXqs2LHt98qvVIJKgMkMVhVYE2DXxbQUouuCLmMiP6AgR2CaCKP5CZPK0+1elzEkQowxLTkixoAYCTEyYiQQpT5RJjFhLXUl/30IyjMqEYUMlRzFxrUUG68o5QhanQbyFmuz7XSvcxBGlD3DxhKznCsFcIKpSMj1UbpZee5jvbaWuWykRiimAAUwWcV6Dq6jn/CIcXDBkgGcCiwjxfqSbU+Clv/XVoF1BJhH2msSNIIN7BKo2fkGExGaCgyi9rqIEIYEuOoS8XUhGvl1MsvaSpYBpZ+wJkRPgkAKRigZrmQZiBE5k50qsDUFEKX2SFFmIgsS7GBbWpkuJSJlOQv9Iv0Jbpvddyf/I4phdOpPFL8jRUqKO1L6Z+ITxIUUSQMo5LMfIZFn+Q565N8GYH5K/f3Uim4f+YDX3TwmXkzj84cLlvjk6QHpGfFVJFiPIy4IL+9DTY62rUSn/diW2p6VoCPAMCTAVYhNAlyFaGpQiS+4F5AIEQAClQ9NFDs0ivSKThWmQAlhLYpwLYGVPgb0MYCI0VNADIy+D4hKHkyIXRpYzBqwgPAeV2SoZrISoAZUtLINPAlmVeYDKojO76ckZ6axmuc6kbyQYctXCOQka6cKk3CsFOFUInZAMf7YRppsi+ukCpeo8TnDR4xDaSK30mUs2EEVqdHQJDbyqxOrLTjCOUgi5m9cIT2sEiQxAlyliHBYxYEKVNJTAlwJ6Z10fdpH0UhvRRFBtoFsIocJ26NFggCw5g6RCZ0owS4ERCb0xOhDFEJk9DL2N8aQpihmAOhEDEbxJSIpwxVS8nWtDDURmtTnlznRlKCSIdj8iJZzGJL689HnnM4jp7L0mMpX6E1gX52mJjx1q2jJrk1Bk+JnKKlb5zHk7gpgUYQXAWfqeDVo69Yvk56qCTWNfdKzEaYzm8ukaNcW9P1OCdox2Exi8wdSVoRKgquuRyDgpOtBgBHgirJS9ASo+wAlwrTejfza1BcYORGdmseBWUzjRIgUUzT2JoBQ3LgURKEQJfePEEMqjMosFByyqaoKSwlOhY8u/cgOG5InQRcdiufvrw3PQ/4OqPiunErT79X7Cm3elEr1aZtu677ZQZMGMZ5hdrudcQwBkwO/vE04aCL0/sDaN8hmMms6jao+ZxpvCpA0lKD6ATlwoQSzQpSHzilBCozQJSLpupQe03VRTN5EhJ1TgCchLW+EHoGiKUQlw64gwmgE2FKFqgaBRIieDHV7zT0iE272K0QQupjUYBeSibx264HYiNX8jiHlIpoylO+G4LgnwMYIs6kxJBKUpGhiUd8gxI7dJFCqAMVUhqbPcFaFYgIjNnyFPq9QfiuUPkB5szYFTQBMjT8eHGvM13jdVOHiI7xg6DOvwQynCIu5iL1SJPc+208DJegDJ3VtQK8S6/HCZEvNDRSTWKLBXRBiC0J4yKbxKmRluAqJLAPYyBIAVpSWc6LGAQFRiCxyQAClSZdk/C+6NdYx5M+gSg35H3ofJQUnMJgZPVESVoGzMmRYgrPeG4pCRE5ZEyk5+Xtbqj1234nWQ0z/6Fzhhuo3UPgKWXyF+gHUPJ4Kmmg/R3Z56s+aPHeMHl8XHPntOXwiLIIkrqiCkVnOFyx8fGbeaqEFrwYxUIj2/kFf8QuaGqx8gpISs1rlQMiq63HSpQDISYhJCYJxy2qNAMaNbi2KcG3qL1DEiS17I76TGUQIJDLsEcxHmNcDTkNA5ICHYocYkkJcx4B17HAzdugpgKhDL9HsXhOwVRHqNgVExKzSEczkNWKxtJqq6KpAeFlMc7aASlKGWVVZIMUKr3IaWtn7CjUsI1CEnF0l60SO5T1jKdogW4Wf8NwwJ2ByFSLHx335R0CEPmna2uSlKTPIJpZXEOYfdIqwVo7DdXZ+RR1KxyhLZ8HUoB8iF4LmAqJIkwmQdiQVuBJf4IkuQ2/7Oui+RICqDDcFSzpC8gmC0FNw66IIJYUmEiP2hFWIKcVGhq6s5Mb1TECI6MVHRvJZYAnfMFeFZUgHIJXQooECJHdvhwpRlJ+/r+67M/XoMeLfM3PYw4Ij2N7PpgEYd94zR4/3gWPwEx4xjoMIG8UVykBH3l9MxdnwDfo0mbrMftTkaIsaJ0UIySFEYMD7BInRrSKCRIS7EHFj1RdKsKOIW7s1gi0ZtwS/jLZ9Qql/QCbCTv2GE0TYW9Q4oOcg/sGAU5l0+SFaJdKjHpEDVhSxluXNGLGmINFr8RGKAuxFufRBlSED6FLStSrCHjnHUCK6bBVtElFa9RpNN4KY06h8hG4JlqF2gZI/FmQz3fnJmsqgCeWocTHRk/MJKrPOiR6P+fpGxh7vVLn62FXhkXP0gRPhUA2y/yGruqv61Oqi5RvM73PblTLMbeINDlm9JCUYTSX5IXIdqW9QAyFRfIS9+AvdEtkULogwrAEAHXgjEQYlQumb/IMsbYQT6tFTACJwClGZ4h+MTLKMQAB6Tj6xENNyTQEdIGYzyWekxn0TQtJtVuXHhQof+Avz1+wCYmyBGP81el+g+QnVV+nN88ENUom/56d1UWkJS7DknFEQEw2CJPrgDCZQ0vbCV4hSDY68dLhcjha7KHHHMnQOlie4WklEWJTgLZ0u17gReqxCb8tP6E7RqW8QSQmehD4RoZBfJ2owkV/OJ+ygKTSlauhFQqlPEABOeYUeyT/Yg/AQnQAAHqQT3MJrPBRXWFGHNXcIYJxyUoJrUYLrGBA7SkPzVj36qPmH/rkPiBzz2GQk5cYkwoYo91VBZlFjON9gOqhPo7EADGt+oSpAUflGlEK84EygZp6LOmyJLFWGAVun0exlJMpVTKw+8o9z2ETo4NPeihS4VltD5RWR4nq/+AFB+Zn2pGsRYkoPsPoDg4wMIcrR4c5yArlQgieNYIiSoBKfrisBdohGfAGxmUcYlCCRbE0lxhMAp1gltRjEbKY0eqRHMILoxYcWKSnCVVRlKMfViDQFcIgIQct0qUmaSUgVOotiViVIsm/MV6gJ09ndIcUXnCI0omSUfkI1iceexMJSoGH0uO4zF5uCLNcwheaYcfhEqCYwlMyoMIutKoqqhQCnFrXd98nLYhid9ndtvqYgqRq0USOiCLseXWCcBI0S91iFiFu704ESvCWcIhDjE7ubCGDcGk6T75DWRoRKfpkQlehEGY4qQjKyO+E1IlLABAAeiicpDYYiTuMqER0FhKjHTMvASQkGUYBaRp8A9F1MI0Y6qWnIEaGT/EItQCHpL2nkSfqnAcByBC1FLzgTWaPFpGXK4Mi0JEx2BGmEqtFjJUiJHg9M4TEzts4HBMTvqBd75E/4BYCAJWp83vBpMk3fnu/j2xvqrxxyV/Uz09kVXdUAiSwpwPyCQQoqWK5giJYruGoowZUQpClAMYHTS9JpaF0QYAcZfueUYY0TUYEnSOktPQf0pHmEEVFSXNRs7sRcPEWXxhbL867KcK3K0BRhWq5Dcir2MSlh5pBL8asahN5LnaJTmgjJVxjy+Zo5hUBDNZYlukwiBspzMdtJShWpKrTWe4M0mhotNTeWT9jKRzwv8jxUn+QF+QiJ6JEAXg7giQDeCeCZzPzhRr/fB+BFSMWgGcAzNs2aefBEaAg5IOKTcDOZUdFeKEKfazhCkmaaefLTAIm8YCaxkmAsEqY7SiR4o1tjJQR4S7cWQuyTAkRShp0to7RH3FDT2JFfB54kQiD5BwEgIpFgzwGRAgJHK8qgfU6RFKESnE+q7iil3ITYYR0DQpAIcoBVxemCFnTgNAwPIZnHgI38sHSakL4s5nQeIz39Pv13WfsIvXlc/dNLStDPlJcIopgRj1DmEZ41jWYurvu444v5mM8H8DpmvouIni/bz2v0+xEA38PMryGih6HtKS5w+ESoP3QB++0R0hv6/ypTuTCDOStElyuYzWIk00tLaskY4tok1gixkuAtYZ1IkPoUFKEet9A6pdOIKXwrncp2MpFviDr05JejxhNEKDaoBkd6hGQaIyJKtLingI5jMpetUrMsZEwyAKwozeJ+owtYR0YXOiACJ0aEAcyprmEILIGO9BTYhPXOV4ggU4dKvIFUkXtitO+tMnvd0siyR44eE6wclyk/Tz4aMJmazF0JcqoazbE7wC4CF3OL7gDwJbL+wwBej4oIieizAayY+TUAwMwfn3PgwydCgRGc1a5v9clLbzrXwRNtK/o1FCJEBVKQCZaCryqNolTWygVJ8tC53pm/vfn+cmAkjSzJ+9Y4QT8gQF0fQycPcU+J/jowemG7HjH5Ax2RRvePpaeUd7gKMZnGklqjQwG1LiLFnBbUR5LpBoIVm7Dy/PJPhJSZKAegNIBC1X02Ehv5jnJ1Gb/PEVTAMI3GEaDVK6zh1eEWAZMzmb9XvCTXFqbxo4joPrd9t0zYNgePZub3yvpvAXh0o88fBPBfiOhfAPgMAK8F8Hxmnvp3eAREqH4sB58eMyC5galbRot9So1FilU5FkGSZB7rg04SHAkuOmy+QWcS3whr3BKcCgxr3BpOZT0tb6VTnFBq78C4NdyUtJnsI1Tyu4FchQZAkU+oidSgXobVpVdEUoaJECnnB0LScAKyMhSfHULyG55yhxAY6y7gNHZprHMAboQeN5GiyEkVplJekPHNpEEn+c5SHcd0fT5oYsnVngT13mshBfunJH5BaF+yXE41qwnZXAaceYyKAPV35B2Xg2k/xby1eoba7lTmDHP3zH7CY06qnv9xP8DMt4/tJKLXAnhMY9cLitMxM7Un8lkB+CIAfwzAbyD5FJ+NNF3IKHYiwi2clz2At8jmbzDzV887QbluD4gDV+22v6Es/PEGqhEYKkI7jptVDrDEaQKwIi2qKikvkjbjq8oEITUlOVWCSn5+qSSY+nJBgPUwuwDO1WdEDXVg3CQAHNBLeZekMhkRATcBnMgTnlJpCCdhjdO+s6TuUzm2fobYB9gcKv7zk1+nbMa6+wZQofgGidRO2Ol3QCPfSyY1eU893M58hV5FVifYJy6jJNchgrG3qDEzf9nYPiJ6HxE9lpnfS0SPBfD+RrcHALyZmd8h7/kpAJ+H8yRCzHde/ldm/qNnOYGNNvAYqD8qHrJB+kylEovEbEukziqwDpKob1DHEhe+waC+wd6U4Yn4CDVAomkyJ9TjBq0tKKJKUBWiJ8ATGWHSFUTYRgRMDQJKkNGixjraJO3Lv1j1LQJI6pRjGpYXgVu6tQRNulS1hmXekxDRM4mPMClCCpJXKC4E9kETziaxmsf2faGhDP22WxbfO/Iy+wYx7hKf2tdIrDZFN1ehVSk41xIXY+XfgzQb5l2yfFWjz5sAfAoRfSoz/zaALwVwX6NfgbFnay7uQHJaQpZ/asfjTSP4p2KEIP0SpYJsJl0D8E768jj+4eDilS9JFB+yEszqMFq7qr0gQ+p8RFj3exWoJNiBcSIk2FH7FZCI8obULtRjeD9jqCLRmq/o+wGwZO78eVqz7GVF7O9PeW/VpHW+vfqfk/8eqq9y+H3N+N7r9aJP+dtZsF8Qz3vtiLsAfDkR/ScAXybbIKLbiehFACC+wP8NwOuI6C1Iv4h/vOnAuyrCOc5LALhVHKRrAHcx80+NHZCI7gRwJwDccssnS2P14xclB7RN44GJ21CFzX4uuTr7B111mVbeoOUI9oUStJfbvlXSZU4seqwJ1aemAk9kBMmJ/Is9kc8lI9PQVQ9zz5xyCaHlrRgd9aWPECmgEimYj7DjVRE97kXBnXKHwGzKUMclr6hHDGkGvD4GRLkHDCCEpDMtjUZHkkjQpM4ZLMzfEfXuVWD2BQKwFBlVkQT0boidmsyM8cRqQEaYYDxaXMP7DOFU4zY4Zh/gJlyAImTmDwJ4WqP9PgDPcduvAfDkbY69kQj34LwEgCcw83uI6PcD+Dkiegsz/+dWR4kg3Q0Aj3j4bRu80tV7qzQb23aKI5Mfm3k2PK5TglA1mHfX84hk36DfFtPW/H5ZmbWiwvYiXaZz1QQ4kPB6YRb9hHwoRq+jUcSJE2RYh0aVA0UETZwGp6INYPRIyjASDZWh81t6nymg0eCGutZLdM3jyq293kqM3ivm5BdeBJFtOschJlUzLso0PjdsJMI9OC/BzO+R5TuI6PVIEZ0mETZOIkuv5NxTUY04qc2sSV+hVyQ2QiK1WeVpFxRQJUjIQRJNlUlFE/pRNWgRYYqWInMDmkoTnSJMJHiCRH5KfB0IoWHaRVbyTaTZM1tqHBDNd9gxIaJHTzGX7UKQYqvrHDiR8l8P0cpIT03tFfW4SR3IiB9mJofAqfahfR9cfjf1PuT8zyKdxn3XSQWWkeMiwOITqasRJsPf0IwnlSj5+Xov/QIwnXlx7WFf6RFjVx+hOi+BEeclEf0eIrpF1h8F4AsAvG3H87ZRq4m5EoKqpW7KN9zyC/p1r5L8FJyt/D/vp9M+GhFWJZj8gWLSgowEdd2/AuV9+j4rn+iPT95XKb5J5zu0ayHvO9T97c/no8fF7fPEVd3jUbcEdH81XLL+jly/og/pF+bfc64acoHDBfkIzw27+gjvAvAKIvpWAO8C8EwAIKLbAXwbMz8HwB8C8ENEpFlrdzHzVkQ4cI5b+0jbyAOo26YQdb8zlcvlMG3GBw5C8YpYUZ6e05fSOrFI8bowiy04IoGOEyHBG6IEPQEG9z9LSbLnHEmOQlhR5/1gtqIsJxQROE3odJOEjEHJLGe2pG4ACLRC4GCmcUeM6MjeJ5CvZW7k8lWm0dg4ZKp4qf7unAos9tftgI0wGUPhL3Rt29Binsx+wSwc+a3aiQjnOC+Z+d8B+CNnPonXrLUZrOejUkmkNioepmJZvXcAIUO/K4gpWBOiRYVNBUbzHVr0VtVYc8RITpFJ79FlSYI+SKLlFEpClBwRkmRpIvRCipFd0ER8llFGoHQU0XG6tlPukq+QXOS4ET32+Yw20MdHiet7Ts472DCBx/yCre/Zfy9+qN3Yg1iYzS3YfT2vXEO6HuONj/wjHv7IEsEwkZqa7QNMEN0ggNLoX5h+VUCkIASnmNL+XELLI6AiQTNVs0kcgAEJBoTqOG5bz5PqzEOLSXWuv86Qp0nXvQRK1DwGK9lHBBA6ijInchRSjggu79C7CzRYkiqvOnbSbbmvUwGP0XxBv9837GL1+shxqzDrNgGJ65w7qDhws3cOjoYIZ2ODuTwgzsY36EdM5LZxH6FXgwAqH2AVGXaqEBACheQEQv16Y0pw7OlPCjGtpWrTYK1XquYzS/QYg//eVuShyjpuzZwXkO9LKMhQ7pPdsEoFWjuaRDeGbaPFG/ufRaGdU6T2So03PvKPcdxEOPKL36gSp47VeG+LBFU95fZhKX1fYRooR3Wk/eWvx1JkKp9oQDAS7KhUhj1H2ZfqWPWNB7aryC9QTGOGxUQ/dfvqNBol1a5WwP6fxOCMbsfEd7GXlBiJCPsxxmN9Bm2HloZyxDj2wqy7Ro0PByPOd49m0jXg/FptdahoKiSKBUEAeZyu76OE6KPFgKsOLX07uaiWSdxRwPt/5xF41k88F7/9Ow+3thoWTQYqRdl+8DsdkTLyay4JMDbvg08zarsjMG4/TQVRxtraF7rgknDsUePlpzMT47niF4vvf+OfxJve8/vxfW/8iub+euTJYP+x2zDAHmTkgr2Ct3gdKI7bNL4ktBTRVPuwX2Uib3iwAwif88K/h4f6E2t76Vu+EC99yxfilu4Uv/rcvyb9sq9wwYILxQGT3BwsinAm2NnZccQJOdY+7Ff7+Tb0B+Pnvvn/xFd/1n24dXUTAHDr6ibu+Kz78IZv+W7Xr+0jXLDgPKFej2M2ja+OInRBSt0WP79Bt0lkep53V5zp3HCqO7SILnIqTNpqb5lwms9nSyacuPf3YARQUnYcLE/v0z7po/ikGw/iofUKt3SneGi9wsNuPIhHfuJHxq8XGBBj37gomwmPN/9fjBya9yHNbCf/MFq3kDEexeKR9bG2A36grisGU6QeGa4OEe4Krpa6WW1HTkPYYhXyjDLcIU2clHf0HGQuEVf9pQElrUCEyGy+PqkoCAD4wO8+HN/45H+Lb/wjv4gfe8vn4/2/8wjpU5Md2xjkdA3p+HHCudZPqNkImtw/+ghc9LOxeAUuBwfu/5uD4ybCEfVQC7RaGZb9hyqQRb2oOcxuHcjKsFZHvfM06CRKJ+jRI88ZotNtQpeQ55dz4QRAU1V0EuA0OvGFX/UiAMln+J1/4hX23mjHTgVZ00gSRs9slaOsjD/L/MeQqT9lwqdU3j/kftbXfW5p13sQi3vUuq8YPiTOcT7HVNrYR05Mthzvs7Ftwzn2jSuTQ4jDNnvn4Gh8hGe+0ZXS2/Y4ngDZEUNBgFwShJqYSjjWr1JkeoyWuZraWY7PRRDEK8CaBPsG5ddCSSeDl3El1TWFhg+TCtLnURNXMvmag8DbbxnFRgLc8ngKRz6j5tziZ90eS9T4nBGRB+Cy+PE4KQAGmb+PdJ+AmIcPrPcJMpsqocJfmPdbE6sCkt1CiNGUUxCy0Kk0pY2kjQmdKDAQcMorgNaJADlYNeoI4CYzbhDhlNPQtlPqU24hB/Tom4VZ022KZhKfypWfIpnFvZi2kQk3K+VnprsQnbadxjSR05o7I8HoPreq5MiVYi6UIBW+wcE/odqRXj8wrn/L4U6NfjWa44x9GzN2Ir5Nw+uukOqbwrErwsMnwrNg5IHj1j7fxkA9Bs0CAA5eFXpfYXRBBwtAiOrqwVLoINUDDMgzzUUhpSC1BNVXqIGTXs1kAKjUmilCIUGvIhWqWE0JcmkW90aOc4IlQ9PYuxD0ntUoSGtLdTBwdcyZRuTIH8yjw5Hf76MgQpLim8P26v4r4SmXjTxwqgBlKK68l1yjbpP5Cr0SJLcembDmgHXs0HWMdQzoQip8oNVcek4+wkSOK5tF7gZ6KYvF2Rdo5bNSwOSUtcQqCTkO608pASo/3OS0fipq8BRJ0Z1yV0z5GZFI8ZQ78x2exhVOubO209ilz+dU4TqGggT1nwXr/XSRY2IqSLBQdZUKJFH25LbHglj+u8zHUj+hNDpGpi2V35mm47yu4OMfYncURAigqfLSMpvLuT5T7jZMlUEmzOoBtbdxtpiKB11flFQcVeZiz05dqfKi1NYhEQ4ARAoAAzepww1GMmWlZmAnF6LK8IYrE9Uz2xA8hSpAjTr3tl6axGYKwylBHzSR68vmPhkZ9vY5Q1Z9SFZfdGSYTeF63b389zIXNXFigth2JbDa1L2qc4zsEVOjJ48Fh0+EnBku+5GSf3DUzCXtW/YzUgQKBWgKkWVCHvcQqxL0CpBEFYXAYmoyeiasY4cY1kYiJ9ybugKQip8ycJM73KBkSmuhVGjeIcv4Y07Vqm/Kg90hDZ+rU2WAkgABpwQ5+wKTGkxklyZyz8pP240chRhTQCUHStay3XtF6O5PkUc4eElhVEeSTd9gpQbbPr5yc7LeIDCfHDce5wJIcdM5DlWpHup1zcThEyFQqj0BKXcUD06aNc3ITt+ry4EZJrtGHkaOlKasYCBGAhGhj8lEZTWJOQAR2TSWWeD8THCnUk75lLscLEFZKdoIjmQeEkppMLkC9TA5Gsjkp7mCAHBTCEuJUEkuEd8Kp7zCTe7klQnRm8Xr2KX3KwFWAZM+hpIA41AN0gjh1eTXHHlQqcf84nK/BCMKMoxOLdb3TM3nOohxEQ/yFVaXiyK8IBBz+h0RkKOQovgU9YPEXu3BCLI2g8EkUWavCmW37PemsVeGkQmRkjl5GjvcEEVYR5Wj+AoB4ITWAK9StRcGTpGiyEGiw8ryPfKsduA8m2RHw2F5Nsm7C4zo6yY68QWuikhxRDCTN6s/d+3i+zQ1qAQI2H3g6lVEinVZfR+D76n4nvNDNejrfgu2v3rv4KbYeRrkuA35VcS5+BAdRr6nY8JOeYRE9PVE9FYiijJPyVi/pxPRrxHR/UT0/K3Osck8EiVYKz+vQgoFon1SJjIouv2RUjsTEAksr8iEGNOrjwF9FH9gDOhjwFpfQhwPibJ6MJ6YwnqQV3iQT3CTV65d2zo8yCd4kE+kb1JjD8nyQe7wIAc8yAGnIDzIhFOQrAd5pfc9JMsH3TkfjCf5PPGGnStdxwoPOlX4UFyl63dBEv18vazrPdD7wlHyB2U9qzW5t5Hc9yDr0am86L6f6jvz7pDBd4jNxKrXMYqUGzXRYQb093mNK1VTnPc6VOyqCH8VwNcC+KGxDkTUAfgBAF8O4AEAbyKie2ZN4NT4gQ9y/pDb/YNT/LRVGdbv98dWVVi1aTCmjIzm6HEdNDnlgMCcTUiJyp4g+QRPAdyggJsMnHCfTGV0AKcSWTcJuMHATZKSWRyKqjatcb42PSdnf2Bqz8ovta9MNRYBErnG09jl9zSCJFE+/5gSzC4GKgjLShT6f1AVxtRfsd9/N+kD5zY3Wbu6SVLf7UnO1N4mU/YaE1+NQya5Odh18qa3AwBN18B7CoD7mfkd0vdlAO7A3Ck9mZOi6Eoy0/YiKuxfsXz4WJUHAaTzHMU0UxlJfzZVyFbSnSmVU2cKiBQRY8AaQNd3YJnJLRLhZlwhcsRKS/BTeWt7ClIZWqfJZCACN6hHTwE9rdOoYo44pS7NfSwl/sGuAnbFFpkEg60r4RVLDniQT9Az4UG+IervxNTpg/EE6xhwU9TgQ3GFNadtVbunfZcUcC8J5KKSmSlxRqSs/iLJK38fA7+gqoSobVwqCJf07vcDjhgri2FsvSDGsYhzjLm9INntyPTMZvOx+hD9P54jxUX4CG8D8G63/QCAp451JqI7AdwJALfe8sm5XUeKKEkpNioJzpFM/x401KMz3xhsyoZl26fURE7+xD4GIMTCV2g+N1WD3Kd94v/rEQCOiKIM0+RJ6au44fK5IwJ6KaevidQRqf9gGJykxighFikych09k0WLtZ9Pl0mpNM5POPIq1WC+J8X3Ub/c/W5+X612RqXuGt+f9Z3xIE4FSOY+yHsaKXKVxhkD1yBYQkSvBfCYxq4XMPOr9n1BzHw3gLsB4BEPu43zf5ucQuNTXHRonao6ckqRnQox1ecUIUeAUpg2lZmP8oxJO6tNZ36wgL5PB4oxHaRnAmIakhaZEHCCG93aPk+UqLCO2tD5gztwKspAPWJMy1Pu0pA6ijhBOsYJS3+vCN2PLpfzyiawrt8UwrvJaZLRB+MJegQ85FSg9wuuuTNFeDNK5LjvTA2unRrs+4C+J8QY0r3pCeiTIiTxtZKo7qz+qPQXFX5al0htCjEvadDO+ftXIcXIEWM1lfU3MQYfYW7/IFu/0fH+o8c5UrU3F1edCJn5y3Y8x3sAPN5tP07atkMEKLgRJgP1wEgT8gA2OsTnE1Z+q9q/yBKN1uix93WxPKTpUDlyDAkcqCIMVdWWNYupK2k0vcwvknyD0XyGVpqrGN23SvmF4iuMOjqleWtCQYianhPND7iyRG/LHbQUmzyqpHd+wXUsk6sTx7QixFWU2O7vWD5h7tMaZZIjxrV6K9tbEeON+YTA0Ztwh4gloXoe3gTgSUT0GUgE+CwA3zj3zar4vKmao7yJ4CgyKLh9UfIJRXGwT5pOFa1MeWQFqNuElPesSoMAIrDISJaRIiEwIjFCnwILHTFiY55creMXhQRXQXyIYMSQ/IZR/Icn1OMGrXGTO0mbiYVvsDW5Uh7TnH2FNyVYogT4UDyxIErkUCjBU1GBD/WrFKHu1VeY/IGqBG+uV+hjSiQv1SDAfXDRdogqnFCD1pa/hyJ6z76dC3+hWQiRXVtWdTmflIulV360SQW2zFaOI+3SJoGTQi3u2/w9VBJnvt6FWYnoawB8P4BPBfDTRPRmZv4KIvp0AC9i5mcw85qIngvg1UgDJF7MzG/d6aqdn5AiwHV1GqcIAUeC8iD5wIqqEnbbmjuYVKAQsRw7MiHElGAdgipEmInch4B15DSojlJi9Tp2QACCJljLvo4jTiDbLh8yJVhHKcqgvsHYLNdlhR6gBR/IFKGOGtFiC6dxZSrQJ073Eu1ex07GESelGyHEJz5RTaKOMUeJLV1GzWGmguQKpefVH/J301KJ7cjyUA2aSa2/i21QkFYUy4Hb+xdM48hv1a5R41cCeGWj/TcBPMNt3wvg3jOdJDIQOPnyTAEMh8Kp0jNfoYgnNrXHouzyPlWEpJHOwNYOIMUnCDBVCICJEDug7wOYGeuQlkQdYogIfQcPTXc5FcJaU2e+QQApQkw9AhgnYY0T6m0CeI0u+4njW9BUGD2fBk1sRIkQ4IPxBJHJlOCaO1OCGh3Oyw7MZHmD617GHfcBsQ9JDfaSN9jwDaLwBzqfoVeD6iPUaLBTgbbeMq0jlwQKt+79g7rtXs0RJc081SV1ZhsspvF5wiu0lLRXqLxsJlFShUqKKIMotQL06s+CJsGbz8mW5kjJ7RjSORIXk5jblJ5j8RGGSAAC1vKLCOC0HoGbxFgRyTLNg6zl/ANxUotiipuZjB6n6NBxJsVTLklWkUkwqz9PgOoTTAowDEhwHTvc7DsZSSJjjUUJ+uTpvg8pZUbSZVjTZUwVun8q/p5XZnCpxrnoV/sKNSAymjZT5w/qdw+MJ1KPkV8LkTeT4tj7rgvkn9Mx47CJ0P/LFzYs0mh0uB2LighqzmKgItR3CKKs+IRga18hE6QfJwXZy8gJQoqOMhBDMpGTMpT3cVJwDCDlkad+aakKUIjS8g1T8nUgxgn1SRFSxCnSELwgF6f5g/VUoNH5CHX91HyEmQBVCUYOsiTLFVQlqGW3+hhwKmawjxLHSIh9sBE3UDXI6gOkTIaxJMAiChyH5OjHEud+3FCE3hSGWQnklZ99uXaT2sR3hod3H6bzVUudAXC9TeMLgTi8WU3jSMmEtYguylxBTma0Oc1FyWnQxJSHM5FNZWqCtaTXJAUqaTQB6aEPYiL3lEiuZzCHHLDu2cxhZrLag1rKPzgijCzBkpCIMBLhlLpsEot6VJM4NH5telybHsDGEueIcB49EoQIk29wzQE3+1VOj9GkaSYxhZF8hjERIWsCdU8pQFKZxAX5+fSZVmCkSJ2Z8CkaUXL2HTriM1Wp5FKnzdTE1WqTJVtQZUuzeJOZPEdRHnl6zUWYxkT0SAAvB/BEAO8E8Exm/nCj398F8D8gPbWvAfDtvCHn6fCJEEg+oQCAqSy6Cm/Opg1qRZgjrFKNmcnuwWQXRQYop8uIiawq0kxkyD7IiBPEFECATu0ZEciHP7KvcEW9BFHS9omYyJ0QofoEVyFKYddo5DnlI9Rz9FZIIQ+1eyimr/lmXKFnMvWnJKgjR7wS7GVcdRo9EmzMdVaDKExiHyk2s7fhGyzJLo/qGQRKPMk5NVhEi2tso9CKkSON++rJVfpvyh+8zoUYLihq/HwAr2Pmu6RmwfMBPK+4DqL/HsAXAHiyNP0bAH8cwOunDnz4RMhKbnBmENKD0KvKk4evT74+6MRvqEiOABJiA4DQZ4I0BYh0HPU1itErKThCxBFgCsnEoQjiLokj+TEEzTXscl5eFyKYCTepw5pTcORGt05+wxhxEnoErLAKPTpihJh8g0aCzuGl5rSHEiAArNU0jqoIkxLUCjKeALWQgirBm+sUJDntO8RIWK+7xAkxIPYucbrPZjDpeu++B6f4CiXY6zrnPl711WZzn8mwVoSWWB0zoY6mzWig5KKjwpXSO7NZfMgk64TJOeMOAF8i6z+MRG7Pq/owgFsB3EB6eE8AvG/TgQ+fCCUajNoHKPBBE1b7dGBC5YIAPpXG2uQcFmHWPsX5xURmADIaBUHUUWBZwpRhDyFdSNGEmAIpAZzSa4gRYrBgSewJq9CntBwwVsLSnb4HXfYPVj+6WJjFuZCqbmtytAVEuFFNhlUBynt1DDEDLPmCSf1pcISKXM16NIgGqurIL/FwO0d88/ogkMLyG9D2wj+IwsQ1jJFHnTaDCTU3lj+4Txy7WQzkANVmPIqI7nPbd8tosjl4NDO/V9Z/C8Cj6w7M/ItE9PMA3iuX9kKtiTCFgyZCfRhY/H6InBReb249CWykFXOuRwIHNv8UwKkwhPoCSWbAk4dXVSGpD1GSs5GiFMBadqgKCwCnxEBb9hAzm4EQGNwJb2jSN6Uq1h2llJvglqsQjfwCJZJcRQ2mxFSxGnrq8geXfYQ5oTrXEyxHiVgqjPoQRQVqIQVVgsxISlB8g2AgrkMiwLWQYJ/WSZSgV3LBFKJTgb3froorOIXoAySqBn37kASd4vPR4ip9hpwy9O22nm5eIqU5D7W9p0GkVzEYsgnzufwDzDxVsm90SK/fYGYmGnomiegzAfwhpBFsAPAaIvoiZv6FqYs6aCI02I9MCSqjSJIGxKRt+wqLtBkJsJgC9MvKrDYlpB30XFKphiEqKTA4Jp8hUQqgIMREyAQESqk2kJSbnoM9QFqNRs1h9RcGJqx1P8ajxja7XEWAAIqiquoL1DJbVl9RCq7majI6jA5VmoxTgV5Ru6Xf11SCqPbD7dfv0EjK/w6q773GgBAr8ss3rfFmDPu0lNpl5A8eslks2EIRTmJqSC8RvY+IHsvM7yWixwJ4f6Pb1wB4IzN/XN7zMwA+H8CRE6FEihE4B00k3SUJwTSsLeX7peFxVmqriAyzjAVGKvWsCjCI8pDnHCHvTyX5GRJrALG8Xwu/UKkMmRhYJZ8hOMrok4DYRYSQCjWEENEFzkqQGJ0sVxRBogjthTYBenjT2KYYBYrRIQCS2tN2TY1xpnCMaegcS5DEiinUSrAXFdijHDqnyrBXZZi+q+AVoapB/Q4KNVj7EkX1RZb3sShEIbw+Oj9htRyLGCsJbhktbqbNtEjxOqpBLw7OF/cA+CYAd8nyVY0+vwHgfyKiv41EEX8cwD/cdODjIEJB7R9MbbkQgyk9V3yhUIxOGWaz26nMSjmar0tyFjU6zUD2HQKmDM1nCFF0UTNwEsOSqkEZs0ySc4iYSDQSYRViIl9TgIkQ6wKtHq25hoFSCQLJfGb1BTIGJJjIL5girH2COdpOdm804lv6Zcv7OaYMzdSF7h9Gis03OIWIoSJxhDca0RyLFo+eZzc1eCXzBwEAFzbW+C4AryCibwXwLgDPBACpjv9tzPwcAD8J4EsBvAXpV/SvmPlfbjrw4RNhRKo6I6Yp9aICo5CIrFOP5LsLlCOSxoQkgeIkA3POHwBOk6lzShFMZKcOyDWSj1AHL6cTgoTgBsqQUk5h8k8yuJMcSMl9jF0ivxBC8hnGtK0KUdUgIRMgOUJUtKLGPnfRCFHadYxwL+auEaIkSTNLojQTokR+eZ18g1inD0nrHBn26g8RCGtRhms4ldfwEcr3NPQPVj7Cvtp2qtCn0OQ0G213PsN0M/INqtungiT7Spu5BvmDhgsw35n5gwCe1mi/D8BzZL0H8D9ve+zDJkL3wyXdJKpUoAQ+lKfkLZpXmBRfnt0OWqlGFZ1YRDpbnfm6ABTD+pR3hB8KZagmNchmWGJ9PwOxS67BHkGILYIo+f7S54pGiCzkx0gKTkmxRybDuhSXV4Tstk0JxqwEGTD1ZxWmTQUiBZpUCepv21Sfkl8ZLdbcQU+CtUL044kLNdhQioXsj1y0FaK4Mn9bJDiZMlMHSTwuIlp8VeCfmSPFYRMh1HyVDQ1YJHszqS5Kaos5+wpTlVWvBJGJDMjqUXPYhEWJ3MPPMCKzAyjTCumZMnTn4E6us+NU4j+IKiQGdYnQowZPVBnK0qvArAQBqtSgh1eGWjmbKyJUc9nUX8yTUkEIkGWooI4WsZL7a1k2lKD5CMUX6JWgRX01SjxQgjyuBhuR4o2+wULtcW6r23W9Bd9nDHP9g9chf9DjWK5zBAdPhEWwRLZJVF497C4rQ0aOFnMmUEj1GeasbiSgorNoAsjEpqoxoiA7XTIlYkBgoJeUHUpLHYObLeokL5kAkqJbSQnKSBZKpBmVCOU0SnyeDHWdKxIEsiqsJ13PRIikAIFizLCOoU7XLWaw7CNPeo4ENU2mIEGvCP0+HuuTTd+cDoNMSqoGjfDcb8Obwrofbln8hqp9Xg0OfnPzo8U7jSa5KmYxUH4vR4ijIELvZ2OnCi2CrCSmKi+QBDaEkLpEhkxu7DFybqE+qJGEQJVfRNnkawG8MiThAUS1geW8MrqFdZ8oQhuTHITsOM1IlUaoyHQBxZJN0TZSptwtUv9g3i5IMGaSNAUYdV3JTJUg0j+aHgATgvr9ekmQtkhwWwkWI0qc2ivJsiq7peaxHo9FRSpRqm/Q1GH+XQx8g62RJAPyq/yDE7mD7PyJFx4tPiKVRUdeluzwidDD+QqJSQgkz09CSm7s0mmiU4IRgOXNyEIVoe4np+YG5/dLMvICIaWXBNnJOl5Z1KE6GYUQEYSUQ7qWRIzp3Mmyz8QI3YZddn1L3LojRCVDwIhQI8FKggUBGhkNTeFhAIQsAAKWNJnmkk3NhWpoHYmCy2RXk5yqxUxqVBGdEV5NggBGfYMXESS5blDFfsQ4fCJUtQT3u9YIspKLmU+liYyYU2mUEC0AAiUcwFeosQxr7avQgIg6/MUXST2ndoJEMcRcF0Vm6Tv+mKzdRN2qEFVz23yczhKfUISAI0EAOgJGLa9C/QGZAIUwizqCxXjhPPom+/iyEizMX66XpeorzGAlu9g2iUkJ1B9Tvs+BbxAoVR8wXJ8yi88jSDLHP3iFzOI0gOG4/ykcNhHqj95+uMkfR8zgHim1JQpZkJTQUjKTxGobN4fh0hShBE/ye+S8fiQLS59OlhLyDUwyAoUtLUfHHetkU9zBkrdBBO6UFLMiVJ9jVply4hmmMZCJ0MhNrwPI/609+bGQn5GUEmLanxSaV32eIPNL1Z4tKyWoidWmBIvUmHz8MZOYIg/TZSyNZoZJPMc3uE2QpIXzCJIcG64zERLR1wP4LqSxfU+RfJ5Wv3cC+BgS1aynxhqWcD/mAPMVKoFo4IQjWzl/jkhkxcpnSW75oIlN+EQk44x1H7Lq00IPLWXo1ymv67hn416mHOQRok6HIzORTflQfrEROBwhNuxif6eMsCvyZncOT4BeRfvghTeFTc1lkvQpMIUv0CnBwpTm3N+OaetZDXqT2BSix9hwufomtFTilFlcrEfXXL4nX8fVUXJ7xXUmQgC/CuBrAfzQjL5/gpk/sPUZfFTQmcgUIzSJ2QoyeIWHvJ5iKwQSxgng5D+kRKQRSXFFrwCNUBORKrkC6SHmDrnQKyX1xRKs4cCWl0ja7nyRqgyNJIObQ9kTnhK+nnqMC7leUrFNXhlWRGh5gKqsTZmhqQyHw+C8akzEpgEWrxDze5zi86axKj+NFEs/xEa6TIxCwkJKm0ptuYBHESBRVL7BvD4eJDn3aPExEYv8Ezxm7Dp509sByBCyC4A3kTtUOYbIxVuRHiLWQArSw2y+RFMdkL5CkbUytL7SDhSqTU1r1vPbhco1ADkITUi+S9JS/nKtBMBFsLkwiR0x26GrBm7ce/t8JQFqaays4KptU4CZLAdJ0LF85X1cvt+Ox8V9rM9jfWNDDXJpEjeH0vnASd1Wm6Uts9j2zSe5a19ppoElajwPDOBnpWzOD21RfwwpaVp/6CGbyOIjpF5JiYo0lKT93NlXyA8kkmkcxU8YhYgGylBOSQGIXVIwLOSlweCoirCTZynAItYQJcidRrGRTGQVbAFWKDab1bruCRFufYT4imXqU5ilQnzpnro2R26WW8lZSQ9UoJrC9uKGP1GXjaTpPi9NReo+5/8jUYfmD+w5PWzaB8hkN+Yb9Gpwjm/wUIIkx6QGAUBdWEeMjUQ4VR+MmV818zxfyMzvIaJPQ6oP9h+Z+Q0j57sTwJ0AcOvq4fnH7FWnbvt2dlFkOCVEos8icp1B1shymYTdVIZ6+ihEJspTv3dTnOZXhHEVAznXUQ9H0mbXJ6k9Yhqb0gTZdnmDxhWh7fLkZ9t50qqWKtP9TZL0faNv46LvlBJE45xeCRZRY/uH5b7vGp7sfNvEA3km3+CYrxBY1KBCv+MjxkYinKoPNhfM/B5Zvp+IXgngKQCaRChq8W4A+ORbHsP6nz6RkDBKF0QdEFjG7Wo5LNLJjSlk8RTE0rXvSgIuYqqOKUPmpOw4IL+6RKpBmI2jqj6Y6rPpAXQqgEDZNwiAAxeEaEoRTvQpmVowhvO1N29cpQIh14C8PTRzS19hi/gKFahKMaqay5/T9rFXiGzH8sUULNHazsdFezqm+AVjLFWh8/eZEuzL7ZYaHPUN6vauvsHrGi1WHLdlfP6mMRF9EoDAzB+T9T8J4Lu3Pk5kcKdKj4GuQQiqygB5+EVlOHWXbFkU6nGgDCOhKMrqFY8qPpIcRfUBSntO3JZ+EeYTzFQmJCot9kk8ASp5FTt9Z/85y/XCJdBUbFO+wXwvB4RY34eq3c8tMq4OkXMJLWEaOS9QjlMER/wNUUwVUxjDBnI6iATqI1VW1zqPkIi+BsD3A/hUAD9NRG9m5q8gok8H8CJmfgbSvAKvlIDKCsCPMfO/mncG919dTWFFH5MyVB8hUh+OUYI3MaWnABV5CCNqtZiGMmROKTZJVIgy1KFpOjkUQ4bNQQo/pOsIQsYs6jD7BmF+QBaxynp9qgyNYB0BVsRXm8qFpczlsiC9UVIcEl5TIYpPrxUsCX6fV4JeIdZKsM9+wKwEq9EjXgFqlHjKLzilBut8wk2R4k04S+7gFUqiHuA6EyEzvxLAKxvtvwngGbL+DgD/7ZlP4tSfmchAQYwE9z1Y0nUegqfKUFUQUOb0mTIUtaj1DksWkmNVKs/UoSZoS1dfq9CW+uLh0vsGdYRJel/1A5skQirbPOEBpq7GfIVNQnTVYMaIsGj3hOhJsFaCqhJNCer2hrHEyP2pRW5jJjEwJCI3imSg9vbtG7ySQRIBcxImR4zDH1kCFD8QC1qo2eSrRMuokzTNpzxQiOAuQAu5lqbmUBmC0gRJ7AjUEpG931DIS/mRO8ljFN+hXqf6Ar2P0PsGlfDUN2jRY9foVeCIh3BUGXqfoQWi64BFQwGOD5PzLy7Is1SGDFoLgc1RgkUeoYsWF4RYqT9PjH45SIJmjPoGi36Lb/DMOFYSFxw2EQJDwoOQjD7Vss9GnYiJDBkDnCqpODIMpTLMzjj3AuX8GCmkQDqUTq+JNcCi70E2q035URau6jv0Fj4PCXDAdFQ2TZrGcszBPk+InvwainCSAI0IuWzrS0JsJUt7EtykBP0+T4ie8Jpq0G/XJrHua5jEB+EbPHYc+T06DiIkyiaybvsbHwGQjEHW6LESI5VpNQNlqAEOqVqdBJ2TexpEsSoyumDhSfJds0JU1eoJUYlOCNFGmrhXVoKO9GYowjECLEzjBiHWSdF10ERH6WTTtzaT2ZGkEF9hTnM1mmSGEtTv3ZOlC47M9gvavYnl76VlEtdqcAwTvsFRXGWzGLB/ZMeMAydCzoESoFIEyAoNSD6KQCUBemLUOUVEGQ5SayKAlfIUSZEDIc4OiZVEvaRiqsqVkizNudSX5RtacCQHQJhysYey4oxcj/MPFqmTowwofT35+TbObbUSLCK9jajwQOVV6jGn0ZQECE+MPlk6cjl0boL4CiXoiQ65zxgJGuaaxC2cYb7i65NAXWOL+3qgOHAiFHhVqDMsASUZ6n7K45EBDJWhmMlQ/5+k1hBYfItKYCrvAICsuKscFIXNagqRTBXCRYpN5ZG81xMiUE4CValCbd/Ag3KfymVTCQLOrGwToN7bQuW5fjUper9gPhcXydKmBGVfER0GyoCIf6YqEizGEtfmsH7cTSax7wfMS54evHnxDRoYS7Dk3KH/6YOwRctfqMnWajJzUoAsaTRFwvVYak3Im0ntMdBRKs5gPkGWYgsk50BOhg7pPZYyIwRraTTIS/U7KombeQw5tr+uigFn+wjdP4JpRVgtjQgd2UFJr2EGVz7D2hROSlG+k1oJclKI6fgxK0HI91mZwEXitF86IitTZXYziUfV4JGrn3PBkavawyZCf283kaH6D51qTOIsMYcpw1Qdf5Bag17ISgu56vkj50rXKtXUX2hvT0nYZaqM9PfEpsGSmJtyf13nYidTyXyD+hbV76+YJ1gPV6+3CNCWjtSQ9xUpMJUv0Cc9E9fncSRYK0FVebUSrPvMCY6gIq4dTeKybfoh3ylv8MgJxHDkn+OwiRDpx23P/hQZ9jElKLtheFkZIqtBJnBHWRkCqW/iv5JohCut5JYqQWeSq0LUcvscUz9Lnian/ESFcm0Ku+BIYRYbGw+VoMdmVYhMdnDrnvgGylCVWtnXynHVvkDAJV1rGpOLBDPKclqaLO19gkBbCep2o+zWqF+wJky3Psck3mmu4m36XQkwFiI8b2jKS6vUVxVJtmF4LWWoM+FpzoskXQOARZRV3WnFahZFGTmNF7ZocnrYs3pk+PJdcjQLJFshBlWVVUmvUknKedXXqLs2OQl93xYRynapEL3Kk7bo3lMRYw6UZBL0vkAjy3q/tes2O+XKOUii3ylcvzpQUvgIK+KaUmZnNYk3YCff4JGTh4Exz696wDhwIlSTpsvKUFWhBlAkWqw+woEyJErRZPUTis9QCzYAsIhy7i+Hj7A5k1ldkJ1cWSCAOOcGSrGFlBKT9mVViIFKlBMXKTID/yCmlWAL7eixU32yb6gSa5+gqjztl47hgyUWDDGzmXNqDHR/HQHWfnLvx6LDNQnW+50SNBJkR27eTzgHc0ziZSjdOI6c1A+cCAWq7oD8EIRQ7h9Thi4H0fyEWhnaRYFTmX/OlaUhCjCKtgtJHVLvKmEzzNxND62qQlF+WvbL5xRqZBkoFSFj4B9M63V0pLo31e+vGPy+URHCCHDUT+gITj+nJ8HCF+jz/qytQYK1P1C/wzkkCEwrwdYDeU5qcCccOXGU4CVqfO5gBhCBGMy3VihDxZQydMrR1CABJE8jix1MnRCXEm9IpFWoQ3KjRYDSfygBElWFpFFkfe5CYjyvFJNPUHyHhW9Q3jNwAE6jNdSuVn1D3yHnNkugFkU4UIhcvEd9gdbHEaApw8ofWBCiPkCmEB1JtZSg7kNFWrVfsCqvtbVfcFGD88EAH/nnPnwiVHAiw6YyVNXklSEwTLp2ARZCfhbIHizdJ+oQyEnPASimCxUfIfWq/mCKzxdaVbZLhKgnoKwE0wXki9L9ii1M42HQhMv2gSJsEKA3gb1irPyAlhaD3K8gQfbnHyHBitiKZUsJAqUJ2zJ/p/IFz4p9P+RXSg0KjjyP8rCJ0NQZYCHZucpQMEmGvZ5GVSSqCDPSUx7yOrOYyp0Yz4GMVAlJISr/FSqxd2a0MJOW5wJEQdqH4rIYQ7Eycp8c2qrQkV6RGpOJz947RX7OBB4lQO//g2zXBBjdPjgl6BXbIFCSVN+kEtS2OebwXDVYYUmXaeDIP9dhE6GH+vucMhwEUIDsE2wlXSsiAHBKmwHEV8h5QigNGXdOHaqPUB8wPfbgOpHVnlOJ+TO4Nzm2S6QKt61d5kvC4cRG+fMX244UvfJL+3B2AhxTfS0SHFOFul4HRqR9kDCt2CE4so1JPIojNw13gv+OjhSHT4RKfMBAGTbNZFMAGJAhRMElpeb8huJHZEmbKbeH6jDXK2wQogVAkome1CGbvzH1yUEaHzixiLPDpondh/fLvddIptw38BkCZfAD8wkQQOELTNux3J4gwUF6zCYStM85ogTd9k6jR/zxiqbjVj7nhkURXgDSzEuyXirDSTNZyVDfQ9Qo1sA5+doFUooE7MpcJrhpA1QBMorkaA2sGClGdonTiRjNhAZKcvTYwkdo16Nv9Yeq/YXRkSCXpFlHie39LQUIDAlwkwoE2kERIAdPzqoEtwiOTGIbEpytGo+bLMbB4L7f3O2AceBEyDmC61Vgw0xO3d3DU4xAcfvRMpXlB+oDKS7NxrbBlpRtUwRo4rXWOZRosE+78apP51oGc44au3MPiG8L09h/RqAiQlVvA3XoCA6YJkA5zqQZDOcbnDKF/X5Pctq+TyU4eqsm1OC+cWVJEDBf/hHjwIlQUJMhMB1AAUp12Atx+iCKtFmKjR2UB2k2QPIRolaIQPIv+so4UPUpy4jMPpSizgCq4Eh+ln2b7JmdVD021K6dW+iIz6vFgTKs9nm12PIDAvl+NghwYAq3Cim0kqWB3c3hfafKNPpeWxz5fQibu4yDiP4vIvqPRPQrRPRKIvqUkX5PJ6JfI6L7iej5s0/A/ofdMIvYtdUPAlA8UHaMsQdTj1cpmAFhaFus24RcI5vK0uPkQgScSDlCKrRwzr3TURiuLY/kmPcqRn6445UjQmSkR0S6Fr0++8xAbQK3FODGlJhNJOj7FseqyGoXEvTYd3Bkm75XWQ1CfjKRZ712ARF9PRG9lYgiEd0+0W9rvtlVEb4GwHcw85qI/g6A7wDwvOqiOgA/AODLATwA4E1EdA8zv23uSZjFPzemDAEAEegBUMjlroDSVLba+pyTrwGQOPdsVjlfLTWochtXiEm1UQq0mD8wHSupR3fcdEK5toZfUPqQSrdt/1X5Z7N6AH2QBHIbUnul/LRPrf6q9mFbg9jQIEBg4DNsmsI+MbrV5h6s81CCqWnk4V1IMIN5/v3YDb8K4GsB/NBYh7PyzU6KkJl/lpnXsvlGAI9rdHsKgPuZ+R3MfBPAywDcsct5Z17b2I7tDlQ9CKWZydUD547feOCG6S2ZfAYE5I/pX4PrG9nvjjE4PoCm2Tz2uaba67Zqu1Dc26BFQCOktMwpcvngvp/12ukczG9n5l/b0O1MfLNPH+G3AHh5o/02AO922w8AeOrYQYjoTgB3yuZDP/vRf/qre7vCw8GjAHzgsi/iHHBVPxdwdT/bZ+16gI/hw69+Lf/ko2Z2v5WI7nPbdzPz3bteg8NWfKPYSIRE9FoAj2nsegEzv0r6vADAGsBLZ13qBOSm3C3HvY+ZR30Bx4rlcx0frupnq0jpTGDmp+/jWoB5fHMe2EiEzPxlU/uJ6NkAvgrA07hto7wHwOPd9uOkbcGCBQsKbOKbGTgT3+waNX46gL8O4KuZ+XdHur0JwJOI6DOI6AaAZwG4Z5fzLliwYMEIzsQ3OxEhgBcCeDiA1xDRm4noBwGAiD6diO4FAAmmPBfAqwG8HcArmPmtM4+/T9/BIWH5XMeHq/rZjuZzEdHXENEDAD4fwE8T0aulfWe+oSXitmDBguuOXRXhggULFhw9FiJcsGDBtcdBE+HcIXzHiLnDhY4FZx5GeeAgohcT0fuJ6ErlsxLR44no54nobfI7/PbLvqbLxEETIdIQvs9h5icD+HWkIXxXBTpc6A2XfSG7wg1r+koAnw3gG4josy/3qvaGlwDYW57cAWEN4K8x82cD+DwAf/kKfWdb46CJcOYQvqPEzOFCx4JLGUZ5EWDmNwD40GVfx77BzO9l5l+W9Y8hRVhvu9yrujwcNBFW+BYAP3PZF7Ggidawpmv7UB0biOiJAP4YgF+65Eu5NFx6PcKLHsJ3kbis4UILFswFET0MwD8H8FeZ+aOXfT2XhUsnwj0M4TtY7GG40LFgGUZ5hCCiEyQSfCkz/4vLvp7LxEGbxjOH8C24fCzDKI8MlApm/hMAb2fmv3/Z13PZOGgixMgQvquAseFCx4gdh1EeNIjoxwH8IoDPIqIHiOhbL/ua9oQvAPDnAXypPFtvJqJnXPZFXRaWIXYLFiy49jh0RbhgwYIF546FCBcsWHDtsRDhggULrj0WIlywYMG1x0KECxYsuPZYiHDBggXXHgsRLliw4Nrj/weAD+LLAwJTnAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot objective 2\n", "plt.figure()\n", "plt.imshow(simu.t[:,1].reshape((101,101)), vmin=-1.0, vmax=0.0, origin=\"lower\", extent=[-2.0, 2.0, -2.0, 2.0])\n", "plt.title(\"objective 2\")\n", "plt.colorbar()\n", "plt.plot([-1.0/np.sqrt(2.0)], [-1.0/np.sqrt(2.0)], '*')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performing optimizations.\n", "\n", "## Setting policy\n", "\n", "Use `physbo.search.discrete_multi.policy` for multi-objective optimization. \n", "Specify the number of objective functions in `num_objectives`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.163097Z", "start_time": "2021-01-05T06:06:14.159742Z" } }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As with the usual usage of `physbo.search.discrete.policy` (with one objective function), optimization is done by calling the `random_search` or `bayes_search` methods. The basic API and usage are roughly the same as `discrete.policy`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Random search" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.316770Z", "start_time": "2021-01-05T06:06:14.164245Z" }, "scrolled": false }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)\n", "\n", "res_random = policy.random_search(max_num_probes=50, simulator=simu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The evaluation value of the objective function (the array) and the action ID at that time are displayed. \n", "It also displays a message when the Pareto set is updated.\n", "\n", "If you want to display the contents of the Pareto set when it is updated, specify `disp_pareto_set=True`. \n", "Pareto set is sorted in ascending order of the first objective function value. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.493398Z", "start_time": "2021-01-05T06:06:14.318132Z" }, "scrolled": false }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)\n", "res_random = policy.random_search(max_num_probes=50, simulator=simu, disp_pareto_set=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking results\n", "\n", " #### History of evaluation values" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.498984Z", "start_time": "2021-01-05T06:06:14.494679Z" }, "scrolled": true }, "outputs": [], "source": [ "res_random.fx[0:res_random.num_runs]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Obtaining the Pareto solution" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.504080Z", "start_time": "2021-01-05T06:06:14.500385Z" } }, "outputs": [ { "data": { "text/plain": [ "(array([[-0.95713719, -0.09067194],\n", " [-0.92633083, -0.29208351],\n", " [-0.63329589, -0.63329589],\n", " [-0.52191048, -0.72845916],\n", " [-0.26132949, -0.87913689],\n", " [-0.17190645, -0.91382463]]),\n", " array([40, 3, 19, 16, 29, 41]))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "front, front_num = res_random.export_pareto_front()\n", "front, front_num" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plotting the solution (evaluated value)\n", "\n", "Note again that the space to be plotted is $y = (y_1, y_2)$ and not $x = (x_1, x_2)$.\n", "\n", "The red plot is the Pareto solution." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.511086Z", "start_time": "2021-01-05T06:06:14.505221Z" } }, "outputs": [], "source": [ "def plot_pareto_front(res):\n", " front, front_num = res.export_pareto_front()\n", " dominated = [i for i in range(res.num_runs) if i not in front_num]\n", " points = res.fx[dominated, :]\n", "\n", " plt.figure(figsize=(7, 7))\n", " plt.scatter(res.fx[dominated,0], res.fx[dominated,1], c = \"blue\")\n", " plt.scatter(front[:, 0], front[:, 1], c = \"red\")\n", " plt.title('Pareto front')\n", " plt.xlabel('Objective 1')\n", " plt.ylabel('Objective 2')\n", " plt.xlim([-1.0,0.0])\n", " plt.ylim([-1.0,0.0])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.661288Z", "start_time": "2021-01-05T06:06:14.512392Z" }, "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcoAAAG5CAYAAAAOKnSzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkTElEQVR4nO3de3QkZ3nn8e+jscdG2MSegRhzkcTFXEyGEKyYWwgcYnNINmDD4RJWAfuQMJtlycnZhBBnxUKWRIFwyW0J50SB4AvKcrHBNpdgxnaAkJgETSA4Ngk2xBK+MtgQMIKM8Tz7R5U8PbJU6ml1d3VXfz/n6HRXdXX1o5qRfqq33nrfyEwkSdL6xuouQJKkQWZQSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDEppREXECRHxmYj4bkS8ve56pEFlUEpdFhE3RMT3I+LOiLgtIs6NiGN68DnnRsTvbWEXu4FvAvfLzN/oUln3KI/Dad3er9RvBqXUG8/NzGOAJwLTwOsO581R6PXP5yRwbW4w6khEHNHjz5eGgkEp9VBm3gT8NfBjEXF8RHw0IvZFxLfK5w9Z3TYiPhURcxHxd8AK8PCIeExE7ImIOyLi3yLixeW2u4EZ4LXlmetHyvWPLffz7Yi4JiKet15dEXEucFbL+0+LiN+JiAsj4r0R8R3g7Ih4UERcWn7+9RHxypZ9/E5EfCAizi+bb6+JiOnytQuACeAj5f5f2/2jK/WHQSn1UEQ8FPg54AsUP2/voTiTmwC+D7xjzVteRtEkeiywD9gD/BXwo8AvAO+MiJMzcx5YAN6Smcdk5nMj4kjgI8Any+1/FViIiEevrSszz17z/svLl84ALgSOK19/H3Aj8CDghcDvR8SzWnb1vHKb44BLV7+fzHwZsEx5Zp2ZbzmsAycNEINS6o2LI+LbwGeBTwO/n5m3Z+ZFmbmSmd8F5oBnrHnfuZl5TWb+EHgOcENmviczf5iZXwAuAl60wWc+GTgGeHNm7s/MK4GPAi89jLqvysyLM/MAcH/gacBvZeYPMvOLwLuAl7ds/9nM/Hhm3g1cAPz4YXyWNBS8BiH1xpktZ2kARMQ48EcUAXh8ufrYiNhWBg3A11veMgk8qQzcVUdQBNJ6HgR8vQy5VUvAgw+j7tbPfxBwRxnqrfubblm+teX5CnB0RBxRBr3UCAal1D+/ATwaeFJm3hoRT6Boko2WbVo71nwd+HRmnr7B/tZ2wrkZeGhEjLWE5QTwlcOosXWfNwM7IuLYlrCcAG7qYF/S0LLpVeqfYymuS347InYAb9hk+48Cj4qIl0XEkeXXT0bEY8vXbwMe3rL9P1Cc1b223PaZwHMpriEetsz8OvD3wJsi4uiIeDzwS8B729zF2vqkoWRQSv3zx8B9KO5d/BzwiaqNy7O4Z1N04rmZopnzD4Cjyk3eDZxc9nC9ODP3UwTjz5af8U7g5Zn5r1uo+aXAVPn5HwbesLZJucKbgNeV9b1mCzVItQonbpYkaWOeUUqSVKHWoIyI55Q3UV8fEees8/pREfH+8vV/iIipGsqUJI2w2oIyIrYBf0ZxPeVk4KURcfKazX4J+FZmPpKiW/0f9LdKSdKoq/OM8lTg+sz8WtkJ4X0Uo4K0OgM4r3x+IfAzERFIktQndd5H+WAOvbn5RuBJG22TmT+MiP8AdlL06LtHOe7lboD73ve+pzzmMY/pVc2SpCG0d+/eb2bmAzp5byMGHCjHvZwHmJ6ezsXFxZorkiQNkohY6vS9dTa93gQ8tGX5Idx7xI97timn/PkR4Pa+VCdJEvUG5eeBkyLiYRGxneKm6kvXbHMpxVRAUMxccOVGc+dJktQLtTW9ltccXw1cBmwD/jIzr4mINwKLmXkpxcgjF0TE9cAdFGEqSVLf1HqNMjM/Dnx8zbrXtzz/ARtPKSRJUs85Mo8kSRUMSkmSKhiUkiRVMCglSapgUEqSVMGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqmBQSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDEpJkioYlJIkVTAoJUmqYFBKklTBoJQkqYJBKUlSBYNSkqQKBqUkSRUMSkmSKhiUrRYWYGoKxsaKx4WFuiuSJNXsiLoLGBgLC7B7N6ysFMtLS8UywMxMfXVJkmrlGeWq2dmDIblqZaVYL0kaWQblquXlw1svSRoJBuWqiYnDWy9JGgkG5aq5ORgfP3Td+HixXpI0sgzKVTMzMD8Pk5MQUTzOz9uRR5JGnL1eW83MGIySpEN4RilJUgWDUpKkCgalJEkVDEpJkioYlJIkVTAoJUmqYFBKklTBoJQkqYJBKUlSBYNSkqQKBqUkSRUMSkmSKhiUkiRVMCglSapgUEqSVMGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqmBQSpJUwaCUJKmCQSlJUoXGBeXVV8PYGExNwcJC3dVIkobdEXUX0G379xePS0uwe3fxfGamvnokScOtcWeUrVZWYHa27iokScOs0UEJsLxcdwWSpGHW+KCcmKi7AknSMGt0UI6Pw9xc3VVIkoZZ44Jy+3aIgMlJmJ+3I48kaWsa1+t11y5YXKy7CklSU9RyRhkROyJiT0RcVz4ev842T4iIqyLimoj4UkS8pI5aJUmjra6m13OAKzLzJOCKcnmtFeDlmfk44DnAH0fEcf0rUZKk+oLyDOC88vl5wJlrN8jMr2TmdeXzm4FvAA/oV4GSJEF9QXlCZt5SPr8VOKFq44g4FdgOfHWD13dHxGJELO7bt6+7lUqSRlrPOvNExOXAA9d56ZCxcjIzIyIr9nMicAFwVmYeWG+bzJwH5gGmp6c33JckSYerZ0GZmadt9FpE3BYRJ2bmLWUQfmOD7e4HfAyYzczP9ahUSZI2VFfT66XAWeXzs4BL1m4QEduBDwPnZ+aFfaxNkqR71BWUbwZOj4jrgNPKZSJiOiLeVW7zYuCngbMj4ovl1xNqqVaSNLIis1mX9Kanp3PREQckSS0iYm9mTnfy3sYNYSdJUjcZlJIkVTAoJUmqYFBKklTBoJQkqYJBKUlSBYNSkqQKBqUkSRUMSkmSKhiUkiRVMCglSapgUEqSVMGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqmBQSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDEpJkioYlJIkVTAot2JhAaamYGyseFxYqLsiSVKXHVF3AUNrYQF274aVlWJ5aalYBpiZqa8uSVJXeUbZqdnZgyG5amWlWC9JagyDslPLy4e3XpI0lAzKTk1MHN56SdJQMig7NTcH4+OHrhsfL9ZLkhrDoOzUzAzMz8PkJEQUj/PzduSRpIax1+tWzMwYjJLUcJ5RSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDEpJkioYlJIkVTAoJUmqYFBKklTBoJQkqYJBKUlSBYNSkqQKBqUkSRUMSkmSKhiUkiRVMCglSapgUEqSVMGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqmBQSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDEpJkioYlJIkVTAoJUmqYFBKklShlqCMiB0RsScirisfj6/Y9n4RcWNEvKOfNUqSBPWdUZ4DXJGZJwFXlMsb+V3gM32pSpKkNeoKyjOA88rn5wFnrrdRRJwCnAB8sj9lSZJ0qLqC8oTMvKV8fitFGB4iIsaAtwOv2WxnEbE7IhYjYnHfvn3drVSSNNJ6FpQRcXlE/Ms6X2e0bpeZCeQ6u3gV8PHMvHGzz8rM+cyczszpW299AGNjMDUFCwvd+V4kSaPriF7tODNP2+i1iLgtIk7MzFsi4kTgG+ts9hTg6RHxKuAYYHtE3JmZVdcz2b+/eFxagt27i+czMx19C5Ik1db0eilwVvn8LOCStRtk5kxmTmTmFEXz6/mbheRaKyswO7vVUiVJo6yuoHwzcHpEXAecVi4TEdMR8a5uftDycjf3JkkaNVFcImyOiOmExXuWJyfhhhvqq0eSVL+I2JuZ0528t9Ej84yPw9xc3VVIkoZZ44Jy+3aIKM4k5+ftyCNJ2pqe9Xqty65dsLi4+XaSJLWjcWeUkiR1k0EpSVIFg1KSpAoGpSRJFTYMynIeyDdFxAUR8V/XvPbO3pcmSVL9qs4o3wMEcBHwCxFxUUQcVb725J5XJknSAKgKykdk5jmZeXFmPg/4J+DKiNjZp9okSapd1X2UR0XEWGYeAMjMuYi4CfgMxWwekiQ1XtUZ5UeAZ7WuyMxzgd8A9vewJkmSBsaGZ5SZ+doN1n8COKlnFUmSNEC8PUSSpAoGpSRJFQxKSZIqbBqUETEeEf87Iv6iXD4pIn6+96VJklS/ds4o3wP8J/CUcvkm4Pd6VlGXLCzA1BSMjRWPCwt1VyRJGkbtBOUjMvMtwF0AmblCMWLPwFpYgN27YWkJMovH3bsNS0nS4WsnKPdHxH2ABIiIR1CcYQ6s2VlYWTl03cpKsV6SpMNRNTLPqt8BPgE8NCIWgKcBZ/ewpi1bXj689ZIkbWTToMzMT0bEXoqB0AP4tcz8Zs8r24KJiaK5db31kiQdjnZ6vX4EeDbwqcz86KCHJMDcHIyPH7pufLxYL0nS4WjnGuXbgKcD10bEhRHxwog4usd1bcnMDMzPw+QkRBSP8/PFekmSDkdkZnsbRmyjGCT9lcBzMvN+vSysU9PT07m4uFh3GZKkARIRezNzupP3ttOZh7LX63OBlwBPBM7r5MMkSRo2mwZlRHwAOJWi5+s7gE+vzlEpSVLTtXNG+W7gpZl5d6+LkSRp0GwYlBHxrMy8ErgvcEbEoYPxZOaHelybJEm1qzqjfAZwJcW1ybUSMCglSY23YVBm5hvKp2/MzH9vfS0iHtbTqiRJGhDt3Ed50TrrLux2IZIkDaKqa5SPAR4H/EhEvKDlpfsBAz3ggCRJ3VJ1jfLRwM8Dx3HodcrvUgw6IElS41Vdo7wEuCQinpKZV/WxJkmSBkY71yh/JSKOW12IiOMj4i97V5IkSYOjnaB8fGZ+e3UhM78F/ETPKpIkaYC0E5RjEXH86kJE7KDNMWIlSRp27QTe24GrIuKD5fKLAGd2lCSNhE3PKDPzfOAFwG3l1wsy84JeF9apq6+GsTGYmoKFhbqrkSQNu3aaXgF2AN/LzHcA+wZ5ZJ79+yETlpZg927DUpK0NZsGZUS8Afgt4LfLVUcC7+1lUd2ysgKzs3VXIUkaZu2cUT4feB7wPYDMvBk4tpdFddPyct0VSJKGWTtBuT8zk2LGECLivr0tqbsmJuquQJI0zNoJyg9ExJ8Dx0XEK4HLgb/obVndMT4Oc/bPlSRtwaa3h2Tm2yLidOA7FOO/vj4z9/S8sg5t3w533VWcSc7NwcxM3RVJkoZZWwMHlME4sOHYatcuWFysuwpJUlNs2PQaEZ8tH78bEd9Z5+vfI+JV/StVkqT+q5o95KfKx3V7uEbETuDvgXf2pjRJkurXVtNrRDwR+CmKnq+fzcwvZObtEfHMHtYmSVLt2hlw4PXAecBO4P7AuRHxOoDMvKW35UmSVK92zihngB/PzB8ARMSbgS8Cv9fDuiRJGgjt3Ed5M3B0y/JRwE29KUeSpMGy4RllRPxfimuS/wFcExF7yuXTgX/sT3mSJNWrqul19W7EvcCHW9Z/qmfVSJI0YKpuDzkPICKOBh5Zrr5+9VqlJEmjoGrAgSMi4i3AjRS9Xs8Hvh4Rb4mII/tVoCRJdarqzPNWigmbH5aZp2TmE4FHAMcBb+tDbZIk1a4qKH8eeGVmfnd1RWZ+B/jvwM/1ujBJkgZBVVBmOQ/l2pV3U85NKUlS01UF5bUR8fK1KyPiF4F/7V1JkiQNjqrbQ/4H8KGIeAXFLSIA08B9gOf3ujBJkgZB1e0hNwFPiohnAY8rV388M6/oS2WSJA2ATcd6zcwrgSv7UIskSQOnnbFeJUkaWQalJEkVDEpJkioYlJIkVaglKCNiR0TsiYjrysfjN9huIiI+GRFfjohrI2Kqz6VKkkZcXWeU5wBXZOZJwBXl8nrOB96amY8FTgW+0af6JEkC6gvKMyhmJKF8PHPtBhFxMnBEZu4ByMw7M3OlbxVKkkR9QXlCZt5SPr8VOGGdbR4FfDsiPhQRX4iIt0bEtvV2FhG7I2IxIhb37dvXq5olSSNo0wEHOhURlwMPXOel2daFzMyIWG+Q9SOApwM/ASwD7wfOBt69dsPMnAfmAaanpx2wXZLUNT0Lysw8baPXIuK2iDgxM2+JiBNZ/9rjjcAXM/Nr5XsuBp7MOkEpSVKv1NX0eilwVvn8LOCSdbb5PHBcRDygXH4WcG0fapMk6R51BeWbgdMj4jrgtHKZiJiOiHfBPfNevga4IiKuBgL4i5rqlSSNqFhnbuahdtRR03nXXYtMTMDcHMzM1F2RJKluEbE3M6c7eW/PrlHWZf/+4nFpCXbvLp4blpKkTjV6CLuVFZid3Xw7SZI20uigBFhevve6hQWYmoKxseJxYaHfVUmShkXjg3Ji4tDlhYWiSXZpCTIPNtEaliPOv54kbaBxnXkiphMWARgfh/n5Q69RTk0V4bjW5CTccENfStSgWf3raaVlhMT1/vNIGlpb6czTuKDcrNfr2FhxJrlWBBw40J8aNWD860lqPHu9tti1CxYXN359YmL934lrm2g1Qta7kF21XtJIafw1yrXm5opWtVbj48V6jaiN/kryrydJjGBQzswUl54mJ4vm1slJL0WNPP96klShcU2v7ZiZMRjVYvU/w+xs0dzqsE6SWoxkUEr34l9PkjYwck2vkiQdjpEJSu8nlyR1YiSaXtfeT+6A6ZKkdo3EGeXs7KGDroADpkuS2jMSQen95JKkTo1EUHo/uSSpUyMRlN5PLknq1EgEpaPxSJI6NRK9XsH7ySVJnRmJM0pJkjplUEqSVMGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqmBQSpJUwaCUJKmCQSlJUgWDUpKkCgalJEkVDMotWFiAqSkYGyseFxbqrkiS1G0jMx9lty0swO7dsLJSLC8tFcvgvJeS1CSeUXZodvZgSK5aWSnWS5Kaw6Ds0PLy4a2XJA0ng7JDExOHt16SNJwMyg7NzcH4+KHrxseL9VJP2YtM6iuDskMzMzA/D5OTEFE8zs/bkUc9ttqLbGkJMg/2IjMspZ6JzKy7hq6anp7OxcXFusuQemNqqgjHtSYn4YYb+l2NNDQiYm9mTnfy3sadUV59tS1SajB7kUl917ig3L/fFik1mL3IpL5rXFC28r5GNY69yKS+a3RQgi1Sahh7kUl917jOPBHTCQc789jHQZJkZ54N2CIlSdqqxgXl9u22SEmSuqdxs4fs2gXeRilJ6pbGnVHecYeje0mSuqdxZ5RLS3DgwMHnzhEpSdqKxp1RrobkKu+llCRtReOCcj3eSylJ6tRIBKWje0mSOtW4oBxb8x15L6UkaSsaF5STk47uNQicW1hSUzSu1+uOHd5HWbfVuYVXVoplex9LGmaNO6NU/WZnD4bkKnsfSxpWjQvKvXtt6qubcwtLapLGBSU4aXPdnFtYUpM0MijBpr46ObewpCZpbFCCTX11cW5hSU3S6ImbnbRZkgRO3Lwum/rUT943KjVX4+6jhOJMcm7Opj71h/eNSs3WuKbX6enpXHTEAfXR1FQRjmvZ9C8NjqFreo2IHRGxJyKuKx+P32C7t0TENRHx5Yj404iIXtdmE5oOl/eNSs1W1zXKc4ArMvMk4Ipy+RAR8VTgacDjgR8DfhJ4Ri+LWm1CW1qCTO/HVHu8b1RqtrqC8gzgvPL5ecCZ62yTwNHAduAo4Ejgtl4W5dBr6oT3jUrNVldQnpCZt5TPbwVOWLtBZl4F/A1wS/l1WWZ+eb2dRcTuiFiMiMV9+/Z1XJRNaOqE941KzdazXq8RcTnwwHVeOuT8LDMzIu7VoygiHgk8FnhIuWpPRDw9M/927baZOQ/MQ9GZp9OaJybW75RhE5o2MzNjMEpN1bOgzMzTNnotIm6LiBMz85aIOBH4xjqbPR/4XGbeWb7nr4GnAPcKym6Zmzu0mz/YhCZJo66uptdLgbPK52cBl6yzzTLwjIg4IiKOpOjIs27Ta7fYhCZJWquW+ygjYifwAWACWAJenJl3RMQ08CuZ+csRsQ14J/DTFB17PpGZv77Zvr2PUpK01lbuo6xlZJ7MvB34mXXWLwK/XD6/G/hvfS5NkqRDNHasV0mSusGglCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIqGJSSJFUwKCVJqtC4oLz6aiddliR1T+OCcv/+e0+6vLBQBKcBKkk6XLWM9dpLEdMJB8d63bkTvv/9e88I4mDnkjQ6tjLWa+POKNe6/fZDQxKK5dnZ9beXJKlV44NyI8vLdVcgSRoGIxuUExN1VyBJGgYjGZTj4zA3V3cVkqRhMBJBuXMnTE5CRPFoRx5JUrtqmbi5l8bG4MCBg8vj4/Anf2IwSpI607gzyoiDz3fu9OxRkrQ1jQvKu+8++Pz736+vDklSMzQuKFt5v6QkaasaHZTg/ZKSpK1pfFB6v6SkvnBQ6cZqXK/XVt4vKakvFhaKWRhWx8tcnZUB7E3YAI0bFP2oo6bzrrsWmZgoQtL/o5J6bmqqCMe1Jifhhhv6XY3WsZVB0Rt3RrlrFywubr6dJHXNRp0h7CTRCI2/RilJPbdRZwg7STSCQSlJWzU3V3SKaGUnicYwKCVpq2ZmimHAHFS6kRp3jVKSajEzYzA2lGeUkiRVMCglSapgUEqSVMGglCSpgkEpSVIFg1KSmsYB2rvK20MkqUkcoL3rPKOUpCaZnT0YkqucxX5LDEpJahIHaO86g7JNNvlLGgoO0N51BmUbVpv8l5Yg82CTv2EpaeA4QHvXGZRtsMlf0tBwgPaui8ysu4aump6ezsUuz9w8NlacSa4VAQcOdPWjJEk9EBF7M3O6k/c27ozy6qu7fx3RJn9JdbOfRH0aF5T793f/OqJN/pLqZD+JejWu6TViOuFg0+vkJNxww9b3u7BQXJNcXi7OJOfmbPKX1B9TU0U4rtWt32+jYCtNr40PSlj/+qIkDQv7SWyd1ygrbNtm276k4WY/iXo1Pijvvtu2fUnDzX4S9Wp8UG7b5j2Qkoabt0bWq9HXKMfH7x2SB7ezbV+SRoXXKFts337oX1yTk+tvZ9u+JKkdjZuPctcuWDswT+vUbGDbviSpfY07o1zLtn1J0lY07oxyPTMzBqMkqTONO6PsxVivkqTR1bgzyv37i8elJXjFK4rnnk1KkjrVuDPKVvv3w6/9Wt1VSJKGWaODEuD22+uuQJI0zBoflJJGj+M7q5sad41yrZ07665AUj+tzt24eu/06vjOYH8FdabxZ5QvfnHdFUjqp9lZx3dWdzU+KM87z2YXaZQsLx/eemkzjQ9K/5KURotzN6rbGh+UUFyjkDQanLtR3TYSQbltm73gpFHh+M7qtkbPR9lq7dyU4+P+8EgaPgsLxeWk5eWiOXluzt9j7XA+yk1E2AtOOly2wgye1VtflpYg8+CtL/7b9FYtQRkRL4qIayLiQERsmPAR8ZyI+LeIuD4izun08zY6aR7WXnDd+gW22X6G4RdluzX2+3sZhmNXpd+/kIf9ePWLt77UJDP7/gU8Fng08ClgeoNttgFfBR4ObAf+GTh5832fksWP9uZfk5M5dN773szx8UO/j/HxYn0399Otz+mldmvs9/cyDMduM5OT/fuZacLx6peI9f9dIuqubPABi9lpZnX6xm58bRKUTwEua1n+beC3N99ne0E5rD+I3foFttl++vmLslPt1tjv72UYjt1m+vkLuQnHq188Vp3bSlDW2pknIj4FvCYz79X7JiJeCDwnM3+5XH4Z8KTMfPU62+4GykGqjjoFfmydT7v7h3DgABy5He7aDzffBN+8o3vfTb+ccsrGr+3du7X97AMeUO6nW5/TS+3W2PPv5f7AN/v4eX3w+F3Fz8pad+2HL13dpQ8pj1sTjle/3H8H3GcKfjQOrssDsLw0nL/P+urRmXlsJ2/s2VivEXE58MB1XprNzEu6+VmZOQ/Ml5+7mLnYUc+mUVccuyWP3WEqjltnvelGmcetM8VxW/a4HaaIuPftEG3qWVBm5mlb3MVNwENblh9SrpMkqW8G+faQzwMnRcTDImI78AvApTXXJEkaMXXdHvL8iLiRosPOxyLisnL9gyLi4wCZ+UPg1cBlwJeBD2TmNW3sfr5HZY8Cj11nPG6d8bh1xuPWmY6PW+NG5pEkqZsGuelVkqTaGZSSJFUY+qDs93B4TRIROyJiT0RcVz4ev8F2bymP8Zcj4k8jItbbblQcxnGbiIhPlsft2oiY6nOpA6Xd41Zue7+IuDEi3tHPGgdRO8ctIp4QEVeVP6dfioiX1FHrINjsd31EHBUR7y9f/4d2fi6HPiiBfwFeAHxmow0iYhvwZ8DPAicDL42Ik/tT3kA7B7giM08CriiXDxERTwWeBjyeYiSHnwSe0c8iB9Cmx610PvDWzHwscCrwjT7VN6jaPW4Av0vFz/SIaee4rQAvz8zHAc8B/jgijutfiYOhzd/1vwR8KzMfCfwR8Aeb7XfogzIzv5yZ/7bJZqcC12fm1zJzP/A+4IzeVzfwzgDOK5+fB5y5zjYJHE0x3u5RwJHAbf0oboBtetzKH84jMnMPQGbemZkra7cbMe38fyMiTgFOAD7Zn7IG3qbHLTO/kpnXlc9vpvij7AH9KnCAtPO7vvV4Xgj8zGatZEMflG16MPD1luUby3Wj7oTMvKV8fivFL6dDZOZVwN8At5Rfl2Xml/tX4kDa9LgBjwK+HREfiogvRMRby792R9mmxy0ixoC3A6/pZ2EDrp3/b/eIiFMp/rD9aq8LG0Dt/K6/Z5vyNsT/AHZW7bRnI/N0Uz+Hw2uaqmPXupCZGRH3ulcoIh5JMdvLQ8pVeyLi6Zn5t10vdoBs9bhR/Gw9HfgJYBl4P3A28O7uVjpYunDcXgV8PDNvHKVL4V04bqv7ORG4ADgrMw90t8rRNRRB6XB4nas6dhFxW0ScmJm3lD9g611Dez7wucy8s3zPX1MMFNHooOzCcbsR+GJmfq18z8XAk2l4UHbhuD0FeHpEvAo4BtgeEXdmZqM74HXhuBER9wM+RnEC8bkelTro2vldv7rNjRFxBPAjwO1VOx2VpleHw1vfpcBZ5fOzgPXOzpeBZ0TEERFxJEVHnlFvem3nuH0eOC4iVq8TPQu4tg+1DbJNj1tmzmTmRGZOUTS/nt/0kGzDpset/L32YYrjdWEfaxs07fyubz2eLwSuzM1G3ul0fq5B+aI447kR+E+KTiaXlesfRNGEs7rdzwFfoWi3n6277kH4omiXvwK4Drgc2FGunwbeVT7fBvw5RTheC/xh3XXX/dXOcSuXTwe+BFwNnAtsr7v2YThuLdufDbyj7rrr/mrz5/QXgbuAL7Z8PaHu2ms6Xvf6XQ+8EXhe+fxo4IPA9cA/Ag/fbJ8OYSdJUoVRaXqVJKkjBqUkSRUMSkmSKhiUkiRVMCglSapgUEp9FBEPiYhLypkgvhoRf1Le70VEnL3RbBkR8fcdft6ZrYNCR8QbI2KrA3i0PWuP1AQGpdQn5cDLHwIuzmImiEdRjD4zt9l7M/OpHX7smRSzKKzu5/WZeXmH+2q16aw9UlMYlFL/PAv4QWa+ByAz7wb+J/CKiBgvt3loRHyqPON8w+obI+LOlue/GRGfL+cd/D8t619ervvniLignCLtecBbI+KLEfGIiDg3Il5Yztn3wZb3PjMiPlo+f3Y5t+E/RcQHI+KYtd9Itjdrj9QIQzHWq9QQjwP2tq7IzO9ExDLwyHLVqRTzfq4An4+Ij2Xm4ur2EfFs4KRyuwAujYifphir8nXAUzPzmxGxIzPviIhLgY9mOaxZy0DjlwPzEXHfzPwe8BLgfRFx/3I/p2Xm9yLit4BfpxjZRBpJBqU0WPZk5u0AEfEh4KeAxZbXn11+faFcPoYiOH8c+GBmfhMgM++o+pDM/GFEfAJ4bkRcCPwX4LUUY/meDPxdGarbgau6861Jw8mglPrnWopBmO9RzvgwQTHu5BMpJsputXY5gDdl5p+v2c+vdlDP+4BXA3cAi5n53fI66p7MfGkH+5MayWuUUv9cAYxHxMsByomc3w6cm5kr5TanR8SOiLgPRUecv1uzj8sormkeU+7jwRHxo8CVwIsiYme5fke5/XeBYzeo59MU4fxKitAE+BzwtHIeUiLivhHxqC18z9LQMyilPsliBoLnUwTadRQzHPwA+F8tm/0jcBHFrCMXtVyfzHIfnwT+CrgqIq4GLgSOzcxrKHrPfjoi/hn4w/J97wN+MyK+EBGPWFPP3cBHgZ8tH8nMfRSzdvy/iPgSRbPrY9Z+LxHx/Ii4kWL+yI9FxGUdHxhpwDl7iDTgyrPEf8rMybprkUaRZ5TSAIuIB1Gc1b2t7lqkUeUZpSRJFTyjlCSpgkEpSVIFg1KSpAoGpSRJFQxKSZIq/H9/YsaKiEZ7oAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_random)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate the volume of the dominated region\n", "\n", "A solution that is not a Pareto solution, i.e., a solution $y$ for which there exists a solution $y'$ that is better than itself, is called a inferior solution ($\\exists y' y\\prec y'$). The volume of the inferior solution region, which is the space occupied by inferior solutions in the solution space (a subspace of the solution space), is one of the indicators of the results of multi-objective optimization. The larger this value is, the more good Pareto solutions are obtained.`res_random.pareto.volume_in_dominance(ref_min, ref_max)` calculates the volume of the inferior solution region in the hyper-rectangle specified by `ref_min` and `ref_max`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.666649Z", "start_time": "2021-01-05T06:06:14.662809Z" } }, "outputs": [ { "data": { "text/plain": [ "0.2376881844865093" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res_random.pareto.volume_in_dominance([-1,-1],[0,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian optimization\n", "\n", "For `bayes_search` in the multi-objective case, `score` can be selected from the following method\n", "\n", "- HVPI (HyperVolume-based Probability of Improvement)\n", "- EHVI (Expected Hyper-Volume Improvement)\n", "- TS (Thompson Sampling)\n", "\n", "The following 50 evaluations (10 random searches + 40 Bayesian optimizations) will be performed with different scores." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### HVPI (HyperVolume-based Probability of Improvement)\n", "\n", "The improvement probability of a non-dominated region in a multi-dimensional objective function space is obtained as a score. \n", "\n", "- Reference\n", " - Couckuyt, Ivo, Dirk Deschrijver, and Tom Dhaene. \"Fast calculation of multiobjective probability of improvement and expected improvement criteria for Pareto optimization.\" Journal of Global Optimization 60.3 (2014): 575-594." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:29.019463Z", "start_time": "2021-01-05T06:06:14.668034Z" }, "scrolled": true }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)\n", "\n", "policy.random_search(max_num_probes=10, simulator=simu)\n", "res_HVPI = policy.bayes_search(max_num_probes=40, simulator=simu, score='HVPI', interval=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plotting the Pareto solution\n", "\n", "We can see that more Pareto solutions are obtained compared to random sampling." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:29.190434Z", "start_time": "2021-01-05T06:06:29.020967Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_HVPI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Volume of dominated region" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:29.196389Z", "start_time": "2021-01-05T06:06:29.191710Z" } }, "outputs": [ { "data": { "text/plain": [ "0.32877907991633726" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res_HVPI.pareto.volume_in_dominance([-1,-1],[0,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EHVI (Expected Hyper-Volume Improvement)\n", "\n", "The expected improvement of the non-dominated region in the multi-dimensional objective function space is obtained as score. \n", "\n", "- Reference\n", " - Couckuyt, Ivo, Dirk Deschrijver, and Tom Dhaene. \"Fast calculation of multiobjective probability of improvement and expected improvement criteria for Pareto optimization.\" Journal of Global Optimization 60.3 (2014): 575-594." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:08:41.237335Z", "start_time": "2021-01-05T06:06:29.201353Z" } }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)\n", "\n", "policy.random_search(max_num_probes=10, simulator=simu)\n", "res_EHVI = policy.bayes_search(max_num_probes=40, simulator=simu, score='EHVI', interval=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plotting the Pareto solution" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:08:41.386473Z", "start_time": "2021-01-05T06:08:41.239067Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_EHVI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Volume of dominated region" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:08:41.402348Z", "start_time": "2021-01-05T06:08:41.394521Z" } }, "outputs": [ { "data": { "text/plain": [ "0.3200467412741881" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res_EHVI.pareto.volume_in_dominance([-1,-1],[0,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### TS (Thompson Sampling)\n", "\n", "In Thompson Sampling for the single objective case, at each candidate (test_X), sampling is performed from the posterior distribution of the objective function, and the candidate with the largest value is recommended as the next search point. In the multi-objective case, one candidate is randomly selected as the next search point from among the candidates with the maximum value based on the Pareto rule for the sampled values, i.e., the Pareto-optimal candidates.\n", "\n", "- Reference\n", " - Yahyaa, Saba Q., and Bernard Manderick. \"Thompson sampling for multi-objective multi-armed bandits problem.\" Proc. Eur. Symp. Artif. Neural Netw., Comput. Intell. Mach. Learn.. 2015." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:52.534284Z", "start_time": "2021-01-05T06:08:41.405209Z" } }, "outputs": [], "source": [ "policy = physbo.search.discrete_multi.policy(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)\n", "\n", "policy.random_search(max_num_probes=10, simulator=simu)\n", "res_TS = policy.bayes_search(max_num_probes=40, simulator=simu, score='TS', interval=10, num_rand_basis=5000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plotting the Pareto solution" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:52.716955Z", "start_time": "2021-01-05T06:09:52.535519Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_TS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Volume of dominated region" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:52.722260Z", "start_time": "2021-01-05T06:09:52.718300Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "0.16415446221006114" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res_TS.pareto.volume_in_dominance([-1,-1],[0,0])" ] }, { "cell_type": "markdown", "metadata": { "code_folding": [] }, "source": [ "## Appendix: Full search\n", "\n", "In `random_search`, you can easily do a full search by passing the number of all data (`N = test_X.shape[0]`) to `max_num_probes`. \n", "Since it takes time to evaluate all data, reduce the number of data in advance." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:53.049904Z", "start_time": "2021-01-05T06:09:52.723545Z" } }, "outputs": [], "source": [ "test_X_sparse = np.array(list(itertools.product(np.linspace(-2, 2, 21), repeat=2)))\n", "simu_sparse = simulator(test_X_sparse)\n", "\n", "policy = physbo.search.discrete_multi.policy(test_X=test_X_sparse, num_objectives=2)\n", "policy.set_seed(0)\n", "\n", "N = test_X_sparse.shape[0]\n", "res_all = policy.random_search(max_num_probes=N, simulator=simu_sparse)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plotting the Pareto solution" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:53.212669Z", "start_time": "2021-01-05T06:09:53.051682Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_all)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Volume of dominated region" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:53.218237Z", "start_time": "2021-01-05T06:09:53.214184Z" } }, "outputs": [ { "data": { "text/plain": [ "0.30051687493437484" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res_all.pareto.volume_in_dominance([-1,-1],[0,0])" ] } ], "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.9.1" } }, "nbformat": 4, "nbformat_minor": 2 }