索引
RouteOptimization
(介面)AggregatedMetrics
(訊息)BatchOptimizeToursMetadata
(訊息)BatchOptimizeToursRequest
(訊息)BatchOptimizeToursRequest.AsyncModelConfig
(訊息)BatchOptimizeToursResponse
(訊息)BreakRule
(訊息)BreakRule.BreakRequest
(訊息)BreakRule.FrequencyConstraint
(訊息)DataFormat
(列舉)DistanceLimit
(訊息)GcsDestination
(訊息)GcsSource
(訊息)InjectedSolutionConstraint
(訊息)InjectedSolutionConstraint.ConstraintRelaxation
(訊息)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(訊息)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(列舉)InputConfig
(訊息)Location
(訊息)OptimizeToursRequest
(訊息)OptimizeToursRequest.SearchMode
(列舉)OptimizeToursRequest.SolvingMode
(列舉)OptimizeToursResponse
(訊息)OptimizeToursResponse.Metrics
(訊息)OptimizeToursValidationError
(訊息)OptimizeToursValidationError.FieldReference
(訊息)OutputConfig
(訊息)RouteModifiers
(訊息)Shipment
(訊息)Shipment.Load
(訊息)Shipment.VisitRequest
(訊息)ShipmentModel
(訊息)ShipmentModel.DurationDistanceMatrix
(訊息)ShipmentModel.DurationDistanceMatrix.Row
(訊息)ShipmentModel.PrecedenceRule
(訊息)ShipmentRoute
(訊息)ShipmentRoute.Break
(訊息)ShipmentRoute.EncodedPolyline
(訊息)ShipmentRoute.Transition
(訊息)ShipmentRoute.VehicleLoad
(訊息)ShipmentRoute.Visit
(訊息)ShipmentTypeIncompatibility
(訊息)ShipmentTypeIncompatibility.IncompatibilityMode
(列舉)ShipmentTypeRequirement
(訊息)ShipmentTypeRequirement.RequirementMode
(列舉)SkippedShipment
(訊息)SkippedShipment.Reason
(訊息)SkippedShipment.Reason.Code
(列舉)TimeWindow
(訊息)TransitionAttributes
(訊息)Vehicle
(訊息)Vehicle.DurationLimit
(訊息)Vehicle.LoadLimit
(訊息)Vehicle.LoadLimit.Interval
(訊息)Vehicle.TravelMode
(列舉)Vehicle.UnloadingPolicy
(列舉)Waypoint
(訊息)
RouteOptimization
用於改善車輛導覽的服務。
特定類型的欄位有效性:
google.protobuf.Timestamp
- 時間以 Unix 時間表示:自 1970-01-01T00:00:00+00:00 起算的秒數。
- 秒必須是 [0, 253402300799],例如 [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]。
- nanos 必須設為未設定或設為 0。
google.protobuf.Duration
- 秒必須是 [0, 253402300799],例如 [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]。
- nanos 必須設為未設定或設為 0。
google.type.LatLng
- 緯度必須介於 [-90.0, 90.0] 之間。
- 經度必須是 [-180.0, 180.0]。
- 至少其中一個緯度和經度必須不是零。
BatchOptimizeTours |
---|
針對一或多個 這個方法屬於長時間執行的作業 (LRO)。系統會以使用者指定的格式,讀取/寫入/寫出 Cloud Storage 中的最佳化輸入內容 ( 使用者可以輪詢 如果 LRO 的 如果 LRO 的
|
OptimizeTours |
---|
傳送包含
目標是將
|
AggregatedMetrics
ShipmentRoute
(針對所有 Transition
和/或 Visit
(針對所有 ShipmentRoute
元素) 的 OptimizeToursResponse
匯總指標。
欄位 | |
---|---|
performed_shipment_count |
執行的出貨數量。請注意,自取和外送服務組合只會計算一次。 |
travel_duration |
路線或解決方案的總交通時間。 |
wait_duration |
路線或解決方案的總等待時間長度。 |
delay_duration |
路線或解決方案的總延遲時間。 |
break_duration |
路線或解決方案的總中斷時長。 |
visit_duration |
路線或解決方案的總造訪時間長度。 |
total_duration |
總時間長度應該等於上述所有時間長度的總和。針對路徑,這個符號也對應下列項目:
|
travel_distance_meters |
路線或解決方案的總移動距離。 |
max_loads |
整條路線 (回應解決方案) 上達到的最大負載量,是這個路線 (回應解決方案) 上每個數量的負載上限,計算依據為所有 |
BatchOptimizeToursMetadata
這個類型沒有任何欄位。
BatchOptimizeToursRequest
呼叫的作業中繼資料。
BatchOptimizeToursRequest
要求以非同步作業的方式批次最佳化導覽。每個輸入檔案都應包含一個 OptimizeToursRequest
,而每個輸出檔案都會包含一個 OptimizeToursResponse
。這項要求包含讀取/寫入及剖析檔案的資訊。所有輸入和輸出檔案都必須位於同一個專案中。
欄位 | |
---|---|
parent |
必要欄位。指定專案和位置即可撥打電話。 格式:* 如未指定位置,系統會自動選擇區域。 |
model_configs[] |
必要欄位。每個購買模型的輸入/輸出資訊,例如檔案路徑和資料格式。 |
AsyncModelConfig
以非同步方式解決一個最佳化模型的資訊。
欄位 | |
---|---|
display_name |
選用設定。使用者定義的模型名稱;使用者可以透過這個名稱當做別名,持續追蹤模型。 |
input_config |
必要欄位。輸入模型的相關資訊。 |
output_config |
必要欄位。所需的輸出位置資訊。 |
BatchOptimizeToursResponse
這個類型沒有任何欄位。
對 BatchOptimizeToursRequest
的回應。作業完成後,這個訂閱項目會在「長期執行的作業」中傳回。
BreakRule
產生車輛休息時間 (例如午休時間) 的規則。休息是指車輛在目前位置保持閒置狀態的連續期間,無法進行任何巡訪。下列情形可能會發生中斷:
- 在兩次造訪之間的轉換時間 (包括造訪前或造訪後的時間,但不包括造訪期間),在這種情況下,系統會延長造訪之間的對應轉換時間,
- 或是車輛啟動時 (車輛不得在休息中發動),在這種情況下,並不會影響車輛開始時間。
- 或在車輛結束 (坐下與車輛結束時間) 後。
欄位 | |
---|---|
break_requests[] |
廣告插播序列。請參閱 |
frequency_constraints[] |
可能會套用多個 |
BreakRequest
您必須事先得知每輛車的休息順序 (即數量和順序)。重複的 BreakRequest
會定義該序列的出現順序。客戶的時間範圍 (earliest_start_time
/ latest_start_time
) 可能會重疊,但必須與訂單相容 (已勾選)。
欄位 | |
---|---|
earliest_start_time |
必要欄位。廣告插播開始時的下限 (含)。 |
latest_start_time |
必要欄位。廣告插播開始時的限制上限 (含)。 |
min_duration |
必要欄位。插播時間長度下限。必須為正數。 |
FrequencyConstraint
其中一種做法是強制執行最小的廣告插播頻率 (例如「每 12 小時至少要有 1 小時」),限制上述廣告插播的頻率和時間長度。假設這個值可解讀為「在 12 小時的任何滑動時間範圍內,至少要有一個廣告插播時段至少一小時」,則範例會轉譯為下列 FrequencyConstraint
:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
除了 BreakRequest
中已指定的時間區間和最短時間長度外,解決方案中的插播時間和插播時間長度都會遵循所有這類限制。
FrequencyConstraint
可能在練習時適用於不連續的休息時間。舉例來說,下列排程會套用「每 12 小時 1 小時」範例:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
欄位 | |
---|---|
min_break_duration |
必要欄位。這項限制的最短廣告插播長度。正數。請參閱 |
max_inter_break_duration |
必要欄位。路線中任何時間間隔的上限,至少不包含部分 |
DataFormat
輸入和輸出檔案的資料格式。
列舉 | |
---|---|
DATA_FORMAT_UNSPECIFIED |
值無效,格式不得為 UNSPECIFIED。 |
JSON |
JavaScript 物件標記法。 |
PROTO_TEXT |
通訊協定緩衝區文字格式。請參閱 https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
用於定義可行駛距離上限。挑戰可以是困難或輕微。
如果已定義軟性限制,則必須定義 soft_max_meters
和 cost_per_kilometer_above_soft_max
,且不得為負數。
欄位 | |
---|---|
max_meters |
硬性限制,限制距離不得超過 max_meters。限制值不得為負數。 |
soft_max_meters |
軟性限制不會強制執行最大距離限制,但如果違反限制,則會產生費用,並與模型中定義的其他費用相加,單位相同。 定義的 soft_max_meters 必須小於 max_meters,且不得為負數。 |
cost_per_kilometer_below_soft_max |
每公里產生的費用,最高可達
|
cost_per_kilometer_above_soft_max |
如果距離超過
費用必須為正數。 |
GcsDestination
要寫入輸出檔案的 Google Cloud Storage 位置。
欄位 | |
---|---|
uri |
必要欄位。Google Cloud Storage URI。 |
GcsSource
要讀取輸入檔案的 Google Cloud Storage 位置。
欄位 | |
---|---|
uri |
必要欄位。Google Cloud Storage 物件的 URI,格式為 |
InjectedSolutionConstraint
已在請求中插入的解決方案,包括哪些造訪設有限制以及限制方式。
欄位 | |
---|---|
routes[] |
插入解決方案的路徑。原始解決方案可能會省略部分路線。路線和略過運送作業必須符合 |
skipped_shipments[] |
略過解決方案的出貨作業。原始解決方案可能省略部分程式碼。請參閱 |
constraint_relaxations[] |
針對零或多個車輛群組,指定放寬限制條件的時機和程度。如果這個欄位空白,所有非空白的車輛路線都會完全受到限制。 |
ConstraintRelaxation
針對一組車輛,指定特定門檻限制的行駛限制和指示等級。skipped_shipment
欄位中列出的運送作業會遭到略過,也就是無法執行。
欄位 | |
---|---|
relaxations[] |
所有造訪限制放寬項目,會套用至 |
vehicle_indices[] |
指定要套用造訪限制 如果 |
休閒場所
如果 relaxations
空白,則 routes
上所有造訪的開始時間和序列都會完全受到限制,這些路線也無法插入或新增造訪記錄。此外,routes
中的車輛開始和結束時間也相當受限,除非車輛是空的 (也就是沒有行駛方向,且模型中的 used_if_route_is_empty
設為 false)。
relaxations(i).level
會指定套用至滿足 #j 的造訪限制放寬等級:
route.visits(j).start_time >= relaxations(i).threshold_time
和j + 1 >= relaxations(i).threshold_visit_count
同樣地,如果符合下列條件,車輛起點會放寬至 relaxations(i).level
:
vehicle_start_time >= relaxations(i).threshold_time
和- 如果滿足以下條件,
relaxations(i).threshold_visit_count == 0
和車輛終點會由relaxations(i).level
放寬: vehicle_end_time >= relaxations(i).threshold_time
和route.visits_size() + 1 >= relaxations(i).threshold_visit_count
如要在造訪符合 threshold_visit_count
時套用放寬層級,或是 threshold_time
新增兩個具有相同 level
的 relaxations
:一個只設定 threshold_visit_count
,另一個只設定 threshold_time
。如果一次造訪符合多個 relaxations
的條件,系統會套用最放鬆的層級。因此,從車輛開始行駛到行經路線,到車輛結束,放鬆等級就會變得更加放鬆:也就是說,隨著路線的進展,放鬆等級不會下降。
如果路線造訪的時間和順序不符合任何 relaxations
的門檻條件,就會完全受到限制,沒有任何造訪記錄。此外,如果車輛開始或結束不符合任何放鬆條件,則系統會固定進行該時間,除非車輛無內容。
欄位 | |
---|---|
level |
限制條件的放寬層級:適用於 |
threshold_time |
可套用 |
threshold_visit_count |
可以套用放寬 如果為 |
層級
表示不同的造訪限制放寬等級,適用於造訪,以及符合門檻條件時會遵循的限制層級。
下列列舉的順序是依放鬆程度排序。
列舉 | |
---|---|
LEVEL_UNSPECIFIED |
隱含預設的放寬等級:沒有限制,也就是說所有造訪都完全受限。 這個值不得在 |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
系統會放寬造訪開始時間和車輛開始/結束時間,但每個造訪仍會綁定至同一輛車輛,且必須遵循造訪順序:在兩次造訪之間或之前,不得插入其他造訪。 |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
與 RELAX_VISIT_TIMES_AFTER_THRESHOLD 相同,但訪問順序也較為寬鬆:訪問只能由此車輛執行,但可能不會執行。 |
RELAX_ALL_AFTER_THRESHOLD |
與 RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD 相同,但車輛也已放寬:在門檻時間點或之後,訪客可完全免費,且可能不會執行。 |
InputConfig
指定 [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] 的輸入內容。
欄位 | |
---|---|
data_format |
必要欄位。輸入的資料格式。 |
聯集欄位 source 。必要欄位。source 只能是下列其中一項: |
|
gcs_source |
Google Cloud Storage 位置。必須是單一物件 (檔案)。 |
位置
包含位置 (地理位置和選用標題)。
欄位 | |
---|---|
lat_lng |
路線控點的地理座標。 |
heading |
與車流方向相關聯的指南針方向。這個值是用於指定道路的邊,供上車和下車地點使用。標題值可以介於 0 到 360 之間,其中 0 指定代表往北的方向、90 指定往東的方向等。 |
OptimizeToursRequest
提出要求至導覽最佳化解題工具,該解析器會定義要解決的運送模型和最佳化參數。
欄位 | |
---|---|
parent |
必要欄位。指定專案或位置即可撥打電話。 格式:* 如未指定位置,系統會自動選擇區域。 |
timeout |
如果設定了逾時,伺服器會在逾時期限或同步要求的伺服器期限已過 (以較早者為準) 之前傳回回應。 如果是非同步要求,伺服器會在逾時屆滿前 (如有) 產生解決方案。 |
model |
要解決的運送模型。 |
solving_mode |
根據預設,解析模式為 |
search_mode |
用於解決要求的搜尋模式。 |
injected_first_solution_routes[] |
引導最佳化演算法,找出與先前解決方案相似的第一個解決方案。 建構第一個解決方案時,模型會受到限制。任何未依路徑執行的貨物運送,都會在第一個解決方案中默示略過,但也可能會在連續的解決方案中執行。 解決方案必須滿足一些基本的有效性假設:
如果插入的解決方案不可行,則不一定會傳回驗證錯誤,系統可能會改為傳回不可行的錯誤。 |
injected_solution_constraint |
限制最佳化演算法,找出類似先前的解決方案的最終解決方案。例如,此標記可用於凍結已完成或完成但不能修改的路徑部分。 如果插入的解決方案不可行,則不一定會傳回驗證錯誤,系統可能會改為傳回不可行的錯誤。 |
refresh_details_routes[] |
如果留空,系統就會重新整理指定路線,而不會修改行程的基礎造訪順序或交通時間:系統只會更新其他詳細資訊。這麼做無法解決模型問題, 截至 2020 年 11 月,這個方法只會填入非空路線的多邊形,且需要 傳入路徑的 這個欄位不得與
|
interpret_injected_solutions_using_labels |
如果是 true:
這項解讀方式適用於 如為 true,下列類別中的標籤最多只能出現一次:
如果插入的解決方案中的 從插入解決方案中移除路徑造訪或整條路線,可能會影響隱含的限制,進而影響解決方案、驗證錯誤或無法運作。 注意:呼叫端必須確保每個 |
consider_road_traffic |
計算 |
populate_polylines |
如果為 true,回應 |
populate_transition_polylines |
如果為 true,則會在回應 |
allow_large_deadline_despite_interruption_risk |
如果設定了這個項目,該要求的期限 (請參閱 https://grpc.io/blog/deadlines) 最多可以有 60 分鐘。否則,最長期限為 30 分鐘。請注意,長時間的要求具有極大 (但仍然很小) 的干擾風險。 |
use_geodesic_distances |
如果設為 true,系統會使用測地線距離 (而非 Google 地圖距離) 計算移動距離,並使用 |
label |
可能會用來識別這項要求的標籤,並回報於 |
geodesic_meters_per_second |
如果 |
max_validation_errors |
截斷傳回的驗證錯誤數量。這些錯誤通常會以 BadRequest 錯誤詳細資料的形式附加至 INVALID_src 錯誤酬載 (https://cloud.google.com/apis/design/errors#error_details),除非 Resolve_mode=VALIDATE_ONLY:請參閱 |
SearchMode
定義搜尋行為的模式,進行延遲與解決方案品質抵銷。在所有模式中,全域要求期限都是強制執行的。
列舉 | |
---|---|
SEARCH_MODE_UNSPECIFIED |
未指定的搜尋模式,相當於 RETURN_FAST 。 |
RETURN_FAST |
找到第一個可行解決方案後,請停止搜尋。 |
CONSUME_ALL_AVAILABLE_TIME |
善用所有可用時間,尋求更有效的解決方案。 |
SolvingMode
定義解題工具應如何處理要求。在 VALIDATE_ONLY
以外的所有模式中,如果要求無效,您會收到 INVALID_REQUEST
錯誤。如需限制傳回的錯誤數量,請參閱 max_validation_errors
。
列舉 | |
---|---|
DEFAULT_SOLVE |
解開模型。如要發出警告,請前往 [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]。 |
VALIDATE_ONLY |
只驗證模型,但不解決模型:盡可能填入 OptimizeToursResponse.validation_errors 。 |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
只填入 重要事項:部分無法出貨的貨物只會退回到這裡,但只會退回在預先處理期間偵測到無法交貨的商品。 |
OptimizeToursResponse
解決導覽最佳化問題後,系統會回應,其中包含每輛車的路線、遭略過的貨物,以及解決方案的總費用。
欄位 | |
---|---|
routes[] |
為每輛車輛計算的路線;第 i 條路線對應至模型中的第 i 輛車輛。 |
request_label |
如果要求中已指定標籤,則 |
skipped_shipments[] |
略過所有出貨的清單。 |
validation_errors[] |
列出可獨立偵測的所有驗證錯誤。查看「多個錯誤」 |
metrics |
這項解決方案的持續時間、距離和用量指標。 |
指標
所有路徑的匯總整體指標。
欄位 | |
---|---|
aggregated_route_metrics |
按照路徑匯總。每個指標都是名稱所有 |
skipped_mandatory_shipment_count |
略過的強制貨件數量。 |
used_vehicle_count |
使用的車輛數量。注意:如果車輛路徑為空白,且 |
earliest_vehicle_start_time |
二手車的最早開始時間,計算依據為 |
latest_vehicle_end_time |
二手車的最新結束時間,計算方式為 |
costs |
解決方案的費用,按費用相關要求欄位細分。這些鍵是 proto 路徑,相對於輸入的 OptimizeToursRequest,例如:「model.shipments.pickups.cost」和「模型」的值則為對應費用欄位產生的總費用,並匯總為整個解決方案。換句話說,成本 ["model.shipments.pickups.cost"] 是解決方案中所有取貨費用的總和。這裡詳細列出模型中定義的所有費用,但 TransitionAttributes 的相關費用除外。這些費用只以 2022 年 1 月的匯總方式呈現。 |
total_cost |
解決方案的總費用。費用對應中所有值的總和。 |
OptimizeToursValidationError
說明驗證 OptimizeToursRequest
時出現的錯誤或警告。
欄位 | |
---|---|
code |
驗證錯誤是由一律存在的組合 ( 其他欄位 (請見下方) 提供更多與錯誤相關的資訊。 MULTIPLE ERRORS:如果發生多項錯誤,驗證程序會嘗試輸出其中幾項。與編譯器類似,這個程序不完美。部分驗證錯誤屬於「嚴重」錯誤,也就是說,這類錯誤會停止整個驗證程序。以上就是 STability: REFERENCE:所有 (代碼、名稱) 組合的清單:
|
display_name |
錯誤顯示名稱。 |
fields[] |
錯誤內容可能包含 0、1 (大多數時間) 或多個欄位。舉例來說,如要參照車輛 #4 和貨件 #2 的首次取件,可以執行以下操作:
不過請注意,特定錯誤代碼不會變更 |
error_message |
使用者容易理解的錯誤說明字串。 STABILITY:不穩定:與指定 |
offending_values |
可能包含欄位的值。您不一定每次都能使用這個代碼。因此,建議您不要仰賴此演算法,並僅用於手動模型偵錯。 |
欄位參照
指定驗證錯誤的內容。FieldReference
一律會參照此檔案中的特定欄位,並遵循相同的階層結構。舉例來說,您可以透過以下程式碼,指定車輛 #5 的 start_time_windows
元素 #2:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
但我們會省略頂層實體 (例如 OptimizeToursRequest
或 ShipmentModel
),避免訊息聚集。
欄位 | |
---|---|
name |
欄位名稱,例如「車輛」。 |
sub_field |
視需要以遞迴方式建立子欄位。 |
聯集欄位
|
|
index |
欄位的索引 (如果重複)。 |
key |
如果欄位是對應,則傳回 鍵。 |
OutputConfig
指定 [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] 結果的目的地。
欄位 | |
---|---|
data_format |
必要欄位。輸出資料格式。 |
聯集欄位 destination 。必要欄位。destination 只能是下列其中一項: |
|
gcs_destination |
要寫入輸出內容的 Google Cloud Storage 位置。 |
RouteModifiers
封裝計算車輛路線時要滿足的一組選用條件。這與 Google 地圖平台 Routes Preferred API 中的 RouteModifiers
類似。請參閱:https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers。
欄位 | |
---|---|
avoid_tolls |
指定是否要在合理情況下避開收費道路。系統會優先遵循不含收費路段的路線。僅適用於機動交通方式。 |
avoid_highways |
指定是否在合理情況下避開高速公路。針對不含高速公路的路線,我們會優先處理。僅適用於機動交通方式。 |
avoid_ferries |
指定是否要在合理情況下避開渡輪。針對不含渡輪的行經路線,系統會優先採用。僅適用於機動交通方式。 |
avoid_indoor |
選用設定。指定是否要避免在合理範圍內導航。系統會優先採用不含室內導航的路線。僅適用於 |
運送地址
單一商品的運送作業,從其中一個提貨地點到其中一個送達地點。每輛車都必須前往其中一個上車地點 (並視情況調降空間) 至貨運地點,才能順利將貨物視為出貨。
欄位 | |
---|---|
display_name |
使用者定義的運送顯示名稱。長度上限為 63 個半形字元,可以使用 UTF-8 字元。 |
pickups[] |
與出貨相關的取貨替代選項組合。如未指定,車輛只需造訪與配送項目對應的地點。 |
deliveries[] |
與出貨相關的提交替代方案。如未指定,車輛只需造訪與上車地點對應的地點。 |
load_demands |
貨物負載 (例如重量、體積、棧板數量等)。圖中的鍵應為用來說明對應負載類型的 ID,最好也包含單位。例如:「weight_kg」、「volume_gallons」、「pallet_count」等。如果指定鍵未顯示在地圖上,則相應的載入項目會視為空值。 |
allowed_vehicle_indices[] |
可能提供這項運送作業的車輛組合。如果留空,所有車輛都可以執行這項作業。車輛會以 |
costs_per_vehicle[] |
指定每輛車出貨時的運費。指定的變數必須包含 EITHER:
這些費用的單位必須與「 |
costs_per_vehicle_indices[] |
|
pickup_to_delivery_absolute_detour_limit |
指定相較於從上車地點到送達地點的最短路徑,最多可繞行的絕對時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。 舉例來說,如果從選定的取貨替代服務直接改為配送至所選配送方式,最早需要多久時間才能處理完畢。接著設定
如果同一運送屬性同時指定了相對和絕對限制,則每個取貨/外送組合使用的限制越多。截至 2017 年 10 月 10 日為止,只有交通時間不需乘車時,系統才會支援繞道時間。 |
pickup_to_delivery_time_limit |
指定從開始取貨到出貨到貨之間的最長時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。這不會影響取貨方式,取決於你選擇的取貨和外送替代地點,以及車輛速度。您可以與最大繞道限制一起指定這項設定:解決方案將遵循兩種規格。 |
shipment_type |
指定「類型」的非空白字串。這項功能可用於定義 與單次造訪指定的 |
label |
指定此貨品的標籤。這個標籤會在對應 |
ignore |
如果為 true,請略過此出貨作業,但不套用 如果模型中沒有任何 我們允許忽略在 |
penalty_cost |
如果貨運未完成,則罰金會計入路線總額。如果消費者造訪指定的取件和外送替代品,系統會將出貨視為已完成。費用可用與模型中所有其他費用相關欄位相同的單位表示,且必須為正數。 重要事項:如未指明這項處分,將視為無限期,也就是必須完成出貨。 |
pickup_to_delivery_relative_detour_limit |
指定從自取到貨品送達的最短路徑出發時間的最長相對繞路時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。 舉例來說,如果從選定的取貨替代服務直接改為配送至所選配送方式,最早需要多久時間才能處理完畢。接著設定
如果同一運送屬性同時指定了相對和絕對限制,則每個取貨/外送組合使用的限制越多。截至 2017 年 10 月 10 日為止,只有交通時間不需乘車時,系統才會支援繞道時間。 |
載入
進行訪問時,如果是接送,系統可能會在車輛負載中加上預先定義的金額;如果是送貨,則會從車輛負載中扣除該金額。此訊息定義了這類金額。詳情請參閱《load_demands
》。
欄位 | |
---|---|
amount |
執行相應造訪記錄的車輛負載量有所不同。由於為整數,建議使用者選擇適當的單位,以免喪失精確度。必須大於 0。 |
VisitRequest
可透過車輛完成的訪問要求:包含一個或兩個地理位置 (請參閱下方說明)、以時間窗口表示的開始和結束時間,以及服務時間長度 (車輛抵達取貨或送貨地點所需的時間)。
欄位 | |
---|---|
arrival_location |
執行這個 |
arrival_waypoint |
執行這個 |
departure_location |
完成這個 |
departure_waypoint |
完成這個 |
tags[] |
指定造訪要求中附加的標記。字串不得留空或重複。 |
time_windows[] |
限製造訪時的抵達時間的時間範圍。請注意,車輛可能會於抵達時間之外出發,也就是說,抵達時間 + 所需時間不一定要在時間範圍之內。如果車輛在 缺少 時段不得不連貫,也就是說,時間範圍不得與其他時段重疊或相鄰,而且必須依遞增順序排列。 只有單一時段才能設定 |
duration |
造訪所需時間,例如車輛抵達和離開之間經過的時間 (可計入可能的等待時間;請參閱 |
cost |
在車輛路線上處理這項拜訪要求的費用。這可以用來針對每次取貨或配送的替代品項支付不同的費用。這個費用的單位必須與「 |
load_demands |
這項造訪要求的載入要求。這與 |
visit_types[] |
指定造訪的類型,這可分配車輛完成這項造訪所需的時間 (請參閱 一個類型只能出現一次。 |
label |
指定這個「 |
ShipmentModel
運送模型包含一組必須由一組車輛行駛的貨運,並盡可能降低整體成本,亦即以下各項的總和:
- 車輛路線的費用 (所有車輛的總時間費用、每趟行程費用和固定費用總和)。
- 導致貨物延遲情形
- 運送作業的全球持續時間成本
欄位 | |
---|---|
shipments[] |
必須在模型中執行的一組貨運組合。 |
vehicles[] |
可用來進行造訪的車輛組合。 |
global_start_time |
模型的全球開始時間和結束時間:超出範圍的時間一律視為有效。 模型的時間範圍必須少於一年,即 使用 |
global_end_time |
如未設定,1971 年 1 月 1 日世界標準時間 00:00:00 (也就是秒數:31536000,nanos: 0) 會做為預設值。 |
global_duration_cost_per_hour |
「全球時間長度」是指所有車輛最早生效開始時間與最晚有效結束時間之間的差距。使用者可以為該數量指派每小時成本,以便盡早完成工作。這個費用的單位必須與 |
duration_distance_matrices[] |
指定模型中使用的持續時間和距離矩陣。如果這個欄位空白,系統會根據 使用範例:
|
duration_distance_matrix_src_tags[] |
定義時間長度和距離矩陣來源的標記; 標記會對應至 |
duration_distance_matrix_dst_tags[] |
定義時間長度和距離矩陣目的地的標記; 標記會對應至 |
transition_attributes[] |
已新增至模型的轉場屬性。 |
shipment_type_incompatibilities[] |
不相容的 shipping_types 組合 (請參閱 |
shipment_type_requirements[] |
一組 |
precedence_rules[] |
模型中必須強制執行的優先順序規則集。 |
max_active_vehicles |
限制可運作的車輛數量上限。如果路線至少執行一次貨運,表示車輛正在行駛中。當車隊少於車輛,且車隊屬於異質時,這項功能可用來限制路線數量。最佳化功能會選擇最適合使用的車輛組合。必須是正數。 |
DurationDistanceMatrix
指定從造訪、車輛開始地點和車輛終點位置之間的持續時間和距離矩陣。
欄位 | |
---|---|
rows[] |
指定時間長度和距離矩陣的資料列。必須包含與 |
vehicle_start_tag |
定義這個持續時間和距離矩陣適用的車輛的標記。如果為空白,表示適用於所有車輛,且只能有一個矩陣。 每輛車起點都必須與一個矩陣相符,也就是說,只有其中一個 所有矩陣都必須有不同的 |
列
指定時間長度和距離矩陣的資料列。
欄位 | |
---|---|
durations[] |
指定資料列的持續時間值。必須包含與 |
meters[] |
特定資料列的距離值。如果沒有費用或限制是指模型中的距離,則可留空;否則,其元素數量必須與 |
PrecedenceRule
兩個事件之間的優先順序規則 (每個事件均為取貨或貨件交付):「第二個」事件的開始日期至少要在「第一個」後 offset_duration
已開始。
不過,有些優先順序可代表相同 (或相關) 事件,例如:「B 送貨後取貨」和「C 從 取件 B 發生」的情況
此外,只有在兩項運送作業都發生時,優先順序才會套用,其他作業則遭到忽略。
欄位 | |
---|---|
first_is_delivery |
表示是否為「第一個」就是一項外送服務 |
second_is_delivery |
表示是否為「秒」就是一項外送服務 |
offset_duration |
「第一個」值之間的偏移和「second」活動。可以是負值。 |
first_index |
「第一個」的運送索引活動。必須指定此欄位。 |
second_index |
「第二」的運送索引活動。必須指定此欄位。 |
ShipmentRoute
車輛的路線可以沿著即時軸解,如下所示 (假設有 n 次造訪):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
請注意,我們會變更以下兩個選項:
- 「準時事件」,例如車輛的開始和結束時間,以及每次拜訪的開始和結束時間 (即到達和離開)。這些事件都發生在一秒內。
- 「時間間隔」,例如造訪本身和造訪之間的轉換。雖然時段的間隔時間可以為零,也就是兩者的開始和結束時間相同,但持續時間通常為正值。
不變量:
- 如果有 n 次造訪,就表示有 n+1 次轉場。
- 造訪一律會在轉換之前 (相同索引) 和之後的轉場 (索引 + 1) 周圍環繞。
- 車輛起點後面一律加上轉場 #0。
- 車輛結束時,一律會先執行轉場 #n。
放大,以下是 Transition
和 Visit
期間會發生的情況:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
最後,以下是旅客在過渡期間安排旅遊行程、休息時間、誤點和等待時間的方法。
- 不會重疊。
- 延遲是獨一無二的,且必須在下次造訪或車輛終點之前持續一段時間。因此,只要知道延遲時間長度,就能瞭解其開始和結束時間。
- 中斷期間是連續、不重疊的時間。回應會指定每個廣告插播的開始時間和持續時間。
- TRAVEL 和 WAIT 是「可搶先」的狀態:在這個轉換期間,可以多次中斷這兩種狀態。客戶可以假設旅遊行程「盡快」然後就會填滿剩餘時間。
以下示例:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
欄位 | |
---|---|
vehicle_index |
執行路線的車輛,由來源 |
vehicle_label |
執行這條路線的車輛標籤,等於 |
vehicle_start_time |
車輛開始行駛的時間。 |
vehicle_end_time |
車輛完成路線的時間。 |
visits[] |
代表路線的已排序造訪序列。Visit [i] 是路線中的第 i 次造訪。如果這個欄位空白,系統會將車輛視為未使用。 |
transitions[] |
路線的轉換已排序清單。 |
has_traffic_infeasibilities |
如果將
因為路況的關係,預估的交通時間增加 |
route_polyline |
路線的編碼折線表示法。只有在 |
breaks[] |
這條路線的車輛預定休息時間。 |
metrics |
這條路線的時長、距離和載入指標。系統會根據結構定義,為所有 |
route_costs |
路線費用,按照費用相關要求欄位細分。這些鍵是 proto 路徑,相對於輸入的 OptimizeToursRequest,例如:「model.shipments.pickups.cost」和「模型」的值則為相對應費用欄位產生的總費用,並匯總在整條路線上。換句話說,成本 ["model.shipments.pickups.cost"] 是路線上所有取貨費用的總和。這裡詳細列出模型中定義的所有費用,但 TransitionAttributes 的相關費用除外。這些費用只以 2022 年 1 月的匯總方式呈現。 |
route_total_cost |
路線的總費用。費用對應中所有費用的總和。 |
休息時間
代表廣告插播執行的資料。
欄位 | |
---|---|
start_time |
休息的開始時間。 |
duration |
休息時間長度。 |
EncodedPolyline
折線的編碼表示法。如要進一步瞭解多邊形編碼,請參閱以下網頁:https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding。
欄位 | |
---|---|
points |
代表折線已編碼點的字串。 |
轉移
路線上的兩個事件之間轉換。請參閱 ShipmentRoute
的說明。
如果車輛沒有 start_location
和/或 end_location
,則相應的旅遊指標為 0。
欄位 | |
---|---|
travel_duration |
轉換期間的交通時間。 |
travel_distance_meters |
在過渡期間移動的距離。 |
traffic_info_unavailable |
如果透過 |
delay_duration |
套用至這個轉換作業的延遲時間長度總和。如有這種情況,延遲時間剛好是發生下一個事件 (造訪或車輛結束) 的 |
break_duration |
本次移轉期間的廣告插播時間長度總和 (如果有的話)。每個休息時間的開始時間和時間長度詳細資料會儲存在 |
wait_duration |
轉換期間的等待時間。等待時間長度對應至閒置時間,且不包含休息時間。另請注意,這個等待時間可能會分成幾個不連續的間隔。 |
total_duration |
轉換總時間 (為了方便起見)。等於:
|
start_time |
這項轉換作業的開始時間。 |
route_polyline |
轉換期間路徑的編碼折線表示法。只有在 |
vehicle_loads |
在此轉場期間,車輛會載入該車輛 第一個轉場期間的載入是車輛路線的起始載入。接著,視該次造訪是自取或外送,每次造訪後,都會將造訪的 |
VehicleLoad
回報特定類型在路線沿途某個點的實際負載 (請參閱 Transition.vehicle_loads
)。
欄位 | |
---|---|
amount |
特定車輛類型的負載量。載入單位通常以類型表示。詳情請參閱《 |
前往
在路線中執行的造訪。本次造訪對應的是取貨或送貨 Shipment
。
欄位 | |
---|---|
shipment_index |
來源 |
is_pickup |
如果造訪為 true,則造訪對應至 |
visit_request_index |
|
start_time |
造訪開始的時間。請注意,車輛可能會在造訪地點之前抵達。時間與 |
load_demands |
總造訪載入需求是出貨總和與造訪要求 |
detour |
由於商家抵達前路線上的貨物運送,且所需時間會因此導致的可能等待時間,因此需要額外的往返時間。如果是外送服務,則系統會根據對應的上車地點計算行程,並等於:
否則,它是從車輛
|
shipment_label |
對應的 |
visit_label |
對應的 |
ShipmentTypeIncompatibility
根據 shipping_type,指定運送項目間的不相容問題。系統會依據不相容模式,限制同一條路線上不相容的運送方式。
欄位 | |
---|---|
types[] |
不相容類型的清單。兩件出貨各有不同的 |
incompatibility_mode |
模式套用至不相容。 |
IncompatibilityMode
定義同一條路線上不相容貨運外觀的限制方式。
列舉 | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
未指定相容模式。請一律不要使用這個值。 |
NOT_PERFORMED_BY_SAME_VEHICLE |
在此模式下,如果兩件不相容的運送類型不相容,就無法同一輛車共用。 |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
針對兩種不相容的類型隨附
|
ShipmentTypeRequirement
根據運送類型指定運送資訊的規定。需求的具體內容則由需求模式定義。
欄位 | |
---|---|
required_shipment_type_alternatives[] |
|
dependent_shipment_types[] |
凡是 注意:系統不允許要求鏈結,例如 |
requirement_mode |
為需求套用的模式。 |
RequirementMode
定義路線上依附運送的顯示方式。
列舉 | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
未指定需求模式。請一律不要使用這個值。 |
PERFORMED_BY_SAME_VEHICLE |
在這個模式下,所有「相依」貨運項目必須至少與一項「必要」同一輛車共用出貨。 |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
使用 因此,「依附」貨件取件必須具備下列其中一種條件:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
與以往相同,但「相依」運送項目必須具備「必填」屬性商品在交貨時出貨。 |
SkippedShipment
指定解決方案中未執行出貨作業的詳細資料。對於簡單的情況和/或我們能夠找出跳過的原因,我們會在此處回報原因。
欄位 | |
---|---|
index |
這個索引對應到來源 |
label |
對應的 |
reasons[] |
說明略過出貨的原因。請參閱 |
原因
如果我們可以說明略過出貨的原因,即可在此處列出原因。如果所有車輛的原因都不相同,則 reason
會有 1 個以上的元素。略過出貨的程序不得重複,亦即除了 example_vehicle_index
以外,所有欄位皆相同。範例:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
略過的貨件與所有車輛皆不相容。以每輛車來說,原因可能都不同,但至少一部車的「蘋果」會超出 1 輛車 (含第 1 輛車),但至少要有一輛車的「梨子」將超出上限 (包括車輛 3),且至少將超出一輛車的距離限制 (包括車輛 1)。
欄位 | |
---|---|
code |
請參閱程式碼的註解。 |
example_exceeded_capacity_type |
如果原因代碼為 |
example_vehicle_index |
如果原因與出貨車輛不相容有關,這個欄位會提供相關車輛的索引。 |
程式碼
指出原因類型的代碼。這裡的順序沒有任何意義。特別是,如果兩者都適用,它不會指出在解決方案中,某個原因會出現在另一個原因之前。
列舉 | |
---|---|
CODE_UNSPECIFIED |
請勿使用此值。 |
NO_VEHICLE |
這個模特兒沒有車輛導致所有商品無法運送。 |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
運送需求超過車輛對某些容量類型的上限,例如 example_exceeded_capacity_type 。 |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
執行這項出貨作業所需的最短距離,亦即從車輛的 請注意,我們進行這項運算時會使用測地距離。 |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
執行這項送貨作業所需的最短時間,包括交通時間、等待時間和服務時間超過車輛的 注意:系統會以最佳情況計算行程時間,也就是以測地線距離 x 36 公尺/秒 (約 130 公里/小時) 計算。 |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
與上述相同,但我們只會比較最短行程時間和車輛的 travel_duration_limit 。 |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
如果車輛在最早的開始時間開始,就無法執行這項運送作業 (請參閱 CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT 瞭解時間計算):讓車輛在最快結束時間後結束的總時間。 |
VEHICLE_NOT_ALLOWED |
貨運的 allowed_vehicle_indices 欄位不是空的,且該車輛不屬於此車輛。 |
TimeWindow
時間範圍會限制事件的時間,例如造訪時的抵達時間,或是車輛的開始和結束時間。
硬時間範圍邊界 (start_time
和 end_time
) 會強制執行事件的最早和最晚時間,例如 start_time <= event_time <=
end_time
。電子時間範圍下限 soft_start_time
表示在 soft_start_time
當天或之後發生事件的偏好,其費用會與 soft_start_time 事件發生前的時間長度按比例計算。電子時間範圍上限 soft_end_time
表示在 soft_end_time
當天或之前發生事件的偏好,其費用與 soft_end_time
事件發生之後的時間長度成正比。start_time
、end_time
、soft_start_time
和 soft_end_time
應在全球時間限制內 (請參閱 ShipmentModel.global_start_time
和 ShipmentModel.global_end_time
),並應遵守下列規定:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
欄位 | |
---|---|
start_time |
硬性時間範圍開始時間。如果未指定,則會設為 |
end_time |
硬性時間範圍的結束時間。如果未指定,則會設為 |
soft_start_time |
時間範圍的正規開始時間。 |
soft_end_time |
時間範圍的軟性結束時間。 |
cost_per_hour_before_soft_start_time |
如果事件發生在 soft_start_time 之前,會增加模型中其他費用的每小時費用,計算方式如下:
這個費用必須為正值,且只有在已設定 soft_start_time 時才能設定這個欄位。 |
cost_per_hour_after_soft_end_time |
如果事件發生在
這個成本必須為正值,且只有在設定 |
TransitionAttributes
指定路線上兩次連續造訪之間的轉換屬性。同一個轉換可能會套用多個 TransitionAttributes
:在這種情況下,所有額外費用會相加,並套用最嚴格的限制或上限 (遵循自然的「AND」語義)。
欄位 | |
---|---|
src_tag |
定義這些屬性適用的 (src->dst) 轉場組合。 如果 |
excluded_src_tag |
詳情請參閱 |
dst_tag |
如果目的地或車輛的 |
excluded_dst_tag |
詳情請參閱 |
cost |
指定執行這項轉換作業的費用。這與模型中的所有其他費用相同,不得為負數。此額度適用於所有其他現有費用。 |
cost_per_kilometer |
指定執行這個轉場時,每公里的移動距離。加總在車輛上指定的 |
distance_limit |
指定執行這次轉換時的移動距離上限。 自 2021 年 6 月起,系統僅支援非強制性限制。 |
delay |
指定執行這項轉換時的延遲時間。 這類延遲是指在完成來源造訪「之後」,以及開始目的地造訪「之前」。 |
車輛
模擬運送問題中的車輛。解決運送問題時,系統會建立從 start_location
開始到 end_location
這輛車的路線。路線是指造訪記錄的序列 (請參閱 ShipmentRoute
)。
欄位 | |
---|---|
display_name |
使用者定義的車輛顯示名稱。長度上限為 63 個半形字元,可以使用 UTF-8 字元。 |
travel_mode |
交通方式會影響車輛可使用的道路和速度。另請參閱 |
route_modifiers |
一組滿足的條件,這些條件會影響系統計算指定車輛的路線。 |
start_location |
車輛開始載運貨物的地理位置。如未指定,車輛會在第一次上車時開始。如果運送模型包含時間長度和距離矩陣,則不得指定 |
start_waypoint |
路線點代表車輛在接受任何貨物前開始的地理位置。如果未指定 |
end_location |
車輛在最後一次完成 |
end_waypoint |
路線點代表車輛在最後一次完成 |
start_tags[] |
指定車輛路線起點所附加的標記。 字串不得留空或重複。 |
end_tags[] |
指定車輛路線終點的標記。 不得使用空字串或重複的字串。 |
start_time_windows[] |
車輛可能駛離起點的時間範圍。必須在全球時間限制內 (請參閱 屬於相同重複欄位的時間範圍必須不重疊,也就是說,任何時間範圍都不能與其他時間範圍重疊或相鄰,且必須按時間順序排列。 只有單一時段才能設定 |
end_time_windows[] |
車輛可能抵達終點的時間範圍。必須在全球時間限制內 (請參閱 屬於相同重複欄位的時間範圍必須不重疊,也就是說,任何時間範圍都不能與其他時間範圍重疊或相鄰,且必須按時間順序排列。 只有單一時段才能設定 |
unloading_policy |
已對車輛強制執行卸載政策。 |
load_limits |
車輛容量 (例如重量、體積、棧板數量)。對應中的鍵是載入類型的 ID,與 |
cost_per_hour |
車輛費用:所有費用都會加總,且必須與 車輛路線的每小時費用。這筆費用適用於該路線總共花費的時間,而且包含交通時間、等待時間和造訪時間。使用 |
cost_per_traveled_hour |
車輛路線的每行駛時數。這筆費用僅適用於該路線 (也就是在 |
cost_per_kilometer |
車輛路線的每公里費用。這筆費用適用於 |
fixed_cost |
使用此車輛處理貨物時須支付的固定費用。 |
used_if_route_is_empty |
這個欄位僅適用於車輛路線不提供任何貨運時。用於說明車輛是否應視為「二手」或在這個案例中否。 如果設為 true,即使車輛不提供任何貨物,車輛也會從起點移動到終點 --> 否則,它不會從起點行駛至終點,且這輛車沒有 |
route_duration_limit |
這個限制適用於車輛路線的總行車時間。在特定 |
travel_duration_limit |
這個限制適用於車輛路線的交通時間。在指定的 |
route_distance_limit |
限制適用於車輛路線的總距離。在指定的 |
extra_visit_duration_for_visit_type |
指定 Visit_types 字串到 times 的對應。時間長度除了 如果造訪要求包含多個類型,地圖中會為每個類型加入持續時間。 |
break_rule |
說明這輛車要強制執行的休息時間表。如果為空白,則不會為這輛車輛安排休息時間。 |
label |
指定這輛車的標籤。在回覆中會回報這個標籤為對應 |
ignore |
如果設為 true, 如果 如果貨物在 |
travel_duration_multiple |
指定可用於增加或減少此車輛行駛時間的乘數。舉例來說,如果將這個項目設定為 2.0,就代表這輛車的行駛速度較慢,而且交通時間是一般車輛的兩倍。(多次不會影響造訪時間長度)。如果指定 警告:套用這個數倍數後,交通時間會四捨五入至最接近的秒數,但在執行任何數值運算之前,整數值可能會導致精確度降低。 另請參閱下方的 |
DurationLimit
用於定義車輛路線最長行駛時間的限制。可以是硬式或軟式。
定義軟性上限欄位後,必須同時定義非強制性上限及相關費用。
欄位 | |
---|---|
max_duration |
硬性限制會將時間長度限制在 max_duration 內。 |
soft_max_duration |
非強制執行時間限制並未強制執行時間長度上限,而違反時路徑會產生費用。這筆費用會與模型中定義的其他費用相加,且單位相同。 如果已定義, |
quadratic_soft_max_duration |
軟性限制不會強制執行最大時間長度限制,但如果違反限制,路線就會產生費用,且費用會隨著時間呈現平方關係。這筆費用會與模型中定義的其他費用相加,且單位相同。 如果已定義,
|
cost_per_hour_after_soft_max |
違反
費用必須為非負值。 |
cost_per_square_hour_after_quadratic_soft_max |
違反 如果時間長度低於門檻,則額外費用為 0,否則費用取決於持續時間,方法如下:
費用必須為正數。 |
LoadLimit
定義套用至車輛的負載限制,例如「這輛卡車只能承載 3500 公斤」。詳情請參閱《load_limits
》。
欄位 | |
---|---|
soft_max_load |
負載的軟性限制。詳情請參閱《 |
cost_per_unit_above_soft_max |
如果車輛沿途的負載量超過 |
start_load_interval |
路線起點的可接受的負載間隔。 |
end_load_interval |
車輛在路線結束時可接受的載客量間隔。 |
max_load |
可接受的負載量上限。 |
時間間隔
可接受的負載量的時間間隔。
欄位 | |
---|---|
min |
|
max |
|
TravelMode
車輛可使用的交通方式。
這些應為 Google 地圖平台路線偏好 API 的部分交通模式,請參閱:https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode。
列舉 | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
未指定交通方式,相當於 DRIVING 。 |
DRIVING |
與行車路線 (汽車,...) 對應的交通模式。 |
WALKING |
與步行路線對應的交通模式。 |
UnloadingPolicy
車輛卸貨方式的政策。僅適用於提供自取和外送的出貨商品。
其他商品在路線上的任何地點皆可自由運送,與 unloading_policy
無關。
列舉 | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
未指定卸載政策;配送服務只能安排在相應的上車地點後完成。 |
LAST_IN_FIRST_OUT |
貨品必須按取貨順序反向排序 |
FIRST_IN_FIRST_OUT |
運送作業必須按照取貨順序進行 |
途經點
封裝路線控點。路線控點會標示 VisitRequests 的抵達和出發地點,以及車輛的起點和終點。
欄位 | |
---|---|
side_of_road |
選用設定。表示這個路線控點的位置是用來指定車輛在特定側面停靠的位置。設定這個值後,路線就會通過位置,這樣車輛就能在路側停靠,該位置是從道路中心偏離位置。這個選項不適用於「WALKING」交通方式。 |
聯集欄位 location_type 。以不同方式表示地點。location_type 只能是下列其中一項: |
|
location |
使用地理座標指定的點,包括選擇性的方向。 |
place_id |
與路線控點相關聯的搜尋點地點 ID。 |