-
Notifications
You must be signed in to change notification settings - Fork 4
/
ToDo
executable file
·119 lines (99 loc) · 5.46 KB
/
ToDo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Referências
#
# PyGmae Draw lines: http://nullege.com/codes/show/src%40g%40a%40GameDevelopment-HEAD%40examples%40pygame%40raspberry_pi%40python_games%40drawing.py/20/pygame.draw.line/python
# https://www.cs.ucsb.edu/~pconrad/cs5nm/topics/pygame/drawing/
#
# https://file.scirp.org/pdf/CN_2016022911455146.pdf
# http://sbrt.org.br/sbrt2012/publicacoes/98766_1.pdf
#
# Modelos de progação
# (Free Space Model, Two Ray ground reflection model) http://kom.aau.dk/group/05gr1120/ref/Channel.pdf
#
# Path Loss: https://en.wikipedia.org/wiki/Path_loss
#
# Distância de dois pontos: http://brasilescola.uol.com.br/matematica/distancia-entre-dois-pontos.htm
#
#
# Obter resolução da tela: https://www.blog.pythonlibrary.org/2015/08/18/getting-your-screen-resolution-with-python/
#
# Converter cor hexadecimal para RGB: https://stackoverflow.com/questions/29643352/converting-hex-to-rgb-value-in-python
#
# Paleta de cores:
# http://bokeh.pydata.org/en/latest/docs/reference/palettes.html
# https://github.com/bokeh/bokeh/blob/master/bokeh/palettes.py
#
# nVidea:
# https://www.anandtech.com/show/6873/nvidias-geforce-700m-family-full-details-and-specs/2
#
#
# Instalações necessárias:
#
# * tkinter -> sudo apt-get install python3-tk
# * pygame -> sudo apt-get install python3-setuptools, python3 install pygame
# * python 3.5 -> sudo apt-get update, sudo apt-get install python3
# * numpy -> sudo pip3 install numpy
# * matplotlib -> sudo pip3 install matplotlib
# * ezdxf -> sudo python3 -m pip install ezdxf
#
# Para o cuda:
#
# * python3.6 -> sudo add-apt-repository ppa:jonathonf/python-3.6 -y, sudo apt-get install python3.6
# * Anaconda -> https://www.anaconda.com/download/#linux
#
# Modelar:
# - Point
# - Access Point
#
#
# Tentar filtrar o DXF pelas localizações dos pontos elétricos
# Limitar as possível localizações dos APs na proximidade (50 cm) dos pontos de energia.
#
#
#
## Passo 1
# Criar matriz 2000x900 para representar a proporção do CAD
# Definir a posição do acess point (x, y)
# Posição inicial do AP mais no centro (1000, 450)
# Percorrer a matriz a p/ cada posicao da matriz (j, k) calcular a distanicia entre os dois pontos
# Passar a distância calculada para a função de propagação
# Preencher a matriz com o resultado
## Sugestão: utilize o script do GNUplot para ColorMap (Vinícius), exportando sua matriz como uma célula por linha de
# arquivo, transformando a matriz numa lista de 2000*900 linhas de arquivo. O script irá plotar uma imagem LIIINDA
#
# Ao invés de pegar cores com saltos linares, pegar cores num intervalo quadratico
#
#
## Passo 2 (deixar pra depois, pule para o passo 5)
# Pegar aquela saida do DFX com as linhas das paredes, consegue montar uma matriz auxiliar onde terá FALSE para preto
# e TRUE para AZUL, ou melhor, FALSE quando for espaço livre e AZUL quando tiver "dentro" de uma parede (a parede pode
# ultrapassar mais de uma célula da matriz |...| )
## Passo 3
# Já sabemos onde estão as paredes
# Percorremos a matriz por linhas e colunas. Para cada inicio de linha terei uma variavel paredesAtravessadas = 0
# Se na posição j,k da matriz o espaço for vazio, aplico a formula de propagação como no passo 1
# Se na posição j,k da matriz tiver uma parede, paredesAtravessadas++,
# aplico a formula de propagação como no passo 1, subtraio o valor da paredesAtravessadas * absoçãoPorParede
# OBS.: absorçãoDaParede pode ser medido empiricamente ou consultado numa tabela do livro. RAPPAPORT Comunicação Sem Fio (BV Pearson)
# Continuando naquela linha, mantenho paredesAtravessadas com o novo valor, sempre subtraindo as paredes dali para frente
# Acabou a linha e começou a próxima, paredesAtravessadas = 0
## Passo 4: compare os valores da simulação de propagação com os valores da medição real. Ajuste os parâmetros (ganho antena,
# absorção da parede, etc)
## Passo 5:
# implemente algum algoritmo de Pesquisa Operacional para explorar o espaço de possíveis posições pro AP
# para cada posição, calcule toda a matriz de propagação e gere um valor que a represente => função objetivo (ex.: FO poderia ser
# some todas as céĺulas). Deixe o alg.PO explorar posições enquanto melhorar a FO... etc
# Ao final do alg.PO, terá a malhor posição de UM AP de acordo com o ambiente
# Montar a escala de cores e escala da planta.
## Passo 6:
# altere o algoritmo de PO para trabalhar simultaneamente com mais de um AP, ex.: para cada um calcule e some as matrizes e gere uma
# FO global, deixando o algoritmo explorar o espaço e as posições de APs. Ao final terá um ótimo local com posições candidatas para os APs.
## Passo 7:
# se ainda der tempo, aumentar a precição da propagação (paredes de grossuras diferentes, interação entre mais de 3 APs = coloração de grafos)
# se ainda der tempo, ilustrar o processo com o pyGames
# se ainda der tempo, colocar na FO também a demanda de APs de acordo com a densidade de pessoas (trabalho de disciplina com o Calixto)
# TO DO:
# Resumo do resultado final. Porcentagem de valores bons, ruins e medios. Definir o que é 'bom', 'ruim' e 'medio'.
# Criar funcionalidade usando o PyGame. Usuário clina na tela e gera uma simulação de acordo com o ponto do evento do clique do mouse.
# Modificar o raio AND (iteracoes, tempInicial)
# Modificar a solução inicial (0,0, meio, aleatoria)
# Teste com um AP transmitindo uma potencia mais baixa que 17 dBm (10 ou 1 ou -10)