|
import os |
|
import sys |
|
from pathlib import Path |
|
|
|
|
|
sys.path.append(str(Path(__file__).resolve().parent.parent.parent)) |
|
|
|
def create_data_directory(): |
|
""" |
|
Ensure data directories exist for all generated files. |
|
|
|
This function creates the necessary directory structure to store |
|
delivery data, vehicle data, and travel time matrices. |
|
|
|
Returns: |
|
-------- |
|
tuple of (str, str, str) |
|
Paths to time matrix directory, vehicle data directory, and delivery data directory |
|
""" |
|
vehicle_data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'data', 'vehicle-data') |
|
os.makedirs(vehicle_data_dir, exist_ok=True) |
|
|
|
delivery_data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'data', 'delivery-data') |
|
os.makedirs(delivery_data_dir, exist_ok=True) |
|
|
|
time_matrix_data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'data', 'time-matrix') |
|
os.makedirs(time_matrix_data_dir, exist_ok=True) |
|
return time_matrix_data_dir, vehicle_data_dir, delivery_data_dir |
|
|
|
def main(): |
|
""" |
|
Run all data generation scripts for the delivery route optimization project. |
|
|
|
This function orchestrates the creation of all synthetic datasets needed for |
|
the route optimization problem, including delivery data, vehicle data, and |
|
travel time/distance matrices. |
|
|
|
Generated Files: |
|
-------------- |
|
1. Delivery Data: |
|
- Contains information about delivery locations, time windows, packages, etc. |
|
- Used to define the delivery stops in the routing problem. |
|
|
|
2. Vehicle Data: |
|
- Contains information about the delivery fleet, capacity, depots, etc. |
|
- Used to define the available resources for delivery routes. |
|
|
|
3. Travel Matrices: |
|
- Contains distance and time information between all locations. |
|
- Used by the optimization algorithm to calculate route costs. |
|
|
|
Usage: |
|
------ |
|
These generated datasets form the foundation of the delivery route optimization |
|
application. Together they define: |
|
- Where deliveries need to be made (delivery data) |
|
- What resources are available for deliveries (vehicle data) |
|
- How long it takes to travel between locations (travel matrices) |
|
|
|
The route optimization algorithm uses these inputs to determine the most |
|
efficient assignment of deliveries to vehicles and the optimal sequence of |
|
stops for each vehicle. |
|
""" |
|
print("Starting data generation process...") |
|
|
|
time_matrix_data_dir, vehicle_data_dir, delivery_data_dir = create_data_directory() |
|
print(f"Time Matrix Data will be saved to: {time_matrix_data_dir}") |
|
print(f"Delivery Data will be saved to: {delivery_data_dir}") |
|
print(f"Vehicle Data will be saved to: {vehicle_data_dir}") |
|
|
|
|
|
print("\n1. Generating delivery data...") |
|
from src.utils.generate_delivery_data import generate_delivery_data |
|
delivery_data = generate_delivery_data(50, use_geocoding=True) |
|
|
|
|
|
print("\n2. Generating vehicle data...") |
|
from src.utils.generate_vehicle_data import generate_vehicle_data |
|
vehicle_data = generate_vehicle_data(10) |
|
|
|
|
|
print("\n3. Generating travel matrices...") |
|
from src.utils.generate_travel_matrix import generate_travel_matrix |
|
generate_travel_matrix() |
|
|
|
print("\nAll data generation complete! Files saved to data directory.") |
|
|
|
if __name__ == "__main__": |
|
main() |