route-planning
Plan multi-city road trip routes using distance matrices and constraints
- License 许可
- MIT
- 最近更新
- 2026-10-02
- Stars
- ★ 93
- Forks
- 8
01 前言 Front Matter
- name
- route-planning
- description
- Plan multi-city road trip routes using distance matrices and constraints
03 SKILL.md 正文
Route Planning Skill
Overview
Plan efficient multi-city road trips with constraints like starting point, number of days, and no-fly requirements.
Core Strategy
Distance-Based Route Optimization
- Use distance matrix to calculate travel times/distances
- Minimize backtracking between cities
- Allocate days based on travel time and activities per city
Day Allocation Strategy
- 1 day for initial travel to first city
- Remaining days distributed across 3 Ohio cities
- Typical allocation: 2-2-2 days or 2-2-3 depending on distances
- Last day may include return travel (not full return in this case)
Python Code Example
from typing import List, Dict, Tuple
from itertools import permutations
def find_best_route(
start_city: str,
num_cities: int,
available_cities: List[str],
distance_matrix: Dict[str, Dict[str, float]]
) -> Tuple[List[str], float]:
"""
Find optimal route visiting num_cities starting from start_city.
Returns (route, total_distance)
"""
best_route = None
best_distance = float('inf')
# Try all permutations of available cities
for perm in permutations(available_cities[:num_cities]):
route = [start_city] + list(perm)
total_distance = calculate_route_distance(route, distance_matrix)
if total_distance < best_distance:
best_distance = total_distance
best_route = route
return best_route, best_distance
def calculate_route_distance(route: List[str], distance_matrix: Dict) -> float:
"""Calculate total distance for a route"""
total = 0
for i in range(len(route) - 1):
from_city = route[i]
to_city = route[i + 1]
if from_city in distance_matrix and to_city in distance_matrix[from_city]:
total += float(distance_matrix[from_city][to_city])
else:
return float('inf') # Invalid route
return total
def allocate_days_to_cities(
num_days: int,
num_cities: int
) -> List[int]:
"""
Allocate days across cities.
First city gets 1 day (travel day), remaining split among other cities.
"""
# First city gets 1 day for arrival/travel
remaining_days = num_days - 1
remaining_cities = num_cities
days_per_city = [1] # First city
# Distribute remaining days
base_days = remaining_days // remaining_cities
extra_days = remaining_days % remaining_cities
for i in range(remaining_cities):
days = base_days + (1 if i < extra_days else 0)
days_per_city.append(days)
return days_per_city
def estimate_travel_time(distance: float, mph: float = 60) -> float:
"""Estimate driving time in hours"""
return distance / mph
Route Selection Considerations
- Starting Point: Minneapolis, Minnesota
- Destination: 3 Ohio cities (Cleveland, Columbus, Cincinnati are major options)
- No Flights: Must use self-driving/ground transport
- Distance Budget: 7-day trip with reasonable daily driving (6-8 hours max)
- Circular vs Linear: Consider if returning to Minneapolis or ending in Ohio
Typical Route Pattern
Day 1: Minneapolis → City 1 (travel day, possibly long drive)
Day 2-3: City 1 (explore attractions, dining)
Day 4: City 1 → City 2 (short/medium drive)
Day 5-6: City 2 (explore attractions, dining)
Day 7: City 2 → City 3 OR City 2 (final day)
Usage Example
route, distance = find_best_route(
start_city='Minneapolis',
num_cities=3,
available_cities=['Cleveland', 'Columbus', 'Cincinnati'],
distance_matrix=distances
)
days_allocation = allocate_days_to_cities(
num_days=7,
num_cities=3
)
04 同仓库更多 Skills
object_counter
Count occurrences of an object in the image using computer vision algorithm.
travel-planning-workflow
Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.
bundled-dataset-search-tool
invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.
glm-output
Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final /root/metrics.json.
glm-calibration
Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.
glm-basics
A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.