diff --git a/Try_ABC.ipynb b/Try_ABC.ipynb
new file mode 100644
index 0000000..323511a
--- /dev/null
+++ b/Try_ABC.ipynb
@@ -0,0 +1,958 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using TensorFlow backend.\n"
+     ]
+    }
+   ],
+   "source": [
+    "import csv\n",
+    "import math\n",
+    "import random\n",
+    "import sys\n",
+    "from scipy.spatial import distance\n",
+    "import pandas as pd\n",
+    "from numpy import * \n",
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "import math\n",
+    "import csv\n",
+    "import random\n",
+    "import time\n",
+    "import sys\n",
+    "import datetime\n",
+    "import timeit\n",
+    "from sklearn.neighbors import DistanceMetric\n",
+    "from math import radians,cos,sin\n",
+    "from haversine import haversine, Unit\n",
+    "from scipy.spatial import distance\n",
+    "from sklearn.preprocessing import MinMaxScaler\n",
+    "from keras.models import Sequential\n",
+    "from keras.layers import Bidirectional, GlobalMaxPool1D\n",
+    "from keras.layers import LSTM\n",
+    "from keras.layers import Dropout, Dense\n",
+    "from math import sqrt\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Load dataset sebelum integrasi\n",
+    "Data1 = pd.read_csv('./tri/Data Toba Samosir - Sheet3.csv')\n",
+    "Data1.drop(Data1.filter(regex=\"Unname\"),axis=1, inplace=True)\n",
+    "Data2 = pd.read_csv('./tri/Data Toba Samosir - Sheet1.csv')\n",
+    "Data2.drop(Data2.filter(regex=\"Unname\"),axis=1, inplace=True)\n",
+    "Data3 = pd.read_csv('./tri/List_city.csv')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>ID_City</th>\n",
+       "      <th>City</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>Pantai BUL BUL</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>BUKIT travel Gibeon</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>Pakkodian</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>Taman Eden 100 Tobasa</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>Water Park Tambunan</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "   ID_City                   City\n",
+       "0        0         Pantai BUL BUL\n",
+       "1        1    BUKIT travel Gibeon\n",
+       "2        2              Pakkodian\n",
+       "3        3  Taman Eden 100 Tobasa\n",
+       "4        4    Water Park Tambunan"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "Data3.head()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "start = datetime.datetime.strptime(\"21-07-2020\", \"%d-%m-%Y\")\n",
+    "end = datetime.datetime.strptime(\"22-07-2020\", \"%d-%m-%Y\")\n",
+    "date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]\n",
+    "#print(len(date_generated))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#cost = input()\n",
+    "cost = 400000\n",
+    "Cost = int(cost)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Random Data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "209.0"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "def getting_distance(Data):\n",
+    "    distance_route = []\n",
+    "    last_distance = 0\n",
+    "    distance = 0\n",
+    "    for i in range(0,len(Data)-1):\n",
+    "        source = Data[i]\n",
+    "        target = Data[i+1]\n",
+    "        distance_route.append(Data2.iloc[source][target])\n",
+    "    for i in range(0,len(Data)-1):\n",
+    "        source = Data[len(Data)-1]\n",
+    "        target = Data[len(Data)-len(Data)]\n",
+    "        last_distance = Data2.iloc[source][target] \n",
+    "    distance = sum(distance_route)+last_distance\n",
+    "    return distance\n",
+    "\n",
+    "\n",
+    "id_city = list(Data3['ID_City'])\n",
+    "Data4 = random.sample(range(len(id_city)), 7)\n",
+    "getting_distance(Data4)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[30, 0, 16, 32, 20, 29, 1]"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "Data4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class Fitness_value:\n",
+    "    def getting_max_distance():\n",
+    "        max_distance = 0 \n",
+    "        max_distance += len(date_generated) * 720\n",
+    "        return  max_distance\n",
+    "    def getting_max_cost():\n",
+    "        max_cost = 0\n",
+    "        max_cost +=Cost\n",
+    "        return max_cost"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "720"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "Fitness_value.getting_max_distance()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class Bee:\n",
+    "    def __init__(self, node_set):\n",
+    "        self.role = ''\n",
+    "        self.path = list(node_set) # stores all nodes in each bee, will randomize foragers\n",
+    "        self.distance = 0\n",
+    "        self.temperature = 0\n",
+    "        self.cycle = 0        \n",
+    "        self.cost = 0"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def initialize_hive(population, data):\n",
+    "    path = Data4\n",
+    "    hive = [Bee(path) for i in range (0, population)]\n",
+    "    return hive"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def assign_roles(hive, role_percentiles):\n",
+    "    forager_percent = 0.5\n",
+    "    onlooker_percent = 0.5\n",
+    "    role_percent = [onlooker_percent, forager_percent]\n",
+    "    scout_percent = 0.2\n",
+    "    population = len(hive)\n",
+    "    onlooker_count = math.floor(population * role_percentiles[0])\n",
+    "    forager_count = math.floor(population * role_percentiles[1])\n",
+    "    for i in range(0, onlooker_count):\n",
+    "        hive[i].role = 'O'\n",
+    "    for i in range(onlooker_count, (onlooker_count + forager_count)):\n",
+    "        hive[i].role = 'F'\n",
+    "        random.shuffle(hive[i].path)\n",
+    "        hive[i].distance = getting_distance(hive[i].path)\n",
+    "    return hive"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def mutate_path(path):\n",
+    "    # - will go out of range if last element is chosen.\n",
+    "    path = Data4\n",
+    "    new_path = random.sample(path,len(path))\n",
+    "    return new_path"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def forage(bee,limit):\n",
+    "    new_path = mutate_path(bee.path)\n",
+    "    new_distance = getting_distance(new_path)\n",
+    "    if new_distance < bee.distance:\n",
+    "        bee.path = new_path\n",
+    "        bee.distance = new_distance\n",
+    "        bee.cycle = 0 # reset cycle so bee can continue to make progress\n",
+    "    else:\n",
+    "        bee.cycle += 1\n",
+    "    if bee.cycle >= limit: # if bee is not making progress\n",
+    "        bee.role = 'S'\n",
+    "    return bee.distance, list(bee.path)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def scout(bee):\n",
+    "    new_path = list(bee.path)\n",
+    "    random.shuffle(new_path)\n",
+    "    bee.path = new_path\n",
+    "    bee.distance = getting_distance(bee.path)\n",
+    "   # bee.temperature = Weather\n",
+    "    bee.role = 'F'\n",
+    "    bee.cycle = 0"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def waggle(hive, best_distance,forager_limit, scout_count):\n",
+    "    best_path = []\n",
+    "    results = []\n",
+    "    for i in range(0, len(hive)):\n",
+    "        if hive[i].role == 'F':\n",
+    "            distance, path = forage(hive[i], forager_limit)\n",
+    "            if distance < best_distance:\n",
+    "                best_distance = distance\n",
+    "                best_path = list(hive[i].path)\n",
+    "            results.append((i, distance))\n",
+    "\n",
+    "        elif hive[i].role == 'S':\n",
+    "            scout(hive[i])\n",
+    "    # after processing all bees, set worst performers to scout\n",
+    "    results.sort(reverse = True, key=lambda tup: tup[1])\n",
+    "    scouts = [ tup[0] for tup in results[0:int(scout_count)] ]\n",
+    "    for new_scout in scouts:\n",
+    "        hive[new_scout].role = 'S'\n",
+    "    return best_distance, best_path"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def recruit(hive, best_distance, best_path):\n",
+    "    for i in range(0, len(hive)):\n",
+    "        if hive[i].role == 'O':\n",
+    "            new_path = mutate_path(best_path)\n",
+    "            new_distance = getting_distance(new_path)\n",
+    "            if new_distance < best_distance:\n",
+    "                best_distance = new_distance\n",
+    "                best_path = new_path\n",
+    "    return best_distance, best_path"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def print_details(cycle, path, distance,bee):\n",
+    "    \"\"\"\n",
+    "    Prints cycle details to console.\n",
+    "    \"\"\"\n",
+    "    print(\"CYCLE: {}\".format(cycle))\n",
+    "    print(\"PATH: {}\".format(path))\n",
+    "    print(\"DISTANCE: {}\".format(distance))\n",
+    "   # print(\"COST: {}\".format(cost))\n",
+    "  #  print(\"TEMPERATURE: {}\".format(temperature))\n",
+    "    print(\"BEE: {}\".format(bee))\n",
+    "    print(\"\\n\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "Maximum_distance = Fitness_value.getting_max_distance()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def main():\n",
+    "    # Control parameters\n",
+    "    population = 40\n",
+    "    forager_percent = 0.5\n",
+    "    onlooker_percent = 0.4\n",
+    "    role_percent = [onlooker_percent, forager_percent]\n",
+    "    scout_percent = 0.01\n",
+    "    scout_count = math.ceil(population * scout_percent)\n",
+    "    forager_limit = 500\n",
+    "    cycle_limit = 100\n",
+    "    cycle = 1\n",
+    " #   temperature = Weather\n",
+    "    # Data source\n",
+    "    # data = read_data_from_csv(\"data/data_10.csv\")\n",
+    "    # data = read_data_from_csv(\"data/data_11.csv\")\n",
+    "    data = Data4\n",
+    "    # Global vars\n",
+    "    best_distance = sys.maxsize\n",
+    "    best_path = []\n",
+    "    result = ()\n",
+    "    # Initialization\n",
+    "    hive = initialize_hive(population, data)\n",
+    "    assign_roles(hive, role_percent)\n",
+    "#    cost = get_total_cost(path)\n",
+    "    while cycle < cycle_limit:\n",
+    "        waggle_distance,waggle_path = waggle(hive, best_distance,forager_limit,scout_count)\n",
+    "        if (waggle_distance < best_distance) and (waggle_distance <= Maximum_distance):\n",
+    "            best_distance = waggle_distance\n",
+    "            best_path = list(waggle_path)\n",
+    " #           cost = get_total_cost(path)\n",
+    "  #          temperature = Weather\n",
+    "            print_details(cycle, best_path, best_distance,'F')\n",
+    "            result = (cycle, best_path, best_distance,'F')\n",
+    "        recruit_distance,recruit_path = recruit(hive, best_distance,best_path)\n",
+    "        if (recruit_distance < best_distance) and (recruit_distance <= Maximum_distance):\n",
+    "            best_path = list(recruit_path)\n",
+    "            best_distance = recruit_distance \n",
+    "#            cost = get_total_cost(path)\n",
+    "            print_details(cycle, best_path, best_distance,'R')\n",
+    "            result = (cycle, best_path, best_distance,'R')\n",
+    "        if cycle % 100 == 0:\n",
+    "            print(\"CYCLE #: {}\\n\".format(cycle))\n",
+    "        cycle += 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "CYCLE: 1\n",
+      "PATH: [20, 1, 32, 30, 29, 0, 16]\n",
+      "DISTANCE: 191.70000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [30, 16, 20, 0, 29, 1, 32]\n",
+      "DISTANCE: 185.30000000000004\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [16, 20, 0, 1, 29, 32, 30]\n",
+      "DISTANCE: 185.20000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [30, 1, 29, 0, 20, 16, 32]\n",
+      "DISTANCE: 185.10000000000002\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 3\n",
+      "PATH: [30, 32, 1, 29, 20, 16, 0]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 15\n",
+      "PATH: [32, 30, 29, 1, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [29, 20, 16, 0, 30, 32, 1]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 3\n",
+      "PATH: [30, 1, 29, 16, 20, 0, 32]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [1, 29, 20, 16, 0, 32, 30]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [32, 30, 0, 20, 16, 1, 29]\n",
+      "DISTANCE: 185.3\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [20, 0, 32, 30, 29, 1, 16]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [30, 29, 1, 16, 20, 0, 32]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [20, 16, 0, 1, 29, 30, 32]\n",
+      "DISTANCE: 185.4\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [0, 20, 16, 32, 30, 1, 29]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 5\n",
+      "PATH: [20, 0, 32, 30, 29, 1, 16]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 6\n",
+      "PATH: [0, 30, 32, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [1, 0, 20, 16, 30, 32, 29]\n",
+      "DISTANCE: 185.2\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [30, 32, 1, 29, 0, 20, 16]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 3\n",
+      "PATH: [29, 1, 16, 20, 0, 32, 30]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 12\n",
+      "PATH: [32, 30, 29, 1, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [29, 1, 16, 20, 0, 32, 30]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [0, 30, 32, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [1, 16, 20, 0, 32, 30, 29]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [0, 30, 32, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [20, 0, 1, 29, 30, 32, 16]\n",
+      "DISTANCE: 185.4\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [32, 30, 1, 29, 0, 20, 16]\n",
+      "DISTANCE: 185.10000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [29, 1, 0, 16, 20, 32, 30]\n",
+      "DISTANCE: 185.00000000000003\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 5\n",
+      "PATH: [0, 32, 30, 29, 1, 16, 20]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 21\n",
+      "PATH: [1, 29, 20, 16, 0, 32, 30]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [20, 16, 0, 32, 30, 29, 1]\n",
+      "DISTANCE: 185.10000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [1, 29, 0, 16, 20, 30, 32]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 21\n",
+      "PATH: [0, 32, 30, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [0, 30, 32, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [16, 0, 1, 29, 30, 32, 20]\n",
+      "DISTANCE: 185.4\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [32, 1, 29, 0, 20, 16, 30]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 3\n",
+      "PATH: [32, 1, 29, 20, 16, 0, 30]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [30, 32, 1, 29, 20, 16, 0]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 6\n",
+      "PATH: [30, 32, 1, 29, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [32, 1, 29, 0, 20, 16, 30]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [16, 20, 32, 30, 29, 1, 0]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 34\n",
+      "PATH: [32, 30, 1, 29, 20, 16, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [32, 30, 20, 16, 0, 1, 29]\n",
+      "DISTANCE: 185.3\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [30, 32, 1, 29, 0, 20, 16]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [29, 20, 16, 0, 30, 32, 1]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 61\n",
+      "PATH: [30, 29, 1, 16, 20, 0, 32]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [0, 30, 1, 29, 32, 16, 20]\n",
+      "DISTANCE: 190.4\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [32, 29, 1, 0, 16, 20, 30]\n",
+      "DISTANCE: 185.10000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [30, 32, 1, 29, 20, 16, 0]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 72\n",
+      "PATH: [30, 32, 1, 29, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [20, 30, 32, 1, 29, 0, 16]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 11\n",
+      "PATH: [30, 32, 1, 29, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [1, 29, 0, 20, 16, 32, 30]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 3\n",
+      "PATH: [20, 32, 30, 29, 1, 0, 16]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 7\n",
+      "PATH: [32, 30, 29, 1, 16, 20, 0]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [29, 32, 30, 16, 20, 0, 1]\n",
+      "DISTANCE: 185.20000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [16, 20, 30, 32, 29, 1, 0]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [0, 16, 20, 30, 32, 1, 29]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 19\n",
+      "PATH: [1, 29, 20, 16, 0, 32, 30]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [16, 32, 29, 1, 30, 0, 20]\n",
+      "DISTANCE: 190.5\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 1\n",
+      "PATH: [29, 1, 30, 32, 0, 20, 16]\n",
+      "DISTANCE: 185.60000000000002\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [30, 0, 16, 20, 1, 29, 32]\n",
+      "DISTANCE: 185.20000000000002\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 2\n",
+      "PATH: [32, 30, 29, 1, 20, 16, 0]\n",
+      "DISTANCE: 185.1\n",
+      "BEE: R\n",
+      "\n",
+      "\n",
+      "CYCLE: 4\n",
+      "PATH: [20, 0, 32, 30, 29, 1, 16]\n",
+      "DISTANCE: 185.0\n",
+      "BEE: F\n",
+      "\n",
+      "\n",
+      "CYCLE: 6\n",
+      "PATH: [0, 32, 30, 1, 29, 20, 16]\n",
+      "DISTANCE: 184.99999999999997\n",
+      "BEE: F\n",
+      "\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "if __name__ == '__main__':\n",
+    "    for i in range (0, 20):\n",
+    "       \n",
+    "        main()\n",
+    "\n",
+    "    # main()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def getting_best_path():\n",
+    "    # Control parameters\n",
+    "    population = 40\n",
+    "    forager_percent = 0.5\n",
+    "    onlooker_percent = 0.4\n",
+    "    role_percent = [onlooker_percent, forager_percent]\n",
+    "    scout_percent = 0.01\n",
+    "    scout_count = math.ceil(population * scout_percent)\n",
+    "    forager_limit = 500\n",
+    "    cycle_limit = 100\n",
+    "    cycle = 1\n",
+    "    best_distance = sys.maxsize\n",
+    "    best_path = []\n",
+    "    result = ()\n",
+    "    data = Data4\n",
+    "    # Initialization\n",
+    "    hive = initialize_hive(population, data)\n",
+    "    assign_roles(hive, role_percent)\n",
+    "    #cost = get_total_cost(path)\n",
+    "    waggle_distance,waggle_path = waggle(hive, best_distance,forager_limit,scout_count)\n",
+    "    if (waggle_distance < best_distance) and (waggle_distance <= Maximum_distance):\n",
+    "        best_distance = waggle_distance\n",
+    "        best_path = list(waggle_path)\n",
+    "    recruit_distance,recruit_path = recruit(hive, best_distance,best_path)\n",
+    "    if (recruit_distance < best_distance) and (recruit_distance <= Maximum_distance):\n",
+    "        best_path = list(recruit_path)\n",
+    "        best_distance = recruit_distance \n",
+    "    return best_path"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "best_path = getting_best_path()\n",
+    "best_path"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}