瀏覽代碼

settled on 2 mat designs

Ravi Hegde 6 年之前
父節點
當前提交
474d2ae715

文件差異過大導致無法顯示
+ 169 - 100
.ipynb_checkpoints/Untitled2-checkpoint.ipynb


+ 380 - 0
.ipynb_checkpoints/normalized-checkpoint.ipynb

@@ -0,0 +1,380 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "start_time": "2018-12-17T09:55:59.512Z"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "==============================\n",
+      "Epoch #:1\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 1.0722425620030067\n",
+      "39 0.5778488122628634\n",
+      "59 0.5778488122628634\n"
+     ]
+    }
+   ],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import de2 as de\n",
+    "import multiprocessing as mp\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "def rndtop5(x):\n",
+    "    return np.round(x*2.0)/2\n",
+    "\n",
+    "def tmm_wrapper2(arg):\n",
+    "    args, kwargs = arg\n",
+    "    return mkq.vgdr_eval_wsweep(*args, **kwargs)\n",
+    "\n",
+    "def arc_par(pop, **kwargs):\n",
+    "    jobs = []\n",
+    "    pool=mp.Pool(90)\n",
+    "    num_layers = int(pop[0].size/2)\n",
+    "    for indiv in pop:\n",
+    "        jobs.append((indiv.reshape(num_layers,2), 0))\n",
+    "    arg = [(j, kwargs) for j in jobs]\n",
+    "    answ = np.array(pool.map(tmm_wrapper2, arg))\n",
+    "    pool.close()\n",
+    "    return answ\n",
+    "\n",
+    "num_layers = 22\n",
+    "norlam_min = 0.25   # this is lam/d\n",
+    "norlam_max = 2       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "\n",
+    "\n",
+    "bnds = [(0, 1)]*num_layers*2\n",
+    "its_first = 0\n",
+    "psnew = 120\n",
+    "islands = 5\n",
+    "its_second = 512\n",
+    "\n",
+    "numgens = 5\n",
+    "\n",
+    "isl = np.ones((psnew*islands, 2*num_layers))\n",
+    "for indiv in range(int(psnew*islands)):\n",
+    "    isl[indiv] = np.random.uniform(0,1, 2*num_layers)\n",
+    "#     nxhold = isl[indiv][::2]\n",
+    "#     nxhold[::2] = 1\n",
+    "#     nxhold[1::2] = 0\n",
+    "    #isl[indiv] = qn.make_qxn(num_layers, dlevels=2)\n",
+    "poplist = np.split(isl, islands)\n",
+    "\n",
+    "bids = np.zeros(islands, dtype=int)\n",
+    "bfits = np.zeros(islands)\n",
+    "bests = isl[0:islands]\n",
+    "\n",
+    "for gen in range(numgens):\n",
+    "    print(\"==============================\")\n",
+    "    print(\"Epoch #:\" + str(gen + 1))\n",
+    "    print(\"==============================\")\n",
+    "    \n",
+    "    for isln in range(islands):\n",
+    "        print(\"----------------- I-\" + str(isln + 1)+ \"---------------------\")\n",
+    "        poplist[isln], bids[isln], bfits[isln], bests[isln] = de.de_cp(\n",
+    "            fobj=arc_par, \n",
+    "            bounds=bnds, \n",
+    "            pop=poplist[isln], \n",
+    "            history=[], \n",
+    "            it_start=its_first, \n",
+    "            popsize=psnew, \n",
+    "            its=its_second, \n",
+    "            lam_low=norlam_min, \n",
+    "            lam_high=norlam_max, \n",
+    "            lam_pts=lam_pts)\n",
+    "        \n",
+    "    if its_second > 64:\n",
+    "        its_second = int(its_second/2)\n",
+    "    \n",
+    "    if gen < (numgens - 1):\n",
+    "        print(\"Round robin best migration\")\n",
+    "        stmp = np.copy(poplist[islands-1][bids[islands-1]])\n",
+    "        for isln in range(1, islands):\n",
+    "            poplist[isln][bids[isln]] = poplist[isln-1][bids[isln-1]]\n",
+    "        poplist[0][bids[0]] = stmp \n",
+    "    \n",
+    "print(bfits)\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-12T09:09:10.997450Z",
+     "start_time": "2018-12-12T09:09:08.834305Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "qx = bests[np.argmin(bfits)].reshape(num_layers, 2)\n",
+    "\n",
+    "\n",
+    "norlam_min = 0.25   # this is lam/d\n",
+    "norlam_max = 2       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "#lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)\n",
+    "lam_inv = np.linspace(1/norlam_min, 1/norlam_max, num=lam_pts, endpoint=True)\n",
+    "lams = 1.0/lam_inv\n",
+    "\n",
+    "\n",
+    "\n",
+    "Rs = np.zeros(lams.size)\n",
+    "Rs = mkq.tmm_eval_wsweep(qx, 0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "\n",
+    "vgdr = 100*np.ones(lam_pts)\n",
+    "for idx, lam in enumerate(lams):\n",
+    "    if lams[idx] <= 1:\n",
+    "        cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]\n",
+    "        #print(cuts)\n",
+    "        vgdr[idx] = np.mean(cuts)\n",
+    "#         print(vgdr)\n",
+    "\n",
+    "\n",
+    "\n",
+    "#400.0/np.amin(vgdr)\n",
+    "\n",
+    "\n",
+    "# lams\n",
+    "c, cthick = mkq.vgdr2_eval_wsweep(qx = qx, inc_ang=0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "\n",
+    "\n",
+    "# num_layers = 10\n",
+    "# # qx = np.random.uniform(0,1, (num_layers,2))\n",
+    "# # qx[:,0] = qx[:,0]/np.sum(qx[:,0])\n",
+    "\n",
+    "norlam_min = 400.0/cthick   # this is lam/d\n",
+    "norlam_max = 800.0/cthick       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "\n",
+    "lam_inv = np.linspace(1/norlam_min, 1/norlam_max, num=lam_pts, endpoint=True)\n",
+    "lams = (1.0/lam_inv)\n",
+    "lam_ac = np.linspace(400, 800,  num=lam_pts, endpoint=True)\n",
+    "lams2 = np.linspace(400, 800, endpoint=True, num = lam_pts)\n",
+    "#lams = np.flip(lams, axis=0)\n",
+    "\n",
+    "# # # for thick in [200, 400, 800]:\n",
+    "# # qx[:,1] = mkq.digitize_qx(qx[:,1], dlevels=2)\n",
+    "# d_x, n_x = mkq.make_nxdx(qx=qx)\n",
+    "\n",
+    "Rs2 = mkq.tmm_eval_wsweep(qx = qx, inc_ang=0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "# lams = cthick*lams\n",
+    "meansl = np.mean(Rs2)*np.ones_like(lams)\n",
+    "# #     #plt.plot(1.0/lams, Rs)\n",
+    "# plt.plot( Rs)\n",
+    "# #plt.plot(lams, meansl)\n",
+    "plt.ylim([0,1])\n",
+    "#plt.xlim([0.75,1.1])\n",
+    "    \n",
+    "\n",
+    "plt.plot(lams2, Rs2)\n",
+    "plt.plot(lams2, meansl)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-10T13:42:38.721768Z",
+     "start_time": "2018-12-10T13:42:37.792591Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "\n",
+    "num_layers = 50\n",
+    "\n",
+    "layers = np.arange(num_layers)\n",
+    "nlr = np.random.uniform(0,1, num_layers)\n",
+    "#nlr = mkq.make_qx(num_layers)\n",
+    "#nlr = mkq.digitize_qx(nlr, dlevels=2)\n",
+    "#plt.bar(layers, nlr)\n",
+    "#plt.ylim([0,1])\n",
+    "\n",
+    "lam_inv = np.linspace(0.2, 2, num=50, endpoint=True)\n",
+    "lams = (1.0/lam_inv)\n",
+    "lams = np.flip(lams, axis=0)\n",
+    "\n",
+    "for thick in [200, 400, 800]:\n",
+    "    d_x, n_x = mkq.make_nxdx(qx=nlr, cthick=thick, wavelen=550)\n",
+    "    Rs = mkq.tmm_eval_wsweep(qx = nlr, cthick=thick, inc_ang=0, lam_low = 0.5*thick, lam_high=5*thick, lam_pts=50)\n",
+    "    #plt.plot(1.0/lams, Rs)\n",
+    "    plt.plot(lams, Rs)\n",
+    "    plt.ylim([0,100])\n",
+    "\n",
+    "\n",
+    "vgdr = np.zeros(25)\n",
+    "for idx, lam in enumerate(lams):\n",
+    "    if idx < 25:\n",
+    "        cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]\n",
+    "        vgdr[idx] = np.mean(cuts)\n",
+    "# plt.plot(vgdr)\n",
+    "# plt.ylim([0,100])\n",
+    "\n",
+    "size =  400/lams[np.argmin(vgdr)]\n",
+    "val = np.amin(vgdr)\n",
+    "size, val"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:38:47.524293Z",
+     "start_time": "2018-12-11T14:38:46.239283Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "#\\][;/++plt.plot(Rs)\n",
+    "# for fd in zip(lams, Rs):\n",
+    "#     print(fd)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:57:18.592232Z",
+     "start_time": "2018-12-11T14:57:17.305396Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "c "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:57:29.843041Z",
+     "start_time": "2018-12-11T14:57:28.560532Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "np.mean(Rs2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:40:31.683888Z",
+     "start_time": "2018-12-11T14:40:30.373859Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "vgdr[178]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:41:59.272354Z",
+     "start_time": "2018-12-11T14:41:57.982383Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "400.0/lams[178]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.0"
+  },
+  "latex_envs": {
+   "LaTeX_envs_menu_present": true,
+   "autoclose": false,
+   "autocomplete": true,
+   "bibliofile": "biblio.bib",
+   "cite_by": "apalike",
+   "current_citInitial": 1,
+   "eqLabelWithNumbers": true,
+   "eqNumInitial": 1,
+   "hotkeys": {
+    "equation": "Ctrl-E",
+    "itemize": "Ctrl-I"
+   },
+   "labels_anchors": false,
+   "latex_user_defs": false,
+   "report_style_numbering": false,
+   "user_envs_cfg": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 50 - 0
.ipynb_checkpoints/reinforcement-checkpoint.ipynb

@@ -0,0 +1,50 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.0"
+  },
+  "latex_envs": {
+   "LaTeX_envs_menu_present": true,
+   "autoclose": false,
+   "autocomplete": true,
+   "bibliofile": "biblio.bib",
+   "cite_by": "apalike",
+   "current_citInitial": 1,
+   "eqLabelWithNumbers": true,
+   "eqNumInitial": 1,
+   "hotkeys": {
+    "equation": "Ctrl-E",
+    "itemize": "Ctrl-I"
+   },
+   "labels_anchors": false,
+   "latex_user_defs": false,
+   "report_style_numbering": false,
+   "user_envs_cfg": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 3227 - 0
.ipynb_checkpoints/ru2-checkpoint.ipynb

@@ -0,0 +1,3227 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-24T08:08:06.174626Z",
+     "start_time": "2018-11-24T07:52:46.148236Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "import warnings\n",
+    "warnings.filterwarnings(\"ignore\",category =RuntimeWarning)\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import de2 as de\n",
+    "import multiprocessing as mp\n",
+    "    \n",
+    "# def arc_0(qx, lam_min=400, lam_max=800, npoints=50):\n",
+    "#     cthick = qx[0]\n",
+    "#     q_x = qx[1:]\n",
+    "#     Rs0, Rp0 = mkq.tmm_lam_parallel(q_x, cthick, 0, n_par=12, lam_low=lam_min, lam_high=lam_max, lam_pts=npoints, n_subs=1.52)\n",
+    "#     return np.mean(Rs0)\n",
+    "    \n",
+    "# def arc_dig_0(qx, lam_min=400, lam_max=800, npoints=50):\n",
+    "#     cthick = qx[0]\n",
+    "#     q_x = mkq.digitize_qx(qx[1:], dlevels=2)\n",
+    "#     Rs0, Rp0 = mkq.tmm_lam_parallel(q_x, cthick, 0, n_par=12, lam_low=lam_min, lam_high=lam_max, lam_pts=npoints, n_subs=1.52)\n",
+    "#     return np.mean(Rs0)\n",
+    "\n",
+    "\n",
+    "def tmm_wrapper2(arg):\n",
+    "    args, kwargs = arg\n",
+    "    return mkq.tmm_eval_wsweep(*args, **kwargs)\n",
+    "\n",
+    "\n",
+    "def arc_par(pop, **kwargs):\n",
+    "    jobs = []\n",
+    "    pool=mp.Pool(60)\n",
+    "    for indiv in pop:\n",
+    "        indivi = mkq.digitize_qx(indiv[1:], dlevels=2)\n",
+    "        jobs.append((indivi, indiv[0], 0))\n",
+    "    arg = [(j, kwargs) for j in jobs]\n",
+    "    answ = np.array(pool.map(tmm_wrapper2, arg))\n",
+    "    pool.close()\n",
+    "    return np.mean(answ, axis=1)\n",
+    "\n",
+    "    \n",
+    "num_layers = 35 \n",
+    "bnds = [(0, 1)]*num_layers\n",
+    "bnds = [(300, 400)] + bnds\n",
+    "its_first = 0\n",
+    "psnew = 500\n",
+    "its_second = 500\n",
+    "\n",
+    "pop = np.ones((psnew, 1+ num_layers))\n",
+    "for indiv in range(psnew):\n",
+    "    pop[indiv,1:] = mkq.make_qx(num_layers)\n",
+    "    pop[indiv,0] = np.random.uniform(    bnds[0][0], bnds[0][1], 1 )\n",
+    "    \n",
+    "b, c, hstry = de.de_cp(fobj=arc_par, bounds=bnds, pop=pop, history=[], it_start=its_first, popsize=psnew, its=its_second, lam_low=400, lam_high=800, lam_pts=50)\n",
+    "\n",
+    "\n",
+    "#m1 = mkq.tmm_eval2(qx=pop[0][1:], cthick=pop[0][0]) \n",
+    "#m2 = mkq.tmm_eval(qx=pop[0][1:], cthick=pop[0][0]) \n",
+    "\n",
+    "#arc_par(pop, lam_low=400, lam_high=800, lam_pts=50)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-25T10:33:20.269270Z",
+     "start_time": "2018-11-25T10:32:36.651677Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "import warnings\n",
+    "warnings.filterwarnings(\"ignore\",category =RuntimeWarning)\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import de2 as de\n",
+    "import multiprocessing as mp\n",
+    "import qxnew as qn    \n",
+    "# def arc_0(qx, lam_min=400, lam_max=800, npoints=50):\n",
+    "#     cthick = qx[0]\n",
+    "#     q_x = qx[1:]\n",
+    "#     Rs0, Rp0 = mkq.tmm_lam_parallel(q_x, cthick, 0, n_par=12, lam_low=lam_min, lam_high=lam_max, lam_pts=npoints, n_subs=1.52)\n",
+    "#     return np.mean(Rs0)\n",
+    "    \n",
+    "# def arc_dig_0(qx, lam_min=400, lam_max=800, npoints=50):\n",
+    "#     cthick = qx[0]\n",
+    "#     q_x = mkq.digitize_qx(qx[1:], dlevels=2)\n",
+    "#     Rs0, Rp0 = mkq.tmm_lam_parallel(q_x, cthick, 0, n_par=12, lam_low=lam_min, lam_high=lam_max, lam_pts=npoints, n_subs=1.52)\n",
+    "#     return np.mean(Rs0)\n",
+    "\n",
+    "\n",
+    "def tmm_wrapper2(arg):\n",
+    "    args, kwargs = arg\n",
+    "    return qn.tmm_eval_wsweep(*args, **kwargs)\n",
+    "\n",
+    "\n",
+    "def arc_par(pop, **kwargs):\n",
+    "    jobs = []\n",
+    "    pool=mp.Pool(90)\n",
+    "    for indiv in pop:\n",
+    "        indiv = indiv.reshape((int(indiv.size/2), 2))\n",
+    "        indiv[:,1] = mkq.digitize_qx(indiv[:,1], dlevels=2)\n",
+    "        indiv = indiv.flatten()\n",
+    "        jobs.append((indiv, 0.5, 8 , 0))\n",
+    "    arg = [(j, kwargs) for j in jobs]\n",
+    "    answ = np.array(pool.map(tmm_wrapper2, arg))\n",
+    "    pool.close()\n",
+    "    return np.mean(answ, axis=1)\n",
+    "\n",
+    "    \n",
+    "num_layers = 30\n",
+    "d_min = 0.5\n",
+    "d_max = 8\n",
+    "\n",
+    "bnds = [(d_min, d_max), (0,1) ]*num_layers\n",
+    "#bnds = [(300, 400)] + bnds\n",
+    "its_first = 0\n",
+    "psnew = 160\n",
+    "its_second = 500\n",
+    "\n",
+    "pop = np.ones((psnew, 2*num_layers))\n",
+    "for indiv in range(psnew):\n",
+    "    pop[indiv] = qn.make_qxn(num_layers, dlevels=2)\n",
+    "    #pop[indiv][::2] = (d_max - d_min)*pop[indiv][::2] + d_min\n",
+    "    pop[indiv,0] = np.random.uniform(    bnds[0][0], bnds[0][1], 1 )\n",
+    "    \n",
+    "b, c, hstry = de.de_cp(fobj=arc_par, bounds=bnds, pop=pop, history=[], it_start=its_first, popsize=psnew, its=its_second, lam_low=400, lam_high=800, lam_pts=50)\n",
+    "\n",
+    "np.sum(b[::2]), b[::2], b[1::2], c\n",
+    "\n",
+    "#m1 = mkq.tmm_eval2(qx=pop[0][1:], cthick=pop[0][0]) \n",
+    "#m2 = mkq.tmm_eval(qx=pop[0][1:], cthick=pop[0][0]) \n",
+    "\n",
+    "#"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-27T02:07:24.693765Z",
+     "start_time": "2018-11-26T12:51:52.517421Z"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "==============================\n",
+      "Epoch #:1\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.8167181998184866\n",
+      "39 0.48071997120334786\n",
+      "59 0.48071997120334786\n",
+      "79 0.48071997120334786\n",
+      "99 0.48071997120334786\n",
+      "119 0.48071997120334786\n",
+      "139 0.48071997120334786\n",
+      "159 0.48033716287789735\n",
+      "179 0.4541261899156035\n",
+      "199 0.4393513078254801\n",
+      "219 0.39250704202540576\n",
+      "239 0.39250704202540576\n",
+      "259 0.39250704202540576\n",
+      "279 0.39250704202540576\n",
+      "299 0.39250704202540576\n",
+      "319 0.3867376372827681\n",
+      "339 0.3867376372827681\n",
+      "359 0.3867376372827681\n",
+      "379 0.3867376372827681\n",
+      "399 0.3867376372827681\n",
+      "419 0.3867376372827681\n",
+      "439 0.3867376372827681\n",
+      "459 0.3867376372827681\n",
+      "479 0.3867376372827681\n",
+      "499 0.3867376372827681\n",
+      "443.137080144755\n",
+      "----------------- I-2---------------------\n",
+      "19 1.049716616060991\n",
+      "39 0.7517604888423173\n",
+      "59 0.6378808371381645\n",
+      "79 0.6228224492083789\n",
+      "99 0.5204773824237612\n",
+      "119 0.49516804235850864\n",
+      "139 0.49516804235850864\n",
+      "159 0.4457099809754168\n",
+      "179 0.4457099809754168\n",
+      "199 0.4150970332177789\n",
+      "219 0.4150970332177789\n",
+      "239 0.3952004892986317\n",
+      "259 0.3952004892986317\n",
+      "279 0.3887834374338993\n",
+      "299 0.3887834374338993\n",
+      "319 0.37318635195684385\n",
+      "339 0.37318635195684385\n",
+      "359 0.37318635195684385\n",
+      "379 0.36453078186658805\n",
+      "399 0.36453078186658805\n",
+      "419 0.36453078186658805\n",
+      "439 0.36453078186658805\n",
+      "459 0.36453078186658805\n",
+      "479 0.36453078186658805\n",
+      "499 0.36453078186658805\n",
+      "372.13654430331917\n",
+      "----------------- I-3---------------------\n",
+      "19 0.9502115561844308\n",
+      "39 0.7017242773314575\n",
+      "59 0.631573236017077\n",
+      "79 0.5273798602278496\n",
+      "99 0.4997292034268014\n",
+      "119 0.4161192750140461\n",
+      "139 0.4161192750140461\n",
+      "159 0.3606413037137265\n",
+      "179 0.3606413037137265\n",
+      "199 0.34795134795107663\n",
+      "219 0.33468408791596344\n",
+      "239 0.3290243912434707\n",
+      "259 0.3169048707791813\n",
+      "279 0.3169048707791813\n",
+      "299 0.3169048707791813\n",
+      "319 0.3169048707791813\n",
+      "339 0.30928795109270857\n",
+      "359 0.3080624119934195\n",
+      "379 0.3080624119934195\n",
+      "399 0.3080624119934195\n",
+      "419 0.30439518063358634\n",
+      "439 0.3024562112023422\n",
+      "459 0.3024562112023422\n",
+      "479 0.3007101051043788\n",
+      "499 0.2991751133819657\n",
+      "335.6587660395145\n",
+      "----------------- I-4---------------------\n",
+      "19 1.2265001025608813\n",
+      "39 0.6340655157003288\n",
+      "59 0.6340655157003288\n",
+      "79 0.5672130373940432\n",
+      "99 0.5272151891422471\n",
+      "119 0.5272151891422471\n",
+      "139 0.4445896088909301\n",
+      "159 0.3996424672501487\n",
+      "179 0.37234245756087403\n",
+      "199 0.3430844942038751\n",
+      "219 0.3412421379908352\n",
+      "239 0.3412421379908352\n",
+      "259 0.3306686513492859\n",
+      "279 0.3246664530943078\n",
+      "299 0.3246664530943078\n",
+      "319 0.31124207544621174\n",
+      "339 0.2898331194508215\n",
+      "359 0.2898331194508215\n",
+      "379 0.2898331194508215\n",
+      "399 0.28827064644595746\n",
+      "419 0.2871143020094794\n",
+      "439 0.28314974453564806\n",
+      "459 0.28314974453564806\n",
+      "479 0.27776237744204113\n",
+      "499 0.27041741819889986\n",
+      "318.7071884492392\n",
+      "----------------- I-5---------------------\n",
+      "19 0.8913631123263097\n",
+      "39 0.5406728890123225\n",
+      "59 0.4352129584946004\n",
+      "79 0.4056888207623426\n",
+      "99 0.3451030253819953\n",
+      "119 0.3451030253819953\n",
+      "139 0.3451030253819953\n",
+      "159 0.3451030253819953\n",
+      "179 0.3451030253819953\n",
+      "199 0.3451030253819953\n",
+      "219 0.3282072141016876\n",
+      "239 0.3282072141016876\n",
+      "259 0.3006535938545217\n",
+      "279 0.3006535938545217\n",
+      "299 0.29387508376256716\n",
+      "319 0.28990672382071175\n",
+      "339 0.2889673934769664\n",
+      "359 0.2856413736536571\n",
+      "379 0.2803070886909076\n",
+      "399 0.2795593721642558\n",
+      "419 0.2743899107287385\n",
+      "439 0.2695981705324513\n",
+      "459 0.2695981705324513\n",
+      "479 0.2695981705324513\n",
+      "499 0.2669193349141427\n",
+      "294.6193811748409\n",
+      "----------------- I-6---------------------\n",
+      "19 0.820477711180467\n",
+      "39 0.482373899657023\n",
+      "59 0.482373899657023\n",
+      "79 0.43115240710784064\n",
+      "99 0.4122232437358293\n",
+      "119 0.37138110878381525\n",
+      "139 0.3260802413239101\n",
+      "159 0.3260802413239101\n",
+      "179 0.3260802413239101\n",
+      "199 0.30467150621572103\n",
+      "219 0.30467150621572103\n",
+      "239 0.30467150621572103\n",
+      "259 0.30467150621572103\n",
+      "279 0.30467150621572103\n",
+      "299 0.30467150621572103\n",
+      "319 0.30467150621572103\n",
+      "339 0.30467150621572103\n",
+      "359 0.30373685069948936\n",
+      "379 0.29814987959916306\n",
+      "399 0.29814987959916306\n",
+      "419 0.29814987959916306\n",
+      "439 0.29814987959916306\n",
+      "459 0.29814987959916306\n",
+      "479 0.29814987959916306\n",
+      "499 0.29814987959916306\n",
+      "270.0464105330537\n",
+      "----------------- I-7---------------------\n",
+      "19 0.5320086656983406\n",
+      "39 0.36899685602063315\n",
+      "59 0.3414603339656571\n",
+      "79 0.33553820019496117\n",
+      "99 0.3252277199279567\n",
+      "119 0.31761680445022633\n",
+      "139 0.31761680445022633\n",
+      "159 0.3155909749003992\n",
+      "179 0.30918921840881586\n",
+      "199 0.30918921840881586\n",
+      "219 0.30918921840881586\n",
+      "239 0.30918921840881586\n",
+      "259 0.30146258061552145\n",
+      "279 0.30146258061552145\n",
+      "299 0.30146258061552145\n",
+      "319 0.30146258061552145\n",
+      "339 0.30146258061552145\n",
+      "359 0.30146258061552145\n",
+      "379 0.30146258061552145\n",
+      "399 0.30146258061552145\n",
+      "419 0.30146258061552145\n",
+      "439 0.30146258061552145\n",
+      "459 0.30146258061552145\n",
+      "479 0.29362451823900304\n",
+      "499 0.29362451823900304\n",
+      "269.71309047794807\n",
+      "----------------- I-8---------------------\n",
+      "19 1.5221991021315477\n",
+      "39 1.3907380610676836\n",
+      "59 1.2172221645716785\n",
+      "79 0.7185820862519617\n",
+      "99 0.6553326158940351\n",
+      "119 0.5047965643769318\n",
+      "139 0.4502269525623392\n",
+      "159 0.42275070073040166\n",
+      "179 0.4124530615879656\n",
+      "199 0.3945855023653683\n",
+      "219 0.37633993361391704\n",
+      "239 0.3403969980794088\n",
+      "259 0.33047990061367793\n",
+      "279 0.3042886631653829\n",
+      "299 0.3042886631653829\n",
+      "319 0.30018117098403635\n",
+      "339 0.29837059166028934\n",
+      "359 0.28762346535715055\n",
+      "379 0.28762346535715055\n",
+      "399 0.28454838452622766\n",
+      "419 0.28454838452622766\n",
+      "439 0.28454838452622766\n",
+      "459 0.2836732753019879\n",
+      "479 0.2724766448440814\n",
+      "499 0.2724766448440814\n",
+      "375.5652559329798\n",
+      "----------------- I-9---------------------\n",
+      "19 0.6890787321996106\n",
+      "39 0.6796833855362654\n",
+      "59 0.43861110745501947\n",
+      "79 0.42775295463584634\n",
+      "99 0.3910959641100793\n",
+      "119 0.3910039050561891\n",
+      "139 0.3453179595906682\n",
+      "159 0.3299075925284926\n",
+      "179 0.3299075925284926\n",
+      "199 0.3299075925284926\n",
+      "219 0.3299075925284926\n",
+      "239 0.31618106626889336\n",
+      "259 0.31618106626889336\n",
+      "279 0.31618106626889336\n",
+      "299 0.3148154309508677\n",
+      "319 0.314470885472052\n",
+      "339 0.30372069265392465\n",
+      "359 0.30372069265392465\n",
+      "379 0.30259423412816544\n",
+      "399 0.30090483506876553\n",
+      "419 0.30090483506876553\n",
+      "439 0.30090483506876553\n",
+      "459 0.30090483506876553\n",
+      "479 0.30090483506876553\n",
+      "499 0.30090483506876553\n",
+      "295.2162996781814\n",
+      "----------------- I-10---------------------\n",
+      "19 1.1291459970275168\n",
+      "39 0.6269597695504907\n",
+      "59 0.33619272534417405\n",
+      "79 0.33619272534417405\n",
+      "99 0.33124046350210706\n",
+      "119 0.3075098762579724\n",
+      "139 0.3075098762579724\n",
+      "159 0.2961946115855948\n",
+      "179 0.29556013628991407\n",
+      "199 0.29556013628991407\n",
+      "219 0.293318955386825\n",
+      "239 0.2878082961649676\n",
+      "259 0.28328203472876007\n",
+      "279 0.27741298202002257\n",
+      "299 0.27741298202002257\n",
+      "319 0.26785875198284004\n",
+      "339 0.26785875198284004\n",
+      "359 0.26785875198284004\n",
+      "379 0.26785875198284004\n",
+      "399 0.26785875198284004\n",
+      "419 0.26785875198284004\n",
+      "439 0.26785875198284004\n",
+      "459 0.26785875198284004\n",
+      "479 0.2646984132939411\n",
+      "499 0.2646984132939411\n",
+      "322.35717787876524\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:2\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.3867376372827681\n",
+      "39 0.3867376372827681\n",
+      "59 0.3867376372827681\n",
+      "79 0.3867376372827681\n",
+      "99 0.3867376372827681\n",
+      "119 0.3867376372827681\n",
+      "139 0.38166113617531905\n",
+      "159 0.38166113617531905\n",
+      "179 0.3767356268256345\n",
+      "199 0.3767356268256345\n",
+      "219 0.3767356268256345\n",
+      "239 0.3767356268256345\n",
+      "259 0.3767356268256345\n",
+      "279 0.3767356268256345\n",
+      "299 0.3767356268256345\n",
+      "319 0.3767356268256345\n",
+      "339 0.3767356268256345\n",
+      "359 0.3729272180268001\n",
+      "379 0.3729272180268001\n",
+      "399 0.3729272180268001\n",
+      "419 0.372304040847083\n",
+      "439 0.36623318307546204\n",
+      "459 0.36623318307546204\n",
+      "479 0.36356750309779373\n",
+      "499 0.3595592355510012\n",
+      "437.07313856717883\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3674548878987376\n",
+      "39 0.3674548878987376\n",
+      "59 0.3674548878987376\n",
+      "79 0.3674548878987376\n",
+      "99 0.3644072703249585\n",
+      "119 0.3644072703249585\n",
+      "139 0.3644072703249585\n",
+      "159 0.3644072703249585\n",
+      "179 0.3644072703249585\n",
+      "199 0.3644072703249585\n",
+      "219 0.3644072703249585\n",
+      "239 0.3644072703249585\n",
+      "259 0.3644072703249585\n",
+      "279 0.3644072703249585\n",
+      "299 0.3644072703249585\n",
+      "319 0.3599727266482594\n",
+      "339 0.3599727266482594\n",
+      "359 0.3599727266482594\n",
+      "379 0.3599727266482594\n",
+      "399 0.35900451393712596\n",
+      "419 0.35900451393712596\n",
+      "439 0.35900451393712596\n",
+      "459 0.35900451393712596\n",
+      "479 0.35900451393712596\n",
+      "499 0.35745920808458853\n",
+      "377.2379125948387\n",
+      "----------------- I-3---------------------\n",
+      "19 0.29584705321737925\n",
+      "39 0.29584705321737925\n",
+      "59 0.29584705321737925\n",
+      "79 0.29584705321737925\n",
+      "99 0.29490458791664453\n",
+      "119 0.29490458791664453\n",
+      "139 0.29490458791664453\n",
+      "159 0.29490458791664453\n",
+      "179 0.29490458791664453\n",
+      "199 0.29490458791664453\n",
+      "219 0.29490458791664453\n",
+      "239 0.29490458791664453\n",
+      "259 0.29490458791664453\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "279 0.29490458791664453\n",
+      "299 0.29457061354552794\n",
+      "319 0.29457061354552794\n",
+      "339 0.29457061354552794\n",
+      "359 0.29457061354552794\n",
+      "379 0.29457061354552794\n",
+      "399 0.29457061354552794\n",
+      "419 0.29457061354552794\n",
+      "439 0.29457061354552794\n",
+      "459 0.29457061354552794\n",
+      "479 0.2940600102357516\n",
+      "499 0.2940600102357516\n",
+      "330.29439771895267\n",
+      "----------------- I-4---------------------\n",
+      "19 0.2801225326642416\n",
+      "39 0.2733278898163089\n",
+      "59 0.2733278898163089\n",
+      "79 0.2733278898163089\n",
+      "99 0.2733278898163089\n",
+      "119 0.2733278898163089\n",
+      "139 0.2733278898163089\n",
+      "159 0.2717390844028149\n",
+      "179 0.2717390844028149\n",
+      "199 0.2717390844028149\n",
+      "219 0.2717390844028149\n",
+      "239 0.2717390844028149\n",
+      "259 0.2717390844028149\n",
+      "279 0.2717390844028149\n",
+      "299 0.2717390844028149\n",
+      "319 0.2717390844028149\n",
+      "339 0.2717390844028149\n",
+      "359 0.2699001310232428\n",
+      "379 0.2699001310232428\n",
+      "399 0.2699001310232428\n",
+      "419 0.2699001310232428\n",
+      "439 0.2699001310232428\n",
+      "459 0.2699001310232428\n",
+      "479 0.2699001310232428\n",
+      "499 0.2699001310232428\n",
+      "326.48460289459734\n",
+      "----------------- I-5---------------------\n",
+      "19 0.26227566323381146\n",
+      "39 0.26227566323381146\n",
+      "59 0.26227566323381146\n",
+      "79 0.26227566323381146\n",
+      "99 0.26227566323381146\n",
+      "119 0.26227566323381146\n",
+      "139 0.26227566323381146\n",
+      "159 0.26227566323381146\n",
+      "179 0.26227566323381146\n",
+      "199 0.26127177362849835\n",
+      "219 0.26127177362849835\n",
+      "239 0.26127177362849835\n",
+      "259 0.26001727659221335\n",
+      "279 0.26001727659221335\n",
+      "299 0.25683451017057957\n",
+      "319 0.25383290164664685\n",
+      "339 0.2525440688996802\n",
+      "359 0.2525440688996802\n",
+      "379 0.2525440688996802\n",
+      "399 0.2525440688996802\n",
+      "419 0.2525440688996802\n",
+      "439 0.2525440688996802\n",
+      "459 0.2525440688996802\n",
+      "479 0.2525440688996802\n",
+      "499 0.2525440688996802\n",
+      "321.01677739143474\n",
+      "----------------- I-6---------------------\n",
+      "19 0.29847362247504283\n",
+      "39 0.29847362247504283\n",
+      "59 0.2981257601029102\n",
+      "79 0.2981257601029102\n",
+      "99 0.2981257601029102\n",
+      "119 0.29706450434632026\n",
+      "139 0.29706450434632026\n",
+      "159 0.29706450434632026\n",
+      "179 0.29706450434632026\n",
+      "199 0.29706450434632026\n",
+      "219 0.29706450434632026\n",
+      "239 0.29706450434632026\n",
+      "259 0.29706450434632026\n",
+      "279 0.29706450434632026\n",
+      "299 0.29706450434632026\n",
+      "319 0.29706450434632026\n",
+      "339 0.29706450434632026\n",
+      "359 0.29706450434632026\n",
+      "379 0.29706450434632026\n",
+      "399 0.29706450434632026\n",
+      "419 0.29706450434632026\n",
+      "439 0.29706450434632026\n",
+      "459 0.29706450434632026\n",
+      "479 0.29706450434632026\n",
+      "499 0.29706450434632026\n",
+      "270.50590784103133\n",
+      "----------------- I-7---------------------\n",
+      "19 0.30146258061552145\n",
+      "39 0.30146258061552145\n",
+      "59 0.30146258061552145\n",
+      "79 0.30146258061552145\n",
+      "99 0.30146258061552145\n",
+      "119 0.30032115007904836\n",
+      "139 0.30032115007904836\n",
+      "159 0.30032115007904836\n",
+      "179 0.30032115007904836\n",
+      "199 0.30032115007904836\n",
+      "219 0.30032115007904836\n",
+      "239 0.30032115007904836\n",
+      "259 0.2991615881875035\n",
+      "279 0.2991615881875035\n",
+      "299 0.29367440703983194\n",
+      "319 0.29367440703983194\n",
+      "339 0.29367440703983194\n",
+      "359 0.29367440703983194\n",
+      "379 0.29367440703983194\n",
+      "399 0.29367440703983194\n",
+      "419 0.29367440703983194\n",
+      "439 0.29367440703983194\n",
+      "459 0.29367440703983194\n",
+      "479 0.29367440703983194\n",
+      "499 0.29367440703983194\n",
+      "270.4053258463316\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2767490489121338\n",
+      "39 0.2767490489121338\n",
+      "59 0.2767490489121338\n",
+      "79 0.2767490489121338\n",
+      "99 0.2767490489121338\n",
+      "119 0.27448393073178684\n",
+      "139 0.27269200025127605\n",
+      "159 0.27269200025127605\n",
+      "179 0.272364093165356\n",
+      "199 0.27206765460818133\n",
+      "219 0.27206765460818133\n",
+      "239 0.27205261885652904\n",
+      "259 0.268315438878118\n",
+      "279 0.26767521840654873\n",
+      "299 0.26767521840654873\n",
+      "319 0.26767521840654873\n",
+      "339 0.26767521840654873\n",
+      "359 0.26767521840654873\n",
+      "379 0.26767521840654873\n",
+      "399 0.2673599679276468\n",
+      "419 0.2673599679276468\n",
+      "439 0.2667276171910322\n",
+      "459 0.2667276171910322\n",
+      "479 0.2667276171910322\n",
+      "499 0.2667276171910322\n",
+      "371.7362336091827\n",
+      "----------------- I-9---------------------\n",
+      "19 0.3022864729794595\n",
+      "39 0.3008620231933902\n",
+      "59 0.3008620231933902\n",
+      "79 0.29533083859879666\n",
+      "99 0.29533083859879666\n",
+      "119 0.2922062696337104\n",
+      "139 0.2922062696337104\n",
+      "159 0.2922062696337104\n",
+      "179 0.29210286753262243\n",
+      "199 0.29210286753262243\n",
+      "219 0.28593835630348446\n",
+      "239 0.28593835630348446\n",
+      "259 0.28593835630348446\n",
+      "279 0.28593835630348446\n",
+      "299 0.28593835630348446\n",
+      "319 0.2825084539249949\n",
+      "339 0.2825084539249949\n",
+      "359 0.2825084539249949\n",
+      "379 0.2825084539249949\n",
+      "399 0.2825084539249949\n",
+      "419 0.2825084539249949\n",
+      "439 0.2825084539249949\n",
+      "459 0.2825084539249949\n",
+      "479 0.2825084539249949\n",
+      "499 0.2825084539249949\n",
+      "306.8461067415562\n",
+      "----------------- I-10---------------------\n",
+      "19 0.2669138768924974\n",
+      "39 0.2669138768924974\n",
+      "59 0.2622277540048286\n",
+      "79 0.2622277540048286\n",
+      "99 0.2622277540048286\n",
+      "119 0.2607998610247641\n",
+      "139 0.2607998610247641\n",
+      "159 0.2607998610247641\n",
+      "179 0.2607998610247641\n",
+      "199 0.2607998610247641\n",
+      "219 0.2607998610247641\n",
+      "239 0.2599998110573211\n",
+      "259 0.2599998110573211\n",
+      "279 0.25965478761138705\n",
+      "299 0.25965478761138705\n",
+      "319 0.25965478761138705\n",
+      "339 0.25965478761138705\n",
+      "359 0.25965478761138705\n",
+      "379 0.25965478761138705\n",
+      "399 0.25965478761138705\n",
+      "419 0.25965478761138705\n",
+      "439 0.25965478761138705\n",
+      "459 0.25965478761138705\n",
+      "479 0.25965478761138705\n",
+      "499 0.2594011530568284\n",
+      "326.48592570142057\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:3\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.3595592355510012\n",
+      "39 0.3595592355510012\n",
+      "59 0.3595592355510012\n",
+      "79 0.3595592355510012\n",
+      "99 0.3595592355510012\n",
+      "119 0.3595592355510012\n",
+      "139 0.3595592355510012\n",
+      "159 0.3595592355510012\n",
+      "179 0.35797969048047745\n",
+      "199 0.35782152577509974\n",
+      "219 0.3540392166585745\n",
+      "239 0.3540392166585745\n",
+      "259 0.3506058083528466\n",
+      "279 0.3506058083528466\n",
+      "299 0.3495836420460122\n",
+      "319 0.34900510460499645\n",
+      "339 0.34900510460499645\n",
+      "359 0.34487639772985207\n",
+      "379 0.34487639772985207\n",
+      "399 0.3437122735825946\n",
+      "419 0.3437122735825946\n",
+      "439 0.3437122735825946\n",
+      "459 0.3437122735825946\n",
+      "479 0.3437122735825946\n",
+      "499 0.34243717835332815\n",
+      "434.00704380345314\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3574806232863279\n",
+      "39 0.3574806232863279\n",
+      "59 0.3574806232863279\n",
+      "79 0.3574806232863279\n",
+      "99 0.3574806232863279\n",
+      "119 0.3574806232863279\n",
+      "139 0.3574806232863279\n",
+      "159 0.3574806232863279\n",
+      "179 0.3574806232863279\n",
+      "199 0.3574806232863279\n",
+      "219 0.3574806232863279\n",
+      "239 0.3569354457739866\n",
+      "259 0.35372597957919233\n",
+      "279 0.35372597957919233\n",
+      "299 0.3533388310019877\n",
+      "319 0.35319440306323\n",
+      "339 0.3522578722732368\n",
+      "359 0.3522578722732368\n",
+      "379 0.35094570829697813\n",
+      "399 0.35094570829697813\n",
+      "419 0.35094570829697813\n",
+      "439 0.3489392723994549\n",
+      "459 0.33728325959586725\n",
+      "479 0.33728325959586725\n",
+      "499 0.3362618797346642\n",
+      "395.9427324022142\n",
+      "----------------- I-3---------------------\n",
+      "19 0.29457061354552794\n",
+      "39 0.29439385208111224\n",
+      "59 0.29439385208111224\n",
+      "79 0.29439385208111224\n",
+      "99 0.29439385208111224\n",
+      "119 0.29439385208111224\n",
+      "139 0.29439385208111224\n",
+      "159 0.29439385208111224\n",
+      "179 0.29439385208111224\n",
+      "199 0.29439385208111224\n",
+      "219 0.29439385208111224\n",
+      "239 0.29439385208111224\n",
+      "259 0.2943664785243294\n",
+      "279 0.2943664785243294\n",
+      "299 0.2943664785243294\n",
+      "319 0.29413515621953\n",
+      "339 0.29387311844907243\n",
+      "359 0.2920361062620088\n",
+      "379 0.2920361062620088\n",
+      "399 0.2920361062620088\n",
+      "419 0.2920361062620088\n",
+      "439 0.2920361062620088\n",
+      "459 0.2906914983883216\n",
+      "479 0.2906914983883216\n",
+      "499 0.2906914983883216\n",
+      "345.9247031338667\n",
+      "----------------- I-4---------------------\n",
+      "19 0.26703909811968685\n",
+      "39 0.26692197381619837\n",
+      "59 0.26692197381619837\n",
+      "79 0.26692197381619837\n",
+      "99 0.2667557440081881\n",
+      "119 0.2667557440081881\n",
+      "139 0.2667557440081881\n",
+      "159 0.2667557440081881\n",
+      "179 0.2667557440081881\n",
+      "199 0.2667557440081881\n",
+      "219 0.2667557440081881\n",
+      "239 0.2667557440081881\n",
+      "259 0.2667557440081881\n",
+      "279 0.2667557440081881\n",
+      "299 0.2667557440081881\n",
+      "319 0.263982354048272\n",
+      "339 0.263982354048272\n",
+      "359 0.263982354048272\n",
+      "379 0.263982354048272\n",
+      "399 0.263982354048272\n",
+      "419 0.263982354048272\n",
+      "439 0.263982354048272\n",
+      "459 0.2632765376103356\n",
+      "479 0.2632765376103356\n",
+      "499 0.2632765376103356\n",
+      "323.0408720441064\n",
+      "----------------- I-5---------------------\n",
+      "19 0.25302897629875215\n",
+      "39 0.25302897629875215\n",
+      "59 0.25302897629875215\n",
+      "79 0.25302897629875215\n",
+      "99 0.25302897629875215\n",
+      "119 0.25302897629875215\n",
+      "139 0.25302897629875215\n",
+      "159 0.25302897629875215\n",
+      "179 0.25302897629875215\n",
+      "199 0.250226246032153\n",
+      "219 0.250226246032153\n",
+      "239 0.250226246032153\n",
+      "259 0.250226246032153\n",
+      "279 0.250226246032153\n",
+      "299 0.250226246032153\n",
+      "319 0.250226246032153\n",
+      "339 0.25011135328143924\n",
+      "359 0.25011135328143924\n",
+      "379 0.25011135328143924\n",
+      "399 0.24828944075840437\n",
+      "419 0.24828944075840437\n",
+      "439 0.24828944075840437\n",
+      "459 0.24828944075840437\n",
+      "479 0.24828944075840437\n",
+      "499 0.24828944075840437\n",
+      "321.3776517899257\n",
+      "----------------- I-6---------------------\n",
+      "19 0.2981257601029102\n",
+      "39 0.2981257601029102\n",
+      "59 0.2981257601029102\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "79 0.2981257601029102\n",
+      "99 0.2981257601029102\n",
+      "119 0.2981257601029102\n",
+      "139 0.2981257601029102\n",
+      "159 0.29757419605663427\n",
+      "179 0.2970254337579014\n",
+      "199 0.2970254337579014\n",
+      "219 0.29643956965628937\n",
+      "239 0.29643956965628937\n",
+      "259 0.29643956965628937\n",
+      "279 0.29643956965628937\n",
+      "299 0.29643956965628937\n",
+      "319 0.29643956965628937\n",
+      "339 0.29643956965628937\n",
+      "359 0.29643956965628937\n",
+      "379 0.29643956965628937\n",
+      "399 0.29643956965628937\n",
+      "419 0.29643956965628937\n",
+      "439 0.29643956965628937\n",
+      "459 0.29643956965628937\n",
+      "479 0.29643956965628937\n",
+      "499 0.29643956965628937\n",
+      "279.26773171059284\n",
+      "----------------- I-7---------------------\n",
+      "19 0.29555051221316786\n",
+      "39 0.29555051221316786\n",
+      "59 0.29555051221316786\n",
+      "79 0.29555051221316786\n",
+      "99 0.29555051221316786\n",
+      "119 0.29555051221316786\n",
+      "139 0.29555051221316786\n",
+      "159 0.29555051221316786\n",
+      "179 0.29555051221316786\n",
+      "199 0.29555051221316786\n",
+      "219 0.29375142857832826\n",
+      "239 0.29375142857832826\n",
+      "259 0.29375142857832826\n",
+      "279 0.29375142857832826\n",
+      "299 0.29375142857832826\n",
+      "319 0.2910045015012679\n",
+      "339 0.2910045015012679\n",
+      "359 0.289159203890584\n",
+      "379 0.289159203890584\n",
+      "399 0.289159203890584\n",
+      "419 0.289159203890584\n",
+      "439 0.289159203890584\n",
+      "459 0.289159203890584\n",
+      "479 0.289159203890584\n",
+      "499 0.289159203890584\n",
+      "262.82253045157665\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2671400906254667\n",
+      "39 0.2671400906254667\n",
+      "59 0.2671400906254667\n",
+      "79 0.2671400906254667\n",
+      "99 0.2652808827269504\n",
+      "119 0.2652808827269504\n",
+      "139 0.2652808827269504\n",
+      "159 0.2652808827269504\n",
+      "179 0.26457816245811044\n",
+      "199 0.26457816245811044\n",
+      "219 0.26457816245811044\n",
+      "239 0.26457816245811044\n",
+      "259 0.26457816245811044\n",
+      "279 0.26457816245811044\n",
+      "299 0.26457816245811044\n",
+      "319 0.26457816245811044\n",
+      "339 0.26389366320054625\n",
+      "359 0.26389366320054625\n",
+      "379 0.26389366320054625\n",
+      "399 0.26377622946785595\n",
+      "419 0.26377622946785595\n",
+      "439 0.26377622946785595\n",
+      "459 0.2634890203631245\n",
+      "479 0.2634890203631245\n",
+      "499 0.2634890203631245\n",
+      "368.5474878434384\n",
+      "----------------- I-9---------------------\n",
+      "19 0.28287804857859156\n",
+      "39 0.2819312345396282\n",
+      "59 0.2817826038505796\n",
+      "79 0.28122285481992915\n",
+      "99 0.28122285481992915\n",
+      "119 0.28122285481992915\n",
+      "139 0.28066930242794125\n",
+      "159 0.28066930242794125\n",
+      "179 0.28066930242794125\n",
+      "199 0.28066930242794125\n",
+      "219 0.28066930242794125\n",
+      "239 0.27907381941395826\n",
+      "259 0.27907381941395826\n",
+      "279 0.27907381941395826\n",
+      "299 0.27907381941395826\n",
+      "319 0.27907381941395826\n",
+      "339 0.27727448566847346\n",
+      "359 0.27727448566847346\n",
+      "379 0.27727448566847346\n",
+      "399 0.27727448566847346\n",
+      "419 0.2771309004150971\n",
+      "439 0.2771309004150971\n",
+      "459 0.2771309004150971\n",
+      "479 0.2771309004150971\n",
+      "499 0.2771309004150971\n",
+      "315.1802583610586\n",
+      "----------------- I-10---------------------\n",
+      "19 0.2587176476693035\n",
+      "39 0.2587176476693035\n",
+      "59 0.2587176476693035\n",
+      "79 0.2587176476693035\n",
+      "99 0.2575921400869897\n",
+      "119 0.2575921400869897\n",
+      "139 0.2575921400869897\n",
+      "159 0.2575921400869897\n",
+      "179 0.25631285824953054\n",
+      "199 0.25631285824953054\n",
+      "219 0.25631285824953054\n",
+      "239 0.25631285824953054\n",
+      "259 0.25631285824953054\n",
+      "279 0.25631285824953054\n",
+      "299 0.25631285824953054\n",
+      "319 0.25631285824953054\n",
+      "339 0.25631285824953054\n",
+      "359 0.25631285824953054\n",
+      "379 0.25631285824953054\n",
+      "399 0.25631285824953054\n",
+      "419 0.25631285824953054\n",
+      "439 0.25631285824953054\n",
+      "459 0.25554134901556536\n",
+      "479 0.25554134901556536\n",
+      "499 0.25554134901556536\n",
+      "324.1596986263086\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:4\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.3387378338113142\n",
+      "39 0.3363317158305087\n",
+      "59 0.3363317158305087\n",
+      "79 0.3363317158305087\n",
+      "99 0.3363317158305087\n",
+      "119 0.3315867886673929\n",
+      "139 0.3305033340089609\n",
+      "159 0.3305033340089609\n",
+      "179 0.3305033340089609\n",
+      "199 0.3305033340089609\n",
+      "219 0.32851264703342226\n",
+      "239 0.32851264703342226\n",
+      "259 0.32851264703342226\n",
+      "279 0.3260025538291157\n",
+      "299 0.3260025538291157\n",
+      "319 0.3260025538291157\n",
+      "339 0.3260025538291157\n",
+      "359 0.3260025538291157\n",
+      "379 0.3260025538291157\n",
+      "399 0.3260025538291157\n",
+      "419 0.325151955013896\n",
+      "439 0.325151955013896\n",
+      "459 0.325151955013896\n",
+      "479 0.325151955013896\n",
+      "499 0.3238023257929335\n",
+      "433.875866560529\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3328913055189585\n",
+      "39 0.3328913055189585\n",
+      "59 0.3328913055189585\n",
+      "79 0.3328913055189585\n",
+      "99 0.3328913055189585\n",
+      "119 0.3328913055189585\n",
+      "139 0.3328913055189585\n",
+      "159 0.3328913055189585\n",
+      "179 0.3328913055189585\n",
+      "199 0.3328913055189585\n",
+      "219 0.3292441219653772\n",
+      "239 0.3292441219653772\n",
+      "259 0.3292441219653772\n",
+      "279 0.3292441219653772\n",
+      "299 0.3275083631284628\n",
+      "319 0.3275083631284628\n",
+      "339 0.3275083631284628\n",
+      "359 0.3275083631284628\n",
+      "379 0.3275083631284628\n",
+      "399 0.3275083631284628\n",
+      "419 0.3275083631284628\n",
+      "439 0.3275083631284628\n",
+      "459 0.3275083631284628\n",
+      "479 0.3275083631284628\n",
+      "499 0.325217835030681\n",
+      "401.873416901988\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2902267278991973\n",
+      "39 0.2893315975345181\n",
+      "59 0.2893315975345181\n",
+      "79 0.2893315975345181\n",
+      "99 0.28824843307871656\n",
+      "119 0.28760327464981755\n",
+      "139 0.28760327464981755\n",
+      "159 0.2872437134610925\n",
+      "179 0.28637905581857603\n",
+      "199 0.2844022890117272\n",
+      "219 0.2844022890117272\n",
+      "239 0.2844022890117272\n",
+      "259 0.2844022890117272\n",
+      "279 0.2820912929225499\n",
+      "299 0.2820912929225499\n",
+      "319 0.28182920197038663\n",
+      "339 0.2775583900734553\n",
+      "359 0.27660444938846007\n",
+      "379 0.27660444938846007\n",
+      "399 0.27660444938846007\n",
+      "419 0.2758899446482503\n",
+      "439 0.2758899446482503\n",
+      "459 0.2758899446482503\n",
+      "479 0.2758899446482503\n",
+      "499 0.2758899446482503\n",
+      "387.745370686791\n",
+      "----------------- I-4---------------------\n",
+      "19 0.263982354048272\n",
+      "39 0.263982354048272\n",
+      "59 0.263982354048272\n",
+      "79 0.263982354048272\n",
+      "99 0.263982354048272\n",
+      "119 0.263982354048272\n",
+      "139 0.263982354048272\n",
+      "159 0.263982354048272\n",
+      "179 0.263982354048272\n",
+      "199 0.263982354048272\n",
+      "219 0.263982354048272\n",
+      "239 0.263982354048272\n",
+      "259 0.263982354048272\n",
+      "279 0.263982354048272\n",
+      "299 0.263982354048272\n",
+      "319 0.263982354048272\n",
+      "339 0.263982354048272\n",
+      "359 0.263982354048272\n",
+      "379 0.26336538971183293\n",
+      "399 0.26336538971183293\n",
+      "419 0.26336538971183293\n",
+      "439 0.26336538971183293\n",
+      "459 0.26336538971183293\n",
+      "479 0.2626036789495281\n",
+      "499 0.2626036789495281\n",
+      "323.956455260454\n",
+      "----------------- I-5---------------------\n",
+      "19 0.24908090616895529\n",
+      "39 0.24908090616895529\n",
+      "59 0.24908090616895529\n",
+      "79 0.24908090616895529\n",
+      "99 0.2489159453174654\n",
+      "119 0.2489159453174654\n",
+      "139 0.2489159453174654\n",
+      "159 0.24838491646005692\n",
+      "179 0.24838491646005692\n",
+      "199 0.24838491646005692\n",
+      "219 0.24838491646005692\n",
+      "239 0.24838491646005692\n",
+      "259 0.24838491646005692\n",
+      "279 0.24838491646005692\n",
+      "299 0.24838491646005692\n",
+      "319 0.24838491646005692\n",
+      "339 0.24838491646005692\n",
+      "359 0.24838491646005692\n",
+      "379 0.24838491646005692\n",
+      "399 0.24838491646005692\n",
+      "419 0.24838491646005692\n",
+      "439 0.24838491646005692\n",
+      "459 0.24838491646005692\n",
+      "479 0.24784045228462237\n",
+      "499 0.24784045228462237\n",
+      "320.88210699528736\n",
+      "----------------- I-6---------------------\n",
+      "19 0.2970254337579014\n",
+      "39 0.2970254337579014\n",
+      "59 0.2970254337579014\n",
+      "79 0.2970254337579014\n",
+      "99 0.29607525441816024\n",
+      "119 0.29607525441816024\n",
+      "139 0.29479743503968864\n",
+      "159 0.29479743503968864\n",
+      "179 0.29479743503968864\n",
+      "199 0.29479743503968864\n",
+      "219 0.29479743503968864\n",
+      "239 0.29479743503968864\n",
+      "259 0.29479743503968864\n",
+      "279 0.29479743503968864\n",
+      "299 0.29479743503968864\n",
+      "319 0.29479743503968864\n",
+      "339 0.29479743503968864\n",
+      "359 0.29479743503968864\n",
+      "379 0.29479743503968864\n",
+      "399 0.29479743503968864\n",
+      "419 0.29479743503968864\n",
+      "439 0.29479743503968864\n",
+      "459 0.2947620796821687\n",
+      "479 0.2947620796821687\n",
+      "499 0.2947620796821687\n",
+      "271.1636094641577\n",
+      "----------------- I-7---------------------\n",
+      "19 0.29375142857832826\n",
+      "39 0.29375142857832826\n",
+      "59 0.29375142857832826\n",
+      "79 0.29375142857832826\n",
+      "99 0.29375142857832826\n",
+      "119 0.29375142857832826\n",
+      "139 0.29375142857832826\n",
+      "159 0.29295995832907346\n",
+      "179 0.29295995832907346\n",
+      "199 0.29295995832907346\n",
+      "219 0.29295995832907346\n",
+      "239 0.29295995832907346\n",
+      "259 0.29295995832907346\n",
+      "279 0.2884191073430131\n",
+      "299 0.2884191073430131\n",
+      "319 0.2884191073430131\n",
+      "339 0.2884191073430131\n",
+      "359 0.2884191073430131\n",
+      "379 0.2884191073430131\n",
+      "399 0.2884191073430131\n",
+      "419 0.2884191073430131\n",
+      "439 0.2884191073430131\n",
+      "459 0.2884191073430131\n",
+      "479 0.2884191073430131\n",
+      "499 0.2884191073430131\n",
+      "266.7009996162928\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2636780495155115\n",
+      "39 0.2636780495155115\n",
+      "59 0.2636780495155115\n",
+      "79 0.2636780495155115\n",
+      "99 0.2632503206519956\n",
+      "119 0.2632503206519956\n",
+      "139 0.2632503206519956\n",
+      "159 0.26289884771150746\n",
+      "179 0.26289884771150746\n",
+      "199 0.26289884771150746\n",
+      "219 0.26289884771150746\n",
+      "239 0.26118913495338947\n",
+      "259 0.26118913495338947\n",
+      "279 0.26118913495338947\n",
+      "299 0.26118913495338947\n",
+      "319 0.26118913495338947\n",
+      "339 0.26118913495338947\n",
+      "359 0.26118913495338947\n",
+      "379 0.26118913495338947\n",
+      "399 0.26118913495338947\n",
+      "419 0.26118913495338947\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "439 0.26103153402995466\n",
+      "459 0.26103153402995466\n",
+      "479 0.2602570182719577\n",
+      "499 0.2602570182719577\n",
+      "363.41086792017643\n",
+      "----------------- I-9---------------------\n",
+      "19 0.27680607891667286\n",
+      "39 0.27680607891667286\n",
+      "59 0.27680607891667286\n",
+      "79 0.2747352885680219\n",
+      "99 0.2747352885680219\n",
+      "119 0.2747352885680219\n",
+      "139 0.2747352885680219\n",
+      "159 0.2747352885680219\n",
+      "179 0.2747352885680219\n",
+      "199 0.2747352885680219\n",
+      "219 0.2747352885680219\n",
+      "239 0.2747352885680219\n",
+      "259 0.2747352885680219\n",
+      "279 0.2747352885680219\n",
+      "299 0.2747352885680219\n",
+      "319 0.2747352885680219\n",
+      "339 0.2747352885680219\n",
+      "359 0.27077106895650477\n",
+      "379 0.2706396835768811\n",
+      "399 0.2706396835768811\n",
+      "419 0.2706396835768811\n",
+      "439 0.2706396835768811\n",
+      "459 0.2694340980862951\n",
+      "479 0.2694340980862951\n",
+      "499 0.2694340980862951\n",
+      "313.4878284593232\n",
+      "----------------- I-10---------------------\n",
+      "19 0.2562516200945769\n",
+      "39 0.2562516200945769\n",
+      "59 0.2562516200945769\n",
+      "79 0.2562516200945769\n",
+      "99 0.2562516200945769\n",
+      "119 0.2560973779038686\n",
+      "139 0.2560973779038686\n",
+      "159 0.2557196910947344\n",
+      "179 0.2555126951557822\n",
+      "199 0.2555126951557822\n",
+      "219 0.25530614289404713\n",
+      "239 0.25530614289404713\n",
+      "259 0.25530614289404713\n",
+      "279 0.25530614289404713\n",
+      "299 0.2534656728161486\n",
+      "319 0.2534656728161486\n",
+      "339 0.2534656728161486\n",
+      "359 0.2534656728161486\n",
+      "379 0.2534656728161486\n",
+      "399 0.2531828488848448\n",
+      "419 0.2531828488848448\n",
+      "439 0.2531828488848448\n",
+      "459 0.2531828488848448\n",
+      "479 0.2531828488848448\n",
+      "499 0.2531828488848448\n",
+      "320.3905247044143\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:5\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.32148006976682664\n",
+      "39 0.32148006976682664\n",
+      "59 0.3179522965674149\n",
+      "79 0.3179522965674149\n",
+      "99 0.3179522965674149\n",
+      "119 0.3179522965674149\n",
+      "139 0.3179522965674149\n",
+      "159 0.3179522965674149\n",
+      "179 0.31766280370199335\n",
+      "199 0.31766280370199335\n",
+      "219 0.31766280370199335\n",
+      "239 0.31766280370199335\n",
+      "259 0.31766280370199335\n",
+      "279 0.31766280370199335\n",
+      "299 0.31766280370199335\n",
+      "319 0.31766280370199335\n",
+      "339 0.31766280370199335\n",
+      "359 0.31766280370199335\n",
+      "379 0.31766280370199335\n",
+      "399 0.3136335252609962\n",
+      "419 0.3136335252609962\n",
+      "439 0.31363116168282157\n",
+      "459 0.31363116168282157\n",
+      "479 0.31363116168282157\n",
+      "499 0.31363116168282157\n",
+      "432.83866937951194\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3238023257929335\n",
+      "39 0.3238023257929335\n",
+      "59 0.3238023257929335\n",
+      "79 0.3238023257929335\n",
+      "99 0.3238023257929335\n",
+      "119 0.3238023257929335\n",
+      "139 0.3238023257929335\n",
+      "159 0.3238023257929335\n",
+      "179 0.3238023257929335\n",
+      "199 0.3238023257929335\n",
+      "219 0.3238023257929335\n",
+      "239 0.3238023257929335\n",
+      "259 0.3238023257929335\n",
+      "279 0.3238023257929335\n",
+      "299 0.3238023257929335\n",
+      "319 0.3238023257929335\n",
+      "339 0.3238023257929335\n",
+      "359 0.3238023257929335\n",
+      "379 0.32232781284658096\n",
+      "399 0.32232781284658096\n",
+      "419 0.32232781284658096\n",
+      "439 0.32232781284658096\n",
+      "459 0.32232781284658096\n",
+      "479 0.32232781284658096\n",
+      "499 0.32232781284658096\n",
+      "431.8889979630495\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2759080872826572\n",
+      "39 0.2759080872826572\n",
+      "59 0.27559038466525415\n",
+      "79 0.2740307485601475\n",
+      "99 0.2740307485601475\n",
+      "119 0.2740307485601475\n",
+      "139 0.2740307485601475\n",
+      "159 0.2733508955802725\n",
+      "179 0.2730914259150864\n",
+      "199 0.2730914259150864\n",
+      "219 0.2730914259150864\n",
+      "239 0.2730914259150864\n",
+      "259 0.2730914259150864\n",
+      "279 0.27283991799224466\n",
+      "299 0.27283991799224466\n",
+      "319 0.27283991799224466\n",
+      "339 0.27283991799224466\n",
+      "359 0.2727128738103642\n",
+      "379 0.2725941279174435\n",
+      "399 0.2725941279174435\n",
+      "419 0.2725941279174435\n",
+      "439 0.272553750403168\n",
+      "459 0.272553750403168\n",
+      "479 0.27195929758634174\n",
+      "499 0.27195929758634174\n",
+      "393.6506148639196\n",
+      "----------------- I-4---------------------\n",
+      "19 0.26336538971183293\n",
+      "39 0.26336538971183293\n",
+      "59 0.26336538971183293\n",
+      "79 0.26336538971183293\n",
+      "99 0.26336538971183293\n",
+      "119 0.26336538971183293\n",
+      "139 0.26068031475308007\n",
+      "159 0.26068031475308007\n",
+      "179 0.26068031475308007\n",
+      "199 0.26068031475308007\n",
+      "219 0.26068031475308007\n",
+      "239 0.26068031475308007\n",
+      "259 0.26068031475308007\n",
+      "279 0.26068031475308007\n",
+      "299 0.26068031475308007\n",
+      "319 0.26068031475308007\n",
+      "339 0.26068031475308007\n",
+      "359 0.26068031475308007\n",
+      "379 0.26068031475308007\n",
+      "399 0.26068031475308007\n",
+      "419 0.26068031475308007\n",
+      "439 0.26068031475308007\n",
+      "459 0.26068031475308007\n",
+      "479 0.26068031475308007\n",
+      "499 0.26068031475308007\n",
+      "325.4532165688135\n",
+      "----------------- I-5---------------------\n",
+      "19 0.248348790256516\n",
+      "39 0.24795338267832573\n",
+      "59 0.24795338267832573\n",
+      "79 0.24795338267832573\n",
+      "99 0.24795338267832573\n",
+      "119 0.24795338267832573\n",
+      "139 0.24795338267832573\n",
+      "159 0.24795338267832573\n",
+      "179 0.24795338267832573\n",
+      "199 0.24795338267832573\n",
+      "219 0.24795338267832573\n",
+      "239 0.24795338267832573\n",
+      "259 0.24795338267832573\n",
+      "279 0.24716749846208377\n",
+      "299 0.24716749846208377\n",
+      "319 0.24716749846208377\n",
+      "339 0.24716749846208377\n",
+      "359 0.24716749846208377\n",
+      "379 0.24716749846208377\n",
+      "399 0.24716749846208377\n",
+      "419 0.24716749846208377\n",
+      "439 0.24716749846208377\n",
+      "459 0.24716749846208377\n",
+      "479 0.24716749846208377\n",
+      "499 0.24716749846208377\n",
+      "321.71779954136554\n",
+      "----------------- I-6---------------------\n",
+      "19 0.29479743503968864\n",
+      "39 0.29479743503968864\n",
+      "59 0.29479743503968864\n",
+      "79 0.29479743503968864\n",
+      "99 0.29479743503968864\n",
+      "119 0.29479743503968864\n",
+      "139 0.29479743503968864\n",
+      "159 0.29479743503968864\n",
+      "179 0.29479743503968864\n",
+      "199 0.29479743503968864\n",
+      "219 0.29479743503968864\n",
+      "239 0.29479743503968864\n",
+      "259 0.29479743503968864\n",
+      "279 0.29479743503968864\n",
+      "299 0.29479743503968864\n",
+      "319 0.29426274407531905\n",
+      "339 0.29426274407531905\n",
+      "359 0.29426274407531905\n",
+      "379 0.29426274407531905\n",
+      "399 0.29426274407531905\n",
+      "419 0.29426274407531905\n",
+      "439 0.29426274407531905\n",
+      "459 0.29426274407531905\n",
+      "479 0.29426274407531905\n",
+      "499 0.29426274407531905\n",
+      "268.5788230431669\n",
+      "----------------- I-7---------------------\n",
+      "19 0.29295995832907346\n",
+      "39 0.29295995832907346\n",
+      "59 0.29295995832907346\n",
+      "79 0.29295995832907346\n",
+      "99 0.29295995832907346\n",
+      "119 0.29209204753326184\n",
+      "139 0.29209204753326184\n",
+      "159 0.29209204753326184\n",
+      "179 0.2914986790919673\n",
+      "199 0.2914986790919673\n",
+      "219 0.2914986790919673\n",
+      "239 0.2914986790919673\n",
+      "259 0.2914986790919673\n",
+      "279 0.2914986790919673\n",
+      "299 0.2914986790919673\n",
+      "319 0.28853069662132586\n",
+      "339 0.2880905206223219\n",
+      "359 0.2880905206223219\n",
+      "379 0.2880905206223219\n",
+      "399 0.2880905206223219\n",
+      "419 0.2880905206223219\n",
+      "439 0.2880905206223219\n",
+      "459 0.2880905206223219\n",
+      "479 0.2880905206223219\n",
+      "499 0.2880905206223219\n",
+      "259.67726922593516\n",
+      "----------------- I-8---------------------\n",
+      "19 0.26103153402995466\n",
+      "39 0.26103153402995466\n",
+      "59 0.26050134640389766\n",
+      "79 0.26050134640389766\n",
+      "99 0.26050134640389766\n",
+      "119 0.26050134640389766\n",
+      "139 0.26050134640389766\n",
+      "159 0.26050134640389766\n",
+      "179 0.26050134640389766\n",
+      "199 0.26049006011068704\n",
+      "219 0.26049006011068704\n",
+      "239 0.26049006011068704\n",
+      "259 0.2600993553980871\n",
+      "279 0.2600993553980871\n",
+      "299 0.2597640536323966\n",
+      "319 0.2597640536323966\n",
+      "339 0.2597640536323966\n",
+      "359 0.2597640536323966\n",
+      "379 0.2584948193037735\n",
+      "399 0.2584948193037735\n",
+      "419 0.2584948193037735\n",
+      "439 0.2584948193037735\n",
+      "459 0.2584948193037735\n",
+      "479 0.2584948193037735\n",
+      "499 0.2584948193037735\n",
+      "362.34491038144427\n",
+      "----------------- I-9---------------------\n",
+      "19 0.2694618079933699\n",
+      "39 0.2694618079933699\n",
+      "59 0.2694618079933699\n",
+      "79 0.2694618079933699\n",
+      "99 0.26752273429073375\n",
+      "119 0.26752273429073375\n",
+      "139 0.26752273429073375\n",
+      "159 0.26752273429073375\n",
+      "179 0.26752273429073375\n",
+      "199 0.26752273429073375\n",
+      "219 0.2672852187575939\n",
+      "239 0.2672852187575939\n",
+      "259 0.2672852187575939\n",
+      "279 0.2672852187575939\n",
+      "299 0.2672852187575939\n",
+      "319 0.2667841094746773\n",
+      "339 0.26619096623971467\n",
+      "359 0.26619096623971467\n",
+      "379 0.26619096623971467\n",
+      "399 0.26619096623971467\n",
+      "419 0.26619096623971467\n",
+      "439 0.26619096623971467\n",
+      "459 0.26619096623971467\n",
+      "479 0.26619096623971467\n",
+      "499 0.26619096623971467\n",
+      "313.61933868275037\n",
+      "----------------- I-10---------------------\n",
+      "19 0.25358929613875153\n",
+      "39 0.25358929613875153\n",
+      "59 0.2531254027499703\n",
+      "79 0.2531254027499703\n",
+      "99 0.2531254027499703\n",
+      "119 0.2531254027499703\n",
+      "139 0.2531254027499703\n",
+      "159 0.2531254027499703\n",
+      "179 0.2531254027499703\n",
+      "199 0.2527274164024222\n",
+      "219 0.2527274164024222\n",
+      "239 0.2527274164024222\n",
+      "259 0.25138535438168486\n",
+      "279 0.25138535438168486\n",
+      "299 0.25138535438168486\n",
+      "319 0.25138535438168486\n",
+      "339 0.25138535438168486\n",
+      "359 0.25138535438168486\n",
+      "379 0.25138535438168486\n",
+      "399 0.25138535438168486\n",
+      "419 0.2504484971512176\n",
+      "439 0.2504484971512176\n",
+      "459 0.2504484971512176\n",
+      "479 0.2504484971512176\n",
+      "499 0.2501154877832612\n",
+      "323.02206146913545\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:6\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.31363116168282157\n",
+      "39 0.31363116168282157\n",
+      "59 0.3112184344347021\n",
+      "79 0.3112184344347021\n",
+      "99 0.3112184344347021\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "119 0.3112184344347021\n",
+      "139 0.3091645036330049\n",
+      "159 0.3091645036330049\n",
+      "179 0.3091645036330049\n",
+      "199 0.3091645036330049\n",
+      "219 0.3091645036330049\n",
+      "239 0.3091645036330049\n",
+      "259 0.3091645036330049\n",
+      "279 0.3091645036330049\n",
+      "299 0.30552481876923626\n",
+      "319 0.30552481876923626\n",
+      "339 0.30552481876923626\n",
+      "359 0.30514587890185496\n",
+      "379 0.30514587890185496\n",
+      "399 0.30329926091091264\n",
+      "419 0.30329926091091264\n",
+      "439 0.30329926091091264\n",
+      "459 0.3032035718411194\n",
+      "479 0.3032035718411194\n",
+      "499 0.3032035718411194\n",
+      "433.30439353979455\n",
+      "----------------- I-2---------------------\n",
+      "19 0.31363116168282157\n",
+      "39 0.31363116168282157\n",
+      "59 0.31363116168282157\n",
+      "79 0.31363116168282157\n",
+      "99 0.31363116168282157\n",
+      "119 0.31363116168282157\n",
+      "139 0.31363116168282157\n",
+      "159 0.31363116168282157\n",
+      "179 0.31363116168282157\n",
+      "199 0.31363116168282157\n",
+      "219 0.31363116168282157\n",
+      "239 0.31363116168282157\n",
+      "259 0.31363116168282157\n",
+      "279 0.31363116168282157\n",
+      "299 0.31363116168282157\n",
+      "319 0.31363116168282157\n",
+      "339 0.31363116168282157\n",
+      "359 0.31363116168282157\n",
+      "379 0.31363116168282157\n",
+      "399 0.31363116168282157\n",
+      "419 0.31363116168282157\n",
+      "439 0.31363116168282157\n",
+      "459 0.31363116168282157\n",
+      "479 0.31363116168282157\n",
+      "499 0.31363116168282157\n",
+      "432.83866937951194\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2720704401811769\n",
+      "39 0.2720704401811769\n",
+      "59 0.2720704401811769\n",
+      "79 0.2720704401811769\n",
+      "99 0.2720704401811769\n",
+      "119 0.2717342884486409\n",
+      "139 0.27167430643450896\n",
+      "159 0.27150701159113333\n",
+      "179 0.27150701159113333\n",
+      "199 0.27150701159113333\n",
+      "219 0.2712207732862199\n",
+      "239 0.2697534719893569\n",
+      "259 0.2697534719893569\n",
+      "279 0.269327923321879\n",
+      "299 0.269327923321879\n",
+      "319 0.2692398948207174\n",
+      "339 0.264797333754598\n",
+      "359 0.26352389462528925\n",
+      "379 0.2635073145864755\n",
+      "399 0.2635073145864755\n",
+      "419 0.2631761682926231\n",
+      "439 0.2629472172372472\n",
+      "459 0.2608351421700474\n",
+      "479 0.2605083889235686\n",
+      "499 0.25962001377637095\n",
+      "416.9239556733667\n",
+      "----------------- I-4---------------------\n",
+      "19 0.2613651008833878\n",
+      "39 0.2613651008833878\n",
+      "59 0.2613651008833878\n",
+      "79 0.2613651008833878\n",
+      "99 0.2613651008833878\n",
+      "119 0.2613651008833878\n",
+      "139 0.2613651008833878\n",
+      "159 0.2613651008833878\n",
+      "179 0.2613651008833878\n",
+      "199 0.2613651008833878\n",
+      "219 0.2613651008833878\n",
+      "239 0.2600304562391598\n",
+      "259 0.2600304562391598\n",
+      "279 0.2600304562391598\n",
+      "299 0.2600304562391598\n",
+      "319 0.2600304562391598\n",
+      "339 0.2600304562391598\n",
+      "359 0.2600304562391598\n",
+      "379 0.2592476302326071\n",
+      "399 0.2592476302326071\n",
+      "419 0.2592476302326071\n",
+      "439 0.2592476302326071\n",
+      "459 0.2592476302326071\n",
+      "479 0.2592476302326071\n",
+      "499 0.2592476302326071\n",
+      "323.83301587618007\n",
+      "----------------- I-5---------------------\n",
+      "19 0.24744295686237178\n",
+      "39 0.24744295686237178\n",
+      "59 0.24744295686237178\n",
+      "79 0.24744295686237178\n",
+      "99 0.24744295686237178\n",
+      "119 0.24744295686237178\n",
+      "139 0.24744295686237178\n",
+      "159 0.24744295686237178\n",
+      "179 0.24744295686237178\n",
+      "199 0.24744295686237178\n",
+      "219 0.24744295686237178\n",
+      "239 0.24744295686237178\n",
+      "259 0.24744295686237178\n",
+      "279 0.24744295686237178\n",
+      "299 0.24744295686237178\n",
+      "319 0.24744295686237178\n",
+      "339 0.24744295686237178\n",
+      "359 0.24744295686237178\n",
+      "379 0.24744295686237178\n",
+      "399 0.24744295686237178\n",
+      "419 0.24744295686237178\n",
+      "439 0.24744295686237178\n",
+      "459 0.24744295686237178\n",
+      "479 0.24744295686237178\n",
+      "499 0.24744295686237178\n",
+      "322.75370778402436\n",
+      "----------------- I-6---------------------\n",
+      "19 0.29569927693624964\n",
+      "39 0.29569927693624964\n",
+      "59 0.29569927693624964\n",
+      "79 0.2951588289521019\n",
+      "99 0.2951588289521019\n",
+      "119 0.2951588289521019\n",
+      "139 0.2951588289521019\n",
+      "159 0.2951588289521019\n",
+      "179 0.2951588289521019\n",
+      "199 0.2951588289521019\n",
+      "219 0.2951588289521019\n",
+      "239 0.2951588289521019\n",
+      "259 0.2951588289521019\n",
+      "279 0.2951588289521019\n",
+      "299 0.2951588289521019\n",
+      "319 0.2942843922884515\n",
+      "339 0.2942843922884515\n",
+      "359 0.2942843922884515\n",
+      "379 0.2942843922884515\n",
+      "399 0.2942843922884515\n",
+      "419 0.2942843922884515\n",
+      "439 0.2942843922884515\n",
+      "459 0.2942843922884515\n",
+      "479 0.2927465268051676\n",
+      "499 0.2927465268051676\n",
+      "266.60657294935265\n",
+      "----------------- I-7---------------------\n",
+      "19 0.28853069662132586\n",
+      "39 0.28853069662132586\n",
+      "59 0.28853069662132586\n",
+      "79 0.28853069662132586\n",
+      "99 0.28853069662132586\n",
+      "119 0.28853069662132586\n",
+      "139 0.28853069662132586\n",
+      "159 0.28853069662132586\n",
+      "179 0.28853069662132586\n",
+      "199 0.28853069662132586\n",
+      "219 0.28853069662132586\n",
+      "239 0.28853069662132586\n",
+      "259 0.28853069662132586\n",
+      "279 0.28853069662132586\n",
+      "299 0.28853069662132586\n",
+      "319 0.28853069662132586\n",
+      "339 0.28853069662132586\n",
+      "359 0.28853069662132586\n",
+      "379 0.28839966168930586\n",
+      "399 0.28839966168930586\n",
+      "419 0.28839966168930586\n",
+      "439 0.28839966168930586\n",
+      "459 0.28839966168930586\n",
+      "479 0.28839966168930586\n",
+      "499 0.28839966168930586\n",
+      "257.248802456802\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2597640536323966\n",
+      "39 0.2597640536323966\n",
+      "59 0.2597640536323966\n",
+      "79 0.2597640536323966\n",
+      "99 0.2597640536323966\n",
+      "119 0.2597640536323966\n",
+      "139 0.2597640536323966\n",
+      "159 0.2597640536323966\n",
+      "179 0.2597640536323966\n",
+      "199 0.2597640536323966\n",
+      "219 0.25959035713920864\n",
+      "239 0.25959035713920864\n",
+      "259 0.25959035713920864\n",
+      "279 0.25923170208747165\n",
+      "299 0.25923170208747165\n",
+      "319 0.25923170208747165\n",
+      "339 0.25923170208747165\n",
+      "359 0.25923170208747165\n",
+      "379 0.25923170208747165\n",
+      "399 0.25745323333017966\n",
+      "419 0.25745323333017966\n",
+      "439 0.25745323333017966\n",
+      "459 0.25745323333017966\n",
+      "479 0.25745323333017966\n",
+      "499 0.25745323333017966\n",
+      "363.3714945173941\n",
+      "----------------- I-9---------------------\n",
+      "19 0.2667760430857259\n",
+      "39 0.2667760430857259\n",
+      "59 0.2667760430857259\n",
+      "79 0.2667760430857259\n",
+      "99 0.2664998161769569\n",
+      "119 0.2664998161769569\n",
+      "139 0.2664280976170469\n",
+      "159 0.2664280976170469\n",
+      "179 0.266154297549544\n",
+      "199 0.266154297549544\n",
+      "219 0.26602608056955934\n",
+      "239 0.2658827684902361\n",
+      "259 0.26483293636393823\n",
+      "279 0.26483293636393823\n",
+      "299 0.26483293636393823\n",
+      "319 0.26483293636393823\n",
+      "339 0.26483293636393823\n",
+      "359 0.2643260248125881\n",
+      "379 0.2643260248125881\n",
+      "399 0.2643260248125881\n",
+      "419 0.2643260248125881\n",
+      "439 0.2643260248125881\n",
+      "459 0.2643260248125881\n",
+      "479 0.2643260248125881\n",
+      "499 0.2641872473033292\n",
+      "315.5090543451468\n",
+      "----------------- I-10---------------------\n",
+      "19 0.24997087751377284\n",
+      "39 0.24997087751377284\n",
+      "59 0.24916752915695142\n",
+      "79 0.24916752915695142\n",
+      "99 0.24916752915695142\n",
+      "119 0.24916752915695142\n",
+      "139 0.24916752915695142\n",
+      "159 0.24916752915695142\n",
+      "179 0.24916752915695142\n",
+      "199 0.24916752915695142\n",
+      "219 0.24916752915695142\n",
+      "239 0.24916752915695142\n",
+      "259 0.24916752915695142\n",
+      "279 0.24916752915695142\n",
+      "299 0.24916752915695142\n",
+      "319 0.24916752915695142\n",
+      "339 0.24916752915695142\n",
+      "359 0.2491303287832471\n",
+      "379 0.2491303287832471\n",
+      "399 0.2491303287832471\n",
+      "419 0.2491303287832471\n",
+      "439 0.2491303287832471\n",
+      "459 0.2491303287832471\n",
+      "479 0.2491303287832471\n",
+      "499 0.2491303287832471\n",
+      "324.0737161763321\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:7\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.3032035718411194\n",
+      "39 0.3032035718411194\n",
+      "59 0.3032035718411194\n",
+      "79 0.3032035718411194\n",
+      "99 0.3032035718411194\n",
+      "119 0.3032035718411194\n",
+      "139 0.3032035718411194\n",
+      "159 0.3032035718411194\n",
+      "179 0.3032035718411194\n",
+      "199 0.3032035718411194\n",
+      "219 0.3032035718411194\n",
+      "239 0.3032035718411194\n",
+      "259 0.3031061126407757\n",
+      "279 0.3031061126407757\n",
+      "299 0.3031061126407757\n",
+      "319 0.3012498556217673\n",
+      "339 0.3012498556217673\n",
+      "359 0.3012498556217673\n",
+      "379 0.3012498556217673\n",
+      "399 0.3012498556217673\n",
+      "419 0.3008723500275003\n",
+      "439 0.3008723500275003\n",
+      "459 0.3008723500275003\n",
+      "479 0.3008723500275003\n",
+      "499 0.3007213422460303\n",
+      "431.9064995798926\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3032035718411194\n",
+      "39 0.3032035718411194\n",
+      "59 0.3032035718411194\n",
+      "79 0.3032035718411194\n",
+      "99 0.3032035718411194\n",
+      "119 0.3032035718411194\n",
+      "139 0.3032035718411194\n",
+      "159 0.3032035718411194\n",
+      "179 0.3032035718411194\n",
+      "199 0.3032035718411194\n",
+      "219 0.3032035718411194\n",
+      "239 0.3032035718411194\n",
+      "259 0.3032035718411194\n",
+      "279 0.3032035718411194\n",
+      "299 0.3032035718411194\n",
+      "319 0.3032035718411194\n",
+      "339 0.3032035718411194\n",
+      "359 0.3032035718411194\n",
+      "379 0.3032035718411194\n",
+      "399 0.3032035718411194\n",
+      "419 0.3032035718411194\n",
+      "439 0.3032035718411194\n",
+      "459 0.3032035718411194\n",
+      "479 0.3032035718411194\n",
+      "499 0.3032035718411194\n",
+      "433.30439353979455\n",
+      "----------------- I-3---------------------\n",
+      "19 0.25997096439711126\n",
+      "39 0.25997096439711126\n",
+      "59 0.25871534353426195\n",
+      "79 0.2580936764752171\n",
+      "99 0.2580936764752171\n",
+      "119 0.2580936764752171\n",
+      "139 0.2580936764752171\n",
+      "159 0.2580936764752171\n",
+      "179 0.2580936764752171\n",
+      "199 0.2580936764752171\n",
+      "219 0.25765614917131874\n",
+      "239 0.2572099704999072\n",
+      "259 0.2572099704999072\n",
+      "279 0.25692350247898543\n",
+      "299 0.25692350247898543\n",
+      "319 0.25658916703348666\n",
+      "339 0.25645290464847215\n",
+      "359 0.25645290464847215\n",
+      "379 0.2564033452592475\n",
+      "399 0.2564033452592475\n",
+      "419 0.25616139181997943\n",
+      "439 0.25616139181997943\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "459 0.2560862368295774\n",
+      "479 0.2560862368295774\n",
+      "499 0.2560862368295774\n",
+      "417.59091831484096\n",
+      "----------------- I-4---------------------\n",
+      "19 0.25927095204282125\n",
+      "39 0.25927095204282125\n",
+      "59 0.25927095204282125\n",
+      "79 0.25927095204282125\n",
+      "99 0.25927095204282125\n",
+      "119 0.25927095204282125\n",
+      "139 0.25927095204282125\n",
+      "159 0.25927095204282125\n",
+      "179 0.25927095204282125\n",
+      "199 0.25927095204282125\n",
+      "219 0.25927095204282125\n",
+      "239 0.25927095204282125\n",
+      "259 0.25927095204282125\n",
+      "279 0.25927095204282125\n",
+      "299 0.25927095204282125\n",
+      "319 0.25927095204282125\n",
+      "339 0.25927095204282125\n",
+      "359 0.25927095204282125\n",
+      "379 0.25927095204282125\n",
+      "399 0.25856835077242635\n",
+      "419 0.25856835077242635\n",
+      "439 0.25856835077242635\n",
+      "459 0.25856835077242635\n",
+      "479 0.25856835077242635\n",
+      "499 0.25856835077242635\n",
+      "325.6614835576995\n",
+      "----------------- I-5---------------------\n",
+      "19 0.2474961257521193\n",
+      "39 0.2474961257521193\n",
+      "59 0.2474961257521193\n",
+      "79 0.2474961257521193\n",
+      "99 0.2474961257521193\n",
+      "119 0.2474961257521193\n",
+      "139 0.2474961257521193\n",
+      "159 0.2474961257521193\n",
+      "179 0.2474961257521193\n",
+      "199 0.2474961257521193\n",
+      "219 0.2474961257521193\n",
+      "239 0.2474961257521193\n",
+      "259 0.2474961257521193\n",
+      "279 0.2474961257521193\n",
+      "299 0.2474961257521193\n",
+      "319 0.24746286588449717\n",
+      "339 0.24746286588449717\n",
+      "359 0.24746286588449717\n",
+      "379 0.24746286588449717\n",
+      "399 0.24746286588449717\n",
+      "419 0.24746286588449717\n",
+      "439 0.24746286588449717\n",
+      "459 0.24746286588449717\n",
+      "479 0.24746286588449717\n",
+      "499 0.24746286588449717\n",
+      "323.1480359861975\n",
+      "----------------- I-6---------------------\n",
+      "19 0.2942843922884515\n",
+      "39 0.2942843922884515\n",
+      "59 0.2942843922884515\n",
+      "79 0.2942843922884515\n",
+      "99 0.2942843922884515\n",
+      "119 0.2942843922884515\n",
+      "139 0.2942843922884515\n",
+      "159 0.2942843922884515\n",
+      "179 0.2942843922884515\n",
+      "199 0.2942843922884515\n",
+      "219 0.2942843922884515\n",
+      "239 0.2942843922884515\n",
+      "259 0.2942843922884515\n",
+      "279 0.2942843922884515\n",
+      "299 0.2942843922884515\n",
+      "319 0.2942843922884515\n",
+      "339 0.2942843922884515\n",
+      "359 0.2942843922884515\n",
+      "379 0.294006644643571\n",
+      "399 0.294006644643571\n",
+      "419 0.294006644643571\n",
+      "439 0.294006644643571\n",
+      "459 0.294006644643571\n",
+      "479 0.294006644643571\n",
+      "499 0.294006644643571\n",
+      "270.4361877944122\n",
+      "----------------- I-7---------------------\n",
+      "19 0.28853069662132586\n",
+      "39 0.28853069662132586\n",
+      "59 0.28853069662132586\n",
+      "79 0.28853069662132586\n",
+      "99 0.28853069662132586\n",
+      "119 0.28853069662132586\n",
+      "139 0.28853069662132586\n",
+      "159 0.2882611395839973\n",
+      "179 0.2882611395839973\n",
+      "199 0.2882611395839973\n",
+      "219 0.2882611395839973\n",
+      "239 0.2882611395839973\n",
+      "259 0.2882611395839973\n",
+      "279 0.2882611395839973\n",
+      "299 0.2882611395839973\n",
+      "319 0.2882611395839973\n",
+      "339 0.2882611395839973\n",
+      "359 0.2882611395839973\n",
+      "379 0.2882611395839973\n",
+      "399 0.2882611395839973\n",
+      "419 0.2882611395839973\n",
+      "439 0.2882611395839973\n",
+      "459 0.2882611395839973\n",
+      "479 0.2882611395839973\n",
+      "499 0.2882611395839973\n",
+      "259.3205498005679\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2583231873984606\n",
+      "39 0.2583231873984606\n",
+      "59 0.2583231873984606\n",
+      "79 0.2583231873984606\n",
+      "99 0.257286416666104\n",
+      "119 0.257286416666104\n",
+      "139 0.257286416666104\n",
+      "159 0.257286416666104\n",
+      "179 0.257286416666104\n",
+      "199 0.257286416666104\n",
+      "219 0.257286416666104\n",
+      "239 0.257286416666104\n",
+      "259 0.257286416666104\n",
+      "279 0.257286416666104\n",
+      "299 0.257286416666104\n",
+      "319 0.257286416666104\n",
+      "339 0.257286416666104\n",
+      "359 0.257286416666104\n",
+      "379 0.257286416666104\n",
+      "399 0.257286416666104\n",
+      "419 0.2571082197697494\n",
+      "439 0.25660894913405313\n",
+      "459 0.25657413985925415\n",
+      "479 0.25657413985925415\n",
+      "499 0.2565014745274816\n",
+      "360.18362240913007\n",
+      "----------------- I-9---------------------\n",
+      "19 0.2642498980795906\n",
+      "39 0.2642498980795906\n",
+      "59 0.2642498980795906\n",
+      "79 0.2642498980795906\n",
+      "99 0.2642498980795906\n",
+      "119 0.2642498980795906\n",
+      "139 0.2639345242921308\n",
+      "159 0.2639345242921308\n",
+      "179 0.26388472875414776\n",
+      "199 0.26388472875414776\n",
+      "219 0.26388472875414776\n",
+      "239 0.26388472875414776\n",
+      "259 0.26388472875414776\n",
+      "279 0.26388472875414776\n",
+      "299 0.26388472875414776\n",
+      "319 0.2634395605090975\n",
+      "339 0.2626774160465388\n",
+      "359 0.2626774160465388\n",
+      "379 0.2626774160465388\n",
+      "399 0.2626774160465388\n",
+      "419 0.2626774160465388\n",
+      "439 0.2626774160465388\n",
+      "459 0.2626774160465388\n",
+      "479 0.2626774160465388\n",
+      "499 0.2626774160465388\n",
+      "315.52194570373575\n",
+      "----------------- I-10---------------------\n",
+      "19 0.24919047329540672\n",
+      "39 0.24919047329540672\n",
+      "59 0.24919047329540672\n",
+      "79 0.24919047329540672\n",
+      "99 0.24919047329540672\n",
+      "119 0.24919047329540672\n",
+      "139 0.24919047329540672\n",
+      "159 0.24919047329540672\n",
+      "179 0.24919047329540672\n",
+      "199 0.24919047329540672\n",
+      "219 0.24919047329540672\n",
+      "239 0.24919047329540672\n",
+      "259 0.24919047329540672\n",
+      "279 0.24919047329540672\n",
+      "299 0.24919047329540672\n",
+      "319 0.24919047329540672\n",
+      "339 0.24919047329540672\n",
+      "359 0.24919047329540672\n",
+      "379 0.24919047329540672\n",
+      "399 0.24919047329540672\n",
+      "419 0.24919047329540672\n",
+      "439 0.24919047329540672\n",
+      "459 0.24919047329540672\n",
+      "479 0.24919047329540672\n",
+      "499 0.24919047329540672\n",
+      "323.41226023700364\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:8\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.3007213422460303\n",
+      "39 0.3007213422460303\n",
+      "59 0.30053505022154\n",
+      "79 0.30053505022154\n",
+      "99 0.30053505022154\n",
+      "119 0.30053505022154\n",
+      "139 0.30053505022154\n",
+      "159 0.30053505022154\n",
+      "179 0.30053505022154\n",
+      "199 0.2999498817836074\n",
+      "219 0.29922103952452433\n",
+      "239 0.29922103952452433\n",
+      "259 0.29922103952452433\n",
+      "279 0.29922103952452433\n",
+      "299 0.29922103952452433\n",
+      "319 0.29922103952452433\n",
+      "339 0.29922103952452433\n",
+      "359 0.29867178854810067\n",
+      "379 0.29867178854810067\n",
+      "399 0.29867178854810067\n",
+      "419 0.29867178854810067\n",
+      "439 0.29867178854810067\n",
+      "459 0.29867178854810067\n",
+      "479 0.29867178854810067\n",
+      "499 0.29867178854810067\n",
+      "436.25993493324245\n",
+      "----------------- I-2---------------------\n",
+      "19 0.3007213422460303\n",
+      "39 0.3007213422460303\n",
+      "59 0.3007213422460303\n",
+      "79 0.3007213422460303\n",
+      "99 0.3007213422460303\n",
+      "119 0.3007213422460303\n",
+      "139 0.3007213422460303\n",
+      "159 0.3007213422460303\n",
+      "179 0.3007213422460303\n",
+      "199 0.3007213422460303\n",
+      "219 0.3007213422460303\n",
+      "239 0.3007213422460303\n",
+      "259 0.3007213422460303\n",
+      "279 0.3007213422460303\n",
+      "299 0.3007213422460303\n",
+      "319 0.3007213422460303\n",
+      "339 0.3007213422460303\n",
+      "359 0.3007213422460303\n",
+      "379 0.3007213422460303\n",
+      "399 0.3007213422460303\n",
+      "419 0.3007213422460303\n",
+      "439 0.3007213422460303\n",
+      "459 0.3007213422460303\n",
+      "479 0.3007213422460303\n",
+      "499 0.3007213422460303\n",
+      "431.9064995798926\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2559430029687611\n",
+      "39 0.2557901947716235\n",
+      "59 0.2557901947716235\n",
+      "79 0.2557901947716235\n",
+      "99 0.2557137717847643\n",
+      "119 0.2557137717847643\n",
+      "139 0.2557137717847643\n",
+      "159 0.2556703584253226\n",
+      "179 0.2554901785258299\n",
+      "199 0.2554901785258299\n",
+      "219 0.2554901785258299\n",
+      "239 0.2552822203476783\n",
+      "259 0.2552822203476783\n",
+      "279 0.2552822203476783\n",
+      "299 0.2551957668101106\n",
+      "319 0.25519385050414173\n",
+      "339 0.25519385050414173\n",
+      "359 0.25518246288905927\n",
+      "379 0.25518246288905927\n",
+      "399 0.25518246288905927\n",
+      "419 0.25518246288905927\n",
+      "439 0.25518246288905927\n",
+      "459 0.25518246288905927\n",
+      "479 0.2550556791349926\n",
+      "499 0.2548892952147748\n",
+      "419.1858626713999\n",
+      "----------------- I-4---------------------\n",
+      "19 0.2592162810171437\n",
+      "39 0.2592162810171437\n",
+      "59 0.2592162810171437\n",
+      "79 0.2592162810171437\n",
+      "99 0.2592162810171437\n",
+      "119 0.2592162810171437\n",
+      "139 0.2592162810171437\n",
+      "159 0.2592162810171437\n",
+      "179 0.2592162810171437\n",
+      "199 0.2592162810171437\n",
+      "219 0.2592162810171437\n",
+      "239 0.2592162810171437\n",
+      "259 0.2592162810171437\n",
+      "279 0.2592162810171437\n",
+      "299 0.2592162810171437\n",
+      "319 0.2592162810171437\n",
+      "339 0.2592162810171437\n",
+      "359 0.2592162810171437\n",
+      "379 0.2592162810171437\n",
+      "399 0.2592162810171437\n",
+      "419 0.2578451656515021\n",
+      "439 0.2578451656515021\n",
+      "459 0.2578451656515021\n",
+      "479 0.2578451656515021\n",
+      "499 0.2578451656515021\n",
+      "324.40377158418727\n",
+      "----------------- I-5---------------------\n",
+      "19 0.2474961257521193\n",
+      "39 0.2474961257521193\n",
+      "59 0.24711804829537257\n",
+      "79 0.24711804829537257\n",
+      "99 0.24711804829537257\n",
+      "119 0.24711804829537257\n",
+      "139 0.24711804829537257\n",
+      "159 0.24711804829537257\n",
+      "179 0.24711804829537257\n",
+      "199 0.24711804829537257\n",
+      "219 0.24711804829537257\n",
+      "239 0.24711804829537257\n",
+      "259 0.24711804829537257\n",
+      "279 0.24707688739823133\n",
+      "299 0.24707688739823133\n",
+      "319 0.24707688739823133\n",
+      "339 0.24707688739823133\n",
+      "359 0.24707688739823133\n",
+      "379 0.24707688739823133\n",
+      "399 0.24707688739823133\n",
+      "419 0.24707688739823133\n",
+      "439 0.24707688739823133\n",
+      "459 0.24707688739823133\n",
+      "479 0.24707688739823133\n",
+      "499 0.24707688739823133\n",
+      "321.00118684032975\n",
+      "----------------- I-6---------------------\n",
+      "19 0.2942843922884515\n",
+      "39 0.2942843922884515\n",
+      "59 0.2942843922884515\n",
+      "79 0.2942843922884515\n",
+      "99 0.2942843922884515\n",
+      "119 0.2942843922884515\n",
+      "139 0.2942843922884515\n",
+      "159 0.2942843922884515\n",
+      "179 0.2942843922884515\n",
+      "199 0.2942843922884515\n",
+      "219 0.2942843922884515\n",
+      "239 0.2942843922884515\n",
+      "259 0.2942843922884515\n",
+      "279 0.2942843922884515\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "299 0.2942843922884515\n",
+      "319 0.2942843922884515\n",
+      "339 0.2942843922884515\n",
+      "359 0.29258659760508055\n",
+      "379 0.29258659760508055\n",
+      "399 0.29258659760508055\n",
+      "419 0.29258659760508055\n",
+      "439 0.29258659760508055\n",
+      "459 0.29258659760508055\n",
+      "479 0.29258659760508055\n",
+      "499 0.29258659760508055\n",
+      "261.5690666961895\n",
+      "----------------- I-7---------------------\n",
+      "19 0.28853069662132586\n",
+      "39 0.28853069662132586\n",
+      "59 0.28853069662132586\n",
+      "79 0.28853069662132586\n",
+      "99 0.28853069662132586\n",
+      "119 0.2865228865529172\n",
+      "139 0.2865228865529172\n",
+      "159 0.2865228865529172\n",
+      "179 0.2865228865529172\n",
+      "199 0.2865228865529172\n",
+      "219 0.2865228865529172\n",
+      "239 0.2865228865529172\n",
+      "259 0.2865228865529172\n",
+      "279 0.2865228865529172\n",
+      "299 0.2865228865529172\n",
+      "319 0.2865228865529172\n",
+      "339 0.2865228865529172\n",
+      "359 0.2865228865529172\n",
+      "379 0.2865228865529172\n",
+      "399 0.2865228865529172\n",
+      "419 0.2865228865529172\n",
+      "439 0.2865228865529172\n",
+      "459 0.2865228865529172\n",
+      "479 0.2865228865529172\n",
+      "499 0.2865228865529172\n",
+      "255.20949752933953\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2565538999882591\n",
+      "39 0.2565538999882591\n",
+      "59 0.2565538999882591\n",
+      "79 0.2560621236459524\n",
+      "99 0.2560621236459524\n",
+      "119 0.2560621236459524\n",
+      "139 0.2560621236459524\n",
+      "159 0.2560621236459524\n",
+      "179 0.25591185597431554\n",
+      "199 0.25591185597431554\n",
+      "219 0.25591185597431554\n",
+      "239 0.25585863755591665\n",
+      "259 0.25585863755591665\n",
+      "279 0.25585863755591665\n",
+      "299 0.25585863755591665\n",
+      "319 0.25585863755591665\n",
+      "339 0.25585863755591665\n",
+      "359 0.25585863755591665\n",
+      "379 0.25585863755591665\n",
+      "399 0.25580987301621944\n",
+      "419 0.25580987301621944\n",
+      "439 0.25580987301621944\n",
+      "459 0.25580987301621944\n",
+      "479 0.25580987301621944\n",
+      "499 0.25580987301621944\n",
+      "359.7733898810103\n",
+      "----------------- I-9---------------------\n",
+      "19 0.26307847125354344\n",
+      "39 0.26307847125354344\n",
+      "59 0.26307847125354344\n",
+      "79 0.26307847125354344\n",
+      "99 0.2629991085773715\n",
+      "119 0.2629991085773715\n",
+      "139 0.2629519829579551\n",
+      "159 0.2625687835728924\n",
+      "179 0.2625687835728924\n",
+      "199 0.2625687835728924\n",
+      "219 0.2625687835728924\n",
+      "239 0.2625687835728924\n",
+      "259 0.2625687835728924\n",
+      "279 0.2625687835728924\n",
+      "299 0.2625687835728924\n",
+      "319 0.26187257311255724\n",
+      "339 0.26187257311255724\n",
+      "359 0.26187257311255724\n",
+      "379 0.26187257311255724\n",
+      "399 0.26187257311255724\n",
+      "419 0.26187257311255724\n",
+      "439 0.26187257311255724\n",
+      "459 0.26187257311255724\n",
+      "479 0.26187257311255724\n",
+      "499 0.26180346942145616\n",
+      "316.10373007501204\n",
+      "----------------- I-10---------------------\n",
+      "19 0.2494941361731838\n",
+      "39 0.24773641569507188\n",
+      "59 0.24773641569507188\n",
+      "79 0.24773641569507188\n",
+      "99 0.24773641569507188\n",
+      "119 0.24773641569507188\n",
+      "139 0.24773641569507188\n",
+      "159 0.24773641569507188\n",
+      "179 0.24773641569507188\n",
+      "199 0.24773641569507188\n",
+      "219 0.24773641569507188\n",
+      "239 0.24773641569507188\n",
+      "259 0.24773641569507188\n",
+      "279 0.24773641569507188\n",
+      "299 0.24773641569507188\n",
+      "319 0.24773641569507188\n",
+      "339 0.24773641569507188\n",
+      "359 0.24773641569507188\n",
+      "379 0.24773641569507188\n",
+      "399 0.24773641569507188\n",
+      "419 0.24773641569507188\n",
+      "439 0.24773641569507188\n",
+      "459 0.24773641569507188\n",
+      "479 0.24773641569507188\n",
+      "499 0.24773641569507188\n",
+      "328.2416558681744\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:9\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.29905676526051017\n",
+      "39 0.29905676526051017\n",
+      "59 0.29905676526051017\n",
+      "79 0.2988670927649421\n",
+      "99 0.2988670927649421\n",
+      "119 0.2988670927649421\n",
+      "139 0.2988670927649421\n",
+      "159 0.2988670927649421\n",
+      "179 0.2988670927649421\n",
+      "199 0.29843876530619434\n",
+      "219 0.29843876530619434\n",
+      "239 0.29843876530619434\n",
+      "259 0.29843876530619434\n",
+      "279 0.29843876530619434\n",
+      "299 0.29663746377574013\n",
+      "319 0.29663746377574013\n",
+      "339 0.2958691047511778\n",
+      "359 0.2958691047511778\n",
+      "379 0.2958691047511778\n",
+      "399 0.2958691047511778\n",
+      "419 0.2958691047511778\n",
+      "439 0.2958691047511778\n",
+      "459 0.2952863347480294\n",
+      "479 0.2952863347480294\n",
+      "499 0.2952863347480294\n",
+      "438.26509446549863\n",
+      "----------------- I-2---------------------\n",
+      "19 0.31216173640142836\n",
+      "39 0.31216173640142836\n",
+      "59 0.30323234081016637\n",
+      "79 0.30323234081016637\n",
+      "99 0.30323234081016637\n",
+      "119 0.30323234081016637\n",
+      "139 0.30323234081016637\n",
+      "159 0.30323234081016637\n",
+      "179 0.30323234081016637\n",
+      "199 0.30323234081016637\n",
+      "219 0.30323234081016637\n",
+      "239 0.30323234081016637\n",
+      "259 0.30323234081016637\n",
+      "279 0.30323234081016637\n",
+      "299 0.30323234081016637\n",
+      "319 0.30323234081016637\n",
+      "339 0.30323234081016637\n",
+      "359 0.30323234081016637\n",
+      "379 0.30323234081016637\n",
+      "399 0.30323234081016637\n",
+      "419 0.30323234081016637\n",
+      "439 0.30323234081016637\n",
+      "459 0.30323234081016637\n",
+      "479 0.30323234081016637\n",
+      "499 0.30323234081016637\n",
+      "431.0010096658657\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2549159074031953\n",
+      "39 0.2549159074031953\n",
+      "59 0.2549159074031953\n",
+      "79 0.25469798823314027\n",
+      "99 0.25469798823314027\n",
+      "119 0.25469798823314027\n",
+      "139 0.25469798823314027\n",
+      "159 0.25469798823314027\n",
+      "179 0.25469798823314027\n",
+      "199 0.25469798823314027\n",
+      "219 0.25469798823314027\n",
+      "239 0.25469798823314027\n",
+      "259 0.25469798823314027\n",
+      "279 0.25469798823314027\n",
+      "299 0.2546342490096468\n",
+      "319 0.2546014202369255\n",
+      "339 0.2546014202369255\n",
+      "359 0.25440982760346875\n",
+      "379 0.25440982760346875\n",
+      "399 0.25440982760346875\n",
+      "419 0.25440982760346875\n",
+      "439 0.2542578541493873\n",
+      "459 0.2542578541493873\n",
+      "479 0.2542578541493873\n",
+      "499 0.2542578541493873\n",
+      "420.380092974052\n",
+      "----------------- I-4---------------------\n",
+      "19 0.2592162810171437\n",
+      "39 0.2592162810171437\n",
+      "59 0.25841286895452215\n",
+      "79 0.25841286895452215\n",
+      "99 0.25841286895452215\n",
+      "119 0.25841286895452215\n",
+      "139 0.25841286895452215\n",
+      "159 0.25841286895452215\n",
+      "179 0.25841286895452215\n",
+      "199 0.25841286895452215\n",
+      "219 0.25841286895452215\n",
+      "239 0.25841286895452215\n",
+      "259 0.25841286895452215\n",
+      "279 0.25841286895452215\n",
+      "299 0.25657446756240626\n",
+      "319 0.25657446756240626\n",
+      "339 0.25657446756240626\n",
+      "359 0.25657446756240626\n",
+      "379 0.25657446756240626\n",
+      "399 0.25657446756240626\n",
+      "419 0.25657446756240626\n",
+      "439 0.25657446756240626\n",
+      "459 0.25657446756240626\n",
+      "479 0.25657446756240626\n",
+      "499 0.25657446756240626\n",
+      "324.5249152550282\n",
+      "----------------- I-5---------------------\n",
+      "19 0.24711804829537257\n",
+      "39 0.24711804829537257\n",
+      "59 0.24692388795870296\n",
+      "79 0.24692388795870296\n",
+      "99 0.24692388795870296\n",
+      "119 0.24692388795870296\n",
+      "139 0.24692388795870296\n",
+      "159 0.24692388795870296\n",
+      "179 0.24692388795870296\n",
+      "199 0.24692388795870296\n",
+      "219 0.24692388795870296\n",
+      "239 0.24692388795870296\n",
+      "259 0.24692388795870296\n",
+      "279 0.24692388795870296\n",
+      "299 0.24692388795870296\n",
+      "319 0.24667223272063094\n",
+      "339 0.24667223272063094\n",
+      "359 0.24667223272063094\n",
+      "379 0.24667223272063094\n",
+      "399 0.24667223272063094\n",
+      "419 0.24667223272063094\n",
+      "439 0.24667223272063094\n",
+      "459 0.24667223272063094\n",
+      "479 0.24667223272063094\n",
+      "499 0.24667223272063094\n",
+      "321.9699244343464\n",
+      "----------------- I-6---------------------\n",
+      "19 0.29307467553338196\n",
+      "39 0.2925809255361403\n",
+      "59 0.2925809255361403\n",
+      "79 0.2925809255361403\n",
+      "99 0.2925809255361403\n",
+      "119 0.2925809255361403\n",
+      "139 0.2925809255361403\n",
+      "159 0.2925809255361403\n",
+      "179 0.2925809255361403\n",
+      "199 0.2925809255361403\n",
+      "219 0.2925809255361403\n",
+      "239 0.2925809255361403\n",
+      "259 0.2925809255361403\n",
+      "279 0.2925809255361403\n",
+      "299 0.2925809255361403\n",
+      "319 0.2925809255361403\n",
+      "339 0.2925809255361403\n",
+      "359 0.2925809255361403\n",
+      "379 0.2925809255361403\n",
+      "399 0.2925809255361403\n",
+      "419 0.2925809255361403\n",
+      "439 0.2925809255361403\n",
+      "459 0.2925809255361403\n",
+      "479 0.2925809255361403\n",
+      "499 0.2925809255361403\n",
+      "266.02072302836757\n",
+      "----------------- I-7---------------------\n",
+      "19 0.2878026908768705\n",
+      "39 0.2878026908768705\n",
+      "59 0.2878026908768705\n",
+      "79 0.2878026908768705\n",
+      "99 0.2878026908768705\n",
+      "119 0.2855699808674462\n",
+      "139 0.2855699808674462\n",
+      "159 0.2855699808674462\n",
+      "179 0.2855699808674462\n",
+      "199 0.2855699808674462\n",
+      "219 0.2855699808674462\n",
+      "239 0.2855699808674462\n",
+      "259 0.2855699808674462\n",
+      "279 0.2855699808674462\n",
+      "299 0.2855699808674462\n",
+      "319 0.2855699808674462\n",
+      "339 0.2855699808674462\n",
+      "359 0.2855699808674462\n",
+      "379 0.2855699808674462\n",
+      "399 0.2855699808674462\n",
+      "419 0.2855699808674462\n",
+      "439 0.2855699808674462\n",
+      "459 0.2855699808674462\n",
+      "479 0.2855699808674462\n",
+      "499 0.2855699808674462\n",
+      "258.49145480985385\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2558147605420098\n",
+      "39 0.2558147605420098\n",
+      "59 0.2552287622756808\n",
+      "79 0.2552287622756808\n",
+      "99 0.2552287622756808\n",
+      "119 0.2552287622756808\n",
+      "139 0.2552287622756808\n",
+      "159 0.2552287622756808\n",
+      "179 0.2552287622756808\n",
+      "199 0.2552287622756808\n",
+      "219 0.2551554318527767\n",
+      "239 0.2551554318527767\n",
+      "259 0.2549714533412084\n",
+      "279 0.2549714533412084\n",
+      "299 0.2549714533412084\n",
+      "319 0.2549714533412084\n",
+      "339 0.2549714533412084\n",
+      "359 0.2549714533412084\n",
+      "379 0.2549714533412084\n",
+      "399 0.2549714533412084\n",
+      "419 0.2549714533412084\n",
+      "439 0.2549714533412084\n",
+      "459 0.2549714533412084\n",
+      "479 0.2549714533412084\n",
+      "499 0.25487128517445945\n",
+      "360.3476167841567\n",
+      "----------------- I-9---------------------\n",
+      "19 0.26187257311255724\n",
+      "39 0.26187257311255724\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "59 0.26187257311255724\n",
+      "79 0.26187257311255724\n",
+      "99 0.26187257311255724\n",
+      "119 0.26187257311255724\n",
+      "139 0.26187257311255724\n",
+      "159 0.26187257311255724\n",
+      "179 0.26187257311255724\n",
+      "199 0.26187257311255724\n",
+      "219 0.26187257311255724\n",
+      "239 0.26187257311255724\n",
+      "259 0.26187257311255724\n",
+      "279 0.26187257311255724\n",
+      "299 0.26187257311255724\n",
+      "319 0.26187257311255724\n",
+      "339 0.26187257311255724\n",
+      "359 0.26187257311255724\n",
+      "379 0.26187257311255724\n",
+      "399 0.26187257311255724\n",
+      "419 0.26187257311255724\n",
+      "439 0.26187257311255724\n",
+      "459 0.26187257311255724\n",
+      "479 0.26187257311255724\n",
+      "499 0.26187257311255724\n",
+      "314.90738584287755\n",
+      "----------------- I-10---------------------\n",
+      "19 0.24823135064660318\n",
+      "39 0.24818015671567845\n",
+      "59 0.24818015671567845\n",
+      "79 0.24818015671567845\n",
+      "99 0.24818015671567845\n",
+      "119 0.24818015671567845\n",
+      "139 0.24796266158396577\n",
+      "159 0.24796266158396577\n",
+      "179 0.24796266158396577\n",
+      "199 0.24796266158396577\n",
+      "219 0.24796266158396577\n",
+      "239 0.24796266158396577\n",
+      "259 0.24796266158396577\n",
+      "279 0.24789895742171905\n",
+      "299 0.24789895742171905\n",
+      "319 0.24789895742171905\n",
+      "339 0.24789895742171905\n",
+      "359 0.24789895742171905\n",
+      "379 0.2477289015301001\n",
+      "399 0.24742724190386475\n",
+      "419 0.24742724190386475\n",
+      "439 0.24742724190386475\n",
+      "459 0.24742724190386475\n",
+      "479 0.24742724190386475\n",
+      "499 0.24742724190386475\n",
+      "336.58381818757204\n",
+      "Round robin best migration\n",
+      "==============================\n",
+      "Epoch #:10\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n",
+      "19 0.29609823536795316\n",
+      "39 0.29609823536795316\n",
+      "59 0.29609823536795316\n",
+      "79 0.29609823536795316\n",
+      "99 0.29609823536795316\n",
+      "119 0.29609823536795316\n",
+      "139 0.29609823536795316\n",
+      "159 0.29609823536795316\n",
+      "179 0.29609823536795316\n",
+      "199 0.29609823536795316\n",
+      "219 0.29609823536795316\n",
+      "239 0.29609823536795316\n",
+      "259 0.29499830204495686\n",
+      "279 0.29499830204495686\n",
+      "299 0.29499830204495686\n",
+      "319 0.29499830204495686\n",
+      "339 0.29499830204495686\n",
+      "359 0.29499830204495686\n",
+      "379 0.29499830204495686\n",
+      "399 0.29499830204495686\n",
+      "419 0.29499830204495686\n",
+      "439 0.29499830204495686\n",
+      "459 0.29499830204495686\n",
+      "479 0.29499830204495686\n",
+      "499 0.29499830204495686\n",
+      "438.00922123324483\n",
+      "----------------- I-2---------------------\n",
+      "19 0.31261613324217247\n",
+      "39 0.31261613324217247\n",
+      "59 0.31261613324217247\n",
+      "79 0.31261613324217247\n",
+      "99 0.31261613324217247\n",
+      "119 0.31261613324217247\n",
+      "139 0.31261613324217247\n",
+      "159 0.31261613324217247\n",
+      "179 0.31261613324217247\n",
+      "199 0.31261613324217247\n",
+      "219 0.31261613324217247\n",
+      "239 0.31261613324217247\n",
+      "259 0.31261613324217247\n",
+      "279 0.31261613324217247\n",
+      "299 0.31261613324217247\n",
+      "319 0.31261613324217247\n",
+      "339 0.31261613324217247\n",
+      "359 0.31261613324217247\n",
+      "379 0.31074465720249694\n",
+      "399 0.31074465720249694\n",
+      "419 0.31074465720249694\n",
+      "439 0.31074465720249694\n",
+      "459 0.31074465720249694\n",
+      "479 0.31074465720249694\n",
+      "499 0.31074465720249694\n",
+      "429.643855995255\n",
+      "----------------- I-3---------------------\n",
+      "19 0.2542831910233113\n",
+      "39 0.2542831910233113\n",
+      "59 0.2542831910233113\n",
+      "79 0.2542831910233113\n",
+      "99 0.2542831910233113\n",
+      "119 0.2542831910233113\n",
+      "139 0.2542831910233113\n",
+      "159 0.2542831910233113\n",
+      "179 0.2542831910233113\n",
+      "199 0.2542831910233113\n",
+      "219 0.2542831910233113\n",
+      "239 0.2542831910233113\n",
+      "259 0.2542831910233113\n",
+      "279 0.2542667133092697\n",
+      "299 0.2542667133092697\n",
+      "319 0.2542667133092697\n",
+      "339 0.2542667133092697\n",
+      "359 0.2542667133092697\n",
+      "379 0.2542632908311721\n",
+      "399 0.25416274267301\n",
+      "419 0.25389608022191645\n",
+      "439 0.25381196568906655\n",
+      "459 0.25381196568906655\n",
+      "479 0.25381196568906655\n",
+      "499 0.2536129891871847\n",
+      "420.97685669076225\n",
+      "----------------- I-4---------------------\n",
+      "19 0.2574321877953261\n",
+      "39 0.2574321877953261\n",
+      "59 0.2574321877953261\n",
+      "79 0.2574321877953261\n",
+      "99 0.2574321877953261\n",
+      "119 0.2574321877953261\n",
+      "139 0.2574321877953261\n",
+      "159 0.2574321877953261\n",
+      "179 0.2574321877953261\n",
+      "199 0.2574321877953261\n",
+      "219 0.2574321877953261\n",
+      "239 0.2574321877953261\n",
+      "259 0.2574321877953261\n",
+      "279 0.2574321877953261\n",
+      "299 0.2574321877953261\n",
+      "319 0.2574321877953261\n",
+      "339 0.2574321877953261\n",
+      "359 0.2574321877953261\n",
+      "379 0.2564862336438122\n",
+      "399 0.25540860034700336\n",
+      "419 0.25540860034700336\n",
+      "439 0.25540860034700336\n",
+      "459 0.25540860034700336\n",
+      "479 0.25540860034700336\n",
+      "499 0.25540860034700336\n",
+      "319.7419885796792\n",
+      "----------------- I-5---------------------\n",
+      "19 0.2467390747925906\n",
+      "39 0.2467390747925906\n",
+      "59 0.2467390747925906\n",
+      "79 0.2467390747925906\n",
+      "99 0.2467390747925906\n",
+      "119 0.2467390747925906\n",
+      "139 0.2467390747925906\n",
+      "159 0.2467390747925906\n",
+      "179 0.2467390747925906\n",
+      "199 0.2467390747925906\n",
+      "219 0.2467390747925906\n",
+      "239 0.2467390747925906\n",
+      "259 0.2467390747925906\n",
+      "279 0.2467390747925906\n",
+      "299 0.2467390747925906\n",
+      "319 0.2467390747925906\n",
+      "339 0.2467390747925906\n",
+      "359 0.2467390747925906\n",
+      "379 0.2467390747925906\n",
+      "399 0.2467390747925906\n",
+      "419 0.2467390747925906\n",
+      "439 0.2467390747925906\n",
+      "459 0.2467390747925906\n",
+      "479 0.2467390747925906\n",
+      "499 0.2467390747925906\n",
+      "321.7237627850665\n",
+      "----------------- I-6---------------------\n",
+      "19 0.2935223814190692\n",
+      "39 0.2935223814190692\n",
+      "59 0.2935223814190692\n",
+      "79 0.2935223814190692\n",
+      "99 0.2935223814190692\n",
+      "119 0.2935223814190692\n",
+      "139 0.2935223814190692\n",
+      "159 0.2935223814190692\n",
+      "179 0.2935223814190692\n",
+      "199 0.2935223814190692\n",
+      "219 0.2935223814190692\n",
+      "239 0.2935223814190692\n",
+      "259 0.2935223814190692\n",
+      "279 0.2935223814190692\n",
+      "299 0.2935223814190692\n",
+      "319 0.2935223814190692\n",
+      "339 0.2935223814190692\n",
+      "359 0.2935223814190692\n",
+      "379 0.2935223814190692\n",
+      "399 0.2935223814190692\n",
+      "419 0.2935223814190692\n",
+      "439 0.2935223814190692\n",
+      "459 0.2935223814190692\n",
+      "479 0.2910119442338788\n",
+      "499 0.2910119442338788\n",
+      "267.8781091862889\n",
+      "----------------- I-7---------------------\n",
+      "19 0.28704660057233383\n",
+      "39 0.28704660057233383\n",
+      "59 0.28704660057233383\n",
+      "79 0.28704660057233383\n",
+      "99 0.28704660057233383\n",
+      "119 0.28704660057233383\n",
+      "139 0.28704660057233383\n",
+      "159 0.28704660057233383\n",
+      "179 0.28704660057233383\n",
+      "199 0.28704660057233383\n",
+      "219 0.28704660057233383\n",
+      "239 0.28704660057233383\n",
+      "259 0.28704660057233383\n",
+      "279 0.28704660057233383\n",
+      "299 0.28704660057233383\n",
+      "319 0.28704660057233383\n",
+      "339 0.28704660057233383\n",
+      "359 0.28694297800879026\n",
+      "379 0.28694297800879026\n",
+      "399 0.28694297800879026\n",
+      "419 0.28694297800879026\n",
+      "439 0.28694297800879026\n",
+      "459 0.28694297800879026\n",
+      "479 0.28694297800879026\n",
+      "499 0.28694297800879026\n",
+      "259.5240707444036\n",
+      "----------------- I-8---------------------\n",
+      "19 0.2548750002657946\n",
+      "39 0.2548750002657946\n",
+      "59 0.2548750002657946\n",
+      "79 0.2548750002657946\n",
+      "99 0.2548750002657946\n",
+      "119 0.2548750002657946\n",
+      "139 0.2548426351819696\n",
+      "159 0.2548426351819696\n",
+      "179 0.2548426351819696\n",
+      "199 0.2548426351819696\n",
+      "219 0.2548426351819696\n",
+      "239 0.2542657143451743\n",
+      "259 0.2542657143451743\n",
+      "279 0.2542657143451743\n",
+      "299 0.2542657143451743\n",
+      "319 0.2542657143451743\n",
+      "339 0.25346962193119443\n",
+      "359 0.25346962193119443\n",
+      "379 0.25346962193119443\n",
+      "399 0.25346962193119443\n",
+      "419 0.25346962193119443\n",
+      "439 0.25346962193119443\n",
+      "459 0.25346962193119443\n",
+      "479 0.25346962193119443\n",
+      "499 0.25346962193119443\n",
+      "361.9538888032456\n",
+      "----------------- I-9---------------------\n",
+      "19 0.26190660853870823\n",
+      "39 0.2618976340622638\n",
+      "59 0.2618976340622638\n",
+      "79 0.26176049503917265\n",
+      "99 0.26176049503917265\n",
+      "119 0.26176049503917265\n",
+      "139 0.26149305775949117\n",
+      "159 0.26149305775949117\n",
+      "179 0.26145247479331146\n",
+      "199 0.26145247479331146\n",
+      "219 0.26145247479331146\n",
+      "239 0.26121140769693385\n",
+      "259 0.26112986654014475\n",
+      "279 0.26112986654014475\n",
+      "299 0.2611015091374537\n",
+      "319 0.2611015091374537\n",
+      "339 0.2611015091374537\n",
+      "359 0.2611015091374537\n",
+      "379 0.2611015091374537\n",
+      "399 0.2611015091374537\n",
+      "419 0.2611015091374537\n",
+      "439 0.2611015091374537\n",
+      "459 0.2607016372328649\n",
+      "479 0.2607016372328649\n",
+      "499 0.2607016372328649\n",
+      "316.7726491606117\n",
+      "----------------- I-10---------------------\n",
+      "19 0.24770550085691329\n",
+      "39 0.24770550085691329\n",
+      "59 0.24770550085691329\n",
+      "79 0.24770550085691329\n",
+      "99 0.24770550085691329\n",
+      "119 0.24770550085691329\n",
+      "139 0.24770550085691329\n",
+      "159 0.24770550085691329\n",
+      "179 0.24770550085691329\n",
+      "199 0.24770550085691329\n",
+      "219 0.24770550085691329\n",
+      "239 0.24770550085691329\n",
+      "259 0.24770550085691329\n",
+      "279 0.24770550085691329\n",
+      "299 0.24770550085691329\n",
+      "319 0.24770550085691329\n",
+      "339 0.24770550085691329\n",
+      "359 0.24770550085691329\n",
+      "379 0.24770550085691329\n",
+      "399 0.24770550085691329\n",
+      "419 0.24769361677940638\n",
+      "439 0.24769361677940638\n",
+      "459 0.24769361677940638\n",
+      "479 0.24769361677940638\n",
+      "499 0.24769361677940638\n",
+      "341.7796697827031\n",
+      "[0.2949983  0.31074466 0.25361299 0.2554086  0.24673907 0.29101194\n",
+      " 0.28694298 0.25346962 0.26070164 0.24769362]\n",
+      "[ 0.7666913   4.2781245   0.55799714  0.5        14.80588889  0.5\n",
+      "  1.3639153  15.         15.         15.          0.50795744  0.55961465\n",
+      "  0.5         5.72134582  7.60885308  0.54132032  5.74816646  0.5\n",
+      "  2.9680022   0.5         1.40716798  0.57031921  5.10724442  0.5\n",
+      " 14.73942853  0.5         0.50986541 14.428049   12.00394804 14.13470092\n",
+      " 13.85557591  2.52747756 11.67481154  0.5        13.08430348 11.46282726\n",
+      " 13.53558334 14.17958612  0.66028103 15.          4.86920995 14.62300721\n",
+      " 15.         13.64440326  0.5         0.5        14.70879091  3.44685505\n",
+      "  0.5         0.62244958]\n"
+     ]
+    }
+   ],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import warnings\n",
+    "warnings.filterwarnings(\"ignore\",category =RuntimeWarning)\n",
+    "import numpy as np\n",
+    "import de2 as de\n",
+    "import multiprocessing as mp\n",
+    "import makeqx as mkq\n",
+    "import qxnew as qn    \n",
+    "\n",
+    "def tmm_wrapper2(arg):\n",
+    "    args, kwargs = arg\n",
+    "    return qn.tmm_eval_wsweep(*args, **kwargs)\n",
+    "\n",
+    "def arc_par(pop, **kwargs):\n",
+    "    jobs = []\n",
+    "    pool=mp.Pool(90)\n",
+    "    for indiv in pop:\n",
+    "        indiv = indiv.reshape((int(indiv.size/2), 2))\n",
+    "        indiv[:,1] = mkq.digitize_qx(indiv[:,1], dlevels=2)\n",
+    "        indiv = indiv.flatten()\n",
+    "        jobs.append((indiv, 0, 1, 0))\n",
+    "    arg = [(j, kwargs) for j in jobs]\n",
+    "    answ = np.array(pool.map(tmm_wrapper2, arg))\n",
+    "    pool.close()\n",
+    "    return np.mean(answ, axis=1)\n",
+    "\n",
+    "    \n",
+    "num_layers = 50\n",
+    "d_min = 0.5\n",
+    "d_max = 15\n",
+    "\n",
+    "bnds = [(d_min, d_max), (0,1)]*num_layers\n",
+    "#bnds = [(300, 400)] + bnds\n",
+    "its_first = 0\n",
+    "psnew = 40\n",
+    "islands = 10 \n",
+    "its_second = 500\n",
+    "numgens = 10 \n",
+    "\n",
+    "isl = np.ones((psnew*islands, 2*num_layers))\n",
+    "for indiv in range(psnew*islands):\n",
+    "    isl[indiv] = qn.make_qxn(num_layers, dlevels=2)\n",
+    "poplist = np.split(isl, islands)\n",
+    "\n",
+    "bids = np.zeros(islands, dtype=int)\n",
+    "bfits = np.zeros(islands)\n",
+    "bests = isl[0:islands]\n",
+    "\n",
+    "\n",
+    "for gen in range(numgens):\n",
+    "    print(\"==============================\")\n",
+    "    print(\"Epoch #:\" + str(gen + 1))\n",
+    "    print(\"==============================\")\n",
+    "    for isln in range(islands):\n",
+    "        print(\"----------------- I-\" + str(isln + 1)+ \"---------------------\")\n",
+    "        poplist[isln], bids[isln], bfits[isln], bests[isln] = de.de_cp(\n",
+    "            fobj=arc_par, \n",
+    "            bounds=bnds, \n",
+    "            pop=poplist[isln], \n",
+    "            history=[], \n",
+    "            it_start=its_first, \n",
+    "            popsize=psnew, \n",
+    "            its=its_second, \n",
+    "            lam_low=400, \n",
+    "            lam_high=800, \n",
+    "            lam_pts=50)\n",
+    "        print(np.sum(bests[isln][::2]))\n",
+    "    if gen < (numgens - 1):\n",
+    "        print(\"Round robin best migration\")\n",
+    "        stmp = poplist[islands-1][bids[islands-1]] \n",
+    "        for isln in range(1, islands):\n",
+    "            poplist[isln][bids[isln]] = poplist[isln-1][bids[isln-1]]\n",
+    "        poplist[0][bids[0]] = stmp \n",
+    "\n",
+    "print(bfits) \n",
+    "print(bests[np.argmin(bfits)][::2])\n",
+    "#np.sum(b[::2]), b[::2], b[1::2], c\n",
+    "\n",
+    "#m1 = mkq.tmm_eval2(qx=pop[0][1:], cthick=pop[0][0]) \n",
+    "#m2 = mkq.tmm_eval(qx=pop[0][1:], cthick=pop[0][0]) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-27T04:39:19.806762Z",
+     "start_time": "2018-11-27T04:39:19.740844Z"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "321.7237627850665\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(np.sum(bests[np.argmin(bfits)][::2]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-25T08:46:16.654004Z",
+     "start_time": "2018-11-25T08:46:15.567261Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "isl = np.split(pop,8)\n",
+    "isl[0].shape\n",
+    "arc_par(pop)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-26T10:52:44.968511Z",
+     "start_time": "2018-11-26T10:52:44.892890Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "%load_ext autoreload\n",
+    "%autoreload 2\n",
+    "import qxnew as qn\n",
+    "import makeqx as mkq\n",
+    "\n",
+    "qn.make_qxn(10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-26T10:52:28.147240Z",
+     "start_time": "2018-11-26T10:52:28.076907Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "qx = qn.make_qxn(40,5)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-24T09:33:50.326789Z",
+     "start_time": "2018-11-24T09:33:50.307053Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "qx"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-24T07:07:44.202457Z",
+     "start_time": "2018-11-24T07:07:44.180095Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "qn.make_nxdx(qx, d_min=2, d_max=10, wavelen=550, n_substrate=1.52)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-24T07:07:45.345103Z",
+     "start_time": "2018-11-24T07:07:45.322470Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "qn.tmm_eval_wbk(qx, 2, 10, 0, 550, 1.52)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-11-24T07:07:47.293093Z",
+     "start_time": "2018-11-24T07:07:47.155314Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "Rs = qn.tmm_eval_wsweep(qx, d_min=2 , d_max=10, inc_ang=0, lam_low=400, lam_high=800, lam_pts=50, n_subs=1.52)  # in nm\n",
+    "lams = np.linspace(400, 800, endpoint=True, num=50)\n",
+    "plt.plot(lams, Rs )\n",
+    "plt.xlabel('Wavelength (nm)')\n",
+    "plt.ylabel('Reflectance (%)')\n",
+    "plt.ylim([0,100])\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.0"
+  },
+  "latex_envs": {
+   "LaTeX_envs_menu_present": true,
+   "autoclose": false,
+   "autocomplete": true,
+   "bibliofile": "biblio.bib",
+   "cite_by": "apalike",
+   "current_citInitial": 1,
+   "eqLabelWithNumbers": true,
+   "eqNumInitial": 1,
+   "hotkeys": {
+    "equation": "Ctrl-E",
+    "itemize": "Ctrl-I"
+   },
+   "labels_anchors": false,
+   "latex_user_defs": false,
+   "report_style_numbering": false,
+   "user_envs_cfg": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 6 - 0
Untitled1.ipynb

@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 377 - 0
Untitled2.ipynb

@@ -0,0 +1,377 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "start_time": "2018-12-17T09:55:59.512Z"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "==============================\n",
+      "Epoch #:1\n",
+      "==============================\n",
+      "----------------- I-1---------------------\n"
+     ]
+    }
+   ],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import de2 as de\n",
+    "import multiprocessing as mp\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "def rndtop5(x):\n",
+    "    return np.round(x*2.0)/2\n",
+    "\n",
+    "def tmm_wrapper2(arg):\n",
+    "    args, kwargs = arg\n",
+    "    return mkq.vgdr_eval_wsweep(*args, **kwargs)\n",
+    "\n",
+    "def arc_par(pop, **kwargs):\n",
+    "    jobs = []\n",
+    "    pool=mp.Pool(90)\n",
+    "    num_layers = int(pop[0].size/2)\n",
+    "    for indiv in pop:\n",
+    "        jobs.append((indiv.reshape(num_layers,2), 0))\n",
+    "    arg = [(j, kwargs) for j in jobs]\n",
+    "    answ = np.array(pool.map(tmm_wrapper2, arg))\n",
+    "    pool.close()\n",
+    "    return answ\n",
+    "\n",
+    "num_layers = 22\n",
+    "norlam_min = 0.25   # this is lam/d\n",
+    "norlam_max = 2       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "\n",
+    "\n",
+    "bnds = [(0, 1)]*num_layers*2\n",
+    "its_first = 0\n",
+    "psnew = 120\n",
+    "islands = 5\n",
+    "its_second = 512\n",
+    "\n",
+    "numgens = 5\n",
+    "\n",
+    "isl = np.ones((psnew*islands, 2*num_layers))\n",
+    "for indiv in range(int(psnew*islands)):\n",
+    "    isl[indiv] = np.random.uniform(0,1, 2*num_layers)\n",
+    "#     nxhold = isl[indiv][::2]\n",
+    "#     nxhold[::2] = 1\n",
+    "#     nxhold[1::2] = 0\n",
+    "    #isl[indiv] = qn.make_qxn(num_layers, dlevels=2)\n",
+    "poplist = np.split(isl, islands)\n",
+    "\n",
+    "bids = np.zeros(islands, dtype=int)\n",
+    "bfits = np.zeros(islands)\n",
+    "bests = isl[0:islands]\n",
+    "\n",
+    "for gen in range(numgens):\n",
+    "    print(\"==============================\")\n",
+    "    print(\"Epoch #:\" + str(gen + 1))\n",
+    "    print(\"==============================\")\n",
+    "    \n",
+    "    for isln in range(islands):\n",
+    "        print(\"----------------- I-\" + str(isln + 1)+ \"---------------------\")\n",
+    "        poplist[isln], bids[isln], bfits[isln], bests[isln] = de.de_cp(\n",
+    "            fobj=arc_par, \n",
+    "            bounds=bnds, \n",
+    "            pop=poplist[isln], \n",
+    "            history=[], \n",
+    "            it_start=its_first, \n",
+    "            popsize=psnew, \n",
+    "            its=its_second, \n",
+    "            lam_low=norlam_min, \n",
+    "            lam_high=norlam_max, \n",
+    "            lam_pts=lam_pts)\n",
+    "        \n",
+    "    if its_second > 64:\n",
+    "        its_second = int(its_second/2)\n",
+    "    \n",
+    "    if gen < (numgens - 1):\n",
+    "        print(\"Round robin best migration\")\n",
+    "        stmp = np.copy(poplist[islands-1][bids[islands-1]])\n",
+    "        for isln in range(1, islands):\n",
+    "            poplist[isln][bids[isln]] = poplist[isln-1][bids[isln-1]]\n",
+    "        poplist[0][bids[0]] = stmp \n",
+    "    \n",
+    "print(bfits)\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-12T09:09:10.997450Z",
+     "start_time": "2018-12-12T09:09:08.834305Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "qx = bests[np.argmin(bfits)].reshape(num_layers, 2)\n",
+    "\n",
+    "\n",
+    "norlam_min = 0.25   # this is lam/d\n",
+    "norlam_max = 2       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "#lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)\n",
+    "lam_inv = np.linspace(1/norlam_min, 1/norlam_max, num=lam_pts, endpoint=True)\n",
+    "lams = 1.0/lam_inv\n",
+    "\n",
+    "\n",
+    "\n",
+    "Rs = np.zeros(lams.size)\n",
+    "Rs = mkq.tmm_eval_wsweep(qx, 0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "\n",
+    "vgdr = 100*np.ones(lam_pts)\n",
+    "for idx, lam in enumerate(lams):\n",
+    "    if lams[idx] <= 1:\n",
+    "        cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]\n",
+    "        #print(cuts)\n",
+    "        vgdr[idx] = np.mean(cuts)\n",
+    "#         print(vgdr)\n",
+    "\n",
+    "\n",
+    "\n",
+    "#400.0/np.amin(vgdr)\n",
+    "\n",
+    "\n",
+    "# lams\n",
+    "c, cthick = mkq.vgdr2_eval_wsweep(qx = qx, inc_ang=0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "\n",
+    "\n",
+    "# num_layers = 10\n",
+    "# # qx = np.random.uniform(0,1, (num_layers,2))\n",
+    "# # qx[:,0] = qx[:,0]/np.sum(qx[:,0])\n",
+    "\n",
+    "norlam_min = 400.0/cthick   # this is lam/d\n",
+    "norlam_max = 800.0/cthick       # this is lam/d\n",
+    "lam_pts = 256\n",
+    "\n",
+    "lam_inv = np.linspace(1/norlam_min, 1/norlam_max, num=lam_pts, endpoint=True)\n",
+    "lams = (1.0/lam_inv)\n",
+    "lam_ac = np.linspace(400, 800,  num=lam_pts, endpoint=True)\n",
+    "lams2 = np.linspace(400, 800, endpoint=True, num = lam_pts)\n",
+    "#lams = np.flip(lams, axis=0)\n",
+    "\n",
+    "# # # for thick in [200, 400, 800]:\n",
+    "# # qx[:,1] = mkq.digitize_qx(qx[:,1], dlevels=2)\n",
+    "# d_x, n_x = mkq.make_nxdx(qx=qx)\n",
+    "\n",
+    "Rs2 = mkq.tmm_eval_wsweep(qx = qx, inc_ang=0, lam_low=norlam_min, lam_high=norlam_max, lam_pts=lam_pts)\n",
+    "# lams = cthick*lams\n",
+    "meansl = np.mean(Rs2)*np.ones_like(lams)\n",
+    "# #     #plt.plot(1.0/lams, Rs)\n",
+    "# plt.plot( Rs)\n",
+    "# #plt.plot(lams, meansl)\n",
+    "plt.ylim([0,1])\n",
+    "#plt.xlim([0.75,1.1])\n",
+    "    \n",
+    "\n",
+    "plt.plot(lams2, Rs2)\n",
+    "plt.plot(lams2, meansl)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-10T13:42:38.721768Z",
+     "start_time": "2018-12-10T13:42:37.792591Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "%reload_ext autoreload\n",
+    "%autoreload 2\n",
+    "import numpy as np\n",
+    "import makeqx as mkq\n",
+    "import matplotlib.pyplot as plt\n",
+    "from jupyterthemes import jtplot\n",
+    "# currently installed theme will be used to\n",
+    "# set plot style if no arguments provided\n",
+    "jtplot.style()\n",
+    "\n",
+    "\n",
+    "num_layers = 50\n",
+    "\n",
+    "layers = np.arange(num_layers)\n",
+    "nlr = np.random.uniform(0,1, num_layers)\n",
+    "#nlr = mkq.make_qx(num_layers)\n",
+    "#nlr = mkq.digitize_qx(nlr, dlevels=2)\n",
+    "#plt.bar(layers, nlr)\n",
+    "#plt.ylim([0,1])\n",
+    "\n",
+    "lam_inv = np.linspace(0.2, 2, num=50, endpoint=True)\n",
+    "lams = (1.0/lam_inv)\n",
+    "lams = np.flip(lams, axis=0)\n",
+    "\n",
+    "for thick in [200, 400, 800]:\n",
+    "    d_x, n_x = mkq.make_nxdx(qx=nlr, cthick=thick, wavelen=550)\n",
+    "    Rs = mkq.tmm_eval_wsweep(qx = nlr, cthick=thick, inc_ang=0, lam_low = 0.5*thick, lam_high=5*thick, lam_pts=50)\n",
+    "    #plt.plot(1.0/lams, Rs)\n",
+    "    plt.plot(lams, Rs)\n",
+    "    plt.ylim([0,100])\n",
+    "\n",
+    "\n",
+    "vgdr = np.zeros(25)\n",
+    "for idx, lam in enumerate(lams):\n",
+    "    if idx < 25:\n",
+    "        cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]\n",
+    "        vgdr[idx] = np.mean(cuts)\n",
+    "# plt.plot(vgdr)\n",
+    "# plt.ylim([0,100])\n",
+    "\n",
+    "size =  400/lams[np.argmin(vgdr)]\n",
+    "val = np.amin(vgdr)\n",
+    "size, val"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:38:47.524293Z",
+     "start_time": "2018-12-11T14:38:46.239283Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "#\\][;/++plt.plot(Rs)\n",
+    "# for fd in zip(lams, Rs):\n",
+    "#     print(fd)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:57:18.592232Z",
+     "start_time": "2018-12-11T14:57:17.305396Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "c "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:57:29.843041Z",
+     "start_time": "2018-12-11T14:57:28.560532Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "np.mean(Rs2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:40:31.683888Z",
+     "start_time": "2018-12-11T14:40:30.373859Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "vgdr[178]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-11T14:41:59.272354Z",
+     "start_time": "2018-12-11T14:41:57.982383Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "400.0/lams[178]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.0"
+  },
+  "latex_envs": {
+   "LaTeX_envs_menu_present": true,
+   "autoclose": false,
+   "autocomplete": true,
+   "bibliofile": "biblio.bib",
+   "cite_by": "apalike",
+   "current_citInitial": 1,
+   "eqLabelWithNumbers": true,
+   "eqNumInitial": 1,
+   "hotkeys": {
+    "equation": "Ctrl-E",
+    "itemize": "Ctrl-I"
+   },
+   "labels_anchors": false,
+   "latex_user_defs": false,
+   "report_style_numbering": false,
+   "user_envs_cfg": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

二進制
__pycache__/de2.cpython-37.pyc


二進制
__pycache__/makeqx.cpython-37.pyc


二進制
__pycache__/oldqx.cpython-37.pyc


二進制
__pycache__/qxnew.cpython-37.pyc


+ 1 - 0
de2.py

@@ -18,6 +18,7 @@ def de_cp(
         This function performs diff evolution using fobj evaluated in parallel  
         returns the  last pop, fitness of pop, best individual and opt history 
     """
+    #mut = 0.8 + 0.6*np.random.random()
     dimensions = len(bounds)
     history=[]
     min_b, max_b = np.asarray(bounds).T

+ 143 - 78
makeqx.py

@@ -116,36 +116,6 @@ def make_qx(num_layers):
     return rwalk 
 
 
-def digitize_qx(q_x, dlevels=2):
-    """TODO: Docstring for digitize_qx.
-    :q_x: TODO
-    :returns: TODO
-    """
-    #bins = np.array([-0.02, 0.2, 0.4, 0.6, 0.8, 1.01])
-    bins = np.linspace(0,1, num=dlevels+1, endpoint=True)
-    bins[0] = -0.02
-    bins[-1] = 1.01
-    dig = (np.digitize(q_x, bins, right=True)) - 1
-    act_r = np.linspace(0, 1, num=dlevels, endpoint=True)
-    return act_r[dig]
-
-
-def make_nxdx(qx, cthick, wavelen, n_substrate=1.52):
-    """TODO: Docstring for make_nxdx.
-    :qx: TODO
-    :n_substrate: TODO
-    :layer_thickness: TODO
-    :returns: TODO
-    """
-    num_layers = qx.size
-    d_x = num_layers*[cthick/num_layers]
-    d_x = [np.inf] + d_x + [np.inf]
-    sde = LL_mixing(fH = qx, 
-                    n_H = 2.58, #get_nk(datafile=matsdict[3], wavelengths=wavelen), 
-                    n_L = 1.45) #get_nk(datafile=matsdict[4], wavelengths=wavelen
-               #   ))
-    n_x = [1.0] + sde.tolist() + [n_substrate]
-    return d_x, n_x
 
 def tmm_eval2(
         qx, 
@@ -239,73 +209,168 @@ def tmm_eval_wbk(
 #     Rp = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
     return Rs
     
+def digitize_qx(q_x, dlevels=2):
+    """TODO: Docstring for digitize_qx.
+    :q_x: TODO
+    :returns: TODO
+    """
+    #bins = np.array([-0.02, 0.2, 0.4, 0.6, 0.8, 1.01])
+    bins = np.linspace(0,1, num=dlevels+1, endpoint=True)
+    bins[0] = -0.02
+    bins[-1] = 1.01
+    dig = (np.digitize(q_x, bins, right=True)) - 1
+    act_r = np.linspace(0, 1, num=dlevels, endpoint=True)
+    return act_r[dig]
+
+
+def make_nxdx(qx, n_substrate=1.52):
+    """TODO: Docstring for make_nxdx.
+    :qx: TODO
+    :n_substrate: TODO
+    :layer_thickness: TODO
+    :returns: TODO
+    """
+    #num_layers = int(qx.size/2)
+    d_x = [np.inf] + (qx/np.sum(qx)).tolist() + [np.inf]
+    #qtmp = qx[:,0]
+    #qtmp = digitize_qx(qx[:,1], dlevels=2)
+    #d_x = num_layers*[cthick/num_layers]
+    #d_x = [np.inf] + d_x + [np.inf]
+    qtmp = np.zeros_like(qx)
+    qtmp[::2] = qtmp[::2] + 1.0
+    sde = 1.45 + (2.58 - 1.45)*qtmp
+#     sde = LL_mixing(fH = qtmp, 
+#                     n_H = 2.58, #get_nk(datafile=matsdict[3], wavelengths=wavelen), 
+#                     n_L = 1.45) #get_nk(datafile=matsdict[4], wavelengths=wavelen
+#                #   ))
+    n_x = [1.0] + sde.tolist() + [n_substrate]
+    return d_x, n_x
+
+def vgdr_eval_wsweep(
+        qx, 
+        inc_ang,
+        lam_low=0.25, #in nm 
+        lam_high=1,
+        lam_pts=256,
+        n_subs=1.52,
+        ):
+    """TODO: Docstring for tmm_eval.
+    """  
+    degree = np.pi/180
+    #lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+    lam_inv = np.linspace(1/lam_low, 1/lam_high, num=lam_pts, endpoint=True)
+    lams = 1.0/lam_inv
+    Rs = np.zeros(lams.size)
+    #Rp = np.zeros(lams.size)
+
+    for lidx, lam in enumerate(lams):
+            d_x, n_x = make_nxdx(qx=qx, n_substrate=n_subs)
+            Rs[lidx] = 100*coh_tmm('s',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+            #Rp[lidx] = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+    #return Rs
+    vgdr = 100*np.ones(lam_pts)
+    for idx, lam in enumerate(lams):
+        if lams[idx] <= lam_high/2.0:
+            cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]
+            vgdr[idx] = np.mean(cuts)
+    
+    return np.amin(vgdr)
+    
+def vgdr2_eval_wsweep(
+        qx, 
+        inc_ang,
+        lam_low=0.25, #in nm 
+        lam_high=2,
+        lam_pts=256,
+        n_subs=1.52,
+        ):
+    """TODO: Docstring for tmm_eval.
+    """  
+    degree = np.pi/180
+    #lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+    lam_inv = np.linspace(1/lam_low, 1/lam_high, num=lam_pts, endpoint=True)
+    lams = 1.0/lam_inv
+    Rs = np.zeros(lams.size)
+    #Rp = np.zeros(lams.size)
+
+    for lidx, lam in enumerate(lams):
+            d_x, n_x = make_nxdx(qx=qx, n_substrate=n_subs)
+            Rs[lidx] = 100*coh_tmm('s',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+            #Rp[lidx] = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+    #return Rs
+    vgdr = 100*np.ones(lam_pts)
+    for idx, lam in enumerate(lams):
+        if lams[idx] <= 1:
+            cuts = Rs[np.logical_and(lams >= lam, lams <= 2*lam)]
+            vgdr[idx] = np.mean(cuts)
+    
+    return np.amin(vgdr), 400/lams[np.argmin(vgdr)]
+
+
 def tmm_eval_wsweep(
         qx, 
-        cthick,
         inc_ang,
-        lam_low=400, #in nm 
-        lam_high=1200,
+        lam_low=0.1, #in nm 
+        lam_high=10,
         lam_pts=100,
         n_subs=1.52,
         ):
     """TODO: Docstring for tmm_eval.
-    :qx: TODO
-    :lam_low: TODO
-     lam_high: TODO
-    :lam_pts: TODO
-    :returns: TODO
     """  
-    degree = np.pi/180
-    lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+    degree = np.pi/180    
+    #lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+    lam_inv = np.linspace(1/lam_low, 1/lam_high, num=lam_pts, endpoint=True)
+    lams = 1.0/lam_inv
     Rs = np.zeros(lams.size)
     #Rp = np.zeros(lams.size)
 
     for lidx, lam in enumerate(lams):
-            d_x, n_x = make_nxdx(qx=qx, cthick=cthick, wavelen=lam, n_substrate=n_subs)
+            d_x, n_x = make_nxdx(qx=qx, n_substrate=n_subs)
             Rs[lidx] = 100*coh_tmm('s',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
             #Rp[lidx] = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
-    return Rs  
+    return Rs
     
-def tmm_wrapper2(arg):
-    args, kwargs = arg
-    return tmm_eval_wbk(*args, **kwargs)
-
-def tmm_lam_parallel(
-    q_x, 
-    cthick,
-    inc_ang, 
-    n_par=12,
-    lam_low=400, 
-    lam_high=1200, 
-    lam_pts=100, 
-    **kwargs):
     
-    jobs = []
-    pool=mp.Pool(n_par)
-    lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
-    for lam in lams:
-        jobs.append((q_x, cthick, inc_ang, lam))
-    arg = [(j, kwargs) for j in jobs]
-    answ = np.array(pool.map(tmm_wrapper2, arg))
-    pool.close()
-    return answ[:,0], answ[:,1] 
+# def tmm_wrapper2(arg):
+#     args, kwargs = arg
+#     return tmm_eval_wbk(*args, **kwargs)
+
+# def tmm_lam_parallel(
+#     q_x, 
+#     cthick,
+#     inc_ang, 
+#     n_par=12,
+#     lam_low=400, 
+#     lam_high=1200, 
+#     lam_pts=100, 
+#     **kwargs):
+    
+#     jobs = []
+#     pool=mp.Pool(n_par)
+#     lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+#     for lam in lams:
+#         jobs.append((q_x, cthick, inc_ang, lam))
+#     arg = [(j, kwargs) for j in jobs]
+#     answ = np.array(pool.map(tmm_wrapper2, arg))
+#     pool.close()
+#     return answ[:,0], answ[:,1] 
     
     
 
-def tmm_wrapper(arg):
-    args, kwargs = arg
-    return tmm_eval_wsweep(*args, **kwargs)
-
-def tmm_eval_parallel(q_x, cthick, n_ang= 25, n_par=10, **kwargs):
-    jobs = []
-    pool=mp.Pool(n_par)
-    angs = np.linspace(90, 0, endpoint=True, num=n_ang)
-    for ang in angs:
-        jobs.append((q_x, cthick, ang))
-    arg = [(j, kwargs) for j in jobs]
-    answ = np.array(pool.map(tmm_wrapper, arg))
-    pool.close()
-    return answ[:,0,:], answ[:,1,:] 
+# def tmm_wrapper(arg):
+#     args, kwargs = arg
+#     return tmm_eval_wsweep(*args, **kwargs)
+
+# def tmm_eval_parallel(q_x, cthick, n_ang= 25, n_par=10, **kwargs):
+#     jobs = []
+#     pool=mp.Pool(n_par)
+#     angs = np.linspace(90, 0, endpoint=True, num=n_ang)
+#     for ang in angs:
+#         jobs.append((q_x, cthick, ang))
+#     arg = [(j, kwargs) for j in jobs]
+#     answ = np.array(pool.map(tmm_wrapper, arg))
+#     pool.close()
+#     return answ[:,0,:], answ[:,1,:] 
 
 
 

文件差異過大導致無法顯示
+ 254 - 0
normalized.ipynb


+ 240 - 0
oldqx.py

@@ -0,0 +1,240 @@
+import snlay as sn
+import numpy as np
+from scipy import interpolate
+from noise import pnoise1
+import random
+from tmm import coh_tmm
+import multiprocessing as mp
+import makeqx as mkq
+#import pyximport; pyximport.install(pyimport=True)
+#import mtmm as mtmm
+
+
+# make a materials dictionary
+matsdict = {
+    1: "./materials/gold.dat",
+    2: "./materials/silicon.dat",
+    3: "./materials/silica.dat",
+    4: "./materials/tio2.dat",
+    5: "./materials/silver.dat",
+}
+
+
+def get_nk(datafile, wavelengths):
+    """Reads the given file and returns the n+ik complex at
+    the given wavelength after suitable interpolation
+    :datafile: TODO
+    :wavelength: TODO
+    :returns: TODO
+    """
+    rawdisp = np.loadtxt(datafile)
+    f_r = interpolate.interp1d(rawdisp[:, 0], rawdisp[:, 1])
+    f_i = interpolate.interp1d(rawdisp[:, 0], rawdisp[:, 2])
+    return f_r(wavelengths) + 1j * f_i(wavelengths)
+
+
+def nk_2_eps(n):
+    """TODO: Docstring for nk_2_epsnk_2_eps.
+    :returns: complex epsilon given n and kappa 
+    """
+    eps_r = n.real ** 2 - n.imag ** 2
+    eps_i = 2 * n.real * n.imag
+    return eps_r + 1j * eps_i
+
+
+def eps_2_nk(eps):
+    """TODO: Docstring for nk_2_epsnk_2_eps.
+    :returns: complex epsilon given n and kappa 
+    """
+    modeps = np.abs(eps)
+    n_r = np.sqrt(0.5 * (modeps + eps.real))
+    n_i = np.sqrt(0.5 * (modeps - eps.real))
+    return n_r + 1j * n_i
+
+
+def LL_mixing(fH, n_H, n_L):
+    """TODO: Docstring for brugg_mixingbrugg_mixing.
+    Given the volumne fraction of the higher index material, give the effective
+    index of the layer
+    :fH: volumne fraction from 0 to 1 
+    :n_H: ri  of the higher index material 
+    :n_L: ri of the lower index material 
+    :returns: TODO
+    """
+    eH = nk_2_eps(n_H)
+    eL = nk_2_eps(n_L)
+    bigK = fH * (eH - 1) / (eH + 2) + (1 - fH) * (eL - 1) / (eL + 2)
+    e_eff = (1 + 2 * bigK) / (1 - bigK)
+    return eps_2_nk(e_eff)
+
+
+def make_nxdx(qx, wavelen=550, n_substrate=1.52):
+    """TODO: Docstring for make_nxdx.
+    :qx: TODO
+    :n_substrate: TODO
+    :layer_thickness: TODO
+    :returns: TODO
+    """
+    num_layers = int(qx.size)
+    
+    
+    d_x = [np.inf] + qx.tolist() + [np.inf]
+    sde = np.zeros_like(qx) 
+    sde[::2] = 1.45
+    sde[1::2] = 2.58
+    n_x = [1.0] + sde.tolist() + [n_substrate]
+    return d_x, n_x
+
+
+# def tmm_eval2(
+#     qx,
+#     cthick,
+#     lam_low=400,  # in nm
+#     lam_high=1200,
+#     lam_pts=100,
+#     ang_low=0,  # degrees
+#     ang_high=90,
+#     ang_pts=25,
+#     n_subs=1.52,
+# ):
+#     """TODO: Docstring for tmm_eval.
+#     :qx: TODO
+#     :lam_low: TODO
+#     :#in nm 
+#         lam_high: TODO
+#     :lam_pts: TODO
+#     :ang_low: TODO
+#     :#degrees
+#         ang_high: TODO
+#     :ang_pts: TODO
+#     :returns: TODO
+
+#     """
+#     degree = np.pi / 180
+#     lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+#     thetas = np.linspace(ang_high, ang_low, endpoint=True, num=ang_pts)
+#     Rs = np.zeros((thetas.size, lams.size))
+#     Rp = np.zeros((thetas.size, lams.size))
+
+#     for tidx, theta in enumerate(thetas):
+#         for lidx, lam in enumerate(lams):
+#             d_x, n_x = make_nxdx(qx=qx, cthick=cthick, wavelen=lam, n_substrate=n_subs)
+#             Rs[tidx, lidx] = 100 * coh_tmm(
+#                 "s", n_x, d_x, th_0=theta * degree, lam_vac=lam
+#             )
+#             Rp[tidx, lidx] = 100 * coh_tmm(
+#                 "p", n_x, d_x, th_0=theta * degree, lam_vac=lam
+#             )
+#     return Rs, Rp
+
+
+# def tmm_eval(
+#     qx,
+#     cthick,
+#     lam_low=400,  # in nm
+#     lam_high=1200,
+#     lam_pts=100,
+#     ang_low=0,  # degrees
+#     ang_high=90,
+#     ang_pts=25,
+#     n_subs=1.52,
+# ):
+#     """TODO: Docstring for tmm_eval.
+#     :qx: TODO
+#     :lam_low: TODO
+#     :#in nm 
+#         lam_high: TODO
+#     :lam_pts: TODO
+#     :ang_low: TODO
+#     :#degrees
+#         ang_high: TODO
+#     :ang_pts: TODO
+#     :returns: TODO
+
+#     """
+#     degree = np.pi / 180
+#     lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+#     thetas = np.linspace(ang_high, ang_low, endpoint=True, num=ang_pts)
+#     Rs = np.zeros((thetas.size, lams.size))
+#     Rp = np.zeros((thetas.size, lams.size))
+
+#     for tidx, theta in enumerate(thetas):
+#         for lidx, lam in enumerate(lams):
+#             d_x, n_x = make_nxdx(qx=qx, cthick=cthick, wavelen=lam, n_substrate=n_subs)
+#             Rs[tidx, lidx] = 100 * coh_tmm(
+#                 "s", n_x, d_x, th_0=theta * degree, lam_vac=lam
+#             )
+#             Rp[tidx, lidx] = 100 * coh_tmm(
+#                 "p", n_x, d_x, th_0=theta * degree, lam_vac=lam
+#             )
+#     return Rs, Rp
+
+
+def tmm_eval_wbk(qx, d_min , d_max, inc_ang, lam, n_subs=1.52):
+    """TODO: Docstring for tmm_eval.
+    :qx: TODO
+    :returns: TODO
+    """
+    degree = np.pi / 180
+    d_x, n_x = make_nxdx(qx=qx, d_min=d_min, d_max=d_max, wavelen=lam, n_substrate=n_subs)
+    Rs = 100 * coh_tmm("s", n_x, d_x, th_0=inc_ang * degree, lam_vac=lam)
+    #     Rp = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+    return Rs
+
+
+def tmm_eval_wsweep(
+    qx, inc_ang, lam_low=400, lam_high=800, lam_pts=50, n_subs=1.52  # in nm
+):
+    """TODO: Docstring for tmm_eval.
+    :qx: TODO
+    :lam_low: TODO
+     lam_high: TODO
+    :lam_pts: TODO
+    :returns: TODO
+    """
+    degree = np.pi / 180
+    lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+    Rs = np.zeros(lams.size)
+    # Rp = np.zeros(lams.size)
+    for lidx, lam in enumerate(lams):
+        d_x, n_x = make_nxdx(qx=qx, wavelen=lam, n_substrate=n_subs)
+        Rs[lidx] = 100 * coh_tmm("s", n_x, d_x, th_0=inc_ang * degree, lam_vac=lam)
+        # Rp[lidx] = 100*coh_tmm('p',n_x,d_x, th_0=inc_ang*degree,lam_vac=lam)
+    return Rs
+
+
+# def tmm_wrapper2(arg):
+#     args, kwargs = arg
+#     return tmm_eval_wbk(*args, **kwargs)
+
+
+# def tmm_lam_parallel(
+#     q_x, cthick, inc_ang, n_par=12, lam_low=400, lam_high=1200, lam_pts=100, **kwargs
+# ):
+
+#     jobs = []
+#     pool = mp.Pool(n_par)
+#     lams = np.linspace(lam_low, lam_high, endpoint=True, num=lam_pts)
+#     for lam in lams:
+#         jobs.append((q_x, cthick, inc_ang, lam))
+#     arg = [(j, kwargs) for j in jobs]
+#     answ = np.array(pool.map(tmm_wrapper2, arg))
+#     pool.close()
+#     return answ[:, 0], answ[:, 1]
+
+
+# def tmm_wrapper(arg):
+#     args, kwargs = arg
+#     return tmm_eval_wsweep(*args, **kwargs)
+
+
+# def tmm_eval_parallel(q_x, cthick, n_ang=25, n_par=10, **kwargs):
+#     jobs = []
+#     pool = mp.Pool(n_par)
+#     angs = np.linspace(90, 0, endpoint=True, num=n_ang)
+#     for ang in angs:
+#         jobs.append((q_x, cthick, ang))
+#     arg = [(j, kwargs) for j in jobs]
+#     answ = np.array(pool.map(tmm_wrapper, arg))
+#     pool.close()
+#     return answ[:, 0, :], answ[:, 1, :]

+ 1 - 1
qxnew.py

@@ -203,7 +203,7 @@ def tmm_eval_wbk(qx, d_min , d_max, inc_ang, lam, n_subs=1.52):
 
 
 def tmm_eval_wsweep(
-    qx, d_min , d_max, inc_ang, lam_low=400, lam_high=1200, lam_pts=100, n_subs=1.52  # in nm
+    qx, d_min , d_max, inc_ang, lam_low=400, lam_high=800, lam_pts=50, n_subs=1.52  # in nm
 ):
     """TODO: Docstring for tmm_eval.
     :qx: TODO

+ 76 - 0
reinforcement.ipynb

@@ -0,0 +1,76 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2018-12-01T04:23:03.122252Z",
+     "start_time": "2018-12-01T04:23:03.076439Z"
+    }
+   },
+   "outputs": [
+    {
+     "ename": "ModuleNotFoundError",
+     "evalue": "No module named 'gym'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
+      "\u001b[0;32m<ipython-input-1-c727ea424a25>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'gym'"
+     ]
+    }
+   ],
+   "source": [
+    "import gym"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.0"
+  },
+  "latex_envs": {
+   "LaTeX_envs_menu_present": true,
+   "autoclose": false,
+   "autocomplete": true,
+   "bibliofile": "biblio.bib",
+   "cite_by": "apalike",
+   "current_citInitial": 1,
+   "eqLabelWithNumbers": true,
+   "eqNumInitial": 1,
+   "hotkeys": {
+    "equation": "Ctrl-E",
+    "itemize": "Ctrl-I"
+   },
+   "labels_anchors": false,
+   "latex_user_defs": false,
+   "report_style_numbering": false,
+   "user_envs_cfg": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

文件差異過大導致無法顯示
+ 174 - 0
ru2.ipynb


+ 40 - 60
rugate_d.ipynb

@@ -5,11 +5,38 @@
    "execution_count": null,
    "metadata": {
     "ExecuteTime": {
-     "end_time": "2018-11-24T08:08:06.174626Z",
-     "start_time": "2018-11-24T07:52:46.148236Z"
+     "start_time": "2018-12-02T06:48:38.961Z"
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "19 1.5631319609718588\n",
+      "39 1.5631319609718588\n",
+      "59 1.5631319609718588\n",
+      "79 1.5631319609718588\n",
+      "99 1.5631319609718588\n",
+      "119 1.5631319609718588\n",
+      "139 1.5631319609718588\n",
+      "159 1.5631319609718588\n",
+      "179 1.5631319609718588\n",
+      "199 1.5631319609718588\n",
+      "219 1.5631319609718588\n",
+      "239 1.5631319609718588\n",
+      "259 1.5631319609718588\n",
+      "279 1.5631319609718588\n",
+      "299 1.5631319609718588\n",
+      "319 1.5631319609718588\n",
+      "339 1.5631319609718588\n",
+      "359 1.5631319609718588\n",
+      "379 1.5631319609718588\n",
+      "399 1.5631319609718588\n",
+      "419 1.5631319609718588\n"
+     ]
+    }
+   ],
    "source": [
     "import warnings\n",
     "warnings.filterwarnings(\"ignore\",category =RuntimeWarning)\n",
@@ -52,7 +79,7 @@
     "bnds = [(0, 1)]*num_layers\n",
     "bnds = [(300, 400)] + bnds\n",
     "its_first = 0\n",
-    "psnew = 500\n",
+    "psnew = 40\n",
     "its_second = 500\n",
     "\n",
     "pop = np.ones((psnew, 1+ num_layers))\n",
@@ -150,59 +177,11 @@
    "execution_count": null,
    "metadata": {
     "ExecuteTime": {
-     "start_time": "2018-11-26T11:34:03.598Z"
+     "end_time": "2018-11-27T02:07:24.693765Z",
+     "start_time": "2018-11-26T12:51:52.517421Z"
     }
    },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "==============================\n",
-      "Epoch #:1\n",
-      "==============================\n",
-      "----------------- I-1---------------------\n",
-      "19 0.3997606558396529\n",
-      "39 0.32256693520458685\n",
-      "59 0.32256693520458685\n",
-      "79 0.29823105336505207\n",
-      "99 0.28663762949767063\n",
-      "119 0.27773697955410176\n",
-      "139 0.2759340107589304\n",
-      "159 0.2716110041766465\n",
-      "179 0.2716110041766465\n",
-      "199 0.2716110041766465\n",
-      "219 0.2691539504492028\n",
-      "239 0.2691539504492028\n",
-      "259 0.2691539504492028\n",
-      "279 0.2682615595970726\n",
-      "299 0.2682615595970726\n",
-      "319 0.2682615595970726\n",
-      "339 0.2682615595970726\n",
-      "359 0.2682615595970726\n",
-      "379 0.2682615595970726\n",
-      "399 0.2679901622703334\n",
-      "419 0.2679901622703334\n",
-      "439 0.2679901622703334\n",
-      "459 0.2679901622703334\n",
-      "479 0.2679901622703334\n",
-      "499 0.2679901622703334\n",
-      "----------------- I-2---------------------\n",
-      "19 0.5967869231942481\n",
-      "39 0.5080028471469887\n",
-      "59 0.4006868072741836\n",
-      "79 0.3587357262063318\n",
-      "99 0.34165341419655626\n",
-      "119 0.32643122851952033\n",
-      "139 0.32643122851952033\n",
-      "159 0.32152746747577915\n",
-      "179 0.3085645359462034\n",
-      "199 0.3085645359462034\n",
-      "219 0.3085645359462034\n",
-      "239 0.30078144438977794\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "%reload_ext autoreload\n",
     "%autoreload 2\n",
@@ -232,14 +211,14 @@
     "    return np.mean(answ, axis=1)\n",
     "\n",
     "    \n",
-    "num_layers = 30\n",
+    "num_layers = 50\n",
     "d_min = 0.5\n",
     "d_max = 15\n",
     "\n",
     "bnds = [(d_min, d_max), (0,1)]*num_layers\n",
     "#bnds = [(300, 400)] + bnds\n",
     "its_first = 0\n",
-    "psnew = 160\n",
+    "psnew = 40\n",
     "islands = 10 \n",
     "its_second = 500\n",
     "numgens = 10 \n",
@@ -271,6 +250,7 @@
     "            lam_low=400, \n",
     "            lam_high=800, \n",
     "            lam_pts=50)\n",
+    "        print(np.sum(bests[isln][::2]))\n",
     "    if gen < (numgens - 1):\n",
     "        print(\"Round robin best migration\")\n",
     "        stmp = poplist[islands-1][bids[islands-1]] \n",
@@ -291,13 +271,13 @@
    "execution_count": null,
    "metadata": {
     "ExecuteTime": {
-     "end_time": "2018-11-26T11:19:55.333528Z",
-     "start_time": "2018-11-26T11:19:55.299911Z"
+     "end_time": "2018-11-27T04:39:19.806762Z",
+     "start_time": "2018-11-27T04:39:19.740844Z"
     }
    },
    "outputs": [],
    "source": [
-    "poplist"
+    "print(np.sum(bests[np.argmin(bfits)][::2]))"
    ]
   },
   {

部分文件因文件數量過多而無法顯示