Skip to main content

A solver for real-time vehicle routing problems

Project description

Online-RTV

Code example

Initialize

from online_rtv_solver import OnlineRTVSolver

# Initialize the RTV solver with the URL of the OSRM server
online_rtv_solver = OnlineRTVSolver("http://127.0.0.1:50000/")

Initialize

driver_runs = online_rtv_solver.solve_rtv(current_time,new_payload)

Generating a manifest

current_time = 5*3600+30*60 # 05:30:00 pm
driver_runs = online_rtv_solver.solve_rtv(current_time,new_payload)

Simulate the vehicles

current_time = 5*3600+40*60+00 # Simulate to 05:40:00 pm
new_driver_runs = online_rtv_solver.simulate_manifest(current_time,new_payload["date"],driver_runs)

Payload format

Common format

{
    
    'depot': {
        'loc': {'lat': float, 'lon': float, 'node_id': int}
    }, 
    'date': 'yyyy-mm-dd', 
    'driver_runs': [],
    'requests': []
    
}

Requests

{
    
    'requests': [ {
        'am': int,
        'wc': int,
        'pickup_time_window_start': int,
        'pickup_time_window_end': int,
        'pickup_pt': {'lat': float, 'lon': float, 'node_id': int},
        'booking_id': int,
        'dropoff_time_window_start': int,
        'dropoff_time_window_end': int,
        'dropoff_pt': {'lat': float, 'lon': float, 'node_id': int}
    }] 
    
}

DriverRun

{
    
    'DriverRun': [ {
        'state': {
            'run_id': int,
            'start_time': int,
            'end_time': int,
            'am_capacity': int,
            'wc_capacity': int,
            'locations_already_serviced': int,
            'locations_dt_seconds': int,
            'loc': {'lat': float, 'lon': float, 'node_id': int},
            'total_locations': int,
        },
        'manifest': Stop[list]
    }] 
    
}

Stop

{
    
    'Stop': [ {
        'run': int,
        'booking_id': int,
        'order': int,
        'action': string,
        'loc': {'lat': float, 'lon': float, 'node_id': int}
        'scheduled_time': int,
        'am': int,
        'wc': int,
        'time_window_start': int,
        'time_window_end': int,
    }] 
    
}

rolling-horizen-RTV

Running

  • Set up an osrm server. Follow https://github.com/Project-OSRM/osrm-backend
  • cd into the src folder.
  • run python main.py --server_url "" --input_file "" --out_put_dir "" --interval 300 --rh_factor 0 --max_cardinality 4
  • Required parameters:
    • server_url: Url of the OSRM server (ex: "http://127.0.0.1:5000/")
    • input_file: path to the payload.pkl file
    • out_put_dir: directory to record outputs
    • interval: interval for the rolling horizon and batching
    • rh_factor: rolling horizon factor
    • max_cardinality: meximum size of shared trips

Set up the OSRM Server

wget https://download.geofabrik.de/north-america/us/north-carolina-latest.osm.pbf
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-extract -p /opt/car.lua /data/north-carolina-latest.osm.pbf || echo "osrm-extract failed"
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/north-carolina-latest.osrm || echo "osrm-partition failed"
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-customize /data/north-carolina-latest.osrm || echo "osrm-customize failed"
docker run -t -i -p 5000:5000 -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm mld /data/north-carolina-latest.osrm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rtv_solver-0.1.6.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rtv_solver-0.1.6-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file rtv_solver-0.1.6.tar.gz.

File metadata

  • Download URL: rtv_solver-0.1.6.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for rtv_solver-0.1.6.tar.gz
Algorithm Hash digest
SHA256 f7e936fe97b6abd409787941e5f8c5123c0aeb5c1a1f62e5c72deb47423687db
MD5 66f2d2f2f9ce301b232a277232ab0ffe
BLAKE2b-256 855f12fee60af1dd68ba9d73f1cb7beeae671507af5cb37df4620fdb526616c9

See more details on using hashes here.

File details

Details for the file rtv_solver-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: rtv_solver-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for rtv_solver-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d7f8b6779d196505da432f43fc1811463cc1830985253277392f8e5c6145c865
MD5 c808630dfd0ce662765036decd26508b
BLAKE2b-256 2a93f572ab8e8f780f43542b7bbe47249a8db397784b9cf8b085f018562f0f9a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page