{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 多目的最適化\n", "\n", "最適化したい目的関数が複数 ($p$ 個) ある場合は、多目的最適化をおこないます。 \n", "本チュートリアルでは、「解」は目的関数の組 $y = (y_1(x), y_2(x), \\dots, y_p(x))$ を意味することに注意してください。 \n", "解の大小関係 $\\prec$ を以下のように定義します。 \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", "(最大化問題における) **パレート解** とは、上記の大小関係の上で、自身よりも大きな解がないような解を指します。 \n", "すなわち、任意の目的関数の値を改善しようとした場合、他の目的関数のうちどれかひとつは悪化するような解です。 \n", "目的関数間にトレードオフが存在する場合は、パレート解は複数存在するため、それらを効率的に求めることが課題となります。\n", "\n", "PHYSBOでは、パレート解を効率的に求めるためのベイズ最適化手法を実装しています。 " ] }, { "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": [ "## テスト関数\n", "\n", "本チュートリアルでは、多目的最適化のベンチマーク関数である VLMOP2 を利用します。 \n", "目的関数の数は2つです。\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", "$y_1$ と $y_2$ はそれぞれ $x_1 = x_2 = \\cdots x_N = 1/\\sqrt{N}$ と $x_1 = x_2 = \\cdots x_N = -1/\\sqrt{N}$ に最小値があり、その値はともに0です。また、上界は1 です。\n", "\n", "PHYSBO は最大化問題を仮定するため、-1を掛けたものをあらためて目的関数とします。\n", "\n", "- 参考文献\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": [ "## 探索候補データの準備\n", "\n", "入力空間 $\\vec{x}$ は 2次元とし、[-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": [ "## 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": [ "## 関数のプロット\n", "\n", "2つの目的関数をそれぞれプロットしてみましょう。 \n", "1つ目の目的関数は右上にピークがあり、2つ目の目的関数は左下にピークがあるようなトレードオフがある状態となっています。\n", "(星はピークの位置です)\n", "\n", "### 1つ目の目的関数" ] }, { "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": "iVBORw0KGgoAAAANSUhEUgAAATkAAAEFCAYAAACYWZAnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABtIUlEQVR4nO29fdA1yVUf9js993l3kbBQKWIRUFipBExRhKCgDZZTlixkRaiIIS6SQMCpBZz1kpRJoRL8FbsECU6qAEFhHFXKW/6IF7tMFCUuC8SHpQIECeyKBauElGAbkhKBFIo+rEgF7L7PnT75o885fbqnZ+7ce+c+773PM+eteWemp6enZ+bO7/mdr25iZqyyyiqr3FYJD7oDq6yyyiqnlBXkVllllVstK8itssoqt1pWkFtllVVutawgt8oqq9xqWUFulVVWudWygtwtEyJ6LRH9wx11vomIvvHI6/zXRPQ5jfKvJaLHjml74ppfSkQ/RUQ/dor2V7mdsnnQHVjlJNJPHWTmSRCcKW8E8N802v6JBdoek9cC+CkArzrhNVa5ZbIyuQsWIvpzRPQ+Ino/ET3uDn0WEb2diP45Ef23rv5/QURPE9Hv+vpE9OeJ6BeJ6J8S0Vtc+auI6OfkGv+IiF5ERC8noqcBfBmA9xLR33T130pEv01Ef82VfQMR/ajb/w4i+qap644JM78NwAf3f1Kr3Glh5nW5wAXAFwJ4GsALALwQwPuQgOe1AP4vAH8MwMMAngHwp6pzvxfA47L92QB+FonVE4C3A/gKAJ8F4H8H8PlS7z8E8CdcG78z0q9vBfDX3P5nAPhNAJ3s/y8AXjJ23Rn3/VoAf/9BP/91uZxlVVcvV14P4B3M/IcAQERvB/BnAbwfwDPM/Gkp/x8B/CkAvzLSzlcC+BIA/6vsvwjAHwfwMgC/wMy/BwDM/I7qvFm/HWb+IyL63wC8noieBbBl5k8Q0b83ct1fn9PuKqvMlRXkLlcCSnPD1m17m9wfArg30U6HBJZv9oVE9DWY/n1sJ47V8mMAHgfwpQD+/tR1V1llaVltcpcr/wTANxDRZxLRQwC+AcDPybF/g4iuiGgD4BsB/PJEO88A+FoiehlgdrhOzvkqIvrXpfxRIvoMd941ET1ERC8mood39PW9AF4J4M8DeNeO666yyqKyMrkLFWb+LSL6ASRguwLwN5n5A0T0WiSA+nEku92PMfOz1ekBwLW08xEiejOAdxJRD+D/APB+Zv4kEX0rgL8nYPl7AP4zAH8kbTwJ4NcA/L8Avg3Ah4nobwH4KgAPEdHnM/O3yTWYiP6RbPdT18UOz/Aqq+wrxLwOtXQXhIj+FQAvZeZ/RkQ/CeC/YuZffdD9WmWVU8vK5O6OfA6A/4GIAOA9K8CtcldkZXKrrLLKrZaDHQ9E9KNE9F4i+jsTdd4swaerB22VVVYZyByMOBZHDgI5Inohkvv/zwD4CBG9ulHnCwC8nJlfBeB1RPSFh1xrlVVWuZ0yByOWwJGDbHLM/AcAflF2PwHg+Ua1NwD4cSJ6JYBHALwawG/5CkT0BIAnAKBD98oX4EWHdOdyhGYXDo/QeL2yMo2UVztHlUtBq0uNfvLYfe+4pZ3Hl5ZdlhtuV6LWeWNmoFYb3NhplU2VN7s2bOtT8eMfY+bPbndut3z1V72QP/6JeQ7wX/vA8x8C8JwrepKZn3T7OzFiZp1JOcrxQERfhJSK84ONw48ghQS8BQnI3lhXkBt+EgBeRC/hP0l/9pjunF52AY3VaxNkCo3z67quDvnrBVdPy6WsrEe5XdselhHRoB1omT9PFm6U2fXcPhMl/YByfba6qOrmPlsdLavr1Peu7e0jsdp3QGRAxSUwkO5HbtRhILo6zFZm5+oibaAqo1jVYU71ivZicV3WOlyW5/Nise/t7v/kU3/3w1OPaJd8/BM93vezf3xW3e5z/8VzzPzoRJWdGDGzzqQcDHJE9HkAfgDAt4xU+SiAtyFFur8QwMcOvdZZyDkAXKOMPNj4NgtQymWLgFugIYgNAKxVlu+TyTE5onzMA6K2Yw8lb/Lc9+Glc4CkDdbAFanc144FtiISkCFO98gGRvIHJKR95tQe5RMziClgSRm5MnSUwVKfnwM7AsABQNTfj4Ca7YYEdIFSP4mwlIORAcTBX4uDZQ5GHI0jx2Q8/BCAb2fmT40cfzeA32XmDwL4eoznTp6/HAlws+rOYXBV2UEA59uoWZnfnwI4V1aDGTfLBCsCgbuQ2iXYNVi20QlodNKO1YPUk/pF+bylaCfkfmpbViZ9QFf13cBdAbw6pvcc5Lgrs2dS/5Hwfyh8Wf2s9Xm73wLp8eDecfEHofwtEFXv/0BhMK65n7XMkDkYcTSOHOp4+Eqk0SDeTkS/QERfJ+k9P6J1mPnDAJ4momcAfJqZP3TItS5GJhjcgMUdwuDGVNRdACcfAhUfTxh+TF2wYxmIpG4I6XgXbJ87AYROzpEydARspI2N1tPt1B9WsNuk+rxJ2xwIscttR12u5PiGEP1yJe3OWOJVqM6l3KZcJ183pH5syLXh+u3vSe/R7i+ke+pInkkHbMoye57BPV/StifeTfXuDLhqoKvBr6VFHCFx5r9d0sKIU+DI2cTJna1N7tRq6hjAAUM1dQ7A0bBsoKLqdleBqKqVdbljGbXNjbWPnWMlytpUJbW62gcU6mq5ne9roML6MgB7Oyaqn3ptY7P9wv6mdRlgVVXzecRyvh4DQP3QRlfY5+p9AOhjcQ417Heo7XcxilrsjzfsdJwB52f/5d/+tR12skn5t778Hr/3p182q+5nff7/fdS1lpI142FKTg1wYzLHyTDG4LRszMEwYldrqkw1uAEGZjW4ZQArwS2retmOltXgBqiR25Y6fj1mo5slDuSIOe/KxZgF6EK2YRFDgELrkNjc0jGOrt2avEQkux1V9rl6nzn9wYm5gxwAUpuc1gnVNUIAYrTHYHY6jvk8IP0eeDE7GuJON/R5yQpyJ5KjHA25UOodwOC0/hTAjTG3KfY2YnPbCW7k11o/32eqr/sOzBTcAop9lX0cEN7pwHJxMlZmB7ThVOZArwA8O5bbGHz6CjQe7PpUTjECHap9SoyOCIgxqf/MuY9ACXTMBnTW70Al0HlnxALCAPoV5O6YzHU2HONomGpvF4NreVA9g6vXYwAn7bCqpSEcB25EJVtz9YAhqA1Ar4VtdRnXu1TGtLEwJh82Yt5VYXsGfgJspPV40AljVLofOV0zABwZBEqj6DGDEdJ1Q+3F1VaCARc7INVDiFz+ARNGx8xDoFvYJLUyudsicxjCPmqql7mhIgcwOPKA5e1vNYObo556trYL3FTl7GYAmwc1AKyjyFUMzrO7ln2uKJ8hxA73nDrKLpSEhKEldTaVk6qknICNOb1jZXdC0sCk6mhas2NyTVbHAAnVYmh4SGiqpgOgU9anskt1XYbIgQFcn4kdf66sINeSPVSgee0t9AvzMsLg8vHKrlcDmpbX6zH11NvKHMC1nAkDgFMAlC5lQNT+VedYGcrrSrmXfUCuICB6olNTDQQpH6fIqZ/K8jzDq9gd9QnYMoNjIJKwRbH5wbE61w1y92m3NAV0xtgUnWladV1IGLyqq3dG5rK4OWrqXEfDVByc1m0B1y4GJza5wplQgR1LWEIBbk4ttXgzx9yaABgwBDUHaEOQS7stkGva44zKNA55BuKZm1xAWZyVM6f3qU6GoABHbXanj7xXUEtARxHZQUGUVNQorE4YHgvVIsSBk6K205Hbn83olgrgZaC/LIxbQW4gS7O40cu0PtAJgBurK8dH1d45KqrVzW0PMhbqkJDK7tYEOCsXQBPmNsrsCsBDUZa2ta/5VkeZXKvcszdDAS5tbd5TSuSATI8re2NQD2Nueh8kzgiGMDuk50QQVpc4XmJs3lYXnFoLAIHBCnTK2BQQg1xTVWDP6IAho1tQGIvB5Y3JCnKHyCEsbsxOt4+jocXg6ji4rst1xgDOGJtjcLVzwdniBra34IFKQM1lCNTMrWB5hAbI1WpqWR8YMrm94uXct147HsgBX8nk2JWRs9WhcCj486iHgRAEgyi5IxMYelZHchOa1oX0DjhGlwoWs4PCp4RNMToDPueMMDa3hBD6Gx854ThZQc7LESxup7OhuMyeLG7MpreLwel2zeC0Xaubr+/Tj9gBTg1gmZ3ldgYA15WAZaBWMba8HgE3LUMun2ubI8/a4MhNzd7ctjkjCMKgkFRLqYIgQKL9jJSYGpXMDpSYGzrKrI6QbXVgIYuKhvLeA6eZLmSbo1jwlLXxTEanz4Aoe6uPlOR4WEHudsuhISNaPAZKbr+pptaeVA9Seq5XQXfZ4LxKGkLb/hYcO6vySRPDG9rduIOxNc/cCpCbtMs5kKvAbcjmxpANBXuzYh8qAmRHA7ttHUHE1mT7A3YX5byQkvWN2UU5n0p7nbE6JhA5R4e+U+kAMSVva8HoKHte9T16Rme/k3wPprbqI1lAfU23sILcZcocFrdAyEguO0BNrfpQAGaLoQFDgPNgqaBG7pzC/uZDP5TRCZEgrY8MZMFtK6h5FmGMTvuWy5rgNgA5su1iLVITjHqcNw0AHgb+5kUfbxMOLAhY1E4DNWFs2n9jZiTHRYUVVqhVEuvz95LYGMvIIcbi1BZHwuj0HReMzvVzDOgWsjfHlcmtMjs3NRVKPcfi6ng4rdeyw9Vs0K2bAOdZm2771CzP4Jz9bWB784Dm7W7BAZmBmqvbYHSlvQ65LyiPAbvVVi88tuNVUmfuysccY9Nshohse4veHicZCY7ZpRg4EvbGQC9hJfqHg9k8sNi4vumaCMroQC5weIrR1XF0I0B3rKxM7g7KzpCRluxSU4u6jnnJ/qBeg8UNhkkaY3ChPL9gcApwtu/ZnVNPMQSyJuDZPkpWWKmvY0xuFOh8WUPqZHvbViLnnQcsjE8Ym/oGSOqZ/c5CSChtFNegjJqRgC6zulSXSlUZLKCkNI9Tql0fzfM6yuhc5kMzjq7Px5cQBqG/sDnpV5AD5v0IGuB1UGbDMWpqsU+TdriC2RkzK72oGewwn8F1DtwqdlaAmcXPOXY2AMQK2NTLWgEdUJbbvj2L6UfpTVHkgK2wzXlG58COouBaFHYn4KaAkggVOQYnj1/Bj5CcDCRtINnZIsiYHEeJ3tH7UBVXgS6EIaNT0Kvi5AaJ/fv+7mbIqq5emhxhi5ustwsAp5wNY2qq1tsBcFywNnesZnCSopXGMEMGOU3NClQ6GLSspZ52VLIyrVeUAQW4OVCbY58DpsFtl03OEy477pYEZnLQgxnLe/BApozOmfVCwdakgxFg0iR7OUG8sQaogYagiwroakYXfP4rVcFrHtxQ5rkeKQzCfUtVuQxZQe4GZJfBd6c3VfabGQ1jjgYtU+BzsW81g0tg4o81AM55T5WhgYBogJhV03pE3jFwGxz3wObDTVAdh1v7OpWYiatWU3Xtwc0q5zY9CNq+gl3kQXvR2iGjj4nBOTSsnBJebYYwPWi4W6iATsAtNUooGJ3a4KYcEQt5V+Oqrt4NmWuLmxMyMmhnSk2t22k4HHyYSPaMOrDbweBiR6a+Fsysc+qpAmCHiumhCXKliuvLUTI6BRl9NB7sWozOIdgYk+OqAjlwKxwPjvCQ2vZVlY15nTyrObWLdJDNPmuIFJ3jwf6IAOqUCJ7tsYAbaW9zPwtGV4SXoAQ9e1ah7YjwN3ekrI6HS5IlVVUvUyEj1TUng37nqKmuzUHALzJz8mC3i8FZahblMs/gzAZX1MnrAcgNVNnGOR7kRrf5SO8ql8zNOwB8KAc3Ft8g5frZS8sZMIvryjF7lZRDStT2JuwuqaRI4SiO0Rn4VeEl+jDY8FH1Xf09II9SvEew+pQwE/qlIotvSO42yO2SJdO3agkj50ypqVN2OD/w5VSoCCmI0U4Gp+Dm1dK8LsuHk8dQVksdg7N9NMCuYHU8CniAAxL/uOtH37DJabXE3Nww5xrYq8Dng4KVwTlWRzGdk1leZm7Up/vIzE7CS4jldUkwcATiRgN+xxldcS+iphJTSgEjgib1E8SA6IODF2JvXuLgQZ+3HARyRLQB8JcB/NWpiWqJ6PcB/Kbsfhcz/9oh1zuJnODlDy8xfY2dwZlzANO34dldfdzZ4YpEewOYIYPL9jEqgMaHkOh+DVgDhhaqY6PnVOCmfwsoa3e2XwDchL3Jq6koCQ974ANkMEzAhkICSrbXAlLRSFP4WmZ15o0dPE8kkApsTJBoyOgsdSygCC8xUVtbLRo6Aji1+nh7XLo64T5fFjc6tLcbAM8A+MCOej/DzN964DXOUha3xfnA30YQ8C4W15zKzjkafNiI2eGKsBC4MJCyPG6oYGbNbWN0ae1VU2NwZrdDydwM+LjN6uBALmRDftM2BwyBzg66FCqnfmbHQpmAz6JGAjCGRz0Za8tABct8MHbHQCCSsSrZytNCEgTM4qSgFN7LkJCSitHJLQTk+wUj2Vs1qd+FllgqWIx5zgi1zy0U9nFnHA/M/BzSNGG7/jy8hoh+CcD7AHw3n8vUYKeSOba4VuBvHTJimxM/zMr2VoBfq672z5iYbrs4uZpB2T65chocL2x3eqyyt3nwKgGNS/tdzeA8s4Nndo6C2X3WN54NZAZwgIFajolzg2BalkC+DMt+ObIwUl0tD44pEiwjQsvtHoSVJeaW3rFP1PeMDpT+qHIEyDM4qWusr9bLPUXV/QU1l36NkyvkTcz8TiL66wC+BsC7/EEiegLAEwDwMF5w4q4UF55RZ/jX6qDshinZYYtL15jJ4iwbgZp2uDTnp5zjku2ZkOYMrRicsrMBg1NWpgxug9Jz2mWGNmBwxvp4yNrM08oD21yh6vn9MTFUaYjY4ux4VFVUhiwvbHFk+M7qQVVGpjY5cQ4Qy/QQyT9Q2OKixslFyOgimbkVjE5tdBpKQnLORs7bIAcnCyhzZFBHhU2Oe+SwEkkB49Yf4ANkzXiohJnfKZvvAvAKVCDHzE8CeBJI866esi8nl1Z2w4iMsjjdr7ymxTVaDM6XSXOlVxU5jESPGbi0GZxne027nLflubJicewlgx07QMssiUNWWdU2Z8wHsg9kcKuZXIvFuVXelvswNyssOyFpidnjavM8ROSQEiB7P/X/mu05NVYeeAnWwvIGjE5sdCWoyzVtTcL6OPVV27LLsLSvD2T5zyqu3tUkRPQSAK9g5p8D8CiyA+LByqnCRqx5z8Zm2OL8dmuEEc/i8sFxFleEhKiNLZjX1Aa8NOZGzUBfZXADNte5NRF4k5mdP16AXofEMAbMjot6CoAFyCmY6XEPajYG2/Q7ycn3QrWcLQ6MNASRMTvZVs+pekiFwZkqGhPry/FwqOLk0rkGWD3le9H+1IwupuR9JomjQ8qMiKCsgYp6jUhK0gA3ujAjgGLMYSWaDbGQuppu846CHBG9GMD3MvObpOhTAL6ZiL4HwO8A+P6lrnURUgf6HmKLa40w0tr2Uh+v1JRyDLfS21rEwTkwqlnagNlpeaO+srTCPqegVx0vthXQggM5IA04CXccwE7TsHkxMuWxNCpdNOE+yCghEACEA0ASBBPnQ2JWQr2ia8uuW28LUqnHtWZ0AZIvKyOWSCwcyXWZOLO5oLN9URk/p0G/RQqYewZHCoNwfZfSupj59W77kwDe5Pa3AB4/pv1zkoNj4+aEiYzZ4vx6ly1Oh0tqqaka+6Z2OWFxta0sM6/M3KJuF55SZ5urmZwBV2JqxbmqllpbCn5cMjXdh4AasQM3eSTK4rAb5HQcOSN0NtJu2k6gpwwurdkxOnUscBR7WcxtaMsckle1CCoGLF4ul1WMTjBSQZc9GJpTQdYdFcCc7HPJCKj3oxNWD7IhlmJyjDUY+OLlphwOc2xxNcBZ3Wrb13cAh4ptGcuyPFbH4iyFixyT02MNBudU0gFz6zKYlZkPbODnQS4DWwY7Ekan4EaBM6BJUC10v/FYVIy8KdCJ3Y05+SuTrU3UP9a5UpHxBQQdEJP0WZp+KqAmUxayH/XDM7sxRscwNqcZEBaAYOfoEOdSJzpPrAyjnpm5mxSnzoaQc48XuhvBwKu0ZZbDoWWLa7XRSgNTFqflLVucY3hFVoPzpnqWV+SjFqBGQ2ZWJd8PUrgE4GLHGewcmMUNEjh0SGpeQBPc0pL2gzK2wMgZA2zg1gI7L+zUNOa0z6KusqmthBjIGBwzpeGRFLTEg8KBU7ycqq2Qfm8FoLp0EWLK2mErWJcgD4bNocEKdhKWovZD0nbFdqcebuolER95eCevthq4FcHDx4MTY2Vy5y0LUfZCZsbGjQIgZVa3yxY3GTLiwK7OaphSU9tDIjUcDeq0aIWKaHkA4oYrYMyMDh2XqqmAH3UJ6AzgAFCI6TYN3EqAS9+0Al0JcCRJ8Cq6reOgMTLYxUhiBxPgowCGTgco+4oikbIXNQoOadxIJBuFRMNBoIY7L9rVLp0bu3Iode4oZ11IVgSY0rMyex2y6qp9kfPN26o2OVWzF/zt31nHw62QpbyqXsZGGhnUc4Dm160A36Z6Sih+e+SO676BpAdBr4I1GJqC38DxMGRwpTNhQj1V9tYJcHXRVNMgbE7BrQA5AF3Q+QrYPTKWR1WCnYGagRxsn5kQOX387NaRomiSQfAooZlqmeop1clrWGPySPa9eurXTjX1xxSg2AMnZUeEnRfVASHvGy211aWGVU4IZY7HCoPWQTPPVg78S7a3w2FktJFhvQZ42TUaAFepogM1VcGuc4zOqayqjibgopLFjaVsKZPrKKVtDZwIAG9gAFayOk7qaeAEbqqaEoBNNHCjIOwsRAQBt7REAzUiRie2OQW5ULE5YAhyQAa6qECl2wJyvTC5PiZQizEk43qf2GCEMDsicEyLsTrBESCtUxgI0gMJUkiy71bqe0i4QwlH9Q+AATFyZSlUtVWDmU1tNW+r2O+CsryGbe5IYQDXdyR3dZVDZK7DobE9iFhvsTtXxu6DMhaHskwdDHl/GBjsy3wgcB24ayEkAmYW90bIbNI7E+RRjAFcJ+ytC7qOBbB5VbUFbiodEqglc5mwNyCFYzAhUAI4oh7MhC2U+UXEGKADU8YgyGTHxXGggCa2NAZs7DnzEDt1Mgc3Z+aWVEoUz4qFmSWHh7A0YWV+nDiW155cDtVzqGxzo1M47iXr5NKXK3NU1TnJ+GPH93E41OwtV7Jl1Ban7K9O3fKsrWJx0dvZdO3rdrnM11UbnHlZ1SYnTI7lGNTmJuvQiSraRQO1IKrqpusRKDO4K2FuCnIb8uoq78XkvPoaQdjGkBmdrLu+k7z2gJ4j+j7V6Xs2sGOxd3EIKSgYIaFpwsbM6PqEMBHJYeFFn3XgBIjBVF7RbpW1aSaGCytJAMnZUcRpH10Jc2nIp2ybW0IYa8bDrZKdE9XUMhIA3G58QtWtZDBngz9W2+Ka/aIRxpZ1mJqx+fqexaW6ZdkgqNdlLqTtvJiXNAwBLgFZArTOqasAsAlJcfTqaqBsOQvUcmOmPkQOAAFb+TgjU0rlCm47hgQpQaYCRARiSIDGAGtWQq/Pm1MsXRCk0qGQ9FnAMTV7DmSBwLk89zO9AzaHLlXPmYDifSko6n7N5AoVlRQkj5eVyd0VmRkAPD2SSFJVR+du8DY3PVbZ4EZtcWqP6yj/xTcWVy1+5F7zqGYWFx2T0+BfZXA2eOaG5Vxng1MGt4nJmSAMrtsklrbZpM9l0/XoQgKwK2FsXYjYUBwwuE3oGwDXBrroQA1IKVTK6NISsOUgtrmACMJ13yEy4ToGMEcEYXLbEBK7C4y+JzAlfZMjJSanjA4wtVRBUbOqqGdhbFKHkjPE1NlM1szGF5DBKXtg01qHYS9DSkSLVk9rVLq4DDCxPLdTCRG9GcA3AHg7M//wRL0fBfDlAH6bmf/iVJuXxTsPlVOEjuySOfM3jJ7bqONUXq7Bz0nxW25sc8HeWna5XGeU0TkPa7F2TMYzOI17I/OcJvbWCZgpwHXEA4DbyPYm9LLIviu70oViuUi5nWvn6dLbfrp+NBZZ9i31NfU79V1DXDTsxRwryM/HPMn++YXqeWnZgGW792lLHR6E8j0Vvxf3u6n/gB4hyfHQzVr2FSL6AgAvZ+ZXAXgdEX3hSL0XAngHM/8ZAB8holdPtbsyuUOkNeLIXK+q1mnlrTZY22DeBqeeFhPU2A8/HdePpfao2kdReVaLD7DwrDoWZ9su2d6HiXSy1vAQz+BCxEYZXJfY2dWmN/amgNZRBrZAEfe6HgGMTUi5UVcUhckJKDoVraWyGpsD2Tho29jZvm5vY2J09+MGkQmbEJONjhg9E4g6BE3lIiDG5KQAU8raqhmdvt5euNVW/7iIXa2DeFWFkck+BYAh8XEi6uhItjg5FrNtzt65C0uxPz6SvL+M0wEATjrHwxsA/DgRvRLAIwBeDeC36krM/AcAflF2PwHg+alGV5ADsJhVdkxaXlUpb046vSu0xG8XHtEMcOpRnbTF1QytZgZ+39gGD1iI2aEk5cpscHLbxnok7i2HhWTGVAPcvW5ramoQZhaIcSVgt6FeHiGja6YV6HPqLXhVVdSuYwO4rmNcx87sc5EjIiV1NkC8qjEghqQ8MkdVkhECI+pkM4HT/ZsXVtiw2usCgD7VTd5oUS114E33rKn5bjTTAk3bnJUDBniFH0Y9wEcKI6v/M+SlRPSs239ShlcDABDRYwAec8d/HsD7AbwFaZzJN041TkRfBOArmPkHp+rdfpA78C/Y4vmqsy5agtjUcErF5Mx2rK1q1tMBFjFxWs+XmV2uUklduY0Bp55UjfPqhMV1jLAR+1qXVL1NlxjbvU0PIsZDnTK5fgBu98IWnQO5h8IWAHBF2SbXIRYe1a7B5JR1RE6DPao9rkdADFtsucO9sMU2drjmgA1FbDkgQIY46hl9CAh9h61cl3pGlOsqo+MYgI3Y6GLILI0kQFgZHOR5+hGI/dhzytJ1nzMzK9i22ObycE4u3cwDpR+hJHjUO1z2yHj4GDM/OnaQmZ8C8JTuE9HjAN6GNLDHCwF8bOxcIvo8AD8A4Ft2deL2g9wJ5aDQkV1e1X08unVbBnAZFFssbmCLC1mFNQ+hY28FqNnHprFxzpMq22qnytkLyY7lw0OMwVXsTW1tD4XeMbho4KbrjqKpqgpuAcOPOMoz6jmIihoM5LYxIBAbMwmi7+laATE4r2RmMjE5EZTRIYLEI8Ad68VTZkQANOOAZfy5pI5SZnBq7VAAC6k+kQO1oIAnbQlw5Xg7go3sicwAdfy7ZWxyJ814eDeANzLzB4no++EAsCE/BODbmflTuxpdQe6I+DiTOZNG1+2NeVV1u3YsOPbm7XKWiF+oL3BAlm1utVo6ALKx/ZBBzdvs4MAvx8LFxOJCjoPrOgU1LmxwDwlre7i7NqB7KKSytM77V9SjE7ADYOtAEd1IGIna4zTkIXIwsLvmDj0FXHPypirYBdoMvLLbODSiB5L4OShjCymkpIPMpYoEOBJyYkM5CWAl25sbltxCQdIzJRdqYn+INHVLGJqNTkKSBmbvdZjqRQuGkJxqIhtm/jARPU1EzwD4CWb+EADUY1US0VcCeC2AtwvR+GE3CvlAVpBryN7xca026r+aC3hVdX/K4QDkv+ADD5wbeskcE01Aw/ADKwCOM7NT72HhSS0BbiNeyquuR0e6jrgnbO2eekkpAd+GelxRUmE9uAUwrsIWHdjATYGtaZeTx5bU1IBe3sk1d7jiHj0H8wQGzoxOQU7j6nKIChdNx84PX55UV45kTC4l14uiykltJQnnMMIV5Hif30E6F8b+mtMauvfsc1oTiHKOm/PgtgSTY+A6ns50w8xvBfDWquyTKMeqfB+Az53b5gpy+8ohALiPPW8kNCRdu9w1raF2OLhj3CpvLK2Urjq8AW6bB2pqDhUJ5FK0KgZHompaCIesa4BTBvdwuC7ALTO5rYGOAtyYTS6AAepNTe3A6ElGuI3pvI6jOSCuOXlcA0f0oq5GJokP7l3b6aHEyECICCHkbAf9A8DIaiurKYFtKHV1NLDY5sYcENm8IAHDqN4VJ9ZWOCbU2UDut3KkJHX1BuzTC8oKckvLHFV1UDYEtuZ8qlpXVVbAwEu3syMCDSYn23USvrZZlFW2OHNyiLNBx4TzwySJgyF0MamoIWLT9SnYVxhcAOPhblswuM/ornFltrgtrqg3cHs4XJtNrkMsQK6rQG4shEQN5T2nhPteyq65wzX1iBzwXLzCVdenNadraayXqqv3G6OcBNLEeELsYnI0REIkGf8NgEX4aiAv1IYGY8Ikwzh525yOdccy/FTB8mzEkhIMawdEHkiTFho0c814WGVKHJAVk0Y3ju86H4ALDkYRB1XY5yppBQAP/tJTXo/a8Cx1S0NFZLReysMjWTAtcZGWFRyTu5J4t7SdF2VvqpZmkEte1nvUO1W1dEB46cEIyvQQ8j5v7D4jGH0gUWkDorC8K/TYUgeEXjyvhBh6bDlY4DBiQDnWnTyLvpybAcgpW1A7qYaUoM3clJVxJuLFu4GGjyC9F1KSOQZoCw2aeSeGWiKiDYC/DOCvMvNnT9R7M2akaJxMFrBBFLJvEPBEfNyoTIWOQFVPHy6iizKyvG9qqAsNGbA7Ba4Gi+OKxQ09quJNlSGTQogSLpJAbdNFXHU9rrqklj602RqT8wzuoZAcDw+HazxEW3RSpoDXIR0bMrkS5ELDLhcpGPNITocgtrje2FzPAYEjIgcEitlhIWtldJ7J3adNSveSYOFAATFG9ER59BLRF5mVlpHY4MQjCrKZwNQ2V7Mz9aiao0dSuRC9p9s7IcrzQWnsOQizPF7ujrq6AfAMgA+MVfApGkT0k0T0TmYeRC+vcpzUf1QHLG5wPLM/Azx/bsEUWgtXdditdaDLZHsrhkaSYSg197STJWiQr7A3dTIouN2jLQKixMRFCR2RFCxhZTXYqfSgdJ7pgKrays+e8/1eocc1gE5QJ3tv2RjdhiKuXd4s6RrK4hgdgD4kYDMWpszX2JeWuw6ouD9A2T5HonZW9SDt6Xhz6oRw75oC20Q6S2U93Ik5Hpj5OQBP0/Q0SbNSNM5NlggCbsbPTf3Aag9qJYPQEWNsUsE7F5wDIauWKP7Ke++phZjUNrlRFqdOhxz0q7FwXZfDRTbiVb3qegv21Ti4h0JicvfE/vaC7r44GzJ7e5iucUVbU0sfpusEgOgzwFECvxrcPBsDgJ6Sw+Ee9+hBuEKPSAH3ucM1b5ITI0bco4AO0Wx4V5zQ4Tp26BEGcXgpHYyx7QJCDOi7iD4SQkiUK0YCIcjzSnppsq9RydxCLjcmpuTPOSP0nGTe0/Su7JAoRg52I5SYWrsAkUve1Ts0JeEOeQQ7UjSI6Ak5hofxghN25QHIXPtHHR/n13PaaNjiMFhXA1/CHW9doq47xuqgDEa15jxUeZhYNiE5IjRjQVme2t7SkhwLGkKiwNYCuNo2BwAd9dlAzgEdevQUEdxIIR0RgC3AG9yjHvdZwkRYgFMCjpVpRiJhnhEbIjsWKKV0pTXJM6BsNZDjtWOA3Dsq1Mzmu/CMDWXKVus9SmBwMQTTAgRsHf68lI9iR4qG5LE9CQAvopcs4/rZRw5M1dprPgdgmPWQGmnXr4GuALGJbf+xwHlNCyaX94vQksoeVwBZEUPXiosDNCdVRxbR9K2rLo3yoV7UxNxi6UkNyZOqTE4ZXLLBMR4O99OargHA1kmdzYNm1mzOS0+aypWWe+hxnzrc4x730UkIyQaB04iXyY6XYutiCOg4JesrPipLvNdtEWLANqTMia04IXpJ9Qoh5boSdzY8uY0rJ2sLHdH4NmV8DNhwSqbySr3GHxvzhnNDtQ2wKReXkEtTV09pQXw3gN9l5g8C+HoAv3LCa12G1LNy7XVuBr06Ps7EADQXNf/oOobWOl6ouHDAp+eqR1W2qVq8LY6c3U2HUtoE8ZSKR9WHiHTibU2sbmt2t1Rn6+pq/irjSmZiqIdaKhliYmf3pK176M3Gd5UgDfeoT+oxovUrSDtXfhw7N2CAH9tOt3XSHWW5pd2yevaubMDEW8/evZ/CU954r8W5+ns5UtS7Omc5F1mMydWpF2MpGrdK9hleabKdlp7i2t31p2jkh14buv3aL952lz2wLk1Ic1ZDbpuEyfnZtXzgbzGqiBsD7qoKFUn2t62xt8Tk+oLBmU1OwAoArpDBsH5EHQE9A1fC8iKSE0KT7gMY1+q0QMS1fAbXSKlegdL8Dh0iIgV0gREjWXhJlD8mmxiBkEYtBmAhJV1gMEf0IU1nyFEYsA6TxPLOoSEm4kVlWNpX6XjITA5K2ov3TFl/bf7REna3kK50V7yrAABmfr3b/iRc6oWUDVI0brsclM6VTy7X9bb/bTVYmPesDjxpFdAN/tBSu27+mCo2IozFMznPYvyIvsregrNxZfYTjekF50FVJqdszi8BjHuWlJ9ArX48+tgjADDEc8vJTufiMiIYoK2UAz0lG53PjQ0CjFfU45o6Y6VXoUfs27Y5z2xBOqR5DtJNWQuUvayVyYHgQI1K0IPgo63t/WsqF4zlc8RCoSNyDSZLd7sUWYOBp+Smh1cCcsL2AKRcuQNOA7MRVbUJaK3jntlV29kb6+xx7gP0TgcFN6/abUQFVVucsTjxrl5Rj3viSb0nToe09M4ZEQu188oBWwd1IgylZy4AL0iIiA1DDiAgp3tdowOwTbFxlAcCuApbIKb9LQI21CNgY6MOIyb1PNpzENBzQdJU2zydfc28pjWY2fsv31u2sXLB8GykEgzPXUqDPCdVdI7cXpDbpULeCIDtSvGa+WPZUY9rBlh/IFqnAWgFmNk+uw+PyzYN3MoZ7XUKQZuQBmzDKCnQmUe0YGs5XUu9qlfoi3K1u3XEuAKjoxLc9Cl31U33YARK0xECwH0FPE79zWwoiDMihY10xLimPnlgEQ3sIgVTwfsYsAk9YiQD846S+uoZnYJeZmaOaSE/e7JnrNkR+pzzuyzi5Vo/iQYQWhHRIo6HO5PxsMoBUgPerhzXne0RWuBXqKlUrcfqFeX+Gq3Fg14GOqAM3VOHAwAL+rUBL0XlLJwNqMNEYlZPBUQ7B3D3pP8J7NL8qbUEEKKb0v4eEXpmRFHzOuJ0nGLyujJwTZ0cE9ufqK8aqnJFPa7RSX9Lh0PKYy2Dg6l4RpRta8jqqwetgslJ+RCw7Jbce5FCcmprXXchWUFulUnZy7Na29YsW2EIZKO/u8bHwv6cesHQM5f2G+CGzOh8lsPGqawbp65qvJmqqkW2g2QyBAduqqYGZAZ3hczeFNyUwQWUfzgiotRNfb/mmMDQMTq1zd1DTExO0gOusAWwSUCo3l30uMamsCluQo/QZ5CLCnb6bGQNcdCYXc49S7PTCclzmnT5HmuGvi+ALeJdPS/P6RxZQe5cZOYPcM7vy+Ld9jgn9wMDwBtU0W9UgC8zuRy3NjWrvUqH6BY2NTaYasvmMLBz5OIe4BTcBnY5M5BH9GB0oLQWRtcREJnRI8fadQnS0j1I3zQ97Fpj6ix8JAGknx5R7713D85CSYqH6FK6auBy6zHAGwv9ab3q1pysx8ilxcmtIDdXdnlJj1E/laGNOR0wrl6m+lqnPme3+jlwPlTnp/OGnlU4gEsMzm1XKlyyySmD693Al2ygZqqqAM095Ng6dTR0wIDBBQQDt5rJpbmcBYgAXFOPAMI1R9wjSjY6QGx9qV4aay6mlC6CgG0Cso7ZPMSd618QR8aG0iQ4yuACaayge02evTmcMzVVn7fXTws2numbpnP5CW4sf9WrsEAeW+5IYQa2Jxw08xSygtxNyJindEoOHRZn5LSDNYyR89IH22AoqJldLJiYSj32m6qqfjjzfGwoUwAXQHBzaiWbG2cmN2yLcQ1N6RoZZVj7LPY6Y6x1X0eY7FSad8HAdpkd9pRBCtgCsqqrFyxLDHt+fCcm9EMnltjdiq07UAY2Oru+X4ZfjNqdCnUVQxVO1TrP2EKlqupoI5rNoM4G9aQqi1OAU3ALrsMdSYBYvjryeEVR1K00Yog6IbSvqoJ2kuTfIdnkOjmvyI9FxBZdsttV6muPzGztOek+NZRHr76i9LiO2ugegFyiTe6yeOcqy0nLDrTnuXNwtZ4AunV8TBJQVmXO0ZDriZ2OAj7+hy/Gf/w/fQc+8YefVdUJRRupPk1+ADqMk4WHuH7ZDGE1I20wubZNrlrvIQ8aY5hp1nIusoLcbZSxD2pO3eIYjx6vnQ5ezCi/Q2wcuEbdWmWtAal2MnQSovM3nn4DfvX3/jX86NNfbWVlG+KkQH1+dj60rq/Sui/N3BjWnaknes81Ku+3k5bdtGxnx3UW+tojaNZyLrKqqzcpN6kOz7nUgt2Z/UEvKJ6dfcnf+EE831/Z/j/4jT+Nf/AbfxoPddf44Hd8l9noWtIRcO0Oq+1tCZkccrFSUQ+7wHGn7yvMl2eTW5ncTcpCE4nMkjmXWrA7D+KHH52D4L1/8fvwdV/8LB7e3AcAPLy5j3//i5/Fz3/b904CHJCS+Yt2F8zNnFTbLgwskhD6GGYt5yIrk1vlIiXFuWWQeOSFn8Jn3nsez283eKi7xvPbDT7z3nP47Bd+eonIifOVmyfQZ2VvmyMryN1GqX/4Ux+CZj21o0jb+Y4sP3R2A0E6SeOJ7f5LnuZEjeg5WMK9HQMVDouek1cySlpA3XrPER//w8/EX/g3fxnf9GW/jH/4G/8OPvIHfyz3CSmMRNmfhpJEO5/surrWSW8iB5vUJnJABNl+aiPfb56guvRCjqaNMpwRLq2oWqtQzlAbb2tKloiTw+WpqyvIXbJESKrQIS66A643co4v9h9AAoO2Ebqeu1PnQu0pyGQyvRiw0wVqEEznSFoWAgII/92f+9t27Hu+6u3SBy7U2tRHzudP9GnY5yFwezAfA/Ym89nj+TfB7kEJL5Lnf6OygpwTjnyaWDlNSpxbt3l+2QBxZdJp1NlXSH/ANWPwbI9TYJntsl4+MxduAJuNGEskLA0yvFGQyWUwqA9S4ElxZznnFIhuvoYEYtPMUVlcj5TGlQbSTPa4iJyqlCajJgFdHTLdTVDtWFwxabUHd/ccuGBzGl7R6CAP328qH7mhBwg05+Q5nSMryC0lMc5P7Rr5U0iRc2pX5MPcQo2/+uzWBYDxNCug+q+2AFwd48AjH7WqrT2n0I0eAYFZVD42IIscEElyHjigl1FBwDKtILFxsU46nlRZDfAFUMSxhYK9eYCLLAAnax01uIefByJY/qqXKKprvrcSzKO0wTxUVZmrAODWO7A/MPOYn393WcXl0TpLCIvj4ZLksnr7IOWUntEa9BogODm665QNp1Gv3rZU1JHjyTZXlVcA5x+Pfux5CUWZsiQgT+A8ZE75Q0/sCSU4sTIysbExm/pZl3mAU1tcjyzKxAzgHJtTkNbjen8liyvvTx9TbIVbjIBYE4wGz7wFYo1hzQ0si5eymDDPW85FViZ3LtJSN2VsMj/3EsmPlydUBoqlOjtgZJP9wIBlJCYoM7EXP+Qywr05oYkyJAUKUkAIuOb087vPHQJFs8ulVKqA+5QCbSMzOhnEMg+RlEb5jSCL0etAg79FCm4AcC03dl+A8pqB++pIAOGauwLgrnljc7Ne80b63An4EbZS398vV9vpdYmKaqMhoLEWi0b1B6epto4w8DHWtuTw58CIjfGM5WAmR0Rvlolq3jxR5/eJ6BdkeeWh17pNwsf84EY8ncCEWlKrNOxVG7i/+mVb/uMaMoXMVrRbLaAD4IBOp/kTJld4J2X6P1ETs/oYiqkEs3qZGZ2poMLS6sWXw5/H6kHN7QPZ5tZSV43JNe9vaJNLz0ZU+JYtrgVgDRmos/X5c2WJkYEbf9zOPa3rICZHRF8A4OXM/Coi+kkieicz/1aj6s8w87ce1cPbIqyTa4qoDW+Os2CE5aUfORVliXlR+UE0/+pL+IcDPgU9DQ/JTEO2Y7XPlGaJJwW2pL5t5Ee+5Q6BWWxymdldc7Ks6TqwTGLDCeYA2JBHAREdp0T9Xjqh04imkUUkyV7a8ZLDQ5TJQa4LYW4B18Lcrh1j60G4LywtlXVpiW6bO1zHDhGEbQzYxg59DNhyshZqQKyyOH3WHP0zJ2Pd/j0MtlH9oanfraqmdh4PTRALsrlLCyE5lMm9AcCPCzt7BMCrR+q9hoh+iYh+iA6abPQI2fVSeUEjxYO8BuapIyQfQcHeWuKZny+rPirvJfRqGVCym9Iml72UAAoG5dlcyeTcvmN0ZqODt72hWLS8t3qZwfWOIaotzvpk1/ULWXycZ3F+cMyWXa7tdCjj4uxZO/W1xd5q+9vSauhcuSs2uUcAvB/AWwA8AeCNI/XexMzvJKK/DuBrALzLHySiJ+R8PIwXHNiVE0rNvuacwlwOcR55OmeVGTkzm2XG9JZaKvVYvu5A2T5HBEj4i1ZLoEaOnWk7ldrKw9ARv+/Pp0hJ3WZKc4giMZOI9CEre9HZ5DsKCNRhy2k2q+sQgAg8TxtEojQTVgCej1dpAhikGex7CkBIQ5EHiugEFBKbI5u1S21tOi3h9ciXlQExgdI1shp8zR3uo8NzMU1RrXY4tcU9H69SvYrFPR83uObE4Laxw5YDtkVak1PdYl7Sw0rP0gAsZmArGFj9R6lm3SjPIfn9lCYKbrPBA4VBiHfEu/pRAG8D8FcAPATgY61KzPxO2XwXgC9tHH+SmR9l5kev8NCBXbnFUv9J9MRw4gdb/IV325N2O/8hND8uFzZSNO/CR2RtRveBIyJYyEUK0yBjaon9ZdakdrFsy8v1FKzuaxkcS6uWawaukc+Jro1r7jJjROlR9X3xWQ52H1ZvaJMbtU3VDI6rd1Ix7FaISH3+qDCfLCKggbvN5VzkUCb3bgBvZOYPEtH3A3iqrkBELwHwCmb+OQCPAvjNw7t5pqJ2tbmBuByhkV5lOyxzcI60MXKaHaMqDk7C2eqPiWvWlmbbKxmdtsFkLICZUgyftiusJDk603aMBCCgjxFEAVtidCGAYmJ1ibF1iEw2FPpzdGUz1tu9yJ9d9bACQOA0k32QYJC0Ts9KB+EcG7NOVdz0mEtw6xHMFqfM7Tm+Qs+E5+JVPh43eC5elQxOlvt9Zwzuuu+SGhwTq43yXCJ7JiceVrVvRrHLKQPT99JgczXTy3V4EmGaYSaHCgPn5FSYIwcxOWb+MICniegZAJ9m5g8R0YuJ6EdctU8B+GYiei+ALwHwj4/u7blLnGeDO8jDmg1gzl5TtaN/uSsG0GILo7FVKD8k3U91yni5YSiJ2waM0aVQi6FtzhwRUcMzNrjvDP09hwQ+yIxL1/dRMrtrOFYly7WrE5lwX0CrBrgEfJuszvKmADhlatuYGZyGxEQOhcPB338ZOlI958Z7ab2r0nkwfCfUOq/xDtP5CyHdCancnKgNV/fLieind9U7OE6Omd8K4K1u/5MA3uT2twAeP7T9G5EDbG4Ahna3XRI5GY10O6htLQJdRdG8ilplPZCLjyPOOavqKVVWxhBmQJz/6nJpp2N2HlZ5DIX9TpmF4DYJY0yhEGwuTY5pImRjchxBwmR6YtwH0MUIYINNiNkmB5KZsAJC4MziIhCJgABTFztOz8Hb5HQmLd32ovXy4w8GbEUcHATkOGQGx/eEsV01bHBp/XzscD9ucL/fGKMrhhniZLeKkcAxgCOcPY5AMS2IqLyrYpuryokBitwO+fGgGUdYW8RyAIfTMbk9ojZARAHAfwoMMgIHsgYDVzLIXz3U+SDOgRmVs5o6ovZ6cIOAFyxMRLYH7cIxAE7BvJ4RuDqDnNVKLdKumduSyrr6ETMxYgxg4vSxhzSLlaYBqdq65eSA2FCXHBKUgL5z3mgfDhIR0fEGvWYyIKbAX6QUMHBXTD5zjVIGWQwIxt5yqEgnAcBdwST9vjLSrajd3tkQ5T4jwwFcds6oajpgciPPu8mKXL1RFVTLIuc/bPWxI4Shf9BmyUuJ6Fm3/yQzPzlRvxW10QQ5AH8JwN8F8IO7OrGC3E3JlN1OPabdxI9HwY0cI+yEleloJOJ91Vk2PRvw9jgSwDLvbB0vF9M3SZHAQT6WSMIMpVwwhWO2d0FsUFsKIAE6AtCJV3VrNrkoYCdxcpETewMycy0YXWI9gdKcqAWL4/Eh1FU8sNm2ANh9TtPpqA1OvanJ20rG4Lbc4fl+g+fjRmxxmwRwCnQ7bXHIz1GBK5I9b2N2DuyKbW+za4Cj96KqScMAzh87VpRxzpOPMfOjYweJ6DEAj7min8eMqA0iehmAz2fmfzpHo1pBbh9phYPsk5i/j6jaWg2wkVRMAKDM8DSswxwQEhRMJXgVKmqh4uRt+/36j4sgE10lI7mmdyGWoSSMgBiTKt9TQC82wo0wuPuxwyYQ7seIyGm8uD44cBOc0hCSDG6MiG12QJAECJMPHp4Bcs6mpza3+7xBFDvcNXcGbgWDiwng1OGgamoJcJnRKcgZwBmLE7CLwyDgFrPzKugA0JD/SOVzcj0T91iWiqtbzLTH/BSc05KIHkeK2ngcwAsxErUB4D8A8O8S0WsAfDkR/efM/N+PXed2g9xcr+dBTVd2uda1IgOhoe56G92w4XI0Ei2DaqZqh5M/zu66xCwOXKp++MmOpiqr2e2sDeSPI+Y1IlI/ONuDOEofmJ3aKtH8lgEREAOjFzudTkbcy3PYCohdi9raUQZzU1MjcBW2AGA2uVScwO4e9biWnNcOjGsesrk8JJKyzQxuvduOHPCcy01VBheZcD9uxBmhMXHB1NQ6Lk4BLnmcg/tD4NY1c6s8q2PsrQmIKEGvADirW7G6JWTBpirZGbUBAMz8NiQwBBG9ZwrggNsOcucmatiikEAHyM4HZW67QFmN/gYMLigYDgAr1laHkFCEmRspMgD1BMqxDvYRgmDqqeFIEGATtsghUTGmgEgRfR9kEpeIbUyeR6IOG6SE+shpbtUoDSqji0y4Dh0eDte47tM6UEQfk8NB1dpr6hOoMTKbaxipeom/S9sufxbZ3had7e25eIXICnLBGFxyNCSHw3Wfgn81ZGTbB6emBsRe0rn6AO6zLU4dDiR/QFRVBecwEjvmAU7B0S9R3pvW6WGghshis1Pw4wVj5k6Xl8rMHxbP6jMAfoKZPwQARPRiAN/LzG86pN0V5JaWQ9TXBriluDT3I02ljXPL4mSj48zmUB1z7M4cDtpOBYZqyxvEzKnKbCxO9iOBg6iuIX3wPWBqay/30wmTU0dE8IwOSM4IdGmCaY7peADqCWkSk2NTVesRgOvBLRXczNGg4SuqngpT6xGw5W7A4HTAAPOmippqITPqcOBks8zxiN4OJ8/ZnjkN7G2lTW7Eq+reaS2jQcRLyemY3CBqQ8o+CRe5UR17/a42V5BryOQIwbvStNoNAjHsPk9DRsYYXQQQ2ECGKoCh4EJJROWlNKQuQMn7SQJEhU1OnBoUs8MCSPhFOvCadCcxBgJJDDSCoGwvGQ4yHDm20gaLTY2RnBGcmJwC0CZGxI6wpRTgu6EO29DLkEsR1+I5veINAhhXwuACbZLjQedunfjyfIwdAAM2dT4oc+sRTD3V9XP9FbYxlW9jwHXscN13uI4B97cdogQBx0jo+6SmRmVvvSwRoJ7SItteVR1bPKPLYSXsmByMxQ2S8g1QeWinO0YY5my6FFlBbklx4LR3LN1Um2M2PA0fMTWFJud88LY4CytRuxpV7A3lB6Mjk5ht0D4oFzdHbOf74OCeCYjiiAgxhZSEmJmcrTtzQARRTdOYcTKaidxHBCFwkCHQRY2deIQe3ACY3c2DXA8ZSURCRK41TEQYnHpSlcH5tDW7X2F19gzF2UDO0VMk4NfsDeW+eUw9QA2YHLvyrJaSi7cs1NZFZAW5y5I5cXC76tQq6pjKampkYnYckO1yOuxSdL/4KoYuORbUHkeJRUVOXWMd1JIkcFTbAhTBmNIxc1RUdjaOEBYo/RWHoDEKpJASImEjzOkeHFgyEsWLXQTQIQZRJYOorMJmQwyIHaHn5GndcAK9e13AhiK2HBDA2HYdAtgY3fO0MRU1kHpYpz/eaCCXh3jywJayLjpniyPcl8T7+zKEkq6vY8C279BHMga33XaW2saRwNtgnueUWKtMTlhX1LWUccnc6u28cF5ztsnZWpfILkRIfncO9I6WE6qrp5DbD3I36WFtHRfnwMH9sR8n7Xduzf4ce2BXVjOHlqMCbpsiBNiQY+asUac+mydXWY/M6VAzOsBAKgTGVlX2mOLiQkweVI2bu0IPnRAnjRqcRwZW6WSU4fwo0nOwVDIHcNeSprWVVK2t2t0E/PqY0sWUkWrAbx4rToCNNVykeq7K5sSjmlXKIaMrt/OL8g4H/z4B94fKwKz8GSzP4jC4xrnL7Qe5OdJgaktkPuzfDwExVTPqiW26bPRXVkfEgi/SX/GyEiMNw0FCsSjb4uzDoASe4qSUcmebcxMhqPeOtH/CHiUgL+Fbx8A2CNCluRVYwCbKfShG94HAHaEToOg4gV4XOmxCxL2wlSGbknPhKvQIYARKdriOWPbjAORqUZDT4GOdl8GATYZK0pCRyMLSkNY+XGTbp21jcJwcDhyRPanbdM+0TfthC2ePQ7Eu7G2xPFZuc1mf3TsR21t2VLCwO2H6DEzq8/uIAvQFyQpyNyET8XIcBDh8KImzeQy8rESD7IciZs45IArTibEDNyYc9KNwdiT9aFT9dCxjwOyQjytrYc1DJVigcAyEEBMYEEkAcAzo1ZmhfXQBwcAGGxlvLoCN2aUsB0JUsBOb5NQoJEAGNgAGbgp0te0tFozOB/vKcE0SKsKMKjdVFqCIiRt4RjmP82eAVYSJcGl7c9u1c6EMDJYluvNOIEuSwpuQFeQOEedhNZV1n2GXXLyc7VuAbbbBNdtydXP2gzA7VWkF6NJHJ6BJnDx9UBWbJVXLMTv54KIwPCZ3eeegSN7VhHJEiaFE7T4AIUzpG+uAiJDAL3UUQAoniUzoAqEPAdsQsQkRfYigyLgXetynxOoCMTbUC4uTxbE6oB0jB8BG7tXwD0ByZ4EMbAJu7MDtuk/+2muxv217seP1AX0fxAaXAC6qDW4rqulWVFGzw2UWF8zbioLFmQ2u5yGzi1xsqx2OmOU8ZWycHQ7K6Bi2vZis3tUzlBPa5Ual5XzYK5SkAjsrHwJamuhg6IBIbIoNmGrbj8940I+oDi9Jngik7IeuqqvaqlOBWYBPHRZAOp8BRMlpzalfSjYk7EQu3VEavSSQhMQQJzYoYAc5lpbSrtd8nG64pfQYSxank+uYmmrMLgf6+pxU1uyG3m7MPKnGpGo7XCssZMDg8rP3x/MxNvZmDFF+F9nJ4Nrxv58FQe4ksXcnlLsBcqeQqTzWuaEkc7ysdeqYBzdlRxoOEjnF0VkdCOtDVnFjZZsjZNuf/xjFjqcgx5S1SQ6JnSAg2f0CEkuU/olV0ACURXWNiHI7ndgDkUCjI/SR0QVCFwK6kIY8JyAxO2L0nLyo96krGB3gHBdVWpdNBI0MbgCMtdkowWJzY8DyT7eStaB1+15ArncjjJgNThici4kzJqd2NfWmNrymLWZXxMWN2OIyo4MzR2QWZ15VU18XQCcPoBciK8hNyNHOBwGtgZd110jAdeiI2O4M/NQBoUn6ElZCmpqFrLKyDyUxj56CXTpHPXO1+qogq2orQ25fPsysviK3jwroAlJgcECK36MUMExEwBbWxxCixJxJClcIZfCwzB1BlcoKwACzdkDUQ5Ir2FkurQBaC9z8mHAGbpzBjTXY1yfea6B0BDQJX5+VhYtUzoYcKsINkPMAV4WNyO+iALgqbEQdDrQok5P7vSBZQU7lCO/pEoG/hW1vLJfVhwM4B4RY2AAMVVkKXKpR4PRxdpr9IOAWsrpax8mRqqyAaZYcpTymq9vjixXQaQxdDwNMWyOIXTF5YZkz4KXn4dXVbHvzLG4M4LzY7FnsJn6Wcg0F0YlnNNC3V7Dr00OIzsHAfRBQG2dwcAAWxDbXzGBwwDRgeJW66gEuD6Sgdjg0bXH5Icz4Ec6VlcndLlk0lKT2sqoDQu10Ew4Is5c5VZbgfscGiqEZHMwKVMrmeoefstaQErhyKwMK5lY6JFLMGgekX5RndEoiA6fQCmIwkn4eBSlDl1TtGCJCYBAFUVOBEKKMSReFxcHYnPZ5bgiJn2QnaXLlZDs6isoA3BiZvXkGF5E801syNdIn4IdtZnCDQF8fJhIZYaCuVixOt7Utz9YYyWHhWFyhti7ueFiuqZuQuwNyp3A+zLTLzT53qo63x9VACBjDIsbANmdxc7ZkVdeGYYokTCzb57LdrmaDWg7LktB4vILRCfgkBwVJKAwlVifpZ0QAk2xLtgQFBqCjmKQ1ywCcqrIq4KVLlx9wEM+tSp4PVl+Rjkri0rOiX0sdpszefIiIG1WkZGclg/PPrJXJoABWPGtTP0v2llmd95hq3czwqWZvXlVdzCZ3R9RVmWjiGwC8nZl/+NA6ZyVLq6zpa8l2OWNnjetozBww6oAw25wZkyMIQVTKEdtcD5AMm2TdoqQCFiEllG1yoWexYRU3k3/ciq+qypph2zE6mdqeAiyKBQmzZBindG9MyP0OnNTnAEQFM3GuJIanSwY2W0+9G3sdjQl3dDtSWSZAxr2MC9c3wM0n3zvgajG4INu6NkeDpnXJOvScAU3CSXKZqKkaMqIAWLE4iixlnH8rC9rlLs27etAX7SecAPA6IvrCQ+rcuJwiirE1Tlc9a9fULF7pixo/ZnV4WF7VHfxF12qOIRThBo41jG17m1FxjrMZ6TUsZEK3kevoMbg1HPPRaQ45ptCMYmw2Mf4nD2ewWLWiLOZwEAsLsdCP8pzCoeBCQtgzt97Z3hrsDY7FDe1sDQanz9bb4Ao2NnwHFjoCx/JExlhcAUBmu1sO4IDhb2F0ORM5lMnNmXBin0kpzlrm2uX2ymWtY+ZkTtZiME2LsyMDuhzLxqXjQX9UEtJBPQubSqdD4980QFiZGIuvgCgxOEIK8GVO3khpN8hziJIGFoFizZ3cAuv9ARq7x+p8kOdjowt3iRLaFI3C5ECwgQA0TIZkv5f7NRXVfdWtR59tltkux7LP8jEmD7Tsa6CrxsBxCczFiL7qaHD7xABtUZUPmVzQoN+C0eWgXzseGbTNx8AsDK8KBpbnDRYWF6P7Y8ftP8Z3RA5NxnwEwH3kCSc+55A6RPQEET1LRM9e4/kDu7KwjLGqJWXsB7dPec3yoiuL7ryazUl5GTAKY35lgOowyNSHOtR2pNzWkAGSsSBnx/KLAXBeuNpWlmVsjGV4I1uoWBILTEs0J0LZFjeuVQT3RiTngtrYKrZG9bMYsLqKyblnXdrf3POvWbPznhbvzdRQ/64mwGxBdXXOci5yKJP7KHZPOLGzjkxP9iQAvIheckaPZSiTbG6OA2IyAwKZhthwTFyeI6wNQGZzMUKSOy1ejigmdhQlFi1wdg6YkLAqINvRyNnZGHYGMwLIsDSRyCGjY059MkYXAB2gk9W726XbZLH9cYQFCieDlNwX5eehzA7kPMRil0u34n42LRLtf1XG3rJtsZwmMG9nlTN7TrW88HRymaplAK/7AnyewandLp2b20rXKVO4vDdVPajK4jQJ3wJ/YxQQjsb4zFSylMrq2e6FyKFM7t0AfpeZPwjg6wH8yoF1bp3wjh/S6HFnm5uuM95+c1id6FQWs9sIWOpf/oox5A+pZG+Fl68ZvJoZXGmnohIchBnarFW9UwP7PPFyZne6lu0+B+Ry7xhc31i0jp9vQdpA79rW0Jroru/6h6Lc3y9lEGqxW1/OXO3r8dI2p8xu0pvqWJwxc/8b8AqJqrFLCc9czkQOYnKtCSfqySbGJqV44DInlOQQL+sebO5g25wwpIFtrtdfOBU2OU6EKf3eSOZ06LkkPMqaJESFSGxxAelM+fgDnMeVShtdESjMqY8U3HfGeolkm+OO7ZJMMpQ6wdbGbIXdAZQT/OtnXMf2tUQ/OB/6YICRnQRAZnBFWIgD5ia4GaNDxco8k2PbNm8rO8+psjS1zW0F/PQPyog31UAwxsTc1CbnbXELOx7OSRWdIweHkNQTTrQmm2hNSnEWMgfoZrXTBsOjMyB2xdApE4tIsWeDqRBRcHRlAsxI4SURhn6k/S1i6lhUSOS/yhEANNwkgxKZE0PqO00wQIBY1VLSrlL+UkztRKokk1kbuHG6ASoQW+9bznHl7edVrsvhyFMbmVXp2oFbg5mWgJefUctGN4x1020X5OtBq8+sT4Fq6JF1amrL8+7Ye/69LIROdwXkbr3MGUjzWPFgVueztuLmgAxgPiNCzwdbYK7a5Bgh2cJkAExLzncT1FAPyy21+Lmg4MlKBTOjU/sd57Ezja7ppn5bnA+xEEN00n9Giu+TkEBWO56AYQLSxNSyPU5xrQGUY1IxuaHTBWZnGqqSuqYBmzP1cpTJZfvaKIMTtdPb4Hw8nLWhNjYDLgyZm9rkGiyOllRZV5C73bKUA2I0OJj1S5Khh7Se5rTadR2bU7XVA19MQEXM4B4WTqK9syHMJRuCoxjzVU1kBRHKw48o0KgzQhvTvwUCSDXAQZpJHc7Ne7CTzuRrCMCrkyKfzwaAqNXUGux4uG2qVsXglNUWGR0NcPNszDsgCueEqpy12sqZ1Q33h+vSPidg5Ridt7MOYuJqNXVhz+olyQpyJ5ICxKY8rQqMLdtcK6cVKNVRzYSg8sdcjk4iTbAMx2Tn6OCaqR0EgJEAkgJbRgS8bmtqKedtByDMeY6HbPcyEmWMzYMdBSR2GJG9qR5UldlpA3lVZhjVX1+VflQCHCxY2TM3Y2cD21xZr2BzNcjFzODKpSxXBgd3rqm8xgQ5MzuWc/qYnUbmgCgdTAM1dUnHw4V5V+8uyN2AA2JWcPDAnsbzQ0qUwcGt1e5SBwnHhBwUAtBHcBcS0OnHTpCRQrRzqqpSCtplys4Im69BQkkI5pDI7C2do4HCNYMj5PKsggM24KY6I1zoiPbTsMuVWUHzQZfbA7BrsToPbqiYWw1uts8V2FUAVwAiOyBrMDgPcOpo0NARB3DN1K2Wmro6Hu6oHOiAWGRkkhabG/RNNyfAkh0z82qrgZ5TW11ua+2ImGR0GsemqqMko7JzPKhDoupcRiFJAR2OfAJzTgAw+1xWXcmppxCEQHmtuTY57ZKBHA0YXL3ddDwo4/LbFvJR1fUMzoNY1a5ncIUn1TO4GsCm1FT/+1iSxdXP8wLkboPcHBnzoE45IfYYnSTb3DgNwwQ4NTXvTzohRMzbyow6SFhZnNrnzBGhGqdndFvXLlNmZY65MacgY+5InKLl6MLsAntjpyEv6WJchYx4FVY9v9ov2ybdpoq9Vdst4eG2BzR9dlYOYMDkKuCq7WsDBqeA1lBPC+BzyfdNFVXDR7zjYY6jode/Gu7YEuL/SFyIrCC3lMwJJ5mTBTFH6pm9PHvz2xEwtbWyz6V2BGhqRseA2tRsTDp2IxGLp7UAR2EgmeHJ/eu2VPIgZcxONePg9snVUVYHdwx5vWvkn0I9dWvvZS3ATZ8Nj+w7ACvYGOc6xTwMysRi+9gYgysYW83gvIzY4pqhJUvICnIXJgeqrO22HNDNtc3FCA7BsTlnizP8iyWbK9TR8islCSXhTk7uIxAos7jAsOGZAPvBDhidfpzqhXXeViJO6VtECHICB0nhUoZnjoSaueXQGM/sTCU1xlauC0CrwG3u26vBbqCeogQ13fcq6UBlLYCvBLAULlKpqs45keoIU7NzHYOTfc/gUv+VrWl5ydoKO5w/tpDYM7oQWUFujhyisu5sswTXgdo6YuMbZEJ45lYPpjmxvQ+jY7W7QfonoEbC8ljbVK9bAHTwTfsgPHOTfQhoQD0IDthIR03xYKfnV0zOpPUq3LfdYnRT4GZrHge4ksFxcY6GfNgxrtpS9ubKCgeCHC9usXY02H1W22OM7g7KCnLAPDa3lKdVE6bnJu8Dwujy/iz7XB8TU4oxIUQXQLKdphacz+hyIC8nTy+RTSITN3pcRv5lQAN687BJifWZ3U1DAnWfynoeyKxuS1315SjL4e7JDk+A3NDxwEVZEfwbUR3joSpb72sWg2N1uxhcVl/1WCwZnKqx8puiPpYA5xnd1JiG+8qFYeYKckfKknNA7EwHG2vbwJJzuIl6XLuG+hvJtv0E1WOMztvgzE4nnlaysJP8h4Jt6HX5HhiJ9al3FgKmMbM2hoCCAp7Gw+k9OpDzwDZ4XLrf+hCVtY2AXBPcBmzNb5fsrnAu+ON93S7PYnCjoSIq3pN6U2zNP7MLkRXkTiFzbHO7kveBrLb62LnWXK1A/trFBocYE9ApowvB2J4xOvliRhkd62xZ0h9nA0s2OalP6QSz1UWdBQzC6NT2lhpXxqaAlW2NmbnBxcdpfwrvquvPYLt4F+1tP3Jy4YCIua4HuoHaWjE1PbcJbqbacjFcUqrjmJu27xicZ22kNrkY255UP6ySt8UJA1xMVpC7UDlCZd1pm2uFlMzul7tmy44HYGCLqxidnQuUaq0yuspGl9gZ54DhAMtvBQSg9J4FK8z72iMFDxfpWI1na/FukgamdQU0fdhIqp8WAk+rqJPPMl96sO+ZG4Zgl0HIl5Xn5xxTrVOyt2JGLTtepWpVDC71od527K1mcvVxAb5dQ4DtJSvI3XKZq44eGlICDL2tdYrXLvtcupCtqXfeVmDI6CobXcpIoMwKAVikimxDnRAhgZ15Xz2rU6+p2OuU2YFJvKuwjAZSljZgbnL5atvkAJDbpbYWoFMBWwFasaxbeE7h1Fc/NJLEvKmnNDM6l6o1k8ENPKktO5wHtwVi5Ujv64JkBTkvc9jc2KktNneI2mpd4XGgq9ounBp+li+X92oZESo1owNgcXQaahJCui8omFIaj86zq0j5QxJmBjXgeR3Ycl6F9RGgE0/biCNeRXU5qjW4FU6IfWQXk0MFbHBszdY18LEFVhfJ97pvTggFM3bX5KKOhokUOajeVrcvwOltenZ3rPg/CCeQuTP8EdF/AuAvAfj/AHwjM//RWN0V5A6RBdTWg8eca9jnMsPDtMc1ogl0JPa7EtwIgAyhrqSwViHFO1qolBb6QTJcE4bMLiiT44yFNAQ8u6a0XTgjasDbIcWH6QFN9pteVjhWNmBzQ3ArVNvYYG/K7BgoshgADLIXWl7UfQGOOQPcknOXnAjk/Ax/RPSTRPROZh5MfkVEDwP4WgBfBSAw83aq3RXkapnL5o7wog7EszndB8ACVhSR2VztiAAAx9IKRgc0QktEdWVOdXoGZH8IbpTVV7HTIVAGHm1bgM1ilFtgB2RE6sr9dCl2AEd22LM3MhevY3f+OdavrfExNllcva9ApM9ejg+HLx9nboXaqs4FAbdU1lBPgSbYHQ1wS8vpmNzcGf7+JIA/AvCzSNMqvGWq0RXkFpadISW71NYx8WprPfYcMGR0dhwl0InqCiAPz+SyJghIQKdTAQI531UICwUUowvrBNYMadscIXpdfR7at2pf1VNjhVwxREIBYG53LpOT2yu7UZRxyeAcY9NzanArmBucKlp4SuGASctK9VSvr+rpQQDnRQHO9pf1ru6hrr6UiJ51+0/K5FWpHaLHADzmjv88gPcjz/D3xpF2PxdpcqyvBvD3iOgVzPz+sU6sINeSI9ncwUBXX78eYLO2zwHjjM4HHQMZ6LRtH14i6qqlgHkWF9K1WVCSfP91flUFO0ptU0g5qimUhTOT05g9z5JEDTX1NLgyuyA37XBcYd8uaaus9X7JzgpQs31UaieGzA1wgNQANwU0fU92ju5Xgb3AMFQklsfV0VAwOA9wC9rlZsrHmPnR0WaYnwLwlO4T0ePYPQsgAPwBgPcycySi9wL4YiRwbMpC+tYtlAX/8s0WH5Veq65TP1RmDGwuNaOrVRd2H2JdR1lDYUcqDeLEEK+hspph8GqeOg+uvtio1I4Vy33qYUOAlwuKxUI2WsvIseIcz8z8dfphubE211fquRgLjqpnNAvgiudZORyq31/xnvR34Ot4gLN3fBqAG33u9fPeX+bO8PdrSKotAHwpgH8x1ehBTG4PD8jvA/hN2f0uZv61Q6531rIPmwMw29vqpcnoWmpqGVpiQEWU2+x1PzM4ZQhmq1ODmmd1MUqyfmKBfj8PdClGNGLYGHSO2amvJNvZ2Gx8AIaeVKsnebJwZa0/z3NscnF43Kukuh6osQMHhAcwbbsEFH2uo7Y3YLC/Uz2t67gwkUkGdwGOh7EZ/hozAf4/RPSrRPTLAH6dmX99qt29QW6uB0TkZ5j5W/e9xm2Ro72tc9VmHy6CNugW4SV6jgYMAxhN8vf9iEjzMjT2UxoYS4pW0l8TNCXA0/QwEludqqMaooKQ6mo+A+t/BDsH0LZRTMQzS6oPswVsqTzfcwvc7FwPcJ7FurZ9W8rebB9o7E8AnIpncGP5qB7QTuB4OGUISWuGv5GZAL8PwPfNafMQJjfXAwIAryGiXwLwPgDfzVXYNRE9gWRgxMN4wQFdObF4AJist4endY59biyJHyg9rsB8RtcaCMAH+zJnlqaMzLk37QkwJYDi3uqweFBJLmhZCS1mJ8/T2J00zlGu4UJHfJZIKxB4H6eDa9o1UIHRGKABA9ZWAJvWbTC3oSNB6voUrDFwg2+nKpvL4LRsSbA7IcidQnZ+mUT0GBG9RxcALwNwH9kD8jkTp7+JmV+NBKZfUx9k5ieZ+VFmfvQKDx12B+ciI+oAN21o46pDM/1mrn2wsK/FsszqVJ622rYzpiK57XIGdx58/J4F5QR0sccpAKjdTlmRryv1SMZa8+f6vpl9TI+NLZHHz9Px3MxeqNdv9M15Sj3AZXvcDoCDa1efVcXWirlRPcD5sjrQ13YaDG5JNRWw9zNrORPZyeSO8ICAmd8pm+8C8ApZ315ZOrd1Ylgmto9C6npGB+ThmaRswOi0XVU7xQZnzE1sdwWrc1J4YMGgTtohx+w0x1Vtdp6OKbsDBgwPQA781cv2PD4yydwvqqpWjLDLVVnN2GS7CCvxYKfHI0oQGwG7AbjVw5W36nn2h5kMzu0vkb9KOK26ego5xLs6ywNCRC8hotfJ7qMYV2nPXxb4cQzbrP7Cur/Woz/GXbaYsfqufa5tPDv2B3ahWLKPllfQWI/Pv9TzzOOa28njr3E6J8J5L53n1RhYbqP2gLaWsfMGx/qy3wUD1Prs7wPFfQ/ArKmuVuxthC3bs67L7DXxEMzcez4FwKnsZM58XkC4t01urgcEwKcAfDMRfQ+A3wHw/ct0+QGJMqmd9fZgc4cECh/J6AAMh2lSpqg2uDqeTpgeO6bnPbAAQPL30mLrAGezS2dkBuRsdYC04W10Um4ssypriDLAprT+Jngg52FZwewKW50DpOjqFH8IGuV1qI5XT2uga9nfZLsIJeKS2d0EwKUGl23u1HJQCMkcD4jkkz1+RN8uV24Y6Hb3R+rXSf12zaptA8yymSL3VQOIDUAkHAUAepjKaioykaSMoSwHAMVXBU2W8/XjdHjY8qYypWuOSZNV1B++BzWgBDZfvwVuY+W1yqn1lMm6/dG6tYPB9a3o1y6AW0cGXmWWzGVzU03sss8NLrkgo/NJ/ciANWB1KhElq3Ptc8X2arseCTNMdjTONjoASu3MzOeZX2QBy2rcOHtm8vG697DvGylscQ4wyowILtdjwCbH2uVDljYJbr58l/2tvo4vPzHAnZMqOkdWkNtXjlRb06EZgcLAcYzOYuekH5EdMxtRX1tteVY3UGEbYOeDjR2LS+xO2xJAngC94jgwZA8HfmljYSSDbQ9q/ljN2AbHGmDXAjdff9DGiHoKYI6DIZ1aAdySKusKcquYLDhSyd6Mrs51NaCjeeorMA52TppgBziwy+WafVGorb4tPV/VXf2atA2rSMexifqDd0RnAFx+uwVuY2qmWzfj3sbOmVJPZ4aDnITBOVkHzbwLYraiEzgigEUYXTOpH0ARNDylvuo1gAbYcVYfLdlfAMyDnaisVs+zO22LstMhXYtzHwb17EGl//c0HQwmZQb2Z3J+e4ydoQFsum4xN2A3e2ted8LBcAoGJ7Kqq6sMZcF5W2cBHdAevUT7Unhegab66tO7muowyqGdpH7B7GpRdudBUsT2eg9eTsVu/GGhRllTxj70BqgN2m7Z2erzx9RSXU+BYsv2VtSdB3CFtBjcUqyOsaqrd0rm2uemmliC0QFlwLCWNx0SlfoKNMGOzdPZCCBWaYGWOiiqPCyujjfztCwcBXuyuP2+ugGjG2NzwDjzcttNYNP1DOaWVoeDW1M9bbG6pWQFuVWaso8jYk5zHujKAwOgK6S2002J1N1prwNKZkfDdZpjoiofXM9t7+jaUX9adqmtU2zNbU+Cm2/nJgBu9F6WBTjCqq7ePdmHze0LdMcwOqBQXy2xX9VXYCRwGIAm37tjs+x1vbuu6+cYu0vtunueyr4fe8Zz/zi01DpgCHgj+4Oc0tZ6qs6+wNY6NgZuLftbBW6LZjyMPcszlRXklpCFgO6wS48wupF+tYd0qtXXhgfWszrPxGqwK2x5XNrtaiE3FPtUvTHxgD1H5tjmqv1JcPPbxwBcSyY8qk2Am5DF51y9LIxbQW4xWQDodMSSQxgdoCytAp2GvWYwXBOQWR0w7pjoUx/Y2eAGzE6vrc+jYHdlv0snwjRz4ynGdqjjAQ1WMtdeNwfUXFk7W2EB9jY4/3QMTmVVV++y3DSj815TNNTXHSlfZX0eqn51XJ3vt2N2gAO7FtBS1Ubt8KhtdI39MRVpHwY4qmbtsmvtY69rqI6zAK51bEmAW1LFXEHujstNMjpgN9ABo3a6ZvAwsIPVATWzA7LNDq3rt/oADG14wFC9HXNSqJ2v3/OLm6uyTjG8HYAzCi5zmFt1ziLsbWEb2srkVjmtM6IlU0AHtOPptBwoY+rq9qbsdSPHJ9mdXA/+WPHBVvc2Rkb3ecb+nDHZR20FDgM3387Y8X0BrpJTA1y6yPJNnlJWkDsHOdbrCkzb6YBxVueOtT2wVH2EE8zOH8cIu/N9UfGgV4NXi+3lyo2yPWWXqgoM+9tSRYHdwDZV5xBwu2EGly6CNa1rFZF9mcYhjK51zr6sDhgPIK7BTq8JOLCr1ckdgIdGjFvLQ1jbE+u+LiEtgGv1pao3C9jq844Bt0FbB4DbQsOgr3Fyq5RyiEo11tSRQAeMsLq6nzvtdSNgp8c8GHnG6T/mOsm/dcNjoRFzxs+bI6MzXQ2/4J0gMoe11fUOAbfG8ZsEuNE+nbmsIHdq2dc+B0wyunR4f/U1dWVEbZxQYT3YAXXYyTiQjaqzQAmMQBGS4jrbjv/rq9ExZz/b3R9mM9xiDmhMAc3E9ICLgtvcvi4gK5NbZSgLqq7p8ILq666+VqEokw4KoB3LN/CWVh9eDZBy3liMVznO3P5f3GTs2GiYyR7A1qo/lYp1CezN2sXqeFhlRG4S6IDDnBJAyepSpcHxUWYHlOEnwIC1ocXaWpMw2OTRjRCbXV9Z2DMTwhqer8LuA2qpieOArd3GTEBeWC7N8bC3gYOINkT0nUT00Rl13yyT3rz5sO7dMtmXdez4sTbndJ2Sxod30MdXzfs5MMTX6loLAOqgWl1q0fNb7YzJnOdSt9tiaq0+zb2/oqnjmdvszIWJ+X/3/r2MCMV5y7nIIUxuA+AZAB+YqkREXwDg5cz8KiL6SSJ6JzNf7rSES8khjA5Yxk4HjNrqgD2YXaNO/RHuZHhAg+UBqFO/BodPZ5NLfZqo1wKQRv2doNbqzxzmNtW/fSY3P0YYt9/xwMzPAXiaaKf58Q0AfpyIXgngEQCvRjX3KhE9AeAJAHgYL9i3K5crBwWyLminAwa2utSthr2uTg9rhXI0UsiGTo4GePkPcwyMVUZBb4EPbl9gGzmnDUo7WFurzmhbD0Y9reXWOR6I6DEAj7min2LmH57R9iMA3g/gLUhA9sa6AjM/CeBJAHgRveTCHt2RciKgAyZYXTqYtydYHTDB7FLF8hqNAN/WhzqqxrSYnheXQraYzAGHsZzZMXCdw9pG6o23uT+4Lc7gisZP1/QpZCfIMfNTAJ46oO2PAngb0tyrLwTwsQPauN1yAqBLVSbSwcY8sMB8Zge0g3XHwlOqNgE02vXhJxN9vwmZAIijwW2k7l4At7Stdg9Zg4FLeTeANzLzB4no+3EYUN5+OSSSf4edLlUZYXVT589ldsA8dld7Zl39KUP6ORitp8NM9vDCTtRfkrmlwzeAPswXN2jmYvyfiF5MRD+i+8z8YSTb3TMAPs3MH1rqWrdSDrEtzWA2kz/8KXvTiM1p1O40xmSm6k98/PVySpl1vak+77rPkWs25UDVdCfA7eOd3iU8czkTOZjJMfPrq/1PAnhTVfZWAG899Bp3Tg5VX4HjWV2rjQk11k6Zk3jf+qBb9r5aqiDkG5E5cyIcwPIOCkAGlrG7Lazmr+rqKsfJofmux9rqptqYsJeN2tiAcftdOrHcnzp/SvbJZT1kUpc54DrR7inALR1+MAAHxmGB1g9QVpA7Rzkx0AEjrE7bSBXax/dld8A4wysbaF9v13NYbD7RPT7cHdc8GNiA8wW3ou3TNX0KWUHuXOUYoAOWA7uxtmawOzt9F+hZO3uA303JEhPFzM3AmDx8BuAmcmnq6sKBR6ssKmMG7VnnzvuxL2K0HnFU2OlzHQjeuD9htD+JtK69Qw3deU87nktqaLdD4JwADgAo8qzloLZnpoIS0X9JRL9IRP8zEU2StRXkLkEOBbs9cj4V7HZ6Y6fa04964uNueTJ3hmvcxDJ2y/v0d8b9z83FnfU+6jZvQuZ6Vg/4ufpUUACvI6IvHKl3D8CrmPk1AP45gEen2l3V1bsie8wONmtuiTlq8Yj9rtncLhX3huQgL+6CTGuvWLcbTucCNBh4dh9fSkTPuv0nJctpTHamggIAM98nontE9AoAfwLAP5vqxApylySHBA4X58+z16WqzpGwyyPrZZf9zstEuzcWMrKP7KuC7QFC5w5uhcy//MeYeZRlNVJGfx47UkGd/BKAHwDw2wA+OdWJVV29RDkWAPb8SPb+APcZEmmXeveg5ZD+7fEM9h4C6UEDHBKTm7PsEmZ+iplfrwuAjyClgv4VAA9hJBWUiP5tAC9i5jcA+D8B/EdT11mZ3KXKUqwO2JvZpVNmqrPlSdPn7POxz5mq8dhr7JIDAOeg1KslgG0pZnzabIa5qaAvA7CV7Y8DeMlUoyuTu3RZ4sd74Me69we7pIG8ZoFzlyXkwPu4eIBLjZ3MuzqWClqnjAL4aQD/KhG9F8DXAfixqXZXJncbpDWo5d5t7Mfs8ml7Mrz6Wi1ZekilQ2QBcDk4YX6xHNMTUa4T2ktbqaB1yigzbwH8hbltriC3ylD2cFAMT90RZLzP9b2cCvgWtnEdPRLI2QPceYwSs4+sIHfbZAlWZ20dxu7SqcOPbHHge8CyyNBGS97XTXmkz9HzPSEryN1mOTQ1rNnW4ewuN3GAantmstiYbYsnzt8g8FwWxq0gd+vlWC/soL3D2d2wqfbXcg7gd5IBKE/BRh8Aq6KbTLdbQFaQuyuyNNgBiwJe2ex+H+4uULyREXPHL36idh/QPTH2CQY+C1lB7q7JKcAOOBngzbv0melPJx3m6MHeK2FeoO85yQpyd1WWdFAM2h75yM8hNGRpuQmHyLmByrn1Z4esILfK6djd4DrHOy/OQm7S03uOgHKOfZqQvX9tRLQhou8koo/OqPv7RPQLsrzysC6ucmOiQzqd+kdcDzfUWh6UnEPfbuo9HCJqk5uznIkcwuQ2AJ4B8IEZdX+Gmb/1gGus8qBlyfCTg65/AwHB5xZ7d46g1pBb711l5ueQ8svmvJHXENEvAXgfgO/msxw/Z5VRmTPZzE3KuYHSEnJxn8SZMswJ2fmnkYgeI6L3uGVyWOJK3sTMr0YC069ptP0EET1LRM9e4/k9ml3lgciF/bjPWs5VHd0ljFKdnlrORHYyOWZ+CuNDnuw6952y+S4Ar5C1P/4kgCcB4EX0kvN5KquMy9Qcqqu05Yw++EXkwgj1ydxcRPQSInqd7D6KxjDGq9wSObO/3Gcjt/S5LDVo5k3JYiDXGPPpUwC+WcZ8+hIA/3ipa61ypnLGKsvJ5S7d+21TV8dEhiv2+5/EcMynxw9tf5VbIufmvFhSzuhDvjFhBvrL0lfXYOBVblbGgOFcwe8uAtkuubBnsoLcKuchcz6cxdPPLutjPRu5sOe2gtwqlyMX9nHdSmGc78xqI7KC3CqrrLKH8MUFZa8gt8oqq8wXxup4WGWVVW65XJjZYAW5VVZZZT9ZQW6VVVa5vXJegb5zZAW5VVZZZb4wgNs+1NIqq6xyx2VlcqusssrtlTWta5VVVrnNwgCvcXKrrLLKrZY142GVVVa51bLa5FZZZZVbK8yrd3WVVVa55bIyuVVWWeX2CoP7/kF3Yi9ZQW6VVVaZL+tQS6usssqtlwsLITloIhsi+lEiei8R/Z0d9d5MRE/vOVfrKquscqbCADjyrGVfIaINEX0nEX10Rt3Z2LI3yBHRCwG8g5n/DICPENGrR+p9AYCXM/OrALyOiL5w32utssoqZyYsg2bOWfaXDYBnAHxgqtK+2LI3yDHzHzDzL8ruJwA8P1L1DQB+nIheCeARAE0wXGWVVS5LuO9nLXu3y/wcMz+NRBinZC9s2WmTI6LHADzmin6KmX+YiL4IwFcw8w+OnPoIgPcDeAuAJwC8sdH2E3IMAJ5/D7/jg7v6c6HyUgAfe9CdOIGs93V58sXHnPxp/MuffQ+/46Uzqz9MRM+6/SeZ+UndGcOWGe3uxBYvxAfEvBDR5wF4G4BvYeZPjdR5HGne1ccBvBDAlzHz35po81lmfnTvzlyA3NZ7W+/r8uQS7o2I3lPP61wd3wtbDnI8APghAN8+BnAi7wbwu8z8QQBfD+BXDrzWKqussoqXvbDlEMfDVwJ4LYC3E9EvENHXSfmLiehHtB4zfxjA00T0DIBPM/OH9r3WKqusssqx2HKQunoKIaInvL5+m+S23tt6X5cnt/nexuRsQG6VVVZZ5RRyqE1ulVVWWeUiZAW5VVZZ5VbLWYHc3HSxS5J9UlUuSW5ryt5tfV/A7fy+5sjZgNzcdLELlFmpKpcktzxl79a9L+BWf1875WxAbo90sYuSPVJVLklubcreLX1ft/b7miMPDOSI6DEieo9b3izlmi72vgfVt2Nk7L5umTwC4D5yWs3nPNjurDJXLv37OkQe2HhyzPwUgKd8maSL/QCAb3kgnVpAWvd1C+WjSGl9mlZzW/M8b5Xchu/rEDkbdVVkTrrYKg9e1pS9y5Q7+X2dDciNpYutcn6ypuxdntzl72vNeFhllVVutZwNk1tllVVWOYWsILfKKqvcallBbpVVVrnVsoLcKquscqtlBblVVlnlVssKcqusssqtlhXkVllllVst/z+7oEB2Y3FRVAAAAABJRU5ErkJggg==\n", "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": [ "### 2つ目の目的関数" ] }, { "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": "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\n", "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": [ "## 最適化の実行\n", "\n", "### policy のセット\n", "\n", "多目的最適化用の `policy_mo` を利用します。 \n", "`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.policy_mo(test_X=test_X, num_objectives=2)\n", "policy.set_seed(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "通常の `policy` (目的関数が1つの場合)と同じく、`random_search` または `bayes_search` メソッドを呼ぶことで最適化を行います。 \n", "基本的なAPIや利用方法は `policy` とおおよそ共通しています。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ランダムサーチ" ] }, { "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": true }, "outputs": [], "source": [ "policy = physbo.search.discrete.policy_mo(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": [ "目的関数の評価値(の array) とそのときの action ID が表示されます。 \n", "また、パレート解集合 (Pareto set) が更新されたときにメッセージを表示します。\n", "\n", "Pareto set が更新された際に中身を表示したい場合は、`disp_pareto_set=True` と指定します。 \n", "Pareto set は1つ目の目的関数値の昇順でソートされています。また、steps はパレート解が追加された際のステップ数を示しています。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.493398Z", "start_time": "2021-01-05T06:06:14.318132Z" } }, "outputs": [], "source": [ "policy = physbo.search.discrete.policy_mo(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": [ "### 結果の確認\n", "\n", " #### 評価値の履歴" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:06:14.498984Z", "start_time": "2021-01-05T06:06:14.494679Z" } }, "outputs": [], "source": [ "res_random.fx[0:res_random.num_runs]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### パレート解の取得" ] }, { "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": [ "#### 解(評価値)のプロット\n", "\n", "これ以降、図示する空間が $y = (y_1, y_2)$ であり $x = (x_1, x_2)$ ではないことにあらためて注意してください。\n", "\n", "赤のプロットがパレート解です。" ] }, { "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": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_random)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 劣解領域 (dominated region) の体積を計算\n", "\n", "パレート解ではない解、すなわち、「自らよりも優れた解 $y'$ が存在する解 $y$ 」 を劣解と呼びます ($\\exists y' y \\prec y'$)。 \n", "解空間(の部分空間)のうち、劣解の占める空間である劣解領域の体積は、多目的最適化の結果を示す指標のひとつです。 \n", "この値が大きいほど、より良いパレート解が多く求まっていることになります。\n", "\n", "`res_random.pareto.volume_in_dominance(ref_min, ref_max)` は、\n", "`ref_min`, `ref_max` で指定された矩形(hyper-rectangle) 中の劣解領域体積を計算します。" ] }, { "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": [ "## ベイズ最適化\n", "\n", "多目的の場合の `bayes_search` では、`score` には以下のいずれかを指定します。\n", "\n", "- HVPI (Hypervolume-based Probability of Improvement)\n", "- EHVI (Expected Hyper-Volume Improvement)\n", "- TS (Thompson Sampling)\n", "\n", "以下、score を変えてそれぞれ 50回 (ランダムサーチ10回 + ベイズ最適化 40回) 評価を行います。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### HVPI (Hypervolume-based Probability of Improvement)\n", "\n", "多次元の目的関数空間における非劣解領域 (non-dominated region) の改善確率を score として求めます。 \n", "\n", "- 参考文献\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" } }, "outputs": [], "source": [ "policy = physbo.search.discrete.policy_mo(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": [ "#### パレート解のプロット\n", "\n", "ランダムサンプリングと比較して、パレート解が多く求まっていることが分かります。" ] }, { "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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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_HVPI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 劣解領域体積" ] }, { "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", "多次元の目的関数空間における非劣解領域 (non-dominated region) の改善期待値を score として求めます。 \n", "\n", "- 参考文献\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.policy_mo(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": [ "#### パレート解のプロット" ] }, { "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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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_EHVI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 劣解領域体積" ] }, { "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", "単目的の場合の Thompson Sampling では、各候補(test_X)について、目的関数の事後分布からサンプリングを行い、値が最大となる候補を次の探索点として推薦します。 \n", "多目的の場合は、サンプリングした値についてパレートルールの上で最大となる候補、つまりパレート最適な候補の中からランダムに1つ選択して次の探索点とします。\n", "\n", "- 参考文献\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.policy_mo(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": [ "#### パレート解のプロット" ] }, { "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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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_TS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 劣解領域体積" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2021-01-05T06:09:52.722260Z", "start_time": "2021-01-05T06:09:52.718300Z" } }, "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": [ "## 付録:全探索\n", "\n", "`random_search` で `max_num_probes` に全データ数 (`N = test_X.shape[0]`) を渡すと手軽に全探索できます。 \n", "全データの評価には時間がかかるため、あらかじめデータ数を減らしておきます。" ] }, { "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.policy_mo(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": [ "#### パレート解のプロット" ] }, { "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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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pareto_front(res_all)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 劣解領域体積" ] }, { "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])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.3" } }, "nbformat": 4, "nbformat_minor": 2 }