This commit is contained in:
2024-07-05 17:21:47 +02:00
parent bec1827891
commit 006b80018a
9 changed files with 396 additions and 133 deletions

View File

@@ -1,11 +1,14 @@
import pandas as pd
import os
import json
from typing import List
from landmarks_manager import generate_landmarks
from fastapi.encoders import jsonable_encoder
from optimizer import solve_optimization
from refiner import refine_optimization
from optimizer_v2 import generate_path, generate_path2
from refiner import refine_optimization, refine_path
from structs.landmarks import Landmark
from structs.landmarktype import LandmarkType
from structs.preferences import Preferences, Preference
@@ -82,8 +85,8 @@ def test4(coordinates: tuple[float, float]) -> List[Landmark]:
# Create start and finish
start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=coordinates, osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=coordinates, osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=coordinates, osm_type='start', osm_id=0, attractiveness=0, must_do=False, n_tags = 0)
finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=coordinates, osm_type='finish', osm_id=0, attractiveness=0, must_do=False, n_tags = 0)
#finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.8777055, 2.3640967), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
#start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=(48.847132, 2.312359), osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
#finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.843185, 2.344533), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
@@ -98,19 +101,31 @@ def test4(coordinates: tuple[float, float]) -> List[Landmark]:
landmarks_short.append(finish)
# TODO use these parameters in another way
max_walking_time = 2 # hours
detour = 30 # minutes
with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
parameters = json.loads(f.read())
max_landmarks = parameters['max landmarks']
max_walking_time = 45 # minutes
detour = 10 # minutes
# First stage optimization
base_tour = solve_optimization(landmarks_short, max_walking_time*60, True)
# Second stage optimization
refined_tour = refine_optimization(landmarks, base_tour, max_walking_time*60+detour, True)
return refined_tour
#base_tour = solve_optimization(landmarks_short, max_walking_time*60, True)
test4(tuple((48.8344400, 2.3220540))) # Café Chez César
# First stage using NetworkX
base_tour = generate_path2(landmarks_short, max_walking_time, max_landmarks)
# Second stage using linear optimization
#refined_tour = refine_optimization(landmarks, base_tour, max_walking_time+detour, True)
# Use NetworkX again to correct to shortest path
refined_tour = refine_path(landmarks, base_tour, max_walking_time+detour, True)
return base_tour
#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((45.7576485, 4.8330241))) # Lyon Bellecour
#test3('Vienna, Austria')