diff --git a/Homework8/GA.ipynb b/Homework8/GA.ipynb index 6a94c0f..360f457 100644 --- a/Homework8/GA.ipynb +++ b/Homework8/GA.ipynb @@ -4,7 +4,7 @@ "metadata": { "colab": { "provenance": [], - "authorship_tag": "ABX9TyNRW9E75RblXpm5OcrV61K5", + "authorship_tag": "ABX9TyNFq7L3DWGH3K7FkXNc0JY6", "include_colab_link": true }, "kernelspec": { @@ -61,6 +61,13 @@ "#number of dimensions in a solution\n", "n = 2\n", "\n", + "Generations = 500 #number of GA generations\n", + "\n", + "crossOverRate = 0.9 #whether the couple breeds or just continues into next generation\n", + "mutationRate = 0.5 #rate at which mutation can occur\n", + "eliteSolutions = 4 #number of elite solutions form previous generation that continue on unchanged\n", + "mutationFactor = 50 # the largest number by which the mutation can change a random entry\n", + "\n", "#create the function to evaluate against\n", "\n", "def evaluate(x):\n", @@ -73,7 +80,7 @@ "metadata": { "id": "26OLLbiuFZUD" }, - "execution_count": 41, + "execution_count": 153, "outputs": [] }, { @@ -86,9 +93,9 @@ "base_uri": "https://localhost:8080/" }, "id": "2SnKeAulFcDb", - "outputId": "7d9b80e2-44cb-4cdf-9ba5-2e1ffadd504f" + "outputId": "69de9d85-1607-4e64-fb96-6b50c2055272" }, - "execution_count": 42, + "execution_count": 154, "outputs": [ { "output_type": "execute_result", @@ -98,7 +105,7 @@ ] }, "metadata": {}, - "execution_count": 42 + "execution_count": 154 } ] }, @@ -116,7 +123,7 @@ " return x\n", "\n", "\n", - "populationSize = 10 #size of GA population\n", + "populationSize = 8 #size of GA population\n", "\n", "\n", "#create initial population by calling the \"createChromosome\" function many times and adding each to a list of chromosomes (a.k.a., the \"population\")\n", @@ -142,7 +149,7 @@ "metadata": { "id": "ESLFVICxG9Qk" }, - "execution_count": 38, + "execution_count": 155, "outputs": [] }, { @@ -157,9 +164,9 @@ "base_uri": "https://localhost:8080/" }, "id": "C0PY_zLWG-1Q", - "outputId": "e2e8ba98-28dc-4415-ced8-192539db2532" + "outputId": "fc18178f-9cf8-46b1-a769-df43d0fa32a9" }, - "execution_count": 12, + "execution_count": 156, "outputs": [ { "output_type": "execute_result", @@ -167,7 +174,7 @@ "text/plain": [ "[([446.14353105779264, 250.54704019124802], 527.4133728145813),\n", " ([-149.55511712002232, 457.5069782750403], 529.5175755072069),\n", - " ([341.5798881575133, 401.7493665558342], 587.1606585151048),\n", + " ([341.5798881575133, 401.7493665558342], 587.160658515105),\n", " ([221.67542833548737, 98.15809607258109], 721.5727168785847),\n", " ([235.9259771456252, 88.35921480816262], 755.2998456833657),\n", " ([-159.75914916703096, 252.72064983338123], 897.1888728390384),\n", @@ -176,14 +183,14 @@ ] }, "metadata": {}, - "execution_count": 12 + "execution_count": 156 } ] }, { "cell_type": "code", "source": [ - "crossOverRate = 0.8\n", + "\n", "\n", "#implement a crossover\n", "def crossover(x1,x2):\n", @@ -218,9 +225,9 @@ "base_uri": "https://localhost:8080/" }, "id": "ylKte0suIux4", - "outputId": "f5600df1-edfa-4689-b10f-87cbeea3afe2" + "outputId": "f5a185a4-cb5e-469e-c336-9469834916c4" }, - "execution_count": 31, + "execution_count": 157, "outputs": [ { "output_type": "execute_result", @@ -230,13 +237,13 @@ ] }, "metadata": {}, - "execution_count": 31 + "execution_count": 157 } ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 158, "metadata": { "id": "E5M81SgLEU7T" }, @@ -252,11 +259,7 @@ "\n", "\n", "\n", - "Generations = 100 #number of GA generations\n", "\n", - "crossOverRate = 0.8 #currently not used in the implementation; neeeds to be used.\n", - "mutationRate = 0.05 #currently not used in the implementation; neeeds to be used.\n", - "eliteSolutions = 3 #currently not used in the implementation; neeed to use some type of elitism\n", "\n", "\n", "\n", @@ -295,7 +298,7 @@ " i = 0 #start with the most likely\n", " while p>cumrank[i]: #grab the random int when finally surpass the p value\n", " i+=1\n", - " matingPool.append(pop[i]) #add it into the pool\n", + " matingPool.append(pop[i][0]) #add it into the pool\n", "\n", "\n", " return matingPool\n", @@ -305,6 +308,11 @@ "def mutate(x):\n", "\n", " #create some mutation logic -- make sure to incorporate \"mutationRate\" somewhere and dont' do TOO much mutation\n", + " if mutationRate > myPRNG.random():\n", + " i = myPRNG.randint(0,n-1)\n", + " x[i] += mutationFactor*myPRNG.uniform(-1,1)\n", + " if (x[i] > 500) or (x[i]<-500):\n", + " x[i] = 0\n", "\n", " return x\n", "\n", @@ -320,29 +328,29 @@ ], "metadata": { "id": "FEeSCCBxQtDW", - "outputId": "6082fcfd-9fb9-4afd-fa63-dc40536ad245", + "outputId": "c497dd23-30d7-4be3-b09f-c4874ec8cba9", "colab": { "base_uri": "https://localhost:8080/" } }, - "execution_count": 19, + "execution_count": 159, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "[([235.9259771456252, 88.35921480816262], 755.2998456833657),\n", - " ([-159.75914916703096, 252.72064983338123], 897.1888728390384),\n", - " ([341.5798881575133, 401.7493665558342], 587.1606585151048),\n", - " ([235.9259771456252, 88.35921480816262], 755.2998456833657),\n", - " ([-149.55511712002232, 457.5069782750403], 529.5175755072069),\n", - " ([-424.9087346323346, -132.76709292353138], 1140.227575574424),\n", - " ([341.5798881575133, 401.7493665558342], 587.1606585151048),\n", - " ([-149.55511712002232, 457.5069782750403], 529.5175755072069)]" + "[[446.14353105779264, 250.54704019124802],\n", + " [-149.55511712002232, 457.5069782750403],\n", + " [-149.55511712002232, 457.5069782750403],\n", + " [-149.55511712002232, 457.5069782750403],\n", + " [446.14353105779264, 250.54704019124802],\n", + " [341.5798881575133, 401.7493665558342],\n", + " [-159.75914916703096, 252.72064983338123],\n", + " [341.5798881575133, 401.7493665558342]]" ] }, "metadata": {}, - "execution_count": 19 + "execution_count": 159 } ] }, @@ -377,55 +385,100 @@ "\n", " return popVals\n", "\n", - "crossover(pop[0],pop[1])" + "breeding(rouletteWheel(pop))" ], "metadata": { "id": "03X8tEbfQ89p", - "outputId": "88fcf848-2bf7-48b2-d938-b5cf00036661", + "outputId": "7a671ed2-fbbc-4ec7-8194-466daa6585eb", "colab": { "base_uri": "https://localhost:8080/" } }, - "execution_count": 46, + "execution_count": 160, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "(([446.14353105779264, 250.54704019124802], 529.5175755072069),\n", - " ([-149.55511712002232, 457.5069782750403], 527.4133728145813))" + "[([416.1934443364447, 401.7493665558342], 48.266513368955486),\n", + " ([446.14353105779264, 88.35921480816262], 495.04928396766866),\n", + " ([-149.55511712002232, 457.5069782750403], 529.5175755072069),\n", + " ([-149.55511712002232, 457.5069782750403], 529.5175755072069),\n", + " ([-162.61910079873596, 252.72064983338123], 915.5512883437084),\n", + " ([235.9259771456252, 276.0870080673069], 975.108568323125),\n", + " ([341.5798881575133, 250.54704019124802], 990.9171284683437),\n", + " ([-197.90045094804782, 252.72064983338123], 1082.9256723043786)]" ] }, "metadata": {}, - "execution_count": 46 + "execution_count": 160 } ] }, { "cell_type": "code", "source": [ - "\n", - "\n", - "\n", "#insertion step\n", "def insert(pop,kids):\n", "\n", " #this is not a good solution here... essentially this is replacing the previous generation with the offspring and not implementing any type of elitism\n", " #at the VERY LEAST evaluate the best solution from \"pop\" to make sure you are not losing a very good chromosome from last generation\n", " #maybe want to keep the top 5? 10? solutions from pop -- it's up to you.\n", - "\n", + " newlist = []\n", " for i in range(eliteSolutions):\n", - " kids.append(pop[i])\n", + " newlist.append(pop[i])\n", + " for kid in kids:\n", + " newlist.append(kid)\n", + " popVals = sorted(newlist, key=lambda newlist: newlist[1], reverse = False)\n", + " return popVals\n", + "\n", + "insert(pop,breeding(rouletteWheel(pop)))" + ], + "metadata": { + "id": "xEZ7KWXSfHBq", + "outputId": "62b23e50-643d-4534-d247-e410deafae50", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 161, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[([209.56262812767477, 457.5069782750403], 381.3546704337997),\n", + " ([235.9259771456252, 401.7493665558342], 383.9074645770396),\n", + " ([221.67542833548737, 457.5069782750403], 417.0276231701156),\n", + " ([446.14353105779264, 250.54704019124802], 527.4133728145813),\n", + " ([-149.55511712002232, 457.5069782750403], 529.5175755072069),\n", + " ([341.5798881575133, 401.7493665558342], 587.160658515105),\n", + " ([235.9259771456252, 224.34873987038446], 607.9335319896305),\n", + " ([377.030349898097, 88.35921480816262], 633.0416206061122),\n", + " ([221.67542833548737, 98.15809607258109], 721.5727168785847),\n", + " ([-149.55511712002232, 98.15809607258109], 834.0626692156761),\n", + " ([-149.55511712002232, 98.15809607258109], 834.0626692156761),\n", + " ([-159.75914916703096, 134.01377925968183], 961.6867314018095)]" + ] + }, + "metadata": {}, + "execution_count": 161 + } + ] + }, + { + "cell_type": "code", + "source": [ + "\n", "\n", "\n", - " return kids\n", "\n", "\n", "\n", "#perform a simple summary on the population: returns the best chromosome fitness, the average population fitness, and the variance of the population fitness\n", "def summaryFitness(pop):\n", " a=np.array(list(zip(*pop))[1])\n", - " return np.max(a), np.mean(a), np.min(a), np.std(a)\n", + " return np.min(a), np.mean(a), np.max(a), np.std(a)\n", "\n", "\n", "#the best solution should always be the first element...\n", @@ -439,6 +492,7 @@ " Population = initializePopulation()\n", "\n", "\n", + "\n", " #optional: you can output results to a file -- i've commented out all of the file out put for now\n", " #f = open('out.txt', 'w') #---uncomment this line to create a file for saving output\n", "\n", @@ -467,29 +521,617 @@ ], "metadata": { "id": "lZqIR1dVQqjB", - "outputId": "9755db05-f54c-47b1-ca32-995cd63aff8f", + "outputId": "3960fcde-2763-4233-8d33-f7d7957df7cd", "colab": { - "base_uri": "https://localhost:8080/", - "height": 310 + "base_uri": "https://localhost:8080/" } }, - "execution_count": 35, + "execution_count": 162, "outputs": [ { - "output_type": "error", - "ename": "ValueError", - "evalue": "setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0m__name__\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"__main__\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mmain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mmain\u001b[0;34m()\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mmates\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrouletteWheel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPopulation\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#<--need to replace this with roulette wheel selection, e.g.: mates=rouletteWheel(Population)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0mOffspring\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbreeding\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 41\u001b[0m \u001b[0mPopulation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPopulation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mOffspring\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mbreeding\u001b[0;34m(matingPool)\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mchildren\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mchildrenFitness\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0mchildrenFitness\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m418.982887272433\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part." + "output_type": "stream", + "name": "stdout", + "text": [ + "Iteration: 0 (220.99391461141238, 680.6129055160169, 1256.0772964429411, 307.44611736964737)\n", + "Iteration: 1 (220.99391461141238, 557.7980268943405, 1172.4554554913063, 294.9826196450438)\n", + "Iteration: 2 (133.12194755527213, 305.70700816902064, 459.6963687673553, 108.68460822826819)\n", + "Iteration: 3 (133.12194755527213, 286.2077723467481, 571.4986667810965, 142.1526208026974)\n", + "Iteration: 4 (133.12194755527213, 249.54534229884985, 545.2805086331955, 134.59228125748248)\n", + "Iteration: 5 (122.55037679349886, 175.70048456024858, 286.4341710729242, 49.86091555976428)\n", + "Iteration: 6 (122.55037679349886, 167.70684550267256, 328.0048516025604, 55.141667748472436)\n", + "Iteration: 7 (122.55037679349886, 169.30933639640259, 325.53249671071546, 68.15348269208069)\n", + "Iteration: 8 (122.55037679349886, 157.52103908445403, 321.689479958952, 62.08571320400347)\n", + "Iteration: 9 (122.55037679349886, 156.85903524653344, 360.4270042166042, 73.4261003016112)\n", + "Iteration: 10 (122.55037679349886, 141.30234055255877, 232.79141797094334, 37.30601833835241)\n", + "Iteration: 11 (122.55037679349886, 176.81052059479802, 366.5694280284989, 88.64468809814755)\n", + "Iteration: 12 (122.55037679349886, 163.7154547158901, 324.9213576669326, 65.30160511440661)\n", + "Iteration: 13 (122.55037679349886, 122.71924834924148, 123.56360612795464, 0.3776082781066681)\n", + "Iteration: 14 (122.55037679349886, 141.36031592163545, 282.97635009521696, 46.20937930072041)\n", + "Iteration: 15 (122.55037679349886, 176.0663905856358, 379.38566620466935, 80.99863816217186)\n", + "Iteration: 16 (122.55037679349886, 142.7614200905086, 358.96937488558035, 65.21086473242619)\n", + "Iteration: 17 (122.55037679349886, 123.43006336735164, 133.10661567973244, 2.9175902985829993)\n", + "Iteration: 18 (122.55037679349886, 124.69068146008891, 134.91032361898561, 4.020876175784904)\n", + "Iteration: 19 (122.55037679349886, 185.9547481050096, 373.501368239349, 79.95457757442668)\n", + "Iteration: 20 (122.55037679349886, 158.00485403208842, 289.3439962118642, 47.974366625593234)\n", + "Iteration: 21 (122.55037679349886, 160.27719747551345, 366.3802003905189, 69.70185477507192)\n", + "Iteration: 22 (122.55037679349886, 148.8477943718046, 244.8370932704614, 42.51225240269441)\n", + "Iteration: 23 (122.55037679349886, 149.22525017361127, 244.8370932704614, 46.81469551000712)\n", + "Iteration: 24 (119.25119075390785, 139.44040331007363, 328.5298810319872, 57.019853885941984)\n", + "Iteration: 25 (119.25119075390785, 195.4240124312507, 353.8503679209228, 95.72799770433556)\n", + "Iteration: 26 (119.25119075390785, 160.7891550944615, 342.2334304044866, 74.61869563930894)\n", + "Iteration: 27 (119.25119075390785, 120.52875568945221, 127.87669721849153, 2.5264266695576425)\n", + "Iteration: 28 (119.25119075390785, 160.11354063737355, 387.32096063505634, 82.43214724305936)\n", + "Iteration: 29 (119.25119075390785, 135.83628696318758, 291.9399473055841, 47.621788453761994)\n", + "Iteration: 30 (119.25119075390785, 166.80519805040743, 349.0015794675544, 82.501534967597)\n", + "Iteration: 31 (119.25119075390785, 141.6872336868857, 313.90204838486414, 53.059342197726835)\n", + "Iteration: 32 (119.25119075390785, 135.88002714932102, 276.13816903058995, 43.017310941358495)\n", + "Iteration: 33 (119.25119075390785, 148.24916156915415, 243.72095059828536, 44.288392240768644)\n", + "Iteration: 34 (119.25119075390785, 137.2381002183677, 335.09410432742607, 59.65582983170571)\n", + "Iteration: 35 (119.25119075390785, 152.3640039536917, 324.59429936028056, 62.2231528377989)\n", + "Iteration: 36 (119.25119075390785, 158.87222146211775, 330.04872155165106, 64.84015704384218)\n", + "Iteration: 37 (119.25119075390785, 169.1894941245449, 413.74907506309404, 96.03443044488327)\n", + "Iteration: 38 (119.25119075390785, 182.63521890354187, 537.5823552808458, 118.63753195490362)\n", + "Iteration: 39 (118.8193918207379, 218.78048522975595, 537.5823552808458, 159.99433575108145)\n", + "Iteration: 40 (118.8193918207379, 130.46590561126905, 202.2874321778018, 26.105480811169624)\n", + "Iteration: 41 (118.8193918207379, 158.11809174828034, 317.24439890381734, 60.840115415152226)\n", + "Iteration: 42 (118.8193918207379, 171.14618265816887, 294.3426485501634, 69.80230380146189)\n", + "Iteration: 43 (118.8193918207379, 187.39771980804093, 409.0308432053336, 99.35933855327978)\n", + "Iteration: 44 (118.8193918207379, 149.08162551343693, 386.4265841186745, 75.60011772340047)\n", + "Iteration: 45 (118.63761734381575, 123.03799336058084, 154.36358684816162, 10.339066721549665)\n", + "Iteration: 46 (118.63761734381575, 156.08329950662764, 275.0971909738505, 55.888971199078284)\n", + "Iteration: 47 (118.63761734381575, 170.07246895779986, 330.23442149849575, 79.10223592340542)\n", + "Iteration: 48 (118.63761734381575, 161.47336299580556, 519.428686863627, 109.58796469286096)\n", + "Iteration: 49 (118.63761734381575, 177.96152172381395, 392.147807185438, 90.22882938325822)\n", + "Iteration: 50 (118.63761734381575, 184.27160923846665, 392.147807185438, 109.84293108687952)\n", + "Iteration: 51 (118.63761734381575, 189.71348115788282, 424.725818737731, 108.90572506022072)\n", + "Iteration: 52 (118.63761734381575, 186.3037262029516, 361.64149134517635, 83.88886178735478)\n", + "Iteration: 53 (118.63761734381575, 161.11751731526837, 267.808017269981, 58.74957156182113)\n", + "Iteration: 54 (118.63761734381575, 134.14092786552953, 269.82202200026484, 41.375935946388175)\n", + "Iteration: 55 (118.63761734381575, 164.59057069258725, 353.1047168521919, 66.64006573940132)\n", + "Iteration: 56 (118.63761734381575, 138.624205879778, 219.84288033491367, 34.862954628813654)\n", + "Iteration: 57 (118.58332917533556, 142.6386123691537, 256.838710183038, 43.05186483854895)\n", + "Iteration: 58 (118.58332917533556, 145.92905299927648, 331.61845781706836, 59.9773317528458)\n", + "Iteration: 59 (118.58332917533556, 164.1191407063848, 317.79460736745204, 69.98118273969975)\n", + "Iteration: 60 (118.58332917533556, 156.31977634132122, 276.76091489708574, 49.623548850880724)\n", + "Iteration: 61 (118.58332917533556, 193.9186189595563, 319.69864110915455, 84.3063765205116)\n", + "Iteration: 62 (118.58332917533556, 192.37428048859354, 465.35648290285405, 110.2437861245206)\n", + "Iteration: 63 (118.58332917533556, 175.74583076159482, 390.6745463165618, 86.78806378852782)\n", + "Iteration: 64 (118.58332917533556, 154.26663115620596, 353.2979946588645, 72.54759735823932)\n", + "Iteration: 65 (118.58332917533556, 156.84271715187595, 288.69237533612215, 60.32311563247602)\n", + "Iteration: 66 (118.58332917533556, 138.11117693528908, 259.49760148510484, 40.76713641597722)\n", + "Iteration: 67 (118.58332917533556, 164.90768949985383, 377.7642255808036, 76.66129306546411)\n", + "Iteration: 68 (118.58332917533556, 131.20343551555615, 270.02460525798256, 41.856157544896945)\n", + "Iteration: 69 (118.58332917533556, 166.56860251134196, 283.09074462422655, 64.23264542241056)\n", + "Iteration: 70 (118.58332917533556, 120.14166566625812, 128.76816076861155, 3.5011733919990444)\n", + "Iteration: 71 (118.48520277230756, 142.03055986407927, 340.6319214244924, 61.7187466489206)\n", + "Iteration: 72 (118.48520277230756, 146.16099570080542, 280.23132549650785, 59.02433287244078)\n", + "Iteration: 73 (118.48520277230756, 134.81938825352276, 254.86761543135955, 38.90089105535365)\n", + "Iteration: 74 (118.48520277230756, 135.59728425688397, 232.11987758216446, 37.15124662394577)\n", + "Iteration: 75 (118.48520277230756, 155.3839364169721, 333.7141498695638, 75.424714185714)\n", + "Iteration: 76 (118.48520277230756, 148.7344745921214, 360.2794349988325, 67.17107978143973)\n", + "Iteration: 77 (118.48520277230756, 149.30255990587798, 236.08000949305804, 42.51550279042258)\n", + "Iteration: 78 (118.48520277230756, 158.20000625584353, 369.5555312792908, 76.86291796702812)\n", + "Iteration: 79 (118.45273611019275, 174.3545170113151, 378.619670100224, 88.69087150020437)\n", + "Iteration: 80 (118.45273611019275, 182.05562666125692, 296.0170652491797, 66.296820506516)\n", + "Iteration: 81 (118.45273611019275, 162.31155880994066, 362.0397035153349, 78.3144536481765)\n", + "Iteration: 82 (118.45273611019275, 167.58123967236438, 383.287402319287, 75.89595640422219)\n", + "Iteration: 83 (118.45273611019275, 139.1645001466374, 296.80241812934514, 48.46291332093942)\n", + "Iteration: 84 (118.45273611019275, 141.1679645393468, 188.711392136973, 26.76362653670026)\n", + "Iteration: 85 (118.45273611019275, 134.8953193850458, 223.38294464711137, 31.770483378181027)\n", + "Iteration: 86 (118.45273611019275, 138.59841488786694, 195.2485546777041, 28.222390902879795)\n", + "Iteration: 87 (118.45273611019275, 149.31994398344835, 338.5635398439885, 65.17152021179967)\n", + "Iteration: 88 (118.45273611019275, 131.0379767504792, 257.09695184138457, 38.10432939288115)\n", + "Iteration: 89 (118.45273611019275, 139.7202254753158, 251.75756624374046, 41.32290571635602)\n", + "Iteration: 90 (118.45273611019275, 140.56882812194337, 288.29168863847195, 46.491665504613394)\n", + "Iteration: 91 (118.45273611019275, 169.8125478816134, 389.7516349008949, 83.53895954441329)\n", + "Iteration: 92 (118.45273611019275, 152.58826869578976, 338.79785392477424, 74.53812761042568)\n", + "Iteration: 93 (118.45273611019275, 173.4518603586151, 345.6252181215689, 89.92696247295038)\n", + "Iteration: 94 (118.45273611019275, 152.25559326255743, 364.9213376735713, 71.41024237341354)\n", + "Iteration: 95 (118.45273611019275, 209.14644305700827, 630.5438582220893, 152.4836474655374)\n", + "Iteration: 96 (118.45273611019275, 157.20870486683597, 315.32271987362736, 65.27497502423118)\n", + "Iteration: 97 (118.45273611019275, 150.98627907284026, 397.9025910669663, 75.92963096839098)\n", + "Iteration: 98 (118.45273611019275, 129.04406788253084, 240.4653021889719, 33.623889927864994)\n", + "Iteration: 99 (118.45273611019275, 168.83943878157325, 320.16807729651487, 75.01088874066546)\n", + "Iteration: 100 (118.45273611019275, 157.72638775497126, 367.5133074369342, 73.12680712368036)\n", + "Iteration: 101 (118.45273611019275, 143.97552720240967, 327.6688757914557, 59.577992448605684)\n", + "Iteration: 102 (118.45273611019275, 138.45308093866402, 276.1968429334278, 45.093178968831)\n", + "Iteration: 103 (118.45273611019275, 144.78203886724216, 255.25859278368512, 48.41467759500917)\n", + "Iteration: 104 (118.45273611019275, 166.63995687437782, 394.83550173533934, 80.25850173926287)\n", + "Iteration: 105 (118.45273611019275, 168.2859681610059, 394.7705759409616, 79.82625107389671)\n", + "Iteration: 106 (118.45273611019275, 187.50578360571853, 596.6753496126523, 132.63339860927928)\n", + "Iteration: 107 (118.45273611019275, 178.56485869992514, 350.885249651939, 78.62751799214128)\n", + "Iteration: 108 (118.45273611019275, 149.26554179456684, 360.9035899927729, 67.3014988559203)\n", + "Iteration: 109 (118.45273611019275, 168.50421204356448, 331.77402473833655, 76.37503851321841)\n", + "Iteration: 110 (118.45273611019275, 172.37085225056515, 394.7358485081094, 95.40815793609025)\n", + "Iteration: 111 (118.45273611019275, 127.69472517644728, 216.5611089618622, 27.0246880913702)\n", + "Iteration: 112 (118.45273611019275, 158.09767974085605, 344.9578003668962, 70.61837986948677)\n", + "Iteration: 113 (118.45273611019275, 123.82309434815477, 173.40279786585404, 15.175530890799243)\n", + "Iteration: 114 (118.45273611019275, 153.5136618890959, 275.92593983135095, 54.99508730763444)\n", + "Iteration: 115 (118.45273611019275, 196.19443694972188, 406.35625988834073, 114.03652735605978)\n", + "Iteration: 116 (118.45273611019275, 156.66400553710974, 289.59460275699735, 63.01246362962664)\n", + "Iteration: 117 (118.45273611019275, 172.12078971538097, 369.9282036667277, 93.46599199573978)\n", + "Iteration: 118 (118.45273611019275, 160.96342183368353, 379.88930801224166, 93.19793050931034)\n", + "Iteration: 119 (118.45273611019275, 175.33002538551628, 358.3148053984833, 87.66229741679382)\n", + "Iteration: 120 (118.45273611019275, 179.4809549389405, 358.3148053984833, 90.06601344150715)\n", + "Iteration: 121 (118.44709149751162, 155.19478654239643, 303.7537502970887, 67.71258334843196)\n", + "Iteration: 122 (118.44709149751162, 146.10612110325084, 358.55851054560895, 67.31121472920088)\n", + "Iteration: 123 (118.44709149751162, 124.85052989087421, 193.6731225665448, 20.755230652896795)\n", + "Iteration: 124 (118.44709149751162, 174.4081697934099, 325.14241011612086, 74.1306264221781)\n", + "Iteration: 125 (118.44709149751162, 190.12084159152096, 370.2386132445587, 98.51048732623019)\n", + "Iteration: 126 (118.44709149751162, 190.60472063771286, 594.9971687051407, 141.6573009607589)\n", + "Iteration: 127 (118.44709149751162, 125.02431035802384, 192.5049555741753, 20.38937010588169)\n", + "Iteration: 128 (118.44709149751162, 139.95268824117332, 269.70949824952356, 44.97842651244478)\n", + "Iteration: 129 (118.44709149751162, 159.02540983129268, 360.7043410444089, 75.76536563497865)\n", + "Iteration: 130 (118.44709149751162, 144.82035320614477, 226.00560051822728, 42.059481043240986)\n", + "Iteration: 131 (118.44709149751162, 148.5215178033749, 341.03382084977795, 65.32321147779415)\n", + "Iteration: 132 (118.44709149751162, 150.88525295550673, 315.9893287632542, 60.81154795473316)\n", + "Iteration: 133 (118.44709149751162, 145.9869940910701, 232.78130164097342, 41.49867746430865)\n", + "Iteration: 134 (118.44709149751162, 130.5057770418829, 196.01214907263147, 25.129478659674234)\n", + "Iteration: 135 (118.44709149751162, 174.21089639717403, 388.9147152043644, 91.4284067956626)\n", + "Iteration: 136 (118.44709149751162, 133.5439843043356, 207.34041181618375, 27.755548653285842)\n", + "Iteration: 137 (118.44709149751162, 165.91707382064524, 371.2979465369197, 82.31913104390186)\n", + "Iteration: 138 (118.44709149751162, 153.73807341902307, 266.21788100106625, 50.15512055837463)\n", + "Iteration: 139 (118.44709149751162, 162.71666299938184, 361.1449185581498, 80.29304622429308)\n", + "Iteration: 140 (118.44709149751162, 128.43128617990237, 202.2010796444369, 23.311905705643998)\n", + "Iteration: 141 (118.44709149751162, 162.76243301153954, 413.8238631440245, 84.7520323736893)\n", + "Iteration: 142 (118.44709149751162, 164.04212804830172, 330.0698749970992, 65.70587272465711)\n", + "Iteration: 143 (118.44709149751162, 208.25603947461892, 617.4858157839772, 141.50670275737397)\n", + "Iteration: 144 (118.44709149751162, 190.3658298656262, 361.8194874665141, 88.89796605597574)\n", + "Iteration: 145 (118.44709149751162, 162.83863172710826, 369.77146303902623, 79.86199240880765)\n", + "Iteration: 146 (118.44709149751162, 199.54559119823773, 367.66300370643984, 100.17726290326364)\n", + "Iteration: 147 (118.44709149751162, 184.5941346108018, 372.380044885511, 88.30611688491621)\n", + "Iteration: 148 (118.44709149751162, 180.50506082431946, 436.7695158442728, 100.11779680372919)\n", + "Iteration: 149 (118.44709149751162, 150.4409389340376, 310.5547251099978, 70.39915754623607)\n", + "Iteration: 150 (118.44709149751162, 136.35656378449278, 318.4993003987414, 55.07022703262269)\n", + "Iteration: 151 (118.44709149751162, 157.11023191765008, 335.06418610986975, 74.76278139390405)\n", + "Iteration: 152 (118.44709149751162, 181.02785165810545, 318.16050381860566, 76.04899036940998)\n", + "Iteration: 153 (118.44709149751162, 164.64026915633815, 508.9525160466051, 111.1435269255927)\n", + "Iteration: 154 (118.44709149751162, 168.6107292105525, 323.8799961902084, 77.78668441140728)\n", + "Iteration: 155 (118.44709149751162, 154.7244007875794, 295.74724938904416, 62.42197398527155)\n", + "Iteration: 156 (118.44709149751162, 157.8476360699224, 392.6393163751328, 79.0135729310032)\n", + "Iteration: 157 (118.44709149751162, 154.9281737000953, 360.6533576595134, 77.34805097868099)\n", + "Iteration: 158 (118.44709149751162, 156.27892032295094, 468.15486960937056, 96.469558598331)\n", + "Iteration: 159 (118.44709149751162, 168.79765644384128, 319.1517230047468, 78.17989263959926)\n", + "Iteration: 160 (118.44709149751162, 165.18013100164703, 360.73669626442825, 79.59066049734936)\n", + "Iteration: 161 (118.44709149751162, 147.36818607895225, 379.7682733899038, 71.16184053145973)\n", + "Iteration: 162 (118.44709149751162, 173.32595331427956, 366.9996189702272, 80.65369371116893)\n", + "Iteration: 163 (118.44709149751162, 227.43790459840247, 374.8684795140005, 114.01203359546123)\n", + "Iteration: 164 (118.44709149751162, 180.9274245067137, 518.4219694179147, 120.63307901705159)\n", + "Iteration: 165 (118.44709149751162, 231.33259024238802, 714.4805776867385, 164.4495349716867)\n", + "Iteration: 166 (118.44709149751162, 187.98266340599196, 357.19436101357695, 87.7283386851813)\n", + "Iteration: 167 (118.44709149751162, 161.52096324360642, 343.80422793043846, 69.20330994702503)\n", + "Iteration: 168 (118.44709149751162, 153.21943720609173, 323.22237630620697, 71.63266119497217)\n", + "Iteration: 169 (118.44709149751162, 130.5917646317989, 183.56693723529614, 24.031965728828755)\n", + "Iteration: 170 (118.44709149751162, 146.71198107881003, 389.7869556539282, 74.2116680217801)\n", + "Iteration: 171 (118.44709149751162, 198.73647026008277, 414.37580119669263, 106.05601490196598)\n", + "Iteration: 172 (118.44709149751162, 230.48033828948124, 573.9649757363903, 152.67566374418038)\n", + "Iteration: 173 (118.44709149751162, 164.7171970293364, 370.98132562526195, 85.65352138372091)\n", + "Iteration: 174 (118.44709149751162, 157.67139657920293, 315.63431199902897, 70.8613038262924)\n", + "Iteration: 175 (118.44709149751162, 160.031554523914, 456.4133367279238, 99.5095400132039)\n", + "Iteration: 176 (118.44709149751162, 141.28325264441062, 341.7942950108728, 61.3476805807416)\n", + "Iteration: 177 (118.44709149751162, 148.18401877465166, 352.51332377103245, 64.37624027578505)\n", + "Iteration: 178 (118.44709149751162, 166.0612973328824, 304.47818873572805, 69.14855556456835)\n", + "Iteration: 179 (118.44709149751162, 161.25861755353753, 304.47818873572805, 73.57010724263198)\n", + "Iteration: 180 (118.44709149751162, 134.98459888952874, 312.729826699647, 53.6044760444048)\n", + "Iteration: 181 (118.44709149751162, 144.42413071209737, 274.4855009248063, 50.73991337696749)\n", + "Iteration: 182 (118.44709149751162, 180.48632593681353, 493.90848763865387, 117.81681146557285)\n", + "Iteration: 183 (118.44709149751162, 126.43929143267498, 197.4850075022964, 21.667285071445804)\n", + "Iteration: 184 (118.44709149751162, 169.0746311079324, 390.2544865752261, 83.84931406499054)\n", + "Iteration: 185 (118.44709149751162, 172.40146301998377, 350.9131822065628, 89.33686939899854)\n", + "Iteration: 186 (118.44709149751162, 172.9970357742454, 380.3951506245077, 81.32676150579988)\n", + "Iteration: 187 (118.44709149751162, 165.2666444230392, 398.0612096392645, 82.00539144619117)\n", + "Iteration: 188 (118.44709149751162, 187.59199639927974, 398.0612096392645, 87.31603082449783)\n", + "Iteration: 189 (118.44709149751162, 212.53209324618658, 483.7346072481449, 117.31032670435995)\n", + "Iteration: 190 (118.44709149751162, 175.88507102885285, 368.14916824890895, 79.52506391937132)\n", + "Iteration: 191 (118.44709149751162, 154.74336655719398, 388.8421161770734, 79.9014870355739)\n", + "Iteration: 192 (118.44709149751162, 150.3769245810206, 365.7916018981998, 74.93910810301323)\n", + "Iteration: 193 (118.44709149751162, 165.5385889386587, 315.2819476605418, 70.85185671073549)\n", + "Iteration: 194 (118.44709149751162, 171.43378188702647, 340.4938131903932, 85.03952796073959)\n", + "Iteration: 195 (118.44709149751162, 147.66808643303912, 283.08643284016443, 57.2824283480442)\n", + "Iteration: 196 (118.44709149751162, 119.55948860345525, 131.79585676883528, 3.689403818292272)\n", + "Iteration: 197 (118.44709149751162, 144.32068615017042, 370.28914589129874, 69.2477174466963)\n", + "Iteration: 198 (118.44709149751162, 189.46177912178314, 610.792524752102, 133.88268684263463)\n", + "Iteration: 199 (118.44709149751162, 191.90907587208122, 400.38592673061794, 100.14163457166698)\n", + "Iteration: 200 (118.44709149751162, 192.3728858427767, 402.4697971502081, 97.47618964645523)\n", + "Iteration: 201 (118.44709149751162, 182.7909987729423, 402.4697971502081, 89.20874380417857)\n", + "Iteration: 202 (118.44709149751162, 178.36759259048338, 339.3220884481435, 75.44410158642354)\n", + "Iteration: 203 (118.44709149751162, 147.15375076931065, 312.8268886354801, 55.391069889174744)\n", + "Iteration: 204 (118.44709149751162, 162.8346364259214, 323.8049175731836, 70.10799426425719)\n", + "Iteration: 205 (118.44709149751162, 187.82677360926854, 335.05607945747965, 83.89462953356181)\n", + "Iteration: 206 (118.44709149751162, 189.5995471612376, 505.22798406467905, 122.52105185439663)\n", + "Iteration: 207 (118.44709149751162, 157.25918304100136, 335.39280934786143, 64.09924233365146)\n", + "Iteration: 208 (118.44709149751162, 140.89213513428578, 267.0015188517704, 44.47673437522659)\n", + "Iteration: 209 (118.44709149751162, 145.15940977651977, 334.95306460585294, 63.527419445428016)\n", + "Iteration: 210 (118.44709149751162, 156.57602445072862, 356.0043192910106, 66.28845157110572)\n", + "Iteration: 211 (118.44709149751162, 143.40352359051465, 250.97170664524018, 37.79363061440942)\n", + "Iteration: 212 (118.44709149751162, 204.2150245663762, 475.9562378157197, 125.2444424588682)\n", + "Iteration: 213 (118.44709149751162, 184.96458102157877, 370.62184767714143, 84.79327998371414)\n", + "Iteration: 214 (118.44709149751162, 158.72699755416102, 338.17570506516904, 72.58409458227042)\n", + "Iteration: 215 (118.44709149751162, 146.2805963033577, 311.8848268603879, 58.164580838472595)\n", + "Iteration: 216 (118.44709149751162, 166.76779246066488, 385.52832975112005, 79.64175217292129)\n", + "Iteration: 217 (118.44709149751162, 178.81557636735806, 424.887892502451, 97.65049434060039)\n", + "Iteration: 218 (118.44709149751162, 147.37343522183667, 246.45738122385177, 49.73480585459596)\n", + "Iteration: 219 (118.44709149751162, 157.13634854163607, 348.50373840197744, 66.13110410308309)\n", + "Iteration: 220 (118.44709149751162, 155.67053665473358, 334.4450871041362, 63.55343170362547)\n", + "Iteration: 221 (118.44709149751162, 147.4069394299193, 344.49229970852326, 63.54812390288751)\n", + "Iteration: 222 (118.44709149751162, 168.40472417410487, 370.48405902570084, 88.7909398123358)\n", + "Iteration: 223 (118.44709149751162, 133.3292007036981, 207.8879027799602, 30.444597711498012)\n", + "Iteration: 224 (118.44709149751162, 133.18908103765287, 295.350965979207, 48.89364796799258)\n", + "Iteration: 225 (118.44709149751162, 174.0476951215062, 373.131276025487, 89.80117867059056)\n", + "Iteration: 226 (118.44709149751162, 176.53205693555836, 350.2220526909971, 85.54871616265156)\n", + "Iteration: 227 (118.44709149751162, 143.33274874165502, 285.6469992305716, 54.77502558150113)\n", + "Iteration: 228 (118.44709149751162, 146.35605023175526, 341.1374840173703, 65.19033765648912)\n", + "Iteration: 229 (118.44709149751162, 140.44088592165113, 340.0609221764513, 60.898428436826556)\n", + "Iteration: 230 (118.44709149751162, 134.4668094537127, 308.0711221812777, 52.34752641581771)\n", + "Iteration: 231 (118.44709149751162, 143.20840600473477, 365.7944920487269, 68.3600453485723)\n", + "Iteration: 232 (118.44709149751162, 153.87046251569734, 350.53480826444024, 65.4839971561583)\n", + "Iteration: 233 (118.44709149751162, 155.67916211651368, 328.3865044945802, 59.3094301068961)\n", + "Iteration: 234 (118.44709149751162, 170.09479112220143, 302.3301387952434, 66.32775476729896)\n", + "Iteration: 235 (118.44709149751162, 186.96372314061682, 350.41850910540813, 83.77024164477345)\n", + "Iteration: 236 (118.44709149751162, 168.36904113627625, 271.92658006676163, 57.74038826366841)\n", + "Iteration: 237 (118.44709149751162, 176.83764394580672, 347.8564373305845, 87.11283018059574)\n", + "Iteration: 238 (118.44709149751162, 214.00315426684384, 603.0592475558585, 170.31052991186627)\n", + "Iteration: 239 (118.44709149751162, 165.09580744885815, 377.8739123779391, 80.52151376562205)\n", + "Iteration: 240 (118.44709149751162, 138.3850129880955, 233.21028914303866, 34.265948523696046)\n", + "Iteration: 241 (118.44709149751162, 174.67284504321822, 333.7786497215071, 78.64448863141538)\n", + "Iteration: 242 (118.44709149751162, 166.77189140899375, 292.5602608025563, 66.98139057920467)\n", + "Iteration: 243 (118.44709149751162, 195.84723344867913, 450.0022115401026, 100.30345811346055)\n", + "Iteration: 244 (118.44709149751162, 171.62718677716262, 365.0504589998932, 78.77569631528125)\n", + "Iteration: 245 (118.44709149751162, 149.03166673260782, 406.3415160377325, 78.957473952712)\n", + "Iteration: 246 (118.44709149751162, 169.50848426701603, 370.2699481606856, 74.95989876841041)\n", + "Iteration: 247 (118.44709149751162, 148.63423492580682, 247.08228838083966, 35.47249245827816)\n", + "Iteration: 248 (118.44709149751162, 195.11779842164, 659.2142433960721, 154.33235553374172)\n", + "Iteration: 249 (118.44709149751162, 178.04990111014672, 365.68760608248857, 90.64347136945169)\n", + "Iteration: 250 (118.44709149751162, 143.27196709503394, 305.0983204579899, 51.32685408932674)\n", + "Iteration: 251 (118.44709149751162, 143.94384716254143, 297.0162419144126, 53.306056780970216)\n", + "Iteration: 252 (118.44709149751162, 146.77963649015973, 323.10239950205545, 59.4918963664105)\n", + "Iteration: 253 (118.44709149751162, 146.89620056899759, 275.6233695140086, 53.12411309146174)\n", + "Iteration: 254 (118.44709149751162, 150.75597742607752, 281.29523619389175, 52.21257795891167)\n", + "Iteration: 255 (118.44709149751162, 163.03660142378115, 320.50032035139094, 64.04939047535598)\n", + "Iteration: 256 (118.44709149751162, 154.6358556271142, 348.6684304420269, 68.6589605831018)\n", + "Iteration: 257 (118.44709149751162, 153.38541055356583, 355.2276906882518, 78.90684786711375)\n", + "Iteration: 258 (118.44709149751162, 147.21021657595395, 279.78249216121947, 55.850092819871854)\n", + "Iteration: 259 (118.44709149751162, 167.47568252909716, 302.4448835071064, 63.58004809293852)\n", + "Iteration: 260 (118.44709149751162, 197.65426313762077, 594.8228934610001, 141.34375362575793)\n", + "Iteration: 261 (118.44709149751162, 179.30909330544685, 578.3067349594244, 126.41950230544765)\n", + "Iteration: 262 (118.44709149751162, 140.04712375844187, 207.07329121698243, 31.882568289036026)\n", + "Iteration: 263 (118.44709149751162, 152.3573361565121, 319.77844432310576, 63.287495292251734)\n", + "Iteration: 264 (118.44709149751162, 162.77681670866752, 446.910073986619, 96.40631800451811)\n", + "Iteration: 265 (118.44709149751162, 167.28559461215556, 340.28471683555813, 74.13270133947712)\n", + "Iteration: 266 (118.44709149751162, 177.82556921093035, 360.10061549705534, 92.25943659138369)\n", + "Iteration: 267 (118.44709149751162, 164.61324706296014, 348.84944754021876, 82.02585361234394)\n", + "Iteration: 268 (118.44709149751162, 149.573009110419, 439.33321046945014, 87.89056562080357)\n", + "Iteration: 269 (118.44709149751162, 146.41399950932478, 332.7211247351719, 59.414950390577836)\n", + "Iteration: 270 (118.44709149751162, 138.16514911494474, 243.69008809060801, 38.16803393504884)\n", + "Iteration: 271 (118.44709149751162, 138.24786110948222, 326.2721588778104, 56.95713611248084)\n", + "Iteration: 272 (118.44709149751162, 187.79038306100267, 371.4210279672018, 99.74989152673268)\n", + "Iteration: 273 (118.44709149751162, 134.95452520517298, 249.61172464012006, 37.3371567052968)\n", + "Iteration: 274 (118.44709149751162, 136.24765052493373, 328.44123900220546, 57.9523859616763)\n", + "Iteration: 275 (118.44709149751162, 152.16955621327722, 337.34506834367266, 72.9493136790679)\n", + "Iteration: 276 (118.44709149751162, 174.92962337178838, 352.37871023867683, 80.244056428769)\n", + "Iteration: 277 (118.44709149751162, 198.18985576965363, 374.580036241615, 98.41470971703086)\n", + "Iteration: 278 (118.44709149751162, 162.63480299807205, 380.57948523025794, 81.96929453507036)\n", + "Iteration: 279 (118.44709149751162, 155.01487582197134, 346.55620303287355, 74.23623215861865)\n", + "Iteration: 280 (118.44709149751162, 155.96922369179993, 361.2962107573987, 71.00405720247352)\n", + "Iteration: 281 (118.44709149751162, 183.23527212561996, 344.0385306248905, 82.3351115884771)\n", + "Iteration: 282 (118.44709149751162, 159.07396337385532, 551.4403058377185, 119.25115301672243)\n", + "Iteration: 283 (118.44709149751162, 149.006072911472, 356.58118300873025, 66.41297218189291)\n", + "Iteration: 284 (118.44709149751162, 146.24345370846896, 262.7936006150751, 51.613219816446744)\n", + "Iteration: 285 (118.44709149751162, 124.29105483832039, 184.82731159937543, 18.265381690543844)\n", + "Iteration: 286 (118.44709149751162, 138.10285120464434, 324.4188105492507, 56.76931279147685)\n", + "Iteration: 287 (118.44709149751162, 177.26462676515163, 359.8470297422209, 89.36080373896874)\n", + "Iteration: 288 (118.44709149751162, 160.3525140870286, 392.48878302371315, 87.3082352495884)\n", + "Iteration: 289 (118.44709149751162, 159.18559256093792, 364.56675595265835, 71.24634890323111)\n", + "Iteration: 290 (118.44709149751162, 159.09369287120185, 350.23718534161156, 75.57392208545058)\n", + "Iteration: 291 (118.44709149751162, 152.47074804260944, 307.43733882695733, 63.43533573185546)\n", + "Iteration: 292 (118.44709149751162, 151.92826242838277, 371.35243431045143, 72.51130703470564)\n", + "Iteration: 293 (118.44709149751162, 174.38032612033567, 371.35243431045143, 93.40151884044815)\n", + "Iteration: 294 (118.44709149751162, 149.48861711339154, 388.4175632936379, 75.49703090682708)\n", + "Iteration: 295 (118.44709149751162, 133.08135737701096, 294.05828205150385, 48.53636900459973)\n", + "Iteration: 296 (118.44709149751162, 171.12701182959782, 354.6974391398849, 74.93014576802143)\n", + "Iteration: 297 (118.44709149751162, 167.71668899402906, 385.9191279128578, 92.5986380287223)\n", + "Iteration: 298 (118.44709149751162, 157.6295974900751, 246.70246098199374, 48.40319116107873)\n", + "Iteration: 299 (118.44709149751162, 144.56143870751717, 323.88650823893465, 60.28655733857075)\n", + "Iteration: 300 (118.44709149751162, 161.27956145999082, 333.1081233232592, 66.7698734967678)\n", + "Iteration: 301 (118.44709149751162, 162.77336221217288, 411.1388567104351, 84.01560313531368)\n", + "Iteration: 302 (118.44709149751162, 169.81615672333427, 423.1395042702536, 98.66396964126965)\n", + "Iteration: 303 (118.44709149751162, 196.57720466262802, 575.1733218391979, 134.64785983364973)\n", + "Iteration: 304 (118.44709149751162, 175.66336113037423, 324.0731346371517, 75.0752453733007)\n", + "Iteration: 305 (118.44709149751162, 168.32924972537023, 393.44119326279696, 83.89582995058252)\n", + "Iteration: 306 (118.44709149751162, 148.07366375547932, 347.33260603832923, 64.54950011493105)\n", + "Iteration: 307 (118.44709149751162, 159.18448537781322, 358.3185621716396, 86.79869012338064)\n", + "Iteration: 308 (118.44007614277427, 148.39310469349638, 358.3185621716396, 67.37164748771298)\n", + "Iteration: 309 (118.44007614277427, 142.68490531157548, 279.71317572316525, 50.53328613554602)\n", + "Iteration: 310 (118.44007614277427, 154.17131408673268, 372.652882916042, 79.59676271492798)\n", + "Iteration: 311 (118.44007614277427, 172.14531271893438, 386.56475281076223, 94.49359483494791)\n", + "Iteration: 312 (118.44007614277427, 121.87624291801258, 135.9522506419172, 5.426360319031182)\n", + "Iteration: 313 (118.44007614277427, 127.96908191089294, 187.46424016261983, 18.8472357609313)\n", + "Iteration: 314 (118.44007614277427, 153.31297323361494, 291.065231130636, 62.82307719148202)\n", + "Iteration: 315 (118.44007614277427, 149.31936073227467, 340.94601589237374, 68.98790325224974)\n", + "Iteration: 316 (118.44007614277427, 205.84885378295348, 355.9780275562341, 100.6342684349821)\n", + "Iteration: 317 (118.44007614277427, 198.4142805930836, 425.50031603962736, 114.85145807163367)\n", + "Iteration: 318 (118.44007614277427, 171.01413468450417, 383.9287784351259, 90.1884583949046)\n", + "Iteration: 319 (118.44007614277427, 137.51659217149987, 283.76442931234897, 45.650095739418134)\n", + "Iteration: 320 (118.44007614277427, 147.29822793717878, 302.9700259383373, 53.06743709342224)\n", + "Iteration: 321 (118.44007614277427, 164.9329303017775, 344.7579003654833, 74.04778175919077)\n", + "Iteration: 322 (118.44007614277427, 146.8778613244848, 392.5751295258245, 76.34920399654277)\n", + "Iteration: 323 (118.44007614277427, 156.79515176917363, 392.00963257784997, 79.28368151859125)\n", + "Iteration: 324 (118.44007614277427, 152.6872553350645, 337.8209775871274, 63.635141507150735)\n", + "Iteration: 325 (118.44007614277427, 159.6552086638442, 342.2216835573481, 71.31254528779148)\n", + "Iteration: 326 (118.44007614277427, 172.05100945635874, 451.33911921537566, 103.32519660700568)\n", + "Iteration: 327 (118.44007614277427, 138.58832716031682, 349.3004695090234, 63.56085927771424)\n", + "Iteration: 328 (118.44007614277427, 166.75070616968853, 317.78491748623117, 64.87119326372787)\n", + "Iteration: 329 (118.44007614277427, 183.24179005289284, 442.8443224641286, 101.10240848013837)\n", + "Iteration: 330 (118.44007614277427, 153.89418252044626, 314.7139482647715, 66.72918386899686)\n", + "Iteration: 331 (118.44007614277427, 174.15307428867945, 355.250587173427, 93.84893335589793)\n", + "Iteration: 332 (118.44007614277427, 169.9490522209904, 400.49834259054967, 90.61965717105679)\n", + "Iteration: 333 (118.44007614277427, 167.9866910407169, 477.2212172117321, 109.58614885015979)\n", + "Iteration: 334 (118.44007614277427, 139.2636874964907, 328.7020166892444, 57.729581738070586)\n", + "Iteration: 335 (118.44007614277427, 154.13560011337674, 332.6506465042536, 67.2684720951362)\n", + "Iteration: 336 (118.44007614277427, 153.86983387244968, 368.61051673046336, 68.339899690323)\n", + "Iteration: 337 (118.44007614277427, 174.79064578190355, 340.50487873393695, 81.53353670512749)\n", + "Iteration: 338 (118.44007614277427, 155.57735155612744, 359.6715871527694, 65.89192663523501)\n", + "Iteration: 339 (118.44007614277427, 148.08432327767517, 270.5333884504331, 54.26841078294766)\n", + "Iteration: 340 (118.44007614277427, 170.68508587589523, 404.2122237457681, 85.4313220310758)\n", + "Iteration: 341 (118.44007614277427, 162.77548067658827, 370.9264930491435, 84.70506909013815)\n", + "Iteration: 342 (118.44007614277427, 144.81589868931982, 316.80392841332014, 55.56474643840418)\n", + "Iteration: 343 (118.44007614277427, 177.45413414085775, 355.28434117071714, 87.75388489145635)\n", + "Iteration: 344 (118.44007614277427, 185.0334510911796, 377.6963654032841, 99.05851839037541)\n", + "Iteration: 345 (118.44007614277427, 138.2926042723083, 322.71422553706714, 56.037629948373535)\n", + "Iteration: 346 (118.44007614277427, 139.92168955729957, 347.3013374308478, 62.66226439930684)\n", + "Iteration: 347 (118.44007614277427, 222.41367884968852, 673.9966323578582, 165.3129842008658)\n", + "Iteration: 348 (118.44007614277427, 130.43830810140312, 184.12361315411903, 22.874632209624398)\n", + "Iteration: 349 (118.44007614277427, 136.11453399295854, 205.6636145763132, 28.062697956441983)\n", + "Iteration: 350 (118.44007614277427, 176.64204975602647, 374.6282902037999, 94.00353406874672)\n", + "Iteration: 351 (118.44007614277427, 181.03778199299475, 372.08956261814365, 85.64537473559429)\n", + "Iteration: 352 (118.44007614277427, 137.5329233853023, 343.5895919580373, 62.132370123633436)\n", + "Iteration: 353 (118.44007614277427, 136.4922091327873, 279.89151496987233, 45.825939379339104)\n", + "Iteration: 354 (118.44007614277427, 131.88652365201528, 276.9804476602716, 43.75209218273917)\n", + "Iteration: 355 (118.44007614277427, 140.48289723722652, 337.23292042983917, 59.91497915149884)\n", + "Iteration: 356 (118.44007614277427, 153.01352405739956, 264.88514520373144, 59.248668104686026)\n", + "Iteration: 357 (118.44007614277427, 173.3337351416765, 390.72547366542506, 85.65476774029065)\n", + "Iteration: 358 (118.44007614277427, 171.19072493330478, 371.4611009359193, 83.71218030775444)\n", + "Iteration: 359 (118.44007614277427, 160.47790128492187, 369.02140424518416, 85.73108050401754)\n", + "Iteration: 360 (118.44007614277427, 166.07813676881094, 374.52179594358836, 83.66232877392805)\n", + "Iteration: 361 (118.44007614277427, 156.56039959608376, 333.185730205694, 61.71608411038586)\n", + "Iteration: 362 (118.44007614277427, 182.12212194547465, 292.7278274431365, 69.28612864835593)\n", + "Iteration: 363 (118.44007614277427, 144.22082328482222, 264.80162835112276, 45.49442048450283)\n", + "Iteration: 364 (118.44007614277427, 155.4227610433635, 372.80434844342096, 77.07882738911479)\n", + "Iteration: 365 (118.44007614277427, 149.78904828059711, 439.58272132317984, 87.76487034391181)\n", + "Iteration: 366 (118.44007614277427, 143.1216470704883, 306.2624008076842, 55.08745471486486)\n", + "Iteration: 367 (118.44007614277427, 159.87425674630526, 285.7659951688866, 63.1989247950624)\n", + "Iteration: 368 (118.44007614277427, 137.26574574686458, 226.8549398140346, 35.88552074065284)\n", + "Iteration: 369 (118.44007614277427, 187.14664848252926, 386.4087854093467, 96.70570991261562)\n", + "Iteration: 370 (118.44007614277427, 163.58714538142308, 361.11367325312307, 87.15596133882438)\n", + "Iteration: 371 (118.44007614277427, 152.8565541949264, 240.47916573593187, 43.86219952801394)\n", + "Iteration: 372 (118.44007614277427, 152.67437673899596, 346.75747146140486, 76.6070977961869)\n", + "Iteration: 373 (118.44007614277427, 179.15475318205324, 345.25534332070276, 77.22862769703517)\n", + "Iteration: 374 (118.44007614277427, 166.92134776434156, 272.2040084074936, 64.63528418830768)\n", + "Iteration: 375 (118.44007614277427, 196.50570848568512, 400.5869969451095, 97.54612312076843)\n", + "Iteration: 376 (118.44007614277427, 171.15829544915084, 585.7038166838015, 131.49167650785367)\n", + "Iteration: 377 (118.44007614277427, 124.24230303095807, 185.69391312897704, 18.53946511055829)\n", + "Iteration: 378 (118.44007614277427, 181.41965075737622, 393.9170962280054, 88.97769393035765)\n", + "Iteration: 379 (118.44007614277427, 146.2117930288383, 343.88187591101723, 62.4257432112617)\n", + "Iteration: 380 (118.44007614277427, 183.0523376111332, 434.8176687920732, 102.7911863967418)\n", + "Iteration: 381 (118.44007614277427, 154.499669531911, 282.4490103971713, 56.96193713194677)\n", + "Iteration: 382 (118.44007614277427, 160.86567871244102, 391.458548314303, 82.4570176256482)\n", + "Iteration: 383 (118.44007614277427, 144.95123762670457, 255.95519639085924, 47.256327894448646)\n", + "Iteration: 384 (118.44007614277427, 162.2086337519697, 303.32353398975135, 67.4616502758982)\n", + "Iteration: 385 (118.44007614277427, 156.46656399155088, 326.82947414860286, 63.72307116130844)\n", + "Iteration: 386 (118.44007614277427, 147.33513138027908, 276.20030718645296, 48.489747066931216)\n", + "Iteration: 387 (118.44007614277427, 153.95412632755932, 286.78308424478604, 63.1528673678726)\n", + "Iteration: 388 (118.44007614277427, 221.8771106628811, 774.2669097131518, 187.61667573699685)\n", + "Iteration: 389 (118.44007614277427, 168.42862412016163, 310.1476048350822, 66.50904990193297)\n", + "Iteration: 390 (118.44007614277427, 140.6147402556449, 310.1476048350822, 53.93471368889111)\n", + "Iteration: 391 (118.44007614277427, 165.54371210848365, 337.58056245615273, 73.50528112880244)\n", + "Iteration: 392 (118.44007614277427, 143.3094280881698, 314.6979266270316, 54.67707420291107)\n", + "Iteration: 393 (118.44007614277427, 189.7905226807603, 563.5327818124789, 135.73149699382893)\n", + "Iteration: 394 (118.44007614277427, 123.4453181920411, 145.58111380231486, 8.402360192241089)\n", + "Iteration: 395 (118.44007614277427, 137.89681042322695, 302.4553818834901, 50.63712538745195)\n", + "Iteration: 396 (118.44007614277427, 153.76842226354378, 341.94409758548994, 67.71808819405585)\n", + "Iteration: 397 (118.44007614277427, 168.0147611696989, 307.8761289728049, 76.57284038105313)\n", + "Iteration: 398 (118.44007614277427, 138.03997762705302, 286.0653186574343, 46.53575550513359)\n", + "Iteration: 399 (118.44007614277427, 158.6442586640675, 354.41961893228927, 75.53919169795077)\n", + "Iteration: 400 (118.44007614277427, 180.77454839903956, 378.6481292866006, 108.04432907490765)\n", + "Iteration: 401 (118.44007614277427, 175.55538353338966, 358.41171405096645, 96.41591441335908)\n", + "Iteration: 402 (118.44007614277427, 173.17399301908372, 384.1353433998874, 97.92548544093984)\n", + "Iteration: 403 (118.44007614277427, 157.7731164000849, 293.89003304522475, 57.636050758719186)\n", + "Iteration: 404 (118.44007614277427, 164.58452931177513, 328.9057905986136, 72.28681694483319)\n", + "Iteration: 405 (118.44007614277427, 131.74926375134723, 232.4061498352308, 30.982693042096944)\n", + "Iteration: 406 (118.44007614277427, 137.29932753190414, 289.6838633779837, 47.39245442553808)\n", + "Iteration: 407 (118.44007614277427, 158.46597433215587, 264.4493071765253, 54.60456817323093)\n", + "Iteration: 408 (118.44007614277427, 163.11355464246586, 345.6368383271375, 77.42779994868408)\n", + "Iteration: 409 (118.44007614277427, 163.70146707747273, 362.1065007607928, 80.94471015689808)\n", + "Iteration: 410 (118.44007614277427, 171.72666473471642, 476.0117596507095, 105.99863602136537)\n", + "Iteration: 411 (118.44007614277427, 146.38338305740447, 285.0777726468324, 53.39108711091457)\n", + "Iteration: 412 (118.44007614277427, 184.9735531326829, 372.52397037750814, 103.37486849270593)\n", + "Iteration: 413 (118.44007614277427, 171.9040665818296, 517.5957033309578, 122.24113857285762)\n", + "Iteration: 414 (118.44007614277427, 121.43966693830419, 144.24213698577148, 7.425595591184103)\n", + "Iteration: 415 (118.44007614277427, 178.70627294705642, 382.13375350881495, 82.06950743627357)\n", + "Iteration: 416 (118.44007614277427, 133.56045098271315, 187.59686739729403, 25.074476538768522)\n", + "Iteration: 417 (118.44007614277427, 166.84277698911683, 358.15895303072836, 86.2260451300875)\n", + "Iteration: 418 (118.44007614277427, 147.63092462859132, 365.3894887553914, 69.8741354102134)\n", + "Iteration: 419 (118.44007614277427, 180.64306508075262, 413.28417721552785, 94.84912349345093)\n", + "Iteration: 420 (118.44007614277427, 135.59181294092875, 201.30676879098036, 27.86576386748103)\n", + "Iteration: 421 (118.44007614277427, 161.4247824004477, 315.42004162426963, 65.16557461782318)\n", + "Iteration: 422 (118.44007614277427, 139.0106319669244, 252.62239181785787, 42.5998061659889)\n", + "Iteration: 423 (118.44007614277427, 134.16154015663702, 221.92365472965582, 31.360753975035983)\n", + "Iteration: 424 (118.44007614277427, 125.19548744276453, 199.50370672398608, 22.404771111539723)\n", + "Iteration: 425 (118.44007614277427, 138.2928283745292, 318.91242601442127, 55.42624558848383)\n", + "Iteration: 426 (118.44007614277427, 126.70267525093796, 217.59126544073885, 27.403941034904193)\n", + "Iteration: 427 (118.44007614277427, 123.01649155202036, 172.31789894350578, 14.867685068806447)\n", + "Iteration: 428 (118.44007614277427, 165.02420635428632, 352.3907921783645, 77.85629650897049)\n", + "Iteration: 429 (118.44007614277427, 154.86572150463664, 313.4369128866673, 64.67869817039897)\n", + "Iteration: 430 (118.44007614277427, 161.22438978124322, 335.6745340372338, 69.36058057412188)\n", + "Iteration: 431 (118.44007614277427, 140.65012672665807, 262.82448745053523, 44.78542318055788)\n", + "Iteration: 432 (118.44007614277427, 125.89852702145168, 203.01165561375336, 23.29004332060913)\n", + "Iteration: 433 (118.44007614277427, 147.54815078611, 251.34586944294546, 39.809102917041294)\n", + "Iteration: 434 (118.44007614277427, 144.83183135579407, 414.4790738462599, 81.50036409252834)\n", + "Iteration: 435 (118.44007614277427, 186.50858591456074, 377.9919306119417, 98.62350894213755)\n", + "Iteration: 436 (118.44007614277427, 174.772097776942, 395.92783261553404, 89.2347747248106)\n", + "Iteration: 437 (118.44007614277427, 126.47547204927939, 160.10876614429668, 14.967735829847653)\n", + "Iteration: 438 (118.44007614277427, 199.77431606817734, 370.01704422559027, 90.22504038663155)\n", + "Iteration: 439 (118.44007614277427, 225.1965577535132, 611.5977440419438, 158.4999580014352)\n", + "Iteration: 440 (118.44007614277427, 138.5680131443148, 309.2908860288158, 52.18873567534677)\n", + "Iteration: 441 (118.44007614277427, 141.68187347906613, 382.62702766037876, 72.69848210287493)\n", + "Iteration: 442 (118.44007614277427, 167.2603592335672, 317.4889982280997, 71.9649279226623)\n", + "Iteration: 443 (118.44007614277427, 157.9005868020968, 326.2042014607672, 65.75736582600945)\n", + "Iteration: 444 (118.44007614277427, 152.41563133061842, 366.5897627298202, 69.24645721399878)\n", + "Iteration: 445 (118.44007614277427, 182.4400532661632, 412.574598709825, 96.40638941520567)\n", + "Iteration: 446 (118.44007614277427, 203.1689435946358, 420.80531537677024, 113.08721320083976)\n", + "Iteration: 447 (118.44007614277427, 210.75363928711081, 397.25640693702667, 113.46684774418615)\n", + "Iteration: 448 (118.44007614277427, 145.74570683470907, 270.9179277326236, 44.13819246135704)\n", + "Iteration: 449 (118.44007614277427, 142.30199618123365, 342.8870997506782, 61.375465814150886)\n", + "Iteration: 450 (118.44007614277427, 138.97938892741553, 199.65415466531928, 32.72852220632207)\n", + "Iteration: 451 (118.44007614277427, 131.12637425358113, 203.54463011812732, 24.734110293543658)\n", + "Iteration: 452 (118.44007614277427, 150.617290138178, 331.8046867635602, 60.434328023662964)\n", + "Iteration: 453 (118.44007614277427, 140.9568959316036, 214.79815778015228, 35.703778634987785)\n", + "Iteration: 454 (118.44007614277427, 154.87647272368858, 355.62656187421305, 76.59165820870443)\n", + "Iteration: 455 (118.44007614277427, 145.3497561835343, 255.7657432290361, 47.806121794047954)\n", + "Iteration: 456 (118.44007614277427, 144.28680362281122, 245.97587444208295, 45.983266309883405)\n", + "Iteration: 457 (118.44007614277427, 155.04911949520272, 326.85949620651127, 68.81702943634504)\n", + "Iteration: 458 (118.44007614277427, 148.85279797562825, 289.50870079872743, 61.31515986343984)\n", + "Iteration: 459 (118.44007614277427, 137.9342124675165, 311.1343076037111, 52.84174577223053)\n", + "Iteration: 460 (118.44007614277427, 132.70045341186565, 243.00649986915323, 34.73986061715205)\n", + "Iteration: 461 (118.44007614277427, 142.60081124503765, 347.63060841260824, 63.464455932964704)\n", + "Iteration: 462 (118.44007614277427, 173.10343763408568, 271.9058566155562, 67.1338491393077)\n", + "Iteration: 463 (118.44007614277427, 144.6327552779439, 283.67942489335456, 56.010347125111544)\n", + "Iteration: 464 (118.44007614277427, 172.69748159632104, 371.494216280243, 92.75043415388001)\n", + "Iteration: 465 (118.44007614277427, 144.6751804120841, 279.3291599516659, 49.16706622644454)\n", + "Iteration: 466 (118.44007614277427, 194.53443561087838, 595.8065522467671, 140.94192674336352)\n", + "Iteration: 467 (118.44007614277427, 162.72390735297543, 327.3873854592558, 70.11774732458332)\n", + "Iteration: 468 (118.44007614277427, 132.84925525686012, 194.21839253928738, 23.13430266341463)\n", + "Iteration: 469 (118.44007614277427, 140.3445662905699, 263.6535192347456, 42.74767464464074)\n", + "Iteration: 470 (118.44007614277427, 140.11648467206496, 278.24440524025977, 43.961188029225276)\n", + "Iteration: 471 (118.44007614277427, 160.23021198513922, 332.4990481715819, 76.82708587118636)\n", + "Iteration: 472 (118.44007614277427, 148.48642607417545, 282.090871569556, 52.8567878623952)\n", + "Iteration: 473 (118.44007614277427, 151.96771386884652, 338.56517705287126, 67.52896536030404)\n", + "Iteration: 474 (118.44007614277427, 123.81398673887149, 160.78709476773128, 12.016555865181441)\n", + "Iteration: 475 (118.44007614277427, 143.39432690963895, 285.4536618249619, 56.13581667527922)\n", + "Iteration: 476 (118.44007614277427, 160.04693797140894, 374.89673937857634, 76.45519555604383)\n", + "Iteration: 477 (118.44007614277427, 173.62210459839932, 306.64915001159216, 65.27169936098052)\n", + "Iteration: 478 (118.44007614277427, 143.57595327446018, 240.95561175282015, 44.460183348210975)\n", + "Iteration: 479 (118.44007614277427, 125.7214441029477, 196.79274206618936, 21.572259350201815)\n", + "Iteration: 480 (118.44007614277427, 151.37703887739806, 293.5370134658118, 52.83469965862728)\n", + "Iteration: 481 (118.44007614277427, 128.2100629465332, 230.062066052065, 30.74051415131524)\n", + "Iteration: 482 (118.44007614277427, 129.68028239690122, 182.25357330893183, 20.865438332206196)\n", + "Iteration: 483 (118.44007614277427, 151.95361992241263, 369.67379889794216, 72.16177788022414)\n", + "Iteration: 484 (118.44007614277427, 175.3418903253848, 339.07324614307095, 85.72366399545888)\n", + "Iteration: 485 (118.44007614277427, 145.7349711349543, 268.46345560495945, 51.15813857452422)\n", + "Iteration: 486 (118.44007614277427, 172.0146421448253, 345.5106343738776, 82.60559713721608)\n", + "Iteration: 487 (118.44007614277427, 148.45174080973285, 209.75814445078456, 38.3661303381135)\n", + "Iteration: 488 (118.44007614277427, 128.10000015184218, 199.36631907108412, 22.619028600269463)\n", + "Iteration: 489 (118.44007614277427, 143.78202527614397, 295.63582118501387, 55.26068925948449)\n", + "Iteration: 490 (118.44007614277427, 140.81318478020688, 267.21994942761444, 49.19532214694839)\n", + "Iteration: 491 (118.44007614277427, 150.16379480258584, 238.32798595089503, 42.828951680120376)\n", + "Iteration: 492 (118.44007614277427, 147.1554613087566, 345.51024788524336, 64.69210512277049)\n", + "Iteration: 493 (118.44007614277427, 153.60615094240495, 345.671705857044, 68.81922644504311)\n", + "Iteration: 494 (118.44007614277427, 168.66986683757472, 283.1529749381303, 66.12051424827213)\n", + "Iteration: 495 (118.44007614277427, 154.76913085725766, 263.0871787775741, 52.60331446180337)\n", + "Iteration: 496 (118.44007614277427, 152.54767990972115, 386.92327453938793, 73.35000724425964)\n", + "Iteration: 497 (118.44007614277427, 188.65320930023668, 370.0478022360082, 95.21478757332947)\n", + "Iteration: 498 (118.44007614277427, 133.61509989676037, 236.92414924012297, 33.40023636052752)\n", + "Iteration: 499 (118.44007614277427, 155.40686856318095, 345.95273704860256, 65.82804893526136)\n", + "(118.44007614277427, 155.40686856318095, 345.95273704860256, 65.82804893526136)\n", + "Best solution: [420.98611377062826, -302.40895454438066]\n" ] } ] + }, + { + "cell_type": "code", + "source": [ + "Population = initializePopulation()\n", + "mates=rouletteWheel(Population) #<--need to replace this with roulette wheel selection, e.g.: mates=rouletteWheel(Population)\n", + "Offspring = breeding(mates)\n", + "Population1 = insert(Population, Offspring)\n" + ], + "metadata": { + "id": "6WCpRAOiihWh" + }, + "execution_count": 163, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "KmFAr_zIjN4y" + }, + "execution_count": 163, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x = []\n", + "y = []\n", + "for entry in Population:\n", + " x.append(entry[0][0])\n", + " y.append(entry[0][1])\n", + "\n", + "x1 = []\n", + "y1 = []\n", + "\n", + "for entry in Population1:\n", + " x1.append(entry[0][0])\n", + " y1.append(entry[0][1])\n" + ], + "metadata": { + "id": "1UbuvBDsjdv3" + }, + "execution_count": 164, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.scatter(x,y,c = 'r',alpha = 0.5, label = \"Initial Gen\")\n", + "plt.scatter(x1,y1, c= 'b', alpha = 0.5, label = \"Generation 1\")\n", + "plt.legend()" + ], + "metadata": { + "id": "C9g-lqO2jiKp", + "outputId": "87cb0fd5-b6d5-4e1c-d40e-602a74e6a459", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 448 + } + }, + "execution_count": 165, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 165 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGdCAYAAADnrPLBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3uElEQVR4nO3de3yU1YH/8e9MriTMhEtCIiZjuESSCMqtSvC+UqNFa9BVa6kVl8VLo6CgVWp/YnULFKlW8AK6K9BtLS6uxC7ihcVbK3EpNFEgCQqCEy4JxOokBHKd8/vjKVOGBAiQzORJPu/Xa17DPOfMzJk8D5lvznPOeRzGGCMAAACbcoa7AQAAAKeDMAMAAGyNMAMAAGyNMAMAAGyNMAMAAGyNMAMAAGyNMAMAAGyNMAMAAGwtMtwNCAW/3689e/bI5XLJ4XCEuzkAAKANjDGqqalR//795XQeu/+lW4SZPXv2KC0tLdzNAAAAp6C8vFypqanHLO8WYcblckmyfhhutzvMrQEAAG1RXV2ttLS0wPf4sXSLMHP41JLb7SbMAABgMycaIsIAYAAAYGuEGQAAYGuEGQAAYGvdYsxMWzQ3N6uxsTHczUAnFxUVpYiIiHA3AwBwBMKMpAMHDmjXrl0yxoS7KejkHA6HUlNT1bNnz3A3BQDwd90+zDQ3N2vXrl2Ki4tTUlISi+rhmIwx2r9/v3bt2qWMjAx6aACgk+j2YaaxsVHGGCUlJalHjx7hbg46uaSkJO3cuVONjY2EGQDoJBgA/Hf0yKAtOE4AoPPp9j0zAADgFPn9ktcr1dRILpfk8UjHuYZSRyHMAACAk1daKq1cKZWVSXV1UmyslJkpTZggZWWFtCmcZupGHA6HCgoKjltn0qRJysvLa/Nr7ty5Uw6HQ8XFxafVNgCAjZSWSgsWSEVFUmKiNGSIdV9UZG0vLQ1pcwgzNnWyoUOS9u7dq6uvvlrSsUPIM888o6VLl7ZPI4+wbds2/cu//Is8Ho9iYmJ05pln6oorrtDvf/97NTU1tfv7AQA6iN9v9chUVUnZ2ZLbLUVEWPfZ2db2ggKrXohwmqm9dJLzhseTkpJywjoJCQnt/r7r16/XuHHjdM455+i5555TZmamJGnDhg167rnnNHToUJ133nnt/r4AgA7g9VqnltLSpKMnRTgcUmqq1TPj9Urp6SFpUuf6trWr0lJp7lzp0UelJ56w7ufODWk322WXXaapU6fqpz/9qfr06aOUlBQ99thjQXWOPM00YMAASdKIESPkcDh02WWXSWrZ4/P222/roosuUq9evdS3b19dc8012r59e5vbZYzRpEmTdPbZZ+vjjz/Wtddeq4yMDGVkZOiWW27Rn//8Z5177rmB+uXl5brpppvUq1cv9enTR9ddd5127twZKD/cvvnz5+uMM85Q3759lZ+fz+rNABAqNTXWGJn4+NbL4+Ot8pqakDWJMHO6OtF5w2XLlik+Pl7/93//p3nz5unxxx/XmjVrWq27fv16SdL//u//au/evXr99ddbrVdbW6vp06drw4YNWrt2rZxOpyZMmCB/G7sPi4uLVVpaqgceeEDOY/RUHZ7u3NjYqNzcXLlcLv3pT3/Sxx9/rJ49e+qqq65SQ0NDoP7777+v7du36/3339eyZcu0dOnSDjk1BgBohctlDfatrW29vLbWKne5QtYkwszp6GTnDc8991zNmjVLGRkZ+vGPf6zRo0dr7dq1rdZNSkqSJPXt21cpKSnq06dPq/VuuOEGXX/99Ro8eLCGDx+ul19+WZs2bVJJSUmb2vT5559LkoYMGRLYtm/fPvXs2TNwe/755yVJr776qvx+v/793/9dw4YNU1ZWlpYsWSKv16sPPvgg8PzevXvr2WefVWZmpq655hqNHz/+mJ8TANDOPB5r1lJ5uXT0ZYCMkXbtsmYzeTwhaxJh5nSczHnDEDjydI0knXHGGdq3b99pveYXX3yhW265RQMHDpTb7Vb6389/ek/jM/Xt21fFxcUqLi5Wr169Ar0un376qbZt2yaXyxUIOn369FFdXV3Qqa1zzjknaPXd9vicAIA2cjqt6deJiVJJieTzSU1N1n1JibU9Ly+k40YZAHw62nLecPfukJ03jIqKCnrscDjafDroWK699lqdddZZeumll9S/f3/5/X4NHTo06LTP8WRkZEiStm7dqhEjRkiSIiIiNHjwYElSZOQ/DsEDBw5o1KhR+v3vf9/idQ73JEkd8zkBACchK0uaOvUf68zs3m2dWho50goyIV5nhjBzOo48b+h2tywPw3nDtoqOjpZkXWjzWL7++mtt3bpVL730ki6++GJJ0p///OeTep8RI0YoMzNT8+fP10033XTMcTOSNHLkSL366qvq16+f3K39PAEAnUdWljVOtBPM5OU00+nohOcN26pfv37q0aOH3n77bVVWVsrn87Wo07t3b/Xt21cvvviitm3bpvfee0/Tp08/qfdxOBxasmSJtm7dqgsvvFB//OMf9cUXX6ikpESLFi3S/v37A6eMJk6cqMTERF133XX605/+pB07duiDDz7Q1KlTtWvXrnb53ACAduR0WtOvhw2z7sO0JAlh5nR0wvOGbRUZGakFCxZo8eLF6t+/v6677roWdZxOp5YvX66NGzdq6NChuv/++/Xkk0+e9HuNGTNGGzdu1JAhQ5Sfn6/s7GyNHTtWf/jDH/T000/r7rvvliTFxcXpo48+ksfj0fXXX6+srCxNnjxZdXV19NQAAI7JYczRXQpdT3V1tRISEuTz+Vp8KdbV1WnHjh0aMGCAYmNjT+0NWrs+RVZWWM4bomO1y/ECAGiT431/H4kxM+2hE503BACguyHMtJfD5w0BAEBI0XUAAABsjTADAABsjTADAABsjTADAABsjTADAABsjTADAABsjTCDTmnp0qXq1atXuJsBALABwoyNVVRUaNq0aRo8eLBiY2OVnJysCy+8UC+88IIOHjwY7ua1WXp6un7zm98Ebbv55pv1+eefd/h7v/7667ryyivVt29fORwOFRcXd/h7AgDaF4vmtRO/P7QLAH/55Ze68MIL1atXL82ePVvDhg1TTEyMNm3apBdffFFnnnmmvv/973dcA07AGKPm5mZFRp7aIdajRw/16NGjnVvVUm1trS666CLddNNNmjJlSoe/HwCgA5huwOfzGUnG5/O1KDt06JApKSkxhw4dOuXXLykx5pe/NObWW4258Ubr/pe/tLZ3lNzcXJOammoOHDjQarnf7w/8+5tvvjGTJ082iYmJxuVymcsvv9wUFxcHymfNmmXOO+8889vf/tacddZZxu12m5tvvtlUV1cH6jQ3N5vZs2eb9PR0Exsba84991yzYsWKQPn7779vJJnVq1ebkSNHmqioKPP++++bbdu2me9///umX79+Jj4+3owePdqsWbMm8LxLL73USAq6GWPMkiVLTEJCQtBnev75583AgQNNVFSUOfvss81vf/vboHJJ5qWXXjJ5eXmmR48eZvDgweaNN95o089zx44dRpIpKio6br32OF4AAG1zvO/vI3Ga6TSVlkoLFkhFRdZFsocMse6LiqztpaXt/55ff/213n33XeXn5ys+Pr7VOg6HI/DvG2+8Ufv27dNbb72ljRs3auTIkbriiiv0t7/9LVBn+/btKigo0KpVq7Rq1Sp9+OGHmjt3bqB8zpw5+u1vf6tFixZpy5Ytuv/++/WjH/1IH374YdD7Pvzww5o7d65KS0t17rnn6sCBA/re976ntWvXqqioSFdddZWuvfZaeb1eSdZpntTUVD3++OPau3ev9u7d2+rnWblypaZNm6YZM2Zo8+bNuvPOO3X77bfr/fffD6r3i1/8QjfddJM+++wzfe9739PEiRODPicAoOshzJwGv9+6WHZVlZSdLbndUkSEdZ+dbW0vKLDqtadt27bJGKMhQ4YEbU9MTFTPnj3Vs2dPPfTQQ5KkP//5z1q/fr1WrFih0aNHKyMjQ/Pnz1evXr302muvHfFZ/Fq6dKmGDh2qiy++WLfeeqvWrl0rSaqvr9fs2bP18ssvKzc3VwMHDtSkSZP0ox/9SIsXLw5qw+OPP67vfve7GjRokPr06aPzzjtPd955p4YOHaqMjAw98cQTGjRokP74xz9Kkvr06aOIiAi5XC6lpKQoJSWl1c88f/58TZo0ST/5yU909tlna/r06br++us1f/78oHqTJk3SLbfcosGDB2v27Nk6cOCA1q9ff3o/cABAp8aYmdPg9UplZVJamnRER4gk63FqqtUz4/WG5hqU69evl9/v18SJE1VfXy9J+vTTT3XgwAH17ds3qO6hQ4e0ffv2wOP09HS5XK7A4zPOOEP79u2TZIWngwcP6rvf/W7QazQ0NGjEiBFB20aPHh30+MCBA3rsscf05ptvau/evWpqatKhQ4cCPTNtVVpaqjvuuCNo24UXXqhnnnkmaNu5554b+Hd8fLzcbnfgcwAAuqaQ9czMnTtXDodD9913X2BbXV2d8vPz1bdvX/Xs2VM33HCDKisrg57n9Xo1fvx4xcXFqV+/fnrwwQfV1NQUqmYfV02NVFcnHeNMj+LjrfKamvZ938GDB8vhcGjr1q1B2wcOHKjBgwcHDZw9cOCAzjjjDBUXFwfdtm7dqgcffDBQLyoqKui1HA6H/H/vUjpw4IAk6c033wx6jZKSkqDeHUktTns98MADWrlypWbPnq0//elPKi4u1rBhw9TQ0HD6P4hWHO9zAAC6ppD0zPzlL3/R4sWLg/5qlqT7779fb775plasWKGEhATdc889uv766/Xxxx9LkpqbmzV+/HilpKRo3bp12rt3r3784x8rKipKs2fPDkXTj8vlkmJjpdpa69TS0WprrfIjOjzaRd++ffXd735Xzz77rO69995jjpuRpJEjR6qiokKRkZFKP8XuoezsbMXExMjr9erSSy89qed+/PHHmjRpkiZMmCDJCkY7d+4MqhMdHa3m5ubjvk5WVpY+/vhj3XbbbUGvnZ2dfVLtAQB0PR3eM3PgwAFNnDhRL730knr37h3Y7vP59B//8R966qmn9E//9E8aNWqUlixZonXr1umTTz6RJL377rsqKSnR7373Ow0fPlxXX321nnjiCT333HMd9pf9yfB4pMxMqbxcMia4zBhp1y4pK8uq196ef/55NTU1afTo0Xr11VdVWlqqrVu36ne/+53KysoUEREhSRo3bpxycnKUl5end999Vzt37tS6dev0yCOPaMOGDW16L5fLpQceeED333+/li1bpu3bt+uvf/2rFi5cqGXLlh33uRkZGXr99ddVXFysTz/9VD/84Q9b9JSkp6fro48+0u7du1VVVdXq6zz44INaunSpXnjhBX3xxRd66qmn9Prrr+uBBx5o02c4lr/97W+BXiZJ2rp1q4qLi1VRUXFarwsACJ0ODzP5+fkaP368xo0bF7R948aNamxsDNqemZkpj8ejwsJCSVJhYaGGDRum5OTkQJ3c3FxVV1dry5Ytx3zP+vp6VVdXB906gtMpTZhgzV4qKZF8PqmpybovKbG25+V1zHozgwYNUlFRkcaNG6eZM2fqvPPO0+jRo7Vw4UI98MADeuKJJyRZp1lWr16tSy65RLfffrvOPvts/eAHP9BXX30V9HM9kSeeeEL/7//9P82ZM0dZWVm66qqr9Oabb2rAgAHHfd5TTz2l3r17a+zYsbr22muVm5urkSNHBtV5/PHHtXPnTg0aNEhJSUmtvk5eXp6eeeYZzZ8/X+ecc44WL16sJUuW6LLLLmvzZ2jNH//4R40YMULjx4+XJP3gBz/QiBEjtGjRotN6XQBA6DiMObpPof0sX75cv/zlL/WXv/xFsbGxuuyyyzR8+HD95je/0SuvvKLbb789MFD1sPPPP1+XX365fvWrX+mOO+7QV199pXfeeSdQfvDgQcXHx2v16tW6+uqrW33fxx57TL/4xS9abPf5fHIfdT6orq5OO3bs0IABAxQbG3tKn7O01JrVVFZmjZGJjbV6ZPLyrHt0He1xvAAA2qa6uloJCQmtfn8fqcPGzJSXl2vatGlas2ZNyH/pz5w5U9OnTw88rq6uVlpaWoe9X1aWtb5MKFcABgAAlg4LMxs3btS+ffuCTik0Nzfro48+0rPPPqt33nlHDQ0N+vbbb4MuKFhZWRlYayQlJaXFGiGHZzsdaz0SSYqJiVFMTEw7fpoTczpDM/0aAAAE67C+gyuuuEKbNm0Kmso7evRoTZw4MfDvqKiowMJskjX40uv1KicnR5KUk5OjTZs2Ba0TsmbNGrndbmaxAAAASR3YM+NyuTR06NCgbfHx8erbt29g++TJkzV9+nT16dNHbrdb9957r3JycjRmzBhJ0pVXXqns7GzdeuutmjdvnioqKvTzn/9c+fn5Ie95AQAAnVNYVwB++umn5XQ6dcMNN6i+vl65ubl6/vnnA+URERFatWqV7r77buXk5Cg+Pl633XabHn/88TC2GgAAdCYdOpupszjeaOjDs1PS09ODVs4FWnPo0CHt3LmT2UwAEAJtnc3U7efbHF5crjMswofO7/Bxcvi4AQCEX7e/0GRkZKTi4uK0f/9+RUVFycl8ahyD3+/X/v37FRcXp8jIbv9fBwA6jW7/G9nhcOiMM87Qjh079NVXX4W7OejknE6nPB6PHEdfJh0AEDbdPsxI1oUOMzIyONWEE4qOjqb3DgA6GcLM3zmdTgZ0AgBgQ/yJCQAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbI0wAwAAbC0y3A0AOg2/X/J6pZoayeWSPB7JSd4HgM6OMANIUmmptHKlVFYm1dVJsbFSZqY0YYKUlRXu1gEAjqND/+ycM2eOvvOd78jlcqlfv37Ky8vT1q1bg+rU1dUpPz9fffv2Vc+ePXXDDTeosrIyqI7X69X48eMVFxenfv366cEHH1RTU1NHNh3dSWmptGCBVFQkJSZKQ4ZY90VF1vbS0nC3EABwHB0aZj788EPl5+frk08+0Zo1a9TY2Kgrr7xStbW1gTr333+//ud//kcrVqzQhx9+qD179uj6668PlDc3N2v8+PFqaGjQunXrtGzZMi1dulSPPvpoRzYd3YXfb/XIVFVJ2dmS2y1FRFj32dnW9oICqx4AoFNyGGNMqN5s//796tevnz788ENdcskl8vl8SkpK0iuvvKJ//ud/liSVlZUpKytLhYWFGjNmjN566y1dc8012rNnj5KTkyVJixYt0kMPPaT9+/crOjr6hO9bXV2thIQE+Xw+ud3uDv2MsJmdO6VHH7V6Ylo7Nnw+6euvpccfl9LTQ906AOjW2vr9HdLRjT6fT5LUp08fSdLGjRvV2NiocePGBepkZmbK4/GosLBQklRYWKhhw4YFgowk5ebmqrq6Wlu2bGn1ferr61VdXR10A1pVU2ONkYmPb708Pt4qr6kJbbsAAG0WsjDj9/t133336cILL9TQoUMlSRUVFYqOjlavXr2C6iYnJ6uioiJQ58ggc7j8cFlr5syZo4SEhMAtLS2tnT8NugyXyxrse8SpzyC1tVa5yxXadgEA2ixkYSY/P1+bN2/W8uXLO/y9Zs6cKZ/PF7iVl5d3+HvCpjwea9ZSebl09BlXY6Rdu6zZTB5PeNoHADihkISZe+65R6tWrdL777+v1NTUwPaUlBQ1NDTo22+/DapfWVmplJSUQJ2jZzcdfny4ztFiYmLkdruDbkCrnE5r+nViolRSYo2RaWqy7ktKrO15eaw3AwCdWIf+hjbG6J577tHKlSv13nvvacCAAUHlo0aNUlRUlNauXRvYtnXrVnm9XuXk5EiScnJytGnTJu3bty9QZ82aNXK73crOzu7I5qO7yMqSpk6VRoywBvt+/rl1P3KktZ11ZgCgU+vQ2Uw/+clP9Morr+iNN97QkCFDAtsTEhLUo0cPSdLdd9+t1atXa+nSpXK73br33nslSevWrZNkTc0ePny4+vfvr3nz5qmiokK33nqr/vVf/1WzZ89uUzuYzYQ2YQVgAOhU2vr93aFhxuFwtLp9yZIlmjRpkiRr0bwZM2boD3/4g+rr65Wbm6vnn38+6BTSV199pbvvvlsffPCB4uPjddttt2nu3LmKjGzbAsaEGQAA7KdThJnOgjADAID9dMp1ZgAAANobYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANgaYQYAANhaZLgbAACh4vdLXq9UUyO5XJLHIzn//iedv8kv7yd7VFN5UK7kOHnG9Jczkr/3ADsgzADoFkpLpZUrpbIyqa5Oio2VMjOlCRMkbd+ulQu8KtsWpbpGp2Kj/Moc/IUmTPUo65pB4W46gBMgzADo8kpLpQULpKoqKS1Nio+XamuloiLpsz/5pC/+pua6WKX1q1d8nFHtQYeKSmJV/tBuTZUINEAnRx8qgC7N77d6ZKqqpOxsye2WIiKs+6xMo81/rdeW/f2UNaDOKot0yO2WsgfWqcoXpYKF5fI3+cP9MQAcB2EGQJfm9VqnltLSJIcjuKx6d42a6xrVHBGj6sYeQWUOp0OpSfUq/SJS3k/2hLDFAE4WYQZAl1ZTY42RiY9vWVZ/oNHqunE6Vd8U0aI8Pt6ortGpmsqDIWgpgFNFmAHQpblc1mDf2tqWZTE9o6zpTH6/YiKbW5TX1joUG+WXKzkuBC0FcKoIMwC6NI/HmrVUXi4ZE1zmPtOliNgoRTTXyx11KKjM+I127Y9RVkaTPGP6h7DFAE4WYQZAl+Z0WtOvExOlkhLJ55Oamqz70jKHho6K0TlJ+1S6I/bvZUY+n1TyZawSExqUd28a680AnRxTswF0eVlZ0tSp/1hnZvdu69TTyJFSXl6CtL1PYJ2Z3VXWOjMjz6lX3r1pTMsGbMBhzNEdr11PdXW1EhIS5PP55Ha7w90cAGHCCsCAvbT1+5ueGQDdhtMppacfoyzSqfSLUkPaHgDtgz87AACArRFmAACArRFmAACArRFmAACArRFmAACArRFmAACArRFmAACArRFmAACArRFmAACArRFmAACArXE5g3A63oVigBDiUARgZ4SZcCkt/cclfOvqrEv4ZmZKEyZYl/gFQoRDEYDdEWbCobRUWrBAqqqS0tKk+HiptlYqKpLKy6WpU/kWQUhwKALoCuhIDjW/3/ozuKpKys6W3G4pIsK6z862thcUWPWADsShCKCrsE2Yee6555Senq7Y2FhdcMEFWr9+fbibdGq8Xqs/Py1NcjiCyxwOKTXV+nPZ6w1P+9BtcCgC6CpsEWZeffVVTZ8+XbNmzdJf//pXnXfeecrNzdW+ffvC3bSTV1NjDUyIj2+9PD7eKq+pCW270O1wKALoKmwRZp566ilNmTJFt99+u7Kzs7Vo0SLFxcXp5ZdfDnfTTp7LZY2wrK1tvby21ip3uULbLnQ7HIoAuopOH2YaGhq0ceNGjRs3LrDN6XRq3LhxKiwsbPU59fX1qq6uDrp1Gh6PNVWkvFwyJrjMGGnXLmvEpccTnvah2+BQBNBVdPowU1VVpebmZiUnJwdtT05OVkVFRavPmTNnjhISEgK3tLS0UDS1bZxOa85rYqJUUiL5fFJTk3VfUmJtz8tjkQ90OA5FAF1Fl/w1NXPmTPl8vsCtvLw83E0KlpVlzXkdMUL6+mvp88+t+5EjmQuLkOJQBNAVdPp1ZhITExUREaHKysqg7ZWVlUpJSWn1OTExMYqJiQlF805dVpY0ZAjLriLsOBQB2F2n/3UVHR2tUaNGae3atYFtfr9fa9euVU5OThhb1g6cTik9XRo2zLrn2wNhwqEIwM46fc+MJE2fPl233XabRo8erfPPP1+/+c1vVFtbq9tvvz3cTQMAAGFmizBz8803a//+/Xr00UdVUVGh4cOH6+23324xKBgAAHQ/DmOOnpTZ9VRXVyshIUE+n09utzvczQEAAG3Q1u9vzowDAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbI8wAAABbiwx3AwC0D3+TX95P9qim8qBcyXHyjOkvZyR/rwDo+ggzQBdQumq7Vi7wqmxblOoanYqN8itz8BeaMNWjrGsGhbt5ANChCDOAzZWu2q4FD+1WlS9Waf3qFR9nVHvQoaKSWJU/tFtTJQINgC6NPmjAxvxNfq1c4FWVL0rZA+vkdksRkQ653VL2wDpV+aJUsLBc/iZ/uJsKAB2GMAPYmPeTPSrbFqW0fvVyOB1BZQ6nQ6lJ9Sr9IlLeT/aEqYUA0PEIM4CN1VQeVF2jU/FxptXy+HijukanaioPhrhlABA6hBnAxlzJcYqN8qv2oKPV8tpah2Kj/HIlx4W4ZQAQOoQZwMY8Y/orc3CjyvfFyPiDe2eM32jX/hhlZTTJM6Z/mFoIAB2PMAPYmDPSqQlTPUpMaFTJl7Hy+aSmJiOfTyr5MlaJCQ3KuzeN9WYAdGlMzQZsLuuaQZoqBdaZ2V1lrTMz8px65d2bxrRsAF0eYQboArKuGaQhVw1gBWAA3RJhBuginJFOpV+UGu5mAEDIdcifbTt37tTkyZM1YMAA9ejRQ4MGDdKsWbPU0NAQVO+zzz7TxRdfrNjYWKWlpWnevHktXmvFihXKzMxUbGyshg0bptWrV3dEkwEAgE11SJgpKyuT3+/X4sWLtWXLFj399NNatGiRfvaznwXqVFdX68orr9RZZ52ljRs36sknn9Rjjz2mF198MVBn3bp1uuWWWzR58mQVFRUpLy9PeXl52rx5c0c0GwAA2JDDGNP6alvt7Mknn9QLL7ygL7/8UpL0wgsv6JFHHlFFRYWio6MlSQ8//LAKCgpUVlYmSbr55ptVW1urVatWBV5nzJgxGj58uBYtWtTm966urlZCQoJ8Pp/cbnc7fqrT4/dLXq9UUyO5XJLHIzkZ4gAAgKS2f3+HbMyMz+dTnz59Ao8LCwt1ySWXBIKMJOXm5upXv/qVvvnmG/Xu3VuFhYWaPn160Ovk5uaqoKDguO9VX1+v+vr6wOPq6ur2+RDtqLRUWrlSKiuT6uqk2FgpM1OaMEHKygp36wAAsI+Q9ANs27ZNCxcu1J133hnYVlFRoeTk5KB6hx9XVFQct87h8mOZM2eOEhISAre0tLT2+BjtprRUWrBAKiqSEhOlIUOs+6Iia3tpabhbCACAfZxUmHn44YflcDiOezt8iuiw3bt366qrrtKNN96oKVOmtGvjj2XmzJny+XyBW3l5eUjety38fqtHpqpKys6WdZXjCOs+O9vaXlBg1QMAACd2UqeZZsyYoUmTJh23zsCBAwP/3rNnjy6//HKNHTs2aGCvJKWkpKiysjJo2+HHKSkpx61zuPxYYmJiFBMTc9w64eL1WqeW0tIkx1GX03E4pNRUq2fG65XS08PSRAAAbOWkwkxSUpKSkpLaVHf37t26/PLLNWrUKC1ZskTOo0a25uTk6JFHHlFjY6OioqIkSWvWrNGQIUPUu3fvQJ21a9fqvvvuCzxvzZo1ysnJOZlmdyo1NdYYmfj41svj46Xdu616AADgxDpkzMzu3bt12WWXyePxaP78+dq/f78qKiqCxrr88Ic/VHR0tCZPnqwtW7bo1Vdf1TPPPBM04HfatGl6++239etf/1plZWV67LHHtGHDBt1zzz0d0eyQcLmswb61ta2X19Za5S5XaNsFAIBddchspjVr1mjbtm3atm2bUlODVyQ9PBM8ISFB7777rvLz8zVq1CglJibq0Ucf1R133BGoO3bsWL3yyiv6+c9/rp/97GfKyMhQQUGBhg4d2hHNDgmPx5q1VFRkjZE58lSTMdKuXdLIkVY9AABwYiFbZyacOts6M4dnM1VVWWNk4uOtHpldu6xZTVOnMj0bAIC2fn+zRFsYZGVZgWXECOnrr6XPP7fuR44kyAAAcLK40GSYZGVZ68uwAjAAAKeHMBNGTifTrwEAOF30AwAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFsjzAAAAFuLDHcDAABA2/j9ktcr1dRILpfk8UhOuiUIMwAA2EFpqbRypVRWJtXVSbGxUmamNGGClJUV7taFF2EGAIBOrrRUWrBAqqqS0tKk+HiptlYqKpLKy6WpU7t3oKFzCgCATszvt3pkqqqk7GzJ7ZYiIqz77Gxre0GBVa+7IswAANCJeb3WqaW0NMnhCC5zOKTUVKvnxusNT/s6A8IMAACdWE2NNUYmPr718vh4q7ymJrTt6kwIMwAAdGIulzXYt7a29fLaWqvc5QptuzoTwgwAAJ2Yx2PNWiovl4wJLjNG2rXLGvzr8YSnfZ0Bs5kAdAqsnwG0zum0pl+Xl0ubN/nlrK+VaWiWIzpC/ph49Ut2Ki+ve/9/IcwACDvWzwCOLytLOjdpj379aowqquPUbKIV4fDrjIRvND2/XllZ/cPdxLAizAAIK9bPAE5s1QtePftspOoOSWe5v1F0lFFDo0O+gzF69lkp7Qyvrrm7+55n6sadUgDCjfUzgBNravBrwa8b5TsUo4FJ1UpyNyihR6OS3A0amFQt36EYLXyqSU0N3fc/CmEGQNiwfgZwYp+8UaltFT3Vz3VQTmfwfxSn06Gkngf1xd54ffJGZZhaGH6EGQBhw/oZwIlVltersTlCcTFNrZbHxzapsTlCleX1IW5Z50GYARA2rJ8BnFhyWoyiIpp1sL71Ya61dZGKimhWclpMiFvWeRBmAIQN62cAJzbmumQNTjmgfTVx8vuD/6P4/Ub7D8Qp44xajbkuOUwtDD/CDICwObx+RmKiVFIi+XxSU5N1X1Jibe/u62cAkdFOTZ0RpYQe9fpyv1u+2gg1NRv5aiP05X63EnrU6d7pkYqM7r7/URzGHP33UNdTXV2thIQE+Xw+ud3ucDcHwFFaW2cmK8sKMkzLBiyrXvBqwa8bta2ipxqbIxQV0ayMM2p17/TILjstu63f34QZAJ0CKwADJ9bU4Ncnb1SqsrxeyWkxGnNdcpfukWnr9zeL5gHoFJxOKT093K0AOrfIaKcuuvGMcDej0+m6cQ4AAHQLhBkAAGBrhBkAAGBrhBkAAGBrDAA+VUy9AACgUyDMnIrWFsXIzLRW/2JRDAAAQoowc7JKS6UFC6SqKutSv/Hx1gVkioqsNdmnTiXQAAAQQpwXORl+v9UjU1UlZWdLbrcUEWHdZ2db2wsKrHoAACAkCDMnw+u1Ti2lpUkOR3CZwyGlplo9N15veNoHAEA3RJg5GTU11hiZ+PjWy+PjrfKamtC2CwCAbowwczJcLmuwb21t6+W1tVa5yxXadgEA0I11eJipr6/X8OHD5XA4VFxcHFT22Wef6eKLL1ZsbKzS0tI0b968Fs9fsWKFMjMzFRsbq2HDhmn16tUd3eRj83isWUvl5dLR1+c0Rtq1yxr86+maVy8FAKAz6vAw89Of/lT9+/dvsb26ulpXXnmlzjrrLG3cuFFPPvmkHnvsMb344ouBOuvWrdMtt9yiyZMnq6ioSHl5ecrLy9PmzZs7utmtczqt6deJiVJJieTzSU1N1n1JibU9L4/1ZgAACCGHMUd3MbSft956S9OnT9d///d/65xzzlFRUZGGDx8uSXrhhRf0yCOPqKKiQtHR0ZKkhx9+WAUFBSorK5Mk3XzzzaqtrdWqVasCrzlmzBgNHz5cixYtanM72noJ8TZrbZ2ZrCwryDAtGwCAdtHW7+8OW2emsrJSU6ZMUUFBgeLi4lqUFxYW6pJLLgkEGUnKzc3Vr371K33zzTfq3bu3CgsLNX369KDn5ebmqqCg4LjvXV9fr/r6+sDj6urq0/swR8vKkoYMYQVgAAA6gQ759jXGaNKkSbrrrrs0evToVutUVFQoOTk5aNvhxxUVFcetc7j8WObMmaOEhITALS0t7VQ/yrE5nVJ6ujRsmHVPkAEAICxO6hv44YcflsPhOO6trKxMCxcuVE1NjWbOnNlR7T6umTNnyufzBW7l5eVhaQcAAOh4J3WaacaMGZo0adJx6wwcOFDvvfeeCgsLFRMTE1Q2evRoTZw4UcuWLVNKSooqKyuDyg8/TklJCdy3Vudw+bHExMS0eG8AANA1nVSYSUpKUlJS0gnrLViwQP/2b/8WeLxnzx7l5ubq1Vdf1QUXXCBJysnJ0SOPPKLGxkZFRUVJktasWaMhQ4aod+/egTpr167VfffdF3itNWvWKCcn52SaDQAAurAOGQDsOWqdlZ49e0qSBg0apNTUVEnSD3/4Q/3iF7/Q5MmT9dBDD2nz5s165pln9PTTTweeN23aNF166aX69a9/rfHjx2v58uXasGFD0PRtAADQvYVt1GpCQoLeffdd7dixQ6NGjdKMGTP06KOP6o477gjUGTt2rF555RW9+OKLOu+88/Taa6+poKBAQ4cODVezAQBAJ9Oh68x0Fu2+zgwAAOhwbf3+Zj4xAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwNcIMAACwtchwNwAAQsXf5Jf3kz2qqTwoV3KcPGP6yxlp/U3n90ter1RTI7lckscjOflzD11EVz++CTMAuoXSVdu1coFXZduiVNfoVGyUX5mDv9CEqR5p0CCtXCmVlUl1dVJsrJSZKU2YIGVlhbvlwOkpLVWXP74JMwC6vNJV27Xgod2q8sUqrV+94uOMag86VFQSq8/u+5t0dl81x/dSWpoUHy/V1kpFRVJ5uTR1atf5hY/up7RUWrBAqqpSlz6+u1AnEwC05G/ya+UCr6p8UcoeWCe3W4qIdMjtlrIG1mvzvmRt2VivrExjlUVIbreUnW19ARQUWF30gN34/VaPTFWVdTx35eObMAOgS/N+skdl26KU1q9eDqcjqKy6IVbNEdFqrmtS9e6aoDKHQ0pNtf6y9XpD2WKgfXi91qmltDTreD5SVzu+CTMAurSayoOqa3QqPs60KKtvipCcDsn4VX+gsUV5fLw1xqCmpkUR0OnV1FjHb3x86+Vd6fgmzADo0lzJcYqN8qv2oKNFWUxks+Q3ksOpmJ5RLcpra63Bki5XKFoKtC+Xyzp+a2tbL+9KxzdhBkCX5hnTX5mDG1W+L0bGH9w7446uU0RzgyJiI+U+M/g3ujHSrl3W4EiPJ5QtBtqHx2PNWiovt47nI3W145swA6BLc0Y6NWGqR4kJjSr5MlY+n9TUZOTzSaVfxmhov0qdMypGpWWOv5dJPp9UUiIlJkp5eV1rPQ50H06nNf06MdE6nrvy8e0w5ui81vVUV1crISFBPp9Pbrc73M0BEAatrTOTldGkvHvTWl1nJivL+kXfFaatontrbZ0Zuxzfbf3+JswA6DZYARjdlV2P77Z+f7NoHoBuwxnpVPpFqa2XOaX09NC2BwiVrn582yCXAQAAHBthBgAA2BphBgAA2BphBgAA2BphBgAA2BphBgAA2BphBgAA2BphBgAA2BphBgAA2Fq3WAH48BUbqqurw9wSAADQVoe/t0905aVuEWZqamokSWlpaWFuCQAAOFk1NTVKSEg4Znm3uNCk3+/Xnj175HK55HA4wt2cY6qurlZaWprKy8u5IGYYsR/Cj30QfuyD8GMfWD0yNTU16t+/v5zHuTJmt+iZcTqdSk1t/eJynZHb7e62B25nwn4IP/ZB+LEPwq+774Pj9cgcxgBgAABga4QZAABga4SZTiQmJkazZs1STExMuJvSrbEfwo99EH7sg/BjH7RdtxgADAAAui56ZgAAgK0RZgAAgK0RZgAAgK0RZgAAgK0RZsKsvr5ew4cPl8PhUHFxcVDZZ599posvvlixsbFKS0vTvHnzWjx/xYoVyszMVGxsrIYNG6bVq1eHqOX2tnPnTk2ePFkDBgxQjx49NGjQIM2aNUsNDQ1B9dgHoffcc88pPT1dsbGxuuCCC7R+/fpwN6nLmDNnjr7zne/I5XKpX79+ysvL09atW4Pq1NXVKT8/X3379lXPnj11ww03qLKyMqiO1+vV+PHjFRcXp379+unBBx9UU1NTKD9KlzF37lw5HA7dd999gW3sg1NgEFZTp041V199tZFkioqKAtt9Pp9JTk42EydONJs3bzZ/+MMfTI8ePczixYsDdT7++GMTERFh5s2bZ0pKSszPf/5zExUVZTZt2hSGT2Ivb731lpk0aZJ55513zPbt280bb7xh+vXrZ2bMmBGowz4IveXLl5vo6Gjz8ssvmy1btpgpU6aYXr16mcrKynA3rUvIzc01S5YsMZs3bzbFxcXme9/7nvF4PObAgQOBOnfddZdJS0sza9euNRs2bDBjxowxY8eODZQ3NTWZoUOHmnHjxpmioiKzevVqk5iYaGbOnBmOj2Rr69evN+np6ebcc88106ZNC2xnH5w8wkwYrV692mRmZpotW7a0CDPPP/+86d27t6mvrw9se+ihh8yQIUMCj2+66SYzfvz4oNe84IILzJ133tnhbe+K5s2bZwYMGBB4zD4IvfPPP9/k5+cHHjc3N5v+/fubOXPmhLFVXde+ffuMJPPhhx8aY4z59ttvTVRUlFmxYkWgTmlpqZFkCgsLjTHW7y2n02kqKioCdV544QXjdruD/q/g+GpqakxGRoZZs2aNufTSSwNhhn1wajjNFCaVlZWaMmWK/vM//1NxcXEtygsLC3XJJZcoOjo6sC03N1dbt27VN998E6gzbty4oOfl5uaqsLCwYxvfRfl8PvXp0yfwmH0QWg0NDdq4cWPQz9PpdGrcuHH8PDuIz+eTpMBxv3HjRjU2Ngbtg8zMTHk8nsA+KCws1LBhw5ScnByok5ubq+rqam3ZsiWErbe3/Px8jR8/vsXvD/bBqSHMhIExRpMmTdJdd92l0aNHt1qnoqIi6ECVFHhcUVFx3DqHy9F227Zt08KFC3XnnXcGtrEPQquqqkrNzc38PEPE7/frvvvu04UXXqihQ4dKso7n6Oho9erVK6jukfugLf8vcHzLly/XX//6V82ZM6dFGfvg1BBm2tHDDz8sh8Nx3FtZWZkWLlyompoazZw5M9xN7nLaug+OtHv3bl111VW68cYbNWXKlDC1HAit/Px8bd68WcuXLw93U7qV8vJyTZs2Tb///e8VGxsb7uZ0GZHhbkBXMmPGDE2aNOm4dQYOHKj33ntPhYWFLa63MXr0aE2cOFHLli1TSkpKi9Hrhx+npKQE7lurc7i8O2rrPjhsz549uvzyyzV27Fi9+OKLQfXYB6GVmJioiIgIfp4hcM8992jVqlX66KOPlJqaGtiekpKihoYGffvtt0E9A0fug5SUlBYzzI7+f4Fj27hxo/bt26eRI0cGtjU3N+ujjz7Ss88+q3feeYd9cCrCPWinO/rqq6/Mpk2bArd33nnHSDKvvfaaKS8vN8b8Y/BpQ0ND4HkzZ85sMfj0mmuuCXrtnJwcBp+20a5du0xGRob5wQ9+YJqamlqUsw9C7/zzzzf33HNP4HFzc7M588wzGQDcTvx+v8nPzzf9+/c3n3/+eYvyw4NPX3vttcC2srKyVgefHjnDbPHixcbtdpu6urqO/xA2V11dHfT7f9OmTWb06NHmRz/6kdm0aRP74BQRZjqBHTt2tJjN9O2335rk5GRz6623ms2bN5vly5ebuLi4FtOCIyMjzfz5801paamZNWsW04LbaNeuXWbw4MHmiiuuMLt27TJ79+4N3A5jH4Te8uXLTUxMjFm6dKkpKSkxd9xxh+nVq1fQrA2curvvvtskJCSYDz74IOiYP3jwYKDOXXfdZTwej3nvvffMhg0bTE5OjsnJyQmUH54WfOWVV5ri4mLz9ttvm6SkpG49Lfh0HTmbyRj2wakgzHQCrYUZY4z59NNPzUUXXWRiYmLMmWeeaebOndviuf/1X/9lzj77bBMdHW3OOecc8+abb4ao1fa2ZMkSI6nV25HYB6G3cOFC4/F4THR0tDn//PPNJ598Eu4mdRnHOuaXLFkSqHPo0CHzk5/8xPTu3dvExcWZCRMmBIV8Y4zZuXOnufrqq02PHj1MYmKimTFjhmlsbAzxp+k6jg4z7IOT5zDGmJCf2wIAAGgnzGYCAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC29v8B91c9p6OJ7zoAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "kGW92id5j7An" + }, + "execution_count": 165, + "outputs": [] } ] } \ No newline at end of file