{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from mabwiser.mab import LearningPolicy\n", "\n", "from alns import ALNS\n", "from alns.accept import *\n", "from alns.select import *\n", "from alns.stop import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "SEED = 42" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "np.random.seed(SEED)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "# ALNS features\n", "\n", "The `alns` package offers a number of different operator selection schemes, and acceptance and stopping criteria. In this notebook, we show some these in action solving a toy knapsack problem. Along the way we explain how they work, and show how you can use them in your ALNS heuristic.\n", "\n", "In our toy [0/1-knapsack problem](https://en.wikipedia.org/wiki/Knapsack_problem), there are $n = 100$ items $i$ with profit $p_i > 0$ and weight $w_i > 0$. The goal is to find a subset of the items that maximizes the profit, while keeping the total weight below a given limit $W$. The problem then reads follows:\n", "\n", "$$ \\max_{x_i \\in \\{0, 1\\}} \\; \\sum_{i=1}^n p_i x_i $$\n", "subject to\n", "$$ \\sum_{i=1}^n w_i x_i \\le W $$\n", "\n", "First we quickly set up everything required for solving the problem with ALNS. In particular, we define a solution state, and a few destroy and repair operators. Our goal is not to solve this problem very well, so we set up only the bare minimum needed to get the ALNS algorithm going." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "n = 100\n", "p = np.random.randint(1, 100, size=n)\n", "w = np.random.randint(10, 50, size=n)\n", "W = 1_000\n", "\n", "# Percentage of items to remove in each iteration\n", "destroy_rate = .25" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "class KnapsackState:\n", " \"\"\"\n", " Solution class for the 0/1 knapsack problem. It stores the current\n", " solution as a vector of binary variables, one for each item.\n", " \"\"\"\n", "\n", " def __init__(self, x: np.ndarray):\n", " self.x = x\n", "\n", " def objective(self) -> int:\n", " # Negative p since ALNS expects a minimisation problem.\n", " return -p @ self.x\n", "\n", " def weight(self) -> int:\n", " return w @ self.x" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Destroy operators\n", "\n", "We implement two operators:\n", "\n", "- A simple random destroy operator, which removes items from the knapsack at random.\n", "- A destroy operator that removes items based on their relative merits, that is, for an item $i$ currently in the knapsack, it removes those whose $p_i / w_i$ values are smallest." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "def to_destroy(state: KnapsackState) -> int:\n", " return int(destroy_rate * state.x.sum())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "def random_remove(state: KnapsackState, rnd_state):\n", " probs = state.x / state.x.sum()\n", " to_remove = rnd_state.choice(np.arange(n), size=to_destroy(state), p=probs)\n", "\n", " assignments = state.x.copy()\n", " assignments[to_remove] = 0\n", "\n", " return KnapsackState(x=assignments)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "def worst_remove(state: KnapsackState, rnd_state):\n", " merit = state.x * p / w\n", " by_merit = np.argsort(-merit)\n", " by_merit = by_merit[by_merit > 0]\n", " to_remove = by_merit[:to_destroy(state)]\n", "\n", " assignments = state.x.copy()\n", " assignments[to_remove] = 0\n", "\n", " return KnapsackState(x=assignments)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Repair operators\n", "\n", "We implement only the random repair operator. The focus of this notebook is not on solving the knapsack problem very well, but rather to showcase the different operator schemes and acceptance criteria." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "def random_repair(state: KnapsackState, rnd_state):\n", " unselected = np.argwhere(state.x == 0)\n", " rnd_state.shuffle(unselected)\n", "\n", " while True:\n", " can_insert = w[unselected] <= W - state.weight()\n", " unselected = unselected[can_insert]\n", "\n", " if len(unselected) != 0:\n", " insert, unselected = unselected[0], unselected[1:]\n", " state.x[insert] = 1\n", " else:\n", " return state" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## ALNS" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "def make_alns() -> ALNS:\n", " rnd_state = np.random.RandomState(SEED)\n", " alns = ALNS(rnd_state)\n", "\n", " alns.add_destroy_operator(random_remove)\n", " alns.add_destroy_operator(worst_remove)\n", "\n", " alns.add_repair_operator(random_repair)\n", "\n", " return alns" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "# Terrible - but simple - first solution, where only the first item is\n", "# selected.\n", "init_sol = KnapsackState(np.zeros(n))\n", "init_sol.x[0] = 1" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Operator selection schemes\n", "\n", "We now have everything set-up for solving the problem. We will now look at several of the operator selection schemes the `alns` package offers. The list is not exhaustive: for a complete overview, head over to `alns.select` in the documentation.\n", "\n", "Here, we use the `HillClimbing` acceptance criterion, which only accepts better solutions." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "accept = HillClimbing()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Roulette wheel\n", "\n", "The `RouletteWheel` scheme updates operator weights as a convex combination of the current weight, and the new score.\n", "\n", "When the algorithm starts, all operators $i$ are assigned weight $\\omega_i = 1$. In each iteration, a destroy and repair operator $d$ and $r$ are selected by the ALNS algorithm, based on the current weights $\\omega_i$. These operators are applied to the current solution, resulting in a new candidate solution. This candidate is evaluated by the ALNS algorithm, which leads to one of four outcomes:\n", "\n", "1. The candidate solution is a new global best.\n", "2. The candidate solution is better than the current solution, but not a global best.\n", "3. The candidate solution is accepted.\n", "4. The candidate solution is rejected.\n", "\n", "Each of these four outcomes is assigned a score $s_j~$ (with $j = 1,...,4$). After observing outcome $j$, the weights of the destroy and repair operator $d$ and $r$ that were applied are updated as follows:\n", "$$ \\omega_d = \\theta \\omega_d + (1 - \\theta) s_j, $$\n", "$$ \\omega_r = \\theta \\omega_r + (1 - \\theta) s_j, $$\n", "where $0 \\le \\theta \\le 1$ (known as the _operator decay rate_) is a parameter." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2776.0.\n" ] } ], "source": [ "select = RouletteWheel(scores=[5, 2, 1, 0.5],\n", " decay=0.8,\n", " num_destroy=2,\n", " num_repair=1)\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "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uummQtUHAHAPggAAQLFr1KiRFixYoOnTp+ull15y6ba8detWde/eXTfccIPefPPNPMcGBATo8ccft7pzv/fee/r+++/1zDPPFNjtfMSIEapfv76GDRumlJQUSRdDhYceekg1atSQr+/FTnITJkxQcHCwRo0aZYUDCQkJevPNN60PM5JUt25dHT58WMYYff3119bSawUZPHiwHA6HXn311Tx/rQ8ODtYLL7yguXPnWuOpJemTTz7RG2+8kWc8en4CAwPVv39/ffDBB7r++uvzdMPu1auXfvzxRy1ZskSSlJaWpmefffay583RqVMnffPNN/rtt98kSWvWrNG2bdvytJsyZYqOHDmiSZMmWR8Ud+3apREjRuQZmvFHvXr10v/93/8pISFB0sWhBrkDmBx16tSRw+GwQqGHH37Y+lD5Rw6HQ9OmTdPatWs1a9Ysa/uGDRv09NNPW+/t9ddfr8qVK+v111+37pGvvvpKK1ascDlfvXr1NHLkSP3rX/+y6szIyNDjjz+uyMhIhYaGFniNVyIsLEzly5e3rnvSpEn65JNP3HL/SNKNN94of39/vfzyy9bP2Jw5c/INWYryM3DnnXfquuuu0/jx461hAD///LOmTp2qfv36qUOHDoV9CwAA7uC9eQoBAHb3888/m/vvv980adLEREVFmaZNm5oOHTqYWbNmmaysLKtdcnKyiYqKMhUrVjQRERHmo48+MrGxsaZu3bqmTp06LrP558hvhvsjR46YwYMHm5o1a5rmzZubFi1amBdffNHltYwxZs+ePea2224zNWvWNFFRUaZDhw5mzZo1Lm127dplYmJiTKNGjUyzZs3M0qVLzYYNG0xUVJTx8/MzFStWzHfZv+7duxc4Y/y///1v06JFC1O3bl3TokULc8stt5itW7cW9i0tcHb19PR08/jjj5tatWqZa6+91nTq1Mmatb1WrVrm4YcfNh988IGJiooykkxYWJjp3LmzdXxSUpIZMGCAqV69uomNjTVjx441Tz31lJFkoqKizIIFC6y23377rbnxxhtNjRo1TMuWLc0NN9yQZ8b4/CQlJZn777/fVK9e3bRs2dJ069bNTJgwwUgy9evXNy+88ILVdvz48aZ27dqmWbNm5rbbbjPnz58v8Nxffvmladeunaldu7Zp2bKl6dy5c57v64YNG8wNN9xgwsPDTYcOHcx9991nbr75ZuPn52eioqLM9u3brbavv/66ady4sWnUqJG59tprzejRo62VEr744guX93HAgAHGGGM6d+5sKlasmO/5cnvjjTdM48aNre/NwIEDrX0zZswwERER5tprrzVdunRxWeHicvfP0KFDTa1atYwk07hxY9OrV688r/3ZZ5+ZFi1amBo1api4uDgzatQo07p1a3PVVVeZqKgoawm/ov4MJCcnmxEjRpg6deqYyMhI06BBAzNp0iRrmU5jjOndu7cJCwuz7qk1a9aYBQsWuLwXuVffAAD8OQ5j/jDYDwCAMqBOnTqKj4/X7NmzvV0KAABAicLQAABAmbBp0yaX8f/nzp1jAjIAAIB8EAQAAMqEzz77zJpTYOPGjTp58qRuvvlmL1cFAABQ8jA0AABQJixbtkyjRo2ynj/yyCN64IEHvFgRAABAyUQQAAAAAACAjTA0AAAAAAAAGyEIAAAAAADARny9XUBZlJ2drd9++03BwcFyOBzeLgcAAAAAUMYZY3T27FlVr15dTmfBf/MnCPCA3377TbVq1fJ2GQAAAAAAmzl06JBq1qxZYBuCAA8IDg6WdPEbEBIS4uVqAAAAAABlXXJysmrVqmV9Hi0IQYAH5AwHCAkJIQgAAAAAABSbwgxPZ7JAAAAAAABshCAAAAAAAAAbIQgAAAAAAMBGmCMAAAAAACDp4hJ0mZmZysrK8nYp+AMfHx/5+vq6ZYl6ggAAAAAAgDIyMnTkyBGlpqZ6uxRcQmBgoK6++mqVK1fuis5DEHAJixYt0vPPP6+AgAA5nU5Nnz5dTZs29XZZAAAAAOB22dnZ2rdvn3x8fFS9enWVK1fOLX95hnsYY5SRkaETJ05o3759uuaaa+R0/vmR/gQB+di0aZMGDRqkzZs365prrtGcOXPUrVs37dixo1BrMgIAAABAaZKRkaHs7GzVqlVLgYGB3i4H+Shfvrz8/Px04MABZWRkKCAg4E+fi8kC8zF58mT16NFD11xzjSTprrvuUmZmpmbPnu3dwgAAAADAg67kr8zwPHd9f/gu52PFihVq3bq19dzpdKpVq1Zavny5F6sCAAAAAODKMTTgD06dOqXk5GSFhYW5bA8PD9e3336b7zHp6elKT0+3nicnJ3u0RgAAAAAA/ix6BPxBzgyZ/v7+Ltv9/f0vOXvmCy+8oNDQUOurVq1aHq8TAAAAAHBRamqqJk2apPbt26tjx466/vrr1aVLF73++us6fvy4t8u7rMTERE2YMEGJiYnF8noEAX+QMzFG7r/w5zy/1KQZTzzxhJKSkqyvQ4cOebxOAAAAAMDFEKBjx45KSkrSypUrtXLlSq1bt07Dhg3TqFGjNH36dG+XeFmJiYmaOHFisQUBDA34g8qVKys0NFTHjh1z2X706FHVq1cv32P8/f3z9CAAAAAAAHje008/rYyMDL388ssuSx727t1bDz30kBcrK7noEZCPTp06afPmzdZzY4y2bNmiLl26eLEqAAAAAEBumZmZ+uc//6n+/fu7hAA5Ro0apdtuu03x8fEKCAiwVoKbP3++GjVqpDp16lht77vvPoWHh+vuu+/WmDFj1LlzZ/n5+emDDz6wjp8yZYoGDhyo2NhYORwO6y/4U6ZMUXR0tOLi4hQXF6e1a9dKklJSUqxjX3rpJQ0cOFAxMTG67rrrtG/fPknSTz/9pP79+0uS+vfvr/j4eC1atMhzb5roEZCvMWPGqGvXrvr555/VoEEDffjhh/Lx8dGgQYO8XRoAAAAAFJter3+tE2fTL9/QzaoG+2vJwzdctt3OnTuVnJysxo0b57u/Zs2aqlmzplatWuXyob9fv35KS0vThAkTrG3vvvuuBg8erMWLF2vlypWaPHmyJk6cqAoVKljH//vf/9bKlStVoUIFdenSRQ6HQ++8845mzpypDRs2qEKFClq3bp06d+6snTt3KiIiwjr2P//5j7766isFBQWpT58+mjBhgt577z01adJE8+bNU926dTVv3jyXOj2FICAfsbGxmj17tvr376/y5cvL6XRq2bJlCg4O9nZpAAAAAFBsTpxN19Hk894u45KSkpIkSUFBQW47Z3R0tKKjoyVJ48ePd9nXu3dvVahQQZKs5eWfe+45Pfzww9b266+/Xg0aNNC7776rZ555xjq2V69eVp3x8fGaOXOm22ouKoKAS7j11lt16623ersMj0k6c1K/zBwiScqoFq22dz9zmSMAAAAA2E3VYO/MhVbY18358H3u3Dm3vXbNmjULve/s2bM6ePCgZs2apaVLl1rbL1y4oLNnz7q0rV69uvU4ODjYq8vOEwTY1IX0NLVMWSNJ+i4708vVAAAAACiJCtM935saNWqk0NBQ/fTTT+rVq1eBbf84h0BWVla+7Xx8fC55jkvtGz16tIYMGVLg6+c+1uFwyBhTYHtPYrJAAAAAAECp5OPjo7/97W/66KOP8t3fq1cvjR49WtLFv8Ln/iv94cOHr/j1g4ODVbt2be3atctl+/z587Vw4cJCn8fp/P2jeXZ2tlt7OOT7eh49OwAAAAAAHjRhwgQFBgbqscceU2bmxd7Oxhi9/vrr2r59ux599FFJF8f+r1u3TtLF2fyXLFniltcfO3as3nvvPR08eFCSdOLECU2cOFHNmjUr9DkqV64sp9OpM2fOKCEhQYMHD3ZLbZfC0AAAAAAAQKnl7++v//u//9NLL72kuLg4+fn5KT09XU2bNtXq1asVFhYm6WJgMGDAAMXGxqpBgwa67bbbNH78eMXHx2vp0qUaN26cvvjiC0mytuWe3O/o0aOaPHmyvv76a7377rvW6z/wwANKSUnRTTfdpMqVK8vHx0evvvqqIiMj8xxbrlw5+fj4aPLkyTp69Kg6d+6sFStW6KqrrtLo0aM1cOBABQUFaerUqR59zxzGmwMTyqjk5GSFhoYqKSlJISEh3i4nXyePHlKVty8mVN8FXq8Wj33u5YoAAAAAeMv58+e1b98+1a1bVwEBAd4uB5dQ0PepKJ9DGRpgU3+cKAMAAAAAYA8EAQAAAAAA2AhBAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBkEMsHAEAAAAAdkEQYFOsGgAAAAAA9kQQAAAAAACAjRAEAAAAAABgIwQBAAAAAIBSadOmTYqPj5fD4VCjRo0UHx+vmJgYNWjQQE8++aSysrLc8joTJkzQ/v373XKuksDX2wWgBDBMFggAAACg9ImNjdWqVavkcDg0ZswYDR48WJL03XffqU2bNqpRo4YeeuihK36diRMnKj4+XnXq1Lnic5UE9AiwKYeDbz0AAACAsqlFixZq1qyZvvrqK2+XUiLxaRAAAAAAUOZcuHDBZbW0KVOmKDo6WnFxcYqLi9PatWutfXv37tVNN92kDh06qH379rr99tu1a9cunT59WvHx8ZKkESNGKD4+Xm+99VZxX4rbMTQAAAAAAJC/GXFSyvHif92gatJfV//pw5cuXaqdO3dq8uTJkqR33nlHM2fO1IYNG1ShQgWtW7dOnTt31s6dOxUREaFhw4YpNjZWkyZNkiQNGjRI69ev1+DBg62hB6+++qoVCpR2BAEAAAAAgPylHJfO/ubtKgpl8uTJmj17tk6dOqVffvlFY8aMUffu3SVJzz33nB5++GFVqFBBknT99derQYMGevfdd/XMM8/o8OHDCgsLU1ZWlnx8fPTcc8+59CYoawgCAAAAAAD5C6pWal4392SBJ0+eVJ8+fXTrrbfqgw8+0MGDBzVr1iwtXbrUan/hwgWdPXtW0sXJAAcOHKiVK1eqf//+uueee9SwYUO3XEpJRBAAOcSqAQAAAADycQXd872pSpUqeuSRR9S3b1/t3btXkjR69GgNGTIk3/a9e/fWr7/+qnnz5undd9/V1KlTtWDBAvXu3bsYqy4+TBZoU2W5mwsAAAAA+Pr6Wv+tXbu2du3a5bJ//vz5WrhwoSTpP//5j0JDQ/XXv/5V3377rW699VbNnDnTapv781NOL4LSjCAAAAAAAFCmZGRk6L333lODBg0UGRmpsWPH6r333tPBgwclSSdOnNDEiRPVrFkzSdLjjz+uH3/80Tr+woULLkMDqlatqjNnzuj48ePq1KlT8V6MBzA0AAAAAABQKm3atEmPPfaYpN8nC8zKytLp06cVGRmpzz77TL6+vnrggQeUkpKim266SZUrV5aPj49effVVRUZGSpIeeeQRDRkyRFdddZXS0tLUtGlTTZw40XqdcePG6YknnlBoaKieeOIJr1yrOzmMMQwQd7Pk5GSFhoYqKSlJISEh3i4nX4knj6rCGxdv+h/Kt1HU4196uSIAAAAA3nL+/Hnt27dPdevWVUBAgLfLwSUU9H0qyudQhgZAYrJAAAAAALANggCbYrJAAAAAALAnggAAAAAAAGyEIAAAAAAAABshCAAAAAAASJKYS75kc9f3hyAAEj/sAAAAgK35+flJklJTU71cCQqS8/3J+X79Wb7uKAalkIMMCAAAAMBFPj4+qlChgo4fPy5JCgwMZILxEsQYo9TUVB0/flwVKlSQj4/PFZ2PIAAAAAAAoPDwcEmywgCUPBUqVLC+T1eCIAAAAAAAIIfDoauvvlrVqlXThQsXvF0O/sDPz++KewLkIAgAAAAAAFh8fHzc9oETJRMDxQEAAAAAsBGCAIgpQAAAAADAPggC7IoZQAEAAADAlggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQiAJOPtAgAAAAAAxYQgwKYcTBYIAAAAALZEEAAAAAAAgI0QBAAAAAAAYCMEAQAAAAAA2AhBAAAAAAAANkIQALFqAAAAAADYB0GATbFqAAAAAADYE0EAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAjBAGQwzBZIAAAAADYBUGATTFZIAAAAADYE0EAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAjBAEAAAAAANgIQQAksWoAAAAAANgFQYBNsWoAAAAAANgTQQAAAAAAADZCEAAAAAAAgI0QBAAAAAAAYCMEAZCDyQIBAAAAwDZ8vV2AOzVq1Ejh4eEu2wYMGKAHHnjAen748GH99a9/1ZkzZ5SWlqYHHnhADz74oMsxX3/9tUaPHi1/f3+lp6drypQpat++fbFcQ3FhskAAAAAAsKcyFQSEh4dr1apVl9yfnZ2tnj176rbbbtPYsWN14sQJXXvttapWrZr69OkjSTpw4IB69OihpUuXqn379lq9erV69uyprVu3KiIiopiuBAAAAAAAz7DV0IClS5dq+/btGj58uCSpatWquvvuu/Xcc89ZbaZNm6YmTZpYPQDi4uIUGRmp1157zSs1AwAAAADgTrYKAlasWKHIyEgFBQVZ22JiYrRlyxadOXPGatO6dWuX42JiYrR8+fJirRUAAAAAAE8oU0HAuXPndM8996hDhw7q2LGjXnjhBWVkZFj79+7dq7CwMJdjcuYU2LdvX4FtcvbnJz09XcnJyS5fAAAAAACURGUqCIiMjNTQoUO1Zs0azZ8/Xx9//LHuvPNOa39qaqr8/f1djsl5npqaWmCbnP35eeGFFxQaGmp91apVy12X5DEOR5n61gMAAAAACqnEfxocM2aMHA5HgV87d+6UJH3wwQdWt/5q1appwoQJ+s9//qM9e/ZIkgIDA5Wenu5y/pzngYGBBbbJ2Z+fJ554QklJSdbXoUOH3HPxAAAAAAC4WYlfNeDJJ5/UsGHDCmzzxyUDc9SvX1+S9Msvv+iaa65RvXr19NVXX7m0OXr0qCSpbt26kqR69erp2LFjedrUq1fvkq/v7++fpxcBAAAAAAAlUYkPAkJCQhQSEnLZdtu2bdPGjRt13333WdsOHz4sSapdu7YkqXPnznrrrbeUkpJiTRiYkJCgVq1aqWLFilabDRs2uJw7ISFBXbp0ccv1AAAAAADgTSV+aEBhnTp1Si+99JJOnz4tSUpLS9OLL76ojh07qnHjxpKkHj16qGnTpnr99dclSSdPntScOXP05JNPWucZPny4tm/frm+++UaStHbtWu3cuVMPP/xwMV8RAAAAAADuV+J7BBRW8+bNddttt6l79+4qX768UlJSFBMTo2effVYOh0OS5OPjoyVLlujBBx9Uu3btlJaWpqefflp9+vSxzhMREaGlS5dq1KhRKleunNLT07V06VJFRER469I8zmGMt0sAAAAAABQThzF8CnS35ORkhYaGKikpqVDDGrzhfGqKAl6qIUnaXi5KTZ9c4+WKAAAAAAB/VlE+h5aZoQEAAAAAAODyCAIAAAAAALARggAAAAAAAGyEIACSmCYCAAAAAOyCIMCu/reSAgAAAADAXggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQgAAAAAAMBGCAIgVg0AAAAAAPsgCLApB6sGAAAAAIAtEQQAAAAAAGAjBAEAAAAAANgIQQAAAAAAADZCEAAxWwAAAAAA2AdBgE05HHzrAQAAAMCO+DQIAAAAAICNEAQAAAAAAGAjBAEAAAAAANgIQQAkY7xdAQAAAACgmBAE2JTDwVoBAAAAAGBHBAEAAAAAANgIQQAAAAAAADZCEAAAAAAAgI0QBAAAAAAAYCMEAZBDrBoAAAAAAHZBEGBTrBoAAAAAAPZEEAAAAAAAgI0QBAAAAAAAYCMEAQAAAAAA2AhBACQmCwQAAAAA2yAIsCmHg289AAAAANgRnwYBAAAAALARggAAAAAAAGyEIAAAAAAAABshCAAAAAAAwEYIAiCHtwsAAAAAABQbggCbcjj4+A8AAAAAdkQQAAAAAACAjRAEAAAAAABgIwQBAAAAAADYCEEAJGO8XQEAAAAAoJgQBNgUkwUCAAAAgD0RBAAAAAAAYCMEAQAAAAAA2AhBAAAAAAAANkIQAAAAAACAjRAEQA6xagAAAAAA2AVBgE05nHzrAQAAAMCO+DQIAAAAAICNEAQAAAAAAGAjBAEAAAAAANgIQQAkJgsEAAAAANsgCAAAAAAAwEYIAgAAAAAAsBGCAAAAAAAAbIQgAAAAAAAAGyEIgBxMFggAAAAAtkEQYGPZxuHtEgAAAAAAxYwgAAAAAAAAGyEIAAAAAADARggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQiwMRYNBAAAAAD7KVVBwJ49e3T99dcrPj4+3/1JSUkaOHCgYmNj1bJlS02cOFHGuH7c/emnnxQfH68OHTqodevW+vjjj/OcZ9GiRYqJiVH79u0VFxen7du3e+JyAAAAAAAodr7eLqCw3n//fU2fPl0+Pj6XbDNw4ECFhYVp06ZNSk1NVWxsrIKDg/X3v/9dknT27FndeOONevHFF3XnnXdq9+7datWqlWrWrKnY2FhJ0qZNmzRo0CBt3rxZ11xzjebMmaNu3bppx44dCg4OLpZrBQAAAADAU0pNj4DKlStr9erVatCgQb77t27dqiVLlmj06NGSpMDAQA0dOlSTJ09WVlaWJGnWrFnKzs7WgAEDJEkNGzZU9+7d9eKLL1rnmTx5snr06KFrrrlGknTXXXcpMzNTs2fP9uDVAQAAAABQPEpNEHDzzTerXLlyl9y/YsUKBQUFKTIy0toWExOjEydOaOvWrVabVq1ayeFwuLRZsWKFy3lat25tPXc6nWrVqpWWL1/uzsspURzMFgAAAAAAtlFqgoDL2bt3r8LCwly2hYeHS5L27dtXYJukpCSdPn1ap06dUnJycr5tcs6Rn/T0dCUnJ7t8lQZGjss3AgAAAACUKWUmCEhNTZW/v7/LtpznqamphWqT0y6/Njn78vPCCy8oNDTU+qpVq9aVXQwAAAAAAB7i1SBgzJgxcjgcBX7t3LmzUOcKDAxUenq6y7ac54GBgYVqk9MuvzY5+/LzxBNPKCkpyfo6dOhQoWoGAAAAAKC4eXXVgCeffFLDhg0rsE1O9/7LqVevno4dO+ay7ejRo9a+gtqEhoaqUqVKkqTQ0NB82+ScIz/+/v55ehEAAAAAAFASebVHQEhIiGrWrFngl69v4bKKzp07KyUlRbt377a2JSQkqFq1amrevLnVZsuWLTLGuLTp0qWL9bxTp07avHmz9dwYoy1btri0AQAAAACgtCozcwQ0b95cvXr10tSpUyVJaWlpeuutt/T444/L6bx4mUOGDJHD4dC8efMkSXv27NHnn3+uxx57zDrPmDFj9Omnn+rnn3+WJH344Yfy8fHRoEGDivmKipFh1QAAAAAAsAuvDg0oik8++UT/+Mc/tHPnTp0/f17x8fEaOHCg7r33XqvNnDlzNGzYMLVp00YZGRn6y1/+opEjR1r7g4ODtWzZMg0dOlTTp09XWlqaZs+erdjYWKtNbGysZs+erf79+6t8+fJyOp1atmyZgoODi/V6iwOrBgAAAACA/TiM4c/B7pacnKzQ0FAlJSUpJCTE2+Vc0oXxleTnyNIenwa65qnNlz8AAAAAAFAiFeVzaJkZGgAAAAAAAC6PIAAAAAAAABshCIAcYnQIAAAAANgFQYCN8fEfAAAAAOznTwcB+/bt07p16yRJZ86ccVtBAAAAAADAc4ocBJw5c0Y33XST6tevr4EDB0qSxo4dq86dO+vkyZNuLxAAAAAAALhPkYOAkSNHqm7duvr2229VvXp1SdL06dP14IMP6pFHHnF7gQAAAAAAwH18i3rAvn37tHr1akmSn5+ftb1v3756++233VcZAAAAAABwuyL3CEhLS7MeG2NcHh87dsw9VQEAAAAAAI8ochBQp04djR07VqdPn5bD4ZAk7d69W4MHD1bz5s3dXiA8yeHtAgAAAAAAxazIQcDrr7+u1atXq2rVqlqzZo38/PzUuHFj7d27V9OmTfNEjQAAAAAAwE2KPEdAWFiYvv76a61cuVLbt2+XJDVr1kzx8fHurg0AAAAAALhZkYOAHB07dlTHjh1dtu3du1f16tW74qIAAAAAAIBnFHloQEHuu+8+d54OxcQhc/lGAAAAAIAyocg9ApxOpzVJIEo3w2SBAAAAAGA7RQ4CoqKi9Oqrr1rPs7Ky9Ouvv2rhwoXq1auXO2sDAAAAAABuVuQgYNq0aerQoUOe7QMGDNAdd9zB8AAAAAAAAEqwIs8RkF8IIEm+vr765ZdfrrggAAAAAADgOUXuETBp0qQ8286ePasNGzaoWrVqbikKxY3JAgEAAADALoocBLzyyiuKjo62njscDgUHB6tTp0565JFH3FkbPIyP/wAAAABgP0UOAm666SbNnTvXE7UAAAAAAAAPK/IcAQWFABs3bryiYgAAAAAAgGcVqkfAwYMHC3WykSNHat26dVdUEAAAAAAA8JxCBQF16tSRw+EosI0x5rJtAAAAAACAdxUqCGjTpo3mzZtXYBtjjO644w63FIXi5TBMGwgAAAAAdlGoIODFF19UREREodqh9DCiBwcAAAAA2E2hJgvs0KFDoU72z3/+84qKAQAAAAAAnlXk5QMl6YMPPtDnn3+uo0ePyuTqVv7999+7qy4AAAAAAOABRV4+8Pnnn9fLL7+siIgI7d27V3FxcbruuuuUmJioLl26eKJGAAAAAADgJkXuEbB48WKtX79e5cuX1/r16zV+/HhJ0rhx4zR48GB314diwEwBAAAAAGAfRe4REBQUpPLly0uSMjMzre3ly5fXsWPH3FcZPI7JAgEAAADAfoocBJw7d047duyQJFWuXFmvvPKKDh8+rDlz5ujQoUNuLxAAAAAAALhPkYcG3H333RoyZIgWLFigRx99VDfeeKNGjx4th8Oht956yxM1AgAAAAAANylyEDB06FANHTpUklSrVi3t2LFDCQkJatSokZo0aeL2AgEAAAAAgPsUeWjA3/72N5fntWvXVp8+fQgBAAAAAAAoBYocBLz//vvq2bOn5s6dq/Pnz3uiJhQ74+0CAAAAAADFpMhBQLdu3fT222/r4MGD6tixo+655x6tWrXKA6UBAAAAAAB3K3IQsHDhQtWsWVOPP/641q9fr4ceekiLFi1S48aN9dRTT3miRgAAAAAA4CZFDgK+++476/HBgwe1bNkyLVu2TLt379aaNWvcWhwAAAAAAHCvPzVZ4MyZMxUfH6969erpvffe01133aVffvlFq1ev9kSNAAAAAADATYq8fOCmTZu0d+9e3X777XrxxRfVpk0bT9SFYuRgskAAAAAAsI0iBwGtW7fWunXr5Otb5ENRwhg5vF0CAAAAAKCYFXlowJo1awgBAAAAAAAopYocBAQEBHiiDgAAAAAAUAyKHAQAAAAAAIDSiyAAAAAAAAAbIQiAxKoBAAAAAGAbfyoImD9/vuLi4tSuXTtJ0jPPPKP333/frYXB81g1AAAAAADsp8hBwIwZMzR69GhFRUUpLS1NktSnTx8tWrRI06ZNc3uBAAAAAADAfYocBLz//vv64Ycf9Nprryk0NFSS1LRpU82fP18LFy50e4EAAAAAAMB9ihwEOJ1OVapUSZLkcPzetdzPz08ZGRnuqwwAAAAAALhdkYOA9PR0/fjjj3m2L1++XFlZWW4pCsWLmQIAAAAAwD58i3rAhAkT1LZtW3Xq1El79uzRkCFDtGvXLm3ZskVLlizxRI3wENYKAAAAAAD7KXKPgO7du2vjxo2qVKmSwsLCtG3bNjVs2FDfffedunbt6okaAQAAAACAmxS5R8DGjRvVpk0bzZ492wPlAAAAAAAATypyj4C77rpLmzZt8kQtAAAAAADAw4ocBPj6+urdd99V27Zt9dxzz+nAgQOeqAvFitkCAAAAAMAuijw04KWXXlKvXr2Unp6uTz75RI888ohSU1M1YMAA3XbbbQoODvZEnfAA42C9AAAAAACwmyL3COjVq5ckyd/fX3379tX8+fPVq1cvPfTQQwoPD3d7gQAAAAAAwH2KHAQMHz5ckrRq1Srde++9Cg8P11NPPaV+/fqxfCAAAAAAACVckYcGzJs3T//973/122+/qUuXLnrrrbfUu3dvlS9f3hP1AQAAAAAANypyEGCM0YgRIzRgwACFhYV5oiYAAAAAAOAhRR4aMGnSJI0cOTLfEGDv3r1uKQrFy8GqAQAAAABgG0UOAh588MFL7rvvvvuuqBgUN1YNAAAAAAC7KdTQgFtvvVX169fXyy+/LKfTKQfLzgEAAAAAUCoVKgiIi4vT1VdfLUmKiorSq6++mqeNMUYjR450a3F/tGfPHg0aNEjlypXTqlWr8uyvUKGCoqOjXbb9/e9/1y233GI9/+mnnzR06FBlZ2crNTVVTz75pPr06eNyzKJFi/T8888rICBATqdT06dPV9OmTT1xSQAAAAAAFKtCBQEjRoywHj/22GOKi4vLt91jjz3mlqLy8/7772v69Ony8fG5ZJvo6Oh8A4IcZ8+e1Y033qgXX3xRd955p3bv3q1WrVqpZs2aio2NlSRt2rRJgwYN0ubNm3XNNddozpw56tatm3bs2KHg4GB3XxYAAAAAAMWqyHMEJCcn59mWkpKi2NhYjy4hWLlyZa1evVoNGjT40+eYNWuWsrOzNWDAAElSw4YN1b17d7344otWm8mTJ6tHjx665pprJEl33XWXMjMzNXv27CuqvyRzGCYLBAAAAAC7KHIQMH/+/DzbgoKCtHTpUpcP1O528803q1y5cld0jhUrVqhVq1YucxzExMRoxYoVLm1at25tPXc6nWrVqpWWL19+Ra9dEvHxHwAAAADsp1BDAw4ePKj9+/dLkhITE7V27VqZP/wV+cyZM0pMTHR3fUVy9OhR9evXT0eOHFG5cuV022236YEHHpDTeTHv2Lt3r9q0aeNyTHh4uJKSknT69GkZY5ScnJxnacTw8HB9++23l3zd9PR0paenW8/z6zUBAAAAAEBJUKggYNasWZo4caIkyeFw5JkjwOFwqFq1aho3bpz7KyyCBg0a6Pnnn1f9+vX1yy+/qEuXLvrll180ZcoUSVJqaqr8/f1djsl5npqaaoUb+bVJTU295Ou+8MIL1vsDAAAAAEBJVqihAePHj1d2drays7PVoUMH63HOV1ZWlo4cOaKHHnqoSC8+ZswYORyOAr927txZ6PMtXbpU9evXlyTVr19fo0eP1iuvvKK0tDRJUmBgoMtf7iVZzwMDAxUYGOiyLXebnH35eeKJJ5SUlGR9HTp0qNA1AwAAAABQnArVIyC3jz/+2G0v/uSTT2rYsGEFtgkPD//T569fv76ysrJ04MABNWrUSPXq1dOxY8dc2hw9elShoaGqVKmSJCk0NDTfNvXq1bvk6/j7++fpRQAAAAAAQElU5CBgz549mjdvnmJjY9W/f39J0ty5c5Wamqp77723SOcKCQlRSEhIUUvI14oVK3Tu3Dndcsst1rbDhw/L4XCoZs2akqTOnTvrxRdflDHGmjAwISFBXbp0sY7p1KmTNm/ebD03xmjLli0aO3asW+oEAAAAAMCbirxqwLPPPqtz5865zKwfGxurr776SpMmTXJrcUVx6NAhTZkyxRrLf/r0aU2bNk133323goKCJElDhgyRw+HQvHnzJF0MNT7//HM99thj1nnGjBmjTz/9VD///LMk6cMPP5SPj48GDRpUzFfkeUaOyzcCAAAAAJQpRe4RcOrUKX3yyScu2+rXr6/3339f7du319NPP+224nL75JNP9I9//EM7d+7U+fPnFR8fr4EDB1q9EDp37qwtW7aoY8eOCggIUEpKinr06KGnnnrKOkdwcLCWLVumoUOHavr06UpLS9Ps2bMVGxtrtYmNjdXs2bPVv39/lS9fXk6nU8uWLVNwcLBHrgsAAAAAgOLkMH9cB/AyYmJiLrmUXkH77CQ5OVmhoaFKSkpy29AHT0icUEMVlKJDjuqqNX6Ht8sBAAAAAPxJRfkcWuShAVWrVtWUKVN0/vx5a1t6erqmTp2qKlWqFL1aAAAAAABQbIo8NOC1115Tt27dNH78eF199dWSpCNHjqh69er64osv3F4gPM+hInUKAQAAAACUYkUOAho0aKAdO3boww8/1Pbt2yVJzZo104ABA1SuXDm3FwjPYbJAAAAAALCfIgcBklSuXDkNGTLE3bUAAAAAAAAPK/IcAZI0f/58xcXFqV27dpKkZ555Ru+//75bCwMAAAAAAO5X5CBgxowZGj16tKKiopSWliZJ6tOnjxYtWqRp06a5vUB43lUmxdslAAAAAACKSZGDgPfff18//PCDXnvtNYWGhkqSmjZtqvnz52vhwoVuLxCeV1FnZbKzvV0GAAAAAKAYFDkIcDqdqlSpkiTJ4fh9sjk/Pz9lZGS4rzJ4XEWdtR6np6d5sRIAAAAAQHEpchCQnp6uH3/8Mc/25cuXKysryy1FoXjs8Wnw+xPDEoIAAAAAYAdFXjVgwoQJatu2rTp16qQ9e/ZoyJAh2rVrl7Zs2aIlS5Z4okZ4SLpvkPS/7CY7mxAHAAAAAOygyD0Cunfvro0bN6pSpUoKCwvTtm3b1LBhQ3333Xfq2rWrJ2qEh5hc3/5s5ggAAAAAAFsoco8A6eLkgLNnz3ZzKShuxkEQAAAAAAB2U+QeASg7jH6f7JFVAwAAAADAHgoVBLRq1UoDBgy4eIDTKR8fn0t+BQQE6LrrrtO2bds8WjjcIFePAMMcAQAAAABgC4UaGjBu3DhrycCoqCi9+uqrl2ybmZmpH374QUOHDtXatWvdUiQ8w3VoAEEAAAAAANhBoYKAW2+91Xo8efJkxcXFFdi+c+fOWrx48ZVVBo/LPTSAOQIAAAAAwB6KPFlgt27dJEkbNmzQjh07JEmNGzdW27ZtJUnnz5/X2LFjde7cOTeWCY/I1SNABAEAAAAAYAtFDgL279+v22+/XQkJCS7bY2JiNH/+fNWoUUO33HKLHnroIbcVCc9wWT7QEAQAAAAAgB0UedWAQYMGqVmzZvrhhx+UkpKilJQUff/992ratKkGDRokPz8/xcXFqV69ep6oF+7kyD00gDkCAAAAAMAOitwj4PTp01q9erXLtubNm+tf//qXmjVr5rbC4HmGVQMAAAAAwHaK3COgVq1aMsbk2W6MUY0aNdxSFIpH7qEBJjvv9xQAAAAAUPYUqkfAwYMHrccDBw7UXXfdpfvvv1+1a9e29r/11lvq27evZ6qEZ+QaGmAMPQIAAAAAwA4KFQTUqVNHjv99aMzpDTB37tw82xYuXKj77rvPE3XCA3IPDWD5QAAAAACwh0IFAW3atNG8efMKbGOM0R133OGWolBcmCMAAAAAAOymUEHAiy++qIiIiEK1Q+nhOlkgPQIAAAAAwA4KFQR06NDBepyQkKCEhASdOXNGlSpVUtu2bRUVFZWnHUoBlzkCCAIAAAAAwA4KvXzgjh07NHDgQG3ZssVlu8Ph0PXXX685c+aobt26bi8QHsTygQAAAABgO4VaPvDAgQPq3Lmz2rVrp/Xr1ysxMVGZmZlKTEzUunXr1KpVK8XHx+vIkSOerhdu5DpZIMsHAgAAAIAdFKpHwIQJE/SPf/xD/fv3d9keEhKiNm3aqE2bNrr++us1fvx4vfPOOx4pFJ6Qa2gAPQIAAAAAwBYK1SNg165deUKAP7r99tu1fft2txSFYpJ7aABzBAAAAACALRQqCAgICCjUyfz9/a+oGBQzVg0AAAAAANspVBBw/vx5ZWUV3HU8KytL6enpbikKxcMwNAAAAAAAbKdQQcCNN96oJ554osA248aNU7du3dxSFIoJQwMAAAAAwHYKNVng448/rk6dOql169bq37+/GjVqpKCgIJ07d047duzQRx99pHLlymnFihWerhfulCsIkGHVAAAAAACwg0IFAeXLl9eqVas0fvx4Pffcc0pKSpLD4ZAxRiEhIXrwwQc1ceJE5ggobegRAAAAAAC2U6ggQLo4EeDkyZP13HPPadeuXUpMTFSFChUUGRkpHx8fT9YIDzGO3HMEEAQAAAAAgB0UOgjI4ePjoyZNmniiFhQ3Vg0AAAAAANsp1GSBKKNchgawagAAAAAA2AFBgJ259AhgskAAAAAAsAOCADvLFQSk7FrpxUIAAAAAAMWFIMDOsjKsh45cjwEAAAAAZRdBgI0FN+7i7RIAAAAAAMWMIMDGnH7+3i4BAAAAAFDMCAJszOFw/P7EsHwgAAAAANgBQYCNOeS4fCMAAAAAQJlCEGBnDoIAAAAAALAbggD8j/F2AQAAAACAYkAQYGcucwQQBAAAAACAHRAE2JnL0ACCAAAAAACwA4IAG3OZLJAeAQAAAABgCwQBNuZw/v7td9AjAAAAAABsgSDA1ugRAAAAAAB2QxAAAAAAAICNEATYmIPJAgEAAADAdggC7MwlCAAAAAAA2AFBgI259Agw2d4rBAAAAABQbAgCbI0eAQAAAABgNwQBNsYcAQAAAABgPwQBdubg2w8AAAAAdsMnQVxk6BEAAAAAAHZAEGBjuYcGOBgaAAAAAAC2QBBgY65TBBAEAAAAAIAdEATYmcscAQQBAAAAAGAHBAE25rJqAD0CAAAAAMAWCAJszCHH5RsBAAAAAMqUUhEEnD59WhMmTNANN9yg+Ph4tWjRQs8//7wyMzNd2h0+fFg9e/ZUu3bt1LJlS7399tt5zvX111+rbdu2iouLU9u2bbV27do8bWbMmKFWrVqpXbt26tGjhw4fPuyxawMAAAAAoDj5eruAwvjss8/00Ucfaf369QoNDdXhw4fVsmVLZWRkaMKECZKk7Oxs9ezZU7fddpvGjh2rEydO6Nprr1W1atXUp08fSdKBAwfUo0cPLV26VO3bt9fq1avVs2dPbd26VREREZKkjz/+WBMnTtTWrVtVpUoVTZo0ST179tTmzZvldJaK3KTwWDUAAAAAAGynVHyyrVy5skaPHq3Q0FBJUo0aNdS3b1/NnTvXarN06VJt375dw4cPlyRVrVpVd999t5577jmrzbRp09SkSRO1b99ekhQXF6fIyEi99tprVptnn31WgwYNUpUqVSRJw4cP148//qhPP/3U49dZ7HJPFsgcAQAAAABgC6UiCOjevbvuuecel20BAQFKT0+3nq9YsUKRkZEKCgqytsXExGjLli06c+aM1aZ169Yu54mJidHy5cslXRyC8N1337m0CQ0NVcOGDa02ZYnL8oH0CAAAAAAAWygVQUB+1q9fr9tvv916vnfvXoWFhbm0CQ8PlyTt27evwDY5+3P+W1Cb/KSnpys5OdnlqzRwWTWAIAAAAAAAbKFUBgFfffWVfv31V40bN87alpqaKn9/f5d2Oc9TU1MLbJN7f+7j8muTnxdeeEGhoaHWV61atf7klRWzXEMDHAwNAAAAAABb8GoQMGbMGDkcjgK/du7c6XLM4cOHNXToUC1evFghISHW9sDAQJehApKs54GBgQW2yb0/93H5tcnPE088oaSkJOvr0KFDRXkbvIblAwEAAADAfry6asCTTz6pYcOGFdgmp3u/JJ06dUq9e/fWjBkzFB0d7dKuXr16+uqrr1y2HT16VJJUt25dq82xY8fytKlXr561X1K+bbp27XrJGv39/fP0Iih96BEAAAAAAHbg1R4BISEhqlmzZoFfvr4Xs4qzZ8/qlltu0fjx4xUXFydJeuedd6xzde7cWbt27VJKSoq1LSEhQa1atVLFihWtNps3b3apISEhQV26dJEkVaxYUS1atHBpk5ycrN27d1ttyhKHkx4BAAAAAGA3pWKOgPPnz+uWW27Rddddp/DwcCUkJCghIUEzZsyw2vTo0UNNmzbV66+/Lkk6efKk5syZoyeffNJqM3z4cG3fvl3ffPONJGnt2rXauXOnHn74YavNuHHj9N577+nUqVOSpNdee03NmjXTzTffXByXWsxYPhAAAAAA7MarQwMKa+bMmVq1apVWrVqlqVOn5tvG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W7a4rDeckJDAPY0CPfXUU9qyZYtWrVqlVatWad68eZKkV199VatWrVJMTIxatGjhcn8mJydr9+7d1r3VoUMH+fn5ubRJSEiQn5+fNblb586dtWvXLqWkpLi0adWqlSpWrFgcl4pSzMfHR+3atdORI0dcth87dky1a9fm9yi8rkqVKvL3989zjx45ckSBgYHcoyhxKlasWGz/vnfu3NnlHDltvH7fenXNAnjNxo0bTUhIiNmzZ48xxpj333/f1KhRwyQnJ3u5MpRFb731lmnatKlZv369+fbbb823335rxo8fb2bNmmWMubi2cFRUlLW28L333pvv2sIPPPCAMcaY1NRUc+211+a7tvC///1vY4wxu3fvNsHBwawtjCLZt29fnuUDFy5caKpXr25OnjxpjDHmmWeeyXed4e7du5usrCyTlZVlbrzxRpd1hjMzM010dLR5/vnnjTHGnDhxwoSHh7usMwwUZNmyZaZixYrmwIEDxpiLS6/5+/ubJUuWGGP4PQrve+CBB0xkZKQ5ffq0McaYzZs3Gz8/P/Pqq68aY7hH4T2XWj6wuP59379/vwkJCTFff/21McaYNWvWmJCQELN//35PXXKhOIzJFanBVhYtWqTnnntO5cuXl9Pp1PTp09W0aVNvl4Uy5uzZs6pQoYLVxTq3WbNmafDgwTLG6JlnntF///tf+fr66pprrtGbb76pChUqWG0TExM1bNgw7dmzRxkZGerdu7eefvpplyWEtm/frqFDhyo7O1tpaWl68skn1adPn+K4TJQBI0aM0IYNG7Rx40ZFRUWpUaNGVg+Bt99+W++8844CAgJUsWJFzZgxQzVr1rSOTU9P16OPPqpvvvlGknT99dfr5Zdfdpkc6Ndff9WDDz6oM2fOKC0tTffff7/+9re/Fe9FolT74IMPNHXqVAUFBSkzM1MjRoxQv379JInfo/C61NRUTZgwQcuXL1dgYKDOnj2rQYMGaeTIkXI4HNyjKHYZGRm68cYblZiYqB9++EFt2rRRrVq1XJa1Lq5/39euXatHH31U5cqVU3p6ul5++WW1b9/ew+9AwQgCAAAAAACwEeYIAAAAAADARggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQgAAAAAAMBGCAIAAAAAALARggAAAAAAAGyEIAAAANiOMUa//fbbnzr28OHDbq4GAIDiRRAAAEAZt2nTJsXHx8vhcKhRo0aaNGmSJCkxMVETJkxQYmJisdWyf/9+TZgwIc/23r1765VXXimWGs6dO6fevXvr559/znd/165d9dprr0mSBgwYoMcff9xl/8iRI/Xf//7X02UCAOAxBAEAAJRxsbGxWrVqlSRpzJgxevrppyVdDAImTpxY7EHAxIkT82yvW7euwsPDi6WGkSNHqkOHDurQoUOefZmZmVq/fr1uuOEGSdLXX3+dp92//vUvPfroo9q7d2+x1AsAgLv5ersAAACA4uoNsGPHDs2fP19HjhzJd/93330np9OpqKgoHTx4UIcPH1a7du1c2gQFBWnQoEF6+umn9cEHHxRH2QAAuBU9AgAAsKGffvpJ/fv3lyT1799f8fHxWrRokSQpJSVF999/v1q0aKG4uDj17t1bBw8elHTxL+Rt27aVw+HQggUL9P/+3/9TgwYNFB0dLUmaPn262rRpo44dOyomJkbPPfecjDGSpK+++kojRoyQJMXHxys+Pl7r16/XY489pjp16ig+Pt6lxvfff1/R0dFq06aNWrRooQULFlj77rvvPoWHh+vuu+/W448/rri4OEVGRmrZsmUFXvfHH3+stm3bKjAw0GX7iBEjFB8fr1tuuUWhoaHq3Lmz2rdvrypVqqh37955auvUqZOWLFmijIyMQr/nAACUGAYAANiCJDNr1izr+b59+4wks2/fPpd2d9xxh7njjjtMVlaWMcaY559/3jRp0sRkZma6HHfPPfeYrKwsc/bsWRMfH2+MMSYmJsZs27bNGGNMSkqKad68uXnvvfesc69cudLk978f48ePN3FxcdbzZcuWmaCgILNz505jjDFbt241AQEB5ptvvrHaDBo0yFSsWNHs2LHDGGPMtGnTTO3atQt8D3r06GEefPDBS+7v1q2befnll40xxgwePNiMHj0633ZHjx41kszmzZsLfD0AAEoiegQAAADL3r17NW/ePP3973+X03nxfxMeeOAB/fTTT9Y8AznuvvtuOZ1OBQUFaeXKlZKkBQsWqFmzZpKkq666SjfffLM+//zzItfx3HPPqXfv3oqMjJQkXXvtterWrZuef/55l3YtWrRQo0aNJF3sZXDw4EGdOXPmkuc9duyYKlWqdMn927dvV5MmTSRd7DWR8/iPKlSoYJ0PAIDShjkCAACAZfv27TLGaPjw4fLz87O2R0RE6MSJEy5ta9asmef4X3/9VY888ohOnjwpPz8/7d+/X3Xr1i1yHT/++KM6derksq1BgwYuwwMkqXr16tbj4OBgSVJycrIqVqyY73mTkpLk65v///4kJyfr119/VdOmTSVJO3futB7/Uc57U1DoAABASUUQAAAA8vjggw8u+wHex8fH5fmBAwfUtWtXTZo0SaNHj5YkTZgwIU9PAnfKXYPD4ZAka06C/FSoUEEXLlxw2TZ79mzNnj1bp0+fVkBAgO6++26dO3dOaWlpGjVqlHx8fPTqq69a8yBIss5RUO8CAABKKoYGAABgUzld/yUpOztb586ds/4CvmvXLpe2Tz/9tHbu3Fng+RISEpSWlqZ+/fpZ2/44mV7u18zMzFRaWlq+52rWrJl+/vlnl22//PKLrr322gJruJzw8HCdPn3aZdvgwYO1atUqderUSXfddZdWrVql22+/Xd26ddPatWu1atUqlxBAknWOsLCwK6oHAABvIAgAAMCmKleuLKfTqTNnzighIUGDBw9WvXr1dMcdd+ill17S+fPnJUnr1q3TwoUL1aBBgwLP16hRIzkcDq1YsUKSlJaWlmd+gKpVq0q62KX+448/1tNPP53vucaOHavFixdrz549ki4OWfjiiy/05JNPXtE1t2vXLk/AkGPDhg267rrrJEnffPON9Tg/P//8sypUqGDNhwAAQGniMAX1nwMAAKXepk2b9Nhjj2n16tWKjIzUgAEDrA/gjz/+uD799FMFBQVp6tSpateunVJSUjRq1CitXr1aV199tYKDg/WPf/xDDRo00Pfff68HH3xQGzduVJs2bXTXXXdp2LBh1mvNmDFDkydPVq1atRQWFiZjjJYvX64ePXroww8/lCTdeeed+umnn1S+fHnNmjVLM2fO1EcffaTExETdcMMNWrp0qSRpzpw5+sc//iF/f39lZGToiSee0O233y7p4nJ/8+bNk3Rx0sJ7771XgwYNsur65z//mW/vgT179qhVq1b67bffFBQUZG1PT09XSEiIfvjhBzVq1EjVqlXTRx99lGfZwBzjx4/XgQMHNHv27Cv+/gAAUNwIAgAAgK0MHz5c1apV09ixY//U8YmJiYqJidFXX32lWrVqubk6AAA8j6EBAADAVl588UX99NNP1hCGorr//vs1ffp0QgAAQKlFjwAAAGBLp06dUuXKlYvtOAAASgqCAAAAAAAAbIShAQAAAAAA2AhBAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBAAAAAADYCEEAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAj/x/YPUpt3+cfHQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Segmented roulette wheel\n", "\n", "The `RouletteWheel` scheme continuously updates the weights of the destroy and repair operators. As a consequence, it might overlook that different operators are more effective in the neighbourhood of different solutions.\n", "\n", "The `SegmentedRouletteWheel` scheme attempts to fix this, by fixing the operator weights $\\omega_i$ for a number of iterations (the _segment length_). Initially, all weights are set to one, as in `RouletteWheel`. A separate score is tracked for each operator $d$ and $r$, to which the observed scores $s_j$ are added in each iteration where $d$ and $r$ are applied. After the segment concludes, these summed scores are added to the weights $\\omega_i$ as a convex combination using a parameter $\\theta$ (the _segment decay rate_) as in `RouletteWheel`. The separate score list is then reset to zero, and a new segment begins." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2897.0.\n" ] } ], "source": [ "select = SegmentedRouletteWheel(scores=[5, 2, 1, 0.5],\n", " decay=0.8,\n", " seg_length=500,\n", " num_destroy=2,\n", " num_repair=1)\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABAIAAAIiCAYAAABSXGq5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqF0lEQVR4nO3deVyU5f7/8fewCCKLO+SGook7KKKmKbhlpvYzT5ZZprYdj1lqWplaLm1aWWmrnTya1lHrpKe0xb6uWW7hkmWuiUvkroAIgsD1+8PDHROIkDMMMK/n4zGP7vu6r7nncw832Lznuq/bZowxAgAAAAAAbsHD1QUAAAAAAIDiQxAAAAAAAIAbIQgAAAAAAMCNEAQAAAAAAOBGCAIAAAAAAHAjBAEAAAAAALgRggAAAAAAANwIQQAAAAAAAG6EIAAAAAAAADdCEAAAKPHOnz+vyMhIVa5cWXXr1nV1OWXaRx99pMjISNlsNk2ePNnV5ZRaixcv5n0EAJRYBAEAAJc5ePCghg8frmbNmikyMlLNmzdXp06d9P777ysrK8vqFxAQoB07dujWW28t1H6PHj2q6tWr680333RW6Zo3b57mzZvnktd2prvvvls7duxwdRlXdejQIU2ePFmHDh1ydSn5uvPOO6/5ffzss89UqVIlxcXFWW2JiYmaPHlyifgZldXfAQBwBwQBAACX+PLLL9WyZUvVrVtXcXFx2rFjh3766Se98cYbevPNN3XTTTfpwoULf2nfPj4+Cg0NVcWKFR1bdC5X+hCU89qVK1d22mvjchAwZcqUEhsEOEJgYKBCQ0Pl5+dntSUmJmrKlCklOgjgdwAASj4vVxcAAHA/e/fuVf/+/fXoo4/qiSeesNsWERGhr776SuHh4Ro2bJgWLFhQ5P1Xr15dP/zwg6PKLTWvjbKlc+fOJeIDf1HxOwAAJR8jAgAAxW7y5MlKS0vTyJEj891+3XXX6a677tJHH32kX375Jc/2b775Rh07dlT9+vUVFhamt99+29q2fv16RUZGqly5choyZIjd837//Xfde++9Cg0NVcOGDdWqVSv95z//ybP/AwcOqH///qpTp44iIiIUERGhsWPHKj4+3pqvIC4uTnFxcYqMjFRkZKSmTZumzZs353ntxx9/XJUqVZKnp6ciIyO1fv16SdJbb72l+vXrKzAwUA8//LD12gsWLFBERIQaNmyounXr6v7779fp06ev+F7++uuvaty4sWw2m2rWrKm7775bkpSVlaXIyEhVqFBBDRs21E8//aTTp09r5MiRioyMVKtWrdSiRQsNHjxYx44du+L+Jemnn37K9z29++67FRISIpvNluc5mzdvVrdu3VSvXj3Vq1dPN998c6E+1MbHx+vBBx9URESEWrVqpYiICI0cOVJJSUlWn5dfflkPPPCAJOmBBx6wfgaJiYkF7vvrr79Wu3bt1KBBA9WtW1f9+/dXfHy8XZ8lS5bopptuUqtWrRQZGano6GgtXLgw3/299dZbatq0qRo3bqzmzZurZ8+e+vDDD/P0y87O1sSJE9W2bVvVrFlTgwYN0vnz5wus9a233lKTJk1ks9msb90/+ugj3XLLLZKkZ555xjru3L8jVzt/7r77btWpU0c2m03r1q3T3/72N2sug1GjRkmS/vnPf6pjx45q3bq1IiIidOONN+qbb76x9lHU34EcKSkpeuyxxxQWFqZGjRqpYcOGevbZZ5WZmWn16dy5s3VO7dixQzfffLPCw8PVpEkTffHFFwW+ZwCAIjAAABSjrKwsExAQYMLCwgrsN2/ePCPJvPzyy1bb4MGDjb+/vxkyZIjJyMiw6zd//ny754eGhprBgwdb6+fOnTP16tUzMTExJiUlxRhjzGeffWZsNptZuHCh1e/QoUOmSpUq5t577zWXLl0yxhjz008/mYoVK5rXXnvN6hcTE2NiYmLyrf3Pr/3GG28YSWbHjh12/SZNmmSee+45a/311183NpvNfP7558YYY86fP286depkIiIiTHp6+hXfq0uXLpng4GDTt29fu/bz58+bGjVqmAsXLhhjjNm4caMJDw83J0+eNMYYk5GRYR5++GETFRVlMjMz7Z4ryUyaNKnA48o5hj//78TmzZuNj4+PGTt2rNU2ZswYExAQYPbv33/F4zDGmIULF5pOnTpZP6OUlBRz22235Tm2NWvWGElmzZo1Be4vx5IlS4yHh4d58803jTGX37M777zT1KxZ05w5c8bq16NHDzNr1ixr/aeffjKVK1c2//3vf+32N2bMGBMUFGS2bNlijLn8Xv7jH/8wQUFBdv0kmdq1a5v169cbY4w5cuSICQwMNE8//fRVa46PjzeSzNy5cwtsy1HY82fu3LlGkunWrZs5fvy4Mebyz3HkyJHGGGMaNWpk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qjp27KjOnTurffv26tatm9544w2dPHnS1eVdVWJioiZPnqzExMRieT2CgD/JmRgj9zf8OetXmjTjqaeeUlJSkvU4evSo0+sEAAAAAFwOATp37qykpCStWbNGa9as0YYNGzRixAiNGTNGb7/9tqtLvKrExERNmTKl2IIALg34kypVqigoKEgnTpywaz9+/LjCwsLyfY6Pj0+eEQQAAAAAAOd75plnlJGRoVdeecXulod9+/bVww8/7MLKSi5GBOSjS5cu2rp1q7VujNG2bdvUrVs3F1YFAAAAAMgtMzNT//znPzVgwAC7ECDHmDFjdPvttys2Nla+vr7WneAWL16sRo0aqW7dulbfBx54QCEhIbr33ns1btw4de3aVd7e3vrwww+t57/88ssaNGiQ2rRpI5vNZn2D//LLLysyMlIxMTGKiYnR+vXrJUkpKSnWc1966SUNGjRI0dHRuuGGGxQfHy9J+uWXXzRgwABJ0oABAxQbG6ulS5c6700TIwLyNW7cOHXv3l0HDhxQgwYN9NFHH8nT01ODBw92dWkAAAAAUGz6vPGdTp1Pv3pHB6sW4KNlj9x41X579uxRcnKyGjdunO/2WrVqqVatWlq7dq3dh/4777xTaWlpmjx5stX2/vvva8iQIfrss8+0Zs0aTZs2TVOmTFHFihWt5//73//WmjVrVLFiRXXr1k02m03vvfee5syZo02bNqlixYrasGGDunbtqj179ig0NNR67n/+8x+tXr1a/v7+6tevnyZPnqwPPvhATZo00aJFi1SvXj0tWrTIrk5nIQjIR5s2bTRv3jwNGDBA5cuXl4eHh1asWKGAgABXlwYAAAAAxebU+XQdT77o6jKuKCkpSZLk7+/vsH1GRkYqMjJSkjRp0iS7bX379lXFihUlybq9/PPPP69HHnnEam/fvr0aNGig999/X88++6z13D59+lh1xsbGas6cOQ6ruagIAq7gtttu02233ebqMpwm6dxp/TpnqCQpo3qk2t377FWeAQAAAMDdVAtwzVxohX3dnA/fFy5ccNhr16pVq9Dbzp8/ryNHjmju3Llavny51X7p0iWdP3/erm+NGjWs5YCAAJfedp4gwE1dSk9Tq5RvJUnbszNdXA0AAACAkqgww/NdqVGjRgoKCtIvv/yiPn36FNj3z3MIZGVl5dvP09Pzivu40raxY8dq6NChBb5+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MWbIkCFm7Nix+fY7fvy4kWS2bt1a4OsBAFASMSIAAABYDh48qEWLFumxxx6Th8fl/0146KGH9Msvv1jzDOS499575eHhIX9/f61Zs0aS9Mknn6hZs2aSpAoVKuiWW27RV199VeQ6nn/+efXt21fh4eGSpObNm6tHjx564YUX7Pq1bNlSjRo1knR5lMGRI0d07ty5K+73xIkTqly58hW379q1S02aNJF0edREzvKfVaxY0dofAAClDXMEAAAAy65du2SM0ciRI+Xt7W21h4aG6tSpU3Z9a9Wqlef5v/32mx599FGdPn1a3t7eOnTokOrVq1fkOn7++Wd16dLFrq1BgwZ2lwdIUo0aNazlgIAASVJycrIqVaqU736TkpLk5ZX///4kJyfrt99+U9OmTSVJe/bssZb/LOe9KSh0AACgpCIIAAAAeXz44YdX/QDv6elpt3748GF1795dU6dO1dixYyVJkydPzjOSwJFy12Cz2STJmpMgPxUrVtSlS5fs2ubNm6d58+bp7Nmz8vX11b333qsLFy4oLS1NY8aMkaenp15//XVrHgRJ1j4KGl0AAEBJxaUBAAC4qZyh/5KUnZ2tCxcuWN+A7927167vM888oz179hS4v7i4OKWlpenOO++02v48mV7u18zMzFRaWlq++2rWrJkOHDhg1/brr7+qefPmBdZwNSEhITp79qxd25AhQ7R27Vp16dJF99xzj9auXas77rhDPXr00Pr167V27Vq7EECStY/g4OBrqgcAAFcgCAAAwE1VqVJFHh4eOnfunOLi4jRkyBCFhYXprrvu0ksvvaSLFy9KkjZs2KBPP/1UDRo0KHB/jRo1ks1m06pVqyRJaWlpeeYHqFatmqTLQ+qXLFmiZ555Jt99TZgwQZ999pn2798v6fIlC19//bXGjx9/TcfcoUOHPAFDjk2bNumGG26QJH3//ffWcn4OHDigihUrWvMhAABQmthMQePnAABAqbdlyxY98cQTWrduncLDwzVw4EDrA/iTTz6pL774Qv7+/poxY4Y6dOiglJQUjRkzRuvWrdN1112ngIAAvfrqq2rQoIF27NihYcOGafPmzWrbtq3uuecejRgxwnqt2bNna9q0aapdu7aCg4NljNHKlSvVq1cvffTRR5Kku+++W7/88ovKly+vuXPnas6cOfr444+VmJioG2+8UcuXL5ckzZ8/X6+++qp8fHyUkZGhp556SnfccYeky7f7W7RokaTLkxbef//9Gjx4sFXXP//5z3xHD+zfv19RUVH6/fff5e/vb7Wnp6crMDBQP/74oxo1aqTq1avr448/znPbwByTJk3S4cOHNW/evGv++QAAUNwIAgAAgFsZOXKkqlevrgkTJvyl5ycmJio6OlqrV69W7dq1HVwdAADOx6UBAADArUyfPl2//PKLdQlDUT344IN6++23CQEAAKUWIwIAAIBbOnPmjKpUqVJszwMAoKQgCAAAAAAAwI1waQAAAAAAAG6EIAAAAAAAADdCEAAAAAAAgBshCAAAAAAAwI0QBAAAAAAA4EYIAgAAAAAAcCMEAQAAAAAAuBGCAAAAAAAA3Mj/B3KoplICSYppAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### $\\alpha$-UCB\n", "\n", "The $\\alpha$-UCB scheme is an upper confidence bound bandit algorithm that learns good (destroy, repair) operator pairs, and plays those more often during the search. The $\\alpha$ parameter controls the exploration performed by the learning algorithm: values of $\\alpha$ near one result in much exploration, whereas values of $\\alpha$ nearer to zero result in more exploitation of good operator pairs. Typically, $\\alpha \\le 0.1$ is a good choice." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2915.0.\n" ] } ], "source": [ "select = AlphaUCB(scores=[5, 2, 1, 0.5],\n", " alpha=0.05,\n", " num_destroy=2,\n", " num_repair=1)\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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ZqZatmzp0p6SkqLQ0FCdOHFC4eHhOnHihOrVq1fo4yms+++/Xx988IGWLFmiAQMGaM6cOdZ17jn1SdKbb76pRYsWuWwbGhqq8+fPF7j/hg0bqkOHDvrnP/+pRx99VDt37tS5c+cUExNj9XnnnXf0wAMPaP78+br77rvlcDi0f/9+1atXzwoo/qzTp08rOztb3333naKjo13WnTp1Kt/5BHKbOHGipk2bps8++0xdu3aVJK1evVqdOnW64hpz3ttPPvlEGzdudFlXsWJFXbhwQZJ07tw5derUSVWrVtXnn3+u0NBQSdLgwYO1evXqPPsr7Kz4FStWdFl2Op0ut8d0hys5f4KCgvK0HT58WDfccIPat2+vNWvWWL9vcXFxf+ocudR7VrVqVUnS8ePH82yT+31zOi9+d+Xu9w0A7IogAABQopxOp3r06KGPPvpIhw8f1lVXXZVvv3Xr1snhcKhXr14u7bknjctx8uRJSbK+Xc9PtWrVdOLEictOWFetWjWdOnXqMkdRdJ06dVK9evU0Z84cdevWTevXr3eZWC7nG8/Ro0dfchLFy7nvvvs0ePBgffvtt1qyZInLaABJmjt3rpo2baqBAwde0f69vLxkjHFp++Okd5UrV5bT6VRsbKyWLFlS5NeYO3euunXrZoUA7pDz3t5xxx165ZVXLtlv3bp12rNnjz766CMrBChof8Vxnlwpd5w/krRs2TIdP35c48ePzzd0u1K537OwsDCrPed3t3r16m57LQDA5XFpAACgxE2ePFkVKlTQjBkz8l1/+PBhffDBBxoyZIgiIyNd1p05c0a//vqrS9umTZsUHh5eYBDQvXt3nTlzJs9953/++Wfdcccd1szl3bt3V0JCQp6Z+qdMmaLp06dbyz4+PtaH4nPnzunTTz8t8JgdDofuvfderVy5Us8884z69+8vHx8fa/3111+vwMBAbd26Nc+2zzzzTL53N/ijfv36KTg4WG+99ZY+/PBD3X333S7r09PTrW9Wc1zujgG5hYaG5vnwu2vXLpflgIAAdejQQT/88IOys7Nd1v3nP//RpEmTCnyNwtaY897l/Aw2b96sPXv25LvPnBn083tv3377beuuEznfeF/u9bt16yan06lNmza5tB85ckRt27bNN6xylz8e986dO/X999+75fyRCv8e5NRS2N+B7t27S1KeERkbNmyQJN10002Fqg8A4B4EAQCAEteoUSN99NFHmjVrll588UWXYcvbtm1Tjx49dMMNN+iNN97Is62/v78ef/xxazj3u+++q++//15PP/10gcPOR44cqfr162v48OFKSUmRdDFUeOihh1SrVi15e18cJDdp0iQFBQVp9OjRVjgQHx+vN954w/owI0n16tVTYmKijDH65ptvrFuvFWTw4MFyOBx69dVX83xbHxQUpOeff14ffPCBdT21JH366ad6/fXX81yPnp+AgAANGDBA7733nq6//vo8w7B79+6tH3/8UUuXLpUkpaWl6ZlnnrnsfnN07txZ3377rX777TdJ0tdff63t27fn6Tdt2jQdPnxYU6ZMsT4o7t69WyNHjsxzacYf9e7dW//3f/+n+Ph4SRcvNcgdwOSoW7euHA6HFQo9/PDD1ofKP3I4HJoxY4bWrl2ruXPnWu0bNmzQU089Zb23119/vapWrarXXnvNOke++uorrVy50mV/ERERGjVqlP75z39adWZkZOjxxx9XZGSkQkJCCjzGPyM0NFQVKlSwjnvKlCn69NNP3XL+SNKNN94oPz8/vfTSS9bv2Pz58/MNWYryO3DXXXfpuuuu08SJE63LAH7++WdNnz5d/fv3V8eOHQv7FgAA3MFz8xQCAOzu559/Ng888IBp0qSJiYqKMk2bNjUdO3Y0c+fONVlZWVa/5ORkExUVZSpXrmzCw8PNhx9+aNq0aWPq1atn6tat6zKbf478Zrg/fPiwGTx4sKldu7Zp3ry5adGihXnhhRdcXssYY/bu3Wtuu+02U7t2bRMVFWU6duxovv76a5c+u3fvNjExMaZRo0amWbNmZtmyZWbDhg0mKirK+Pj4mMqVK+d7278ePXoUOGP8v/71L9OiRQtTr14906JFC3PLLbeYbdu2FfYtLXB29fT0dPP444+bOnXqmGuvvdZ07tzZmrW9Tp065uGHHzbvvfeeiYqKMpJMaGio6dKli7V9UlKSufPOO03NmjVNmzZtzPjx482TTz5pJJmoqCjz0UcfWX2/++47c+ONN5patWqZli1bmhtuuCHPjPH5SUpKMg888ICpWbOmadmypenevbuZNGmSkWTq169vnn/+eavvxIkTzdVXX22aNWtmbrvtNnP+/PkC9/3f//7XtG/f3lx99dWmZcuWpkuXLnl+rhs2bDA33HCDCQsLMx07djT3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AOcoSjvOUZQFnKco7ThHUdqVhXP0ciMBcjBZIAAAAAAANkIQAAAAAACAjRAE2Jifn58mTpwoPz8/T5cC5ItzFKUd5yjKAs5TlHacoyjtyuM5ymSBAAAAAADYCCMCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQiwsSVLligmJkYdOnRQbGysduzY4emSUE59+OGHuvHGG9WlSxfFxMSoX79+2r9/v7XeGKMpU6aoZcuWatOmje6++24lJSW57CMpKUkDBw5UmzZt1LJlS02ePFl/nOLkp59+UlxcnDp27KjWrVvr448/LonDQzny+uuvy+FwaPXq1S7ts2fPVqtWrdS+fXv17NlTiYmJLuszMjI0YsQItW7dWq1atdIjjzyijIwMlz6JiYnq1auX2rdvr5YtW+qtt94q7sNBObNv3z795S9/UadOndS0aVO1a9dO8fHxkvh3FJ6Xnp6uUaNGKSoqSrGxsWrbtq2WLFlirecchSdkZGRo7Nix8vb2dvlvzxwl9ff9m2++Ubt27RQbG6t27dpp7dq1bj3OK2JgSxs3bjRBQUFmz549xhhj3n33XVOrVi2TnJzs4cpQHvn4+Jgvv/zSGGNMVlaWGThwoImMjDTnz583xhgzffp007x5c5OammqMMWbIkCGmd+/eLvvo3bu3uf/++40xxpw7d840bdrUTJ8+3VqfnJxsatWqZd577z1jjDG7d+82gYGBZuPGjcV+fCgfEhMTzdVXX20kmVWrVlntixcvNldddZU5fvy4McaYyZMnm+joaJOVlWX1efjhh0337t1NZmamyczMNF27djUPP/ywtT4rK8tER0ebZ555xhhjzLFjx0xoaKhZvHhxyRwcyrxjx46ZunXrmjVr1hhjjLlw4YLp1KmT+eCDD4wx/DsKz5swYYKpW7euOXPmjDHGmC1bthhfX1/z/fffG2M4R1HyEhISTLt27cw999xjJJmEhASX9SX1933//v0mODjYfP3118YYY1avXm2Cg4PN/v37i+vQC4UgwKZuvfVWM2DAAGs5KyvLhIaGmpkzZ3qwKpRXt912m8vyd999ZySZdevWmczMTFO9enXz1ltvWet37NhhJJlt27YZY4z54YcfjCSza9cuq88bb7xhqlevbjIzM40xxsyYMcNcddVVJjs72+rTr18/07dv3+I8NJQjffv2NW+99VaeIKBFixZm7Nix1vKZM2eMt7e3+fTTT40xxpw4ccIl7DLGmM8++8z4+PiYkydPGmOM+eSTT4yPj485e/as1efRRx81LVu2LOajQnkxevRoc8cdd7i07d271yQmJvLvKEqFXr16mX79+rm0Va9e3bz88suco/CI7du3m71795pVq1blGwSU1N/3UaNGmXbt2rm8dkxMjPn73//utmO9ElwaYFMrV65U69atrWWn06lWrVppxYoVHqwK5dVHH33ksuzv7y/p4jDCbdu26fjx4y7nY+PGjVWxYkXrfFy5cqUCAwMVGRlp9YmJidHx48e1bds2q0+rVq3kcDhc+qxcubLYjgvlx9KlS+Xj46Pu3bu7tJ86dUpbt251OT9DQkLUsGFD6/z8+uuvdeHCBZc+MTExunDhgtasWSPp4vkZGRmpwMBAlz5btmzR6dOni/PQUE58/PHH6tixo0tbgwYNVLNmTf4dRanwl7/8RWvXrtXBgwclScuXL9fx48cVGhrKOQqPaNasmRo0aJDvupL8+/7Hz105fTz9uYsgwIZOnjyp5ORkhYaGurSHhYUpISHBQ1XBTtavX6+aNWuqffv22rdvnyS5nI8Oh0OhoaHW+bhv3758z1dJl+2TlJSkU6dOFduxoOw7d+6cxo8fr1deeSXPupzzq6B/L/ft2ydvb29VrVrVWl+9enV5eXkV6RwGLuXcuXNKSEhQVlaW7rrrLrVv317du3fXF198IUn8O4pSYfDgwXryySfVvHlzNW7cWDfffLNuu+023X777ZyjKHVK8u/7pfp4+u+/t0dfHR6RmpoqSfLz83Np9/Pzs9YBxSU9PV3Tpk3T66+/Lh8fn0Kdj6mpqfmuz1lXmD5VqlRx/8GgXHjyySc1dOhQXXXVVXkmEirs+enr65tnv76+vi59ckbC5N5H7tcALuXMmTOSLp6rq1atUlRUlFauXGmFAfw7itLgnXfe0dSpU7V582bVr19fP/zwg1asWCGn08k5ilKnJP++X+q89fTff0YE2FBAQICkix/IcktPT7fWAcXlr3/9q/r3769bb71VUuHOx4CAgHzX596+MH2AP9qyZYs2btyooUOH5ru+sOfnH2cQli7ONMz5CXfw8vKSJPXu3VtRUVGSpC5duqhz586aMWMG/47C44wxeuyxx/TXv/5V9evXlyRFRUXp888/13PPPcc5ilKnJP++X6qPp89ZggAbqlq1qkJCQnT06FGX9iNHjigiIsJDVcEOxo4dq4CAAD399NNWW84598fz8ejRo9a6iIiIfM/X3Ntfqk9ISAjfEOCSPvvsM6Wlpalz586Ki4vTgAEDJEkjR45UXFycsrOzJeU9P3P/exkREaHMzEydPHnSWn/8+HFlZWUV6hyuV69e8Rwcyo3q1avLz89PtWrVcmkPDw9XQkIC/47C444fP67Tp0+rbt26Lu316tXT4sWLOUdR6lzqnCyOv++X6uPpz10EATbVuXNnbd682Vo2xmjLli3q2rWrB6tCeTZ16lQdOnRIr7/+uiRp8+bN2rx5s5o3b67q1au7nI87d+7UuXPnrPOxS5cuSklJ0Z49e6w+8fHxqlGjhpo3b2712bJli8v9huPj4zmnUaAnn3xSW7Zs0erVq7V69WotXLhQkvTqq69q9erViomJUYsWLVzOz+TkZO3Zs8c6tzp27CgfHx+XPvHx8fLx8bEmd+vSpYt2796tlJQUlz6tWrVS5cqVS+JQUYZ5eXmpffv2Onz4sEv70aNHdfXVV/PvKDyuWrVq8vPzy3OOHj58WAEBAZyjKHUqV65cYn/fu3Tp4rKPnD4eP289es8CeMzGjRtNcHCw2bt3rzHGmAULFphatWqZ5ORkD1eG8ujNN980TZs2NevXrzffffed+e6778zEiRPN3LlzjTEX7y0cFRVl3Vv4vvvuy/fewg8++KAxxpjU1FRz7bXX5ntv4X/961/GGGP27NljgoKCuLcwiiQhISHP7QMXL15satasaU6cOGGMMebpp5/O9z7DPXr0MFlZWSYrK8vceOONLvcZzszMNNHR0ea5554zxhhz/PhxExYW5nKfYaAgy5cvN5UrVzYHDhwwxly89Zqfn59ZunSpMYZ/R+F5Dz74oImMjDSnTp0yxhizefNm4+PjY1599VVjDOcoPOdStw8sqb/v+/fvN8HBweabb74xxhjz9ddfm+DgYLN///7iOuRCcRiTK1KDrSxZskTPPvusKlSoIKfTqVmzZqlp06aeLgvlzNmzZ1WpUiVriHVuc+fO1eDBg2WM0dNPP63//Oc/8vb21jXXXKM33nhDlSpVsvqeOXNGw4cP1969e5WRkaE+ffroqaeecrmF0I4dOzRs2DBlZ2crLS1N48aNU9++fUviMFEOjBw5Uhs2bNDGjRsVFRWlRo0aWSME3nrrLb399tvy9/dX5cqVNXv2bNWuXdvaNj09XY8++qi+/fZbSdL111+vl156yWVyoF9//VVDhw7V6dOnlZaWpgceeEB/+9vfSvYgUaa99957mj59ugIDA5WZmamRI0eqf//+ksS/o/C41NRUTZo0SStWrFBAQIDOnj2rQYMGadSoUXI4HJyjKHEZGRm68cYbdebMGf3www9q27at6tSp43Jb65L6+7527Vo9+uij8vX1VXp6ul566SV16NChmN+BghEEAAAAAABgI8wRAAAAAACAjRAEAAAAAABgIwQBAAAAAADYCEEAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAjBAEAAAAAANgIQQAAALAdY4x+++23K9o2MTHRzdUAAFCyCAIAACjnNm3apLi4ODkcDjVq1EhTpkyRJJ05c0aTJk3SmTNnSqyW/fv3a9KkSXna+/Tpo1deeaVEajh37pz69Omjn3/+Od/13bp108yZMyVJd955px5//HGX9aNGjdJ//vOf4i4TAIBiQxAAAEA516ZNG61evVqSNHbsWD311FOSLgYBkydPLvEgYPLkyXna69Wrp7CwsBKpYdSoUerYsaM6duyYZ11mZqbWr1+vG264QZL0zTff5On3z3/+U48++qj27dtXIvUCAOBu3p4uAAAAoKRGA+zcuVOLFi3S4cOH812/detWOZ1ORUVF6eDBg0pMTFT79u1d+gQGBmrQoEF66qmn9N5775VE2QAAuBUjAgAAsKGffvpJAwYMkCQNGDBAcXFxWrJkiSQpJSVFDzzwgFq0aKHY2Fj16dNHBw8elHTxG/J27drJ4XDoo48+0v/7f/9PDRo0UHR0tCRp1qxZatu2rTp16qSYmBg9++yzMsZIkr766iuNHDlSkhQXF6e4uDitX79ejz32mOrWrau4uDiXGhcsWKDo6Gi1bdtWLVq00EcffWStu//++xUWFqZ77rlHjz/+uGJjYxUZGanly5cXeNwff/yx2rVrp4CAAJf2kSNHKi4uTrfccotCQkLUpUsXdejQQdWqVVOfPn3y1Na5c2ctXbpUGRkZhX7PAQAoNQwAALAFSWbu3LnWckJCgpFkEhISXPrdcccd5o477jBZWVnGGGOee+4506RJE5OZmemy3b333muysrLM2bNnTVxcnDHGmJiYGLN9+3ZjjDEpKSmmefPm5t1337X2vWrVKpPff35MnDjRxMbGWsvLly83gYGBZteuXcYYY7Zt22b8/f3Nt99+a/UZNGiQqVy5stm5c6cxxpgZM2aYq6++usD3oGfPnmbo0KGXXN+9e3fz0ksvGWOMGTx4sBkzZky+/Y4cOWIkmc2bNxf4egAAlEaMCAAAAJZ9+/Zp4cKF+vvf/y6n8+J/Jjz44IP66aefrHkGctxzzz1yOp0KDAzUqlWrJEkfffSRmjVrJkmqWLGibr75Zn3xxRdFruPZZ59Vnz59FBkZKUm69tpr1b17dz333HMu/Vq0aKFGjRpJujjK4ODBgzp9+vQl93v06FFVqVLlkut37NihJk2aSLo4aiLn+R9VqlTJ2h8AAGUNcwQAAADLjh07ZIzRiBEj5OPjY7WHh4fr+PHjLn1r166dZ/tff/1VjzzyiE6cOCEfHx/t379f9erVK3IdP/74ozp37uzS1qBBA5fLAySpZs2a1vOgoCBJUnJysipXrpzvfpOSkuTtnf9//iQnJ+vXX39V06ZNJUm7du2ynv9RzntTUOgAAEBpRRAAAADyeO+99y77Ad7Ly8tl+cCBA+rWrZumTJmiMWPGSJImTZqUZySBO+WuweFwSJI1J0F+KlWqpAsXLri0zZs3T/PmzdOpU6fk7++ve+65R+fOnVNaWppGjx4tLy8vvfrqq9Y8CJKsfRQ0ugAAgNKKSwMAALCpnKH/kpSdna1z585Z34Dv3r3bpe9TTz2lXbt2Fbi/+Ph4paWlqX///lbbHyfTy/2amZmZSktLy3dfzZo1088//+zS9ssvv+jaa68tsIbLCQsL06lTp1zaBg8erNWrV6tz5866++67tXr1at1+++3q3r271q5dq9WrV7uEAJKsfYSGhv6pegAA8ASCAAAAbKpq1apyOp06ffq04uPjNXjwYEVEROiOO+7Qiy++qPPnz0uS1q1bp8WLF6tBgwYF7q9Ro0ZyOBxauXKlJCktLS3P/ADVq1eXdHFI/ccff6ynnnoq332NHz9en3zyifbu3Svp4iULX375pcaNG/enjrl9+/Z5AoYcGzZs0HXXXSdJ+vbbb63n+fn5559VqVIlaz4EAADKEocpaPwcAAAo8zZt2qTHHntMa9asUWRkpO68807rA/jjjz+uzz77TIGBgZo+fbrat2+vlJQUjR49WmvWrNFVV12loKAgvfzyy2rQoIG+//57DR06VBs3blTbtm119913a/jw4dZrzZ49W1OnTlWdOnUUGhoqY4xWrFihnj176v3335ck3XXXXfrpp59UoUIFzZ07V3PmzNGHH36oM2fO6IYbbtCyZcskSfPnz9fLL78sPz8/ZWRk6IknntDtt98u6eLt/hYuXCjp4qSF9913nwYNGmTV9Y9//CPf0QN79+5Vq1at9NtvvykwMNBqT09PV3BwsH744Qc1atRINWrU0IcffpjntoE5Jk6cqAMHDmjevHl/+ucDAEBJIwgAAAC2MmLECNWoUUPjx4+/ou3PnDmjmJgYffXVV6pTp46bqwMAoPhxaQAAALCVF154QT/99JN1CUNRPfDAA5o1axYhAACgzGJEAAAAsKWTJ0+qatWqJbYdAAClBUEAAAAAAAA2wqUBAAAAAADYCEEAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAjBAEAAAAAANgIQQAAAAAAADZCEAAAAAAAgI0QBAAAAAAAYCP/H4emsugHgrlJAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### More advanced bandit algorithms\n", "\n", "Operator selection can be seen as a multi-armed-bandit problem.\n", "Each operator pair is a bandit arm, and the reward for each arm corresponds to the evaluation outcome depending on the score array.\n", "Accordingly, any multi-armed bandit algorithm can be used as an operator selection scheme.\n", "ALNS integrates with [MABWiser](https://github.com/fidelity/mabwiser/) to provide access to more bandit algorithms. \n", "You may install MABWiser as an extra dependency using `pip install alns[mabwiser]`.\n", "\n", "Here, we use a simple epsilon-greedy algorithm from MABWiser.\n", "The algorithm picks a random operator pair with probability $\\epsilon=0.15$ and otherwise chooses the operator pair with the largest mean so far." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2869.0.\n" ] } ], "source": [ "select = MABSelector(scores=[5, 2, 1, 0.5],\n", " num_destroy=2,\n", " num_repair=1,\n", " learning_policy=LearningPolicy.EpsilonGreedy(epsilon=0.15))\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABAIAAAIiCAYAAABSXGq5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqoUlEQVR4nO3deVwW5f7/8fd9s0os7pAbiibu4IJapuCWmdrXPFm2mNrqMUs9WllWLm2WWdluJ4+mdcw66iltseNuuYVamrnmGrkvIIIgcP3+8MfEHYigN9zAvJ6PB3XPNdfMfOZmUO8311zjMMYYAQAAAAAAW3B6ugAAAAAAAFB8CAIAAAAAALARggAAAAAAAGyEIAAAAAAAABshCAAAAAAAwEYIAgAAAAAAsBGCAAAAAAAAbIQgAAAAAAAAGyEIAAAAAADARggCAAAl3pkzZxQdHa2KFSuqdu3ani6nTPvkk08UHR0th8OhcePGebqcUmvOnDm8jwCAEosgAADgMXv27NGQIUPUpEkTRUdHq2nTpurQoYM+/PBDZWZmWv2CgoL0008/6eabby7Qfg8ePKiqVavq7bffLqrSNWPGDM2YMcMjxy5Kd911l3766SdPl3FJ+/bt07hx47Rv3z5Pl5Kn22+//Yrfxy+++EIVKlRQfHy81Xb69GmNGzeuRHyPyurPAADYAUEAAMAjvv76azVv3ly1a9dWfHy8fvrpJ23ZskVvvfWW3n77bd1www06e/bsZe3bz89P4eHhKl++vHuLzuFiH4Kyj12xYsUiOzYuBAHjx48vsUGAOwQHBys8PFwBAQFW2+nTpzV+/PgSHQTwMwAAJZ+3pwsAANjPjh071LdvXz366KN6/PHHXdZFRUXpm2++UWRkpAYPHqxZs2YVev9Vq1bVjz/+6K5yS82xUbZ07NixRHzgLyx+BgCg5GNEAACg2I0bN06pqakaNmxYnuuvvvpq3XHHHfrkk0/066+/5lr/3XffqX379qpbt64iIiL07rvvWutWrVql6Oho+fr6auDAgS7b/fHHH7rnnnsUHh6u+vXrq0WLFvrPf/6Ta/+7d+9W3759VatWLUVFRSkqKkqjRo3S3r17rfkK4uPjFR8fr+joaEVHR2vixIlat25drmM/9thjqlChgry8vBQdHa1Vq1ZJkt555x3VrVtXwcHBevjhh61jz5o1S1FRUapfv75q166t++67T8ePH7/oe/nbb7+pYcOGcjgcql69uu666y5JUmZmpqKjo3XVVVepfv362rJli44fP65hw4YpOjpaLVq0ULNmzTRgwAAdOnToovuXpC1btuT5nt51110KCwuTw+HItc26devUpUsX1alTR3Xq1NGNN95YoA+1e/fu1QMPPKCoqCi1aNFCUVFRGjZsmBITE60+kyZN0v333y9Juv/++63vwenTp/Pd97fffqu2bduqXr16ql27tvr27au9e/e69Jk3b55uuOEGtWjRQtHR0YqJidHs2bPz3N8777yjxo0bq2HDhmratKm6d++ujz/+OFe/rKwsPf3002rTpo2qV6+u/v3768yZM/nW+s4776hRo0ZyOBzWb90/+eQT3XTTTZKkZ5991jrvnD8jl7p+7rrrLtWqVUsOh0MrVqzQ3/72N2sug+HDh0uS/vnPf6p9+/Zq1aqVoqKidP311+u7776z9lHYn4FsycnJ+sc//qGIiAg1aNBA9evX13PPPaeMjAyrT8eOHa1r6qefftKNN96oyMhINWrUSF999VW+7xkAoBAMAADFKDMz0wQFBZmIiIh8+82YMcNIMpMmTbLaBgwYYAIDA83AgQNNenq6S7+ZM2e6bB8eHm4GDBhgLZ86dcrUqVPHxMbGmuTkZGOMMV988YVxOBxm9uzZVr99+/aZSpUqmXvuucecP3/eGGPMli1bTPny5c3rr79u9YuNjTWxsbF51v7XY7/11ltGkvnpp59c+o0dO9Y8//zz1vIbb7xhHA6H+fLLL40xxpw5c8Z06NDBREVFmbS0tIu+V+fPnzehoaGmd+/eLu1nzpwx1apVM2fPnjXGGLNmzRoTGRlpjh49aowxJj093Tz88MOmZcuWJiMjw2VbSWbs2LH5nlf2Ofz1nxPr1q0zfn5+ZtSoUVbbyJEjTVBQkNm1a9dFz8MYY2bPnm06dOhgfY+Sk5PNLbfckuvcli1bZiSZZcuW5bu/bPPmzTNOp9O8/fbbxpgL79ntt99uqlevbk6cOGH169atm3nzzTet5S1btpiKFSua//73vy77GzlypAkJCTHr1683xlx4L//+97+bkJAQl36STM2aNc2qVauMMcYcOHDABAcHm2eeeeaSNe/du9dIMtOnT8+3LVtBr5/p06cbSaZLly7m8OHDxpgL38dhw4YZY4xp0KCBtQ9jLrzXAQEBZsOGDS7HK8zPQHp6urn22mtNs2bNzJEjR4wxxuzYscNUq1bN3H777S7bZl9TDz74oPVzPnz4cBMUFGROnTp10fcLAFBwBAEAgGJ19OhRI8lce+21+fb79ttvjSQzZMgQq23AgAFGkjl48KBL3+bNm5vw8HCTlZVltf31g8izzz5rJFkf3LJ16tTJJZQYMGCA8fX1NceOHXPp99hjj5l33nnHWi7Mh6CTJ08af39/88gjj1htmZmZpk6dOub33383xhiTlJRkAgMDzU033eSyr5UrV+YZdPzV448/bry9va0PdsYY8+GHH5qHHnrIWk5OTjYHDhxw2W7btm1Gklm3bp1L+5UEAR06dDAVK1Y0qampVtvZs2dNYGCguffee/M9j5MnT7qcgzHGfPPNN0aS9QHSmMIFAVlZWSY8PNw0atTIpf3AgQNGkpkwYYLVtnPnzlyhyO233266d+9uLe/evds4nU4zYsQIl34nTpwwNWvWdGmTZHr27OnSdtNNN5nrrrvuknUXJggozPWTHQT8+9//ttrOnDljvb/btm3LVUubNm3M3//+d5e2wvwMZB/zr4HK5MmTjSSzYsUKqy37moqPj7fa1q1bZySZ7777Ls/jAQAKh1sDAAClSoUKFVSjRg2XttatW2v//v1KSEi46HbfffedypUrp5YtW7q0N23aVHv27NH+/fslSYsWLVKdOnVUuXJll36vvPKKhgwZctk133LLLfrkk0+UlpYmSVq8eLEaNmyo6tWrS5JWr16t5ORkXX/99bnqk6SlS5fme4z77rtPGRkZmjlzptU2bdo03XfffdbyVVddpbVr16pr167Wkxr69Okj6cItBu6QkpKi77//Xq1atZK/v7/VHhAQoLp1617yPIKDg/XFF18oNjbWqnHo0KFXVOPOnTu1f//+XO9tzZo1FRIS4lLTVVddpeHDh6tly5Zq1qyZoqOj9d1337kce/HixcrKylLr1q1d9lexYkUdOHAg1/EbNGjgslypUiUdPnz4ss7lYi7n+mnSpIn1OjAwUFWrVpUkOZ1ODRo0SM2bN1dUVJSio6P1yy+/XNE1smjRIklSmzZtXNqvvfZaSRdu2/irnO9b9s+ju983ALArJgsEABSrSpUqKSgo6JL/oM9eHxER4dIeHBycq2/27OQJCQm5QoJsx48fV0ZGhlq0aOHSnpycrNDQUB0/flzh4eE6fvy46tSpU+DzKaj7779fs2fP1vz589WvXz9NmzbNus89uz5Jeu+99zRnzhyXbUNDQ3Xu3Ll891+/fn21b99e//rXv/TYY49p27ZtOnv2rGJiYqw+H374oR544AHNnDlTd999txwOh/bt26c6depYAcWVOnXqlLKysvTjjz8qOjraZd3JkyfznE8gp7Fjx2rSpEn66quv1KVLF0nS8uXL1bFjx8uuMfu9/eKLL7Ru3TqXdVdddZXOnz8vSTp79qw6duyoSpUq6euvv1ZoaKgkaeDAgVq+fHmu/RV0VvyrrrrKZdnpdLo8HtMdLuf6CQoKytV26NAhXX/99WrXrp1WrFhh/bzFxcVd0TVysfesUqVKkqRjx47l2ibn++Z0XvjdlbvfNwCwK4IAAECxcjqd6t69uz7//HMdOnRIV199dZ79Vq9eLYfDoZ49e7q055w0LtuJEyckyfrtel4qV66s48ePX3LCusqVK+vkyZOXOIvC69ixo+rUqaNp06apa9euWrNmjcvEctm/8Rw5cuRFJ1G8lPvuu08DBw7UDz/8oPnz57uMBpCk6dOnq3Hjxurfv/9l7d/Ly0vGGJe2v056V6FCBTmdTsXGxmr+/PmFPsb06dPVtWtXKwRwh+z39o477tDrr79+0X6rV6/Wzp079fnnn1shQH77K4rr5HK54/qRpIULF+rYsWMaM2ZMnqHb5cr5noWFhVnt2T+7VapUcduxAACXxq0BAIBiN378eJUrV05TpkzJc/2hQ4c0e/ZsDRo0SJGRkS7rTp8+rd9//92lbf369QoPD883COjWrZtOnz6d67nzu3fv1h133GHNXN6tWzft3bs310z9EyZM0OTJk61lHx8f60Px2bNn9eWXX+Z7zg6HQ/fee6+WLFmi559/Xrfffrt8fHys9dddd50CAwO1adOmXNs+//zzeT7d4K/69u2r4OBgvf/++/rss8909913u6xPS0uzfrOa7VJPDMgpNDQ014ff7du3uywHBASoffv2+vnnn5WVleWy7r///a/GjRuX7zEKWmP2e5f9PdiwYYN27tyZ5z6zZ9DP67394IMPrKdOZP/G+1LH79q1q5xOp9avX+/SfvjwYbVp0ybPsMpd/nre27Zt008//eSW60cq+HuQXUtBfwa6desmSblGZKxdu1aSdOONNxaoPgCAexAEAACKXYMGDfT555/r3Xff1SuvvOIybHnz5s3q3r27rr/+er3zzju5tvX399cTTzxhDef+6KOP9NNPP+m5557Ld9j58OHDVbduXQ0dOlTJycmSLoQKDz/8sKpXry5v7wuD5MaNG6egoCCNHDnSCgfi4+P1zjvvWB9mJKlOnTpKSEiQMUbff/+99ei1/AwcOFAOh0NvvPFGrt/WBwUF6aWXXtLs2bOt+6kl6csvv9Tbb7+d6370vAQEBKhfv376+OOPdd111+Uaht2rVy/98ssvWrBggSQpNTVVzz///CX3m61Tp0764Ycf9Mcff0iSVq5cqS1btuTqN2nSJB06dEgTJkywPiju2LFDw4cPz3Vrxl/16tVL//vf/xQfHy/pwq0GOQOYbLVr15bD4bBCoUceecT6UPlXDodDU6ZM0apVqzR9+nSrfe3atXr22Wet9/a6665TpUqV9NZbb1nXyNKlS7VkyRKX/UVERGjEiBH617/+ZdWZnp6uJ554QpGRkQoJCcn3HK9EaGioypUrZ533hAkT9OWXX7rl+pGkG264QX5+fnr11Vetn7GZM2fmGbIU5mfgrrvu0rXXXquxY8datwHs3r1bkydP1u23364OHToU9C0AALiD5+YpBADY3e7du80DDzxgGjVqZKKiokzjxo1Nhw4dzPTp001mZqbVLykpyURFRZkKFSqY8PBw89lnn5nWrVubOnXqmNq1a7vM5p8trxnuDx06ZAYOHGhq1KhhmjVrZpo3b25efvlll2MZY8yuXbvMrbfeamrUqGGioqJMhw4dzMqVK1367Nixw8TExJgGDRqYJk2amIULF5q1a9eaqKgo4+PjYypUqJDnY/+6d++e74zx//73v03z5s1NnTp1TPPmzc3NN99sNm/eXNC3NN/Z1dPS0swTTzxhatasaZo2bWo6depkzdpes2ZN88gjj5iPP/7YREVFGUkmNDTUdO7c2do+MTHR3HnnnaZatWqmdevWZsyYMeaZZ54xkkxUVJT5/PPPrb4//vijueGGG0z16tVNixYtzPXXX59rxvi8JCYmmgceeMBUq1bNtGjRwnTr1s2MGzfOSDJ169Y1L730ktV37NixplatWqZJkybm1ltvNefOnct33999951p166dqVWrlmnRooXp3Llzru/r2rVrzfXXX2/CwsJMhw4dzP33329uuukm4+PjY6KioszWrVutvm+99ZZp2LChadCggWnatKkZNWqU9aSEb7/91uV9vPPOO40xxnTu3NlUqFAhz/3l9Pbbb5uGDRta35v+/ftb66ZOnWrCw8NN06ZNTZcuXVyecHGp62fIkCGmZs2aRpJp2LCh6dWrV65jf/3116Z58+amevXqJjY21owcOdK0atXKXHXVVSYqKsp6hF9hfwaSkpLM8OHDTe3atU1kZKSpV6+emTBhgvWYTmOM6d27twkNDbWuqZUrV5rPP//c5b3I+fQNAMDlcRjzl5v9AAAoA2rXrq24uDjNmDHD06UAAACUKNwaAAAoE9avX+9y///Zs2eZgAwAACAPBAEAgDLh66+/tuYUWLdunY4fP66bbrrJw1UBAACUPNwaAAAoExYtWqSRI0day48++qgefPBBD1YEAABQMhEEAAAAAABgI9waAAAAAACAjRAEAAAAAABgI96eLqAsysrK0h9//KGgoCA5HA5PlwMAAAAAKOOMMTpz5oyqVasmpzP/3/kTBBSBP/74QzVr1vR0GQAAAAAAmzl48KBq1KiRbx+CgCIQFBQk6cI3IDg42MPVAAAAAADKuqSkJNWsWdP6PJofgoAikH07QHBwMEEAAAAAAKDYFOT2dCYLBAAAAADARggCAAAAAACwEYIAAAAAAABshDkCAAAAAACSLjyCLiMjQ5mZmZ4uBX/h5eUlb29vtzyiniAAAAAAAKD09HQdOnRIKSkpni4FFxEQEKCrr75avr6+V7QfgoCLmD9/vl588UX5+/vL6XTq3XffVePGjT1dFgAAAAC4XVZWlvbu3SsvLy9Vq1ZNvr6+bvnNM9zDGKP09HQdO3ZMe/fu1TXXXCOn8/Lv9CcIyMP69es1YMAAbdiwQddcc41mzpypbt26adu2bQV6JiMAAAAAlCbp6enKyspSzZo1FRAQ4OlykIdy5crJx8dH+/fvV3p6uvz9/S97X0wWmIeJEyeqR48euuaaayRJd999tzIyMjRjxgzPFgYAAAAARehKfsuMoueu7w/f5TwsWbJErVq1spadTqdatmypxYsXe7AqAAAAAACuHLcG/MWJEyeUlJSk0NBQl/awsDD9+OOPeW6TlpamtLQ0azkpKalIawQAAAAA4HIxIuAvsmfI9PPzc2n38/O76OyZL730kkJCQqyvmjVrFnmdAAAAAIALUlJSNGHCBLVv314dO3bUddddpy5duuitt97S0aNHPV3eJZ0+fVrjxo3T6dOni+V4BAF/kT0xRs7f8GcvX2zSjCeffFKJiYnW18GDB4u8TgAAAADAhRCgY8eOSkxM1LJly7Rs2TKtXr1aQ4cO1ciRI/Xuu+96usRLOn36tMaPH19sQQC3BvxFpUqVFBISoiNHjri0Hz58WBEREXlu4+fnl2sEAQAAAACg6D377LNKT0/Xq6++6vLIw969e+vhhx/2YGUlFyMC8tCpUydt2LDBWjbGaOPGjerSpYsHqwIAAAAA5JSRkaF//vOf6tevn0sIkG3kyJG69dZbFRcXJ39/f+tJcHPmzFGDBg1Uu3Ztq+/999+vsLAw3XPPPRo9erQ6d+4sHx8fffzxx9b2kyZNUv/+/dW6dWs5HA7rN/iTJk1SdHS0YmNjFRsbq1WrVkmSkpOTrW1feeUV9e/fXzExMbr22mu1d+9eSdKvv/6qfv36SZL69eunuLg4zZ8/v+jeNDEiIE+jR49W165dtXv3btWrV0+ffPKJvLy8NGDAAE+XBgAAAADFptdb3+vYmbRLd3SzKkF+WvDI9Zfst337diUlJalhw4Z5rq9Ro4Zq1Kih5cuXu3zov/3225Wamqpx48ZZbR9++KEGDhyoL774QsuWLdPEiRM1fvx4lS9f3tr+3//+t5YtW6by5curS5cucjgc+uCDDzRt2jStXbtW5cuX1+rVq9W5c2dt375d4eHh1rb/+c9/tHTpUgUGBqpPnz4aN26cPvroIzVq1Eiffvqp6tSpo08//dSlzqJCEJCH1q1ba8aMGerXr5/KlSsnp9OpRYsWKSgoyNOlAQAAAECxOXYmTYeTznm6jItKTEyUJAUGBrptn9HR0YqOjpYkjR071mVd7969Vb58eUmyHi//wgsv6JFHHrHar7vuOtWrV08ffvihnnvuOWvbXr16WXXGxcVp2rRpbqu5sAgCLuKWW27RLbfc4ukyikziqeP6bdogSVJ61Wi1vee5S2wBAAAAwG6qBHlmLrSCHjf7w/fZs2fdduwaNWoUeN2ZM2d04MABTZ8+XQsXLrTaz58/rzNnzrj0rVatmvU6KCjIo4+dJwiwqfNpqWqRvFKStCkrw8PVAAAAACiJCjI835MaNGigkJAQ/frrr+rVq1e+ff86h0BmZmae/by8vC66j4utGzVqlAYNGpTv8XNu63A4ZIzJt39RYrJAAAAAAECp5OXlpb///e/67LPP8lzfq1cvjRo1StKF38Ln/C19QkLCFR8/KChItWrV0o4dO1za58yZo7lz5xZ4P07nnx/Ns7Ky3DrCIc/jFeneAQAAAAAoQuPGjVNAQIAef/xxZWRcGO1sjNFbb72lrVu36rHHHpN04d7/1atXS7owm/+CBQvccvwxY8boo48+0oEDByRJx44d0/jx49WkSZMC76NSpUpyOp06deqU4uPjNXDgQLfUdjHcGgAAAAAAKLX8/Pz0v//9T6+88opiY2Pl4+OjtLQ0NW7cWCtWrFBoaKikC4HBnXfeqdatW6tevXq69dZbNXbsWMXFxWnhwoV6+umn9e2330qS1ZZzcr/Dhw9r4sSJ+v777/Xhhx9ax3/wwQeVnJysG2+8UZUqVZKXl5feeOMNRUZG5trW19dXXl5emjhxog4fPqzOnTtryZIluuqqqzRq1Cj1799fgYGBmjx5cpG+Zw7jyRsTyqikpCSFhIQoMTFRwcHBni4nT8cPH1Tl9y8kVJsCrlPzx7/xcEUAAAAAPOXcuXPau3ev6tSpI39/f0+Xg4vI7/tUmM+h3BoAAAAAAICNEATY1F9nzAQAAAAA2ANBAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBkEM8OAIAAAAA7IIgwKaYLBAAAAAA7IkgAAAAAAAAGyEIAAAAAADARggCAAAAAACl0vr16xUXFyeHw6EGDRooLi5OMTExqlevnp566illZma65Tjjxo3Tvn373LKvksDb0wUAAAAAAHA5WrdureXLl8vhcGj06NEaOHCgJGnTpk1q06aNqlevrocffviKjzN+/HjFxcWpdu3aV7yvkoARAZAMTw0AAAAAUHY0b95cTZo00dKlSz1dSolEEGBTDgffegAAAABl1/nz512eljZp0iRFR0crNjZWsbGxWrVqlbVuz549uvHGG9WhQwe1b99et912m3bs2KGTJ08qLi5OkjR8+HDFxcXpvffeK+5TcTtuDQAAAAAA5G1qrJR8tPiPG1hVemjFZW++cOFCbd++XRMnTpQkffDBB5o2bZrWrl2r8uXLa/Xq1ercubO2b9+u8PBwDR06VK1bt9aECRMkSQMGDNCaNWs0cOBA69aDN954wwoFSjuCAAAAAABA3pKPSmf+8HQVBTJx4kTNmDFDJ06c0G+//abRo0ere/fukqQXXnhBjzzyiMqXLy9Juu6661SvXj19+OGHeu6555SQkKDQ0FBlZmbKy8tLL7zwgstogrKGIAAAAAAAkLfAqqXmuDknCzx+/Lj69OmjW265RR9//LEOHDig6dOna+HChVb/8+fP68yZM5IuTAbYv39/LVu2TP369dO9996r+vXru+VUSiKCAAAAAABA3q5geL4nVa5cWY8++qj69u2rPXv2SJJGjRqlQYMG5dm/d+/e+v333/Xpp5/qww8/1OTJk/X555+rd+/exVh18WHGOMghnhoAAAAAoGzx9va2/l+rVi3t2LHDZf2cOXM0d+5cSdJ//vMfhYSE6KGHHtKPP/6oW265RdOmTbP65rxNIHsUQWlGEGBTZfl+FwAAAAD2lp6ero8++kj16tVTZGSkxowZo48++kgHDhyQJB07dkzjx49XkyZNJElPPPGEfvnlF2v78+fPu9waUKVKFZ06dUpHjx5Vp06divdkigC3BgAAAAAASqX169fr8ccfl/TnZIGZmZk6efKkIiMj9fXXX8vb21sPPvigkpOTdeONN6pSpUry8vLSG2+8ocjISEnSo48+qkGDBumqq65SamqqGjdurPHjx1vHefrpp/Xkk08qJCRETz75pEfO1Z0cxhjGhbtZUlKSQkJClJiYqODgYE+Xk6fTxw+r/NsXLvqfy7VR1BPfebgiAAAAAJ5y7tw57d27V3Xq1JG/v7+ny8FF5Pd9KsznUG4NAAAAAADARggCAAAAAACwEYIASDw1AAAAAABsgyDApnhqAAAAAADYE0EAAAAAAECSxFzyJZu7vj8EAQAAAABgcz4+PpKklJQUD1eC/GR/f7K/X5fL2x3FAAAAAABKLy8vL5UvX15Hjx6VJAUEBHA7cQlijFFKSoqOHj2q8uXLy8vL64r2RxAAAAAAAFBYWJgkWWEASp7y5ctb36crQRAAifuAAAAAANtzOBy6+uqrVbVqVZ0/f97T5eAvfHx8rngkQDaCALtyMD0EAAAAgNy8vLzc9oETJROfBgEAAAAAsBGCAAAAAAAAbIQgAAAAAAAAGyEIAAAAAADARggCIJ4OCgAAAAD2QRBgVw4+/gMAAACAHREEAAAAAABgIwQBAAAAAADYCEEAAAAAAAA2QhAAScbTBQAAAAAAiglBgE05mCwQAAAAAGyJIAAAAAAAABshCAAAAAAAwEYIAgAAAAAAsBGCAAAAAAAAbIQgAOKpAQAAAABgHwQBNsVTAwAAAADAnggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQgAAAAAAMBGCAIgh+GpAQAAAABgFwQBNsVTAwAAAADAnggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQgAAAAAAMBGvD1dgDs1aNBAYWFhLm133nmnHnzwQWs5ISFBDz30kE6dOqXU1FQ9+OCDGjx4sMs233//vUaNGiU/Pz+lpaVp0qRJat++fbGcg2fw1AAAAAAAsIsyFQSEhYVp+fLlF12flZWlnj176tZbb9WYMWN07NgxNW3aVFWrVlWfPn0kSfv371ePHj20cOFCtW/fXitWrFDPnj21efNmhYeHF9OZFD2eGgAAAAAA9mSrWwMWLlyorVu3atiwYZKkKlWq6J577tELL7xg9ZkyZYoaNWpkjQCIjY1VZGSk3nzzTY/UDAAAAACAO9kqCFiyZIkiIyMVGBhotcXExGjjxo06deqU1adVq1Yu28XExGjx4sXFWisAAAAAAEWhTAUBZ8+e1b333qsOHTqoY8eOeumll5Senm6t37Nnj0JDQ122yZ5TYO/evfn2yV6fl7S0NCUlJbl8AQAAAABQEpWpICAyMlJDhgzRypUrNWfOHM2bN0933XWXtT4lJUV+fn4u22Qvp6Sk5Nsne31eXnrpJYWEhFhfNWvWdNcpAQAAAADgViU+CBg9erQcDke+X9u3b5ckffzxx9aw/qpVq2rcuHH6z3/+o127dkmSAgIClJaW5rL/7OWAgIB8+2Svz8uTTz6pxMRE6+vgwYPuOfli4uCpAQAAAABgGyX+qQFPPfWUhg4dmm+fvz4yMFvdunUlSb/99puuueYaRUREaOnSpS59Dh8+LEmqU6eOJCkiIkJHjhzJ1SciIuKix/fz88s1iqCk46kBAAAAAGBPJT4ICA4OVnBw8CX7bdmyRevWrdP9999vtSUkJEiSatWqJUnq3Lmz3nvvPSUnJ1sTBsbHx6tly5aqUKGC1Wft2rUu+46Pj1eXLl3ccj4AAAAAAHhSib81oKBOnDihV155RSdPnpQkpaam6uWXX1bHjh3VsGFDSVKPHj3UuHFjvfXWW5Kk48ePa+bMmXrqqaes/QwbNkxbt27VDz/8IElatWqVtm/frkceeaSYzwgAAAAAAPcr8SMCCqpZs2a69dZb1b17d5UrV07JycmKiYnR888/bw2D9/Ly0oIFCzR48GC1a9dOqampevbZZ9WnTx9rP+Hh4Vq4cKFGjhwpX19fpaWlaeHChQoPD/fUqQEAAAAA4DYOYwwzxblZUlKSQkJClJiYWKDbGjwhJTlRAa9euGXiF79oNXlyhYcrAgAAAABcrsJ8Di0ztwagcBwOvvUAAAAAYEd8GgQAAAAAwEYIAgAAAAAAsBGCAAAAAAAAbIQgAAAAAAAAGyEIgBw8OAIAAAAAbIMgwKYcDoenSwAAAAAAeABBAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBAAAAAADYCEEAJPHUAAAAAACwC4IAu+KpAQAAAABgSwQBAAAAAADYCEEAAAAAAAA2QhAAAAAAAICNEAQAAAAAAGAjBAEQTw0AAAAAAPsgCLApB08NAAAAAABbIggAAAAAAMBGCAIAAAAAALARggAAAAAAAGyEIAAAAAAAABshCICYNhAAAAAA7IMgwKYcDr71AAAAAGBHfBoEAAAAAMBGCAIAAAAAALARggAAAAAAAGyEIAAAAAAAABshCIBkjKcrAAAAAAAUE4IAm3I4eGggAAAAANgRQQAAAAAAADZCEAAAAAAAgI0QBAAAAAAAYCMEAZBDTBYIAAAAAHZBEGBTTBYIAAAAAPZEEAAAAAAAgI0QBAAAAAAAYCMEAQAAAAAA2AhBAAAAAAAANkIQAImnBgAAAACAbRAE2JTDwbceAAAAAOyIT4MAAAAAANgIQQAAAAAAADZCEAAAAAAAgI0QBAAAAAAAYCMEAZDD0wUAAAAAAIoNQYBNORx8/AcAAAAAOyIIAAAAAADARggCAAAAAACwEYIAAAAAAABshCAAAAAAAAAbIQiAZIynKwAAAAAAFBOCAJviqQEAAAAAYE8EAQAAAAAA2AhBAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBkEM8NQAAAAAA7IIgwKYcTr71AAAAAGBHfBoEAAAAAMBGCAIAAAAAALCRUhUE7Nq1S9ddd53i4uLyXJ+YmKj+/furdevWatGihcaPHy9jXO9///XXXxUXF6cOHTqoVatWmjdvXq79zJ8/XzExMWrfvr1iY2O1devWojgdAAAAAACKnbenCyioWbNm6d1335WXl9dF+/Tv31+hoaFav369UlJS1Lp1awUFBekf//iHJOnMmTO64YYb9PLLL+uuu+7Szp071bJlS9WoUUOtW7eWJK1fv14DBgzQhg0bdM0112jmzJnq1q2btm3bpqCgoGI51+LHZIEAAAAAYBelZkRApUqVtGLFCtWrVy/P9Zs3b9aCBQs0atQoSVJAQICGDBmiiRMnKjMzU5I0ffp0ZWVl6c4775Qk1a9fX927d9fLL79s7WfixInq0aOHrrnmGknS3XffrYyMDM2YMaMIzw4AAAAAgOJRaoKAm266Sb6+vhddv2TJEgUGBioyMtJqi4mJ0bFjx7R582arT8uWLeVwOFz6LFmyxGU/rVq1spadTqdatmypxYsXu/N0AAAAAADwiFITBFzKnj17FBoa6tIWFhYmSdq7d2++fRITE3Xy5EmdOHFCSUlJefbJ3kde0tLSlJSU5PIFAAAAAEBJVGaCgJSUFPn5+bm0ZS+npKQUqE92v7z6ZK/Ly0svvaSQkBDrq2bNmld2MgAAAAAAFBGPBgGjR4+Ww+HI92v79u0F2ldAQIDS0tJc2rKXAwICCtQnu19efbLX5eXJJ59UYmKi9XXw4MEC1QwAAAAAQHHz6FMDnnrqKQ0dOjTfPtnD+y8lIiJCR44ccWk7fPiwtS6/PiEhIapYsaIkKSQkJM8+2fvIi5+fX65RBKWJg6cGAAAAAIBteHREQHBwsGrUqJHvl7d3wbKKzp07Kzk5WTt37rTa4uPjVbVqVTVr1szqs3HjRhljXPp06dLFWu7UqZM2bNhgLRtjtHHjRpc+ZUWWcVy6EwAAAACgTCkzcwQ0a9ZMvXr10uTJkyVJqampeu+99/TEE0/I6bxwmoMGDZLD4dCnn34qSdq1a5e++eYbPf7449Z+Ro8era+++kq7d++WJH3yySfy8vLSgAEDivmMAAAAAABwP4/eGlAYX375pV577TVt375d586dU1xcnPr376/77rvP6jNz5kwNHTpUbdq0UXp6uv72t79pxIgR1vqgoCAtWrRIQ4YM0bvvvqvU1FTNmDFDrVu3tvq0bt1aM2bMUL9+/VSuXDk5nU4tWrRIQUFBxXq+AAAAAAAUBYfJOU4ebpGUlKSQkBAlJiYqODjY0+VcVNbY8nI6jHZ611f9p3/0dDkAAAAAgMtUmM+hZebWAAAAAAAAcGkEAQAAAAAA2AhBgI1xTwgAAAAA2A9BAAAAAAAANkIQAAAAAACAjRAEAAAAAABgIwQBAAAAAADYCEEA5GDaQAAAAACwDYIAGzNyeLoEAAAAAEAxu+wgYO/evVq9erUk6dSpU24rCAAAAAAAFJ1CBwGnTp3SjTfeqLp166p///6SpDFjxqhz5846fvy42wsEAAAAAADuU+ggYMSIEapTp45+/PFHVatWTZL07rvvavDgwXr00UfdXiAAAAAAAHAf78JusHfvXq1YsUKS5OPjY7X37dtX77//vvsqAwAAAAAAblfoEQGpqanWa2OMy+sjR464pyoUL8NTAwAAAADALgodBNSuXVtjxozRyZMn5XBcmHV+586dGjhwoJo1a+b2AlF0eGoAAAAAANhPoYOAt956SytWrFCVKlW0cuVK+fj4qGHDhtqzZ4+mTJlSFDUCAAAAAAA3KfQcAaGhofr++++1bNkybd26VZLUpEkTxcXFubs2AAAAAADgZoUOArJ17NhRHTt2dGnbs2ePIiIirrgoAAAAAABQNAp9a0B+7r//fnfuDgAAAAAAuFmhRwQ4nU5rkkCUDQ7x1AAAAAAAsItCBwFRUVF64403rOXMzEz9/vvvmjt3rnr16uXO2lDE+PgPAAAAAPZT6CBgypQp6tChQ672O++8U3fccQe3BwAAAAAAUIIVeo6AvEIASfL29tZvv/12xQUBAAAAAICiU+gRARMmTMjVdubMGa1du1ZVq1Z1S1EAAAAAAKBoFDoIeP311xUdHW0tOxwOBQUFqVOnTnr00UfdWRsAAAAAAHCzQgcBN954o2bPnl0UtaDY8fQHAAAAALCbQs8RkF8IsG7duisqBgAAAAAAFK0CjQg4cOBAgXY2YsQIrV69+ooKAgAAAAAARadAQUDt2rXlcOQ/jNwYc8k+AAAAAADAswoUBLRp00affvppvn2MMbrjjjvcUhQAAAAAACgaBQoCXn75ZYWHhxeoH0ofh4ynSwAAAAAAFJMCTRbYoUOHAu3sn//85xUVg+JleGoAAAAAANhOoR8fKEkff/yxvvnmGx0+fFjG/Pnb5J9++slddQEAAAAAgCJQ6McHvvjii3r11VcVHh6uPXv2KDY2Vtdee61Onz6tLl26FEWNAAAAAADATQo9IuCLL77QmjVrVK5cOa1Zs0Zjx46VJD399NMaOHCgu+sDAAAAAABuVOgRAYGBgSpXrpwkKSMjw2ovV66cjhw54r7KAAAAAACA2xU6CDh79qy2bdsmSapUqZJef/11JSQkaObMmTp48KDbC0Rx4KkBAAAAAGAXhb414J577tGgQYP0+eef67HHHtMNN9ygUaNGyeFw6L333iuKGlFE+PgPAAAAAPZT6CBgyJAhGjJkiCSpZs2a2rZtm+Lj49WgQQM1atTI7QUCAAAAAAD3KfStAX//+99dlmvVqqU+ffoQAgAAAAAAUAoUOgiYNWuWevbsqdmzZ+vcuXNFURMAAAAAACgihQ4CunXrpvfff18HDhxQx44dde+992r58uVFUBoAAAAAAHC3QgcBc+fOVY0aNfTEE09ozZo1evjhhzV//nw1bNhQzzzzTFHUiCLmMEwbCAAAAAB2UeggYNOmTdbrAwcOaNGiRVq0aJF27typlStXurU4FC0jh6dLAAAAAAAUs8uaLHDatGmKi4tTRESEPvroI91999367bfftGLFiqKoEQAAAAAAuEmhHx+4fv167dmzR7fddptefvlltWnTpijqAgAAAAAARaDQQUCrVq20evVqeXsXelMAAAAAAOBhhb41YOXKlYQAAAAAAACUUoUOAvz9/YuiDngQUwYCAAAAgH0UOghA2cFTAwAAAADAfggCAAAAAACwEYIAAAAAAABs5LKCgDlz5ig2Nlbt2rWTJD333HOaNWuWWwsDAAAAAADuV+ggYOrUqRo1apSioqKUmpoqSerTp4/mz5+vKVOmuL1AFAfj6QIAAAAAAMWk0EHArFmz9PPPP+vNN99USEiIJKlx48aaM2eO5s6d6/YCAQAAAACA+xQ6CHA6napYsaIkyeH4c9Z5Hx8fpaenu68yAAAAAADgdoUOAtLS0vTLL7/kal+8eLEyMzPdUhQAAAAAACga3oXdYNy4cWrbtq06deqkXbt2adCgQdqxY4c2btyoBQsWFEWNAAAAAADATQo9IqB79+5at26dKlasqNDQUG3ZskX169fXpk2b1LVr16KoEQAAAAAAuEmhRwSsW7dObdq00YwZM4qgHHiCg6cGAAAAAIBtFHpEwN13363169cXRS0oZkaOS3cCAAAAAJQphQ4CvL299eGHH6pt27Z64YUXtH///qKoCwAAAAAAFIFC3xrwyiuvqFevXkpLS9OXX36pRx99VCkpKbrzzjt16623KigoqCjqBAAAAAAAblDoEQG9evWSJPn5+alv376aM2eOevXqpYcfflhhYWFuLzCnXbt26brrrlNcXFye68uXL6+4uDiXry+//NKlz6+//qq4uDh16NBBrVq10rx583LtZ/78+YqJiVH79u0VGxurrVu3FsXpAAAAAABQ7Ao9ImDYsGGaMmWKli9frlmzZmnu3Lkyxuj2229X//79i6JGSdKsWbP07rvvysvL66J9oqOjtXz58ouuP3PmjG644Qa9/PLLuuuuu7Rz5061bNlSNWrUUOvWrSVJ69ev14ABA7RhwwZdc801mjlzprp166Zt27Yx2gEAAAAAUOoVekTAp59+qvDwcHXt2lV//PGH3nvvPR0+fFjTp09Xp06diqJGSVKlSpW0YsUK1atX77L3MX36dGVlZenOO++UJNWvX1/du3fXyy+/bPWZOHGievTooWuuuUbShckRMzIyyvhTEnhqAAAAAADYRaGDAGOMhg8frt9//13ffPON7rjjDpUrV64oanNx0003ydfX94r2sWTJErVs2VIOx5+z5cfExGjJkiUufVq1amUtO51OtWzZUosXL76iY5dEPDUAAAAAAOyn0LcGTJgwQYMHD85z3Z49exQREXHFRV2uw4cP6/bbb9ehQ4fk6+urW2+9VQ8++KCcTqdVX5s2bVy2CQsLU2Jiok6ePCljjJKSkhQaGpqrz48//njR46alpSktLc1aTkpKcuNZAQAAAADgPoUOAi4WAkjS/fffr6VLl15RQVeiXr16evHFF1W3bl399ttv6tKli3777TdNmjRJkpSSkiI/Pz+XbbKXU1JSZIxxacvZJyUl5aLHfemllzR+/Hh3ngoAAAAAAEWiQLcG3HLLLRo1atSFDZxOeXl55fm1YsWKQh189OjRcjgc+X5t3769wPtbuHCh6tatK0mqW7euRo0apddff12pqamSpICAAJff3EuylgMCAhQQEODSlrNP9rq8PPnkk0pMTLS+Dh48WOCaAQAAAAAoTgUaERAbG6urr75akhQVFaU33ngjVx9jjEaMGFGogz/11FMaOnRovn2u5JGEdevWVWZmpvbv368GDRooIiJCR44ccelz+PBhhYSEqGLFipKkkJCQPPvkd8uDn59frlEEAAAAAACURAUKAoYPH269fvzxxxUbG5tnv8cff7xQBw8ODlZwcHChtrmYJUuW6OzZs7r55puttoSEBDkcDtWoUUOS1LlzZ7388ssy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SQoPD9fChQs1cuRI+fr6Ki0tTQsXLrRCAEnq06ePjh49qq5du8rf318VKlTQggULylwIAAAAAACwp1IxIgBFoywmWyhbuEZR0nGNojTgOkVJxzWKkq4sXqP8mtvG/Pz8NHbs2FyPSwRKCq5RlHRcoygNuE5R0nGNoqQri9coIwIAAAAAALARRgQAAAAAAGAjBAEAAAAAANgIQQAAAAAAADZCEGBj8+fPV0xMjNq3b6/Y2Fht3brV0yWhjPrss890ww03qHPnzoqJiVHfvn21b98+a70xRhMmTFCLFi3UunVr3X333UpMTHTZR2Jiovr376/WrVurRYsWGj9+vP46xcmvv/6quLg4dejQQa1atdK8efOK4/RQhrz99ttyOBxavny5S/vUqVPVsmVLtWvXTj169FBCQoLL+vT0dA0bNkytWrVSy5Yt9eijjyo9Pd2lT0JCgnr27Kl27dqpRYsWev/994v6dFDG7NmzR3/729/UsWNHNW7cWG3btlV8fLwk/hyF56WlpWnEiBGKiopSbGys2rRpo/nz51vruUbhCenp6Ro9erS8vb1d/u2Zrbj+fv/+++/Vtm1bxcbGqm3btlq1apVbz/OyGNjSunXrTFBQkNm5c6cxxpiPPvrIVK9e3SQlJXm4MpRFPj4+5ttvvzXGGJOZmWn69+9vIiMjzblz54wxxkyePNk0a9bMpKSkGGOMGTRokOnVq5fLPnr16mXuv/9+Y4wxZ8+eNY0bNzaTJ0+21iclJZnq1aubjz/+2BhjzI4dO0xgYKBZt25dkZ8fyoaEhARTq1YtI8ksW7bMap87d665+uqrzbFjx4wxxowfP95ER0ebzMxMq88jjzxiunXrZjIyMkxGRobp0qWLeeSRR6z1mZmZJjo62jz//PPGGGOOHj1qQkNDzdy5c4vn5FDqHT161NSuXdusWLHCGGPM+fPnTceOHc3s2bONMfw5Cs97+umnTe3atc3p06eNMcZs3LjR+Pr6mp9++skYwzWK4rd3717Ttm1bc8899xhJZu/evS7ri+vv93379png4GCzcuVKY4wxy5cvN8HBwWbfvn1FdeoFQhBgU7fccovp16+ftZyZmWlCQ0PNm2++6cGqUFbdeuutLss//vijkWRWr15tMjIyTJUqVcz7779vrd+6dauRZDZv3myMMebnn382ksz27dutPu+8846pUqWK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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Contextual bandit algorithms\n", "\n", "Some MABWiser bandit algorithms require a context vector when making an operator selection choice.\n", "To utilize these algorithms, your `State` class must additionally conform to the `ContextualState` protocol found in `ALNS.State`.\n", "In practice, this simply means adding an additional method that takes no arguments and returns context data about your state.\n", "Here we monkey-patch our existing `KnapsackState` to conform to the `ContextualState` protocol." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "def get_knapsack_context(self: KnapsackState):\n", " num_items = np.count_nonzero(self.x)\n", " avg_weight = self.weight() / num_items\n", " return np.array([self.weight(), num_items, avg_weight])\n", "\n", "KnapsackState.get_context = get_knapsack_context" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We can now use a contextual bandit algorithm such as `LinGreedy`. See the [MABWiser documentation](https://fidelity.github.io/mabwiser/api.html#mabwiser.mab.LearningPolicy) for more details on how this and other contextual bandit algorithms work." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2919.0.\n" ] } ], "source": [ "select = MABSelector(scores=[5, 2, 1, 0.5],\n", " num_destroy=2,\n", " num_repair=1,\n", " learning_policy=LearningPolicy.LinGreedy(epsilon=0.15))\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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AADnIAgAABS7hg0baunSpZo9e7ZeffVVh2HLO3bsUI8ePXTLLbfo7bffzvVaHx8fPf3009Zw7gULFuinn37S888/n++w85EjR6pevXoaPny4kpOTJV0OFR577DHVqFFDnp6XB8lNmjRJ/v7+Gj16tBUOxMbG6u2337a+zEhS3bp1FR8fL2OMvvvuO2vptfwMGTJENptNM2bMyPXben9/f7388sv66KOPrPupJemzzz7TW2+9let+9Lz4+vpqwIAB+uCDD3TzzTfnGobdu3dv/fLLL1qxYoUkKTU1VS+88MJVj5utc+fO+v777/XHH39Ikr799lvt3LkzV79p06bp2LFjmjJlivVFce/evRo5cmSuWzP+qnfv3vq///s/xcbGSrp8q0HOACZbnTp1ZLPZrFDo8ccft75U/pXNZtPMmTO1YcMGzZs3z2r/4Ycf9Nxzz1mf7c0336zKlSvrzTfftK6Rb775RmvWrHE4XmhoqEaNGqV///vfVp3p6el6+umnFRYWpsDAwHzP8XoEBQWpfPny1nlPmTJFn332mVOuH0m69dZb5e3trddee836M7Zw4cI8Q5bC/Bm477771K5dO02cONG6DeDAgQOaPn26+vfvr44dOxb0IwAAOIPr5ikEALi7AwcOmEceecQ0btzYhIeHmyZNmpiOHTuaefPmmczMTKtfYmKiCQ8PNxUrVjQhISHm448/Nq1btzZ169Y1derUcZjNP1teM9wfO3bMDBkyxNSsWdM0b97ctGjRwrzyyisO72WMMfv37zd33XWXqVmzpgkPDzcdO3Y03377rUOfvXv3mqioKNOwYUPTtGlTs3LlSvPDDz+Y8PBw4+XlZSpWrJjnsn89evTId8b4//znP6ZFixambt26pkWLFuaOO+4wO3bsKOhHmu/s6mlpaebpp582tWrVMs2aNTOdO3e2Zm2vVauWefzxx80HH3xgwsPDjSQTFBRkunTpYr0+ISHB3HvvvaZ69eqmdevWZvz48ebZZ581kkx4eLhZunSp1ffHH380t956q6lRo4Zp2bKlueWWW3LNGJ+XhIQE88gjj5jq1aubli1bmu7du5tJkyYZSaZevXrm5ZdftvpOnDjR1K5d2zRt2tTcdddd5uLFi/ke++uvvzbt27c3tWvXNi1btjRdunTJ9XP94YcfzC233GKCg4NNx44dzcMPP2xuv/12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CQkKCAhwdTkAAAAAgDKuMN9D+TU3AAAAAABupFTcGlDaZA+ySExMdHElAAAAAAB3kP39syCD/gkCikBSUpIkqVatWi6uBAAAAADgTpKSkhQYGJhvH+YIKAJZWVn6448/5O/vL5vN5upyrigxMVG1atXS0aNHmcsAJRLXKEo6rlGUBlynKOm4RlHSlZZr1BijpKQkVa9e/aqT3TMioAjY7XbVrFnT1WUUWEBAQIm+oAGuUZR0XKMoDbhOUdJxjaKkKw3X6NVGAmRjskAAAAAAANwIQQAAAAAAAG6EIMCNeXt7a+LEifL29nZ1KUCeuEZR0nGNojTgOkVJxzWKkq4sXqNMFggAAAAAgBthRAAAAAAAAG6EIAAAAAAAADdCEAAAAAAAgBshCHBjy5cvV1RUlDp06KDo6Gjt2rXL1SWhjPr444916623qkuXLoqKilK/fv106NAha78xRlOmTFHLli3VunVr3X///UpISHA4RkJCggYOHKjWrVurZcuWmjx5sv46xcmvv/6qmJgYdezYUa1atdKyZcuK4/RQhrz11luy2Wxat26dQ/ucOXMUGRmp9u3bq2fPnoqPj3fYn56erhEjRqhVq1aKjIzUE088ofT0dIc+8fHx6tWrl9q3b6+WLVvq3XffLerTQRlz8OBB/e1vf1OnTp3UpEkTtW3bVrGxsZL4exSul5aWplGjRik8PFzR0dFq06aNli9fbu3nGoUrpKena+zYsfL09HT4f89sxfXv+3fffae2bdsqOjpabdu21YYNG5x6ntfEwC1t3rzZ+Pv7m3379hljjFmwYIGpUaOGSUxMdHFlKIu8vLzMV199ZYwxJjMz0wwcONCEhYWZixcvGmOMmT59umnevLlJSUkxxhjzwAMPmN69ezsco3fv3ubhhx82xhhz4cIF06RJEzN9+nRrf2JioqlRo4b54IMPjDHG7N271/j5+ZnNmzcX+fmhbIiPjze1a9c2kszatWut9k8++cTceOON5tSpU8YYYyZPnmwiIiJMZmam1efxxx833bt3NxkZGSYjI8N07drVPP7449b+zMxMExERYV544QVjjDEnT540QUFB5pNPPimek0Opd/LkSVOnTh2zfv16Y4wxly5dMp06dTIfffSRMYa/R+F6EyZMMHXq1DHnz583xhizbds2U65cOfPTTz8ZY7hGUfzi4uJM27ZtzaBBg4wkExcX57C/uP59P3TokAkICDDffvutMcaYdevWmYCAAHPo0KGiOvUCIQhwU3feeacZMGCAtZ2ZmWmCgoLMrFmzXFgVyqq77rrLYfvHH380kszGjRtNRkaGqVq1qnn33Xet/bt27TKSzI4dO4wxxvz8889GktmzZ4/V5+233zZVq1Y1GRkZxhhjZs6caW688UaTlZVl9enXr5/p27dvUZ4aypC+ffuad999N1cQ0KJFCzN27Fhr+/z588bT09N89tlnxhhjTp8+7RB2GWPM559/bry8vMyZM2eMMcZ8+umnxsvLyyQlJVl9nnzySdOyZcsiPiuUFaNHjzb33HOPQ9v+/ftNfHw8f4+iROjVq5fp16+fQ1vVqlXN66+/zjUKl9i5c6fZv3+/Wbt2bZ5BQHH9+z5q1CjTtm1bh/eOiooy//znP512rteCWwPc1Jo1a9SqVStr2263KzIyUqtXr3ZhVSirli5d6rDt4+Mj6fIwwh07dujUqVMO12OjRo10ww03WNfjmjVr5Ofnp7CwMKtPVFSUTp06pR07dlh9IiMjZbPZHPqsWbOmyM4LZceKFSvk5eWl7t27O7SfPXtW27dvd7g+AwMD1aBBA+v6/Pbbb3Xp0iWHPlFRUbp06ZLWr18v6fL1GRYWJj8/P4c+27Zt07lz54ry1FBGLFu2TB07dnRoq1+/vqpXr87foygR/va3v2nDhg06cuSIJGnVqlU6deqUgoKCuEbhEk2bNlX9+vXz3Fec/77/9XtXdh9Xf+8iCHBDZ86cUWJiooKCghzag4ODFRcX56Kq4E42bdqk6tWrq3379jp48KAkOVyPNptNQUFB1vV48ODBPK9XSVftk5CQoLNnzxbZuaD0u3DhgsaPH6833ngj177s6yu/vy8PHjwoT09PVa5c2dpftWpVeXh4FOoaBq7kwoULiouLU2Zmpu677z61b99e3bt315dffilJ/D2KEmHIkCF69tln1bx5czVq1Ei333677rrrLt19991coyhxivPf9yv1cfW//54ufXe4REpKiiTJ29vbod3b29vaBxSVtLQ0TZs2TW+99Za8vLwKdD2mpKTkuT97X0H6VKpUyfkngzLh2Wef1dChQ3XjjTfmmkiooNdnuXLlch23XLlyDn2yR8LkPEbO9wCu5Pz585IuX6tr165VeHi41qxZY4UB/D2KkuD999/X1KlTtXXrVtWrV08///yzVq9eLbvdzjWKEqc4/32/0nXr6n//GRHghnx9fSVd/kKWU1pamrUPKCp///vf1b9/f915552SCnY9+vr65rk/5+sL0gf4q23btmnz5s0aOnRonvsLen3+dQZh6fJMw1yfcAYPDw9JUu/evRUeHi5J6tKlizp37qyZM2fy9yhczhijp556Sn//+99Vr149SVJ4eLi++OILvfTSS1yjKHGK89/3K/Vx9TVLEOCGKleurMDAQJ04ccKh/fjx4woNDXVRVXAHY8eOla+vr55//nmrLfua++v1eOLECWtfaGhontdrztdfqU9gYCC/IcAVff7550pNTVXnzp0VExOjAQMGSJJGjhypmJgYZWVlScp9feb8+zI0NFQZGRk6c+aMtf/UqVPKzMws0DVct27dojk5lBlVq1aVt7e3atSo4dAeEhKiuLg4/h6Fy506dUrnzp1TnTp1HNrr1q2rTz75hGsUJc6Vrsmi+Pf9Sn1c/b2LIMBNde7cWVu3brW2jTHatm2bunbt6sKqUJZNnTpVR48e1VtvvSVJ2rp1q7Zu3armzZuratWqDtfj7t27deHCBet67NKli5KTk7Vv3z6rT2xsrKpVq6bmzZtbfbZt2+aw3nBsbCzXNPL17LPPatu2bVq3bp3WrVunxYsXS5JmzJihdevWKSoqSi1atHC4PhMTE7Vv3z7r2urYsaO8vLwc+sTGxsrLy8ua3K1Lly7au3evkpOTHfpERkaqYsWKxXGqKMU8PDzUvn17HTt2zKH9xIkTql27Nn+PwuWqVKkib2/vXNfosWPH5OvryzWKEqdixYrF9u97ly5dHI6R3cfl161L1yyAy2zevNkEBASY/fv3G2OMWbRokalRo4ZJTEx0cWUoi9555x3TpEkTs2nTJvPjjz+aH3/80UycONHMmzfPGHN5beHw8HBrbeGHHnooz7WFH330UWOMMSkpKaZZs2Z5ri38n//8xxhjzL59+4y/vz9rC6NQ4uLici0f+Mknn5jq1aub06dPG2OMef755/NcZ7hHjx4mMzPTZGZmmltvvdVhneGMjAwTERFhXnrpJWOMMadOnTLBwcEO6wwD+Vm1apWpWLGiOXz4sDHm8tJr3t7eZsWKFcYY/h6F6z366KMmLCzMnD171hhjzNatW42Xl5eZMWOGMYZrFK5zpeUDi+vf90OHDpmAgADz3XffGWOM+fbbb01AQIA5dOhQUZ1ygdiMyRGpwa0sX75cL774osqXLy+73a7Zs2erSZMmri4LZUxSUpIqVKhgDbHOad68eRoyZIiMMXr++ef1v//9T56enrrpppv09ttvq0KFClbf8+fPa/jw4dq/f7/S09PVp08fPffccw5LCO3atUvDhg1TVlaWUlNTNW7cOPXt27c4ThNlwMiRI/XDDz9o8+bNCg8PV8OGDa0RAu+++67ee+89+fj4qGLFipozZ45q1qxpvTYtLU1PPvmkvv/+e0nSzTffrNdee81hcqDff/9dQ4cO1blz55SamqpHHnlE//jHP4r3JFGqffDBB5o+fbr8/PyUkZGhkSNHqn///pLE36NwuZSUFE2aNEmrV6+Wr6+vkpKSNHjwYI0aNUo2m41rFMUuPT1dt956q86fP6+ff/5Zbdq0Ua1atRyWtS6uf983bNigJ598UuXKlVNaWppee+01dejQoYg/gfwRBAAAAAAA4EaYIwAAAAAAADdCEAAAAAAAgBshCAAAAAAAwI0QBAAAAAAA4EYIAgAAAAAAcCMEAQAAAAAAuBGCAAAAAAAA3AhBAAAAcDvGGP3xxx/X9Nr4+HgnVwMAQPEiCAAAoIzbsmWLYmJiZLPZ1LBhQ02ZMkWSdP78eU2aNEnnz58vtloOHTqkSZMm5Wrv06eP3njjjWKp4cKFC+rTp48OHDiQ5/5u3bpp1qxZkqR7771XTz/9tMP+UaNG6X//+19RlwkAQJEhCAAAoIxr3bq11q1bJ0kaO3asnnvuOUmXg4DJkycXexAwefLkXO1169ZVcHBwsdQwatQodezYUR07dsy1LyMjQ5s2bdItt9wiSfruu+9y9fv3v/+tJ598UgcPHiyWegEAcDZPVxcAAABQXKMBdu/erSVLlujYsWN57t++fbvsdrvCw8N15MgRxcfHq3379g59/Pz8NHjwYD333HP64IMPiqNsAACcihEBAAC4oV9//VUDBgyQJA0YMEAxMTFavny5JCk5OVmPPPKIWrRooejoaPXp00dHjhyRdPk35G3btpXNZtPSpUv1//7f/1P9+vUVEREhSZo9e7batGmjTp06KSoqSi+++KKMMZKkb775RiNHjpQkxcTEKCYmRps2bdJTTz2lOnXqKCYmxqHGRYsWKSIiQm3atFGLFi20dOlSa9/DDz+s4OBgDRo0SE8//bSio6MVFhamVatW5Xvey5YtU9u2beXr6+vQPnLkSMXExOiOO+5QYGCgunTpog4dOqhKlSrq06dPrto6d+6sFStWKD09vcCfOQAAJYYBAABuQZKZN2+etR0XF2ckmbi4OId+99xzj7nnnntMZmamMcaYl156yTRu3NhkZGQ4vO7BBx80mZmZJikpycTExBhjjImKijI7d+40xhiTnJxsmjdvbhYsWGAde+3atSav//2YOHGiiY6OtrZXrVpl/Pz8zJ49e4wxxuzYscP4+PiY77//3uozePBgU7FiRbN7925jjDEzZ840tWvXzvcz6Nmzpxk6dOgV93fv3t289tprxhhjhgwZYsaMGZNnv+PHjxtJZuvWrfm+HwAAJREjAgAAgOXgwYNavHix/vnPf8puv/y/CY8++qh+/fVXa56BbIMGDZLdbpefn5/Wrl0rSVq6dKmaNm0qSbrhhht0++2368svvyx0HS+++KL69OmjsLAwSVKzZs3UvXt3vfTSSw79WrRooYYNG0q6PMrgyJEjOnfu3BWPe+LECVWqVOmK+3ft2qXGjRtLujxqIvv5X1WoUME6HgAApQ1zBAAAAMuuXbtkjNGIESPk5eVltYeEhOjUqVMOfWvWrJnr9b///rueeOIJnT59Wl5eXjp06JDq1q1b6Dp++eUXde7c2aGtfv36DrcHSFL16tWt5/7+/pKkxMREVaxYMc/jJiQkyNMz7//9SUxM1O+//64mTZpIkvbs2WM9/6vszya/0AEAgJKKIAAAAOTywQcfXPULvIeHh8P24cOH1a1bN02ZMkVjxoyRJE2aNCnXSAJnylmDzWaTJGtOgrxUqFBBly5dcmibP3++5s+fr7Nnz8rHx0eDBg3ShQsXlJqaqtGjR8vDw0MzZsyw5kGQZB0jv9EFAACUVNwaAACAm8oe+i9JWVlZunDhgvUb8L179zr0fe6557Rnz558jxcbG6vU1FT179/favvrZHo53zMjI0Opqal5Hqtp06Y6cOCAQ9tvv/2mZs2a5VvD1QQHB+vs2bMObUOGDNG6devUuXNn3X///Vq3bp3uvvtude/eXRs2bNC6descQgBJ1jGCgoKuqx4AAFyBIAAAADdVuXJl2e12nTt3TrGxsRoyZIhCQ0N1zz336NVXX9XFixclSRs3btQnn3yi+vXr53u8hg0bymazac2aNZKk1NTUXPMDVK1aVdLlIfXLli3Tc889l+exxo8fr08//VT79++XdPmWha+++krjxo27rnNu3759roAh2w8//KB27dpJkr7//nvreV4OHDigChUqWPMhAABQmthMfuPnAABAqbdlyxY99dRTWr9+vcLCwnTvvfdaX8Cffvppff755/Lz89P06dPVvn17JScna/To0Vq/fr1uvPFG+fv76/XXX1f9+vX1008/aejQodq8ebPatGmj+++/X8OHD7fea86cOZo6dapq1aqloKAgGWO0evVq9ezZUx9++KEk6b777tOvv/6q8uXLa968eZo7d64+/vhjnT9/XrfccotWrlwpSVq4cKFef/11eXt7Kz09Xc8884zuvvtuSZeX+1u8eLGky5MWPvTQQxo8eLBV17/+9a88Rw/s379fkZGR+uOPP+Tn52e1p6WlKSAgQD///LMaNmyoatWq6eOPP861bGC2iRMn6vDhw5o/f/51/3wAAChuBAEAAMCtjBgxQtWqVdP48eOv6fXnz59XVFSUvvnmG9WqVcvJ1QEAUPS4NQAAALiVV155Rb/++qt1C0NhPfLII5o9ezYhAACg1GJEAAAAcEtnzpxR5cqVi+11AACUFAQBAAAAAAC4EW4NAAAAAADAjRAEAAAAAADgRggCAAAAAABwIwQBAAAAAAC4EYIAAAAAAADcCEEAAAAAAABuhCAAAAAAAAA3QhAAAAAAAIAb+f8AF2EIZ3Ry1eIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Acceptance criteria\n", "\n", "We have just looked at the different weight schemes, using a fixed acceptance criterion. Now we flip this around: we fix an operator selection scheme, and look at several acceptance criteria the `alns` package offers. Note that this list is not exhaustive: for a look at all available acceptance criteria, head over to `alns.accept`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "select = SegmentedRouletteWheel(scores=[5, 2, 1, 0.5],\n", " decay=0.8,\n", " seg_length=500,\n", " num_destroy=2,\n", " num_repair=1)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Hill climbing\n", "\n", "This acceptance criterion only accepts better solutions. It was used in the examples explaining the operator selection schemes, so we will not repeat it here. You might also be interested in the other example notebooks for the cutting stock and travelling salesman problems, which also rely on this acceptance criterion." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Record-to-record travel\n", "\n", "This criterion accepts solutions when the improvement meets some updating threshold.\n", "\n", "In particular, consider the current best solution $s^*$ with objective $f(s^*)$. A new candidate solution $s^c$ is accepted if the improvement $f(s^c) - f(s^*)$ is smaller than some updating threshold $t$. This threshold is initialised at some starting value, and then updated using a step value $u$. There are two ways in which this update can take place:\n", "\n", "- _linear_: the threshold is updated linearly, as $t = t - u$.\n", "- _exponential_: the threshold is updated exponentially, as $t = t \\times u$.\n", "\n", "Finally, the threshold $t$ cannot become smaller than a minimum value, the end threshold." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2799.0.\n" ] } ], "source": [ "accept = RecordToRecordTravel(start_threshold=255,\n", " end_threshold=5,\n", " step=250 / 10_000,\n", " method=\"linear\")\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABAIAAAIiCAYAAABSXGq5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZt0lEQVR4nOzdd3hUVf7H8c/MpHcIkECAQCihh94hNEWaP3VFEUWwrgsqKtgLYFlFdO0FV1ZEXUVXWRQLLkiVJk0Q6b33JKS3+/sjZJhJJskMmdR5v54nz2buPffeM5OE9X7uOd9jMgzDEAAAAAAA8Ajmiu4AAAAAAAAoPwQBAAAAAAB4EIIAAAAAAAA8CEEAAAAAAAAehCAAAAAAAAAPQhAAAAAAAIAHIQgAAAAAAMCDEAQAAAAAAOBBCAIAAAAAAPAgBAEAgErvwoULat++vWrWrKlGjRpVdHeqtc8++0zt27eXyWTS1KlTK7o7VdbcuXP5HAEAlRZBAACgwuzbt0/jx49XmzZt1L59e7Vt21Z9+/bVhx9+qJycHGu74OBgbd68WVdffbVT5z18+LDq1Kmjt99+u6y6rtmzZ2v27NkVcu2ydPPNN2vz5s0V3Y0SHThwQFOnTtWBAwcquisO3XjjjaX+HOfPn68aNWpo/fr11m0JCQmaOnVqpfgZVde/AQDwBAQBAIAK8cMPP6hDhw5q1KiR1q9fr82bN2vr1q1666239Pbbb+vKK69USkrKZZ3b19dX0dHRCgsLc2+nbRR1E5R/7Zo1a5bZtZEXBEybNq3SBgHuEBISoujoaAUEBFi3JSQkaNq0aZU6COBvAAAqP6+K7gAAwPPs3LlTI0eO1P33369HHnnEbl9cXJx+/PFHxcbG6p577tEnn3zi8vnr1Kmj3377zV3drTLXRvXSv3//SnHD7yr+BgCg8mNEAACg3E2dOlVpaWmaOHGiw/1169bVTTfdpM8++0x//vlnof0///yz+vTpoyZNmigmJkbvvvuudd+KFSvUvn17+fj4aNy4cXbHHTt2TLfeequio6PVvHlzdezYUf/5z38KnX/Pnj0aOXKkGjZsqLi4OMXFxWny5Mnav3+/tV7B+vXrtX79erVv317t27fXSy+9pLVr1xa69sMPP6waNWrIYrGoffv2WrFihSTpnXfeUZMmTRQSEqIJEyZYr/3JJ58oLi5OzZs3V6NGjXTHHXfozJkzRX6We/fuVcuWLWUymRQVFaWbb75ZkpSTk6P27dsrMDBQzZs319atW3XmzBlNnDhR7du3V8eOHdWuXTuNHTtWx48fL/L8krR161aHn+nNN9+syMhImUymQsesXbtWgwYNUuPGjdW4cWNdddVVTt3U7t+/X3fddZfi4uLUsWNHxcXFaeLEiUpMTLS2mTFjhu68805J0p133mn9GSQkJBR77p9++kndu3dX06ZN1ahRI40cOVL79++3a/PNN9/oyiuvVMeOHdW+fXt16dJFn3/+ucPzvfPOO2rdurVatmyptm3basiQIfr0008LtcvNzdVTTz2lbt26KSoqSmPGjNGFCxeK7es777yjVq1ayWQyWZ+6f/bZZxo6dKgk6ZlnnrG+b9u/kZJ+f26++WY1bNhQJpNJy5Yt01/+8hdrLYMHHnhAkvTPf/5Tffr0UefOnRUXF6fevXvr559/tp7D1b+BfMnJyXrooYcUExOjFi1aqHnz5nruueeUnZ1tbdO/f3/r79TmzZt11VVXKTY2Vq1atdL3339f7GcGAHCBAQBAOcrJyTGCg4ONmJiYYtvNnj3bkGTMmDHDum3s2LFGUFCQMW7cOCMzM9Ou3Zw5c+yOj46ONsaOHWt9ff78eaNx48ZGfHy8kZycbBiGYcyfP98wmUzG559/bm134MABIzw83Lj11luNrKwswzAMY+vWrUZYWJjx2muvWdvFx8cb8fHxDvte8NpvvfWWIcnYvHmzXbspU6YYzz//vPX166+/bphMJuPbb781DMMwLly4YPTt29eIi4szMjIyivyssrKyjIiICOOaa66x237hwgWjXr16RkpKimEYhrF69WojNjbWOHXqlGEYhpGZmWlMmDDB6NSpk5GdnW13rCRjypQpxb6v/PdQ8D8n1q5da/j6+hqTJ0+2bps0aZIRHBxs7N69u8j3YRiG8fnnnxt9+/a1/oySk5ONa6+9ttB7W7JkiSHJWLJkSbHny/fNN98YZrPZePvttw3DyPvMbrzxRiMqKso4e/astd3gwYONN9980/p669atRs2aNY3//ve/duebNGmSERoaaqxbt84wjLzP8m9/+5sRGhpq106S0aBBA2PFihWGYRjGoUOHjJCQEOPpp58usc/79+83JBkfffRRsdvyOfv789FHHxmSjEGDBhknTpwwDCPv5zhx4kTDMAyjRYsW1nMYRt5nHRAQYGzYsMHueq78DWRmZho9evQw2rVrZ5w8edIwDMPYuXOnUa9ePePGG2+0Ozb/d+ruu++2/p0/8MADRnBwsHH+/PkiPy8AgPMIAgAA5erUqVOGJKNHjx7Ftvvpp58MScb48eOt28aOHWtIMg4fPmzXtkOHDkZ0dLSRm5tr3VbwRuSZZ54xJFlv3PINGDDALpQYO3as4ePjY5w+fdqu3cMPP2y888471teu3ASdO3fO8PPzM+677z7rtpycHKNx48bGkSNHDMMwjKSkJCMoKMgYOnSo3bmWL1/uMOgo6JFHHjG8vLysN3aGYRgffvih8de//tX6Ojk52Th06JDdcdu3bzckGWvXrrXbXpogoG/fvkbNmjWNtLQ067aUlBQjKCjIuP3224t9H+fOnbN7D4ZhGD/++KMhyXoDaRiuBQG5ublGdHS00apVK7vthw4dMiQZzz77rHXbrl27CoUiN954ozFkyBDr6z179hhms9l48MEH7dqdPXvWaNCggd02Scbw4cPttg0dOtTo2bNnif12JQhw5fcnPwj497//bd124cIF6+e7ffv2Qn3p1q2b8be//c1umyt/A/nXLBiovPrqq4YkY9myZdZt+b9T69evt25bu3atIcn4+eefHV4PAOAapgYAAKqUGjVqqH79+nbbunbtqoMHD+ro0aNFHvfzzz/L399fnTp1stvetm1b7du3TwcPHpQkLVy4UI0bN1atWrXs2r388ssaP378Zff52muv1WeffaaMjAxJ0qJFi9SyZUtFRUVJklatWqXk5GT17t27UP8k6Zdffin2GnfccYeys7M1Z84c67ZZs2bpjjvusL4ODAzUmjVrdMUVV1hXarjuuusk5U0xcIfU1FStXLlSnTt3lp+fn3V7QECAmjRpUuL7CAkJ0fz58xUfH2/t47333luqPu7atUsHDx4s9Nk2aNBAoaGhdn0KDAzUAw88oE6dOqldu3Zq3769fv75Z7trL1q0SLm5ueratavd+WrWrKlDhw4Vun6LFi3sXoeHh+vEiROX9V6Kcjm/P23atLF+HxQUpDp16kiSzGazbrvtNnXo0EFxcXFq3769/vjjj1L9jixcuFCS1K1bN7vtPXr0kJQ3baMg288t/+/R3Z8bAHgqigUCAMpVeHi4goODS/wP+vz9MTExdttDQkIKtc2vTn706NFCIUG+M2fOKDs7Wx07drTbnpycrIiICJ05c0bR0dE6c+aMGjdu7PT7cdadd96pzz//XPPmzdOoUaM0a9Ys6zz3/P5J0nvvvae5c+faHRsREaH09PRiz9+8eXP16dNH//rXv/Twww9r+/btSklJUZcuXaxtPvzwQ911112aM2eObrnlFplMJh04cECNGze2BhSldf78eeXm5uq3335T+/bt7fadO3fOYT0BW1OmTNGMGTP0/fffa9CgQZKkpUuXqn///pfdx/zPdv78+Vq7dq3dvsDAQGVlZUmSUlJS1L9/f4WHh+uHH35QRESEJGncuHFaunRpofM5WxU/MDDQ7rXZbLZbHtMdLuf3Jzg4uNC248ePq3fv3urVq5eWLVtm/Xvr169fqX5HivrMwsPDJUmnT58udIzt52Y25z27cvfnBgCeiiAAAFCuzGazhgwZoq+++krHjx9X3bp1HbZbtWqVTCaThg8fbrfdtmhcvrNnz0qS9em6I7Vq1dKZM2dKLFhXq1YtnTt3roR34br+/furcePGmjVrlq644gqtXr3arrBc/hPPSZMmFVlEsSR33HGHxo0bp19//VXz5s2zGw0gSR999JFat26tMWPGXNb5LRaLDMOw21aw6F2NGjVkNpsVHx+vefPmuXyNjz76SFdccYU1BHCH/M/2pptu0muvvVZku1WrVmnXrl366quvrCFAcecri9+Ty+WO3x9JWrBggU6fPq0nn3zSYeh2uWw/s8jISOv2/L/d2rVru+1aAICSMTUAAFDupk2bJn9/f73xxhsO9x8/flyff/65brvtNsXGxtrtS0hI0JEjR+y2rVu3TtHR0cUGAYMHD1ZCQkKhdef37Nmjm266yVq5fPDgwdq/f3+hSv3PPvusXn31Vetrb29v601xSkqKvv3222Lfs8lk0u23367Fixfr+eef14033ihvb2/r/p49eyooKEibNm0qdOzzzz/vcHWDgkaOHKmQkBC9//77+vLLL3XLLbfY7c/IyLA+Wc1X0ooBtiIiIgrd/O7YscPudUBAgPr06aPff/9dubm5dvv++9//aurUqcVew9k+5n92+T+DDRs2aNeuXQ7PmV9B39Fn+8EHH1hXnch/4l3S9a+44gqZzWatW7fObvuJEyfUrVs3h2GVuxR839u3b9fmzZvd8vsjOf8Z5PfF2b+BwYMHS1KhERlr1qyRJF111VVO9Q8A4B4EAQCActeiRQt99dVXevfdd/Xyyy/bDVvesmWLhgwZot69e+udd94pdKyfn58effRR63Dujz/+WJs3b9Zzzz1X7LDzBx54QE2aNNG9996r5ORkSXmhwoQJExQVFSUvr7xBclOnTlVwcLAmTZpkDQfWr1+vd955x3ozI0mNGzfW0aNHZRiGVq5caV16rTjjxo2TyWTS66+/XuhpfXBwsF588UV9/vnn1vnUkvTtt9/q7bffLjQf3ZGAgACNGjVKn376qXr27FloGPaIESP0xx9/6LvvvpMkpaWl6fnnny/xvPkGDBigX3/9VceOHZMkLV++XFu3bi3UbsaMGTp+/LieffZZ643izp079cADDxSamlHQiBEj9L///U/r16+XlDfVwDaAydeoUSOZTCZrKHTfffdZbyoLMplMeuONN7RixQp99NFH1u1r1qzRM888Y/1se/bsqfDwcL311lvW35FffvlFixcvtjtfTEyMHnzwQf3rX/+y9jMzM1OPPvqoYmNjFRoaWux7LI2IiAj5+/tb3/ezzz6rb7/91i2/P5J05ZVXytfXV6+88or1b2zOnDkOQxZX/gZuvvlm9ejRQ1OmTLFOA9izZ49effVV3Xjjjerbt6+zHwEAwB0qrk4hAMDT7dmzx7jrrruMVq1aGXFxcUbr1q2Nvn37Gh999JGRk5NjbZeUlGTExcUZNWrUMKKjo40vv/zS6Nq1q9G4cWOjUaNGdtX88zmqcH/8+HFj3LhxRv369Y127doZHTp0MKZPn253LcMwjN27dxvXX3+9Ub9+fSMuLs7o27evsXz5crs2O3fuNLp06WK0aNHCaNOmjbFgwQJjzZo1RlxcnOHt7W3UqFHD4bJ/Q4YMKbZi/L///W+jQ4cORuPGjY0OHToYV199tbFlyxZnP9Jiq6tnZGQYjz76qNGgQQOjbdu2xoABA6xV2xs0aGDcd999xqeffmrExcUZkoyIiAhj4MCB1uMTExON0aNHG/Xq1TO6du1qPPnkk8bTTz9tSDLi4uKMr776ytr2t99+M6688kojKirK6Nixo9G7d+9CFeMdSUxMNO666y6jXr16RseOHY3BgwcbU6dONSQZTZo0MV588UVr2ylTphgNGzY02rRpY1x//fVGenp6sef++eefjV69ehkNGzY0OnbsaAwcOLDQz3XN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pyZVdBfchqkBAAAAAIAy16THNTqhWhXdDYgRAQAAAACAclCjdl3lPLVTJ08crOiuXJbIOvUrugtuQxAAAAAAACgXFi+vSruqgSdhagAAAAAAAB6EIAAAAAAAAA9CEAAAAAAAgAchCAAAAAAAwIMQBAAAAAAA4EEIAgAAAAAA8CAEAQAAAAAAeBCCAAAAAAD/3969R0VZ5nEA/87AiNFwyxBEMTV2oVAu4gi7JIxQcjZzlyxvZcpuaeyeSsi8bK54S49batoxV/embe6uqwetdd3yHInxlpFAaQtecAFNNENhHG6BM/z2Dw7v8ZVL1soM8H4/f/E+z2/eeR78nfdlfj7zvESkISwEEBEREREREWkICwFEREREREREGsJCABEREREREZGGsBBAREREREREpCEsBBARERERERFpCAsBRERERERERBrCQgARERERERGRhrAQQERERERERKQhLAQQERERERERaYi7qwfQG4kIAMBms7l4JERERERERKQFrZ8/Wz+PdoaFgC5QU1MDAAgODnbxSIiIiIiIiEhLampq4OPj02mMTm6nXEDfSXNzMy5dugQvLy/odDpXD6dDNpsNwcHB+PLLL+Ht7e3q4RC1wRyl7o45Sj0B85S6O+YodXc9JUdFBDU1NQgKCoJe3/kuAFwR0AX0ej0GDRrk6mHcNm9v726d0ETMUerumKPUEzBPqbtjjlJ31xNy9NtWArTiZoFEREREREREGsJCABEREREREZGGsBCgYR4eHliyZAk8PDxcPRSidjFHqbtjjlJPwDyl7o45St1db8xRbhZIREREREREpCFcEUBERERERESkISwEEBEREREREWkICwFEREREREREGsJCgIbt2bMHJpMJY8aMQWJiIoqKilw9JOqldu7ciXHjxiE5ORkmkwmTJk1CeXm50i8iWL58OUaOHInRo0dj+vTpuH79uuoc169fxzPPPIPRo0dj5MiRWLZsGW7d4qS4uBhmsxkJCQkYNWoUdu/e7YzpUS+yceNG6HQ6WCwWVfuWLVsQExOD+Ph4jB8/HhUVFar+pqYmzJkzB6NGjUJMTAxeeuklNDU1qWIqKirw2GOPIT4+HiNHjsTmzZu7ejrUy5SWluKJJ57A2LFjER4ejri4OOTn5wPgdZRcr7GxEZmZmYiMjERiYiJiY2OxZ88epZ85Sq7Q1NSEhQsXwt3d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8vLE29tbSkpKRETk3XfflYEDB4rNZnPxyKg3+t3vfifh4eFy7NgxOX78uBw/flyWLFkiW7duFZGWZwtHRkYqzxZ+9tln23228OzZs0VEpL6+XkaMGNHus4X/9re/iYjI2bNnxcvLi88Wpu+krKyszeMDs7OzJSgoSK5evSoiIitWrGj3OcM/+clPxOFwiMPhkHHjxqmeM2y32yUqKkpWrVolIiKVlZUSGBioes4wUWf2798vfn5+cv78eRFpefSah4eH7N27V0R4HSXXmz17toSGhkpVVZWIiBQUFIjBYJD169eLCHOUXKejxwc66/5eXl4u3t7ecuTIEREROXTokHh7e0t5eXlXTfm26ERuKqmRpuzZswcrV67EXXfdBb1ej02bNiE8PNzVw6JepqamBr6+vsoS65tt3boVaWlpEBGsWLEC7733Htzd3fGDH/wAb7/9Nnx9fZVYq9WKF154ASUlJWhqakJqaiqysrJUjxAqKirCr371KzQ3N6OhoQGvvvoqJk6c6IxpUi+QkZGBTz75BHl5eYiMjERYWJiyQmDz5s34/e9/j759+8LPzw9btmzBoEGDlNc2NjZi3rx5OHr0KADgxz/+MdasWaPaHOjixYtIT09HdXU1GhoaMGvWLPzyl7907iSpR9u+fTvWrl0Lo9EIu92OjIwMTJkyBQB4HSWXq6+vx9KlS3HgwAF4enqipqYGM2fORGZmJnQ6HXOUnK6pqQnjxo2D1WrFiRMnEBsbi+DgYNVjrZ11fz98+DDmzZuHPn36oLGxEWvWrMGYMWO6+DfQORYCiIiIiIiIiDSEewQQERERERERaQgLAUREREREREQawkIAERERERERkYawEEBERERERESkISwEEBEREREREWkICwFEREREREREGsJCABEREREREZGGsBBAREREmiMiuHTp0vd6bUVFxR0eDRERkXOxEEBERNTLffrppzCbzdDpdAgLC8Py5csBAFarFUuXLoXVanXaWMrLy7F06dI27ampqXjzzTedMoa6ujqkpqbi3Llz7fY/8sgjeOuttwAATz31FBYsWKDqz8zMxHvvvdfVwyQiIuoyLAQQERH1cqNHj4bFYgEALFy4EFlZWQBaCgHLli1zeiFg2bJlbdqHDh2KwMBAp4whMzMTCQkJSEhIaNNnt9tx7NgxPPTQQwCAI0eOtIn785//jHnz5qG0tNQp4yUiIrrT3F09ACIiIiJnrQY4deoU/vGPf+Dy5cvt9n/22WfQ6/WIjIzEhQsXUFFRgfj4eFWM0WjEzJkzkZWVhe3btztj2ERERHcUVwQQERFpUHFxMaZOnQoAmDp1KsxmM/bs2QMAqK2txaxZsxAdHY3ExESkpqbiwoULAFr+hzwuLg46nQ67du3Cz372M4SEhCAqKgoAsGnTJsTGxmLs2LEwmUxYuXIlRAQA8NFHHyEjIwMAYDabYTabcezYMcyfPx9DhgyB2WxWjfHdd99FVFQUYmNjER0djV27dil9zz33HAIDAzFjxgwsWLAAiYmJCA0Nxf79+zud9+7duxEXFwdPT09Ve0ZGBsxmM37605/Cx8cHycnJGDNmDO69916kpqa2GVtSUhL27t2Lpqam2/6dExERdRtCREREmgBAtm7dqhyXlZUJACkrK1PFTZs2TaZNmyYOh0NERFatWiUPPvig2O121et+8YtfiMPhkJqaGjGbzSIiYjKZ5IsvvhARkdraWomIiJB33nlHOXdubq609+fHkiVLJDExUTnev3+/GI1GOX36tIiInDx5Uvr27StHjx5VYmbOnCl+fn5y6tQpERHZsGGDDB48uNPfwfjx4yU9Pb3D/pSUFFmzZo2IiKSlpckrr7zSbtxXX30lAKSgoKDT9yMiIuqOuCKAiIiIFKWlpdixYwdefvll6PUtfybMnj0bxcXFyj4DrWbMmAG9Xg+j0Yjc3FwAwK5duzB8+HAAwN13341HH30UH3zwwXcex8qVK5GamorQ0FAAwIgRI5CSkoJVq1ap4qKjoxEWFgagZZXBhQsXUF1d3eF5r1y5gnvuuafD/qKiIjz44IMAWlZNtP58K19fX+V8REREPQ33CCAiIiJFUVERRARz5syBwWBQ2u+77z5UVlaqYgcNGtTm9RcvXsRLL72Eq1evwmAwoLy8HEOHDv3O4/jPf/6DpKQkVVtISIjq6wEAEBQUpPzs5eUFALDZbPDz82v3vNevX4e7e/t//thsNly8eBHh4eEAgNOnTys/36r1d9NZ0YGIiKi7YiGAiIiI2ti+ffu3foB3c3NTHZ8/fx6PPPIIli9fjldeeQUAsHTp0jYrCe6km8eg0+kAQNmToD2+vr64ceOGqm3btm3Ytm0bqqqq0LdvX8yYMQN1dXVoaGjA3Llz4ebmhvXr1yv7IABQztHZ6gIiIqLuil8NICIi0qjWpf8A0NzcjLq6OuV/wM+cOaOKzcrKwunTpzs9X35+PhoaGjBlyhSl7dbN9G5+T7vdjoaGhnbPNXz4cJw7d07V9t///hcjRozodAzfJjAwEFVVVaq2tLQ0WCwWJCUlYfr06bBYLJg8eTJSUlJw+PBhWCwWVREAgHKOgICA/2s8RERErsBCABERkUb169cPer0e1dXVyM/PR1paGoYNG4Zp06bh9ddfxzfffAMA+Pjjj5GdnY2QkJBOzxcWFgadToecnBwAQENDQ5v9Afz9/QG0LKnfvXs3srKy2j3XokWL8P7776OkpARAy1cWPvzwQ7z66qv/15zj4+PbFBhaffLJJ/jRj34EADh69Kjyc3vOnTsHX19fZT8EIiKinkQnna2fIyIioh7v008/xfz583Hw4EGEhobiqaeeUj6AL1iwAPv27YPRaMTatWsRHx+P2tpazJ07FwcPHsSAAQPg5eWFdevWISQkBJ9//jnS09ORl5eH2NhYTJ8+HS+88ILyXlu2bMHq1asRHByMgIAAiAgOHDiA8ePH469//SsA4Omnn0ZxcTHuuusubN26FX/605+wc+dOWK1WPPTQQ/jXv/4FAPjLX/6CdevWwcPDA01NTfj1r3+NyZMnA2h53N+OHTsAtGxa+Oyzz2LmzJnKuP7whz+0u3qgpKQEMTExuHTpEoxGo9Le2NgIb29vnDhxAmFhYejfvz927tzZ5rGBrZYsWYLz589j27Zt//e/DxERkbOxEEBERESaMmfOHPTv3x+LFi36Xq+3Wq0wmUz46KOPEBwcfIdHR0RE1PX41QAiIiLSlN/+9rcoLi5WvsLwXc2aNQubNm1iEYCIiHosrgggIiIiTbp27Rr69evntNcRERF1FywEEBEREREREWkIvxpAREREREREpCEsBBARERERERFpCAsBRERERERERBrCQgARERERERGRhrAQQERERERERKQhLAQQERERERERaQgLAUREREREREQawkIAERERERERkYb8D5e3hlPZYboLAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Simulated annealing\n", "\n", "This criterion accepts solutions when the scaled probability is bigger than some random number, using an updating temperature that drives the probability down. It is very similar to the `RecordToRecordTravel` criterion, but uses a different acceptance scheme.\n", "\n", "In particular, a temperature is used, rather than a threshold, and the candidate $s^c$ is compared against the current solution $s$, rather than the current best solution $s^*$. The acceptance probability is calculated as\n", "$$ \\exp \\left\\{ \\frac{f(s) - f(s^c)}{t} \\right\\}, $$\n", "where $t$ is the current temperature." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2830.0.\n" ] } ], "source": [ "accept = SimulatedAnnealing(start_temperature=1_000,\n", " end_temperature=1,\n", " step=1 - 1e-3,\n", " method=\"exponential\")\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxIterations(10_000))\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "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r8OYk/c6MTHRLF++3Ol8/vwO5Ofnm759+5rOnTubffv2GWOMWb9+vWnYsKG56KKLnI4t/k5dd9119t/z2267zSQlJZkjR454vF8AAN+RCAAAVKj9+/cbSaZv375ey33zzTdGkhk/frx927hx44wks2PHDqeyXbt2NWlpacZms9m3uTZEHnjgASPJ3nArdsYZZzglJcaNG2diY2PNgQMHnMrdeeed5sUXX7S/96cRdPjwYRMfH29uueUW+7aioiLTvHlzs3PnTmOMMVlZWaZ69erm7LPPdqpr/vz5bhMdru666y4THR1tb9gZY8zrr79urr/+evv77Oxss337dqfj1q5daySZJUuWOG0vTyJg4MCBplatWub48eP2bTk5OaZ69erm6quv9nodhw8fdroGY4z5+uuvjSR7A9IY/xIBNpvNpKWlmfbt2ztt3759u5FkHnzwQfu2DRs2lEiKXHTRRWbEiBH295s2bTJWq9XcfvvtTuUOHTpkmjRp4rRNkjnnnHOctp199tmmX79+pcbtTyLAn+9PcSLgP//5j33bsWPH7Pd37dq1JWLp3bu3ufHGG522+fM7UHxO14TKtGnTjCQzb948+7bi79SyZcvs25YsWWIkme+++87t+QAA/mFoAACgUqlZs6YaN27stK1Xr17atm2bdu3a5fG47777TgkJCerevbvT9k6dOmnz5s3atm2bJOnbb79V8+bNVadOHadyTz75pMaPH1/mmM877zy9++67ysvLkyR9//33ateunRo1aiRJWrhwobKzs3X66aeXiE+SfvjhB6/nuOaaa1RYWKi33nrLvm369Om65ppr7O+rVaumxYsXa9iwYfaVGsaMGSPp5BCDQMjNzdWPP/6oHj16KD4+3r49MTFRLVu2LPU6kpOT9dlnnykjI8Me480331yuGDds2KBt27aVuLdNmjRRSkqKU0zVqlXTbbfdpu7du6tz587q0qWLvvvuO6dzf//997LZbOrVq5dTfbVq1dL27dtLnL9t27ZO72vXrq29e/eW6Vo8Kcv3p2PHjvbX1atXV7169SRJVqtVV111lbp27ar09HR16dJFv/32W7m+I99++60kqXfv3k7b+/btK+nksA1Xjvet+Pcx0PcNACIVkwUCACpU7dq1lZSUVOof9MX7W7Ro4bQ9OTm5RNni2cl37dpVIklQ7ODBgyosLFS3bt2ctmdnZys1NVUHDx5UWlqaDh48qObNm/t8Pb669tpr9d577+nTTz/VxRdfrOnTp9vHuRfHJ0kvv/yyZs6c6XRsamqqTpw44bX+1q1ba8CAAfr3v/+tO++8U2vXrlVOTo569uxpL/P666/rr3/9q9566y1dfvnlslgs2rp1q5o3b25PUJTXkSNHZLPZ9PPPP6tLly5O+w4fPux2PgFHkydP1lNPPaUvv/xSQ4cOlSTNnTtXgwcPLnOMxff2s88+05IlS5z2VatWTQUFBZKknJwcDR48WLVr19ZXX32l1NRUSdKVV16puXPnlqjP11nxq1Wr5vTearU6LY8ZCGX5/iQlJZXYtmfPHp1++unq37+/5s2bZ/99GzRoULm+I57uWe3atSVJBw4cKHGM432zWk8+uwr0fQOASEUiAABQoaxWq0aMGKEPP/xQe/bsUYMGDdyWW7hwoSwWi8455xyn7Y6TxhU7dOiQJNmfrrtTp04dHTx4sNQJ6+rUqaPDhw+XchX+Gzx4sJo3b67p06dr2LBhWrRokdPEcsVPPO+44w6PkyiW5pprrtGVV16pn376SZ9++qlTbwBJeuONN9ShQweNHTu2TPVHRUXJGOO0zXXSu5o1a8pqtSojI0Offvqp3+d44403NGzYMHsSIBCK7+0ll1yif/7znx7LLVy4UBs2bNCHH35oTwJ4qy8Y35OyCsT3R5JmzZqlAwcO6P7773ebdCsrx3tWv359+/bi3926desG7FwAgNIxNAAAUOGmTp2qhIQEPfvss27379mzR++9956uuuoqtWnTxmnf0aNHtXPnTqdtS5cuVVpamtdEwPDhw3X06NES685v2rRJl1xyiX3m8uHDh2vLli0lZup/8MEHNW3aNPv7mJgYe6M4JydHn3/+uddrtlgsuvrqqzV79mw9/PDDuuiiixQTE2Pf369fP1WvXl2//PJLiWMffvhht6sbuLrggguUnJysV155RR988IEuv/xyp/15eXn2J6vFSlsxwFFqamqJxu+6deuc3icmJmrAgAH69ddfZbPZnPb997//1ZQpU7yew9cYi+9d8WewfPlybdiwwW2dxTPou7u3r732mn3VieIn3qWdf9iwYbJarVq6dKnT9r1796p3795uk1WB4nrda9eu1cqVKwPy/ZF8vwfFsfj6OzB8+HBJKtEjY/HixZKks846y6f4AACBQSIAAFDh2rZtqw8//FAvvfSSnnzySaduy6tWrdKIESN0+umn68UXXyxxbHx8vO6++257d+4333xTK1eu1EMPPeS12/ltt92mli1b6uabb1Z2drakk0mFm266SY0aNVJ09MlOclOmTFFSUpLuuOMOe3Jg2bJlevHFF+2NGUlq3ry5du3aJWOMfvzxR/vSa95ceeWVslgseuaZZ0o8rU9KStJjjz2m9957zz6eWpI+//xzvfDCCyXGo7uTmJioiy++WO+884769etXohv2qFGj9Ntvv+mLL76QJB0/flwPP/xwqfUWO+OMM/TTTz9p9+7dkqT58+dr9erVJco99dRT2rNnjx588EF7Q3H9+vW67bbbSgzNcDVq1Cj973//07JlyySdHGrgmIAp1qxZM1ksFntS6JZbbrE3Kl1ZLBY9++yzWrBggd544w379sWLF+uBBx6w39t+/fqpdu3aev755+3fkR9++EGzZ892qq9Fixa6/fbb9e9//9seZ35+vu6++261adNGKSkpXq+xPFJTU5WQkGC/7gcffFCff/55QL4/knTmmWcqLi5O//jHP+y/Y2+99ZbbJIs/vwOXXXaZ+vbtq8mTJ9uHAWzatEnTpk3TRRddpIEDB/p6CwAAgRC6eQoBAJFu06ZN5q9//atp3769SU9PNx06dDADBw40b7zxhikqKrKXy8rKMunp6aZmzZomLS3NfPDBB6ZXr16mefPmplmzZk6z+RdzN8P9nj17zJVXXmkaN25sOnfubLp27WqeeOIJp3MZY8zGjRvN+eefbxo3bmzS09PNwIEDzfz5853KrF+/3vTs2dO0bdvWdOzY0cyaNcssXrzYpKenm5iYGFOzZk23y/6NGDHC64zx//nPf0zXrl1N8+bNTdeuXc3o0aPNqlWrfL2lXmdXz8vLM3fffbdp0qSJ6dSpkznjjDPss7Y3adLE3HLLLeadd94x6enpRpJJTU01Q4YMsR+fmZlpLr30UtOwYUPTq1cvc//995u///3vRpJJT083H374ob3szz//bM4880zTqFEj061bN3P66aeXmDHenczMTPPXv/7VNGzY0HTr1s0MHz7cTJkyxUgyLVu2NI899pi97OTJk03Tpk1Nx44dzfnnn29OnDjhte7vvvvO9O/f3zRt2tR069bNDBkypMTnunjxYnP66aeb+vXrm4EDB5prr73WnH322SYmJsakp6ebNWvW2Ms+//zzpl27dqZt27amU6dOZuLEifaVEr755hun+3jppZcaY4wZMmSIqVmzptv6HL3wwgumXbt29s9m7Nix9n2vvvqqSUtLM506dTJDhw51WuGitO/P+PHjTZMmTYwk065dOzNq1KgS5/7qq69M165dTaNGjUxGRoa54447TI8ePUy1atVMenq6fQk/f38HsrKyzG233WaaNWtm2rRpY1q1amUefPBB+zKdxhhz7rnnmtTUVPt3av78+ebDDz90uheOq28AAMrGYozLYD8AAKqAZs2aadCgQZoxY0aoQwEAAAgrDA0AAFQJS5cudRr/n5OTwwRkAAAAbpAIAABUCV999ZV9ToElS5bo4MGDOvvss0McFQAAQPhhaAAAoEr49ttvdccdd9jf33rrrbruuutCGBEAAEB4IhEAAAAAAEAEYWgAAAAAAAARhEQAAAAAAAARJDrUAVRFNptNu3fvVlJSkiwWS6jDAQAAAABUccYYHTt2TA0bNpTV6v2ZP4mAINi9e7eaNGkS6jAAAAAAABFmx44daty4sdcyJAKCICkpSdLJDyA5OTnE0QAAAAAAqrqsrCw1adLE3h71hkRAEBQPB0hOTiYRAAAAAACoML4MT2eyQAAAAAAAIgiJAAAAAAAAIgiJAAAAAAAAIghzBAAAAAAAJJ1cgq6wsFBFRUWhDgUuoqKiFB0dHZAl6kkEAAAAAACUn5+vPXv2KDc3N9ShwIPExEQ1aNBAsbGx5aqHRIAHn376qR599FHFx8fLarXqpZdeUocOHUIdFgAAAAAEnM1m05YtWxQVFaWGDRsqNjY2IE+eERjGGOXn5+vAgQPasmWLTjvtNFmtZR/pTyLAjaVLl2rcuHFavny5TjvtNL311lsaPny41q5d69OajAAAAABQmeTn58tms6lJkyZKTEwMdThwIyEhQTExMdq2bZvy8/MVHx9f5rqYLNCNxx9/XCNHjtRpp50mSbr88stVWFioGTNmhDYwAAAAAAii8jxlRvAF6vPhU3Zj9uzZ6tGjh/291WpV9+7d9f3334cwKgAAAAAAyo+hAS4OHTqkrKwspaamOm2vX7++fv75Z7fH5OXlKS8vz/4+KysrqDECAAAAAFBW9AhwUTxDZlxcnNP2uLg4j7NnPvbYY0pJSbH/NGnSJOhxAgAAAABOys3N1YMPPqgBAwZo8ODB6tevn4YOHarnn39e+/fvD3V4pTp69KimTJmio0ePVsj5SAS4KJ4Yw/EJf/F7T5Nm3HvvvcrMzLT/7NixI+hxAgAAAABOJgEGDx6szMxMzZkzR3PmzNHChQt1880364477tBLL70U6hBLdfToUU2dOrXCEgEMDXBRu3ZtpaSkaN++fU7b9+7dqxYtWrg9Ji4urkQPAgAAAABA8D3wwAPKz8/XP/7xD6clD88991zddNNNIYwsfNEjwI0zzjhDy5cvt783xmjFihUaOnRoCKMCAAAAADgqLCzUv/71L1188cVOSYBid9xxh84//3wNGjRI8fHx9pXgZs6cqbZt26pZs2b2stdee63q16+vK664Qvfcc4+GDBmimJgYvfPOO/bjn3rqKY0dO1a9evWSxWKxP8F/6qmn1KVLF2VkZCgjI0MLFiyQJGVnZ9uPffLJJzV27Fj17NlTffv21ZYtWyRJv//+uy6++GJJ0sUXX6xBgwbp008/Dd5NEz0C3Lrnnns0bNgwbdq0Sa1atdK7776rqKgojRs3LtShAQAAAECFGfX8jzpwLK/0ggFWNylOX9xyeqnl1q1bp6ysLLVr187t/saNG6tx48aaO3euU6P/oosu0vHjxzVlyhT7ttdff11XXnmlPvvsM82ZM0ePP/64pk6dqho1atiP/89//qM5c+aoRo0aGjp0qCwWi1577TVNnz5dixcvVo0aNbRw4UINGTJE69atU1pamv3Yjz76SD/88IOqV6+uMWPGaMqUKXrzzTfVvn17vf/++2revLnef/99pziDhUSAG7169dKMGTN08cUXKyEhQVarVd9++62SkpJCHRoAAAAAVJgDx/K0N+tEqMPwKDMzU5JUvXr1gNXZpUsXdenSRZI0efJkp33nnnuuatSoIUn25eUfeeQR3XLLLfbt/fr1U6tWrfT666/roYcesh87atQoe5yDBg3S9OnTAxazv0gEeHDeeefpvPPOC3UYQZN55KD+mH6VJCm/Xhf1ueKhUo4AAAAAEGnqJoVmLjRfz1vc+M7JyQnYuRs3buzzvmPHjmn79u164403NGvWLPv2goICHTt2zKlsw4YN7a+TkpJCuuw8iYAIVZB3XN2y50uSfrEVhjgaAAAAAOHIl+75odS2bVulpKTo999/16hRo7yWdZ1DoKioyG25qKgoj3V42jdx4kRdddVVXs/veKzFYpExxmv5YGKyQAAAAABApRQVFaUbb7xRH3zwgdv9o0aN0sSJEyWdfArv+JR+165d5T5/UlKSmjZtqvXr1zttnzlzpj7++GOf67FaTzXNbTZbQHs4uD1fUGsHAAAAACCIpkyZosTERN11110qLDzZ29kYo+eff15r1qzRnXfeKenk2P+FCxdKOjmb/xdffBGQ899///168803tX37dknSgQMHNHXqVHXs2NHnOmrXri2r1aojR45o2bJluvLKKwMSmycMDQAAAAAAVFpxcXH63//+pyeffFIZGRmKiYlRXl6eOnTooHnz5ik1NVXSyYTBpZdeql69eqlVq1Y6//zzNXnyZA0aNEizZs3SpEmT9M0330iSfZvj5H579+7V448/rh9//FGvv/66/fzXXXedsrOzddZZZ6l27dqKiorSM888ozZt2pQ4NjY2VlFRUXr88ce1d+9eDRkyRLNnz1a1atU0ceJEjR07VtWrV9e0adOCes8sJpQDE6qorKwspaSkKDMzU8nJyaEOx62De3eozisnM1S/JPZT17u+DnFEAAAAAELlxIkT2rJli5o3b674+PhQhwMPvH1O/rRDGRoQoVwnygAAAAAARAYSAQAAAAAARBASAQAAAAAARBASAQAAAAAARBASAQAAAAAARBASAZBFLBwBAAAAAJGCRECEYtUAAAAAAIhMJAIAAAAAAIggJAIAAAAAAIggJAIAAAAAAJXS0qVLNWjQIFksFrVt21aDBg1Sz5491apVK913330qKioKyHmmTJmirVu3BqSucBAd6gAAAAAAACiLXr16ae7cubJYLLrnnnt05ZVXSpJ++eUX9e7dW40aNdJNN91U7vNMnTpVgwYNUrNmzcpdVzigRwAkw6oBAAAAAKqOrl27qmPHjvrhhx9CHUpYIhEQoSwWPnoAAAAAVVdBQYHTamlPPfWUunTpooyMDGVkZGjBggX2fZs3b9ZZZ52lgQMHasCAAbrwwgu1fv16HT58WIMGDZIk3XbbbRo0aJBefvnlir6UgGNoAAAAAADAvVczpOz9FX/e6vWk6+eV+fBZs2Zp3bp1evzxxyVJr732mqZPn67FixerRo0aWrhwoYYMGaJ169YpLS1NN998s3r16qUHH3xQkjRu3DgtWrRIV155pX3owTPPPGNPClR2JAIAAAAAAO5l75eO7Q51FD55/PHHNWPGDB06dEh//PGH7rnnHo0YMUKS9Mgjj+iWW25RjRo1JEn9+vVTq1at9Prrr+uhhx7Srl27lJqaqqKiIkVFRemRRx5x6k1Q1ZAIAAAAAAC4V71epTmv42SBBw8e1JgxY3TeeefpnXfe0fbt2/XGG29o1qxZ9vIFBQU6duyYpJOTAY4dO1Zz5szRxRdfrKuvvlqtW7cOyKWEIxIBkEVMFggAAADAjXJ0zw+lOnXq6NZbb9UFF1ygzZs3S5ImTpyoq666ym35c889Vzt37tT777+v119/XdOmTdOHH36oc889twKjrjjMGBehqnI3FwAAAACIjo62/7dp06Zav3690/6ZM2fq448/liR99NFHSklJ0fXXX6+ff/5Z5513nqZPn24v69h+Ku5FUJmRCAAAAAAAVCn5+fl688031apVK7Vp00b333+/3nzzTW3fvl2SdODAAU2dOlUdO3aUJN1999367bff7McXFBQ4DQ2oW7eujhw5ov379+uMM86o2IsJAoYGAAAAAAAqpaVLl+quu+6SdGqywKKiIh0+fFht2rTRV199pejoaF133XXKzs7WWWedpdq1aysqKkrPPPOM2rRpI0m69dZbddVVV6latWo6fvy4OnTooKlTp9rPM2nSJN17771KSUnRvffeG5JrDSSLMYYB4gGWlZWllJQUZWZmKjk5OdThuHX04F7VeOHkl/7XhN5Kv/u7EEcEAAAAIFROnDihLVu2qHnz5oqPjw91OPDA2+fkTzuUoQEAAAAAAEQQEgGQWDUAAAAAACIGiYAIxaoBAAAAABCZSAQAAAAAABBBSAQAAAAAACRJzCUf3gL1+ZAIAAAAAIAIFxMTI0nKzc0NcSTwpvjzKf68yio6EMGgkiPrBwAAAES0qKgo1ahRQ/v375ckJSYmMq9YGDHGKDc3V/v371eNGjUUFRVVrvpIBEQqC51BAAAAAJxSv359SbInAxB+atSoYf+cyoNEAAAAAABAFotFDRo0UL169VRQUBDqcOAiJiam3D0BipEIAAAAAADYRUVFBazBifBE/3AAAAAAACIIiQAAAAAAACIIiQCIuUABAAAAIHKQCIhULAUCAAAAABGJRAAAAAAAABGERAAAAAAAABGERAAAAAAAABGERAAkmVAHAAAAAACoICQCIpSFyQIBAAAAICKRCAAAAAAAIIKQCAAAAAAAIIKQCAAAAAAAIIKQCAAAAAAAIIKQCIBYNQAAAAAAIgeJgAjFqgEAAAAAEJlIBAAAAAAAEEFIBAAAAAAAEEFIBAAAAAAAEEFIBEAWw2SBAAAAABApSAREKCYLBAAAAIDIRCIAAAAAAIAIQiIAAAAAAIAIQiIAAAAAAIAIQiIAAAAAAIAIQiIAklg1AAAAAAAiBYmACMWqAQAAAAAQmUgEAAAAAAAQQUgEAAAAAAAQQaJDHUAgtW3bVvXr13fadumll+q6666zv9+1a5euv/56HTlyRMePH9d1112nG264wemYH3/8URMnTlRcXJzy8vL01FNPacCAARVyDQAAAAAABFOVSgTUr19fc+fO9bjfZrPpnHPO0fnnn6/7779fBw4cUKdOnVSvXj2NGTNGkrRt2zaNHDlSs2bN0oABAzRv3jydc845WrVqldLS0iroSgAAAAAACI6IGhowa9YsrVmzRhMmTJAk1a1bV1dccYUeeeQRe5lnn31W7du3t/cAyMjIUJs2bfTcc8+FJOaKYGHVAAAAAACIGBGVCJg9e7batGmj6tWr27f17NlTK1as0JEjR+xlevTo4XRcz5499f3333usNy8vT1lZWU4/4Y5VAwAAAAAgMlWpREBOTo6uvvpqDRw4UIMHD9Zjjz2m/Px8+/7NmzcrNTXV6ZjiOQW2bNnitUzxfncee+wxpaSk2H+aNGkSqEsCAAAAACCgqlQioE2bNho/frzmz5+vmTNn6pNPPtFll11m35+bm6u4uDinY4rf5+bmei1TvN+de++9V5mZmfafHTt2BOqSAAAAAAAIqLBPBNxzzz2yWCxef9atWydJeuedd+zd+uvVq6cpU6boo48+0saNGyVJiYmJysvLc6q/+H1iYqLXMsX73YmLi1NycrLTDwAAAAAA4SjsVw247777dPPNN3st47pkYLGWLVtKkv744w+ddtppatGihX744QenMnv37pUkNW/eXJLUokUL7du3r0SZFi1alCl+AAAAAADCSdgnAnx9wr569WotWbJE1157rX3brl27JElNmzaVJA0ZMkQvv/yysrOz7RMGLlu2TN27d1fNmjXtZRYvXuxU97JlyzR06NCAXE+4sFjCvjMIAAAAACAIqkxr8NChQ3ryySd1+PBhSdLx48f1xBNPaPDgwWrXrp0kaeTIkerQoYOef/55SdLBgwf11ltv6b777rPXM2HCBK1Zs0Y//fSTJGnBggVat26dbrnllgq+IgAAAAAAAi/sewT4qnPnzjr//PM1YsQIJSQkKDs7Wz179tTDDz9sXyovKipKX3zxhW644Qb1799fx48f1wMPPKAxY8bY60lLS9OsWbN0xx13KDY2Vnl5eZo1a5bS0tJCdWkAAAAAAASMxRhjQh1EVZOVlaWUlBRlZmaG7cSBx3OOKeGpxpKk3+K6qOO980IcEQAAAACgrPxph1aZoQEAAAAAAKB0JAIgC51CAAAAACBikAiIUMXzJgAAAAAAIguJAAAAAAAAIgiJAAAAAAAAIgiJAAAAAAAAIgiJAEhiskAAAAAAiBQkAiIVkwUCAAAAQEQiEQAAAAAAQAQhEQAAAAAAQAQhEQAAAAAAQAQhEQAAAAAAQAQhEQCxagAAAAAARA4SARHKwqoBAAAAABCRSAQAAAAAABBBSAQAAAAAABBBSAQAAAAAABBBSARAzBYAAAAAAJGDRECEslj46AEAAAAgEtEaBAAAAAAggpAIAAAAAAAggpAIAAAAAAAggpAIAAAAAAAggpAIgGRMqCMAAAAAAFQQEgERymJh0UAAAAAAiEQkAgAAAAAAiCAkAgAAAAAAiCAkAgAAAAAAiCAkAiCLmCwQAAAAACIFiYAIxWSBAAAAABCZSAQAAAAAABBBSAQAAAAAABBBSAQAAAAAABBBSAQAAAAAABBBSARAYtUAAAAAAIgYJAIilMXCRw8AAAAAkYjWIAAAAAAAEYREAAAAAAAAEYREAAAAAAAAEYREAAAAAAAAEYREAGQJdQAAAAAAgApDIiBCWSw0/wEAAAAgEpEIAAAAAAAggpAIAAAAAAAggpAIAAAAAAAggpAIgGRMqCMAAAAAAFQQEgERiskCAQAAACAykQgAAAAAACCCkAgAAAAAACCCkAgAAAAAACCCkAgAAAAAACCCkAiALGLVAAAAAACIFCQCIpTFykcPAAAAAJGI1iAAAAAAABGERAAAAAAAABGERAAAAAAAABGERAAkJgsEAAAAgIhBIgAAAAAAgAhCIgAAAAAAgAhCIgAAAAAAgAhCIgAAAAAAgAhCIgAAAAAAgAhCIgCysGoAAAAAAESMSpUI2Lhxo/r166dBgwa53Z+ZmamxY8eqV69e6tatm6ZOnSpjnBu5v//+uwYNGqSBAweqR48e+uSTT0rU8+mnn6pnz54aMGCAMjIytGbNmmBcTsjZjCXUIQAAAAAAKlh0qAPw1dtvv62XXnpJUVFRHsuMHTtWqampWrp0qXJzc9WrVy8lJSXpb3/7myTp2LFjOvPMM/XEE0/osssu04YNG9S9e3c1btxYvXr1kiQtXbpU48aN0/Lly3Xaaafprbfe0vDhw7V27VolJSVVyLUCAAAAABAslaZHQO3atTVv3jy1atXK7f5Vq1bpiy++0MSJEyVJiYmJGj9+vB5//HEVFRVJkt544w3ZbDZdeumlkqTWrVtrxIgReuKJJ+z1PP744xo5cqROO+00SdLll1+uwsJCzZgxI4hXBwAAAABAxag0iYCzzz5bsbGxHvfPnj1b1atXV5s2bezbevbsqQMHDmjVqlX2Mt27d5fFYnEqM3v2bKd6evToYX9vtVrVvXt3ff/994G8HAAAAAAAQqLSJAJKs3nzZqWmpjptq1+/viRpy5YtXstkZmbq8OHDOnTokLKystyWKa7Dnby8PGVlZTn9AAAAAAAQjqpMIiA3N1dxcXFO24rf5+bm+lSmuJy7MsX73HnssceUkpJi/2nSpEn5LqaCsFYAAAAAAESekCYC7rnnHlksFq8/69at86muxMRE5eXlOW0rfp+YmOhTmeJy7soU73Pn3nvvVWZmpv1nx44dPsUMAAAAAEBFC+mqAffdd59uvvlmr2WKu/eXpkWLFtq3b5/Ttr1799r3eSuTkpKiWrVqSZJSUlLclimuw524uLgSvQgAAAAAAAhHIe0RkJycrMaNG3v9iY72LVcxZMgQZWdna8OGDfZty5YtU7169dS5c2d7mRUrVsgY41Rm6NCh9vdnnHGGli9fbn9vjNGKFSucygAAAAAAUFlVmTkCOnfurFGjRmnatGmSpOPHj+vll1/W3XffLav15GVeddVVslgsev/99yVJGzdu1Ndff6277rrLXs8999yjL7/8Ups2bZIkvfvuu4qKitK4ceMq+IoAAAAAAAi8kA4N8Mfnn3+up59+WuvWrdOJEyc0aNAgjR07Vtdcc429zFtvvaWbb75ZvXv3Vn5+vv7yl7/o9ttvt+9PSkrSt99+q/Hjx+ull17S8ePHNWPGDPXq1cteplevXpoxY4YuvvhiJSQkyGq16ttvv1VSUlKFXm9FsjBtIAAAAABEDItx7CePgMjKylJKSooyMzOVnJwc6nA8KpxcU9EWmzZGn6bTJi0LdTgAAAAAgDLypx1aZYYGACidzWa0Yd8x2Wzk/wAAAIBIRSIAiCD3/3e1zvznfE386NdQhwIAAAAgREgEwCNjjJ7+3wZN+u9qHTtREOpwEADvLd0hSfpkxa4QRwIAAAAgVCrNZIGoeF//tlfPzd4oSbJaLHrw/zqGOCIAAAAAQHnRIwCSh/kiF2w8aH/9wbIdHg//1/zNGvr0PP2wbl/AQwMAAAAABBaJgAhmZPG63+Kw29vaEo98tVab9mfr6hmsPAAAAAAA4Y5EADzyniY4idUnAQAAAKByKXMiYMuWLVq4cKEk6ciRIwELCOHJU3OfPEDldTQ3P9QhAAAAAAgBvxMBR44c0VlnnaWWLVtq7NixkqT7779fQ4YM0cGDB0s5GpWJ49AAT5kA8gCVV+ZxVoIAAAAAIpHfiYDbb79dzZs3188//6yGDRtKkl566SXdcMMNuvXWWwMeIILPUo7mPEMDAAAAAKBy8Xv5wC1btmjevHmSpJiYGPv2Cy64QK+88krgIkPQBaIJTxoAAAAAACoXv3sEHD9+3P7a8WmwMUb79rF8XFVicZgu0Hho8tMhAAAAAAAqF78TAc2aNdP999+vw4cPy/LnIPINGzboyiuvVOfOnQMeICpecYLH4sOyAZ4SBGU55+EcJq8DAAAAgGDzOxHw/PPPa968eapbt67mz5+vmJgYtWvXTps3b9azzz4bjBhRgR77eq16PPy9vl69x2m7pyf/geoRcMt7v6jbQ//T9B+3BKZCP+UX2vS/3/dpX9aJEvtOFBSFIKLgozcHAAAAEJn8niMgNTVVP/74o+bMmaM1a9ZIkjp27KhBgwYFOjZUsPxCm16dt1mSdOO7KzSub5p9XzDbjDab0axVJxMPD836Xdec3jyIZ3Nv2v/W69V5m1UzMUbLJg1TlPVkd4gJ7/+ir1fv1eN/6aQx3RpXeFwAAAAAEGh+JwKKDR48WIMHD3batnnzZrVo0aLcQSE0bC6PiC0+jA0IxFNl1/OGQnEC5EhugTbtz1ab+knKzC3QZyt3S5L+9sGvJAIAAAAAVAl+Dw3w5tprrw1kdQg6HyYB+JOnZQL9nSMgO69QP6zbp+P54dvd/r2l2yVJ+UW2EEcSXKFPvwAAAAAIBb97BFitVp+eFKPym7Fwq/21p0ajvw/zx7+7QvM3HNA5nRvohUu7lTm2YMrNL5Tk22SJlVmRjVQAAAAAEIn8TgSkp6frmWeesb8vKirSzp079fHHH2vUqFGBjA2VgLemZHZeoaZ9t151qsdp/KCWslgsmr/hgCRp1qo9euHS0utAMHHnAQAAgEjkdyLg2Wef1cCBA0tsv/TSS3XJJZcwPKCK8rxqgPOOsdOX6ObBrdS7RW1N+2693vhpqySpdWqShrVPDXKU8EcYTM0AAAAAIAT8niPAXRJAkqKjo/XHH3+UOyBUPMufT4bL0jB0PWTBxoO66LXFkqR3F2+3by/uCeC2DhqkIcFtBwAAACKT3z0CHnzwwRLbjh07psWLF6tevXoBCQoVw7hMFujvxH9S+Dfij50oUE5ekeqnxPt8jOXP+1LFpwgI+88OAAAAQHD4nQj45z//qS5dutjfWywWJSUl6YwzztCtt94ayNhQQU4UFOlEQZFPDUObzchqdWgi+9iY9JZkKEsCwhdZJwp0+uM/KDuvUDOv76uezWqVq779WSdUL9n3hEK4C4dlGwEAAABUPL8TAWeddZbee++9YMSCELr2zWV6dWx3r2V+2nRQt7z3iwacVkf/vLCL5m08oISYKM8H+PhIPVjt0dfnb1bWiZMrAFwz42etmjK8XPXlhPGSh2VBHgAAAACITH4nArwlAZYsWaLevXuXKyCExo+bDpb6XP6y15dIkj5buVv1k+P16vzNwQ+sHHIdGu7FCQF/VPVlMoPVEwMAAABAePMpEbB9+/bSC0m6/fbbtXDhwnIFhNBxXQHAm3BPApRHFW//29EjAAAAAIhMPiUCmjVrVurTUWNMlX+CWlUVf2qhahd6apAezslXYZEtbMbl+5MoAQAAAIBw5VMioHfv3nr//fe9ljHG6JJLLglIUKgYrs3acGrn7j56XIP/MVdFNqOvJgxQ69Qkv+twl5cqMdlhBAunzxsAAABAxfEpEfDEE08oLS3Np3KoxELUMHQ3Vv3xr9cpr9AmSfrbBys165YB5T7PzJ+366FZazWuX5ruHN621PJVPV3AqgEAAABAZLL6UmjgwIE+Vfavf/2rXMGg6vK3zek40V/m8YKAxHD3x6uVnVeoF+f8Uabjq1qzuapdDwAAAADf+L1qgCS98847+vrrr7V3716ncdMrV64MVFwIgUDPIu/rE3V3SYIohxSVzRaQcHwWKVNdMOcBAAAAEJl86hHg6NFHH9U//vEPpaWlafPmzcrIyFDfvn119OhRDR06NBgxIsgsfyYAQtUudHfaaOupr2aRLfCB2bzWeTITUNUTAqQBAAAAgMjkd4+Azz77TIsWLVJCQoIWLVqkyZMnS5ImTZqkK6+8MtDxIYiMyzP7cGoYOk7oV1jGRIC3VSwKbDbFWaM87A2nOxE8dAgAAAAAIpPfPQKqV6+uhIQESVJhYaF9e0JCgvbt2xe4yFDhgtlV3FvN7s4b5dCGL57ULpDxeetlEDkN5Ii5UAAAAAAO/E4E5OTkaO3atZKk2rVr65///Kd27dqlt956Szt27Ah4gKg4oWoWujuv1eFpvs0Y/e2Dler/+A9avu1wQM5Z1l4GgWKMUUFRBU9+4CLEtwAAAABAiPidCLjiiit01VVXaceOHbrzzjs1adIkNW3aVFdffbXuueeeYMSIChLM5eT8GW7/2NdrtWjzIfv7o7kF+mTFLu3OPKG/vLwoIPF4u9Rg9wjYn3VCA56co16PfK+N+44FpM4vV+3R09+t92uFhcjp+QAAAADAkd9zBIwfP17jx4+XJDVp0kRr167VsmXL1LZtW7Vv3z7gAaICBbFh6H1ogPP7V+dtDl4g9pN62xXcFvJzP2zUziPHJUmfrdyticPblKu+LQdzdNN/VkiSdh09oWkXpvt0HKsGAAAAAJHJ7x4BN954o9P7pk2basyYMSQBKrWTDcJAdxWviFn3D2XnKSev0O0+b6f31tgPdvt4x+Hj9tdf/ban3PUt3XKq98THK3b6fBxpAAAAACAy+Z0IePvtt3XOOefovffe04kTJ4IREyqI66oBu44e91AySOcvbnGXsUW6audRdX/4e3WY/K027fevi73XoQFlC6dMQrlCIR0CAAAAgMjkdyJg+PDheuWVV7R9+3YNHjxYV199tebOnRuE0FDRnp29sULPdyoPULYW6egXfrK/Hvr0fP/O7W2fcf6v6/Zi7y3drgc++02HsvP8OnegWcqYTgj2EAgAAAAA4cnvRMDHH3+sxo0b6+6779aiRYt000036dNPP1W7du3097//PRgxooIU2YI3i727p8+hbIaWd3z8+r3HdO8nq/XWom2695PV/p27XGcOHHoEAAAAAJHJ70TAL7/8Yn+9fft2ffvtt/r222+1YcMGzZ/v31NZhJefNh0qvVAAFa9SEIoGqbf5EHx5Ur5yxxH76+9+3xeIkCociQAAAAAgMpVpssDp06dr0KBBatGihd58801dfvnl+uOPPzRv3rxgxIggq4hx6u56G9gTAcE6qZcL89rY92HqgrJ2xw8nDA0AAAAAIpPfywcuXbpUmzdv1oUXXqgnnnhCvXv3DkZcqGI+WLZTezKdJ5cM6RPpcJksMBBLK5SxCnoEAAAAAJHJ70RAjx49tHDhQkVH+30oIozrU/MFGw86vT81KV/Ft0jDpQ0ciGsvayohXO4BAAAAgIrl99CA+fPnkwRAQNiCnADw1n3f6/KB9rkLvBQKk5EB2w7laM3urDIdG4oEDAAAAIDQ87tFHx8fH4w4EIEKbUardh5V3aS4Cj+3t/HxvjSPA5UHKM/QgD2Zx3XGtHkq8jbzoRfkAQAAAIDIxKN9hMxjX63V+z/vUJvUpIDXXWQzXnsceGsEJ8RElVp/QMb2l9NLc/4ocxJAYrJAAAAAIFKRCIAsQWoQltZWfv/nHZKk9fuOBfS8B47l6f9e+FG7XSYndOQtSdC3ZW0Pe8Kn4fzNb3v19uJt5aqDHgEAAABAZCIREMFMuAx0D6DsvEL1evT7Uhu5Xof//5nBCNd28q6jx3XDO8vLXQ+JAAAAACAy+T1ZoCTNnDlTGRkZ6t+/vyTpoYce0ttvvx3QwFD5hSLNMOnT1eVu4PoyiV4oUygrtx8NSD3kAQAAAIDI5Hci4NVXX9XEiROVnp6u48ePS5LGjBmjTz/9VM8++2zAAwT88d+Vu30qV1mehm89mKPPVu7S8fwi+7ZATU/gmPAoshnd/J8VuvCVRdrrZUgFAAAAgMrP70TA22+/rV9//VXPPfecUlJSJEkdOnTQzJkz9fHHHwc8QCAYvK4aYJz/67pdKl9j3Ndl+/ILbTrzmfma8P5KPf712rKf0APHeQY/Wr5Ds1bt0dKth3X3x6sCfi4AAAAA4cPvRIDValWtWrUkOc+cHhMTo/z8/MBFhkovHGbW98RbWzxcZtPfeihH+YU2SdKbi05NDBi4u3rqOtftPTVh4/yNBwJ2BgAAAADhx+9EQF5enn777bcS27///nsVFRW5OQLhLmirBgSl1sAo7xWXJ8cRLgkSpx4ODp9WZRk2AQAAAKBs/F41YMqUKerTp4/OOOMMbdy4UVdddZXWr1+vFStW6IsvvghGjAiSoK8aEB7tXbe8LR9ojHQ0N18zFm7xWMZSARfnKcSAzREQhDoBAAAAhD+/ewSMGDFCS5YsUa1atZSamqrVq1erdevW+uWXXzRs2LBgxAg4KbKV/5G1t6fe//t9nyZ++KtenPNHuc8THIFptfPkHwAAAIhMfvcIWLJkiXr37q0ZM2YEIRxUJcF6yPzFr7t1btdGJbZP+XyNH7V4bgV//dveMkTlx5nDpAXuOBeClR4BAAAAQMTwu0fA5ZdfrqVLlwYjFlQhxpigjYW/y8Os9jMWbvW5jrK0xU8U2DTxw191z8erVFBk87+CAAnUbbU5rYLgXOmnv+wM6TUCAAAACB6/EwHR0dF6/fXX1adPHz3yyCPatm1b6QchrAWjuW5MeI87L8sz+RfmbNRHy3fq/Z936I2ftpb53L4mSDytXhCo2+qtZ8LtM3/V24v43QYAAACqIr8TAU8++aRee+01zZs3T61bt9att96qYcOG6Y033tCxY8dKrwBhI5gd1MOj87tnZekRMHvtfvvr3/dklePc4Xd33OUmHpz1e8UHAgAAACDo/E4EjBo1SpIUFxenCy64QDNnztSoUaN00003qX79+gEPEJVXGHcI0LETBX4fE849HMrC0/KB4WBP5nGt21v2ZAsAAAAAz/xOBEyYMEGSNHfuXF1zzTWqX7++/v73v+uiiy5i+UDYBXOOgEB47Ot1oQ6hzAJ1Xz0NPQi1g9l5ynhqrs56ZoF+3Hgw1OEAAAAAVY7fiYD3339faWlpGjZsmHbv3q2XX35Ze/fu1RtvvKEzzjgjGDGiEgpqEzMAlS/fdqT8lQRAWZr0gZsjwKHOMMrZvDL3D+UXnpyo8Oo3fw5xNAAAAEDV4/fygcYY3Xbbbbr00kuVmpoajJg82rhxo8aNG6fY2FjNnTu3xP4aNWqoS5cuTtv+9re/afTo0fb3v//+u8aPHy+bzabc3Fzdd999GjNmjNMxn376qR599FHFx8fLarXqpZdeUocOHYJxSSEV1DkCTHgPDSiLk93nA3vXNu7P9j+OYKwaEJgqA6LIIUNRnBAAAAAAEDh+JwIefPBB3XDDDW73bd68WS1atCh3UO68/fbbeumllxQVFeWxTJcuXdwmCIodO3ZMZ555pp544glddtll2rBhg7p3767GjRurV69ekqSlS5dq3LhxWr58uU477TS99dZbGj58uNauXaukpKRAX1ZYsAQhJWBkwuopc6jYbEaFNqPYaM+db7YfylXT2okltrvOKXj+ywt129DWAYvNcdLCcPqswm2+AgAAAKCq8XtogKckgCRde+215QrGm9q1a2vevHlq1apVmet44403ZLPZdOmll0qSWrdurREjRuiJJ56wl3n88cc1cuRInXbaaZKkyy+/XIWFhZoxY0a54g9PwW5wBaf+kI1t9/NysvMKdca0uer3+GxtOZjjsdyWQ573OVq27Ygun77Er0b724u3adBTc/T5r7tL7HO8i6FofBtj3K6gEE5JCQAAAKAq8ikRcN5552nixIknD7BaFRUV5fZn3rx5QQv07LPPVmxsbLnqmD17trp37+402VrPnj01e/ZspzI9evSwv7darerevbu+//77cp070oThCnnl5+c1vThnk7YeytXB7Hz97YOVQQmpNH//72/aeihXt773S8mdIZwj4EhOvoY+PU9Dnp6nwzn5TvvIAwAAAADB5dPQgIyMDDVo0ECSlJ6ermeeeaZEGWOMbr/99oAG56+9e/fqoosu0p49exQbG6vzzz9f1113nazWk/mOzZs3q3fv3k7H1K9fX5mZmTp8+LCMMcrKyiox90H9+vX188+eJy3Ly8tTXl6e/X1WFsueScFrXFaWJMO+rBP21956BGQdd7+UYbCv07FnRUWv8DDtf+v1x4GT9+TBL9bomYu7OsRSoaEAAAAAEcenRMBtt91mf33XXXcpIyPDbbm77rorIEGVVatWrfToo4+qZcuW+uOPPzR06FD98ccfeuqppyRJubm5iouLczqm+H1ubq69m7K7Mrm5uR7P+9hjj2nq1KmBvJRKr7I01v3iZwPVsbu9zeb5htzy3i8ald6wTPWWR/FntP1QrnYe8fz9DoZth06d7/c9zokzK5kAAAAAIKj8niPA3dPu7Oxs9erVSwkJCX7Vdc8998hisXj9WbfO9/XeZ82apZYtW0qSWrZsqYkTJ+qf//ynjh8/LklKTEx0enIvyf4+MTFRiYmJTtscyxTvc+fee+9VZmam/WfHjh0+xxwOgjZZYMBrrVysDjegtDvsbqy8R2W8sQs2HnB6bzPShn3HlPGPOfpkxa6yVVpGsVGn/unJc10ZINK/OAAAAECQ+b1qwMyZM3X99dc7batevbpmzZql//u//9O5557rc1333Xefbr75Zq9l6tev72+I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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "Rather than a fixed number of iterations, we can also fix the runtime, and allow as many iterations as fit in that timeframe." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found solution with objective 2990.0.\n" ] } ], "source": [ "accept = SimulatedAnnealing(start_temperature=1_000,\n", " end_temperature=1,\n", " step=1 - 1e-3,\n", " method=\"exponential\")\n", "\n", "alns = make_alns()\n", "res = alns.iterate(init_sol, select, accept, MaxRuntime(60)) # one minute\n", "\n", "print(f\"Found solution with objective {-res.best_state.objective()}.\")" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/png": "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EKCTJ08qKChIJ0+eVO3atfP9fPJryJAhmj9/vpYuXaq+fftq1qxZ1jz3rPok6d1339XChQvt9g0ICNCFCxfyPH69evXUvn17ffTRR3ryySe1a9cunT9/XhEREVafDz/8UA8++KDmzp2r/v37y2az6cCBA6pdu7YVUFyvM2fOKDMzUz/99JPCwsLstp0+fTrX9QSymzBhgqZNm6Yvv/xSnTt3liStWbNGHTp0uOYas17bzz//XJs2bbLbVrZsWV28eFGSdP78eXXo0EEVK1bUV199pYCAAEnSoEGDtGbNmhzHy++q+GXLlrW77+bmZnd5TEe4lvPH19c3R9uRI0fUrl07tW3bVmvXrrV+32JiYq7rHLnSa1axYkVJ0okTJ3Lsk/11c3O79N2Vo183AHBVBAEAgCLl5uambt26adGiRTpy5IhuuummXPtt2LBBNptNPXv2tGvPvmhcllOnTkmS9e16bipVqqSTJ09edcG6SpUq6fTp01d5FgXXoUMH1a5dW7NmzVKXLl20ceNGu4Xlsr7xHDVq1BUXUbyaBx54QIMGDdIPP/ygpUuX2o0GkKTZs2erUaNGGjBgwDUd393dXcYYu7bLF70rX7683NzcFB0draVLlxb4MWbPnq0uXbpYIYAjZL2299xzj1577bUr9tuwYYP27t2rRYsWWSFAXscrjPPkWjni/JGk5cuX68SJExo3blyuodu1yv6aBQYGWu1Zv7uVK1d22GMBAK6OqQEAgCI3adIklSlTRjNmzMh1+5EjRzR//nwNHjxYISEhdtvOnj2rP//8065t8+bNCgoKyjMI6Nq1q86ePZvjuvO///677rnnHmvl8q5duyouLi7HSv2TJ0/W9OnTrfseHh7Wh+Lz58/riy++yPM522w23X///Vq1apVeeOEF3X333fLw8LC2t2nTRj4+Pvr5559z7PvCCy/kenWDy915553y8/PTe++9p88++0z9+/e3256ammp9s5rlalcMyC4gICDHh9/du3fb3ff29lb79u3166+/KjMz027b//3f/2nixIl5PkZ+a8x67bLegy1btmjv3r25HjNrBf3cXtv333/fuupE1jfeV3v8Ll26yM3NTZs3b7ZrP3r0qFq2bJlrWOUolz/vXbt26ZdffnHI+SPl/zXIqiW/vwNdu3aVpBwjMn788UdJ0q233pqv+gAAjkEQAAAocvXr19eiRYv0zjvv6JVXXrEbtrxt2zZ169ZN7dq109tvv51jXy8vLz311FPWcO6PP/5Yv/zyi55//vk8h52PGDFCderU0aOPPqqkpCRJl0KFRx55RNWqVVOpUpcGyU2cOFG+vr4aNWqUFQ7Exsbq7bfftj7MSFLt2rUVHx8vY4y+//5769JreRk0aJBsNptef/31HN/W+/r66uWXX9b8+fOt+dSS9MUXX+itt97KMR89N97e3urbt68++eQTtWnTJscw7F69eum3337TsmXLJEkpKSl64YUXrnrcLB07dtQPP/ygv/76S5K0bt06bd++PUe/adOm6ciRI5o8ebL1QXHPnj0aMWJEjqkZl+vVq5f++9//KjY2VtKlqQbZA5gstWrVks1ms0Khxx57zPpQeTmbzaYZM2Zo/fr1mj17ttX+448/6rnnnrNe2zZt2qhixYp68803rXPku+++06pVq+yOFxwcrJEjR+qjjz6y6kxLS9NTTz2lkJAQ+fv75/kcr0dAQIDKlCljPe/Jkyfriy++cMj5I0m33HKLPD099a9//cv6HZs7d26uIUtBfgfuvfdetW7dWhMmTLCmAfz++++aPn267r77bkVFReX3JQAAOILz1ikEALi633//3Tz44IOmYcOGJjQ01DRq1MhERUWZ2bNnm4yMDKtfYmKiCQ0NNeXLlzdBQUHms88+M5GRkaZ27dqmVq1adqv5Z8lthfsjR46YQYMGmerVq5umTZuaZs2amalTp9o9ljHG7Nu3z9xxxx2mevXqJjQ01ERFRZl169bZ9dmzZ4+JiIgw9evXN40bNzbLly83P/74owkNDTUeHh6mfPnyuV72r1u3bnmuGP/vf//bNGvWzNSuXds0a9bM3HbbbWbbtm35fUnzXF09NTXVPPXUU6ZGjRqmSZMmpmPHjtaq7TVq1DCPPfaY+eSTT0xoaKiRZAICAkynTp2s/RMSEky/fv1M1apVTWRkpBk3bpx59tlnjSQTGhpqFi1aZPX96aefzC233GKqVatmmjdvbtq1a5djxfjcJCQkmAcffNBUrVrVNG/e3HTt2tVMnDjRSDJ16tQxL7/8stV3woQJpmbNmqZx48bmjjvuMBcuXMjz2N9++61p27atqVmzpmnevLnp1KlTjvf1xx9/NO3atTOBgYEmKirKDBkyxHTv3t14eHiY0NBQs2PHDqvv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M2/ePL3zzjtyd3e/Yp+wsDCtWbPmitvPnTunW265RVOnTtW9996rvXv3Kjw8XNWrV1dkZKQkafPmzRo4cKC2bNmim2++WXPnzlXXrl21a9cu+fr6OvppAQAAAABQpAo8IiA1NVW//fZbjvaVK1cqIyPDIUXlpmLFilq7dq3q1q17zceYPXu2MjMz1a9fP0lSvXr11K1bN02dOtXqM2XKFPXo0UM333yzJKl///5KT0/XnDlzrqv+G4lhSAAAAAAAlFgFDgImTpyoVq1a6bbbbtO+ffs0ePBgtWnTRj179tRLL71UGDVKkrp3767SpUtf1zFWrVql8PBwu5EMERERWrVqlV2fFi1aWPfd3NwUHh6ulStXXtdj30jOJl90dgkAAAAAgGtU4CCgW7du2rRpkypUqKCAgABt375d9erV088//6wuXboURo35dvToUd19992KiopS586d9d577ykzM9Pavn//fgUEBNjtExgYqISEBJ0+fVqnTp1SYmJirn3i4uKu+LipqalKTEy0+7mRvfz1bmeXAAAAAAC4RgVeI2DTpk1q2bJlsRwqX7duXb300kuqU6eO/vjjD3Xu3Fl//PGHpk2bJklKTk6Wp6en3T5Z95OTk2WMsWvL3ic5OfmKj/vyyy9r0qRJjnwqAAAAAAAUigKPCOjfv782b97skAcfO3asbDZbnj+7d+f/2+fly5erTp06kqQ6depo9OjReu2116zLHHp7eys1NdVun6z73t7e8vb2tmvL3idrW26efvppJSQkWD+HDx/Od83FgY05/wAAAADgMgo8IqBUqVL68MMP9fjjj6tXr17q37+/goKCrunBn3nmGT366KN59gkMDLymY0uXwoCMjAwdPHhQ9evXV3BwsI4dO2bX5+jRo/L397euhODv759rn+Dg4Cs+jqenZ45RBCVBprHJzUYIAAAAAACupMBBwCuvvKJevXopNTVVX3zxhR5//HElJyerX79+uuOOOwp0iT0/Pz/5+fkVtIRcrVq1SufPn9dtt91mtcXHx8tms6l69eqSpE6dOmnq1KkyxlgLBsbGxqpz587WPh07dtSWLVus+8YYbd26VePGjXNInQAAAAAAOFOBpwb06tVL0qVvwe+8804tXLhQvXr10iOPPHJd395fr8OHD2vatGnWXP7Tp09rxowZuu++++Tj4yNJGjx4sGw2mxYs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a6bo6Gj17t1bhw4dknTpG/JWrVrJZrNp0aJF+n//7/+pbt26CgsLkyS98847atmypTp06KCIiAi9+OKLMsZIkr777juNGDFCkhQTE6OYmBht3LhRY8aMUa1atRQTE2NX47x58xQWFqaWLVuqWbNmWrRokbVtyJAhCgwM1H333aennnpK0dHRCgkJ0YoVK/J83kuWLFGrVq3k7e1t1z5ixAjFxMTotttuk7+/vzp16qT27durUqVK6t27d47aOnbsqGXLliktLS3frzkAAMWGAQAALkGSmT17tnU/Li7OSDJxcXF2/e655x5zzz33mIyMDGOMMS+99JJp2LChSU9Pt9vv/vvvNxkZGebcuXMmJibGGGNMRESE2b59uzHGmKSkJNO0aVPz8ccfW8devXq1ye2fHxMmTDDR0dHW/RUrVhgfHx+ze/duY4wx27ZtM15eXuaHH36w+gwcONCUL1/e7Nq1yxhjzIwZM0zNmjXzfA169Ohhhg4desXtXbt2Nf/617+MMcYMGjTIjB49Otd+R48eNZLMli1b8nw8AACKI0YEAAAAy/79+7VgwQI98cQTcnO79M+Ehx56SDt37rTWGchy3333yc3NTT4+Plq9erUkadGiRWrcuLEkqWzZsurevbu+/vrrAtfx4osvqnfv3goJCZEkNWnSRF27dtVLL71k169Zs2aqX7++pEujDA4dOqQzZ85c8bjHjh1ThQoVrrh9x44datiwoaRLoyaybl+uXLly1vEAAChpWCMAAABYduzYIWOMhg8fLg8PD6s9KChIJ06csOtbvXr1HPv/+eefevzxx3Xy5El5eHjowIEDql27doHr+O2339SxY0e7trp169pND5CkqlWrWrd9fX0lSYmJiSpfvnyux01ISFCpUrn/8ycxMVF//vmnGjVqJEnavXu3dftyWa9NXqEDAADFFUEAAADI4ZNPPrnqB3h3d3e7+wcPHlSXLl00efJkjR49WpI0ceLEHCMJHCl7DTabTZKsNQlyU65cOV28eNGubc6cOZozZ45Onz4tLy8v3XfffTp//rxSUlI0atQoubu76/XXX7fWQZBkHSOv0QUAABRXTA0AAMBFZQ39l6TMzEydP3/e+gZ8z549dn2fe+457d69O8/jxcbGKiUlRXfffbfVdvlietkfMz09XSkpKbkeq3Hjxvr999/t2v744w81adIkzxquJjAwUKdPn7ZrGzRokNasWaOOHTuqf//+WrNmje666y517dpV69ev15o1a+xCAEnWMQICAq6rHgAAnIEgAAAAF1WxYkW5ubnpzJkzio2N1aBBgxQcHKx77rlHr7zyii5cuCBJ2rBhgxYvXqy6devmebz69evLZrNp1apVkqSUlJQc6wNUrlxZ0qUh9UuWLNFzzz2X67HGjRunzz//XPv27ZN0acrCN998o2eeeea6nnPbtm1zBAxZfvzxR7Vu3VqS9MMPP1i3c/P777+rXLly1noIAACUJDaT1/g5AABQ4m3evFljxozR2rVrFRISon79+lkfwJ966il9+eWX8vHx0fTp09W2bVslJSVp1KhRWrt2rW666Sb5+vrq1VdfVd26dfXLL79o6NCh2rRpk1q2bKn+/fvr0UcftR5r5syZmjJlimrUqKGAgAAZY7Ry5Ur16NFDn376qSTp3nvv1c6dO1WmTBnNnj1bs2bN0meffaazZ8+qXbt2Wr58uSRp7ty5evXVV+Xp6am0tDQ9/fTTuuuuuyRdutzfggULJF1atPCBBx7QwIEDrbo++OCDXEcP7Nu3T+Hh4frrr7/k4+NjtaempsrPz0+//vqr6tevrypVquizzz7LcdnALBMmTNDBgwc1Z86c635/AAAoagQBAADApQwfPlxVqlTRuHHjrmn/s2fPKiIiQt99951q1Kjh4OoAACh8TA0AAAAuZerUqdq5c6c1haGgHnzwQb3zzjuEAACAEosRAQAAwCWdOnVKFStWLLL9AAAoLggCAAAAAABwIUwNAAAAAADAhRAEAAAAAADgQggCAAAAAABwIQQBAAAAAAC4EIIAAAAAAABcCEEAAAAAAAAuhCAAAAAAAAAXQhAAAAAAAIAL+f/yHsdDNtvwZgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(figsize=(12, 6))\n", "res.plot_objectives(ax=ax, lw=2)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Other stopping criteria are available in `alns.stop`." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Conclusions\n", "\n", "This notebook has shown the various operator selection schemes, acceptance and stopping criteria that can be used with the `alns` package.\n", "The `alns` package is designed to be flexible, and it is easy to add new schemes and criteria yourself, by subclassing `alns.select.OperatorSelectionScheme`, `alns.accept.AcceptanceCriterion`, or `alns.stop.StoppingCriterion`.\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9" } }, "nbformat": 4, "nbformat_minor": 2 }