-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
225 lines (171 loc) · 6.81 KB
/
main.py
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
from config.imports import *
#valor de cada ponto secundario
value_secondary: float = 1
#menu de seleção de mapa
while True:
print("Selecione o mapa 1 a 4: ")
mapa_escolha = input()
# Valida a escolha do mapa
if mapa_escolha in ['1', '2', '3', '4']:
break # Sai do loop se a escolha for válida
else:
print("Escolha inválida. Por favor, selecione o mapa 1 a 4.")
#carrega
#mapa = carregar_mapa(mapa_escolha)
mapa = carregar_mapa(mapa_escolha)
Printar_mapa(mapa)
#todos os objetivos4
all_point:list[Node] = encontrar_node_objetivo_lista(mapa)
#todos os objetivos secundarios
all_secundary:list[Node] = encontrar_node_objetivo_secundario_lista(mapa)
#o local de inicio de agente
inicio:Node = encontrar_node_inicial(mapa)
#variaveis de controle de custo, tempo e pontos
#largura
tempo_total_largura: float = 0
custo_total_largura: float = 0
pontos_total_largura: int = 0
#profundidade
tempo_total_profundidade: float = 0
custo_total_profundidade: float = 0
pontos_total_profundidade: int = 0
#gulosa
tempo_total_gulosa: float = 0
custo_total_gulosa: float = 0
pontos_total_gulosa: int = 0
#a_estrela
tempo_total_a_estrela: float = 0
custo_total_a_estrela: float = 0
pontos_total_a_estrela: int = 0
while all_point:
if(all_point and inicio):
start_time = time.time()
caminho = busca_em_largura(inicio, all_point, all_secundary)
end_time = time.time()
tempo_total_largura += end_time - start_time
print("Caminho achado entre os nós", caminho[-1].name,"-",caminho[0].name,"\n")
if caminho:
pontos_total_largura += 1
for node in caminho:
if(node.is_secondary):
pontos_total_largura += value_secondary
print(node.name)
else:
print("Nenhum caminho encontrado")
time.sleep(2)
#pausa para mostrar o caminho
time.sleep(1)
#mudando o incio do agente para o local do ponto achado
inicio = caminho[-1]
#removendo o ponto achado
all_point.remove(caminho[-1])
custo_total_largura += custo_caminho(caminho)
mostrar_caminho(mapa, caminho, "Busca em largura")
limpar_node_parente(mapa)
#carrega o mapa
mapa = carregar_mapa(mapa_escolha)
#todos os objetivos
all_point:Node = encontrar_node_objetivo_lista(mapa)
#todos os objetivos secundarios
all_secundary: list[Node] = encontrar_node_objetivo_secundario_lista(mapa)
#o local de inicio de agente
inicio:Node = encontrar_node_inicial(mapa)
while all_point:
if(all_point and inicio):
start_time = time.time()
caminho = busca_em_profundidade(inicio, all_point, all_secundary)
end_time = time.time()
tempo_total_profundidade += end_time - start_time
print("Caminho achado entre os nós", caminho[-1].name,"-",caminho[0].name,"\n")
if caminho:
pontos_total_profundidade += 1
for node in caminho:
if(node.is_secondary):
pontos_total_profundidade += value_secondary
print(node.name)
else:
print("Nenhum caminho encontrado")
time.sleep(2)
#pausa para mostrar o caminho
time.sleep(1)
#mudando o incio do agente para o local do ponto achado
inicio = caminho[-1]
#removendo o ponto achado
all_point.remove(caminho[-1])
custo_total_profundidade += custo_caminho(caminho)
mostrar_caminho(mapa, caminho, "Busca em profundidade")
limpar_node_parente(mapa)
mapa = carregar_mapa(mapa_escolha)
#todos os objetivos
all_point:Node = encontrar_node_objetivo_lista(mapa)
#todos os objetivos secundarios
all_secundary = encontrar_node_objetivo_secundario_lista(mapa)
#o local de inicio de agente
inicio:Node = encontrar_node_inicial(mapa)
while all_point:
if(all_point and inicio):
start_time = time.time()
caminho = busca_gulosa(inicio, all_point, all_secundary)
end_time = time.time()
tempo_total_gulosa += end_time - start_time
print("Caminho achado entre os nós", caminho[-1].name,"-",caminho[0].name,"\n")
if caminho:
pontos_total_gulosa += 1
for node in caminho:
if(node.is_secondary):
pontos_total_gulosa += value_secondary
print(node.name)
else:
print("Nenhum caminho encontrado")
#pausa para mostrar o caminho
time.sleep(1)
#mudando o incio do agente para o local do ponto achado
inicio = caminho[-1]
#removendo o ponto achado
all_point.remove(caminho[-1])
custo_total_gulosa += custo_caminho(caminho)
mostrar_caminho(mapa, caminho, "Busca gulosa")
limpar_node_parente(mapa)
mapa = carregar_mapa(mapa_escolha)
#todos os objetivos
all_point:Node = encontrar_node_objetivo_lista(mapa)
#todos os objetivos secundarios
all_secundary = encontrar_node_objetivo_secundario_lista(mapa)
#o local de inicio de agente
inicio:Node = encontrar_node_inicial(mapa)
while all_point:
if(all_point and inicio):
start_time = time.time()
caminho = a_estrela(inicio, all_point, all_secundary)
end_time = time.time()
tempo_total_a_estrela += end_time - start_time
print("Caminho achado entre os nós", caminho[-1].name,"-",caminho[0].name,"\n")
if caminho:
pontos_total_a_estrela += 1
for node in caminho:
if(node.is_secondary):
pontos_total_a_estrela += value_secondary
print(node.name)
else:
print("Nenhum caminho encontrado")
#pausa para mostrar o caminho
time.sleep(1)
#mudando o incio do agente para o local do ponto achado
inicio = caminho[-1]
#removendo o ponto achado
all_point.remove(caminho[-1])
custo_total_a_estrela += custo_caminho(caminho)
mostrar_caminho(mapa, caminho, "A*")
limpar_node_parente(mapa)
print("CUSTO TOTAL do algortimo busca em largura: ", custo_total_largura)
print(f"Tempo de execução: {tempo_total_largura:.5} segundos")
print(f"Quantidade pontos: {pontos_total_largura}\n")
print("CUSTO TOTAL do algortimo busca em profundidade: ", custo_total_profundidade)
print(f"Tempo de execução: {tempo_total_profundidade:.5} segundos")
print(f"Quantidade pontos: {pontos_total_profundidade}\n")
print("CUSTO TOTAL do algortimo busca gulosa: ", custo_total_gulosa)
print(f"Tempo de execução: {tempo_total_gulosa:.5} segundos")
print(f"Quantidade pontos: {pontos_total_gulosa}\n")
print("CUSTO TOTAL do algortimo busca A*: ",custo_total_a_estrela)
print(f"Tempo de execução: {tempo_total_a_estrela:.5} segundos")
print(f"Quantidade pontos: {pontos_total_a_estrela}\n")