nextbillionai 0.1.0.pre.alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +44 -0
- data/README.md +259 -0
- data/SECURITY.md +27 -0
- data/lib/nextbillionai/client.rb +168 -0
- data/lib/nextbillionai/errors.rb +214 -0
- data/lib/nextbillionai/file_part.rb +55 -0
- data/lib/nextbillionai/internal/transport/base_client.rb +573 -0
- data/lib/nextbillionai/internal/transport/pooled_net_requester.rb +209 -0
- data/lib/nextbillionai/internal/type/array_of.rb +167 -0
- data/lib/nextbillionai/internal/type/base_model.rb +539 -0
- data/lib/nextbillionai/internal/type/base_page.rb +55 -0
- data/lib/nextbillionai/internal/type/boolean.rb +77 -0
- data/lib/nextbillionai/internal/type/converter.rb +300 -0
- data/lib/nextbillionai/internal/type/enum.rb +156 -0
- data/lib/nextbillionai/internal/type/file_input.rb +108 -0
- data/lib/nextbillionai/internal/type/hash_of.rb +187 -0
- data/lib/nextbillionai/internal/type/request_parameters.rb +42 -0
- data/lib/nextbillionai/internal/type/union.rb +241 -0
- data/lib/nextbillionai/internal/type/unknown.rb +81 -0
- data/lib/nextbillionai/internal/util.rb +914 -0
- data/lib/nextbillionai/internal.rb +20 -0
- data/lib/nextbillionai/models/access.rb +27 -0
- data/lib/nextbillionai/models/address.rb +107 -0
- data/lib/nextbillionai/models/area_list_params.rb +26 -0
- data/lib/nextbillionai/models/area_list_response.rb +44 -0
- data/lib/nextbillionai/models/autocomplete_suggest_params.rb +99 -0
- data/lib/nextbillionai/models/autocomplete_suggest_response.rb +253 -0
- data/lib/nextbillionai/models/autosuggest_suggest_params.rb +99 -0
- data/lib/nextbillionai/models/autosuggest_suggest_response.rb +253 -0
- data/lib/nextbillionai/models/batch_create_params.rb +54 -0
- data/lib/nextbillionai/models/batch_create_response.rb +41 -0
- data/lib/nextbillionai/models/batch_retrieve_params.rb +35 -0
- data/lib/nextbillionai/models/batch_retrieve_response.rb +76 -0
- data/lib/nextbillionai/models/browse_search_params.rb +98 -0
- data/lib/nextbillionai/models/browse_search_response.rb +252 -0
- data/lib/nextbillionai/models/categories.rb +36 -0
- data/lib/nextbillionai/models/contact_object.rb +48 -0
- data/lib/nextbillionai/models/contacts.rb +47 -0
- data/lib/nextbillionai/models/direction_compute_route_params.rb +684 -0
- data/lib/nextbillionai/models/direction_compute_route_response.rb +629 -0
- data/lib/nextbillionai/models/discover_retrieve_params.rb +99 -0
- data/lib/nextbillionai/models/discover_retrieve_response.rb +253 -0
- data/lib/nextbillionai/models/distance_matrix/json_create_params.rb +16 -0
- data/lib/nextbillionai/models/distance_matrix/json_retrieve_params.rb +220 -0
- data/lib/nextbillionai/models/distance_matrix/json_retrieve_response.rb +82 -0
- data/lib/nextbillionai/models/fleetify/document_template_content_request.rb +189 -0
- data/lib/nextbillionai/models/fleetify/document_template_content_response.rb +168 -0
- data/lib/nextbillionai/models/fleetify/document_template_create_params.rb +50 -0
- data/lib/nextbillionai/models/fleetify/document_template_create_response.rb +79 -0
- data/lib/nextbillionai/models/fleetify/document_template_delete_params.rb +29 -0
- data/lib/nextbillionai/models/fleetify/document_template_delete_response.rb +32 -0
- data/lib/nextbillionai/models/fleetify/document_template_list_params.rb +28 -0
- data/lib/nextbillionai/models/fleetify/document_template_list_response.rb +85 -0
- data/lib/nextbillionai/models/fleetify/document_template_retrieve_params.rb +29 -0
- data/lib/nextbillionai/models/fleetify/document_template_retrieve_response.rb +80 -0
- data/lib/nextbillionai/models/fleetify/document_template_update_params.rb +50 -0
- data/lib/nextbillionai/models/fleetify/document_template_update_response.rb +78 -0
- data/lib/nextbillionai/models/fleetify/route_create_params.rb +276 -0
- data/lib/nextbillionai/models/fleetify/route_create_response.rb +196 -0
- data/lib/nextbillionai/models/fleetify/route_redispatch_params.rb +139 -0
- data/lib/nextbillionai/models/fleetify/route_redispatch_response.rb +432 -0
- data/lib/nextbillionai/models/fleetify/routes/document_submission.rb +12 -0
- data/lib/nextbillionai/models/fleetify/routes/route_step_completion_mode.rb +31 -0
- data/lib/nextbillionai/models/fleetify/routes/route_step_geofence_config.rb +53 -0
- data/lib/nextbillionai/models/fleetify/routes/route_steps_request.rb +174 -0
- data/lib/nextbillionai/models/fleetify/routes/route_steps_response.rb +273 -0
- data/lib/nextbillionai/models/fleetify/routes/step_complete_params.rb +69 -0
- data/lib/nextbillionai/models/fleetify/routes/step_create_params.rb +193 -0
- data/lib/nextbillionai/models/fleetify/routes/step_create_response.rb +40 -0
- data/lib/nextbillionai/models/fleetify/routes/step_delete_params.rb +37 -0
- data/lib/nextbillionai/models/fleetify/routes/step_delete_response.rb +33 -0
- data/lib/nextbillionai/models/fleetify/routes/step_update_params.rb +195 -0
- data/lib/nextbillionai/models/fleetify/routes/step_update_response.rb +40 -0
- data/lib/nextbillionai/models/fleetify/routing_response.rb +86 -0
- data/lib/nextbillionai/models/geocode_batch_create_params.rb +112 -0
- data/lib/nextbillionai/models/geocode_batch_create_response.rb +139 -0
- data/lib/nextbillionai/models/geocode_retrieve_params.rb +99 -0
- data/lib/nextbillionai/models/geocode_retrieve_response.rb +253 -0
- data/lib/nextbillionai/models/geocode_structured_retrieve_params.rb +132 -0
- data/lib/nextbillionai/models/geocode_structured_retrieve_response.rb +254 -0
- data/lib/nextbillionai/models/geofence/batch_create_params.rb +40 -0
- data/lib/nextbillionai/models/geofence/batch_create_response.rb +45 -0
- data/lib/nextbillionai/models/geofence/batch_delete_params.rb +37 -0
- data/lib/nextbillionai/models/geofence/batch_list_params.rb +36 -0
- data/lib/nextbillionai/models/geofence/batch_list_response.rb +47 -0
- data/lib/nextbillionai/models/geofence/console_preview_params.rb +16 -0
- data/lib/nextbillionai/models/geofence/console_preview_response.rb +41 -0
- data/lib/nextbillionai/models/geofence/console_search_params.rb +24 -0
- data/lib/nextbillionai/models/geofence/console_search_response.rb +62 -0
- data/lib/nextbillionai/models/geofence/polygon_geojson.rb +34 -0
- data/lib/nextbillionai/models/geofence.rb +202 -0
- data/lib/nextbillionai/models/geofence_contains_params.rb +56 -0
- data/lib/nextbillionai/models/geofence_contains_response.rb +99 -0
- data/lib/nextbillionai/models/geofence_create_params.rb +26 -0
- data/lib/nextbillionai/models/geofence_create_response.rb +49 -0
- data/lib/nextbillionai/models/geofence_delete_params.rb +26 -0
- data/lib/nextbillionai/models/geofence_entity_create.rb +328 -0
- data/lib/nextbillionai/models/geofence_list_params.rb +58 -0
- data/lib/nextbillionai/models/geofence_list_response.rb +52 -0
- data/lib/nextbillionai/models/geofence_retrieve_params.rb +26 -0
- data/lib/nextbillionai/models/geofence_retrieve_response.rb +41 -0
- data/lib/nextbillionai/models/geofence_update_params.rb +322 -0
- data/lib/nextbillionai/models/isochrone_compute_params.rb +153 -0
- data/lib/nextbillionai/models/isochrone_compute_response.rb +187 -0
- data/lib/nextbillionai/models/lookup_by_id_params.rb +35 -0
- data/lib/nextbillionai/models/lookup_by_id_response.rb +94 -0
- data/lib/nextbillionai/models/map_create_segment_params.rb +14 -0
- data/lib/nextbillionai/models/map_view.rb +43 -0
- data/lib/nextbillionai/models/mdm_create_distance_matrix_params.rb +385 -0
- data/lib/nextbillionai/models/mdm_create_distance_matrix_response.rb +50 -0
- data/lib/nextbillionai/models/mdm_get_distance_matrix_status_params.rb +35 -0
- data/lib/nextbillionai/models/mdm_get_distance_matrix_status_response.rb +64 -0
- data/lib/nextbillionai/models/multigeocode/place_create_params.rb +276 -0
- data/lib/nextbillionai/models/multigeocode/place_create_response.rb +24 -0
- data/lib/nextbillionai/models/multigeocode/place_delete_params.rb +28 -0
- data/lib/nextbillionai/models/multigeocode/place_delete_response.rb +31 -0
- data/lib/nextbillionai/models/multigeocode/place_item.rb +154 -0
- data/lib/nextbillionai/models/multigeocode/place_retrieve_params.rb +28 -0
- data/lib/nextbillionai/models/multigeocode/place_retrieve_response.rb +107 -0
- data/lib/nextbillionai/models/multigeocode/place_update_params.rb +118 -0
- data/lib/nextbillionai/models/multigeocode/place_update_response.rb +31 -0
- data/lib/nextbillionai/models/multigeocode_search_params.rb +135 -0
- data/lib/nextbillionai/models/multigeocode_search_response.rb +117 -0
- data/lib/nextbillionai/models/navigation_retrieve_route_params.rb +328 -0
- data/lib/nextbillionai/models/navigation_retrieve_route_response.rb +875 -0
- data/lib/nextbillionai/models/optimization/driver_assignment_assign_params.rb +679 -0
- data/lib/nextbillionai/models/optimization/driver_assignment_assign_response.rb +307 -0
- data/lib/nextbillionai/models/optimization/job.rb +460 -0
- data/lib/nextbillionai/models/optimization/location.rb +28 -0
- data/lib/nextbillionai/models/optimization/shipment.rb +589 -0
- data/lib/nextbillionai/models/optimization/v2_retrieve_result_params.rb +37 -0
- data/lib/nextbillionai/models/optimization/v2_retrieve_result_response.rb +743 -0
- data/lib/nextbillionai/models/optimization/v2_submit_params.rb +1841 -0
- data/lib/nextbillionai/models/optimization/vehicle.rb +92 -0
- data/lib/nextbillionai/models/optimization_compute_params.rb +212 -0
- data/lib/nextbillionai/models/optimization_compute_response.rb +347 -0
- data/lib/nextbillionai/models/optimization_re_optimize_params.rb +217 -0
- data/lib/nextbillionai/models/position.rb +26 -0
- data/lib/nextbillionai/models/post_response.rb +48 -0
- data/lib/nextbillionai/models/postalcode_retrieve_coordinates_params.rb +108 -0
- data/lib/nextbillionai/models/postalcode_retrieve_coordinates_response.rb +305 -0
- data/lib/nextbillionai/models/restriction_create_params.rb +51 -0
- data/lib/nextbillionai/models/restriction_delete_params.rb +26 -0
- data/lib/nextbillionai/models/restriction_delete_response.rb +25 -0
- data/lib/nextbillionai/models/restriction_list_by_bbox_params.rb +197 -0
- data/lib/nextbillionai/models/restriction_list_by_bbox_response.rb +9 -0
- data/lib/nextbillionai/models/restriction_list_params.rb +197 -0
- data/lib/nextbillionai/models/restriction_list_response.rb +62 -0
- data/lib/nextbillionai/models/restriction_retrieve_params.rb +34 -0
- data/lib/nextbillionai/models/restriction_set_state_params.rb +50 -0
- data/lib/nextbillionai/models/restriction_update_params.rb +37 -0
- data/lib/nextbillionai/models/restrictions_item_list_params.rb +123 -0
- data/lib/nextbillionai/models/restrictions_item_list_response.rb +171 -0
- data/lib/nextbillionai/models/revgeocode_retrieve_params.rb +77 -0
- data/lib/nextbillionai/models/revgeocode_retrieve_response.rb +253 -0
- data/lib/nextbillionai/models/rich_group_request.rb +292 -0
- data/lib/nextbillionai/models/rich_group_response.rb +249 -0
- data/lib/nextbillionai/models/route_report_create_params.rb +62 -0
- data/lib/nextbillionai/models/route_report_create_response.rb +452 -0
- data/lib/nextbillionai/models/skynet/asset/event_list_params.rb +96 -0
- data/lib/nextbillionai/models/skynet/asset/event_list_response.rb +361 -0
- data/lib/nextbillionai/models/skynet/asset/location_get_last_params.rb +48 -0
- data/lib/nextbillionai/models/skynet/asset/location_get_last_response.rb +65 -0
- data/lib/nextbillionai/models/skynet/asset/location_list_params.rb +130 -0
- data/lib/nextbillionai/models/skynet/asset/location_list_response.rb +242 -0
- data/lib/nextbillionai/models/skynet/asset/track_location.rb +124 -0
- data/lib/nextbillionai/models/skynet/asset_bind_params.rb +40 -0
- data/lib/nextbillionai/models/skynet/asset_create_params.rb +116 -0
- data/lib/nextbillionai/models/skynet/asset_create_response.rb +59 -0
- data/lib/nextbillionai/models/skynet/asset_delete_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/asset_details.rb +223 -0
- data/lib/nextbillionai/models/skynet/asset_list_params.rb +120 -0
- data/lib/nextbillionai/models/skynet/asset_list_response.rb +67 -0
- data/lib/nextbillionai/models/skynet/asset_retrieve_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/asset_retrieve_response.rb +55 -0
- data/lib/nextbillionai/models/skynet/asset_track_params.rb +184 -0
- data/lib/nextbillionai/models/skynet/asset_update_attributes_params.rb +48 -0
- data/lib/nextbillionai/models/skynet/asset_update_params.rb +104 -0
- data/lib/nextbillionai/models/skynet/config_retrieve_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/config_retrieve_response.rb +71 -0
- data/lib/nextbillionai/models/skynet/config_test_webhook_params.rb +28 -0
- data/lib/nextbillionai/models/skynet/config_test_webhook_response.rb +28 -0
- data/lib/nextbillionai/models/skynet/config_update_params.rb +55 -0
- data/lib/nextbillionai/models/skynet/meta_data.rb +10 -0
- data/lib/nextbillionai/models/skynet/metadata.rb +10 -0
- data/lib/nextbillionai/models/skynet/monitor.rb +291 -0
- data/lib/nextbillionai/models/skynet/monitor_create_params.rb +418 -0
- data/lib/nextbillionai/models/skynet/monitor_create_response.rb +55 -0
- data/lib/nextbillionai/models/skynet/monitor_delete_params.rb +28 -0
- data/lib/nextbillionai/models/skynet/monitor_list_params.rb +89 -0
- data/lib/nextbillionai/models/skynet/monitor_list_response.rb +68 -0
- data/lib/nextbillionai/models/skynet/monitor_retrieve_params.rb +28 -0
- data/lib/nextbillionai/models/skynet/monitor_retrieve_response.rb +54 -0
- data/lib/nextbillionai/models/skynet/monitor_update_params.rb +360 -0
- data/lib/nextbillionai/models/skynet/namespaced_apikey_create_params.rb +39 -0
- data/lib/nextbillionai/models/skynet/namespaced_apikey_create_response.rb +101 -0
- data/lib/nextbillionai/models/skynet/namespaced_apikey_delete_params.rb +50 -0
- data/lib/nextbillionai/models/skynet/namespaced_apikey_delete_response.rb +35 -0
- data/lib/nextbillionai/models/skynet/pagination.rb +50 -0
- data/lib/nextbillionai/models/skynet/search/polygon_create_params.rb +295 -0
- data/lib/nextbillionai/models/skynet/search/polygon_get_params.rb +190 -0
- data/lib/nextbillionai/models/skynet/search_around_params.rb +186 -0
- data/lib/nextbillionai/models/skynet/search_bound_params.rb +180 -0
- data/lib/nextbillionai/models/skynet/search_response.rb +207 -0
- data/lib/nextbillionai/models/skynet/simple_resp.rb +33 -0
- data/lib/nextbillionai/models/skynet/trip_delete_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/trip_end_params.rb +54 -0
- data/lib/nextbillionai/models/skynet/trip_get_summary_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/trip_get_summary_response.rb +226 -0
- data/lib/nextbillionai/models/skynet/trip_retrieve_params.rb +46 -0
- data/lib/nextbillionai/models/skynet/trip_retrieve_response.rb +188 -0
- data/lib/nextbillionai/models/skynet/trip_start_params.rb +154 -0
- data/lib/nextbillionai/models/skynet/trip_start_response.rb +57 -0
- data/lib/nextbillionai/models/skynet/trip_stop.rb +40 -0
- data/lib/nextbillionai/models/skynet/trip_update_params.rb +148 -0
- data/lib/nextbillionai/models/skynet_subscribe_params.rb +91 -0
- data/lib/nextbillionai/models/skynet_subscribe_response.rb +46 -0
- data/lib/nextbillionai/models/snap_to_road_snap_params.rb +247 -0
- data/lib/nextbillionai/models/snap_to_road_snap_response.rb +272 -0
- data/lib/nextbillionai/models.rb +158 -0
- data/lib/nextbillionai/request_options.rb +78 -0
- data/lib/nextbillionai/resources/areas.rb +39 -0
- data/lib/nextbillionai/resources/autocomplete.rb +49 -0
- data/lib/nextbillionai/resources/autosuggest.rb +49 -0
- data/lib/nextbillionai/resources/batch.rb +70 -0
- data/lib/nextbillionai/resources/browse.rb +49 -0
- data/lib/nextbillionai/resources/directions.rb +89 -0
- data/lib/nextbillionai/resources/discover.rb +49 -0
- data/lib/nextbillionai/resources/distance_matrix/json.rb +79 -0
- data/lib/nextbillionai/resources/distance_matrix.rb +18 -0
- data/lib/nextbillionai/resources/fleetify/document_templates.rb +163 -0
- data/lib/nextbillionai/resources/fleetify/routes/steps.rb +202 -0
- data/lib/nextbillionai/resources/fleetify/routes.rb +92 -0
- data/lib/nextbillionai/resources/fleetify.rb +22 -0
- data/lib/nextbillionai/resources/geocode.rb +127 -0
- data/lib/nextbillionai/resources/geofence/batch.rb +101 -0
- data/lib/nextbillionai/resources/geofence/console.rb +77 -0
- data/lib/nextbillionai/resources/geofence.rb +224 -0
- data/lib/nextbillionai/resources/isochrone.rb +59 -0
- data/lib/nextbillionai/resources/lookup.rb +41 -0
- data/lib/nextbillionai/resources/map.rb +32 -0
- data/lib/nextbillionai/resources/mdm.rb +100 -0
- data/lib/nextbillionai/resources/multigeocode/place.rb +165 -0
- data/lib/nextbillionai/resources/multigeocode.rb +70 -0
- data/lib/nextbillionai/resources/navigation.rb +72 -0
- data/lib/nextbillionai/resources/optimization/driver_assignment.rb +53 -0
- data/lib/nextbillionai/resources/optimization/v2.rb +100 -0
- data/lib/nextbillionai/resources/optimization.rb +110 -0
- data/lib/nextbillionai/resources/postalcode.rb +49 -0
- data/lib/nextbillionai/resources/restrictions.rb +325 -0
- data/lib/nextbillionai/resources/restrictions_items.rb +44 -0
- data/lib/nextbillionai/resources/revgeocode.rb +45 -0
- data/lib/nextbillionai/resources/route_report.rb +45 -0
- data/lib/nextbillionai/resources/skynet/asset/event.rb +57 -0
- data/lib/nextbillionai/resources/skynet/asset/location.rb +88 -0
- data/lib/nextbillionai/resources/skynet/asset.rb +303 -0
- data/lib/nextbillionai/resources/skynet/config.rb +99 -0
- data/lib/nextbillionai/resources/skynet/monitor.rb +206 -0
- data/lib/nextbillionai/resources/skynet/namespaced_apikeys.rb +72 -0
- data/lib/nextbillionai/resources/skynet/search/polygon.rb +106 -0
- data/lib/nextbillionai/resources/skynet/search.rb +114 -0
- data/lib/nextbillionai/resources/skynet/trip.rb +220 -0
- data/lib/nextbillionai/resources/skynet.rb +67 -0
- data/lib/nextbillionai/resources/snap_to_roads.rb +62 -0
- data/lib/nextbillionai/version.rb +5 -0
- data/lib/nextbillionai.rb +294 -0
- data/manifest.yaml +15 -0
- data/rbi/nextbillionai/client.rbi +121 -0
- data/rbi/nextbillionai/errors.rbi +178 -0
- data/rbi/nextbillionai/file_part.rbi +37 -0
- data/rbi/nextbillionai/internal/transport/base_client.rbi +301 -0
- data/rbi/nextbillionai/internal/transport/pooled_net_requester.rbi +80 -0
- data/rbi/nextbillionai/internal/type/array_of.rbi +104 -0
- data/rbi/nextbillionai/internal/type/base_model.rbi +310 -0
- data/rbi/nextbillionai/internal/type/base_page.rbi +43 -0
- data/rbi/nextbillionai/internal/type/boolean.rbi +58 -0
- data/rbi/nextbillionai/internal/type/converter.rbi +167 -0
- data/rbi/nextbillionai/internal/type/enum.rbi +82 -0
- data/rbi/nextbillionai/internal/type/file_input.rbi +59 -0
- data/rbi/nextbillionai/internal/type/hash_of.rbi +104 -0
- data/rbi/nextbillionai/internal/type/request_parameters.rbi +31 -0
- data/rbi/nextbillionai/internal/type/union.rbi +121 -0
- data/rbi/nextbillionai/internal/type/unknown.rbi +58 -0
- data/rbi/nextbillionai/internal/util.rbi +487 -0
- data/rbi/nextbillionai/internal.rbi +18 -0
- data/rbi/nextbillionai/models/access.rbi +41 -0
- data/rbi/nextbillionai/models/address.rbi +163 -0
- data/rbi/nextbillionai/models/area_list_params.rbi +42 -0
- data/rbi/nextbillionai/models/area_list_response.rbi +84 -0
- data/rbi/nextbillionai/models/autocomplete_suggest_params.rbi +166 -0
- data/rbi/nextbillionai/models/autocomplete_suggest_response.rbi +539 -0
- data/rbi/nextbillionai/models/autosuggest_suggest_params.rbi +166 -0
- data/rbi/nextbillionai/models/autosuggest_suggest_response.rbi +539 -0
- data/rbi/nextbillionai/models/batch_create_params.rbi +103 -0
- data/rbi/nextbillionai/models/batch_create_response.rbi +67 -0
- data/rbi/nextbillionai/models/batch_retrieve_params.rbi +58 -0
- data/rbi/nextbillionai/models/batch_retrieve_response.rbi +152 -0
- data/rbi/nextbillionai/models/browse_search_params.rbi +167 -0
- data/rbi/nextbillionai/models/browse_search_response.rbi +530 -0
- data/rbi/nextbillionai/models/categories.rbi +54 -0
- data/rbi/nextbillionai/models/contact_object.rbi +98 -0
- data/rbi/nextbillionai/models/contacts.rbi +87 -0
- data/rbi/nextbillionai/models/direction_compute_route_params.rbi +1442 -0
- data/rbi/nextbillionai/models/direction_compute_route_response.rbi +1364 -0
- data/rbi/nextbillionai/models/discover_retrieve_params.rbi +166 -0
- data/rbi/nextbillionai/models/discover_retrieve_response.rbi +539 -0
- data/rbi/nextbillionai/models/distance_matrix/json_create_params.rbi +34 -0
- data/rbi/nextbillionai/models/distance_matrix/json_retrieve_params.rbi +439 -0
- data/rbi/nextbillionai/models/distance_matrix/json_retrieve_response.rbi +202 -0
- data/rbi/nextbillionai/models/fleetify/document_template_content_request.rbi +379 -0
- data/rbi/nextbillionai/models/fleetify/document_template_content_response.rbi +330 -0
- data/rbi/nextbillionai/models/fleetify/document_template_create_params.rbi +80 -0
- data/rbi/nextbillionai/models/fleetify/document_template_create_response.rbi +168 -0
- data/rbi/nextbillionai/models/fleetify/document_template_delete_params.rbi +47 -0
- data/rbi/nextbillionai/models/fleetify/document_template_delete_response.rbi +46 -0
- data/rbi/nextbillionai/models/fleetify/document_template_list_params.rbi +47 -0
- data/rbi/nextbillionai/models/fleetify/document_template_list_response.rbi +185 -0
- data/rbi/nextbillionai/models/fleetify/document_template_retrieve_params.rbi +47 -0
- data/rbi/nextbillionai/models/fleetify/document_template_retrieve_response.rbi +170 -0
- data/rbi/nextbillionai/models/fleetify/document_template_update_params.rbi +95 -0
- data/rbi/nextbillionai/models/fleetify/document_template_update_response.rbi +166 -0
- data/rbi/nextbillionai/models/fleetify/route_create_params.rbi +595 -0
- data/rbi/nextbillionai/models/fleetify/route_create_response.rbi +360 -0
- data/rbi/nextbillionai/models/fleetify/route_redispatch_params.rbi +307 -0
- data/rbi/nextbillionai/models/fleetify/route_redispatch_response.rbi +810 -0
- data/rbi/nextbillionai/models/fleetify/routes/document_submission.rbi +12 -0
- data/rbi/nextbillionai/models/fleetify/routes/route_step_completion_mode.rbi +59 -0
- data/rbi/nextbillionai/models/fleetify/routes/route_step_geofence_config.rbi +111 -0
- data/rbi/nextbillionai/models/fleetify/routes/route_steps_request.rbi +362 -0
- data/rbi/nextbillionai/models/fleetify/routes/route_steps_response.rbi +538 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_complete_params.rbi +107 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_create_params.rbi +384 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_create_response.rbi +77 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_delete_params.rbi +58 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_delete_response.rbi +50 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_update_params.rbi +393 -0
- data/rbi/nextbillionai/models/fleetify/routes/step_update_response.rbi +77 -0
- data/rbi/nextbillionai/models/fleetify/routing_response.rbi +136 -0
- data/rbi/nextbillionai/models/geocode_batch_create_params.rbi +191 -0
- data/rbi/nextbillionai/models/geocode_batch_create_response.rbi +268 -0
- data/rbi/nextbillionai/models/geocode_retrieve_params.rbi +166 -0
- data/rbi/nextbillionai/models/geocode_retrieve_response.rbi +539 -0
- data/rbi/nextbillionai/models/geocode_structured_retrieve_params.rbi +207 -0
- data/rbi/nextbillionai/models/geocode_structured_retrieve_response.rbi +543 -0
- data/rbi/nextbillionai/models/geofence/batch_create_params.rbi +69 -0
- data/rbi/nextbillionai/models/geofence/batch_create_response.rbi +97 -0
- data/rbi/nextbillionai/models/geofence/batch_delete_params.rbi +63 -0
- data/rbi/nextbillionai/models/geofence/batch_list_params.rbi +58 -0
- data/rbi/nextbillionai/models/geofence/batch_list_response.rbi +96 -0
- data/rbi/nextbillionai/models/geofence/console_preview_params.rbi +34 -0
- data/rbi/nextbillionai/models/geofence/console_preview_response.rbi +104 -0
- data/rbi/nextbillionai/models/geofence/console_search_params.rbi +45 -0
- data/rbi/nextbillionai/models/geofence/console_search_response.rbi +138 -0
- data/rbi/nextbillionai/models/geofence/polygon_geojson.rbi +56 -0
- data/rbi/nextbillionai/models/geofence.rbi +326 -0
- data/rbi/nextbillionai/models/geofence_contains_params.rbi +90 -0
- data/rbi/nextbillionai/models/geofence_contains_response.rbi +255 -0
- data/rbi/nextbillionai/models/geofence_create_params.rbi +45 -0
- data/rbi/nextbillionai/models/geofence_create_response.rbi +97 -0
- data/rbi/nextbillionai/models/geofence_delete_params.rbi +45 -0
- data/rbi/nextbillionai/models/geofence_entity_create.rbi +603 -0
- data/rbi/nextbillionai/models/geofence_list_params.rbi +97 -0
- data/rbi/nextbillionai/models/geofence_list_response.rbi +111 -0
- data/rbi/nextbillionai/models/geofence_retrieve_params.rbi +45 -0
- data/rbi/nextbillionai/models/geofence_retrieve_response.rbi +96 -0
- data/rbi/nextbillionai/models/geofence_update_params.rbi +601 -0
- data/rbi/nextbillionai/models/isochrone_compute_params.rbi +248 -0
- data/rbi/nextbillionai/models/isochrone_compute_response.rbi +369 -0
- data/rbi/nextbillionai/models/lookup_by_id_params.rbi +58 -0
- data/rbi/nextbillionai/models/lookup_by_id_response.rbi +174 -0
- data/rbi/nextbillionai/models/map_create_segment_params.rbi +32 -0
- data/rbi/nextbillionai/models/map_view.rbi +70 -0
- data/rbi/nextbillionai/models/mdm_create_distance_matrix_params.rbi +868 -0
- data/rbi/nextbillionai/models/mdm_create_distance_matrix_response.rbi +88 -0
- data/rbi/nextbillionai/models/mdm_get_distance_matrix_status_params.rbi +58 -0
- data/rbi/nextbillionai/models/mdm_get_distance_matrix_status_response.rbi +141 -0
- data/rbi/nextbillionai/models/multigeocode/place_create_params.rbi +518 -0
- data/rbi/nextbillionai/models/multigeocode/place_create_response.rbi +39 -0
- data/rbi/nextbillionai/models/multigeocode/place_delete_params.rbi +47 -0
- data/rbi/nextbillionai/models/multigeocode/place_delete_response.rbi +46 -0
- data/rbi/nextbillionai/models/multigeocode/place_item.rbi +255 -0
- data/rbi/nextbillionai/models/multigeocode/place_retrieve_params.rbi +47 -0
- data/rbi/nextbillionai/models/multigeocode/place_retrieve_response.rbi +226 -0
- data/rbi/nextbillionai/models/multigeocode/place_update_params.rbi +245 -0
- data/rbi/nextbillionai/models/multigeocode/place_update_response.rbi +46 -0
- data/rbi/nextbillionai/models/multigeocode_search_params.rbi +205 -0
- data/rbi/nextbillionai/models/multigeocode_search_response.rbi +277 -0
- data/rbi/nextbillionai/models/navigation_retrieve_route_params.rbi +692 -0
- data/rbi/nextbillionai/models/navigation_retrieve_route_response.rbi +1894 -0
- data/rbi/nextbillionai/models/optimization/driver_assignment_assign_params.rbi +1306 -0
- data/rbi/nextbillionai/models/optimization/driver_assignment_assign_response.rbi +720 -0
- data/rbi/nextbillionai/models/optimization/job.rbi +798 -0
- data/rbi/nextbillionai/models/optimization/location.rbi +39 -0
- data/rbi/nextbillionai/models/optimization/shipment.rbi +1030 -0
- data/rbi/nextbillionai/models/optimization/v2_retrieve_result_params.rbi +60 -0
- data/rbi/nextbillionai/models/optimization/v2_retrieve_result_response.rbi +1318 -0
- data/rbi/nextbillionai/models/optimization/v2_submit_params.rbi +3695 -0
- data/rbi/nextbillionai/models/optimization/vehicle.rbi +168 -0
- data/rbi/nextbillionai/models/optimization_compute_params.rbi +453 -0
- data/rbi/nextbillionai/models/optimization_compute_response.rbi +885 -0
- data/rbi/nextbillionai/models/optimization_re_optimize_params.rbi +439 -0
- data/rbi/nextbillionai/models/position.rbi +40 -0
- data/rbi/nextbillionai/models/post_response.rbi +81 -0
- data/rbi/nextbillionai/models/postalcode_retrieve_coordinates_params.rbi +211 -0
- data/rbi/nextbillionai/models/postalcode_retrieve_coordinates_response.rbi +661 -0
- data/rbi/nextbillionai/models/restriction_create_params.rbi +119 -0
- data/rbi/nextbillionai/models/restriction_delete_params.rbi +45 -0
- data/rbi/nextbillionai/models/restriction_delete_response.rbi +42 -0
- data/rbi/nextbillionai/models/restriction_list_by_bbox_params.rbi +447 -0
- data/rbi/nextbillionai/models/restriction_list_by_bbox_response.rbi +13 -0
- data/rbi/nextbillionai/models/restriction_list_params.rbi +414 -0
- data/rbi/nextbillionai/models/restriction_list_response.rbi +120 -0
- data/rbi/nextbillionai/models/restriction_retrieve_params.rbi +59 -0
- data/rbi/nextbillionai/models/restriction_set_state_params.rbi +99 -0
- data/rbi/nextbillionai/models/restriction_update_params.rbi +65 -0
- data/rbi/nextbillionai/models/restrictions_item_list_params.rbi +325 -0
- data/rbi/nextbillionai/models/restrictions_item_list_response.rbi +436 -0
- data/rbi/nextbillionai/models/revgeocode_retrieve_params.rbi +132 -0
- data/rbi/nextbillionai/models/revgeocode_retrieve_response.rbi +539 -0
- data/rbi/nextbillionai/models/rich_group_request.rbi +507 -0
- data/rbi/nextbillionai/models/rich_group_response.rbi +464 -0
- data/rbi/nextbillionai/models/route_report_create_params.rbi +121 -0
- data/rbi/nextbillionai/models/route_report_create_response.rbi +982 -0
- data/rbi/nextbillionai/models/skynet/asset/event_list_params.rbi +177 -0
- data/rbi/nextbillionai/models/skynet/asset/event_list_response.rbi +721 -0
- data/rbi/nextbillionai/models/skynet/asset/location_get_last_params.rbi +106 -0
- data/rbi/nextbillionai/models/skynet/asset/location_get_last_response.rbi +136 -0
- data/rbi/nextbillionai/models/skynet/asset/location_list_params.rbi +265 -0
- data/rbi/nextbillionai/models/skynet/asset/location_list_response.rbi +503 -0
- data/rbi/nextbillionai/models/skynet/asset/track_location.rbi +209 -0
- data/rbi/nextbillionai/models/skynet/asset_bind_params.rbi +66 -0
- data/rbi/nextbillionai/models/skynet/asset_create_params.rbi +208 -0
- data/rbi/nextbillionai/models/skynet/asset_create_response.rbi +114 -0
- data/rbi/nextbillionai/models/skynet/asset_delete_params.rbi +100 -0
- data/rbi/nextbillionai/models/skynet/asset_details.rbi +387 -0
- data/rbi/nextbillionai/models/skynet/asset_list_params.rbi +213 -0
- data/rbi/nextbillionai/models/skynet/asset_list_response.rbi +140 -0
- data/rbi/nextbillionai/models/skynet/asset_retrieve_params.rbi +101 -0
- data/rbi/nextbillionai/models/skynet/asset_retrieve_response.rbi +122 -0
- data/rbi/nextbillionai/models/skynet/asset_track_params.rbi +329 -0
- data/rbi/nextbillionai/models/skynet/asset_update_attributes_params.rbi +82 -0
- data/rbi/nextbillionai/models/skynet/asset_update_params.rbi +189 -0
- data/rbi/nextbillionai/models/skynet/config_retrieve_params.rbi +104 -0
- data/rbi/nextbillionai/models/skynet/config_retrieve_response.rbi +163 -0
- data/rbi/nextbillionai/models/skynet/config_test_webhook_params.rbi +47 -0
- data/rbi/nextbillionai/models/skynet/config_test_webhook_response.rbi +47 -0
- data/rbi/nextbillionai/models/skynet/config_update_params.rbi +114 -0
- data/rbi/nextbillionai/models/skynet/meta_data.rbi +9 -0
- data/rbi/nextbillionai/models/skynet/metadata.rbi +9 -0
- data/rbi/nextbillionai/models/skynet/monitor.rbi +568 -0
- data/rbi/nextbillionai/models/skynet/monitor_create_params.rbi +792 -0
- data/rbi/nextbillionai/models/skynet/monitor_create_response.rbi +114 -0
- data/rbi/nextbillionai/models/skynet/monitor_delete_params.rbi +47 -0
- data/rbi/nextbillionai/models/skynet/monitor_list_params.rbi +166 -0
- data/rbi/nextbillionai/models/skynet/monitor_list_response.rbi +143 -0
- data/rbi/nextbillionai/models/skynet/monitor_retrieve_params.rbi +47 -0
- data/rbi/nextbillionai/models/skynet/monitor_retrieve_response.rbi +119 -0
- data/rbi/nextbillionai/models/skynet/monitor_update_params.rbi +690 -0
- data/rbi/nextbillionai/models/skynet/namespaced_apikey_create_params.rbi +64 -0
- data/rbi/nextbillionai/models/skynet/namespaced_apikey_create_response.rbi +182 -0
- data/rbi/nextbillionai/models/skynet/namespaced_apikey_delete_params.rbi +78 -0
- data/rbi/nextbillionai/models/skynet/namespaced_apikey_delete_response.rbi +52 -0
- data/rbi/nextbillionai/models/skynet/pagination.rbi +84 -0
- data/rbi/nextbillionai/models/skynet/search/polygon_create_params.rbi +583 -0
- data/rbi/nextbillionai/models/skynet/search/polygon_get_params.rbi +358 -0
- data/rbi/nextbillionai/models/skynet/search_around_params.rbi +346 -0
- data/rbi/nextbillionai/models/skynet/search_bound_params.rbi +341 -0
- data/rbi/nextbillionai/models/skynet/search_response.rbi +390 -0
- data/rbi/nextbillionai/models/skynet/simple_resp.rbi +52 -0
- data/rbi/nextbillionai/models/skynet/trip_delete_params.rbi +99 -0
- data/rbi/nextbillionai/models/skynet/trip_end_params.rbi +104 -0
- data/rbi/nextbillionai/models/skynet/trip_get_summary_params.rbi +104 -0
- data/rbi/nextbillionai/models/skynet/trip_get_summary_response.rbi +414 -0
- data/rbi/nextbillionai/models/skynet/trip_retrieve_params.rbi +101 -0
- data/rbi/nextbillionai/models/skynet/trip_retrieve_response.rbi +354 -0
- data/rbi/nextbillionai/models/skynet/trip_start_params.rbi +279 -0
- data/rbi/nextbillionai/models/skynet/trip_start_response.rbi +112 -0
- data/rbi/nextbillionai/models/skynet/trip_stop.rbi +69 -0
- data/rbi/nextbillionai/models/skynet/trip_update_params.rbi +274 -0
- data/rbi/nextbillionai/models/skynet_subscribe_params.rbi +170 -0
- data/rbi/nextbillionai/models/skynet_subscribe_response.rbi +75 -0
- data/rbi/nextbillionai/models/snap_to_road_snap_params.rbi +492 -0
- data/rbi/nextbillionai/models/snap_to_road_snap_response.rbi +546 -0
- data/rbi/nextbillionai/models.rbi +125 -0
- data/rbi/nextbillionai/request_options.rbi +59 -0
- data/rbi/nextbillionai/resources/areas.rbi +27 -0
- data/rbi/nextbillionai/resources/autocomplete.rbi +75 -0
- data/rbi/nextbillionai/resources/autosuggest.rbi +75 -0
- data/rbi/nextbillionai/resources/batch.rbi +50 -0
- data/rbi/nextbillionai/resources/browse.rbi +74 -0
- data/rbi/nextbillionai/resources/directions.rbi +320 -0
- data/rbi/nextbillionai/resources/discover.rbi +75 -0
- data/rbi/nextbillionai/resources/distance_matrix/json.rbi +129 -0
- data/rbi/nextbillionai/resources/distance_matrix.rbi +15 -0
- data/rbi/nextbillionai/resources/fleetify/document_templates.rbi +130 -0
- data/rbi/nextbillionai/resources/fleetify/routes/steps.rbi +270 -0
- data/rbi/nextbillionai/resources/fleetify/routes.rbi +114 -0
- data/rbi/nextbillionai/resources/fleetify.rbi +18 -0
- data/rbi/nextbillionai/resources/geocode.rbi +164 -0
- data/rbi/nextbillionai/resources/geofence/batch.rbi +70 -0
- data/rbi/nextbillionai/resources/geofence/console.rbi +89 -0
- data/rbi/nextbillionai/resources/geofence.rbi +249 -0
- data/rbi/nextbillionai/resources/isochrone.rbi +89 -0
- data/rbi/nextbillionai/resources/lookup.rbi +31 -0
- data/rbi/nextbillionai/resources/map.rbi +19 -0
- data/rbi/nextbillionai/resources/mdm.rbi +182 -0
- data/rbi/nextbillionai/resources/multigeocode/place.rbi +155 -0
- data/rbi/nextbillionai/resources/multigeocode.rbi +73 -0
- data/rbi/nextbillionai/resources/navigation.rbi +152 -0
- data/rbi/nextbillionai/resources/optimization/driver_assignment.rbi +54 -0
- data/rbi/nextbillionai/resources/optimization/v2.rbi +217 -0
- data/rbi/nextbillionai/resources/optimization.rbi +165 -0
- data/rbi/nextbillionai/resources/postalcode.rbi +54 -0
- data/rbi/nextbillionai/resources/restrictions.rbi +487 -0
- data/rbi/nextbillionai/resources/restrictions_items.rbi +46 -0
- data/rbi/nextbillionai/resources/revgeocode.rbi +63 -0
- data/rbi/nextbillionai/resources/route_report.rbi +41 -0
- data/rbi/nextbillionai/resources/skynet/asset/event.rbi +64 -0
- data/rbi/nextbillionai/resources/skynet/asset/location.rbi +106 -0
- data/rbi/nextbillionai/resources/skynet/asset.rbi +336 -0
- data/rbi/nextbillionai/resources/skynet/config.rbi +71 -0
- data/rbi/nextbillionai/resources/skynet/monitor.rbi +305 -0
- data/rbi/nextbillionai/resources/skynet/namespaced_apikeys.rbi +66 -0
- data/rbi/nextbillionai/resources/skynet/search/polygon.rbi +175 -0
- data/rbi/nextbillionai/resources/skynet/search.rbi +191 -0
- data/rbi/nextbillionai/resources/skynet/trip.rbi +210 -0
- data/rbi/nextbillionai/resources/skynet.rbi +60 -0
- data/rbi/nextbillionai/resources/snap_to_roads.rbi +103 -0
- data/rbi/nextbillionai/version.rbi +5 -0
- data/sig/nextbillionai/client.rbs +74 -0
- data/sig/nextbillionai/errors.rbs +110 -0
- data/sig/nextbillionai/file_part.rbs +21 -0
- data/sig/nextbillionai/internal/transport/base_client.rbs +131 -0
- data/sig/nextbillionai/internal/transport/pooled_net_requester.rbs +45 -0
- data/sig/nextbillionai/internal/type/array_of.rbs +48 -0
- data/sig/nextbillionai/internal/type/base_model.rbs +104 -0
- data/sig/nextbillionai/internal/type/base_page.rbs +24 -0
- data/sig/nextbillionai/internal/type/boolean.rbs +26 -0
- data/sig/nextbillionai/internal/type/converter.rbs +62 -0
- data/sig/nextbillionai/internal/type/enum.rbs +32 -0
- data/sig/nextbillionai/internal/type/file_input.rbs +25 -0
- data/sig/nextbillionai/internal/type/hash_of.rbs +48 -0
- data/sig/nextbillionai/internal/type/request_parameters.rbs +19 -0
- data/sig/nextbillionai/internal/type/union.rbs +52 -0
- data/sig/nextbillionai/internal/type/unknown.rbs +26 -0
- data/sig/nextbillionai/internal/util.rbs +185 -0
- data/sig/nextbillionai/internal.rbs +10 -0
- data/sig/nextbillionai/models/access.rbs +19 -0
- data/sig/nextbillionai/models/address.rbs +92 -0
- data/sig/nextbillionai/models/area_list_params.rbs +23 -0
- data/sig/nextbillionai/models/area_list_response.rbs +43 -0
- data/sig/nextbillionai/models/autocomplete_suggest_params.rbs +59 -0
- data/sig/nextbillionai/models/autocomplete_suggest_response.rbs +236 -0
- data/sig/nextbillionai/models/autosuggest_suggest_params.rbs +59 -0
- data/sig/nextbillionai/models/autosuggest_suggest_response.rbs +236 -0
- data/sig/nextbillionai/models/batch_create_params.rbs +47 -0
- data/sig/nextbillionai/models/batch_create_response.rbs +24 -0
- data/sig/nextbillionai/models/batch_retrieve_params.rbs +28 -0
- data/sig/nextbillionai/models/batch_retrieve_response.rbs +61 -0
- data/sig/nextbillionai/models/browse_search_params.rbs +61 -0
- data/sig/nextbillionai/models/browse_search_response.rbs +234 -0
- data/sig/nextbillionai/models/categories.rbs +23 -0
- data/sig/nextbillionai/models/contact_object.rbs +50 -0
- data/sig/nextbillionai/models/contacts.rbs +69 -0
- data/sig/nextbillionai/models/direction_compute_route_params.rbs +391 -0
- data/sig/nextbillionai/models/direction_compute_route_response.rbs +554 -0
- data/sig/nextbillionai/models/discover_retrieve_params.rbs +59 -0
- data/sig/nextbillionai/models/discover_retrieve_response.rbs +234 -0
- data/sig/nextbillionai/models/distance_matrix/json_create_params.rbs +17 -0
- data/sig/nextbillionai/models/distance_matrix/json_retrieve_params.rbs +114 -0
- data/sig/nextbillionai/models/distance_matrix/json_retrieve_response.rbs +77 -0
- data/sig/nextbillionai/models/fleetify/document_template_content_request.rbs +148 -0
- data/sig/nextbillionai/models/fleetify/document_template_content_response.rbs +135 -0
- data/sig/nextbillionai/models/fleetify/document_template_create_params.rbs +38 -0
- data/sig/nextbillionai/models/fleetify/document_template_create_response.rbs +75 -0
- data/sig/nextbillionai/models/fleetify/document_template_delete_params.rbs +25 -0
- data/sig/nextbillionai/models/fleetify/document_template_delete_response.rbs +21 -0
- data/sig/nextbillionai/models/fleetify/document_template_list_params.rbs +25 -0
- data/sig/nextbillionai/models/fleetify/document_template_list_response.rbs +75 -0
- data/sig/nextbillionai/models/fleetify/document_template_retrieve_params.rbs +25 -0
- data/sig/nextbillionai/models/fleetify/document_template_retrieve_response.rbs +75 -0
- data/sig/nextbillionai/models/fleetify/document_template_update_params.rbs +44 -0
- data/sig/nextbillionai/models/fleetify/document_template_update_response.rbs +75 -0
- data/sig/nextbillionai/models/fleetify/route_create_params.rbs +199 -0
- data/sig/nextbillionai/models/fleetify/route_create_response.rbs +159 -0
- data/sig/nextbillionai/models/fleetify/route_redispatch_params.rbs +118 -0
- data/sig/nextbillionai/models/fleetify/route_redispatch_response.rbs +359 -0
- data/sig/nextbillionai/models/fleetify/routes/document_submission.rbs +9 -0
- data/sig/nextbillionai/models/fleetify/routes/route_step_completion_mode.rbs +22 -0
- data/sig/nextbillionai/models/fleetify/routes/route_step_geofence_config.rbs +47 -0
- data/sig/nextbillionai/models/fleetify/routes/route_steps_request.rbs +134 -0
- data/sig/nextbillionai/models/fleetify/routes/route_steps_response.rbs +223 -0
- data/sig/nextbillionai/models/fleetify/routes/step_complete_params.rbs +56 -0
- data/sig/nextbillionai/models/fleetify/routes/step_create_params.rbs +148 -0
- data/sig/nextbillionai/models/fleetify/routes/step_create_response.rbs +42 -0
- data/sig/nextbillionai/models/fleetify/routes/step_delete_params.rbs +32 -0
- data/sig/nextbillionai/models/fleetify/routes/step_delete_response.rbs +23 -0
- data/sig/nextbillionai/models/fleetify/routes/step_update_params.rbs +159 -0
- data/sig/nextbillionai/models/fleetify/routes/step_update_response.rbs +42 -0
- data/sig/nextbillionai/models/fleetify/routing_response.rbs +66 -0
- data/sig/nextbillionai/models/geocode_batch_create_params.rbs +70 -0
- data/sig/nextbillionai/models/geocode_batch_create_response.rbs +128 -0
- data/sig/nextbillionai/models/geocode_retrieve_params.rbs +59 -0
- data/sig/nextbillionai/models/geocode_retrieve_response.rbs +234 -0
- data/sig/nextbillionai/models/geocode_structured_retrieve_params.rbs +94 -0
- data/sig/nextbillionai/models/geocode_structured_retrieve_response.rbs +236 -0
- data/sig/nextbillionai/models/geofence/batch_create_params.rbs +34 -0
- data/sig/nextbillionai/models/geofence/batch_create_response.rbs +45 -0
- data/sig/nextbillionai/models/geofence/batch_delete_params.rbs +32 -0
- data/sig/nextbillionai/models/geofence/batch_list_params.rbs +30 -0
- data/sig/nextbillionai/models/geofence/batch_list_response.rbs +37 -0
- data/sig/nextbillionai/models/geofence/console_preview_params.rbs +17 -0
- data/sig/nextbillionai/models/geofence/console_preview_response.rbs +49 -0
- data/sig/nextbillionai/models/geofence/console_search_params.rbs +25 -0
- data/sig/nextbillionai/models/geofence/console_search_response.rbs +56 -0
- data/sig/nextbillionai/models/geofence/polygon_geojson.rbs +25 -0
- data/sig/nextbillionai/models/geofence.rbs +161 -0
- data/sig/nextbillionai/models/geofence_contains_params.rbs +40 -0
- data/sig/nextbillionai/models/geofence_contains_response.rbs +105 -0
- data/sig/nextbillionai/models/geofence_create_params.rbs +25 -0
- data/sig/nextbillionai/models/geofence_create_response.rbs +43 -0
- data/sig/nextbillionai/models/geofence_delete_params.rbs +23 -0
- data/sig/nextbillionai/models/geofence_entity_create.rbs +216 -0
- data/sig/nextbillionai/models/geofence_list_params.rbs +42 -0
- data/sig/nextbillionai/models/geofence_list_response.rbs +61 -0
- data/sig/nextbillionai/models/geofence_retrieve_params.rbs +23 -0
- data/sig/nextbillionai/models/geofence_retrieve_response.rbs +45 -0
- data/sig/nextbillionai/models/geofence_update_params.rbs +227 -0
- data/sig/nextbillionai/models/isochrone_compute_params.rbs +96 -0
- data/sig/nextbillionai/models/isochrone_compute_response.rbs +159 -0
- data/sig/nextbillionai/models/lookup_by_id_params.rbs +28 -0
- data/sig/nextbillionai/models/lookup_by_id_response.rbs +94 -0
- data/sig/nextbillionai/models/map_create_segment_params.rbs +15 -0
- data/sig/nextbillionai/models/map_view.rbs +37 -0
- data/sig/nextbillionai/models/mdm_create_distance_matrix_params.rbs +270 -0
- data/sig/nextbillionai/models/mdm_create_distance_matrix_response.rbs +43 -0
- data/sig/nextbillionai/models/mdm_get_distance_matrix_status_params.rbs +28 -0
- data/sig/nextbillionai/models/mdm_get_distance_matrix_status_response.rbs +57 -0
- data/sig/nextbillionai/models/multigeocode/place_create_params.rbs +226 -0
- data/sig/nextbillionai/models/multigeocode/place_create_response.rbs +17 -0
- data/sig/nextbillionai/models/multigeocode/place_delete_params.rbs +25 -0
- data/sig/nextbillionai/models/multigeocode/place_delete_response.rbs +21 -0
- data/sig/nextbillionai/models/multigeocode/place_item.rbs +133 -0
- data/sig/nextbillionai/models/multigeocode/place_retrieve_params.rbs +25 -0
- data/sig/nextbillionai/models/multigeocode/place_retrieve_response.rbs +95 -0
- data/sig/nextbillionai/models/multigeocode/place_update_params.rbs +99 -0
- data/sig/nextbillionai/models/multigeocode/place_update_response.rbs +21 -0
- data/sig/nextbillionai/models/multigeocode_search_params.rbs +104 -0
- data/sig/nextbillionai/models/multigeocode_search_response.rbs +114 -0
- data/sig/nextbillionai/models/navigation_retrieve_route_params.rbs +206 -0
- data/sig/nextbillionai/models/navigation_retrieve_route_response.rbs +812 -0
- data/sig/nextbillionai/models/optimization/driver_assignment_assign_params.rbs +412 -0
- data/sig/nextbillionai/models/optimization/driver_assignment_assign_response.rbs +281 -0
- data/sig/nextbillionai/models/optimization/job.rbs +225 -0
- data/sig/nextbillionai/models/optimization/location.rbs +17 -0
- data/sig/nextbillionai/models/optimization/shipment.rbs +313 -0
- data/sig/nextbillionai/models/optimization/v2_retrieve_result_params.rbs +30 -0
- data/sig/nextbillionai/models/optimization/v2_retrieve_result_response.rbs +555 -0
- data/sig/nextbillionai/models/optimization/v2_submit_params.rbs +1138 -0
- data/sig/nextbillionai/models/optimization/vehicle.rbs +66 -0
- data/sig/nextbillionai/models/optimization_compute_params.rbs +146 -0
- data/sig/nextbillionai/models/optimization_compute_response.rbs +386 -0
- data/sig/nextbillionai/models/optimization_re_optimize_params.rbs +176 -0
- data/sig/nextbillionai/models/position.rbs +19 -0
- data/sig/nextbillionai/models/post_response.rbs +38 -0
- data/sig/nextbillionai/models/postalcode_retrieve_coordinates_params.rbs +84 -0
- data/sig/nextbillionai/models/postalcode_retrieve_coordinates_response.rbs +260 -0
- data/sig/nextbillionai/models/restriction_create_params.rbs +48 -0
- data/sig/nextbillionai/models/restriction_delete_params.rbs +23 -0
- data/sig/nextbillionai/models/restriction_delete_response.rbs +19 -0
- data/sig/nextbillionai/models/restriction_list_by_bbox_params.rbs +162 -0
- data/sig/nextbillionai/models/restriction_list_by_bbox_response.rbs +8 -0
- data/sig/nextbillionai/models/restriction_list_params.rbs +164 -0
- data/sig/nextbillionai/models/restriction_list_response.rbs +57 -0
- data/sig/nextbillionai/models/restriction_retrieve_params.rbs +30 -0
- data/sig/nextbillionai/models/restriction_set_state_params.rbs +43 -0
- data/sig/nextbillionai/models/restriction_update_params.rbs +32 -0
- data/sig/nextbillionai/models/restrictions_item_list_params.rbs +145 -0
- data/sig/nextbillionai/models/restrictions_item_list_response.rbs +166 -0
- data/sig/nextbillionai/models/revgeocode_retrieve_params.rbs +40 -0
- data/sig/nextbillionai/models/revgeocode_retrieve_response.rbs +236 -0
- data/sig/nextbillionai/models/rich_group_request.rbs +207 -0
- data/sig/nextbillionai/models/rich_group_response.rbs +207 -0
- data/sig/nextbillionai/models/route_report_create_params.rbs +47 -0
- data/sig/nextbillionai/models/route_report_create_response.rbs +408 -0
- data/sig/nextbillionai/models/skynet/asset/event_list_params.rbs +84 -0
- data/sig/nextbillionai/models/skynet/asset/event_list_response.rbs +303 -0
- data/sig/nextbillionai/models/skynet/asset/location_get_last_params.rbs +49 -0
- data/sig/nextbillionai/models/skynet/asset/location_get_last_response.rbs +60 -0
- data/sig/nextbillionai/models/skynet/asset/location_list_params.rbs +105 -0
- data/sig/nextbillionai/models/skynet/asset/location_list_response.rbs +216 -0
- data/sig/nextbillionai/models/skynet/asset/track_location.rbs +100 -0
- data/sig/nextbillionai/models/skynet/asset_bind_params.rbs +30 -0
- data/sig/nextbillionai/models/skynet/asset_create_params.rbs +89 -0
- data/sig/nextbillionai/models/skynet/asset_create_response.rbs +52 -0
- data/sig/nextbillionai/models/skynet/asset_delete_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/asset_details.rbs +175 -0
- data/sig/nextbillionai/models/skynet/asset_list_params.rbs +89 -0
- data/sig/nextbillionai/models/skynet/asset_list_response.rbs +70 -0
- data/sig/nextbillionai/models/skynet/asset_retrieve_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/asset_retrieve_response.rbs +54 -0
- data/sig/nextbillionai/models/skynet/asset_track_params.rbs +140 -0
- data/sig/nextbillionai/models/skynet/asset_update_attributes_params.rbs +30 -0
- data/sig/nextbillionai/models/skynet/asset_update_params.rbs +82 -0
- data/sig/nextbillionai/models/skynet/config_retrieve_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/config_retrieve_response.rbs +73 -0
- data/sig/nextbillionai/models/skynet/config_test_webhook_params.rbs +25 -0
- data/sig/nextbillionai/models/skynet/config_test_webhook_response.rbs +17 -0
- data/sig/nextbillionai/models/skynet/config_update_params.rbs +54 -0
- data/sig/nextbillionai/models/skynet/meta_data.rbs +7 -0
- data/sig/nextbillionai/models/skynet/metadata.rbs +7 -0
- data/sig/nextbillionai/models/skynet/monitor.rbs +220 -0
- data/sig/nextbillionai/models/skynet/monitor_create_params.rbs +226 -0
- data/sig/nextbillionai/models/skynet/monitor_create_response.rbs +52 -0
- data/sig/nextbillionai/models/skynet/monitor_delete_params.rbs +25 -0
- data/sig/nextbillionai/models/skynet/monitor_list_params.rbs +75 -0
- data/sig/nextbillionai/models/skynet/monitor_list_response.rbs +70 -0
- data/sig/nextbillionai/models/skynet/monitor_retrieve_params.rbs +25 -0
- data/sig/nextbillionai/models/skynet/monitor_retrieve_response.rbs +56 -0
- data/sig/nextbillionai/models/skynet/monitor_update_params.rbs +206 -0
- data/sig/nextbillionai/models/skynet/namespaced_apikey_create_params.rbs +30 -0
- data/sig/nextbillionai/models/skynet/namespaced_apikey_create_response.rbs +94 -0
- data/sig/nextbillionai/models/skynet/namespaced_apikey_delete_params.rbs +34 -0
- data/sig/nextbillionai/models/skynet/namespaced_apikey_delete_response.rbs +21 -0
- data/sig/nextbillionai/models/skynet/pagination.rbs +40 -0
- data/sig/nextbillionai/models/skynet/search/polygon_create_params.rbs +193 -0
- data/sig/nextbillionai/models/skynet/search/polygon_get_params.rbs +125 -0
- data/sig/nextbillionai/models/skynet/search_around_params.rbs +128 -0
- data/sig/nextbillionai/models/skynet/search_bound_params.rbs +123 -0
- data/sig/nextbillionai/models/skynet/search_response.rbs +185 -0
- data/sig/nextbillionai/models/skynet/simple_resp.rbs +21 -0
- data/sig/nextbillionai/models/skynet/trip_delete_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/trip_end_params.rbs +52 -0
- data/sig/nextbillionai/models/skynet/trip_get_summary_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/trip_get_summary_response.rbs +198 -0
- data/sig/nextbillionai/models/skynet/trip_retrieve_params.rbs +47 -0
- data/sig/nextbillionai/models/skynet/trip_retrieve_response.rbs +168 -0
- data/sig/nextbillionai/models/skynet/trip_start_params.rbs +120 -0
- data/sig/nextbillionai/models/skynet/trip_start_response.rbs +52 -0
- data/sig/nextbillionai/models/skynet/trip_stop.rbs +29 -0
- data/sig/nextbillionai/models/skynet/trip_update_params.rbs +113 -0
- data/sig/nextbillionai/models/skynet_subscribe_params.rbs +64 -0
- data/sig/nextbillionai/models/skynet_subscribe_response.rbs +38 -0
- data/sig/nextbillionai/models/snap_to_road_snap_params.rbs +173 -0
- data/sig/nextbillionai/models/snap_to_road_snap_response.rbs +215 -0
- data/sig/nextbillionai/models.rbs +115 -0
- data/sig/nextbillionai/request_options.rbs +36 -0
- data/sig/nextbillionai/resources/areas.rbs +12 -0
- data/sig/nextbillionai/resources/autocomplete.rbs +17 -0
- data/sig/nextbillionai/resources/autosuggest.rbs +17 -0
- data/sig/nextbillionai/resources/batch.rbs +19 -0
- data/sig/nextbillionai/resources/browse.rbs +17 -0
- data/sig/nextbillionai/resources/directions.rbs +37 -0
- data/sig/nextbillionai/resources/discover.rbs +17 -0
- data/sig/nextbillionai/resources/distance_matrix/json.rbs +23 -0
- data/sig/nextbillionai/resources/distance_matrix.rbs +9 -0
- data/sig/nextbillionai/resources/fleetify/document_templates.rbs +41 -0
- data/sig/nextbillionai/resources/fleetify/routes/steps.rbs +61 -0
- data/sig/nextbillionai/resources/fleetify/routes.rbs +30 -0
- data/sig/nextbillionai/resources/fleetify.rbs +11 -0
- data/sig/nextbillionai/resources/geocode.rbs +38 -0
- data/sig/nextbillionai/resources/geofence/batch.rbs +27 -0
- data/sig/nextbillionai/resources/geofence/console.rbs +26 -0
- data/sig/nextbillionai/resources/geofence.rbs +65 -0
- data/sig/nextbillionai/resources/isochrone.rbs +21 -0
- data/sig/nextbillionai/resources/lookup.rbs +13 -0
- data/sig/nextbillionai/resources/map.rbs +9 -0
- data/sig/nextbillionai/resources/mdm.rbs +34 -0
- data/sig/nextbillionai/resources/multigeocode/place.rbs +39 -0
- data/sig/nextbillionai/resources/multigeocode.rbs +24 -0
- data/sig/nextbillionai/resources/navigation.rbs +26 -0
- data/sig/nextbillionai/resources/optimization/driver_assignment.rbs +18 -0
- data/sig/nextbillionai/resources/optimization/v2.rbs +35 -0
- data/sig/nextbillionai/resources/optimization.rbs +34 -0
- data/sig/nextbillionai/resources/postalcode.rbs +16 -0
- data/sig/nextbillionai/resources/restrictions.rbs +107 -0
- data/sig/nextbillionai/resources/restrictions_items.rbs +21 -0
- data/sig/nextbillionai/resources/revgeocode.rbs +15 -0
- data/sig/nextbillionai/resources/route_report.rbs +14 -0
- data/sig/nextbillionai/resources/skynet/asset/event.rbs +23 -0
- data/sig/nextbillionai/resources/skynet/asset/location.rbs +31 -0
- data/sig/nextbillionai/resources/skynet/asset.rbs +86 -0
- data/sig/nextbillionai/resources/skynet/config.rbs +27 -0
- data/sig/nextbillionai/resources/skynet/monitor.rbs +64 -0
- data/sig/nextbillionai/resources/skynet/namespaced_apikeys.rbs +22 -0
- data/sig/nextbillionai/resources/skynet/search/polygon.rbs +38 -0
- data/sig/nextbillionai/resources/skynet/search.rbs +42 -0
- data/sig/nextbillionai/resources/skynet/trip.rbs +63 -0
- data/sig/nextbillionai/resources/skynet.rbs +26 -0
- data/sig/nextbillionai/resources/snap_to_roads.rbs +22 -0
- data/sig/nextbillionai/version.rbs +3 -0
- metadata +851 -0
|
@@ -0,0 +1,1841 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Nextbillionai
|
|
4
|
+
module Models
|
|
5
|
+
module Optimization
|
|
6
|
+
# @see Nextbillionai::Resources::Optimization::V2#submit
|
|
7
|
+
class V2SubmitParams < Nextbillionai::Internal::Type::BaseModel
|
|
8
|
+
extend Nextbillionai::Internal::Type::RequestParameters::Converter
|
|
9
|
+
include Nextbillionai::Internal::Type::RequestParameters
|
|
10
|
+
|
|
11
|
+
# @!attribute key
|
|
12
|
+
# A key is a unique identifier that is required to authenticate a request to the
|
|
13
|
+
# API.
|
|
14
|
+
#
|
|
15
|
+
# @return [String]
|
|
16
|
+
required :key, String
|
|
17
|
+
|
|
18
|
+
# @!attribute locations
|
|
19
|
+
# The locations object is used to define all the locations that will be used
|
|
20
|
+
# during the optimization process. Read more about this attribute in the
|
|
21
|
+
# [Location Object](#location-object) section.
|
|
22
|
+
#
|
|
23
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Locations]
|
|
24
|
+
required :locations, -> { Nextbillionai::Optimization::V2SubmitParams::Locations }
|
|
25
|
+
|
|
26
|
+
# @!attribute vehicles
|
|
27
|
+
# The vehicles attribute describes the characteristics and constraints of the
|
|
28
|
+
# vehicles that will be used for fulfilling the tasks. Read more about this
|
|
29
|
+
# attribute in the [Vehicle Object](#vehicle-object) section.
|
|
30
|
+
#
|
|
31
|
+
# @return [Array<Nextbillionai::Models::Optimization::Vehicle>]
|
|
32
|
+
required :vehicles,
|
|
33
|
+
-> {
|
|
34
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Vehicle]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# @!attribute cost_matrix
|
|
38
|
+
# An array of arrays to denote the user-defined costs of traveling between each
|
|
39
|
+
# pair of geographic coordinates mentioned in the location array. The number of
|
|
40
|
+
# arrays should be equal to the number of coordinate points mentioned in the
|
|
41
|
+
# location array and each array should contain the same number of elements as
|
|
42
|
+
# well. Please note that cost_matrix is effective only when
|
|
43
|
+
# travel_cost=customized. Read more about this attribute in the
|
|
44
|
+
# [Custom Cost Matrix](#custom-cost-matrix) section.
|
|
45
|
+
#
|
|
46
|
+
# @return [Array<Array<Integer>>, nil]
|
|
47
|
+
optional :cost_matrix,
|
|
48
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
|
|
49
|
+
|
|
50
|
+
# @!attribute depots
|
|
51
|
+
# depots object is used to collect the details of a depot. Depots can be used as a
|
|
52
|
+
# starting point and/or ending point for the routes and vehicles. They also can be
|
|
53
|
+
# used to fulfil pickup and delivery typejobs . The loads which are to be
|
|
54
|
+
# delivered at task locations will be picked from depots and loads picked-up from
|
|
55
|
+
# task locations will be delivered back to the depots. A depot can be configured
|
|
56
|
+
# using the following fields:
|
|
57
|
+
#
|
|
58
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Depot>, nil]
|
|
59
|
+
optional :depots,
|
|
60
|
+
-> {
|
|
61
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Depot]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# @!attribute description
|
|
65
|
+
# Define the optimization job using any custom message. This description is
|
|
66
|
+
# returned as is in the response.
|
|
67
|
+
#
|
|
68
|
+
# @return [String, nil]
|
|
69
|
+
optional :description, String
|
|
70
|
+
|
|
71
|
+
# @!attribute distance_matrix
|
|
72
|
+
# An array of arrays to denote the user-defined distances, in meters, for
|
|
73
|
+
# travelling between each pair of geographic coordinates mentioned in the location
|
|
74
|
+
# array. When this input is provided, actual distances between the locations will
|
|
75
|
+
# be ignored in favor of the values provided in this input for any distance
|
|
76
|
+
# calculations during the optimization process. The values provided here will also
|
|
77
|
+
# be used for cost calculations when travel_cost is “distance”.
|
|
78
|
+
#
|
|
79
|
+
# The number of arrays in the input should be equal to the number of coordinate
|
|
80
|
+
# points mentioned in the location array and each array, in turn, should contain
|
|
81
|
+
# the same number of elements as well.
|
|
82
|
+
#
|
|
83
|
+
# **Note:**
|
|
84
|
+
#
|
|
85
|
+
# - duration_matrix is mandatory when usingdistance_matrix.
|
|
86
|
+
# - When using distance_matrix route geometry will not be available in the
|
|
87
|
+
# optimized solution.
|
|
88
|
+
#
|
|
89
|
+
# @return [Array<Array<Integer>>, nil]
|
|
90
|
+
optional :distance_matrix,
|
|
91
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
|
|
92
|
+
|
|
93
|
+
# @!attribute duration_matrix
|
|
94
|
+
# An array of arrays to denote the user-defined durations, in seconds, for
|
|
95
|
+
# travelling between each pair of geographic coordinates mentioned in the location
|
|
96
|
+
# array. When this input is provided, actual durations between the locations will
|
|
97
|
+
# be ignored in favor of the values provided in the matrix for any ETA
|
|
98
|
+
# calculations during the optimization process. The values provided in the matrix
|
|
99
|
+
# will also be used for cost calculations when travel_cost is “duration”.
|
|
100
|
+
#
|
|
101
|
+
# The number of arrays in the input should be equal to the number of coordinate
|
|
102
|
+
# points mentioned in the location array and each array, in turn, should contain
|
|
103
|
+
# the same number of elements as well.
|
|
104
|
+
#
|
|
105
|
+
# Please note that, unlike distance_matrix, duration_matrix can be used
|
|
106
|
+
# independently in following cases:
|
|
107
|
+
#
|
|
108
|
+
# - when travel_cost is “duration”
|
|
109
|
+
# - when travel_cost is “customized” and a cost_matrix is provided
|
|
110
|
+
#
|
|
111
|
+
# Also, the route geometry will not be available in the optimized solution when
|
|
112
|
+
# using duration_matrix.
|
|
113
|
+
#
|
|
114
|
+
# @return [Array<Array<Integer>>, nil]
|
|
115
|
+
optional :duration_matrix,
|
|
116
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
|
|
117
|
+
|
|
118
|
+
# @!attribute existing_solution_id
|
|
119
|
+
# The previous optimization request id used to retrieve solution for
|
|
120
|
+
# reoptimization
|
|
121
|
+
#
|
|
122
|
+
# @return [String, nil]
|
|
123
|
+
optional :existing_solution_id, String
|
|
124
|
+
|
|
125
|
+
# @!attribute jobs
|
|
126
|
+
# jobs object is used to collect the details of a particular job or task that
|
|
127
|
+
# needs to be completed as part of the optimization process. Each job can have
|
|
128
|
+
# either a pickup or delivery step, but not both. Read more about this attribute
|
|
129
|
+
# in the [Job Object](#job-object) section.
|
|
130
|
+
#
|
|
131
|
+
# Please note that either the jobs or the shipments attribute should be specified
|
|
132
|
+
# to build a valid request.
|
|
133
|
+
#
|
|
134
|
+
# @return [Array<Nextbillionai::Models::Optimization::Job>, nil]
|
|
135
|
+
optional :jobs, -> { Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Job] }
|
|
136
|
+
|
|
137
|
+
# @!attribute options
|
|
138
|
+
# It represents the set of options that can be used to configure optimization
|
|
139
|
+
# algorithms so that the solver provides a solution that meets the desired
|
|
140
|
+
# business objectives.
|
|
141
|
+
#
|
|
142
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options, nil]
|
|
143
|
+
optional :options, -> { Nextbillionai::Optimization::V2SubmitParams::Options }
|
|
144
|
+
|
|
145
|
+
# @!attribute relations
|
|
146
|
+
# relations attribute is an array of individual relation objects. type parameter
|
|
147
|
+
# and steps object are mandatory when using this attribute.
|
|
148
|
+
#
|
|
149
|
+
# Please note:
|
|
150
|
+
#
|
|
151
|
+
# - The soft constraints are **not** effective when using the relations attribute.
|
|
152
|
+
# - In case a given relation can't be satisfied, the optimizer will flag all the
|
|
153
|
+
# tasks involved in that "relation" as unassigned.
|
|
154
|
+
#
|
|
155
|
+
# Read more about this attribute in the [Relations Object](#relations-object)
|
|
156
|
+
# section.
|
|
157
|
+
#
|
|
158
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation>, nil]
|
|
159
|
+
optional :relations,
|
|
160
|
+
-> {
|
|
161
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Relation]
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
# @!attribute shipments
|
|
165
|
+
# The shipments object is used to collect the details of shipments that need to be
|
|
166
|
+
# completed as part of the optimization process.
|
|
167
|
+
#
|
|
168
|
+
# Each shipment should have a pickup and the corresponding delivery step.
|
|
169
|
+
#
|
|
170
|
+
# Please note that either the jobs or the shipments attribute should be specified
|
|
171
|
+
# to build a valid request.
|
|
172
|
+
#
|
|
173
|
+
# @return [Array<Nextbillionai::Models::Optimization::Shipment>, nil]
|
|
174
|
+
optional :shipments,
|
|
175
|
+
-> {
|
|
176
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Shipment]
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
# @!attribute solution
|
|
180
|
+
# This attribute is related to the re-optimization feature. It allows for the
|
|
181
|
+
# previous optimization result to be provided in case new orders are received and
|
|
182
|
+
# the solution needs to be re-planned. The solution attribute should contain the
|
|
183
|
+
# same routes as the previous optimization result. solution attribute is an array
|
|
184
|
+
# of objects with each object corresponding to one route.
|
|
185
|
+
#
|
|
186
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution>, nil]
|
|
187
|
+
optional :solution,
|
|
188
|
+
-> {
|
|
189
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Solution]
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
# @!attribute unassigned
|
|
193
|
+
# unassigned attribute is related to the re-optimization feature. This attribute
|
|
194
|
+
# should contain the tasks that were not assigned during an earlier optimization
|
|
195
|
+
# process. Please note that the unassigned part in request should be consistent
|
|
196
|
+
# with the unassigned part in the previous optimization result.
|
|
197
|
+
#
|
|
198
|
+
# Users can reduce the number of unassigned tasks in the re-optimized solution, by
|
|
199
|
+
# following strategies such as:
|
|
200
|
+
#
|
|
201
|
+
# - Extending the time windows for vehicles or tasks to give more flexibility
|
|
202
|
+
# - Adding more vehicles to the optimization problem
|
|
203
|
+
# - Adjusting the priority of different tasks to balance the workload more evenly
|
|
204
|
+
# - Modifying other constraints or parameters to make the problem more solvable
|
|
205
|
+
#
|
|
206
|
+
# Ultimately, the goal is to minimize the number of unassigned tasks while still
|
|
207
|
+
# meeting all the necessary constraints and objectives.
|
|
208
|
+
#
|
|
209
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned, nil]
|
|
210
|
+
optional :unassigned, -> { Nextbillionai::Optimization::V2SubmitParams::Unassigned }
|
|
211
|
+
|
|
212
|
+
# @!attribute zones
|
|
213
|
+
# An array of objects to specify geometry of all the zones involved. Each object
|
|
214
|
+
# corresponds to a single zone. A valid zone can be a
|
|
215
|
+
# [geoJSON](https://datatracker.ietf.org/doc/html/rfc7946#page-9) polygon,
|
|
216
|
+
# multi-polygon or a geofence created using
|
|
217
|
+
# [NextBillion.ai](http://NextBillion.ai)’s
|
|
218
|
+
# [Geofence API](https://docs.nextbillion.ai/docs/tracking/api/geofence).
|
|
219
|
+
#
|
|
220
|
+
# Please note that
|
|
221
|
+
#
|
|
222
|
+
# - Each zone should have a geometry specified either throughgeometry or through
|
|
223
|
+
# the geofence_id parameter.
|
|
224
|
+
# - When zone IDs are not provided for individual tasks (jobs or shipments) then
|
|
225
|
+
# the API will automatically allocate zones based on the task’s geolocation and
|
|
226
|
+
# the geometries of the zones provided here. Otherwise, if the zone IDs are
|
|
227
|
+
# provided while configuring individual tasks, the zone IDs will override the
|
|
228
|
+
# geometries provided here.
|
|
229
|
+
#
|
|
230
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Zone>, nil]
|
|
231
|
+
optional :zones,
|
|
232
|
+
-> {
|
|
233
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Zone]
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
# @!method initialize(key:, locations:, vehicles:, cost_matrix: nil, depots: nil, description: nil, distance_matrix: nil, duration_matrix: nil, existing_solution_id: nil, jobs: nil, options: nil, relations: nil, shipments: nil, solution: nil, unassigned: nil, zones: nil, request_options: {})
|
|
237
|
+
# Some parameter documentations has been truncated, see
|
|
238
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams} for more details.
|
|
239
|
+
#
|
|
240
|
+
# @param key [String] A key is a unique identifier that is required to authenticate a request to the A
|
|
241
|
+
#
|
|
242
|
+
# @param locations [Nextbillionai::Models::Optimization::V2SubmitParams::Locations] The locations object is used to define all the locations that will be used durin
|
|
243
|
+
#
|
|
244
|
+
# @param vehicles [Array<Nextbillionai::Models::Optimization::Vehicle>] The vehicles attribute describes the characteristics and constraints of the vehi
|
|
245
|
+
#
|
|
246
|
+
# @param cost_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined costs of traveling between each pa
|
|
247
|
+
#
|
|
248
|
+
# @param depots [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Depot>] depots object is used to collect the details of a depot. Depots can be used as a
|
|
249
|
+
#
|
|
250
|
+
# @param description [String] Define the optimization job using any custom message. This description is return
|
|
251
|
+
#
|
|
252
|
+
# @param distance_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined distances, in meters, for travelli
|
|
253
|
+
#
|
|
254
|
+
# @param duration_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined durations, in seconds, for travell
|
|
255
|
+
#
|
|
256
|
+
# @param existing_solution_id [String] The previous optimization request id used to retrieve solution for reoptimizatio
|
|
257
|
+
#
|
|
258
|
+
# @param jobs [Array<Nextbillionai::Models::Optimization::Job>] jobs object is used to collect the details of a particular job or task that need
|
|
259
|
+
#
|
|
260
|
+
# @param options [Nextbillionai::Models::Optimization::V2SubmitParams::Options] It represents the set of options that can be used to configure optimization algo
|
|
261
|
+
#
|
|
262
|
+
# @param relations [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation>] relations attribute is an array of individual relation objects. type parameter a
|
|
263
|
+
#
|
|
264
|
+
# @param shipments [Array<Nextbillionai::Models::Optimization::Shipment>] The shipments object is used to collect the details of shipments that need to be
|
|
265
|
+
#
|
|
266
|
+
# @param solution [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution>] This attribute is related to the re-optimization feature. It allows for the prev
|
|
267
|
+
#
|
|
268
|
+
# @param unassigned [Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned] unassigned attribute is related to the re-optimization feature. This attribute s
|
|
269
|
+
#
|
|
270
|
+
# @param zones [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Zone>] An array of objects to specify geometry of all the zones involved. Each object c
|
|
271
|
+
#
|
|
272
|
+
# @param request_options [Nextbillionai::RequestOptions, Hash{Symbol=>Object}]
|
|
273
|
+
|
|
274
|
+
class Locations < Nextbillionai::Internal::Type::BaseModel
|
|
275
|
+
# @!attribute location
|
|
276
|
+
# Indicate all the location coordinates that will be used during optimization. The
|
|
277
|
+
# coordinates should be specified in the format “latitude, longitude”. It is
|
|
278
|
+
# recommended to avoid adding duplicate location coordinates to this array. In
|
|
279
|
+
# case there are multiple tasks at the same location, users can repeat the index
|
|
280
|
+
# of the location while configuring all such tasks.
|
|
281
|
+
#
|
|
282
|
+
# Please use this array to determine the index of a location when setting the
|
|
283
|
+
# location_index parameter in jobs, shipments, vehicles or other parts of the
|
|
284
|
+
# request. The length of this array determines the valid values for location_index
|
|
285
|
+
# parameter.
|
|
286
|
+
#
|
|
287
|
+
# @return [Array<String>]
|
|
288
|
+
required :location, Nextbillionai::Internal::Type::ArrayOf[String]
|
|
289
|
+
|
|
290
|
+
# @!attribute id
|
|
291
|
+
# A unique ID for the set of locations. It should be a positive integer.
|
|
292
|
+
#
|
|
293
|
+
# @return [Integer, nil]
|
|
294
|
+
optional :id, Integer
|
|
295
|
+
|
|
296
|
+
# @!attribute approaches
|
|
297
|
+
# Describe if the location is curbside. An array of strings indicates the side of
|
|
298
|
+
# the road from which to approach the location in the calculated route. If
|
|
299
|
+
# provided, the number of approaches must be equal to the number of locations.
|
|
300
|
+
# However, you can skip a coordinate and show its position in the list using “”
|
|
301
|
+
# (empty string). Please note these values are case-sensitive.
|
|
302
|
+
#
|
|
303
|
+
# @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Locations::Approach>, nil]
|
|
304
|
+
optional :approaches,
|
|
305
|
+
-> {
|
|
306
|
+
Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Locations::Approach]
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
# @!method initialize(location:, id: nil, approaches: nil)
|
|
310
|
+
# Some parameter documentations has been truncated, see
|
|
311
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Locations} for more
|
|
312
|
+
# details.
|
|
313
|
+
#
|
|
314
|
+
# The locations object is used to define all the locations that will be used
|
|
315
|
+
# during the optimization process. Read more about this attribute in the
|
|
316
|
+
# [Location Object](#location-object) section.
|
|
317
|
+
#
|
|
318
|
+
# @param location [Array<String>] Indicate all the location coordinates that will be used during optimization. The
|
|
319
|
+
#
|
|
320
|
+
# @param id [Integer] A unique ID for the set of locations. It should be a positive integer.
|
|
321
|
+
#
|
|
322
|
+
# @param approaches [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Locations::Approach>] Describe if the location is curbside. An array of strings indicates the side of
|
|
323
|
+
|
|
324
|
+
module Approach
|
|
325
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
326
|
+
|
|
327
|
+
UNRESTRICTED = :unrestricted
|
|
328
|
+
CURB = :curb
|
|
329
|
+
EMPTY_STRING = :"\"\"(empty string)"
|
|
330
|
+
|
|
331
|
+
# @!method self.values
|
|
332
|
+
# @return [Array<Symbol>]
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
class Depot < Nextbillionai::Internal::Type::BaseModel
|
|
337
|
+
# @!attribute id
|
|
338
|
+
# Provide an unique ID for the depot. The IDs are case sensitive.
|
|
339
|
+
#
|
|
340
|
+
# @return [String]
|
|
341
|
+
required :id, String
|
|
342
|
+
|
|
343
|
+
# @!attribute location_index
|
|
344
|
+
# Specify the index of coordinates (in the location array) denoting the depot’s
|
|
345
|
+
# location. The valid range of values is \[0, length of location array). If the
|
|
346
|
+
# location index exceeds the count of input locations in the location array, the
|
|
347
|
+
# API will report an error.
|
|
348
|
+
#
|
|
349
|
+
# Please note the location_index is mandatory when using the depots object.
|
|
350
|
+
#
|
|
351
|
+
# @return [Integer]
|
|
352
|
+
required :location_index, Integer
|
|
353
|
+
|
|
354
|
+
# @!attribute description
|
|
355
|
+
# Add a custom description for the depot.
|
|
356
|
+
#
|
|
357
|
+
# @return [String, nil]
|
|
358
|
+
optional :description, String
|
|
359
|
+
|
|
360
|
+
# @!attribute service
|
|
361
|
+
# Specify the time duration, in seconds, needed to load or unload the vehicle each
|
|
362
|
+
# time it starts or arrives at a depot, respectively. Default value is 0.
|
|
363
|
+
#
|
|
364
|
+
# @return [Integer, nil]
|
|
365
|
+
optional :service, Integer
|
|
366
|
+
|
|
367
|
+
# @!attribute time_windows
|
|
368
|
+
# Specify the time-windows during which the depot is operational and allows
|
|
369
|
+
# vehicles to be loaded / unloaded. The time periods should be expressed as a UNIX
|
|
370
|
+
# timestamp in seconds.
|
|
371
|
+
#
|
|
372
|
+
# Please note that:
|
|
373
|
+
#
|
|
374
|
+
# - Multiple time-windows can be provided but those time windows should not
|
|
375
|
+
# overlap with each other.
|
|
376
|
+
# - Time windows should always be specified in the format of \[start_timestamp,
|
|
377
|
+
# end_timestamp\].
|
|
378
|
+
# - Depot's time-windows are ineffective used when max_activity_waiting_time is
|
|
379
|
+
# specified in the input.
|
|
380
|
+
# - Using relations along with depot time-window is not allowed and the service
|
|
381
|
+
# will return an error.
|
|
382
|
+
#
|
|
383
|
+
# @return [Array<Array<Integer>>, nil]
|
|
384
|
+
optional :time_windows,
|
|
385
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
|
|
386
|
+
|
|
387
|
+
# @!method initialize(id:, location_index:, description: nil, service: nil, time_windows: nil)
|
|
388
|
+
# Some parameter documentations has been truncated, see
|
|
389
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Depot} for more details.
|
|
390
|
+
#
|
|
391
|
+
# @param id [String] Provide an unique ID for the depot. The IDs are case sensitive.
|
|
392
|
+
#
|
|
393
|
+
# @param location_index [Integer] Specify the index of coordinates (in the location array) denoting the depot’s lo
|
|
394
|
+
#
|
|
395
|
+
# @param description [String] Add a custom description for the depot.
|
|
396
|
+
#
|
|
397
|
+
# @param service [Integer] Specify the time duration, in seconds, needed to load or unload the vehicle each
|
|
398
|
+
#
|
|
399
|
+
# @param time_windows [Array<Array<Integer>>] Specify the time-windows during which the depot is operational and allows vehicl
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
class Options < Nextbillionai::Internal::Type::BaseModel
|
|
403
|
+
# @!attribute constraint
|
|
404
|
+
# This attribute defines both the soft and hard constraints for an optimization
|
|
405
|
+
# job.
|
|
406
|
+
#
|
|
407
|
+
# Soft constraints are constraints that do not necessarily have to be satisfied,
|
|
408
|
+
# but the optimization algorithm will try to satisfy them as much as possible.
|
|
409
|
+
# Whereas the hard constraints are the constraints that will not be violated by
|
|
410
|
+
# the solver. Users can use multiple constraints together.
|
|
411
|
+
#
|
|
412
|
+
# Please note that soft constraints are ineffective when using relations attribute
|
|
413
|
+
# in a request. The hard constraint, max_activity_waiting_time, is effective only
|
|
414
|
+
# when relation type is in_same_route and ineffective for all other types.
|
|
415
|
+
#
|
|
416
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint, nil]
|
|
417
|
+
optional :constraint, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Constraint }
|
|
418
|
+
|
|
419
|
+
# @!attribute grouping
|
|
420
|
+
# Set grouping rules for the tasks and routes.
|
|
421
|
+
#
|
|
422
|
+
# - Use order_grouping to group nearby tasks
|
|
423
|
+
# - Use route_grouping to control route sequencing.
|
|
424
|
+
#
|
|
425
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping, nil]
|
|
426
|
+
optional :grouping, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping }
|
|
427
|
+
|
|
428
|
+
# @!attribute objective
|
|
429
|
+
# This attribute is used to configure the objective of the optimization job.
|
|
430
|
+
#
|
|
431
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective, nil]
|
|
432
|
+
optional :objective, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective }
|
|
433
|
+
|
|
434
|
+
# @!attribute routing
|
|
435
|
+
# This attribute is used to define the routing configurations for the optimization
|
|
436
|
+
# job.
|
|
437
|
+
#
|
|
438
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing, nil]
|
|
439
|
+
optional :routing, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Routing }
|
|
440
|
+
|
|
441
|
+
# @!method initialize(constraint: nil, grouping: nil, objective: nil, routing: nil)
|
|
442
|
+
# Some parameter documentations has been truncated, see
|
|
443
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options} for more details.
|
|
444
|
+
#
|
|
445
|
+
# It represents the set of options that can be used to configure optimization
|
|
446
|
+
# algorithms so that the solver provides a solution that meets the desired
|
|
447
|
+
# business objectives.
|
|
448
|
+
#
|
|
449
|
+
# @param constraint [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint] This attribute defines both the soft and hard constraints for an optimization jo
|
|
450
|
+
#
|
|
451
|
+
# @param grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping] Set grouping rules for the tasks and routes.
|
|
452
|
+
#
|
|
453
|
+
# @param objective [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective] This attribute is used to configure the objective of the optimization job.
|
|
454
|
+
#
|
|
455
|
+
# @param routing [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing] This attribute is used to define the routing configurations for the optimization
|
|
456
|
+
|
|
457
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#constraint
|
|
458
|
+
class Constraint < Nextbillionai::Internal::Type::BaseModel
|
|
459
|
+
# @!attribute max_activity_waiting_time
|
|
460
|
+
# This is a hard constraint which specifies the maximum waiting time, in seconds,
|
|
461
|
+
# for each step. It ensures that the vehicles do not have unreasonable wait times
|
|
462
|
+
# between jobs or shipments. This feature is useful for use cases where avoiding
|
|
463
|
+
# long wait times between jobs or shipments is a primary concern.
|
|
464
|
+
#
|
|
465
|
+
# Please note that the waiting time constraint applies to all tasks in the
|
|
466
|
+
# optimization request, ensuring that no single task exceeds the specified maximum
|
|
467
|
+
# waiting time. When being used together with relations attribute, this parameter
|
|
468
|
+
# is effective only for in_same_route relation type.
|
|
469
|
+
#
|
|
470
|
+
# @return [Integer, nil]
|
|
471
|
+
optional :max_activity_waiting_time, Integer
|
|
472
|
+
|
|
473
|
+
# @!attribute max_vehicle_overtime
|
|
474
|
+
# This is a soft constraint for vehicle overtime. Overtime is defined as the time
|
|
475
|
+
# that a vehicle spends to complete a set of jobs after its time window has ended.
|
|
476
|
+
# max_vehicle_overtime attribute specifies the maximum amount of overtime a
|
|
477
|
+
# vehicle can have, in seconds. If a vehicle’s overtime exceeds this value, it
|
|
478
|
+
# will be considered a violation of this constraint.
|
|
479
|
+
#
|
|
480
|
+
# Please note that this constraint applies to all vehicles in the optimization
|
|
481
|
+
# request.
|
|
482
|
+
#
|
|
483
|
+
# @return [Integer, nil]
|
|
484
|
+
optional :max_vehicle_overtime, Integer
|
|
485
|
+
|
|
486
|
+
# @!attribute max_visit_lateness
|
|
487
|
+
# This is a soft constraint for permissible delay, in seconds, to complete a job
|
|
488
|
+
# or shipment after its time window is over. If a job or shipment’s lateness
|
|
489
|
+
# exceeds this value, it will be considered a violation of this constraint.
|
|
490
|
+
#
|
|
491
|
+
# Please note that this constraint applies to all tasks in the optimization
|
|
492
|
+
# request. In case lateness duration needs to be applied for individual tasks,
|
|
493
|
+
# please use the max_visit_lateness parameter under jobs and shipments
|
|
494
|
+
#
|
|
495
|
+
# @return [Integer, nil]
|
|
496
|
+
optional :max_visit_lateness, Integer
|
|
497
|
+
|
|
498
|
+
# @!method initialize(max_activity_waiting_time: nil, max_vehicle_overtime: nil, max_visit_lateness: nil)
|
|
499
|
+
# Some parameter documentations has been truncated, see
|
|
500
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint} for
|
|
501
|
+
# more details.
|
|
502
|
+
#
|
|
503
|
+
# This attribute defines both the soft and hard constraints for an optimization
|
|
504
|
+
# job.
|
|
505
|
+
#
|
|
506
|
+
# Soft constraints are constraints that do not necessarily have to be satisfied,
|
|
507
|
+
# but the optimization algorithm will try to satisfy them as much as possible.
|
|
508
|
+
# Whereas the hard constraints are the constraints that will not be violated by
|
|
509
|
+
# the solver. Users can use multiple constraints together.
|
|
510
|
+
#
|
|
511
|
+
# Please note that soft constraints are ineffective when using relations attribute
|
|
512
|
+
# in a request. The hard constraint, max_activity_waiting_time, is effective only
|
|
513
|
+
# when relation type is in_same_route and ineffective for all other types.
|
|
514
|
+
#
|
|
515
|
+
# @param max_activity_waiting_time [Integer] This is a hard constraint which specifies the maximum waiting time, in seconds,
|
|
516
|
+
#
|
|
517
|
+
# @param max_vehicle_overtime [Integer] This is a soft constraint for vehicle overtime. Overtime is defined as the time
|
|
518
|
+
#
|
|
519
|
+
# @param max_visit_lateness [Integer] This is a soft constraint for permissible delay, in seconds, to complete a job o
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#grouping
|
|
523
|
+
class Grouping < Nextbillionai::Internal::Type::BaseModel
|
|
524
|
+
# @!attribute order_grouping
|
|
525
|
+
# Specify the criteria for grouping nearby tasks. The grouped tasks will be
|
|
526
|
+
# treated as one stop by the optimizer and no cost would be incurred when driver
|
|
527
|
+
# travels to different tasks within a group. Users can use this feature to model
|
|
528
|
+
# use cases like multiple deliveries in a building complex or a condo.
|
|
529
|
+
#
|
|
530
|
+
# Please note that when the multiple tasks are grouped together, only one setup
|
|
531
|
+
# time is considered for all such tasks. The durations of this setup time is equal
|
|
532
|
+
# to maximum setup time among all grouped tasks, if provided. On the other hand,
|
|
533
|
+
# the service time is applied to each task individually, as per the input provided
|
|
534
|
+
# when configuring those tasks.
|
|
535
|
+
#
|
|
536
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping, nil]
|
|
537
|
+
optional :order_grouping,
|
|
538
|
+
-> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping }
|
|
539
|
+
|
|
540
|
+
# @!attribute proximity_factor
|
|
541
|
+
# When specified, routes are built taking into account the distance to the nearest
|
|
542
|
+
# tasks. A higher proximity factor helps build routes with closer distances
|
|
543
|
+
# between neighboring tasks, whereas a lower proximity factor helps build routes
|
|
544
|
+
# with farther distances between neighboring tasks. As a result, the total number
|
|
545
|
+
# of routes in the solution can vary based on the configured proximity factor -
|
|
546
|
+
# more routes for higher factor and less routes with lower factor.
|
|
547
|
+
#
|
|
548
|
+
# In practice, such routes are more resistant to changes in task time windows:
|
|
549
|
+
# when the time window is postponed, the driver can drive to the next task and
|
|
550
|
+
# then return to the previous one.
|
|
551
|
+
#
|
|
552
|
+
# Please note that:
|
|
553
|
+
#
|
|
554
|
+
# - Valid values are \[0,10\]
|
|
555
|
+
# - Default value is 0.0.
|
|
556
|
+
# - It is recommended to use values lower values, in the range of \[0, 1\]. Higher
|
|
557
|
+
# values may adversely impact the solution metrics due to higher number of
|
|
558
|
+
# resulting routes: costs, mileage etc.
|
|
559
|
+
#
|
|
560
|
+
# @return [Float, nil]
|
|
561
|
+
optional :proximity_factor, Float
|
|
562
|
+
|
|
563
|
+
# @!attribute route_grouping
|
|
564
|
+
# Specify the criteria for prioritising routes in a zone over routes that are part
|
|
565
|
+
# of another zone. As a result, all the tasks falling in a zone will be fulfilled
|
|
566
|
+
# before any tasks that are part of a different zone.
|
|
567
|
+
#
|
|
568
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping, nil]
|
|
569
|
+
optional :route_grouping,
|
|
570
|
+
-> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping }
|
|
571
|
+
|
|
572
|
+
# @!method initialize(order_grouping: nil, proximity_factor: nil, route_grouping: nil)
|
|
573
|
+
# Some parameter documentations has been truncated, see
|
|
574
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping} for
|
|
575
|
+
# more details.
|
|
576
|
+
#
|
|
577
|
+
# Set grouping rules for the tasks and routes.
|
|
578
|
+
#
|
|
579
|
+
# - Use order_grouping to group nearby tasks
|
|
580
|
+
# - Use route_grouping to control route sequencing.
|
|
581
|
+
#
|
|
582
|
+
# @param order_grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping] Specify the criteria for grouping nearby tasks. The grouped tasks will be treate
|
|
583
|
+
#
|
|
584
|
+
# @param proximity_factor [Float] When specified, routes are built taking into account the distance to the nearest
|
|
585
|
+
#
|
|
586
|
+
# @param route_grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping] Specify the criteria for prioritising routes in a zone over routes that are part
|
|
587
|
+
|
|
588
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping#order_grouping
|
|
589
|
+
class OrderGrouping < Nextbillionai::Internal::Type::BaseModel
|
|
590
|
+
# @!attribute grouping_diameter
|
|
591
|
+
# Specify the straight line distance, in meters, which will be used to identify
|
|
592
|
+
# the tasks that should be grouped together. The default value is null.
|
|
593
|
+
#
|
|
594
|
+
# @return [Float, nil]
|
|
595
|
+
optional :grouping_diameter, Float
|
|
596
|
+
|
|
597
|
+
# @!method initialize(grouping_diameter: nil)
|
|
598
|
+
# Some parameter documentations has been truncated, see
|
|
599
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping}
|
|
600
|
+
# for more details.
|
|
601
|
+
#
|
|
602
|
+
# Specify the criteria for grouping nearby tasks. The grouped tasks will be
|
|
603
|
+
# treated as one stop by the optimizer and no cost would be incurred when driver
|
|
604
|
+
# travels to different tasks within a group. Users can use this feature to model
|
|
605
|
+
# use cases like multiple deliveries in a building complex or a condo.
|
|
606
|
+
#
|
|
607
|
+
# Please note that when the multiple tasks are grouped together, only one setup
|
|
608
|
+
# time is considered for all such tasks. The durations of this setup time is equal
|
|
609
|
+
# to maximum setup time among all grouped tasks, if provided. On the other hand,
|
|
610
|
+
# the service time is applied to each task individually, as per the input provided
|
|
611
|
+
# when configuring those tasks.
|
|
612
|
+
#
|
|
613
|
+
# @param grouping_diameter [Float] Specify the straight line distance, in meters, which will be used to identify th
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping#route_grouping
|
|
617
|
+
class RouteGrouping < Nextbillionai::Internal::Type::BaseModel
|
|
618
|
+
# @!attribute penalty_factor
|
|
619
|
+
# Specify a non-negative value which indicates the penalty of crossing zones on
|
|
620
|
+
# the same route. Default penalty value is 0.
|
|
621
|
+
#
|
|
622
|
+
# A higher value, for example 30.0, will place a higher penalty on zone violations
|
|
623
|
+
# and hence push the optimizer to prefer a solution without any zone violations,
|
|
624
|
+
# where all tasks in a single region are fulfilled before any tasks in other
|
|
625
|
+
# regions or outside the current region. Whereas a lower value, say 5.0, will
|
|
626
|
+
# place a lower penalty allowing the optimizer to return solutions which may have
|
|
627
|
+
# few violations, say a couple of routing zone violations in our example. A still
|
|
628
|
+
# lower penalty factor, like 1.0, may have several zone violations.
|
|
629
|
+
#
|
|
630
|
+
# @return [Float, nil]
|
|
631
|
+
optional :penalty_factor, Float
|
|
632
|
+
|
|
633
|
+
# @!attribute zone_diameter
|
|
634
|
+
# Specify the diameter of the zone, routes within which will be prioritised before
|
|
635
|
+
# routes falling in other zones. Please note that zone_diameter is the straight
|
|
636
|
+
# line distance, in meters.
|
|
637
|
+
#
|
|
638
|
+
# @return [Float, nil]
|
|
639
|
+
optional :zone_diameter, Float
|
|
640
|
+
|
|
641
|
+
# @!attribute zone_source
|
|
642
|
+
# Specify the source for creating boundaries of the routing zones. The default
|
|
643
|
+
# value is “system_generated”.
|
|
644
|
+
#
|
|
645
|
+
# - system_generated - Routing zone boundaries are created automatically by the
|
|
646
|
+
# optimizer based on the zone_diameter provided.
|
|
647
|
+
# - custom_definition - Custom routing zone boundaries should be provided by the
|
|
648
|
+
# user in input using the zones attribute. An error would be returned if the
|
|
649
|
+
# zones attribute is null or missing in the input request.
|
|
650
|
+
#
|
|
651
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource, nil]
|
|
652
|
+
optional :zone_source,
|
|
653
|
+
enum: -> {
|
|
654
|
+
Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
# @!method initialize(penalty_factor: nil, zone_diameter: nil, zone_source: nil)
|
|
658
|
+
# Some parameter documentations has been truncated, see
|
|
659
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping}
|
|
660
|
+
# for more details.
|
|
661
|
+
#
|
|
662
|
+
# Specify the criteria for prioritising routes in a zone over routes that are part
|
|
663
|
+
# of another zone. As a result, all the tasks falling in a zone will be fulfilled
|
|
664
|
+
# before any tasks that are part of a different zone.
|
|
665
|
+
#
|
|
666
|
+
# @param penalty_factor [Float] Specify a non-negative value which indicates the penalty of crossing zones on th
|
|
667
|
+
#
|
|
668
|
+
# @param zone_diameter [Float] Specify the diameter of the zone, routes within which will be prioritised before
|
|
669
|
+
#
|
|
670
|
+
# @param zone_source [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource] Specify the source for creating boundaries of the routing zones. The default val
|
|
671
|
+
|
|
672
|
+
# Specify the source for creating boundaries of the routing zones. The default
|
|
673
|
+
# value is “system_generated”.
|
|
674
|
+
#
|
|
675
|
+
# - system_generated - Routing zone boundaries are created automatically by the
|
|
676
|
+
# optimizer based on the zone_diameter provided.
|
|
677
|
+
# - custom_definition - Custom routing zone boundaries should be provided by the
|
|
678
|
+
# user in input using the zones attribute. An error would be returned if the
|
|
679
|
+
# zones attribute is null or missing in the input request.
|
|
680
|
+
#
|
|
681
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping#zone_source
|
|
682
|
+
module ZoneSource
|
|
683
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
684
|
+
|
|
685
|
+
SYSTEM_GENERATED = :system_generated
|
|
686
|
+
CUSTOM_DEFINITION = :custom_definition
|
|
687
|
+
|
|
688
|
+
# @!method self.values
|
|
689
|
+
# @return [Array<Symbol>]
|
|
690
|
+
end
|
|
691
|
+
end
|
|
692
|
+
end
|
|
693
|
+
|
|
694
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#objective
|
|
695
|
+
class Objective < Nextbillionai::Internal::Type::BaseModel
|
|
696
|
+
# @!attribute allow_early_arrival
|
|
697
|
+
# Choose where the optimizer should schedule the driver’s wait time. When set to
|
|
698
|
+
# true the driver waits at the location of the task until its time window allows
|
|
699
|
+
# him to start the task. When set to false the driver waits at the location of the
|
|
700
|
+
# previous task and starts driving only at such a time that makes him arrive at
|
|
701
|
+
# the next task location in time to start the task as soon as he reaches.
|
|
702
|
+
#
|
|
703
|
+
# @return [Boolean, nil]
|
|
704
|
+
optional :allow_early_arrival, Nextbillionai::Internal::Type::Boolean
|
|
705
|
+
|
|
706
|
+
# @!attribute custom
|
|
707
|
+
# The custom parameter is used to define special objectives apart from the simpler
|
|
708
|
+
# travel cost minimization objectives.
|
|
709
|
+
#
|
|
710
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom, nil]
|
|
711
|
+
optional :custom, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom }
|
|
712
|
+
|
|
713
|
+
# @!attribute minimise_num_depots
|
|
714
|
+
# Specify whether to minimize the number of depots used in optimization routes.
|
|
715
|
+
#
|
|
716
|
+
# @return [Boolean, nil]
|
|
717
|
+
optional :minimise_num_depots, Nextbillionai::Internal::Type::Boolean
|
|
718
|
+
|
|
719
|
+
# @!attribute solver_mode
|
|
720
|
+
# If the input doesn’t include features of soft constraints, customized
|
|
721
|
+
# objectives, re-optimization, relations, max travel cost or automatic fixed cost,
|
|
722
|
+
# then user can select “optimal” to achieve a higher-speed and higher-quality
|
|
723
|
+
# optimization.
|
|
724
|
+
#
|
|
725
|
+
# If “optimal” mode is unable to process some features in the input, then it will
|
|
726
|
+
# still goes to “flexible” mode.
|
|
727
|
+
#
|
|
728
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::SolverMode, nil]
|
|
729
|
+
optional :solver_mode,
|
|
730
|
+
enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::SolverMode }
|
|
731
|
+
|
|
732
|
+
# @!attribute solving_time_limit
|
|
733
|
+
# Specify the number of seconds within which the optimizer should ideally solve
|
|
734
|
+
# the optimization request.
|
|
735
|
+
#
|
|
736
|
+
# Please note that:
|
|
737
|
+
#
|
|
738
|
+
# - In case the specified time limit is not enough to generate a solution for a
|
|
739
|
+
# given problem set, the optimizer will continue processing until it arrives at
|
|
740
|
+
# a solution.
|
|
741
|
+
# - It is recommended to specify a duration of at least 5-7 minutes in case the
|
|
742
|
+
# input problem contains a large set of tasks or vehicles.
|
|
743
|
+
#
|
|
744
|
+
# @return [Integer, nil]
|
|
745
|
+
optional :solving_time_limit, Integer
|
|
746
|
+
|
|
747
|
+
# @!attribute travel_cost
|
|
748
|
+
# The travel_cost parameter specifies the type of cost used by the solver to
|
|
749
|
+
# determine the routes.
|
|
750
|
+
#
|
|
751
|
+
# If the travel_cost parameter is set to distance, the solver will minimize the
|
|
752
|
+
# total distance traveled by vehicles while determining a solution. This objective
|
|
753
|
+
# would be useful in cases where the primary objective is to reduce fuel
|
|
754
|
+
# consumption or travel expenses.
|
|
755
|
+
#
|
|
756
|
+
# If the travel_cost parameter is set to duration, the solver will minimize the
|
|
757
|
+
# total time taken by the vehicles to complete all tasks while determining a
|
|
758
|
+
# solution. This objective would be useful in cases where the primary objective is
|
|
759
|
+
# to minimize completion time or maximize the number of orders fulfilled within a
|
|
760
|
+
# given time window.
|
|
761
|
+
#
|
|
762
|
+
# If the travel_cost parameter is set to air_distance, the solver will try to
|
|
763
|
+
# calculate the distance,in meters, between two points using the great-circle
|
|
764
|
+
# distance formula (i.e., the shortest distance between two points on a sphere)
|
|
765
|
+
# instead of the actual road distance. This would be useful in cases where the
|
|
766
|
+
# delivery locations are far apart and the road distance between them is
|
|
767
|
+
# significantly longer than the actual straight-line distance. For example, in
|
|
768
|
+
# Drone Delivery services.
|
|
769
|
+
#
|
|
770
|
+
# If the travel_cost is set to customized the solver would use the custom cost
|
|
771
|
+
# values provided by the user (in cost_matrix attribute) and prefer a solution
|
|
772
|
+
# with lower overall cost. This enables the user to have greater control over the
|
|
773
|
+
# routes preferred by the solver and hence the sequence in which the jobs are
|
|
774
|
+
# completed.
|
|
775
|
+
#
|
|
776
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::TravelCost, nil]
|
|
777
|
+
optional :travel_cost,
|
|
778
|
+
enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::TravelCost }
|
|
779
|
+
|
|
780
|
+
# @!method initialize(allow_early_arrival: nil, custom: nil, minimise_num_depots: nil, solver_mode: nil, solving_time_limit: nil, travel_cost: nil)
|
|
781
|
+
# Some parameter documentations has been truncated, see
|
|
782
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective} for
|
|
783
|
+
# more details.
|
|
784
|
+
#
|
|
785
|
+
# This attribute is used to configure the objective of the optimization job.
|
|
786
|
+
#
|
|
787
|
+
# @param allow_early_arrival [Boolean] Choose where the optimizer should schedule the driver’s wait time. When set to t
|
|
788
|
+
#
|
|
789
|
+
# @param custom [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom] The custom parameter is used to define special objectives apart from the simpler
|
|
790
|
+
#
|
|
791
|
+
# @param minimise_num_depots [Boolean] Specify whether to minimize the number of depots used in optimization routes.
|
|
792
|
+
#
|
|
793
|
+
# @param solver_mode [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::SolverMode] If the input doesn’t include features of soft constraints, customized objectives
|
|
794
|
+
#
|
|
795
|
+
# @param solving_time_limit [Integer] Specify the number of seconds within which the optimizer should ideally solve th
|
|
796
|
+
#
|
|
797
|
+
# @param travel_cost [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::TravelCost] The travel_cost parameter specifies the type of cost used by the solver to deter
|
|
798
|
+
|
|
799
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#custom
|
|
800
|
+
class Custom < Nextbillionai::Internal::Type::BaseModel
|
|
801
|
+
# @!attribute type
|
|
802
|
+
# The type parameter accepts two inputs:
|
|
803
|
+
#
|
|
804
|
+
# - min: This type of customized objective will minimize the metric provided in
|
|
805
|
+
# the value parameter.
|
|
806
|
+
# - min-max: This type of customized objective will approximate an even
|
|
807
|
+
# distribution of the metric provided in the value parameter, among all the
|
|
808
|
+
# routes in solution.
|
|
809
|
+
#
|
|
810
|
+
# Please note that type is mandatory only when using custom attribute.
|
|
811
|
+
#
|
|
812
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Type]
|
|
813
|
+
required :type,
|
|
814
|
+
enum: -> {
|
|
815
|
+
Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom::Type
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
# @!attribute value
|
|
819
|
+
# The value parameter accepts four inputs, two of them are valid for min type and
|
|
820
|
+
# other two are valid for min-max type custom objective. Let’s look at the values
|
|
821
|
+
# for min type objective:
|
|
822
|
+
#
|
|
823
|
+
# - vehicles: Solver will minimize the number of vehicles used in the solution.
|
|
824
|
+
# - completion_time: Solver will minimize the total time taken to complete all
|
|
825
|
+
# tasks.
|
|
826
|
+
#
|
|
827
|
+
# The next set of values are acceptable when type is set to min-max.
|
|
828
|
+
#
|
|
829
|
+
# - tasks: Solver will evenly distribute the tasks on each route.
|
|
830
|
+
# - travel_cost: Solver will assign tasks such that the traveling cost of each
|
|
831
|
+
# route is within a close range of other routes. The travel cost metric
|
|
832
|
+
# considered here is the one set using objective.travel_cost .
|
|
833
|
+
#
|
|
834
|
+
# Please note that value is mandatory only when using custom attribute. The above
|
|
835
|
+
# values provide flexibility to tune the optimization algorithm to fulfill
|
|
836
|
+
# practical objectives beyond the relatively simpler time or distance minimization
|
|
837
|
+
# approaches.
|
|
838
|
+
#
|
|
839
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Value]
|
|
840
|
+
required :value,
|
|
841
|
+
enum: -> {
|
|
842
|
+
Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom::Value
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
# @!method initialize(type:, value:)
|
|
846
|
+
# Some parameter documentations has been truncated, see
|
|
847
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom}
|
|
848
|
+
# for more details.
|
|
849
|
+
#
|
|
850
|
+
# The custom parameter is used to define special objectives apart from the simpler
|
|
851
|
+
# travel cost minimization objectives.
|
|
852
|
+
#
|
|
853
|
+
# @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Type] The type parameter accepts two inputs:
|
|
854
|
+
#
|
|
855
|
+
# @param value [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Value] The value parameter accepts four inputs, two of them are valid for min type and
|
|
856
|
+
|
|
857
|
+
# The type parameter accepts two inputs:
|
|
858
|
+
#
|
|
859
|
+
# - min: This type of customized objective will minimize the metric provided in
|
|
860
|
+
# the value parameter.
|
|
861
|
+
# - min-max: This type of customized objective will approximate an even
|
|
862
|
+
# distribution of the metric provided in the value parameter, among all the
|
|
863
|
+
# routes in solution.
|
|
864
|
+
#
|
|
865
|
+
# Please note that type is mandatory only when using custom attribute.
|
|
866
|
+
#
|
|
867
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom#type
|
|
868
|
+
module Type
|
|
869
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
870
|
+
|
|
871
|
+
MIN = :min
|
|
872
|
+
MIN_MAX = :"min-max"
|
|
873
|
+
|
|
874
|
+
# @!method self.values
|
|
875
|
+
# @return [Array<Symbol>]
|
|
876
|
+
end
|
|
877
|
+
|
|
878
|
+
# The value parameter accepts four inputs, two of them are valid for min type and
|
|
879
|
+
# other two are valid for min-max type custom objective. Let’s look at the values
|
|
880
|
+
# for min type objective:
|
|
881
|
+
#
|
|
882
|
+
# - vehicles: Solver will minimize the number of vehicles used in the solution.
|
|
883
|
+
# - completion_time: Solver will minimize the total time taken to complete all
|
|
884
|
+
# tasks.
|
|
885
|
+
#
|
|
886
|
+
# The next set of values are acceptable when type is set to min-max.
|
|
887
|
+
#
|
|
888
|
+
# - tasks: Solver will evenly distribute the tasks on each route.
|
|
889
|
+
# - travel_cost: Solver will assign tasks such that the traveling cost of each
|
|
890
|
+
# route is within a close range of other routes. The travel cost metric
|
|
891
|
+
# considered here is the one set using objective.travel_cost .
|
|
892
|
+
#
|
|
893
|
+
# Please note that value is mandatory only when using custom attribute. The above
|
|
894
|
+
# values provide flexibility to tune the optimization algorithm to fulfill
|
|
895
|
+
# practical objectives beyond the relatively simpler time or distance minimization
|
|
896
|
+
# approaches.
|
|
897
|
+
#
|
|
898
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom#value
|
|
899
|
+
module Value
|
|
900
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
901
|
+
|
|
902
|
+
VEHICLES = :vehicles
|
|
903
|
+
COMPLETION_TIME = :completion_time
|
|
904
|
+
TRAVEL_COST = :travel_cost
|
|
905
|
+
TASKS = :tasks
|
|
906
|
+
|
|
907
|
+
# @!method self.values
|
|
908
|
+
# @return [Array<Symbol>]
|
|
909
|
+
end
|
|
910
|
+
end
|
|
911
|
+
|
|
912
|
+
# If the input doesn’t include features of soft constraints, customized
|
|
913
|
+
# objectives, re-optimization, relations, max travel cost or automatic fixed cost,
|
|
914
|
+
# then user can select “optimal” to achieve a higher-speed and higher-quality
|
|
915
|
+
# optimization.
|
|
916
|
+
#
|
|
917
|
+
# If “optimal” mode is unable to process some features in the input, then it will
|
|
918
|
+
# still goes to “flexible” mode.
|
|
919
|
+
#
|
|
920
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#solver_mode
|
|
921
|
+
module SolverMode
|
|
922
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
923
|
+
|
|
924
|
+
FLEXIBLE = :flexible
|
|
925
|
+
FAST = :fast
|
|
926
|
+
INTERNAL = :internal
|
|
927
|
+
|
|
928
|
+
# @!method self.values
|
|
929
|
+
# @return [Array<Symbol>]
|
|
930
|
+
end
|
|
931
|
+
|
|
932
|
+
# The travel_cost parameter specifies the type of cost used by the solver to
|
|
933
|
+
# determine the routes.
|
|
934
|
+
#
|
|
935
|
+
# If the travel_cost parameter is set to distance, the solver will minimize the
|
|
936
|
+
# total distance traveled by vehicles while determining a solution. This objective
|
|
937
|
+
# would be useful in cases where the primary objective is to reduce fuel
|
|
938
|
+
# consumption or travel expenses.
|
|
939
|
+
#
|
|
940
|
+
# If the travel_cost parameter is set to duration, the solver will minimize the
|
|
941
|
+
# total time taken by the vehicles to complete all tasks while determining a
|
|
942
|
+
# solution. This objective would be useful in cases where the primary objective is
|
|
943
|
+
# to minimize completion time or maximize the number of orders fulfilled within a
|
|
944
|
+
# given time window.
|
|
945
|
+
#
|
|
946
|
+
# If the travel_cost parameter is set to air_distance, the solver will try to
|
|
947
|
+
# calculate the distance,in meters, between two points using the great-circle
|
|
948
|
+
# distance formula (i.e., the shortest distance between two points on a sphere)
|
|
949
|
+
# instead of the actual road distance. This would be useful in cases where the
|
|
950
|
+
# delivery locations are far apart and the road distance between them is
|
|
951
|
+
# significantly longer than the actual straight-line distance. For example, in
|
|
952
|
+
# Drone Delivery services.
|
|
953
|
+
#
|
|
954
|
+
# If the travel_cost is set to customized the solver would use the custom cost
|
|
955
|
+
# values provided by the user (in cost_matrix attribute) and prefer a solution
|
|
956
|
+
# with lower overall cost. This enables the user to have greater control over the
|
|
957
|
+
# routes preferred by the solver and hence the sequence in which the jobs are
|
|
958
|
+
# completed.
|
|
959
|
+
#
|
|
960
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#travel_cost
|
|
961
|
+
module TravelCost
|
|
962
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
963
|
+
|
|
964
|
+
DURATION = :duration
|
|
965
|
+
DISTANCE = :distance
|
|
966
|
+
AIR_DISTANCE = :air_distance
|
|
967
|
+
CUSTOMIZED = :customized
|
|
968
|
+
|
|
969
|
+
# @!method self.values
|
|
970
|
+
# @return [Array<Symbol>]
|
|
971
|
+
end
|
|
972
|
+
end
|
|
973
|
+
|
|
974
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#routing
|
|
975
|
+
class Routing < Nextbillionai::Internal::Type::BaseModel
|
|
976
|
+
# @!attribute allow
|
|
977
|
+
#
|
|
978
|
+
# @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Allow>, nil]
|
|
979
|
+
optional :allow,
|
|
980
|
+
-> {
|
|
981
|
+
Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Allow]
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
# @!attribute avoid
|
|
985
|
+
# Specify the type of objects/maneuvers that the route should avoid.
|
|
986
|
+
#
|
|
987
|
+
# Please note that:
|
|
988
|
+
#
|
|
989
|
+
# - The values are case-sensitive.
|
|
990
|
+
# - When using avoid:bbox feature, users need to specify the boundaries of the
|
|
991
|
+
# bounding box to be avoided. Multiple bounding boxes can be provided
|
|
992
|
+
# simultaneously. Please note that bounding box is a hard filter and if it
|
|
993
|
+
# blocks all possible routes between given locations, a 4xx error is returned.
|
|
994
|
+
# Mention the bounding box boundaries in the following format: bbox:
|
|
995
|
+
# min_latitude,min_longitude,max_latitude,max_longitude.
|
|
996
|
+
# - When using avoid=sharp_turn, the range of allowed turn angles is \[120,240\]
|
|
997
|
+
# in the clockwise direction from the current road. Any roads with turn angles
|
|
998
|
+
# outside the range will be avoided.
|
|
999
|
+
# - If none is provided along with other values, an error is returned as a valid
|
|
1000
|
+
# route is not feasible.
|
|
1001
|
+
#
|
|
1002
|
+
# @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Avoid>, nil]
|
|
1003
|
+
optional :avoid,
|
|
1004
|
+
-> {
|
|
1005
|
+
Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Avoid]
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
# @!attribute context
|
|
1009
|
+
# Use this parameter to apply a single speed value for all ETA and drive time
|
|
1010
|
+
# calculations. In case, the travel_cost is set to duration then setting this
|
|
1011
|
+
# parameter also impacts the cost of the solution.
|
|
1012
|
+
#
|
|
1013
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Context, nil]
|
|
1014
|
+
optional :context,
|
|
1015
|
+
enum: -> {
|
|
1016
|
+
Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Context
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
# @!attribute cross_border
|
|
1020
|
+
# Specify if crossing an international border is allowed for operations near
|
|
1021
|
+
# border areas. When set to false, the API will prohibit any routes crossing
|
|
1022
|
+
# international borders. When set to true, the service will return routes which
|
|
1023
|
+
# cross the borders between countries, if required for the given set locations
|
|
1024
|
+
#
|
|
1025
|
+
# This feature is available in North America region only. Please get in touch with
|
|
1026
|
+
# [support@nextbillion.ai](mailto:support@nextbillion.ai) to enquire/enable other
|
|
1027
|
+
# areas.
|
|
1028
|
+
#
|
|
1029
|
+
# @return [Boolean, nil]
|
|
1030
|
+
optional :cross_border, Nextbillionai::Internal::Type::Boolean
|
|
1031
|
+
|
|
1032
|
+
# @!attribute disable_cache
|
|
1033
|
+
# Specify if the optimizer should cache the matrix result set (containing ETAs and
|
|
1034
|
+
# distances) for the given set of locations in the request. Once the results are
|
|
1035
|
+
# cached, the optimizer can use it during the next 60 mins if exactly the same set
|
|
1036
|
+
# of locations are provided again. Please note that if a cached result is
|
|
1037
|
+
# retrieved, the timer is reset and that result will be available for another 60
|
|
1038
|
+
# mins.
|
|
1039
|
+
#
|
|
1040
|
+
# If the users want to regenerate the result set, they can set this parameter to
|
|
1041
|
+
# true and optimizer will not use the cached results.
|
|
1042
|
+
#
|
|
1043
|
+
# This feature is helpful in expediting the optimization process and generate
|
|
1044
|
+
# results quickly. It also helps users to quickly simulate route plans for
|
|
1045
|
+
# different combinations of constraints for a given set of locations.
|
|
1046
|
+
#
|
|
1047
|
+
# @return [Boolean, nil]
|
|
1048
|
+
optional :disable_cache, Nextbillionai::Internal::Type::Boolean
|
|
1049
|
+
|
|
1050
|
+
# @!attribute hazmat_type
|
|
1051
|
+
# Specify the type of hazardous material being carried and the service will avoid
|
|
1052
|
+
# roads which are not suitable for the type of goods specified. Provide multiple
|
|
1053
|
+
# values separated by a comma , .
|
|
1054
|
+
#
|
|
1055
|
+
# Please note that this parameter is effective only when mode=truck.
|
|
1056
|
+
#
|
|
1057
|
+
# @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::HazmatType>, nil]
|
|
1058
|
+
optional :hazmat_type,
|
|
1059
|
+
-> {
|
|
1060
|
+
Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::HazmatType]
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
# @!attribute mode
|
|
1064
|
+
# Define the traveling mode to be used for determining the optimized routes.
|
|
1065
|
+
#
|
|
1066
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Mode, nil]
|
|
1067
|
+
optional :mode, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Mode }
|
|
1068
|
+
|
|
1069
|
+
# @!attribute profiles
|
|
1070
|
+
# Defines all the vehicle profiles. profiles is implemented as a dictionary of
|
|
1071
|
+
# objects where each profile name is the unique key and the associated value is an
|
|
1072
|
+
# object describing the routing properties of that profile. All routing properties
|
|
1073
|
+
# available in options.routing can be added as values for a given profile.
|
|
1074
|
+
#
|
|
1075
|
+
# Please note:
|
|
1076
|
+
#
|
|
1077
|
+
# - The routing properties configured using options.routing (and not part of any
|
|
1078
|
+
# \profiles\) are considered as default route settings i.e. they are applied to
|
|
1079
|
+
# vehicles which are not associated with any profile.
|
|
1080
|
+
# - The default route settings are independent from those defined for any profiles
|
|
1081
|
+
# . Consequently, for vehicles which are tagged to a given profile, only the
|
|
1082
|
+
# routing properties configured for the given profile will apply.
|
|
1083
|
+
# - If the "mode" is not specified for any profile, by default it is considered to
|
|
1084
|
+
# be car .
|
|
1085
|
+
# - "default" is a reserved keyword and can not be used as the name for any custom
|
|
1086
|
+
# profile.
|
|
1087
|
+
# - profiles can't be nested in other profiles.
|
|
1088
|
+
# - The number of profiles, including default route settings, are limited to
|
|
1089
|
+
#
|
|
1090
|
+
# - 15, if 0 < number of location <= 100
|
|
1091
|
+
# - 6, if 100 < number of location <= 600,
|
|
1092
|
+
# - 2, if 600 < number of location <= 1200,
|
|
1093
|
+
# - 1, if number of location > 1200
|
|
1094
|
+
#
|
|
1095
|
+
# Routing profiles attribute is useful for configuring fleets containing multiple
|
|
1096
|
+
# vehicles types. Check
|
|
1097
|
+
# [Routing Profiles](https://docs.nextbillion.ai/docs/optimization/api/route-optimization-flexible/tutorials/routing-profiles)
|
|
1098
|
+
# tutorial to learn more.
|
|
1099
|
+
#
|
|
1100
|
+
# @return [Object, nil]
|
|
1101
|
+
optional :profiles, Nextbillionai::Internal::Type::Unknown
|
|
1102
|
+
|
|
1103
|
+
# @!attribute traffic_timestamp
|
|
1104
|
+
# Specify the general time when the job needs to be carried out. The time should
|
|
1105
|
+
# be expressed as an UNIX timestamp in seconds format. The solver will take into
|
|
1106
|
+
# account the general traffic conditions at the given time to determine the routes
|
|
1107
|
+
# and their ETAs.
|
|
1108
|
+
#
|
|
1109
|
+
# @return [Integer, nil]
|
|
1110
|
+
optional :traffic_timestamp, Integer
|
|
1111
|
+
|
|
1112
|
+
# @!attribute truck_axle_load
|
|
1113
|
+
# Specify the total load per axle (including the weight of trailers and shipped
|
|
1114
|
+
# goods) of the truck, in tonnes. When used, the optimizer will use only those
|
|
1115
|
+
# routes which are legally allowed to carry the load specified per axle.
|
|
1116
|
+
#
|
|
1117
|
+
# Please note this parameter is effective only when mode=truck.
|
|
1118
|
+
#
|
|
1119
|
+
# @return [Float, nil]
|
|
1120
|
+
optional :truck_axle_load, Float
|
|
1121
|
+
|
|
1122
|
+
# @!attribute truck_size
|
|
1123
|
+
# Specify the truck dimensions, in centimeters, in the format of
|
|
1124
|
+
# “height,width,length”. Please note that this parameter is effective only when
|
|
1125
|
+
# mode=truck.
|
|
1126
|
+
#
|
|
1127
|
+
# @return [String, nil]
|
|
1128
|
+
optional :truck_size, String
|
|
1129
|
+
|
|
1130
|
+
# @!attribute truck_weight
|
|
1131
|
+
# Specify the truck weight including the trailers and shipped goods, in kilograms.
|
|
1132
|
+
# Please note that this parameter is effective only when mode=truck.
|
|
1133
|
+
#
|
|
1134
|
+
# @return [Integer, nil]
|
|
1135
|
+
optional :truck_weight, Integer
|
|
1136
|
+
|
|
1137
|
+
# @!method initialize(allow: nil, avoid: nil, context: nil, cross_border: nil, disable_cache: nil, hazmat_type: nil, mode: nil, profiles: nil, traffic_timestamp: nil, truck_axle_load: nil, truck_size: nil, truck_weight: nil)
|
|
1138
|
+
# Some parameter documentations has been truncated, see
|
|
1139
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing} for more
|
|
1140
|
+
# details.
|
|
1141
|
+
#
|
|
1142
|
+
# This attribute is used to define the routing configurations for the optimization
|
|
1143
|
+
# job.
|
|
1144
|
+
#
|
|
1145
|
+
# @param allow [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Allow>]
|
|
1146
|
+
#
|
|
1147
|
+
# @param avoid [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Avoid>] Specify the type of objects/maneuvers that the route should avoid.
|
|
1148
|
+
#
|
|
1149
|
+
# @param context [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Context] Use this parameter to apply a single speed value for all ETA and drive time calc
|
|
1150
|
+
#
|
|
1151
|
+
# @param cross_border [Boolean] Specify if crossing an international border is allowed for operations near borde
|
|
1152
|
+
#
|
|
1153
|
+
# @param disable_cache [Boolean] Specify if the optimizer should cache the matrix result set (containing ETAs and
|
|
1154
|
+
#
|
|
1155
|
+
# @param hazmat_type [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::HazmatType>] Specify the type of hazardous material being carried and the service will avoid
|
|
1156
|
+
#
|
|
1157
|
+
# @param mode [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Mode] Define the traveling mode to be used for determining the optimized routes.
|
|
1158
|
+
#
|
|
1159
|
+
# @param profiles [Object] Defines all the vehicle profiles. profiles is implemented as a dictionary of obj
|
|
1160
|
+
#
|
|
1161
|
+
# @param traffic_timestamp [Integer] Specify the general time when the job needs to be carried out. The time should b
|
|
1162
|
+
#
|
|
1163
|
+
# @param truck_axle_load [Float] Specify the total load per axle (including the weight of trailers and shipped go
|
|
1164
|
+
#
|
|
1165
|
+
# @param truck_size [String] Specify the truck dimensions, in centimeters, in the format of “height,width,len
|
|
1166
|
+
#
|
|
1167
|
+
# @param truck_weight [Integer] Specify the truck weight including the trailers and shipped goods, in kilograms.
|
|
1168
|
+
|
|
1169
|
+
module Allow
|
|
1170
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1171
|
+
|
|
1172
|
+
TAXI = :taxi
|
|
1173
|
+
HOV = :hov
|
|
1174
|
+
|
|
1175
|
+
# @!method self.values
|
|
1176
|
+
# @return [Array<Symbol>]
|
|
1177
|
+
end
|
|
1178
|
+
|
|
1179
|
+
module Avoid
|
|
1180
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1181
|
+
|
|
1182
|
+
TOLL = :toll
|
|
1183
|
+
HIGHWAY = :highway
|
|
1184
|
+
BBOX = :bbox
|
|
1185
|
+
LEFT_TURN = :left_turn
|
|
1186
|
+
RIGHT_TURN = :right_turn
|
|
1187
|
+
SHARP_TURN = :sharp_turn
|
|
1188
|
+
UTURN = :uturn
|
|
1189
|
+
SERVICE_ROAD = :service_road
|
|
1190
|
+
FERRY = :ferry
|
|
1191
|
+
NONE = :"none "
|
|
1192
|
+
|
|
1193
|
+
# @!method self.values
|
|
1194
|
+
# @return [Array<Symbol>]
|
|
1195
|
+
end
|
|
1196
|
+
|
|
1197
|
+
# Use this parameter to apply a single speed value for all ETA and drive time
|
|
1198
|
+
# calculations. In case, the travel_cost is set to duration then setting this
|
|
1199
|
+
# parameter also impacts the cost of the solution.
|
|
1200
|
+
#
|
|
1201
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing#context
|
|
1202
|
+
module Context
|
|
1203
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1204
|
+
|
|
1205
|
+
AVGSPEED = :avgspeed
|
|
1206
|
+
|
|
1207
|
+
# @!method self.values
|
|
1208
|
+
# @return [Array<Symbol>]
|
|
1209
|
+
end
|
|
1210
|
+
|
|
1211
|
+
module HazmatType
|
|
1212
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1213
|
+
|
|
1214
|
+
GENERAL = :general
|
|
1215
|
+
CIRCUMSTANTIAL = :circumstantial
|
|
1216
|
+
EXPLOSIVE = :explosive
|
|
1217
|
+
HARMFUL_TO_WATER = :harmful_to_water
|
|
1218
|
+
|
|
1219
|
+
# @!method self.values
|
|
1220
|
+
# @return [Array<Symbol>]
|
|
1221
|
+
end
|
|
1222
|
+
|
|
1223
|
+
# Define the traveling mode to be used for determining the optimized routes.
|
|
1224
|
+
#
|
|
1225
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing#mode
|
|
1226
|
+
module Mode
|
|
1227
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1228
|
+
|
|
1229
|
+
CAR = :car
|
|
1230
|
+
TRUCK = :truck
|
|
1231
|
+
|
|
1232
|
+
# @!method self.values
|
|
1233
|
+
# @return [Array<Symbol>]
|
|
1234
|
+
end
|
|
1235
|
+
end
|
|
1236
|
+
end
|
|
1237
|
+
|
|
1238
|
+
class Relation < Nextbillionai::Internal::Type::BaseModel
|
|
1239
|
+
# @!attribute steps
|
|
1240
|
+
# The steps property specifies the tasks or steps that are part of the relation
|
|
1241
|
+
# and must be carried out in a manner defined in the type parameter. Please note
|
|
1242
|
+
# you can add any number of steps here, except when relation type is precedence
|
|
1243
|
+
# where only 2 tasks can be added.
|
|
1244
|
+
#
|
|
1245
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step>]
|
|
1246
|
+
required :steps,
|
|
1247
|
+
-> {
|
|
1248
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Relation::Step]
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
# @!attribute type
|
|
1252
|
+
# Specifies the type of relation constraint. The following types are supported:
|
|
1253
|
+
#
|
|
1254
|
+
# - in_same_route: Ensures that all steps are covered in the same route in
|
|
1255
|
+
# solution.
|
|
1256
|
+
# - in_sequence: Ensures that all steps are in the same route and their sequence
|
|
1257
|
+
# matches the order specified in the steps field. Insertion of new steps between
|
|
1258
|
+
# the steps specified, is allowed.
|
|
1259
|
+
# - in_direct_sequence: Similar to in_sequence, but insertion of new steps is not
|
|
1260
|
+
# allowed in the final route.
|
|
1261
|
+
# - precedence: Restricts the travel time between the first step and second step.
|
|
1262
|
+
# If the precedence requirement cannot be satisfied, then the task specified at
|
|
1263
|
+
# the second step will not be assigned. Only 2 steps can be specified in a
|
|
1264
|
+
# single precedence type relations. Please use multiple precedence relations to
|
|
1265
|
+
# apply restrictions on more than 2 tasks.
|
|
1266
|
+
#
|
|
1267
|
+
# If the vehicle field is specified in the relations input, all steps will be
|
|
1268
|
+
# served by that particular vehicle. Otherwise, the route can be allocated to any
|
|
1269
|
+
# feasible vehicle.
|
|
1270
|
+
#
|
|
1271
|
+
# Please note that the type field is mandatory when using the relations object.
|
|
1272
|
+
#
|
|
1273
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Type]
|
|
1274
|
+
required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Relation::Type }
|
|
1275
|
+
|
|
1276
|
+
# @!attribute id
|
|
1277
|
+
# **Deprecated! Please use the** vehicle **parameter to specify the vehicle ID.**
|
|
1278
|
+
#
|
|
1279
|
+
# Specifies the ID of the vehicle that would fulfil the steps. ID should be
|
|
1280
|
+
# consistent with input IDs provided in the vehicles object.
|
|
1281
|
+
#
|
|
1282
|
+
# @return [Integer, nil]
|
|
1283
|
+
optional :id, Integer
|
|
1284
|
+
|
|
1285
|
+
# @!attribute max_duration
|
|
1286
|
+
# This attribute is effective only when precedence type relation is used.
|
|
1287
|
+
# max_duration restricts the travel time of the vehicle to go from location of
|
|
1288
|
+
# first task to the location of second task specified in steps object. The unit
|
|
1289
|
+
# for this parameter is seconds. It accepts values greater than 0 only.
|
|
1290
|
+
#
|
|
1291
|
+
# Please note that max_duration is a hard constraint. Hence, if aggressive
|
|
1292
|
+
# durations are provided such that the second task cannot be reached within the
|
|
1293
|
+
# specified max_duration, it might be done before the first task (usually in case
|
|
1294
|
+
# of jobs) or remain un-assigned (usually in case of shipments).
|
|
1295
|
+
#
|
|
1296
|
+
# @return [Integer, nil]
|
|
1297
|
+
optional :max_duration, Integer
|
|
1298
|
+
|
|
1299
|
+
# @!attribute min_duration
|
|
1300
|
+
# This attribute is effective only when precedence type relation is used. Use
|
|
1301
|
+
# min_duration to enforce a minimum time-gap between the two tasks specified in
|
|
1302
|
+
# steps object. When specified, the second task will get completed after a gap of
|
|
1303
|
+
# min_duration with respect to the first task. The unit for this parameter is
|
|
1304
|
+
# seconds.
|
|
1305
|
+
#
|
|
1306
|
+
# Please note that min_duration is implemented as a soft constraint and it can be
|
|
1307
|
+
# violated in presence of other relation types. The optimizer will tend to provide
|
|
1308
|
+
# solutions where min_duration is not violated, but it is not guaranteed.
|
|
1309
|
+
#
|
|
1310
|
+
# @return [Integer, nil]
|
|
1311
|
+
optional :min_duration, Integer
|
|
1312
|
+
|
|
1313
|
+
# @!attribute vehicle
|
|
1314
|
+
# Specifies the ID of the vehicle that would fulfill the steps. Providing the same
|
|
1315
|
+
# vehicle ID to multiple ‘relations’ is prohibited. The vehicle ID provided here
|
|
1316
|
+
# should be consistent with ID provided in the vehicles attribute.
|
|
1317
|
+
#
|
|
1318
|
+
# @return [String, nil]
|
|
1319
|
+
optional :vehicle, String
|
|
1320
|
+
|
|
1321
|
+
# @!method initialize(steps:, type:, id: nil, max_duration: nil, min_duration: nil, vehicle: nil)
|
|
1322
|
+
# Some parameter documentations has been truncated, see
|
|
1323
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Relation} for more
|
|
1324
|
+
# details.
|
|
1325
|
+
#
|
|
1326
|
+
# @param steps [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step>] The steps property specifies the tasks or steps that are part of the relation an
|
|
1327
|
+
#
|
|
1328
|
+
# @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Type] Specifies the type of relation constraint. The following types are supported:
|
|
1329
|
+
#
|
|
1330
|
+
# @param id [Integer] **Deprecated! Please use the** vehicle **parameter to specify the vehicle ID.**
|
|
1331
|
+
#
|
|
1332
|
+
# @param max_duration [Integer] This attribute is effective only when precedence type relation is used. max_dura
|
|
1333
|
+
#
|
|
1334
|
+
# @param min_duration [Integer] This attribute is effective only when precedence type relation is used. Use
|
|
1335
|
+
# min\_
|
|
1336
|
+
#
|
|
1337
|
+
# @param vehicle [String] Specifies the ID of the vehicle that would fulfill the steps. Providing the same
|
|
1338
|
+
|
|
1339
|
+
class Step < Nextbillionai::Internal::Type::BaseModel
|
|
1340
|
+
# @!attribute type
|
|
1341
|
+
# Specifies the type of the step. The start and end step types have to be the
|
|
1342
|
+
# first and last steps, respectively, in a relation.
|
|
1343
|
+
#
|
|
1344
|
+
# Please note that the type is mandatory when using the relations object.
|
|
1345
|
+
#
|
|
1346
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step::Type]
|
|
1347
|
+
required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Relation::Step::Type }
|
|
1348
|
+
|
|
1349
|
+
# @!attribute id
|
|
1350
|
+
# This represents the ID of the task and should be consistent with the input IDs
|
|
1351
|
+
# provided in the jobs or shipments objects for a given step. The id is required
|
|
1352
|
+
# for all steps other than start and end.
|
|
1353
|
+
#
|
|
1354
|
+
# @return [String, nil]
|
|
1355
|
+
optional :id, String
|
|
1356
|
+
|
|
1357
|
+
# @!method initialize(type:, id: nil)
|
|
1358
|
+
# Some parameter documentations has been truncated, see
|
|
1359
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step} for more
|
|
1360
|
+
# details.
|
|
1361
|
+
#
|
|
1362
|
+
# @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step::Type] Specifies the type of the step. The start and end step types have to be the firs
|
|
1363
|
+
#
|
|
1364
|
+
# @param id [String] This represents the ID of the task and should be consistent with the input IDs p
|
|
1365
|
+
|
|
1366
|
+
# Specifies the type of the step. The start and end step types have to be the
|
|
1367
|
+
# first and last steps, respectively, in a relation.
|
|
1368
|
+
#
|
|
1369
|
+
# Please note that the type is mandatory when using the relations object.
|
|
1370
|
+
#
|
|
1371
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step#type
|
|
1372
|
+
module Type
|
|
1373
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1374
|
+
|
|
1375
|
+
START = :start
|
|
1376
|
+
END_ = :end
|
|
1377
|
+
JOB = :job
|
|
1378
|
+
PICKUP = :pickup
|
|
1379
|
+
DELIVERY = :delivery
|
|
1380
|
+
|
|
1381
|
+
# @!method self.values
|
|
1382
|
+
# @return [Array<Symbol>]
|
|
1383
|
+
end
|
|
1384
|
+
end
|
|
1385
|
+
|
|
1386
|
+
# Specifies the type of relation constraint. The following types are supported:
|
|
1387
|
+
#
|
|
1388
|
+
# - in_same_route: Ensures that all steps are covered in the same route in
|
|
1389
|
+
# solution.
|
|
1390
|
+
# - in_sequence: Ensures that all steps are in the same route and their sequence
|
|
1391
|
+
# matches the order specified in the steps field. Insertion of new steps between
|
|
1392
|
+
# the steps specified, is allowed.
|
|
1393
|
+
# - in_direct_sequence: Similar to in_sequence, but insertion of new steps is not
|
|
1394
|
+
# allowed in the final route.
|
|
1395
|
+
# - precedence: Restricts the travel time between the first step and second step.
|
|
1396
|
+
# If the precedence requirement cannot be satisfied, then the task specified at
|
|
1397
|
+
# the second step will not be assigned. Only 2 steps can be specified in a
|
|
1398
|
+
# single precedence type relations. Please use multiple precedence relations to
|
|
1399
|
+
# apply restrictions on more than 2 tasks.
|
|
1400
|
+
#
|
|
1401
|
+
# If the vehicle field is specified in the relations input, all steps will be
|
|
1402
|
+
# served by that particular vehicle. Otherwise, the route can be allocated to any
|
|
1403
|
+
# feasible vehicle.
|
|
1404
|
+
#
|
|
1405
|
+
# Please note that the type field is mandatory when using the relations object.
|
|
1406
|
+
#
|
|
1407
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Relation#type
|
|
1408
|
+
module Type
|
|
1409
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1410
|
+
|
|
1411
|
+
IN_SAME_ROUTE = :in_same_route
|
|
1412
|
+
IN_SEQUENCE = :in_sequence
|
|
1413
|
+
IN_DIRECT_SEQUENCE = :in_direct_sequence
|
|
1414
|
+
PRECEDENCE = :precedence
|
|
1415
|
+
|
|
1416
|
+
# @!method self.values
|
|
1417
|
+
# @return [Array<Symbol>]
|
|
1418
|
+
end
|
|
1419
|
+
end
|
|
1420
|
+
|
|
1421
|
+
class Solution < Nextbillionai::Internal::Type::BaseModel
|
|
1422
|
+
# @!attribute cost
|
|
1423
|
+
# Specify the cost of the route.
|
|
1424
|
+
#
|
|
1425
|
+
# @return [Integer]
|
|
1426
|
+
required :cost, Integer
|
|
1427
|
+
|
|
1428
|
+
# @!attribute steps
|
|
1429
|
+
# Describe the steps in this route.
|
|
1430
|
+
#
|
|
1431
|
+
# @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step>]
|
|
1432
|
+
required :steps,
|
|
1433
|
+
-> {
|
|
1434
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Solution::Step]
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
# @!attribute vehicle
|
|
1438
|
+
# Specify the ID of the vehicle that was assigned to the route. This field is
|
|
1439
|
+
# mandatory when using the solution attribute and providing an empty string would
|
|
1440
|
+
# result in error. The IDs are case-sensitive.
|
|
1441
|
+
#
|
|
1442
|
+
# **Note:** Since the vehicles can be configured using either a string or an
|
|
1443
|
+
# integer ID, please ensure that the same value type is provided for this field as
|
|
1444
|
+
# was used in the original request.
|
|
1445
|
+
#
|
|
1446
|
+
# @return [String]
|
|
1447
|
+
required :vehicle, String
|
|
1448
|
+
|
|
1449
|
+
# @!attribute delivery
|
|
1450
|
+
# Specify the total quantities, for each dimension (or unit), of deliveries
|
|
1451
|
+
# performed in the route.
|
|
1452
|
+
#
|
|
1453
|
+
# @return [Array<Integer>, nil]
|
|
1454
|
+
optional :delivery, Nextbillionai::Internal::Type::ArrayOf[Integer]
|
|
1455
|
+
|
|
1456
|
+
# @!attribute description
|
|
1457
|
+
# Specify the description of the assigned vehicle.
|
|
1458
|
+
#
|
|
1459
|
+
# @return [String, nil]
|
|
1460
|
+
optional :description, String
|
|
1461
|
+
|
|
1462
|
+
# @!attribute distance
|
|
1463
|
+
# Specify the total distance of the route, in meters.
|
|
1464
|
+
#
|
|
1465
|
+
# @return [Integer, nil]
|
|
1466
|
+
optional :distance, Integer
|
|
1467
|
+
|
|
1468
|
+
# @!attribute duration
|
|
1469
|
+
# Specify the total drive duration of the route, in seconds.
|
|
1470
|
+
#
|
|
1471
|
+
# @return [Integer, nil]
|
|
1472
|
+
optional :duration, Integer
|
|
1473
|
+
|
|
1474
|
+
# @!attribute geometry
|
|
1475
|
+
# Specify the geometry of this route encoded in polyline format.
|
|
1476
|
+
#
|
|
1477
|
+
# @return [String, nil]
|
|
1478
|
+
optional :geometry, String
|
|
1479
|
+
|
|
1480
|
+
# @!attribute pickup
|
|
1481
|
+
# Specify the total quantities, for each dimension (or unit), of pickups performed
|
|
1482
|
+
# in the route.
|
|
1483
|
+
#
|
|
1484
|
+
# @return [Array<Integer>, nil]
|
|
1485
|
+
optional :pickup, Nextbillionai::Internal::Type::ArrayOf[Integer]
|
|
1486
|
+
|
|
1487
|
+
# @!attribute priority
|
|
1488
|
+
# Specify the sum of priorities of all tasks on the route.
|
|
1489
|
+
#
|
|
1490
|
+
# @return [Integer, nil]
|
|
1491
|
+
optional :priority, Integer
|
|
1492
|
+
|
|
1493
|
+
# @!attribute service
|
|
1494
|
+
# Specify the total service time for the route, in seconds.
|
|
1495
|
+
#
|
|
1496
|
+
# @return [Integer, nil]
|
|
1497
|
+
optional :service, Integer
|
|
1498
|
+
|
|
1499
|
+
# @!attribute setup
|
|
1500
|
+
# Specify the total set-up duration, in seconds, needed for the tasks on the
|
|
1501
|
+
# route.
|
|
1502
|
+
#
|
|
1503
|
+
# @return [Integer, nil]
|
|
1504
|
+
optional :setup, Integer
|
|
1505
|
+
|
|
1506
|
+
# @!attribute waiting_time
|
|
1507
|
+
# Specify the total waiting time of the vehicle on the route, in seconds.
|
|
1508
|
+
#
|
|
1509
|
+
# @return [Integer, nil]
|
|
1510
|
+
optional :waiting_time, Integer
|
|
1511
|
+
|
|
1512
|
+
# @!method initialize(cost:, steps:, vehicle:, delivery: nil, description: nil, distance: nil, duration: nil, geometry: nil, pickup: nil, priority: nil, service: nil, setup: nil, waiting_time: nil)
|
|
1513
|
+
# Some parameter documentations has been truncated, see
|
|
1514
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Solution} for more
|
|
1515
|
+
# details.
|
|
1516
|
+
#
|
|
1517
|
+
# @param cost [Integer] Specify the cost of the route.
|
|
1518
|
+
#
|
|
1519
|
+
# @param steps [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step>] Describe the steps in this route.
|
|
1520
|
+
#
|
|
1521
|
+
# @param vehicle [String] Specify the ID of the vehicle that was assigned to the route. This field is mand
|
|
1522
|
+
#
|
|
1523
|
+
# @param delivery [Array<Integer>] Specify the total quantities, for each dimension (or unit), of deliveries perfor
|
|
1524
|
+
#
|
|
1525
|
+
# @param description [String] Specify the description of the assigned vehicle.
|
|
1526
|
+
#
|
|
1527
|
+
# @param distance [Integer] Specify the total distance of the route, in meters.
|
|
1528
|
+
#
|
|
1529
|
+
# @param duration [Integer] Specify the total drive duration of the route, in seconds.
|
|
1530
|
+
#
|
|
1531
|
+
# @param geometry [String] Specify the geometry of this route encoded in polyline format.
|
|
1532
|
+
#
|
|
1533
|
+
# @param pickup [Array<Integer>] Specify the total quantities, for each dimension (or unit), of pickups performed
|
|
1534
|
+
#
|
|
1535
|
+
# @param priority [Integer] Specify the sum of priorities of all tasks on the route.
|
|
1536
|
+
#
|
|
1537
|
+
# @param service [Integer] Specify the total service time for the route, in seconds.
|
|
1538
|
+
#
|
|
1539
|
+
# @param setup [Integer] Specify the total set-up duration, in seconds, needed for the tasks on the route
|
|
1540
|
+
#
|
|
1541
|
+
# @param waiting_time [Integer] Specify the total waiting time of the vehicle on the route, in seconds.
|
|
1542
|
+
|
|
1543
|
+
class Step < Nextbillionai::Internal::Type::BaseModel
|
|
1544
|
+
# @!attribute id
|
|
1545
|
+
# The ID of the step. This field is mandatory for all steps except for start and
|
|
1546
|
+
# end type.
|
|
1547
|
+
#
|
|
1548
|
+
# Please note that the ID provided here must also be present in either the jobs or
|
|
1549
|
+
# the shipments objects.
|
|
1550
|
+
#
|
|
1551
|
+
# **Note:** We have modified the data type of this field. The latest change is
|
|
1552
|
+
# backward compatible and both integer and string type IDs are valid for this
|
|
1553
|
+
# field, as long as they match the IDs of the jobs or shipments already
|
|
1554
|
+
# configured.
|
|
1555
|
+
#
|
|
1556
|
+
# @return [String]
|
|
1557
|
+
required :id, String
|
|
1558
|
+
|
|
1559
|
+
# @!attribute arrival
|
|
1560
|
+
# Specify the time at which the vehicle arrives at the step location. If
|
|
1561
|
+
# time_windows is provided, then arrival will be an UNIX timestamp expressed in
|
|
1562
|
+
# seconds. Otherwise, it will be the total duration, in seconds, elapsed since the
|
|
1563
|
+
# start of the route.
|
|
1564
|
+
#
|
|
1565
|
+
# Please note that arrival is mandatory when using the solution object.
|
|
1566
|
+
#
|
|
1567
|
+
# @return [Integer]
|
|
1568
|
+
required :arrival, Integer
|
|
1569
|
+
|
|
1570
|
+
# @!attribute type
|
|
1571
|
+
# Specify the type of the step.
|
|
1572
|
+
#
|
|
1573
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step::Type]
|
|
1574
|
+
required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Solution::Step::Type }
|
|
1575
|
+
|
|
1576
|
+
# @!attribute description
|
|
1577
|
+
# Specify the description of this step.
|
|
1578
|
+
#
|
|
1579
|
+
# @return [String, nil]
|
|
1580
|
+
optional :description, String
|
|
1581
|
+
|
|
1582
|
+
# @!attribute distance
|
|
1583
|
+
# Specify the distance covered, in meters, from the start of the route up until
|
|
1584
|
+
# the current step.
|
|
1585
|
+
#
|
|
1586
|
+
# Please note that the value of this parameter accumulates with each step. In case
|
|
1587
|
+
# , the travel_cost: air_distance, then the distance here should be the straight
|
|
1588
|
+
# line distance.
|
|
1589
|
+
#
|
|
1590
|
+
# @return [Integer, nil]
|
|
1591
|
+
optional :distance, Integer
|
|
1592
|
+
|
|
1593
|
+
# @!attribute duration
|
|
1594
|
+
# Specify the drive time, in seconds, from the start of the route up until the
|
|
1595
|
+
# start of the step. Please note that the value of this parameter accumulates with
|
|
1596
|
+
# each step.
|
|
1597
|
+
#
|
|
1598
|
+
# @return [Integer, nil]
|
|
1599
|
+
optional :duration, Integer
|
|
1600
|
+
|
|
1601
|
+
# @!attribute load_
|
|
1602
|
+
# Specify the load on the vehicle after completing this step. In case of multiple
|
|
1603
|
+
# dimensions, please specify the load for each type.
|
|
1604
|
+
#
|
|
1605
|
+
# @return [Array<Integer>, nil]
|
|
1606
|
+
optional :load_, Nextbillionai::Internal::Type::ArrayOf[Integer], api_name: :load
|
|
1607
|
+
|
|
1608
|
+
# @!attribute location
|
|
1609
|
+
# Specify the location coordinates of the step in the \[latitude, longitude\]
|
|
1610
|
+
# format. Alternatively, location_index property can also be used to specify the
|
|
1611
|
+
# location of the step.
|
|
1612
|
+
#
|
|
1613
|
+
# Please note that either location or location_index is mandatory.
|
|
1614
|
+
#
|
|
1615
|
+
# @return [Array<Float>, nil]
|
|
1616
|
+
optional :location, Nextbillionai::Internal::Type::ArrayOf[Float]
|
|
1617
|
+
|
|
1618
|
+
# @!attribute location_index
|
|
1619
|
+
# Specify the index (in the location array) of the location coordinates where the
|
|
1620
|
+
# step is performed. The valid range of values is \[0, length of location array).
|
|
1621
|
+
# Alternatively, location property can also be used to specify the location.
|
|
1622
|
+
#
|
|
1623
|
+
# Please note that either location or location_index is mandatory.
|
|
1624
|
+
#
|
|
1625
|
+
# @return [Integer, nil]
|
|
1626
|
+
optional :location_index, Integer
|
|
1627
|
+
|
|
1628
|
+
# @!attribute service
|
|
1629
|
+
# Specify the service time, in seconds, at this step.
|
|
1630
|
+
#
|
|
1631
|
+
# @return [Integer, nil]
|
|
1632
|
+
optional :service, Integer
|
|
1633
|
+
|
|
1634
|
+
# @!attribute setup
|
|
1635
|
+
# Specify the set-up duration, in seconds, needed at the step.
|
|
1636
|
+
#
|
|
1637
|
+
# @return [Integer, nil]
|
|
1638
|
+
optional :setup, Integer
|
|
1639
|
+
|
|
1640
|
+
# @!attribute waiting_time
|
|
1641
|
+
# Specify the wait time of the vehicle at this step, in seconds.
|
|
1642
|
+
#
|
|
1643
|
+
# @return [Integer, nil]
|
|
1644
|
+
optional :waiting_time, Integer
|
|
1645
|
+
|
|
1646
|
+
# @!method initialize(id:, arrival:, type:, description: nil, distance: nil, duration: nil, load_: nil, location: nil, location_index: nil, service: nil, setup: nil, waiting_time: nil)
|
|
1647
|
+
# Some parameter documentations has been truncated, see
|
|
1648
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step} for more
|
|
1649
|
+
# details.
|
|
1650
|
+
#
|
|
1651
|
+
# Describe details about a step of a route
|
|
1652
|
+
#
|
|
1653
|
+
# @param id [String] The ID of the step. This field is mandatory for all steps except for start and e
|
|
1654
|
+
#
|
|
1655
|
+
# @param arrival [Integer] Specify the time at which the vehicle arrives at the step location. If time_wind
|
|
1656
|
+
#
|
|
1657
|
+
# @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step::Type] Specify the type of the step.
|
|
1658
|
+
#
|
|
1659
|
+
# @param description [String] Specify the description of this step.
|
|
1660
|
+
#
|
|
1661
|
+
# @param distance [Integer] Specify the distance covered, in meters, from the start of the route up until th
|
|
1662
|
+
#
|
|
1663
|
+
# @param duration [Integer] Specify the drive time, in seconds, from the start of the route up until the sta
|
|
1664
|
+
#
|
|
1665
|
+
# @param load_ [Array<Integer>] Specify the load on the vehicle after completing this step. In case of multiple
|
|
1666
|
+
#
|
|
1667
|
+
# @param location [Array<Float>] Specify the location coordinates of the step in the \[latitude, longitude\] form
|
|
1668
|
+
#
|
|
1669
|
+
# @param location_index [Integer] Specify the index (in the location array) of the location coordinates where the
|
|
1670
|
+
#
|
|
1671
|
+
# @param service [Integer] Specify the service time, in seconds, at this step.
|
|
1672
|
+
#
|
|
1673
|
+
# @param setup [Integer] Specify the set-up duration, in seconds, needed at the step.
|
|
1674
|
+
#
|
|
1675
|
+
# @param waiting_time [Integer] Specify the wait time of the vehicle at this step, in seconds.
|
|
1676
|
+
|
|
1677
|
+
# Specify the type of the step.
|
|
1678
|
+
#
|
|
1679
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step#type
|
|
1680
|
+
module Type
|
|
1681
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1682
|
+
|
|
1683
|
+
START = :start
|
|
1684
|
+
END_ = :end
|
|
1685
|
+
JOB = :job
|
|
1686
|
+
PICKUP = :pickup
|
|
1687
|
+
DELIVERY = :delivery
|
|
1688
|
+
BREAK = :break
|
|
1689
|
+
|
|
1690
|
+
# @!method self.values
|
|
1691
|
+
# @return [Array<Symbol>]
|
|
1692
|
+
end
|
|
1693
|
+
end
|
|
1694
|
+
end
|
|
1695
|
+
|
|
1696
|
+
class Unassigned < Nextbillionai::Internal::Type::BaseModel
|
|
1697
|
+
# @!attribute jobs
|
|
1698
|
+
# Specify the unassigned job IDs from the previous optimization result. Please
|
|
1699
|
+
# note the IDs should also be present in the jobs part of the input.
|
|
1700
|
+
#
|
|
1701
|
+
# **Note:** We have modified the data type of this field. However, the latest
|
|
1702
|
+
# change is backward compatible and both integer and string type job IDs are valid
|
|
1703
|
+
# for this field, as long as they match the IDs of the jobs already configured.
|
|
1704
|
+
# Providing mixed value types in the array, will lead to an error.
|
|
1705
|
+
#
|
|
1706
|
+
# @return [Array<String>, nil]
|
|
1707
|
+
optional :jobs, Nextbillionai::Internal::Type::ArrayOf[String]
|
|
1708
|
+
|
|
1709
|
+
# @!attribute shipments
|
|
1710
|
+
# Specify the unassigned shipment pickup & delivery IDs from the previous
|
|
1711
|
+
# optimization result. Both the pickup & delivery steps of a shipment should be
|
|
1712
|
+
# part of the same array.
|
|
1713
|
+
#
|
|
1714
|
+
# **Note:** We have modified the data type of this field. However, the latest
|
|
1715
|
+
# change is backward compatible and both integer and string type shipment IDs are
|
|
1716
|
+
# valid for this field, as long as they match the IDs of the shipments already
|
|
1717
|
+
# configured. Providing mixed value types in the array, will lead to an error.
|
|
1718
|
+
#
|
|
1719
|
+
# @return [Array<Array<String>>, nil]
|
|
1720
|
+
optional :shipments,
|
|
1721
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[String]]
|
|
1722
|
+
|
|
1723
|
+
# @!method initialize(jobs: nil, shipments: nil)
|
|
1724
|
+
# Some parameter documentations has been truncated, see
|
|
1725
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned} for more
|
|
1726
|
+
# details.
|
|
1727
|
+
#
|
|
1728
|
+
# unassigned attribute is related to the re-optimization feature. This attribute
|
|
1729
|
+
# should contain the tasks that were not assigned during an earlier optimization
|
|
1730
|
+
# process. Please note that the unassigned part in request should be consistent
|
|
1731
|
+
# with the unassigned part in the previous optimization result.
|
|
1732
|
+
#
|
|
1733
|
+
# Users can reduce the number of unassigned tasks in the re-optimized solution, by
|
|
1734
|
+
# following strategies such as:
|
|
1735
|
+
#
|
|
1736
|
+
# - Extending the time windows for vehicles or tasks to give more flexibility
|
|
1737
|
+
# - Adding more vehicles to the optimization problem
|
|
1738
|
+
# - Adjusting the priority of different tasks to balance the workload more evenly
|
|
1739
|
+
# - Modifying other constraints or parameters to make the problem more solvable
|
|
1740
|
+
#
|
|
1741
|
+
# Ultimately, the goal is to minimize the number of unassigned tasks while still
|
|
1742
|
+
# meeting all the necessary constraints and objectives.
|
|
1743
|
+
#
|
|
1744
|
+
# @param jobs [Array<String>] Specify the unassigned job IDs from the previous optimization result. Please not
|
|
1745
|
+
#
|
|
1746
|
+
# @param shipments [Array<Array<String>>] Specify the unassigned shipment pickup & delivery IDs from the previous optimiza
|
|
1747
|
+
end
|
|
1748
|
+
|
|
1749
|
+
class Zone < Nextbillionai::Internal::Type::BaseModel
|
|
1750
|
+
# @!attribute id
|
|
1751
|
+
# Provide an ID for the zone. This field is mandatory when adding zones.
|
|
1752
|
+
#
|
|
1753
|
+
# @return [Integer]
|
|
1754
|
+
required :id, Integer
|
|
1755
|
+
|
|
1756
|
+
# @!attribute geofence_id
|
|
1757
|
+
# Provide the ID of a pre-created geofence using the
|
|
1758
|
+
# [Geofence API](https://docs.nextbillion.ai/docs/tracking/api/geofence).
|
|
1759
|
+
#
|
|
1760
|
+
# Please note that one of geometry or geofence_id should be provided.
|
|
1761
|
+
#
|
|
1762
|
+
# @return [String, nil]
|
|
1763
|
+
optional :geofence_id, String
|
|
1764
|
+
|
|
1765
|
+
# @!attribute geometry
|
|
1766
|
+
# It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9)
|
|
1767
|
+
# with details of the geographic boundaries of the zone. Only “Polygon” and
|
|
1768
|
+
# “MultiPolygon” geoJSON types are supported.
|
|
1769
|
+
#
|
|
1770
|
+
# Please note that one of geometry or geofence_id should be provided.
|
|
1771
|
+
#
|
|
1772
|
+
# @return [Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry, nil]
|
|
1773
|
+
optional :geometry, -> { Nextbillionai::Optimization::V2SubmitParams::Zone::Geometry }
|
|
1774
|
+
|
|
1775
|
+
# @!method initialize(id:, geofence_id: nil, geometry: nil)
|
|
1776
|
+
# Some parameter documentations has been truncated, see
|
|
1777
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Zone} for more details.
|
|
1778
|
+
#
|
|
1779
|
+
# @param id [Integer] Provide an ID for the zone. This field is mandatory when adding zones.
|
|
1780
|
+
#
|
|
1781
|
+
# @param geofence_id [String] Provide the ID of a pre-created geofence using the [Geofence API](https://docs.n
|
|
1782
|
+
#
|
|
1783
|
+
# @param geometry [Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry] It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9) w
|
|
1784
|
+
|
|
1785
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Zone#geometry
|
|
1786
|
+
class Geometry < Nextbillionai::Internal::Type::BaseModel
|
|
1787
|
+
# @!attribute coordinates
|
|
1788
|
+
# An array of coordinates in the \[longitude, latitude\] format, representing the
|
|
1789
|
+
# zone boundary.
|
|
1790
|
+
#
|
|
1791
|
+
# @return [Array<Array<Float>>, nil]
|
|
1792
|
+
optional :coordinates,
|
|
1793
|
+
Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Float]]
|
|
1794
|
+
|
|
1795
|
+
# @!attribute description
|
|
1796
|
+
# Provide a description to identify the zone
|
|
1797
|
+
#
|
|
1798
|
+
# @return [String, nil]
|
|
1799
|
+
optional :description, String
|
|
1800
|
+
|
|
1801
|
+
# @!attribute type
|
|
1802
|
+
# Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
|
|
1803
|
+
#
|
|
1804
|
+
# @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry::Type, nil]
|
|
1805
|
+
optional :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Zone::Geometry::Type }
|
|
1806
|
+
|
|
1807
|
+
# @!method initialize(coordinates: nil, description: nil, type: nil)
|
|
1808
|
+
# Some parameter documentations has been truncated, see
|
|
1809
|
+
# {Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry} for more
|
|
1810
|
+
# details.
|
|
1811
|
+
#
|
|
1812
|
+
# It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9)
|
|
1813
|
+
# with details of the geographic boundaries of the zone. Only “Polygon” and
|
|
1814
|
+
# “MultiPolygon” geoJSON types are supported.
|
|
1815
|
+
#
|
|
1816
|
+
# Please note that one of geometry or geofence_id should be provided.
|
|
1817
|
+
#
|
|
1818
|
+
# @param coordinates [Array<Array<Float>>] An array of coordinates in the \[longitude, latitude\] format, representing the
|
|
1819
|
+
#
|
|
1820
|
+
# @param description [String] Provide a description to identify the zone
|
|
1821
|
+
#
|
|
1822
|
+
# @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry::Type] Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
|
|
1823
|
+
|
|
1824
|
+
# Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
|
|
1825
|
+
#
|
|
1826
|
+
# @see Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry#type
|
|
1827
|
+
module Type
|
|
1828
|
+
extend Nextbillionai::Internal::Type::Enum
|
|
1829
|
+
|
|
1830
|
+
POLYGON = :Polygon
|
|
1831
|
+
MULTI_POLYGON = :MultiPolygon
|
|
1832
|
+
|
|
1833
|
+
# @!method self.values
|
|
1834
|
+
# @return [Array<Symbol>]
|
|
1835
|
+
end
|
|
1836
|
+
end
|
|
1837
|
+
end
|
|
1838
|
+
end
|
|
1839
|
+
end
|
|
1840
|
+
end
|
|
1841
|
+
end
|