{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Saving and loading Evolution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we will demonstrate how to save an evolutionary optimization on one machine or instance and load the results in another machine. This is useful, when the optimization is carried out on another computer as the analysis of the results are done. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# change to the root directory of the project\n", "import os\n", "if os.getcwd().split(\"/\")[-2] == \"neurolib\":\n", " os.chdir('..')\n", " \n", "# This will reload all imports as soon as the code changes\n", "%load_ext autoreload\n", "%autoreload 2 " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# prepare logging\n", "import logging\n", "logger = logging.getLogger()\n", "logger.setLevel(logging.INFO)\n", "\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We import the modules that we need for evolution" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "from neurolib.utils.parameterSpace import ParameterSpace\n", "from neurolib.optimize.evolution import Evolution\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will simply run the basic optimization on a circle from Example 2." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "def optimize_me(traj):\n", " ind = evolution.getIndividualFromTraj(traj)\n", " result = tuple([abs((ind.x**2 + ind.y**2) - 1)])\n", " return result, {\"random_output\" : np.random.randint(100)}\n", "\n", " \n", "pars = ParameterSpace(['x', 'y'], [[-5.0, 5.0], [-5.0, 5.0]])\n", "evolution = Evolution(optimize_me, pars, weightList = [-1.0],\n", " POP_INIT_SIZE=10, POP_SIZE = 6, NGEN=4, filename=\"example-2.0.1.hdf\")\n", "\n", "evolution.run(verbose = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Save evolution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that the optimization is done, we can serialize and save the evolution using the [dill](https://github.com/uqfoundation/dill) module." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "MainProcess root INFO Saving evolution to saved_evolution.dill\n" ] } ], "source": [ "EVOLUTION_DILL = \"saved_evolution.dill\"\n", "evolution.saveEvolution(EVOLUTION_DILL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load evolution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we pretend as if we're on a completely new machine. We need to instantiate the `Evolution` class in order to fill it with the data from the previous optimization. For this, we create a \"mock\" evolution with some fake parameters and then load the dill file to fill out the mock values with the real ones." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "MainProcess root INFO weightList not set, assuming single fitness value to be maximized.\n", "MainProcess root INFO Trajectory Name: results-2021-02-15-12H-13M-39S\n", "MainProcess root INFO Storing data to: ./data/hdf/evolution.hdf\n", "MainProcess root INFO Trajectory Name: results-2021-02-15-12H-13M-39S\n", "MainProcess root INFO Number of cores: 8\n", "MainProcess pypet.storageservice.HDF5StorageService INFO I will use the hdf5 file `./data/hdf/evolution.hdf`.\n", "MainProcess pypet.environment.Environment INFO Environment initialized.\n", "MainProcess root INFO Evolution: Using algorithm: adaptive\n", "/Users/caglar/anaconda/lib/python3.7/site-packages/deap/creator.py:141: RuntimeWarning: A class named 'FitnessMulti' has already been created and it will be overwritten. Consider deleting previous creation of that class or rename it.\n", " RuntimeWarning)\n", "/Users/caglar/anaconda/lib/python3.7/site-packages/deap/creator.py:141: RuntimeWarning: A class named 'Individual' has already been created and it will be overwritten. Consider deleting previous creation of that class or rename it.\n", " RuntimeWarning)\n", "MainProcess root INFO Evolution: Individual generation: <function randomParametersAdaptive at 0x7fd122dfa950>\n", "MainProcess root INFO Evolution: Mating operator: <function cxBlend at 0x7fd122dcdb70>\n", "MainProcess root INFO Evolution: Mutation operator: <function gaussianAdaptiveMutation_nStepSizes at 0x7fd122dfad90>\n", "MainProcess root INFO Evolution: Parent selection: <function selRank at 0x7fd122dfaae8>\n", "MainProcess root INFO Evolution: Selection operator: <function selBest_multiObj at 0x7fd122dfab70>\n" ] } ], "source": [ "# initialize mock evolution for loading previously generated data\n", "pars = ParameterSpace(['mock'], \n", " [[0, 1]])\n", "evaluateSimulation = lambda x: x\n", "evolution_new = Evolution(evaluateSimulation, \n", " pars)\n", "evolution_new = evolution_new.loadEvolution(EVOLUTION_DILL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we should be able to do everything we want with the new evolution object." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>x</th>\n", " <th>y</th>\n", " <th>score</th>\n", " <th>id</th>\n", " <th>gen</th>\n", " <th>f0</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>1.767126</td>\n", " <td>0.547244</td>\n", " <td>-2.422212</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>2.422212</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1.908967</td>\n", " <td>-0.899728</td>\n", " <td>-3.453668</td>\n", " <td>7</td>\n", " <td>0</td>\n", " <td>3.453668</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>2.047736</td>\n", " <td>1.437642</td>\n", " <td>-5.260036</td>\n", " <td>9</td>\n", " <td>0</td>\n", " <td>5.260036</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>-1.521826</td>\n", " <td>2.259241</td>\n", " <td>-6.420126</td>\n", " <td>8</td>\n", " <td>0</td>\n", " <td>6.420126</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.898959</td>\n", " <td>2.578525</td>\n", " <td>-6.456920</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>6.456920</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>2.622927</td>\n", " <td>-1.558091</td>\n", " <td>-8.307394</td>\n", " <td>3</td>\n", " <td>0</td>\n", " <td>8.307394</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>0.517562</td>\n", " <td>1.942211</td>\n", " <td>-3.040056</td>\n", " <td>10</td>\n", " <td>1</td>\n", " <td>3.040056</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-1.820438</td>\n", " <td>2.712097</td>\n", " <td>-9.669464</td>\n", " <td>11</td>\n", " <td>1</td>\n", " <td>9.669464</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>0.777049</td>\n", " <td>1.272183</td>\n", " <td>-1.222253</td>\n", " <td>12</td>\n", " <td>1</td>\n", " <td>1.222253</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>3.143349</td>\n", " <td>0.980240</td>\n", " <td>-9.841516</td>\n", " <td>13</td>\n", " <td>1</td>\n", " <td>9.841516</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>2.267286</td>\n", " <td>-0.238797</td>\n", " <td>-4.197609</td>\n", " <td>14</td>\n", " <td>1</td>\n", " <td>4.197609</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>2.098299</td>\n", " <td>3.682854</td>\n", " <td>-16.966271</td>\n", " <td>15</td>\n", " <td>1</td>\n", " <td>16.966271</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>-1.746393</td>\n", " <td>0.288008</td>\n", " <td>-2.132837</td>\n", " <td>16</td>\n", " <td>2</td>\n", " <td>2.132837</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>0.759040</td>\n", " <td>0.168302</td>\n", " <td>-0.395532</td>\n", " <td>17</td>\n", " <td>2</td>\n", " <td>0.395532</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>-1.477419</td>\n", " <td>2.202671</td>\n", " <td>-6.034527</td>\n", " <td>18</td>\n", " <td>2</td>\n", " <td>6.034527</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>0.384431</td>\n", " <td>3.804135</td>\n", " <td>-13.619231</td>\n", " <td>19</td>\n", " <td>2</td>\n", " <td>13.619231</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>1.236164</td>\n", " <td>-2.969863</td>\n", " <td>-9.348190</td>\n", " <td>20</td>\n", " <td>2</td>\n", " <td>9.348190</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>1.478068</td>\n", " <td>0.033220</td>\n", " <td>-1.185788</td>\n", " <td>21</td>\n", " <td>2</td>\n", " <td>1.185788</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>2.544810</td>\n", " <td>3.003174</td>\n", " <td>-14.495107</td>\n", " <td>22</td>\n", " <td>3</td>\n", " <td>14.495107</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>0.606182</td>\n", " <td>-0.408578</td>\n", " <td>-0.465607</td>\n", " <td>23</td>\n", " <td>3</td>\n", " <td>0.465607</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>0.741795</td>\n", " <td>0.783160</td>\n", " <td>-0.163599</td>\n", " <td>24</td>\n", " <td>3</td>\n", " <td>0.163599</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>1.678066</td>\n", " <td>2.696300</td>\n", " <td>-9.085941</td>\n", " <td>25</td>\n", " <td>3</td>\n", " <td>9.085941</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>1.190213</td>\n", " <td>-3.732895</td>\n", " <td>-14.351114</td>\n", " <td>26</td>\n", " <td>3</td>\n", " <td>14.351114</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>-2.492132</td>\n", " <td>-1.219275</td>\n", " <td>-6.697355</td>\n", " <td>27</td>\n", " <td>3</td>\n", " <td>6.697355</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " x y score id gen f0\n", "0 1.767126 0.547244 -2.422212 1 0 2.422212\n", "1 1.908967 -0.899728 -3.453668 7 0 3.453668\n", "2 2.047736 1.437642 -5.260036 9 0 5.260036\n", "3 -1.521826 2.259241 -6.420126 8 0 6.420126\n", "4 -0.898959 2.578525 -6.456920 0 0 6.456920\n", "5 2.622927 -1.558091 -8.307394 3 0 8.307394\n", "6 0.517562 1.942211 -3.040056 10 1 3.040056\n", "7 -1.820438 2.712097 -9.669464 11 1 9.669464\n", "8 0.777049 1.272183 -1.222253 12 1 1.222253\n", "9 3.143349 0.980240 -9.841516 13 1 9.841516\n", "10 2.267286 -0.238797 -4.197609 14 1 4.197609\n", "11 2.098299 3.682854 -16.966271 15 1 16.966271\n", "12 -1.746393 0.288008 -2.132837 16 2 2.132837\n", "13 0.759040 0.168302 -0.395532 17 2 0.395532\n", "14 -1.477419 2.202671 -6.034527 18 2 6.034527\n", "15 0.384431 3.804135 -13.619231 19 2 13.619231\n", "16 1.236164 -2.969863 -9.348190 20 2 9.348190\n", "17 1.478068 0.033220 -1.185788 21 2 1.185788\n", "18 2.544810 3.003174 -14.495107 22 3 14.495107\n", "19 0.606182 -0.408578 -0.465607 23 3 0.465607\n", "20 0.741795 0.783160 -0.163599 24 3 0.163599\n", "21 1.678066 2.696300 -9.085941 25 3 9.085941\n", "22 1.190213 -3.732895 -14.351114 26 3 14.351114\n", "23 -2.492132 -1.219275 -6.697355 27 3 6.697355" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfEvolution = evolution_new.dfEvolution()\n", "dfEvolution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also be able to load the hdf file in which all simulated was stored (\"random_output\" in the evaluation function above)." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "MainProcess root INFO Loading results from ./data/hdf/example-2.0.1.hdf\n", "MainProcess root INFO Analyzing trajectory results-2021-02-15-12H-13M-24S\n", "MainProcess pypet.storageservice.HDF5StorageService INFO I will use the hdf5 file `./data/hdf/example-2.0.1.hdf`.\n", "MainProcess pypet.storageservice.HDF5StorageService INFO Loading trajectory `results-2021-02-15-12H-13M-24S`.\n", "MainProcess pypet.storageservice.HDF5StorageService INFO Loading branch `config` in mode `2`.\n", "MainProcess pypet.storageservice.HDF5StorageService INFO Loading branch `derived_parameters` in mode `1`.\n", "MainProcess pypet.storageservice.HDF5StorageService INFO Loading branch `parameters` in mode `2`.\n", "MainProcess pypet.storageservice.HDF5StorageService INFO Loading branch `results` in mode `1`.\n" ] } ], "source": [ "evolution_new.loadResults()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can load the output from the hdf file by passing the argument `outputs=True` to the `dfEvolution()` method:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>x</th>\n", " <th>y</th>\n", " <th>score</th>\n", " <th>id</th>\n", " <th>gen</th>\n", " <th>random_output</th>\n", " <th>f0</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>1.767126</td>\n", " <td>0.547244</td>\n", " <td>-2.422212</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>2.422212</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1.908967</td>\n", " <td>-0.899728</td>\n", " <td>-3.453668</td>\n", " <td>7</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>3.453668</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>2.047736</td>\n", " <td>1.437642</td>\n", " <td>-5.260036</td>\n", " <td>9</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>5.260036</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>-1.521826</td>\n", " <td>2.259241</td>\n", " <td>-6.420126</td>\n", " <td>8</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>6.420126</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.898959</td>\n", " <td>2.578525</td>\n", " <td>-6.456920</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>6.456920</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>2.622927</td>\n", " <td>-1.558091</td>\n", " <td>-8.307394</td>\n", " <td>3</td>\n", " <td>0</td>\n", " <td>1.0</td>\n", " <td>8.307394</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>0.517562</td>\n", " <td>1.942211</td>\n", " <td>-3.040056</td>\n", " <td>10</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>3.040056</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-1.820438</td>\n", " <td>2.712097</td>\n", " <td>-9.669464</td>\n", " <td>11</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>9.669464</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>0.777049</td>\n", " <td>1.272183</td>\n", " <td>-1.222253</td>\n", " <td>12</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>1.222253</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>3.143349</td>\n", " <td>0.980240</td>\n", " <td>-9.841516</td>\n", " <td>13</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>9.841516</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>2.267286</td>\n", " <td>-0.238797</td>\n", " <td>-4.197609</td>\n", " <td>14</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>4.197609</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>2.098299</td>\n", " <td>3.682854</td>\n", " <td>-16.966271</td>\n", " <td>15</td>\n", " <td>1</td>\n", " <td>51.0</td>\n", " <td>16.966271</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>-1.746393</td>\n", " <td>0.288008</td>\n", " <td>-2.132837</td>\n", " <td>16</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>2.132837</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>0.759040</td>\n", " <td>0.168302</td>\n", " <td>-0.395532</td>\n", " <td>17</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>0.395532</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>-1.477419</td>\n", " <td>2.202671</td>\n", " <td>-6.034527</td>\n", " <td>18</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>6.034527</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>0.384431</td>\n", " <td>3.804135</td>\n", " <td>-13.619231</td>\n", " <td>19</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>13.619231</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>1.236164</td>\n", " <td>-2.969863</td>\n", " <td>-9.348190</td>\n", " <td>20</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>9.348190</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>1.478068</td>\n", " <td>0.033220</td>\n", " <td>-1.185788</td>\n", " <td>21</td>\n", " <td>2</td>\n", " <td>36.0</td>\n", " <td>1.185788</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>2.544810</td>\n", " <td>3.003174</td>\n", " <td>-14.495107</td>\n", " <td>22</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>14.495107</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>0.606182</td>\n", " <td>-0.408578</td>\n", " <td>-0.465607</td>\n", " <td>23</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>0.465607</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>0.741795</td>\n", " <td>0.783160</td>\n", " <td>-0.163599</td>\n", " <td>24</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>0.163599</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>1.678066</td>\n", " <td>2.696300</td>\n", " <td>-9.085941</td>\n", " <td>25</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>9.085941</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>1.190213</td>\n", " <td>-3.732895</td>\n", " <td>-14.351114</td>\n", " <td>26</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>14.351114</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>-2.492132</td>\n", " <td>-1.219275</td>\n", " <td>-6.697355</td>\n", " <td>27</td>\n", " <td>3</td>\n", " <td>23.0</td>\n", " <td>6.697355</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " x y score id gen random_output f0\n", "0 1.767126 0.547244 -2.422212 1 0 1.0 2.422212\n", "1 1.908967 -0.899728 -3.453668 7 0 1.0 3.453668\n", "2 2.047736 1.437642 -5.260036 9 0 1.0 5.260036\n", "3 -1.521826 2.259241 -6.420126 8 0 1.0 6.420126\n", "4 -0.898959 2.578525 -6.456920 0 0 1.0 6.456920\n", "5 2.622927 -1.558091 -8.307394 3 0 1.0 8.307394\n", "6 0.517562 1.942211 -3.040056 10 1 51.0 3.040056\n", "7 -1.820438 2.712097 -9.669464 11 1 51.0 9.669464\n", "8 0.777049 1.272183 -1.222253 12 1 51.0 1.222253\n", "9 3.143349 0.980240 -9.841516 13 1 51.0 9.841516\n", "10 2.267286 -0.238797 -4.197609 14 1 51.0 4.197609\n", "11 2.098299 3.682854 -16.966271 15 1 51.0 16.966271\n", "12 -1.746393 0.288008 -2.132837 16 2 36.0 2.132837\n", "13 0.759040 0.168302 -0.395532 17 2 36.0 0.395532\n", "14 -1.477419 2.202671 -6.034527 18 2 36.0 6.034527\n", "15 0.384431 3.804135 -13.619231 19 2 36.0 13.619231\n", "16 1.236164 -2.969863 -9.348190 20 2 36.0 9.348190\n", "17 1.478068 0.033220 -1.185788 21 2 36.0 1.185788\n", "18 2.544810 3.003174 -14.495107 22 3 23.0 14.495107\n", "19 0.606182 -0.408578 -0.465607 23 3 23.0 0.465607\n", "20 0.741795 0.783160 -0.163599 24 3 23.0 0.163599\n", "21 1.678066 2.696300 -9.085941 25 3 23.0 9.085941\n", "22 1.190213 -3.732895 -14.351114 26 3 23.0 14.351114\n", "23 -2.492132 -1.219275 -6.697355 27 3 23.0 6.697355" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "evolution_new.dfEvolution(outputs=True)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> Simulation parameters\n", "HDF file storage: ./data/hdf/example-2.0.1.hdf\n", "Trajectory Name: results-2021-02-15-12H-13M-24S\n", "Duration of evaluating initial population 0:00:01.093011\n", "Duration of evolution 0:00:08.117928\n", "Eval function: <function optimize_me at 0x7fd124ee4840>\n", "Parameter space: {'x': [-5.0, 5.0], 'y': [-5.0, 5.0]}\n", "> Evolution parameters\n", "Number of generations: 4\n", "Initial population size: 10\n", "Population size: 6\n", "> Evolutionary operators\n", "Mating operator: <function cxBlend at 0x7fd122dcdb70>\n", "Mating paramter: {'alpha': 0.5}\n", "Selection operator: <function selBest_multiObj at 0x7fd122dfab70>\n", "Selection paramter: {}\n", "Parent selection operator: <function selRank at 0x7fd122dfaae8>\n", "Comments: no comments\n", "--- Info summary ---\n", "Valid: 6\n", "Mean score (weighted fitness): -0.93\n", "Parameter distribution (Generation 3):\n", "x: \t mean: 0.4360,\t std: 1.0159\n", "y: \t mean: 0.3560,\t std: 0.5401\n", "--------------------\n", "Best 5 individuals:\n", "Printing 5 individuals\n", "Individual 0\n", "\tFitness values: 0.16\n", "\tScore: -0.16\n", "\tWeighted fitness: -0.16\n", "\tStats mean 0.16 std 0.00 min 0.16 max 0.16\n", "\tmodel.params[\"x\"] = 0.74\n", "\tmodel.params[\"y\"] = 0.78\n", "Individual 1\n", "\tFitness values: 0.4\n", "\tScore: -0.4\n", "\tWeighted fitness: -0.4\n", "\tStats mean 0.40 std 0.00 min 0.40 max 0.40\n", "\tmodel.params[\"x\"] = 0.76\n", "\tmodel.params[\"y\"] = 0.17\n", "Individual 2\n", "\tFitness values: 0.47\n", "\tScore: -0.47\n", "\tWeighted fitness: -0.47\n", "\tStats mean 0.47 std 0.00 min 0.47 max 0.47\n", "\tmodel.params[\"x\"] = 0.61\n", "\tmodel.params[\"y\"] = -0.41\n", "Individual 3\n", "\tFitness values: 1.19\n", "\tScore: -1.19\n", "\tWeighted fitness: -1.19\n", "\tStats mean 1.19 std 0.00 min 1.19 max 1.19\n", "\tmodel.params[\"x\"] = 1.48\n", "\tmodel.params[\"y\"] = 0.03\n", "Individual 4\n", "\tFitness values: 1.22\n", "\tScore: -1.22\n", "\tWeighted fitness: -1.22\n", "\tStats mean 1.22 std 0.00 min 1.22 max 1.22\n", "\tmodel.params[\"x\"] = 0.78\n", "\tmodel.params[\"y\"] = 1.27\n", "--------------------\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/caglar/anaconda/lib/python3.7/site-packages/neurolib/optimize/evolution/evolutionaryUtils.py:212: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " plt.tight_layout()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 252x216 with 3 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "MainProcess root INFO Saving plot to ./data/figures/results-2021-02-15-12H-13M-24S_hist_3.png\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "There are 6 valid individuals\n", "Mean score across population: -0.93\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 288x144 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "<Figure size 432x288 with 0 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 360x360 with 6 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVwAAAFcCAYAAACEFgYsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAu9UlEQVR4nO3dd3zcV53v/9dnpJE0smQ1y7IsWe6J7ThdcRqhJQQv5EEWdiGwS/iF5mUpG35hSYBsgV24u1zuBfbepZmyGxZYeknvhDRSFJe4J+62LNlyUbHVZz73jzO2ZUeOFUf6fiXr/Xw85uHRzFdzzoy+fuvofE8xd0dEREZeIu4KiIiMFwpcEZGIKHBFRCKiwBURiYgCV0QkImMqcBcvXuyAbuP7Fjudh+P+dsrGVODu3bs37iqI6DyUUzamAldEZCxT4IqIRESBKyISEQWuiEhEFLgiIhFR4J4mqmvrMLMjt+raurirJCLHyY27AjI8mht3MP2WO498ve3L18RYGxEZjFq4IiIRUeCKiEQk9sA1sxwzW25md578aBGRsSv2wAVuBNbFXQkRkZEWa+CaWS3wVuB7cdZDRCQKcbdwvw7cDGRiroeIyIiLLXDN7Bpgj7s/d5LjlphZg5k1tLS0RFQ7kWPpPJThEGcL93LgbWa2Ffgp8EYz+9HxB7n7Unevd/f6ysrKqOsoAug8lOERW+C6+2fdvdbdZwDvBh529/fGVR8RkZEWdx+uiMi4MSqm9rr7I8AjMVdDRGREqYUrIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohEJLbANbNpZvZ7M1trZmvM7Ma46iIiEoU4d+3tBz7l7svMrBh4zswecPe1MdZJRGTExNbCdfcmd1+Wvd8BrANq4qqPiMhIGxV9uGY2AzgfeHqQ55aYWYOZNbS0tEReNxHQeSjDI/bANbMi4FfAJ929/fjn3X2pu9e7e31lZWX0FRRB56EMj1gD18yShLD9sbv/Os66iIiMtDhHKRjwfWCdu381rnqIiEQlzlEKlwPXA6vMbEX2sc+5+93xVUlETmRdUxv3rt5NY2sXNaUpFi+sYn51SdzVGlNiC1x3fxywuMoXkaFb19TG0ke3UJJKUl1SQFtXH0sf3cKS185U6L4CsV80E5HR797VuylJJSlJJUmYHbl/7+rdcVdtTFHgishJNbZ2UVxw7B/ExQW5NLZ2xVSjsUmBKyInVVOaoqO7/5jHOrr7qSlNxVSjsUmBKyIntXhhFW1dfbR19ZFxP3J/8cKquKs2pihwReSk5leXsOS1MylJJWlq66YkldQFs1MQ57AwERlD5leXKGBfJbVwRUQiosAVEYmIuhRE5BU51RlnmqmmwBWRV2AoM84GC1ZAM9VQ4IrIIE7UGh044ww48u+9q3czv7rkhIFcmEy87PeNF+rDFZFjHA7Ntq6+Y0JzXVPbSWecnWgK8PIdbZqphgJXRI7zcusmnGzG2YkC2XHNVEOBKyLHeblW7MlmnJ0okM+fVqqZaihwReQ4L9eKPdmMsxMF8vWXTtdMNXTRTESOs3hhFUsf3QKElm1Hdz9tXX1cd1Et8PIzzg4H8sALbtddVHvk+PEWsMdT4IrIMU4WmkP5/vEerCeiwBWRl1Bojgz14YqIRCTubdIXm9kGM9toZp+Jsy4iIiMtzm3Sc4BvAH8CLADeY2YL4qqPiMhIO2ngDhaCZvb6YSh7EbDR3Te7ey/wU+DaYXhdEZFRaSgt3J+b2S0WpMzs/wL/Mgxl1wA7Bny9M/vYMcxsiZk1mFlDS0vLMBQr8srpPJThMJTAvRiYBjwJPAvsAi4fyUoN5O5L3b3e3esrKyujKlbkGDoPZTgMJXD7gC4gBRQAW9w9MwxlNxKC/LDa7GMiIqeloQTus4TAvQi4gnBx6xfDUPazwFwzm2lmecC7gduH4XVFREaloUx8+KC7N2TvNwHXmtn1r7Zgd+83s48D9wE5wA/cfc2rfV0RkdHqpIE7IGwHPvZfw1G4u98N3D0cryUiMtppppmISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhKRoez4ICLyEuua2rh39W4aW7uoKU2xeGEV86tL4q7WqKYWroi8Yuua2lj66BbauvqoLimgrauPpY9uYV1TW9xVG9UUuCLyit27ejclqSQlqSQJsyP37129O+6qjWqxBK6ZfcXM1pvZ82b2GzMrjaMeInJqGlu7KC44tkeyuCCXxtaumGo0NsTVwn0AWOju5wAvAJ+NqR4icgpqSlN0dPcf81hHdz81pamYajQ2xBK47n6/ux/+aT0F1MZRDxE5NYsXVtHW1UdbVx8Z9yP3Fy+sirtqo9po6MP9AHDPiZ40syVm1mBmDS0tLRFWS+QonYfHml9dwpLXzqQklaSprZuSVJIlr52pUQonMWLDwszsQWDKIE/d6u6/yx5zK9AP/PhEr+PuS4GlAPX19T4CVRU5KZ2HLzW/ukQB+wqNWOC6+1Uv97yZ3QBcA1zp7jqBReS0F8vEBzNbDNwMvM7dO+Oog4hI1OLqw/13oBh4wMxWmNm3Y6qHiEhkYmnhuvucOMoVEYnTaBilICIyLihwRUQiosAVEYmIAncEVNfWYWZHbtW1dXFXaVTWSWS80Xq4I6C5cQfTb7nzyNfbvnxNjLUJRmOdRMYbtXBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwBURiUisgWtmnzIzN7NJcdZDRCQKsQWumU0Drga2x1UHEZEoxdnC/RpwM+Ax1kFEJDKxBK6ZXQs0uvvKOMoXEYnDiG2xY2YPAlMGeepW4HOE7oShvM4SYAlAXZ324ZJ46DyU4TBigevuVw32uJmdDcwEVpoZQC2wzMwWuXvzIK+zFFgKUF9fr+4HiYXOQxkOkW8i6e6rgMmHvzazrUC9u++Nui4iIlHSOFwRkYjEvk26u8+Iuw4iIlFQC1dEJCIKXBGRiChwRUQiosAVEYmIAldEJCIKXBGRiChwRUQiosAVEYmIAldEJCLmPnbW4TCzDmBDjFWYBMS55kPc5Y+GOhS4+8IYy9d5qPJP+RyMfWrvK7TB3evjKtzMGsZz+aOhDmbWEFfZA+g8HOfln+r3qktBRCQiClwRkYiMtcBdqvJjF3cd4i4f4q+Dyh+j5Y+pi2YiImPZWGvhioiMWQpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCIypgJ38eLFDug2vm+x03k47m+nbEwF7t69cW9YK6LzUE7dmApcEZGxTIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEYk9cM0sx8yWm9mdcddFRGQkxR64wI3AurgrISIy0mINXDOrBd4KfC/OeoiIRCHuFu7XgZuBTMz1EBEZcbEFrpldA+xx9+dOctwSM2sws4aWlpaIaidyLJ2HMhzibOFeDrzNzLYCPwXeaGY/Ov4gd1/q7vXuXl9ZWRl1HUUAnYcyPGILXHf/rLvXuvsM4N3Aw+7+3rjqIyIy0uLuwxURGTdy464AgLs/AjwSczVEREaUWrgiIhFR4IqIRESBKyISEQWuiEhEFLgiIhFR4IqIRESBKyISEQWuiEhEFLgiIhFR4IqIRESBKyISEQWuiEhEFLgiIhFR4IqIRESBKyISEQWuiEhEFLgiIhFR4IqIRESBKyISEQWuiEhEYgtcM5tmZr83s7VmtsbMboyrLiIiUYhz195+4FPuvszMioHnzOwBd18bY51EREZMbIHr7k1AU/Z+h5mtA2oABe4QeCYNvV3Q1wPpvuwtDZ4BdzDAEpDIgUQu5CYhNx/yCiAniZnF/RZExp04W7hHmNkM4Hzg6UGeWwIsAairq4u2YqOIu4dw7e6A7kPQ33P0yUQO5CQhJxcSCULaEsI3k4a+7vB9R47PxfMLIVUM+RMUvkOg81CGg7l7vBUwKwL+AHzJ3X/9csfW19d7Q0NDNBUbJdwz0NkOhw5Af294MK8Q8gshLwXJfCyRE47NZEJL1x3MICf36HPuIaR7u6GnE3oOhUBO5MKEUphQeuTYUS723w7j8TyUY5zyORhrC9fMksCvgB+fLGzHG3eHrnZo3wuZ/tAdUFIFqWIskYP39UD7XrzjAN7ZHkL0cCAPfJ2c3BDOhROxojIomYRNKA1B3n0IOtugYy8c3I8XV8CEMrV4RUZIbIFr4X/194F17v7VuOoxGnl/L7Q2hz7aZAGUTgmh6RnY30xm7w7o2B8OzsmFwolQVoUlC0LAOmBgmXQI5u5D0Lob37szvP6EUqxyGlRMxVLFeF93CPb2FujqwMuqsdy8+D4AkdNUnC3cy4HrgVVmtiL72Ofc/e74qhQ/7+oIYQshaFMTw/29O/HGF0N/bH4hNnVu6Idt2wf7mvAdG0NLt+9oK9eTeaFlW1oJFVOhrBLrOojv24VvXQWNL0LtGVBRA+U1oZ+3dTe0bMPLa7D8whg+AZHTV5yjFB5nFPTHjSZ+6AC07Qmt2rKpWG4S7z6Eb14Jh1pDX+uMs6CjjcyLK2BvY/jGgkIonRxuh7vkjdCP230Ib94G29aFMibXYWdcEL5n10Z8y/Owbxc261wsNRFPFsD+Rti3E6+owfInRP9BiJymRsUoBQE/eADa90BBEZRVY5bAW/fgm1aAGTbzXBzDGx6E1haYUAJn1GNdnfiuLbDyKejseOkLTyyDmtnYrPPxZC5sX4c//luYXIed/0asqw3fsQ5f+wScsQhLFeEV02DfDti/C6+cru4FkWGiwB0FvLN9QNhOxczw/U0hbAuLYfYF+JbV+Jo/QqoIzns9bN8ID/8K7+uFieUwfV4YtZDOYDieSEBOIoTwtvX4ugYoLMYuvhqfWAprn8If+gl2yVuweZfiLzyLb3ga5l+G5afw8lrYuw0O7MInTdeFNJFhoMCNmfd0hj7bvFS2ZWt4x3588wooKoW59fD8o/jmVdi0M6GiBr/vJ9B1EObVY6VVZNYug4fuhJ6u8JoDCygpx869FLt4Ab5pJf77X0H1DOxN78ZXPUrmidtJXHoNdubF+Po/4huXwfxLQ3dGSRUc2BWGpBWVx/DpiJxeFLgx8r7u0F+am4TymtCN0NsdQi+/EJtbj29oCGF7xoWQSOK/XQoV1dgb/pzMvT/HN/4CikuxRW+AurlhUoMDuTlYVwe88Dz+5P34Y/dgr3srLH4vPPxL/Dffxv78Y/jKR8g8fQ+JK9+DzTgH37QMmjfD1DlhBENnYRgyVliKJbTWkcirocCNifd2hbC1BJTXhrG17mH0QKYfm3NxGH2w7mls+gIoKsd//S2Ydga28DIy3/tXSOSQeM/HSReU0HvHL+n/yU+gu/tIGTZpMsnXvJHkjV+GZx/CH7kDtr5A4l1L8Du+j9/+fezPPor/4RdkGu4n8YbroLQKb9oEldOwZD4UT4K928N43aKyGD8xkbFPTZaIeSaNt7eEELMETJqG5SbDk3t3QlsLVhv6YzPLHgohN28Rfs8PQ8v24jeHsC2rJHHTV+h+/HG6PvcJ0htWk3zztRR86h9J/d2/UvCxT5Mz/2x67/wlh258P+mJU0gsuRV2bCLzm//ErrkB9u2Ghoexc18L+5vxHRuw2jMhk8b3bAPA8lJh1ERnK3HPShQZ69TCHQHufnQdg3R/uPX3Ql9Xtp/VwzoGJVVHp972duM71oWAnTwdf3E5HGojccU78GcegK5O7B0fI/OD/wn5BSQ+8o90feULpFc2kP++vyLvuhuwvDz69+wh3dZK7oWXkPen7yazp4mur36R7q99ifwlnyT53hvJ3Pa/Yf0q7Lwr8OWPYuddASWT8HXPhH7i0smwZztePTvUb0Lp0YkYGpsrcsrUwj1F7o739eCdbXjbHnx/I96yFW/eCE0vQPNG2LMlDK9qbYKD+0LwTiiFyhlY2dQB6xxkwlhbd2zmOaGFuaEBJk+D4jJ85ePYwktg6wZo3ELiur+m957fkV7+DAU3/T351y+ha/kytr39Wja/5jK2vfUtbKq/kMYPf4i+A+0UfunfyH3tVfQs/TqZ5ATs/MvJ3PszWHAx5ObCU/eFPuKO/bB7OzZ5evgFcWB3eLMFxaE13tkW3wcuchpQ4L4CnsmEgN3fGAK1ZWto+R1qDQGVyA1Du4rKYWJlmClWXguVM6B6LjZ5JlYyOfSNDnzNLc9Dxz5s+llYwQR861ro6SQxbxG+5hlI92P1byTzyB1QMxOfPo/en99G7uvfTN6b30bHXXex833Xk2lvZ9Itn6H6a/9G+ZK/omvlCra/88849PDvSX368ySmzaDrf30Be8tfQiaDP3oXds7l+PoGKKmE/EIym1bAxEmQl8JbtgOEi2WpYujuwNP9cXz0IqcFBe4QeH8v3toMuzdm/7TuDgFUOuXYMK2oxUqnYBMrsaJyrLAEK5iAJfMxO/aj9kwmTGxY92SY6VVzBjapNrR2X1wOZZOhsjaEYVUdZDKwYxOJS6+i//47oKeH/PctoXfbVpo/czOpC+uZfsddlH/wQxS/9a1MuulTzLj7XvLPPJNdn/wbulatpuCmv8NbdtP70L3YZVfjT94Ps84Oq4uteBSbdTY0bYGDraGV27EfP5Rt1U4oC8d1tkb++YucLtSH+zI8kw4raR1qBSyEbGEJ5KWOTATwdH8Ips72MKb28ILgmexC4BDWqDULr+EeWsM9h8IxyXxs9gVY+ZTwejtegIMHSFzyVjjYCs3bsddei69dBoCdczH9X/gMiTMWkDNtBi03fxoSCaq//m8kCo/tX82dNIma7/2A7e96J02f+BjTf3cHua+/mt6f3Ubyq9+FJ+7D//ggduYF+IrHsRs+Cxsa8Beew859Hex6EW/ahM25AEvm4wVFcPAAPqFsrCzlKDKqqIV7At7bFboMDrVCYSlUzcLKqsOCLpk0vmc7mfVP4csfwDc8HS547W2Ero6w80IiEVbyyskGUzp7Ac0zkJ+CyjpszoXYOW84Grbp/jCbrGQS1MzBN4fNL2z2QnzjGiirhFQR6RfWknvRZfTv20f7XXdS8s53kTt58qDvI6ekhKnf+CaZri6aPnkj+Td8FICen92GXf5m/In7YM55YdGbFY9hs87Gt64JEyuqZsKBZvxga3ix4kmh/h17R+xzFzmdqYU7CO8+CPt3hcCcVBeGRpFt8TZvwZs3h/AsKIKqmdjEirBEYm7eq5oC66ufODIywczIbF0LxaVQUY1vWY/Nmk967SrIZMg950IO3nsP9PVR8q7rsvXLsOvHP2XP7XeQ6e6h5KILqXnfe0nNmUPVl/4HzTf9/+y77YeU/OWH6PmPb5B72RdI5OXjD/wKzlqEP/cI9hc3wda1ZFb+AbvkLdCyHd++Nsw+S+bjhSVwqBUvLMGSBcPxcYuMGwrc44QJCbsgmQ8VtUdHEnR34hufCy3Y0slY9eywS4IZ3r4f37IGDuwmc7A1dCu4hxlkqSKsqBRKK7HyaigefIHvzKaV+IvLsdnnYFV1eDoNW9dj8y6AjlY40ILNuJa+dasgkSBn3ll0fP3/kjdrNvlnnEGmt5dVH/oIe++5j8K5c0iWlbH9m99hx9LvM/1vPsaMm26kdPlyWv/zP8j/l38hZ/aZ9Hzn66Ru+BB+139h51wMyTz8D7+F86+AVY9hzdtg2rxwUa9lO0yeHi4Gdh8M6+tOqtMaCyKvgAJ3AM9k4EBTaNkODNueTnz9HyGTweZeiJVWhcf37ya96jFoCQt7U1gMRWVYUQlgeH8fdB3EWxoh3RfWOEgVhcW/J9dixWXQ14dvXY3vfBGqZ4W+U4Bdm6G3G5t5Fr7tRQCsbi7phx4mUTeTTE8vXc8+Q/mHlwDw4ue/yN577mPuP3+eaX/1IcyM7qYmNn7+i2z5ylc58NgTLPzuN+l58QX2/MM/MPV/fpnMN/+VnscfJ2/2ArjjR9g73g9P3onNuxAvrSSz4hHs6uuhuALfuQHKpoRW7sTKcPGwsy0McxORIVHgDtTZFi54VUw7Zi8w37QCMmls/qVYqhiAzNa1eMMDUJDCzn4NNu1MrLB40Jd1d+g4EHZc2LMDb94alkk8fEBOLjb/Ymz+oqPlbtsQLrRNPxMe+m14rHYm6fWrSb7mjRz6wyOQTlP0pqtpfeoZdn73+0xb8kHqPvLhI+UWVFez8DvfoOKqN7L+pptpuObtnPuf36Plk5+g+YtfovpjH6b/tm+Ruf7D5OzYhC//I9TOgUd/h73jr/Gn7oC1T2Fn1uNrHsN3bgjjhFMTj2zN49ktf0Tk5BS4A3W1h1EDA2dTte+DQ63YjLOPhK23tuDPPQCTp5G45C1Y3sv3ZZoZTCzHJpbDrHOOBDCH2sKOuxVTXrLmrDduDq3g/BSZnZth8lTYvx862smZdxatDz5KTkUF+WedxZo/fSd5VVXMvvWzR74/k07jmQw5ySTV7/wzCmfPYsV172Xl9e/nnG/9H5o/soR99zxE+aLX0POzH1L4/g/Dw78k8e6/DuvrrnoyXEDbtBKbfS5MngG7t+BTZoZFbSZWhunJh1qhuGK4fgIipzWNUsg6sg153rFDq7xjX2hpVkw9+ti2dWCJIYXtYMwMm1iOVc/EquoGX+B7z06sKmzH7U3bserppDdtACAxex6dzzxN4aWXcXD1Wlr/+BTTP/FRcgpTpHt7eeKWW/nhzDP5Xnk1P7vwUtZ89wdMPP88zv/lf9O3/wDrv/AlKm/9e7qefZbeuvmQm0vvqlVQM5PMQ7+F867A1zwNU+dCIgff0IBNnR3uN28J7yEvBfkTwgU0rbEgMiQK3GN4GM41ULo/tEIHTlzo7w0XxJIjsxOC92Y3fiydFMJs326onEpmx1YAMvkp0nv2UHD++ey5624sJ4fqd74Dd+fBGz7M6m9+h2lvupILP3cz+WVlPH7TzTz8oY9QfM7ZzPvaV2hvWMbBQ92kFi1i/w9vI/mn76b/yT/ARVdCSxM2cRJg8MJyrG4evmND+Lq8Oixyk0mHihZODDsK93aNyOcgcrqJNXDNbLGZbTCzjWb2mZjrEoK1v+/Yx1PFIXS7jm5fY1XTobcbX//syFQmna1DbhJ6uqG/DysuIbN3D1ZSSv+uJgDy586l/bllFC08i2R5OS3LlrP1jrtY9I9/x5Xf/w71n72Zax+4iws/+2k2/vxXbLn9Lqrefi0Tzz+Pxv+4jbIPfoh0Swv9ldMA6N/fCgWF+ItrYNocfMs6rGZOeP/7mrDSySFgD88+O7zfmQJXZEhiC1wzywG+AfwJsAB4j5ktiKs+QFgJq/tgGK1wWPkUyMnFt689+njNHGzamfiaP5J+8g58/+6T/lnt6X583y4yGxpIP3E76Xt+QPp33yL9wI/IvLDs2DUK8lKAQdehsOIYhJZ3VxekJpBuD4GXU1ZOT/NuCmprAWhZvgKAue9515GXMjMuuOVvyS8rY8f9D2BmVFz5Bg6uXUf+wrMB6G9pwSoq8Z3boWYG7GnEKmvC4jUlk0L9D7WGmXZwZGcJS+SEX1LpY39JicjgTnrRzMw+AfzI3Q8Mc9mLgI3uvjlbzk+Ba4G1w1zO0E0oCy3Zjr1QEmZuWW4e1J2Fb1mJb1oOs87BcpKw6M1HljTM7NoUtiMvrwqbOybzwj43fT1hWNjBA2E788PhWVQWZpflFeCte/HnH8V3vkDisrdhBYVYTk7oTtjbhOWnwBJ450HIz4eebiwvdGVkurtJpFKkDx0EIDUphOOB9Rsoqjna59y64QV629pIVYXhbH37D5BIFeB92aBMJkMrNicH+jOQm52GHD6B8I/7gMcG/nLROFyRoRrKKIUq4FkzWwb8ALjPh+cqSQ2wY8DXO4GLjz/IzJYASwDq6uqGodgTs7wUXlgKhw7gyXyssCQ8PqkmjKPdvg5f/RjUngnl1STmXYTPOhvf+SK+ext+YA80bgrTXyG0/lITwgSJOedhFdVhEfGCY7ce98aNZJ65l8wTvyPx+ndiObnY1Bn41nWQMKiYDM07SEyuxg/sI29yJQA969cx8dyzaf7Fr+nv6GDam66keHod9//lDZzxF9dRMnMGbZu38MKPf0rBpEmcteQDdG3fQdPPf8mkq67k4N13AZBfWUF/6wESM2bBI7+Ey9+M794G5VXQHqbx2oSSsP4DQPZCoXsmdDGMg2FhUZ6Hcvo6aeC6+9+Z2d8DVwPvB/7dzH4OfN/dN410Bd19KbAUoL6+fuQvh5dUhotirdmLQxPCzDCrmgETSsIkhc0rYccGvGIqVlKJTZ9PYtbZh+sbWrJmYIkhzcSymjkkFi0m88c78eW/x+rfBLMWwtpnYcdGbNYCfE0DifdcFY7f20xubS0dv/0t1bd8lsbbfsSGWz7Hgn//N9523508ftPNbPzFr+htbSO3sJAZ1/wJi77wD6Sbmlnxwb/CEglq3/NO9n76UxRe8Vr8wduhcAK51of39WBzz8If/G/s8mvw7eshJwmTasLkh0Ti6GSHbNcC2anPp7PIz0M5LQ1pHK67u5k1A81AP1AG/NLMHnD3m0+x7EZg2oCva7OPxcosgZfXhEXD21ug+xCeXcPWisrgrNeEaa0tO8K41ObNAHh+YegDTuaHP80tAWHD8tDiPbJyWE5YDzdVBMUVWE74EVjNHOzMi/ANz+LVM7E55+D5KTLL/4Cddxn+zMMkvAebPIW+X/+EshveT8sX/5ni9euY9ZlPs/lfv0LX9p3MuPHjvOm270FODr1t7eQkjPaG59j6j//EnjvvJn9KFfNuuYl9t3yanJISSmdVk37kXvLf+0H84V/DuZfia58OC+zMmo8/8bswDjeThn2NYWfhbJ3pbA3vU7tAiAyJnax3wMxuBN4H7AW+B/zW3fssLPD6orvPPqWCzXKBF4ArCUH7LPAX7r7mRN9TX1/vDQ0Np1LcK+buYTZVe0sIzILi0LI7ZmnGvqNrxnYdDFfr+3qPrgoG2ZbugD7RTPpoX64lYFJNWAs3mY9n0mQe/hl0dZB40/X4sw/hT92HvfdvyXz7S5CTQ+bCN9P99S+S9/6Psvehx+l84gnK/+ZGeopL2fQ/vkzf3n1YTg7J8nI83U/f/tD1nltWStWbr6Kws53uxx4j/4wzKJ1dja1dQfLqt5JsWhd2/z3vIti4Elv8XrxxQxghcdVfwvY10L4PW3hFWCS9tytMfCgqxyZWRvIzyYq90zjK81BGpVM+B4fSwi0H3uHu2wY+6O4ZM7vmVAt2934z+zhwH5AD/ODlwjZqZgYTSsMasIcOhBlV3R2QkwyP5ReG8C2tOrK2wlB5Ogyt8v27YG8jvr8ZZp2LlU4mcdHVZB76bzIN94euheefwO//KYl3fIDMd75I4sB2cl/3Jnr/45uUX3cDiaJi9n/9a+RWV3Pm9dfRl1dAZ/Me+trbIePkJnNJehrbspG+++6it6iI0itfT37jBmxjK/lXvonE1mUwuQbOmB/C9pLF+J4t0NmBXfH2sHBNWwtWtyCEbSZ9dM2JIs0yExmqk7ZwR5M4WxaeyYTA7eqAnk6OXKnPyYXcvNDPmZMMF5CO3BJh251Ezgn7cr3rIL55BXS2h+nDldPIbFyBr3gEW3Aplpci85vvYAsuwvvB7/sFLHojvc0H6H/oHmz6LNILL+LgitV0PvMM9L90CxzLyyN/zmxS5cUkd28l0dtDzvyFJFMZEh37sQUX4DkZ7FA7dsnVeMde6DqIXfJW6O+B3VvC+r3Tzwrve18j9HaGNSei705QC1fidsrnoAL3FLhnwjY7vV0hkPr7woU2z5z4m3KSoX83LwWp4jC07PDrpfvxjcugfW8Itco6/Nn78e3rsAuvguad+ON3wBnnA7n4fb/AK6vxWefR+4ffH5mBRt1s0oXFZNKO9/djfb0kDrWTaN2DuUOqkNzZs8m1bhLdHVA5FaZNxw40QWklLKgP4ZpXgC1aDG17oHU3TJ6O1S0I/dAHGsMvnNIpR0ZxREyBK3FT4I4G7pmws4Nn+2kzh7dK7wuh3Nd9dJJAQRFMrDyyjoJn0mGcb+sebNo8qKwj8+QdsHsbtvAyaG/D//A7KKnAZp9D5okHoHkHXlSCT55Bpqef9J49eOsBvKsLEoalUtiEIhKpfBL9XSS6WrGEQe1MKCuDjv1YXj427wI80wedbVjt3LDP2a6N0N+DTZsf1sFN94V1gvt74gxbUOBK/BS4Y4X394aLcYdaQ4u4eFK48GQWNpbcvAIONEPVDJg6B557KKxlUFWHVc3EH7sD9u/GK6ZgJZOhuRHfsgE6D5640IJCmDwVKyrCezuxdC8UFsGMeWGu4aE2KC7H5i8KY21bd0NBETbrnLCHW1d7aO0ClE19yTjiiClwJW4jetFMhpHl5sHESnxCWQixjr3Qcwgvqw7dDLPPD/uj7d4agvCcK7BJU/FVj+N7dsLZF2MkYMNy2Px8eNGaaigqC33F6Qx4JlzY6u8Pfa3pPsz6IdODTZsNxROz/dFtMLECO+/1eALYsyWMHa45A6bMDC30A7vCDg/JghC2ucmXe3si8jIUuDGxnFwon4p3tkHbbmjZhpdOwQqKsLoF+IRSfNtqWPM4TJmJXfUX8OJyfOvaMMqhcjLMXhCm+nYeDNvwdB3MbmBJWDayIBVat3kFoSXb1RFmhnV1wNRZIcj7e+HArrCNe2UdNnVOuBB48AAc3B9+l0+sPDIBREROnQI3ZlZYguelQv/o/sawSePESqxiKhSXh9Zu06bQ4q2Yik3/MzjQgjdtht3bBqwsBhQXvbSAdDd098DECpixACsqw3MSWPte2N8YJmFMnYNNnh6C9lBrCNrDY48nVqpVKzJMFLijgOXm4ZV10LEvhF33Qby4AgpLSMw+H6+eje/eGoZjteyAnCRWNQ1mLoCMh4txfdmREhkPEy0SibC8YyIHN7Dug9DZDm3NWCI3bGpZMTW0XtN9IWi72sJIhPwJUDzplBZXF5ETU+COEmaJ0LebKg59u217oGMfPqE0BO/Mc/C6BdC6B29vCVv0tO4e2mvnJGHCxNCSLa4I/b2ZdOjH3bcjBDYWll8sKtP25yIjRIE7yliyAK+YFi52HdwfWr0d+0K3Q/6EsM16eXUY1ZDuD2Nie7uzrdsMYdeKnKPjfvNTeE4S8/TRscN7t4XjIRwzsRJSE4+ukSAiI0L/w0YhMwvhmj8hO4ysPYwU6NgL2Y0nPDdvwAy3BOQWEq5weegWyKShrxO62rBjJmVYmHwxsSQM/RpsPzURGREK3FEuDCObBBMnhRZtb1foAujvDbeezsFnuJmFacU5ydBVkMwPQ7uSBRptIBITBe4YYjm5ITwPb3WT5T5gCcjs6mRmsW5XJyKDUOCeBswM7PTfdUFkrFMzSEQkIgpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIxBK4ZvYVM1tvZs+b2W/MrDSOeoiIRCmuFu4DwEJ3P4ewVfpnY6qHiEhkYglcd7/f3Q9vL/sUUBtHPUREojQa+nA/ANxzoifNbImZNZhZQ0tLS4TVEjlK56EMhxELXDN70MxWD3K7dsAxtwL9wI9P9DruvtTd6929vrKycqSqK/KydB7KcBixtRTc/aqXe97MbgCuAa70sbR1sIjIKYpl8RozWwzcDLzO3TvjqIOISNTi6sP9d6AYeMDMVpjZt2Oqh4hIZGJp4br7nDjKFRGJ02gYpSAiMi4ocEVEIqLAFRGJiAJXRE6ourYOM6O6tu6Yr3PzU8f8O/CYk33v8ceNJwpcETmh5sYdTL/lTpobdxzzdbq3+5h/Bx5zsu89/rjxRIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISERiDVwz+5SZuZlNirMeIiJRiC1wzWwacDWwPa46iIhEKc4W7teAmwGPsQ4iIpGJJXDN7Fqg0d1XxlG+iEgcckfqhc3sQWDKIE/dCnyO0J0wlNdZAiwBqKsbv3shSbx0HspwGLHAdferBnvczM4GZgIrzQygFlhmZovcvXmQ11kKLAWor69X94PEQuehDIcRC9wTcfdVwOTDX5vZVqDe3fdGXRcRkShpHK6ISEQib+Eez91nxF0HEZEoqIUrIhIRBa6ISEQUuCIiEVHgiohERIErIhIRBa6ISEQUuCIiEVHgiohERIErIhIRcx8763CYWQewIcYqTALiXPMh7vJHQx0K3H1hjOXrPFT5p3wOxj619xXa4O71cRVuZg3jufzRUAcza4ir7AF0Ho7z8k/1e9WlICISEQWuiEhExlrgLlX5sYu7DnGXD/HXQeWP0fLH1EUzEZGxbKy1cEVExiwFrohIREZ14JrZ582s0cxWZG9vOcFxi81sg5ltNLPPDGP5XzGz9Wb2vJn9xsxKT3DcVjNbla3jqx62dLL3Y2b5Zvaz7PNPm9mMV1vmgNeeZma/N7O1ZrbGzG4c5JjXm1nbgJ/LPwxX+QPKeNnP1IL/k/0MnjezC4a7DgPK0nk4Ds/DETkH3X3U3oDPA397kmNygE3ALCAPWAksGKbyrwZys/e/DHz5BMdtBSYNU5knfT/AR4FvZ++/G/jZMH7m1cAF2fvFwAuDlP964M4R/tm/7GcKvAW4BzDgEuBpnYc6D0f7OTiqW7hDtAjY6O6b3b0X+Clw7XC8sLvf7+792S+fImzpPtKG8n6uBW7L3v8lcKVl95x/tdy9yd2XZe93AOuAmuF47WF2LfBDD54CSs2sOsb66Dwcf+fhKz4Hx0LgfjzbXP+BmZUN8nwNsGPA1zsZmR/MBwi/zQbjwP1m9pyZLXmV5Qzl/Rw5JvsfsQ2oeJXlvkT2T8TzgacHefpSM1tpZveY2VnDXTYn/0yj+rkfpvNw/J2Hw34Oxj6118weBKYM8tStwLeAfya88X8G/jfhhIukfHf/XfaYW4F+4McneJnXuHujmU0GHjCz9e7+6HDWM2pmVgT8Cviku7cf9/QyYLq7H8z2Z/4WmDvMVYj0M9V5ODrFfB4O++cZe+C6+1VDOc7MvgvcOchTjcC0AV/XZh8blvLN7AbgGuBKz3bcDPIajdl/95jZbwh/jp3qD2Yo7+fwMTvNLBcoAfadYnkvYWZJwkn+Y3f/9fHPDzzx3f1uM/ummU1y92FbUGQIn+mr+rkPUp7Ow2ON+/NwJM7BUd2lcFx/yNuB1YMc9iww18xmmlkeofP+9mEqfzFwM/A2d+88wTETzKz48H3CBY7B6jlUQ3k/twP/X/b+nwMPn+g/4SuV7YP7PrDO3b96gmOmHO6rM7NFhPNoOP+jDeUzvR14X/ZK8SVAm7s3DVcdjquPzsNxdh6O2Dk4Ulf4huMG/BewCng+++aqs49PBe4ecNxbCFcxNxH+BBuu8jcS+mhWZG/fPr58wlXcldnbmuEof7D3A/wT4T8cQAHwi2z9ngFmDeN7fg3hT+fnB7zvtwAfAT6SPebj2fe6knAR57Jh/rkP+pkeVwcDvpH9jFYB9ToPdR6O9nNQU3tFRCIyqrsUREROJwpcEZGIKHBFRCKiwBURiYgCV0QkIgpcEZGIKHBFRCKiwB0DzOyi7MIpBdkZMGvMbGHc9ZLxw8z+ycw+OeDrL9kga9TKy9PEhzHCzL5ImNmTAna6+7/EXCUZR7Irdv3a3S8wswTwIrDI3YdtSvd4EPviNTJk/0SY394N/E3MdZFxxt23mtk+MzsfqAKWK2xfOQXu2FEBFAFJQkv3ULzVkXHoe8ANhGUkfxBvVcYmdSmMEWZ2O2HV/ZmExVM+HnOVZJzJrhq2ivBLf667p2Ou0pijFu4YYGbvA/rc/SdmlgM8aWZvdPeH466bjB/u3mtmvwdaFbanRi1cERmS7MWyZcA73f3FuOszFmlYmIiclJktIKx7+5DC9tSphSsiEhG1cEVEIqLAFRGJiAJXRCQiClwRkYgocEVEIvL/AM5Fq2kmfj4KAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 360x360 with 6 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "evolution.info()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 5 }