Skip to content

Instantly share code, notes, and snippets.

@luizcartolano2
Last active November 13, 2019 18:43
Show Gist options
  • Save luizcartolano2/e334f48ffd761d36e7febdddd277f9ed to your computer and use it in GitHub Desktop.
Save luizcartolano2/e334f48ffd761d36e7febdddd277f9ed to your computer and use it in GitHub Desktop.
Códigos de implementação das buscas supervisionadas e não supervisionadas no Trabalho de MC906.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Buscas não supervisionadas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {},
"outputs": [],
"source": [
"# imports necessarios\n",
"from search import *\n",
"from notebook import psource, heatmap, gaussian_kernel, show_map, final_path_colors, display_visual, plot_NQueens\n",
"import networkx as nx\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.ticker import MultipleLocator\n",
"import time\n",
"from statistics import mean, stdev\n",
"from math import sqrt\n",
"from memory_profiler import memory_usage\n",
"\n",
"# Needed to hide warnings in the matplotlib sections\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Criação do mapa e do grafo"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# make the dict where the key is associated with his neighbors\n",
"mapa = {}\n",
"for i in range(0,60):\n",
" for j in range(0,60):\n",
" mapa[(i,j)] = {(i+1,j):1, (i-1,j):1, (i,j+1):1, (i,j-1):1}\n",
" \n",
"grafo = UndirectedGraph(mapa)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modelagem da classe problema"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [],
"source": [
"class RobotProblem(Problem):\n",
"\n",
" \"\"\"Problema para encontrar o goal saindo de uma posicao (x,y) com um robo.\"\"\"\n",
"\n",
" def __init__(self, initial, goal, mapa, graph):\n",
" Problem.__init__(self, initial, goal)\n",
" self.mapa = mapa\n",
" self.graph = graph\n",
"\n",
" def actions(self, actual_pos):\n",
" \"\"\"The actions at a graph node are just its neighbors.\"\"\"\n",
" neighbors = list(self.graph.get(actual_pos).keys())\n",
" valid_actions = []\n",
" for act in neighbors:\n",
" if act[0] == 0 or act[0] == 60 or act[1] == 0 or act[1] == 60:\n",
" i = 1\n",
" elif (act[0] == 20 and (0<= act[1] <= 40)):\n",
" i = 2\n",
" elif (act[0] == 40 and (20<= act[1] <= 60)):\n",
" i = 3\n",
" else:\n",
" valid_actions.append(act)\n",
" \n",
" return valid_actions\n",
"\n",
" def result(self, state, action):\n",
" \"\"\"The result of going to a neighbor is just that neighbor.\"\"\"\n",
" return action\n",
"\n",
" def path_cost(self, cost_so_far, state1, action, state2):\n",
" return cost_so_far + 1\n",
"\n",
" def goal_test(self, state):\n",
" if state[0] == self.goal[0] and state[1] == self.goal[1]:\n",
" return True\n",
" else:\n",
" return False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Busca nao supervisionada: DFS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo da memoria usada"
]
},
{
"cell_type": "code",
"execution_count": 214,
"metadata": {},
"outputs": [],
"source": [
"def calc_memory_dfs():\n",
" init_pos = (10,10)\n",
" goal_pos = (50,50)\n",
"\n",
" robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
" node = depth_first_graph_search(robot_problem)"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [],
"source": [
"mem_usage = memory_usage(calc_memory_dfs)"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Memória usada (em intervalos de .1 segundos): [31.50390625, 31.8671875, 32.0, 32.125, 32.2109375, 32.39453125, 32.45703125, 32.51171875, 32.5625, 32.6171875, 32.6328125, 32.546875]\n",
"Maximo de memoria usada: 32.6328125\n"
]
}
],
"source": [
"print('Memória usada (em intervalos de .1 segundos): %s' % mem_usage)\n",
"print('Maximo de memoria usada: %s' % max(mem_usage))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo do custo da busca e o caminho percorrido"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Custo da busca DFS: 1084\n"
]
}
],
"source": [
"init_pos = (10,10)\n",
"goal_pos = (50,50)\n",
"\n",
"robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
"node = depth_first_graph_search(robot_problem)\n",
"print(\"Custo da busca DFS: \" + str(node.path_cost))"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {},
"outputs": [],
"source": [
"list_nodes = []\n",
"for n in node.path():\n",
" list_nodes.append(n.state)"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [],
"source": [
"x = []\n",
"y = []\n",
"for nod in list_nodes:\n",
" x.append(nod[0])\n",
" y.append(nod[1])"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.xlim(0,60)\n",
"plt.ylim(0,60)\n",
"plt.title('Caminho percorrido pelo robo na busca DFS')\n",
"plt.annotate(\"\",\n",
" xy=(0,0), xycoords='data',\n",
" xytext=(0, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(0,0), xycoords='data',\n",
" xytext=(60, 0), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"\n",
"plt.annotate(\"\",\n",
" xy=(60,0), xycoords='data',\n",
" xytext=(60, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"\n",
"plt.annotate(\"\",\n",
" xy=(0,60), xycoords='data',\n",
" xytext=(60, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(40,20), xycoords='data',\n",
" xytext=(40, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(20,0), xycoords='data',\n",
" xytext=(20, 40), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.scatter(x,y)\n",
"plt.scatter(10,10,color='r')\n",
"plt.scatter(50,50,color='r')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo do tempo gasto pela DFS com inicio em (10,10) e fim em (50,50)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"init_pos = (10,10)\n",
"goal_pos = (50,50)\n",
"\n",
"robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
"\n",
"times = []\n",
"for i in range(0,1000):\n",
" start = time.time()\n",
" node = depth_first_graph_search(robot_problem)\n",
" end = time.time()\n",
" times.append(end - start)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Media do tempo gasto para a busca DFS: 1.009512909412384\n",
"Desvio padrao do tempo gasto para a busca DFS: 0.14409295994680466\n",
"Intervalo de confiança para a busca DFS: (1.0005819352271286,1.0184438835976395)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"media_dfs = mean(times)\n",
"desvio_dfs = stdev(times)\n",
"intervalo_conf = '(' + str( media_dfs - 1.96 * (desvio_dfs / (len(times)) ** (1/2)) ) + ',' + str( media_dfs + 1.96 * (desvio_dfs / (len(times)) ** (1/2)) ) + ')'\n",
"print(\"Media do tempo gasto para a busca DFS: \" + str(media_dfs))\n",
"print(\"Desvio padrao do tempo gasto para a busca DFS: \" + str(desvio_dfs))\n",
"print(\"Intervalo de confiança para a busca DFS: \" + intervalo_conf)\n",
"fig = plt.figure()\n",
"plt.hist(times,bins=50)\n",
"plt.title('Histograma para o tempo de execucao da DFS')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Projecao da relacao entre distancia em linha reta e tempo para a DFS"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"goal_pos = (50,50)\n",
"x = []\n",
"y = []\n",
"for i in range(5,50):\n",
" for j in range(5,50):\n",
" if i != 20 and i != 40:\n",
" init_pos = (i,i)\n",
" distancia_linha_reta = sqrt( (goal_pos[0] - init_pos[0]) ** 2 + (goal_pos[1] - init_pos[1]) ** 2)\n",
" robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
" start = time.time()\n",
" node = depth_first_graph_search(robot_problem)\n",
" end = time.time()\n",
" x.append(distancia_linha_reta)\n",
" y.append(end - start)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.scatter(x,y)\n",
"plt.ylim(0.2, 2)\n",
"plt.title(\"Distancia em linha reta x Tempo DFS\")\n",
"plt.xlabel(\"Distancia em linha reta entre os pontos inicial e final\")\n",
"plt.ylabel(\"Tempo da busca DFS\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Busca nao supervisionada: BFS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo da memoria usada"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [],
"source": [
"def calc_memory_bfs():\n",
" init_pos = (10,10)\n",
" goal_pos = (50,50)\n",
"\n",
" robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
" node = breadth_first_graph_search(robot_problem)"
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [],
"source": [
"mem_usage = memory_usage(calc_memory_bfs)"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Memória usada (em intervalos de .1 segundos): [32.92578125, 32.92578125, 32.92578125, 32.92578125, 32.92578125, 32.92578125, 32.92578125, 32.92578125, 32.92578125]\n",
"Maximo de memoria usada: 32.92578125\n"
]
}
],
"source": [
"print('Memória usada (em intervalos de .1 segundos): %s' % mem_usage)\n",
"print('Maximo de memoria usada: %s' % max(mem_usage))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo do custo da busca e o caminho percorrido"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Custo da busca BFS: 124\n"
]
}
],
"source": [
"init_pos = (10,10)\n",
"goal_pos = (50,50)\n",
"\n",
"robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
"node = breadth_first_graph_search(robot_problem)\n",
"print(\"Custo da busca BFS: \" + str(node.path_cost))"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [],
"source": [
"list_nodes = []\n",
"for n in node.path():\n",
" list_nodes.append(n.state)\n",
" \n",
"x = []\n",
"y = []\n",
"for nod in list_nodes:\n",
" x.append(nod[0])\n",
" y.append(nod[1])"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.xlim(0,60)\n",
"plt.ylim(0,60)\n",
"plt.title('Caminho percorrido pelo robo na busca BFS')\n",
"plt.annotate(\"\",\n",
" xy=(0,0), xycoords='data',\n",
" xytext=(0, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(0,0), xycoords='data',\n",
" xytext=(60, 0), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"\n",
"plt.annotate(\"\",\n",
" xy=(60,0), xycoords='data',\n",
" xytext=(60, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"\n",
"plt.annotate(\"\",\n",
" xy=(0,60), xycoords='data',\n",
" xytext=(60, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(40,20), xycoords='data',\n",
" xytext=(40, 60), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.annotate(\"\",\n",
" xy=(20,0), xycoords='data',\n",
" xytext=(20, 40), textcoords='data',\n",
" arrowprops=dict(arrowstyle=\"-\",\n",
" edgecolor = \"black\",\n",
" linewidth=5,\n",
" alpha=0.65,\n",
" connectionstyle=\"arc3,rad=0.\"),\n",
" )\n",
"plt.scatter(x,y)\n",
"plt.scatter(10,10,color='r')\n",
"plt.scatter(50,50,color='r')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculo do tempo gasto pela BFS com inicio em (10,10) e fim em (50,50)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [],
"source": [
"init_pos = (10,10)\n",
"goal_pos = (50,50)\n",
"\n",
"robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
"\n",
"times = []\n",
"for i in range(0,1000):\n",
" start = time.time()\n",
" node = breadth_first_graph_search(robot_problem)\n",
" end = time.time()\n",
" times.append(end - start)"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Media do tempo gasto para a busca BFS: 0.05700565814971924\n",
"Desvio padrao do tempo gasto para a busca BFS: 0.009455976054136637\n",
"Intervalo de confiança para a busca BFS: (0.056419570681830004,0.05759174561760847)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"media_bfs = mean(times)\n",
"desvio_bfs = stdev(times)\n",
"intervalo_conf = '(' + str( media_bfs - 1.96 * (desvio_bfs / (len(times)) ** (1/2)) ) + ',' + str( media_bfs + 1.96 * (desvio_bfs / (len(times)) ** (1/2)) ) + ')'\n",
"print(\"Media do tempo gasto para a busca BFS: \" + str(media_bfs))\n",
"print(\"Desvio padrao do tempo gasto para a busca BFS: \" + str(desvio_bfs))\n",
"print(\"Intervalo de confiança para a busca BFS: \" + intervalo_conf)\n",
"fig = plt.figure()\n",
"plt.hist(times,bins=10)\n",
"plt.title('Histograma para o tempo de execucao da BFS')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Projecao da relacao entre distancia em linha reta e tempo para a BFS"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [],
"source": [
"goal_pos = (50,50)\n",
"x = []\n",
"y = []\n",
"for i in range(5,50):\n",
" for j in range(5,50):\n",
" if i != 20 and i != 40:\n",
" init_pos = (i,i)\n",
" distancia_linha_reta = sqrt( (goal_pos[0] - init_pos[0]) ** 2 + (goal_pos[1] - init_pos[1]) ** 2)\n",
" robot_problem = RobotProblem(init_pos, goal_pos, mapa, grafo)\n",
" start = time.time()\n",
" node = breadth_first_graph_search(robot_problem)\n",
" end = time.time()\n",
" x.append(distancia_linha_reta)\n",
" y.append(end - start)"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.scatter(x,y)\n",
"plt.xlim(0,42)\n",
"plt.ylim(0, 0.15)\n",
"plt.title(\"Distancia em linha reta x Tempo BFS\")\n",
"plt.xlabel(\"Distancia em linha reta entre os pontos inicial e final\")\n",
"plt.ylabel(\"Tempo da busca BFS\")\n",
"plt.show()"
]
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment