Corrected optimizer and landmark attributes in backend
This commit is contained in:
parent
8e33bd1b3f
commit
bec1827891
@ -19,9 +19,9 @@ def print_res(L: List[Landmark], L_tot):
|
||||
|
||||
dist = 0
|
||||
for elem in L :
|
||||
if elem.name != 'start' :
|
||||
print('- ' + elem.name + ', time to reach = ' + str(elem.time_to_reach))
|
||||
dist += elem.time_to_reach
|
||||
if elem.time_to_reach_next is not None :
|
||||
print('- ' + elem.name + ', time to reach next = ' + str(elem.time_to_reach_next))
|
||||
dist += elem.time_to_reach_next
|
||||
else :
|
||||
print('- ' + elem.name)
|
||||
|
||||
@ -300,7 +300,7 @@ def respect_order(N: int, A_eq, b_eq):
|
||||
|
||||
|
||||
# Computes the time to reach from each landmark to the next
|
||||
def add_time_to_reach(order: List[int], landmarks: List[Landmark])->List[Landmark] :
|
||||
def link_list(order: List[int], landmarks: List[Landmark])->List[Landmark] :
|
||||
|
||||
# Read the parameters from the file
|
||||
with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
|
||||
@ -308,24 +308,25 @@ def add_time_to_reach(order: List[int], landmarks: List[Landmark])->List[Landmar
|
||||
detour_factor = parameters['detour factor']
|
||||
speed = parameters['average walking speed']
|
||||
|
||||
L = []
|
||||
j = 0
|
||||
L = []
|
||||
prev = landmarks[0]
|
||||
|
||||
while(len(L) != len(order)) :
|
||||
|
||||
total_dist = 0
|
||||
while j < len(order)-1 :
|
||||
elem = landmarks[order[j]]
|
||||
if elem != prev :
|
||||
elem.time_to_reach = get_distance(elem.location, prev.location, detour_factor, speed)[1]
|
||||
elem.must_do = True
|
||||
next = landmarks[order[j+1]]
|
||||
|
||||
d = get_distance(elem.location, next.location, detour_factor, speed)[1]
|
||||
elem.time_to_reach_next = d
|
||||
L.append(elem)
|
||||
prev = elem
|
||||
j += 1
|
||||
total_dist += d
|
||||
|
||||
return L
|
||||
L.append(next)
|
||||
|
||||
return L, total_dist
|
||||
|
||||
|
||||
def add_time_to_reach_simple(ordered_visit: List[Landmark])-> List[Landmark] :
|
||||
def link_list_simple(ordered_visit: List[Landmark])-> List[Landmark] :
|
||||
|
||||
# Read the parameters from the file
|
||||
with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
|
||||
@ -334,17 +335,20 @@ def add_time_to_reach_simple(ordered_visit: List[Landmark])-> List[Landmark] :
|
||||
speed = parameters['average walking speed']
|
||||
|
||||
L = []
|
||||
prev = ordered_visit[0]
|
||||
L.append(prev)
|
||||
j = 0
|
||||
total_dist = 0
|
||||
while j < len(ordered_visit)-1 :
|
||||
elem = ordered_visit[j]
|
||||
next = ordered_visit[j+1]
|
||||
|
||||
for elem in ordered_visit[1:] :
|
||||
elem.time_to_reach = get_distance(elem.location, prev.location, detour_factor, speed)[1]
|
||||
elem.must_do = True
|
||||
elem.next_uuid = next.uuid
|
||||
d = get_distance(elem.location, next.location, detour_factor, speed)[1]
|
||||
elem.time_to_reach_next = d
|
||||
L.append(elem)
|
||||
prev = elem
|
||||
total_dist += get_distance(elem.location, prev.location, detour_factor, speed)[1]
|
||||
j += 1
|
||||
total_dist += d
|
||||
|
||||
L.append(next)
|
||||
|
||||
return L, total_dist
|
||||
|
||||
@ -394,7 +398,7 @@ def solve_optimization (landmarks :List[Landmark], max_steps: int, printing_deta
|
||||
raise TimeoutError(f"Optimization took too long. No solution found after {timeout} iterations.")
|
||||
|
||||
# Add the times to reach and stop optimizing
|
||||
L = add_time_to_reach(order, landmarks)
|
||||
L, total_dist = link_list(order, landmarks)
|
||||
|
||||
if printing_details is True :
|
||||
if i != 0 :
|
||||
|
@ -9,7 +9,7 @@ from math import pi
|
||||
|
||||
from structs.landmarks import Landmark
|
||||
from landmarks_manager import take_most_important
|
||||
from optimizer import solve_optimization, add_time_to_reach_simple, print_res, get_distance
|
||||
from optimizer import solve_optimization, link_list_simple, print_res, get_distance
|
||||
|
||||
|
||||
def create_corridor(landmarks: List[Landmark], width: float) :
|
||||
@ -214,7 +214,7 @@ def refine_optimization(landmarks: List[Landmark], base_tour: List[Landmark], ma
|
||||
|
||||
# get a new tour
|
||||
new_tour = solve_optimization(full_set, max_time, False)
|
||||
new_tour, new_dist = add_time_to_reach_simple(new_tour)
|
||||
new_tour, new_dist = link_list_simple(new_tour)
|
||||
|
||||
"""#if base_tour[0].location == base_tour[-1].location :
|
||||
if False :
|
||||
@ -276,7 +276,7 @@ def refine_optimization(landmarks: List[Landmark], base_tour: List[Landmark], ma
|
||||
|
||||
|
||||
better_tour, better_poly = find_shortest_path_through_all_landmarks(new_tour)
|
||||
better_tour, better_dist = add_time_to_reach_simple(better_tour)
|
||||
better_tour, better_dist = link_list_simple(better_tour)
|
||||
|
||||
if new_dist < better_dist :
|
||||
final_tour = new_tour
|
||||
|
@ -110,7 +110,7 @@ def test4(coordinates: tuple[float, float]) -> List[Landmark]:
|
||||
return refined_tour
|
||||
|
||||
|
||||
#test4(tuple((48.8344400, 2.3220540))) # Café Chez César
|
||||
test4(tuple((48.8344400, 2.3220540))) # Café Chez César
|
||||
#test4(tuple((48.8375946, 2.2949904))) # Point random
|
||||
test4(tuple((47.377859, 8.540585))) # Zurich HB
|
||||
#test4(tuple((47.377859, 8.540585))) # Zurich HB
|
||||
#test3('Vienna, Austria')
|
Loading…
x
Reference in New Issue
Block a user