import requests import API invoke_url = "https://optimize.api.nvidia.com/v1/nvidia/cuopt" fetch_url_format = "https://optimize.api.nvidia.com/v1/status/" API = API.API() headers = { "Authorization": f"Bearer {API}", "Accept": "application/json", } payload = { "action": "cuOpt_OptimizedRouting", "data": { "cost_waypoint_graph_data": None, "travel_time_waypoint_graph_data": None, "cost_matrix_data": { "data": { "1": [ [ 0, 1, 1 ], [ 1, 0, 1 ], [ 1, 1, 0 ] ], "2": [ [ 0, 1, 1 ], [ 1, 0, 1 ], [ 1, 2, 0 ] ] } }, "travel_time_matrix_data": { "data": { "1": [ [ 0, 1, 1 ], [ 1, 0, 1 ], [ 1, 1, 0 ] ], "2": [ [ 0, 1, 1 ], [ 1, 0, 1 ], [ 1, 2, 0 ] ] } }, "fleet_data": { "vehicle_locations": [ [ 0, 0 ], [ 0, 0 ] ], "vehicle_ids": [ "veh-1", "veh-2" ], "capacities": [ [ 2, 2 ], [ 4, 1 ] ], "vehicle_time_windows": [ [ 0, 10 ], [ 0, 10 ] ], "vehicle_break_time_windows": [ [ [ 1, 2 ], [ 2, 3 ] ] ], "vehicle_break_durations": [ [ 1, 1 ] ], "vehicle_break_locations": [ 0, 1 ], "vehicle_types": [ 1, 2 ], "vehicle_order_match": [ { "order_ids": [ 0 ], "vehicle_id": 0 }, { "order_ids": [ 1 ], "vehicle_id": 1 } ], "skip_first_trips": [ True, False ], "drop_return_trips": [ True, False ], "min_vehicles": 2, "vehicle_max_costs": [ 7, 10 ], "vehicle_max_times": [ 7, 10 ] }, "task_data": { "task_locations": [ 1, 2 ], "task_ids": [ "Task-A", "Task-B" ], "demand": [ [ 1, 1 ], [ 3, 1 ] ], "task_time_windows": [ [ 0, 5 ], [ 3, 9 ] ], "service_times": [ 0, 0 ], "order_vehicle_match": [ { "order_id": 0, "vehicle_ids": [ 0 ] }, { "order_id": 1, "vehicle_ids": [ 1 ] } ] }, "solver_config": { "time_limit": 1, "objectives": { "cost": 1, "travel_time": 0, "variance_route_size": 0, "variance_route_service_time": 0, "prize": 0 }, "verbose_mode": False, "error_logging": True } }, "client_version": "" } # re-use connections session = requests.Session() response = session.post(invoke_url, headers=headers, json=payload) while response.status_code == 202: request_id = response.headers.get("NVCF-REQID") fetch_url = fetch_url_format + request_id response = session.get(fetch_url, headers=headers) response.raise_for_status() response_body = response.json() print(response_body)