- JSON 表示法
- 出貨
- VisitRequest
- LatLng
- Waypoint
- Location
- TimeWindow
- 車輛
- TravelMode
- RouteModifiers
- VehicleInfo
- TrailerInfo
- HazardousGoodsType
- UnloadingPolicy
- LoadLimit
- 間隔
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- 列
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
運送模型包含一組必須由一組車輛行駛的貨運,並盡可能降低整體成本,亦即以下各項的總和:
- 車輛路線的費用 (所有車輛的總交通時間、平均交通時間、固定費用)。
- 未完成出貨的處罰。
- 運送作業的全球持續時間成本
| JSON 表示法 |
|---|
{ "shipments": [ { object ( |
| 欄位 | |
|---|---|
shipments[] |
模型中必須執行的運送作業集合。 |
vehicles[] |
可用來進行造訪的車輛組合。 |
globalStartTime |
模型的全球開始時間和結束時間:超出範圍的時間一律視為有效。 模型的時間跨度不得超過一年,也就是 使用 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如 |
globalEndTime |
如未設定,1971 年 1 月 1 日世界標準時間 00:00:00 (也就是秒數:31536000,nanos: 0) 會做為預設值。 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。範例: |
globalDurationCostPerHour |
整體企劃書的「全球持續時間」,是指所有車輛最早生效開始時間與最晚有效結束時間之間的差距。使用者可以為該數量指派每小時成本,以便盡早完成工作。這個費用的單位必須與 |
durationDistanceMatrices[] |
指定模型中使用的時間和距離矩陣。如果這個欄位空白,系統會根據 使用範例:
|
durationDistanceMatrixSrcTags[] |
定義時間長度和距離矩陣的來源的標記; 標記會對應至 |
durationDistanceMatrixDstTags[] |
定義時間長度和距離矩陣目的地的標記; 標記會對應至 |
transitionAttributes[] |
新增至模型的轉場屬性。 |
shipmentTypeIncompatibilities[] |
不相容的 shipping_types 組合 (請參閱 |
shipmentTypeRequirements[] |
一組 |
precedenceRules[] |
必須在模型中強制執行的優先順序規則組合。 |
maxActiveVehicles |
限制有效車輛數量上限。如果車輛的路線至少執行一筆運送作業,就會視為處於運作狀態。當車隊少於車輛,且車隊屬於異質時,這項功能可用來限制路線數量。最佳化功能會選擇最適合使用的車輛組合。必須為正值。 |
運送地址
單一商品的運送作業,從其中一個提貨地點到其中一個送達地點。每輛車都必須前往其中一個上車地點 (並視情況調降空間) 至貨運地點,才能順利將貨物視為出貨。
| JSON 表示法 |
|---|
{ "displayName": string, "pickups": [ { object ( |
| 欄位 | |
|---|---|
displayName |
使用者定義的運送顯示名稱。長度上限為 63 個半形字元,可以使用 UTF-8 字元。 |
pickups[] |
與出貨相關的取貨替代選項組合。如未指定,車輛只需造訪與配送項目對應的地點。 |
deliveries[] |
與出貨相關的提交替代方案。如果未指定,車輛只需前往與乘客上車地點相對應的位置即可。 |
loadDemands |
貨物負載 (例如重量、體積、棧板數量等)。地圖中的鍵應為識別碼,用於描述對應負載的類型,最好也包含單位。例如:"weight_kg"、"volume_gallons"、"pallet_count" 等。如果指定的鍵未顯示在對應的載入中,系統會將該載入視為空值。 這個物件中包含 |
allowedVehicleIndices[] |
可能執行這項運送作業的車輛組合。如果留空,則所有車輛都可能執行該動作。車輛會以 |
costsPerVehicle[] |
指定透過每輛車輛運送這項貨物時產生的費用。如果已指定,則必須具備下列其中一種條件:
這些費用的單位必須與「 |
costsPerVehicleIndices[] |
適用 |
pickupToDeliveryAbsoluteDetourLimit |
指定相較於從上車地點到送達地點的最短路徑,最多可繞行的絕對時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。 舉例來說,假設 t 是從所選取的取貨替代方案直接前往所選取的送貨替代方案所需的最短時間。接著設定 如果在同一筆訂單上同時指定相對和絕對限制,系統會針對每個可能的取件/送達組合使用較嚴格的限制。截至 2017 年 10 月 10 日為止,只有交通時間不需乘車時,系統才會支援繞道時間。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
pickupToDeliveryTimeLimit |
指定從開始取貨到出貨到貨之間的最長時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。這不會影響取貨方式,或選擇取貨和送貨的替代地點,以及車輛速度。您可以與最大繞道限制一起指定這項設定:解決方案將遵循這兩種規格。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
shipmentType |
非空白字串,指定此出貨的「類型」。這項功能可用於定義 與單次造訪指定的 |
label |
指定此運送單的標籤。這個標籤會在對應 |
ignore |
如果為 true,請略過此出貨作業,但不套用 如果模型中沒有任何 Google 允許忽略在 |
penaltyCost |
如果貨運未完成,則罰則會計入路線總金額。如果消費者造訪了自行選擇的上車地點和替代貨品,系統就會將包裹視為完成運送。費用可用與模型中所有其他費用相關欄位相同的單位表示,且必須為正數。 重要事項:如果未指定這項處罰,系統會視為無限期,也就是必須完成出貨。 |
pickupToDeliveryRelativeDetourLimit |
指定從上車地點到貨品送達的最短路徑,最長的相對繞路時間。若有指定,其必須為非負數,且運送必須包含至少一項取貨和送貨服務。 舉例來說,如果從選定的取貨替代服務直接改為配送至所選配送方式,最早需要多久時間才能處理完畢。接著設定 如果同一運送屬性同時指定了相對和絕對限制,則每個取貨/外送組合使用的限制越多。截至 2017 年 10 月 10 日為止,只有交通時間不需乘車時,系統才會支援繞道時間。 |
VisitRequest
可透過車輛完成的訪問要求:包含一個或兩個地理位置 (請參閱下方說明)、以時間窗口表示的開始和結束時間,以及服務時間長度 (車輛抵達取貨或送貨地點所需的時間)。
| JSON 表示法 |
|---|
{ "arrivalLocation": { object ( |
| 欄位 | |
|---|---|
arrivalLocation |
車輛執行此 |
arrivalWaypoint |
執行這個 |
departureLocation |
車輛完成這項 |
departureWaypoint |
完成這個 |
tags[] |
指定造訪要求中附加的標記。不得使用空字串或重複的字串。 |
timeWindows[] |
限制造訪到達時間的時間區間。請注意,車輛可能會於抵達時間之外出發,也就是說,抵達時間 + 所需時間不一定要在時間範圍之內。如果車輛在 如果沒有 時間區間必須不重疊,也就是說,每個時間區間都不得與其他時間區間重疊或相鄰,且必須依遞增順序排列。 只有單一時段才能設定 |
duration |
行程時間,也就是車輛從抵達到離開之間的時間 (會加入可能的等候時間;請參閱 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
cost |
針對車輛路線提出造訪要求的費用。你可以使用這項功能,為每項貨物的替代取貨或配送服務支付不同的費用。這個成本必須與 |
loadDemands |
載入此造訪要求的需求。這與 這個物件中包含 |
visitTypes[] |
指定造訪類型。這可分配車輛完成這項造訪所需的時間 (請參閱 一個類型只能出現一次。 |
label |
指定這個 |
LatLng
代表經緯度組合的物件。以一對雙精準數表示經度度數和緯度度數。除非另有指定,否則這個物件必須符合 WGS84 標準。此外,值必須在正規化範圍內。
| JSON 表示法 |
|---|
{ "latitude": number, "longitude": number } |
| 欄位 | |
|---|---|
latitude |
緯度度數,必須介於 [-90.0, +90.0] 的範圍之間。 |
longitude |
經度度數,必須介於 [-180.0, +180.0] 的範圍之間。 |
途經點
封裝路線點。路線控點會標示 VisitRequests 的抵達和出發地點,以及車輛的起點和終點。
| JSON 表示法 |
|---|
{ "sideOfRoad": boolean, // Union field |
| 欄位 | |
|---|---|
sideOfRoad |
選用設定。表示這個路線控點的位置,是為了讓車輛偏好停靠在道路的特定側邊。設定這個值後,路線就會通過位置,這樣車輛就能在路側停靠,該位置是從道路中心偏離位置。這個選項不適用於「WALKING」交通方式。 |
聯集欄位 location_type。以不同方式表示地點。location_type 只能是下列其中一項: |
|
location |
使用地理座標指定的點,包括選用的標頭。 |
placeId |
與路線控點相關聯的搜尋點地點 ID。 |
位置
封裝位置 (地理點和選用的標題)。
| JSON 表示法 |
|---|
{
"latLng": {
object ( |
| 欄位 | |
|---|---|
latLng |
航點的地理座標。 |
heading |
與流量方向相關的指南針方位。這個值用於指定接送和下車地點的道路兩側。方向值的範圍為 0 到 360,其中 0 指定正北方向,90 指定正東方向,以此類推。 |
TimeWindow
時間窗可限制事件的時間,例如造訪的抵達時間,或車輛的開始和結束時間。
硬時間範圍邊界 (startTime 和 endTime) 會強制執行事件的最早和最晚時間,例如 startTime <= event_time <=
endTime。軟性時間回溯期的下限 softStartTime 表示事件發生時機應在 softStartTime 當天或之後,發生時間與事件發生前軟性開始時間的時間間隔成正比。電子時間範圍上限 softEndTime 表示在 softEndTime 當天或之前發生事件的偏好,其費用與 softEndTime 事件發生後的時間長度成正比。startTime、endTime、softStartTime 和 softEndTime 應在全球時間限制內 (請參閱 ShipmentModel.global_start_time 和 ShipmentModel.global_end_time),並應遵守下列規定:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
| JSON 表示法 |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| 欄位 | |
|---|---|
startTime |
硬性時段開始時間。如果未指定,則會設為 RFC3339 世界標準時間「Zulu」格式的時間戳記,解析度以奈秒為單位,小數點後最多 9 位。例如 |
endTime |
硬性時間範圍的結束時間。如果未指定,則會設為 RFC3339 世界標準時間「Zulu」格式的時間戳記,解析度以奈秒為單位,小數點後最多 9 位。範例: |
softStartTime |
時間範圍的正規開始時間。 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如 |
softEndTime |
時間範圍的軟性結束時間。 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。範例: |
costPerHourBeforeSoftStartTime |
如果事件發生在 softStartTime 前,模型中其他費用的每小時費用,計算方式如下: 這個成本必須為正值,且只有在已設定 softStartTime 時才能設定這個欄位。 |
costPerHourAfterSoftEndTime |
如果事件發生在 費用必須為正數,且只有在已設定 |
車輛
模擬出貨問題中的車輛。解決運送問題時,系統會建立從 startLocation開始到 endLocation 這輛車的路線。路線是一系列造訪記錄 (請參閱 ShipmentRoute)。
| JSON 表示法 |
|---|
{ "displayName": string, "travelMode": enum ( |
| 欄位 | |
|---|---|
displayName |
使用者定義的車輛顯示名稱。長度上限為 63 個半形字元,可以使用 UTF-8 字元。 |
travelMode |
行駛模式會影響車輛可行駛的道路和速度。另請參閱 |
routeModifiers |
一組滿足的條件,這些條件會影響系統計算指定車輛的路線。 |
startLocation |
車輛開始載運貨物的地理位置。如未指定,車輛會在第一個上車地點開始行駛。如果運送模型含有時間和距離矩陣,請勿指定 |
startWaypoint |
路線點代表車輛在接受任何貨物前開始的地理位置。如果未指定 |
endLocation |
車輛完成最後一次 |
endWaypoint |
路標代表車輛完成最後一次 |
startTags[] |
指定附加至車輛路線起點的標記。 字串不得留空或重複。 |
endTags[] |
指定車輛路線終點的標記。 不得使用空字串或重複的字串。 |
startTimeWindows[] |
車輛可能駛離起點的時間範圍。必須在全球時間限制內 (請參閱 屬於相同重複欄位的時間範圍必須不重疊,也就是說,任何時間範圍都不能與其他時間範圍重疊或相鄰,且必須按時間順序排列。 只有單一時段才能設定 |
endTimeWindows[] |
車輛抵達目的地所需的時間範圍。必須在全球時間限制內 (請參閱 屬於相同重複欄位的時間範圍必須不重疊,也就是說,任何時間範圍都不能與其他時間範圍重疊或相鄰,且必須按時間順序排列。 只有在單一時間範圍內,才能設定 |
unloadingPolicy |
已對車輛強制執行卸載政策。 |
loadLimits |
車輛容量 (例如重量、體積、棧板數量)。地圖中的鍵是負載類型的 ID,與 這個物件中包含 |
costPerHour |
車輛費用:所有費用加總,且必須與 車輛路線的每小時費用。這筆費用會套用到路線的總時間,包括行程時間、等候時間和拜訪時間。使用 |
costPerTraveledHour |
車輛路線的每小時行駛費用。這項費用只會套用在路線的行程時間 (即 |
costPerKilometer |
車輛行駛路線的每公里費用。這筆費用會套用至 |
fixedCost |
如果這輛車輛用於處理出貨作業,就會收取這筆固定費用。 |
usedIfRouteIsEmpty |
這個欄位僅適用於車輛路線不提供任何貨運時。指出在這種情況下,車輛是否應視為二手車。 如果為 true,即使車輛沒有運送任何貨物,也會從起點前往終點,且會考量從起點到終點的時間和距離成本。 否則,它不會從起點行駛至終點,且這輛車沒有 |
routeDurationLimit |
這個限制適用於車輛路線的總行車時間。在指定的 |
travelDurationLimit |
這個限制適用於車輛路線的交通時間。在指定的 |
routeDistanceLimit |
限制適用於車輛路線的總距離。在指定的 |
extraVisitDurationForVisitType |
指定從 visitTypes 字串到時間長度的對應項目。時間長度除了 如果造訪要求包含多個類型,地圖中會為每個類型加入持續時間。 這個物件中包含 |
breakRule |
說明這輛車要強制執行的休息時間表。如果留空,這輛車就不會安排休息時間。 |
label |
指定此車輛的標籤。這個標籤會在回應中以對應 |
ignore |
如果設為 true, 如果在 如果運送作業是由 |
travelDurationMultiple |
指定乘數,可用來增加或減少這輛車的交通時間。舉例來說,如果將此值設為 2.0,表示這輛車輛的速度較慢,且行駛時間是標準車輛的兩倍。(多次不會影響造訪時間長度)。但如果指定 警告:套用這個數倍數後,交通時間會四捨五入至最接近的秒數,但在執行任何數值運算之前,整數值可能會導致精確度降低。 另請參閱下方的 |
TravelMode
車輛可使用的行駛模式。
這些應為 Google 地圖平台路線偏好 API 的部分交通模式,請參閱:https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode。
| 列舉 | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
未指定的交通方式,等同於 DRIVING。 |
DRIVING |
與駕駛路線相對應的交通模式 (汽車、...)。 |
WALKING |
步行路線對應的交通方式。 |
TRUCK |
搭乘卡車。這個模式會受到實體和法律限制。 |
RouteModifiers
封裝一組可選條件,用於計算車輛路線時必須滿足的條件。這與 Google 地圖平台路線偏好 API 中的 RouteModifiers 類似,請參閱:https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers。
| JSON 表示法 |
|---|
{
"vehicleInfo": {
object ( |
| 欄位 | |
|---|---|
vehicleInfo |
指定車輛資訊。 |
VehicleInfo
封裝車輛資訊,例如卡車資訊。
| JSON 表示法 |
|---|
{ "totalAxleCount": integer, "totalHeightMm": string, "totalLengthMm": string, "totalWidthMm": string, "totalWeightKg": string, "trailerInfo": [ { object ( |
| 欄位 | |
|---|---|
totalAxleCount |
軸的總數。必須大於或等於 2。必須設為貨車或拖車才能觸發。僅適用於 |
totalHeightMm |
車輛高度,包括任何連接拖車的高度。必須設為貨車或拖車才能觸發。僅適用於 |
totalLengthMm |
車輛長度,包括任何隨附拖車的長度。必須設為貨車或拖車才能觸發。僅適用於 |
totalWidthMm |
車輛的寬度,包括任何連接拖車的寬度。必須設為貨車或拖車才能觸發。僅適用於 |
totalWeightKg |
車輛重量,包括任何連接拖車的重量。在此背景中的體重是指實際體重,而非體重評分。必須設為貨車或拖車才能觸發。僅適用於 |
trailerInfo[] |
僅適用於 |
hazardousGoodsTypes[] |
車輛中運輸的有害物質清單 (如有)。 |
TrailerInfo
與車輛連接的個別拖車相關資訊。貨運車輛需提供長度較長的拖車長度。總屬性必須涵蓋所有拖車的屬性。例如,totalHeightMm 必須大於或等於 trailerInfo.height_mm。
| JSON 表示法 |
|---|
{ "lengthMm": string } |
| 欄位 | |
|---|---|
lengthMm |
預告片的長度。 |
HazardousGoodsType
各種有害物質的類型。
| 列舉 | |
|---|---|
HAZARDOUS_GOODS_TYPE_UNSPECIFIED |
未指定危險商品類型。 |
EXPLOSIVES |
爆裂物。 |
GASES |
氣體。 |
FLAMMABLE |
易燃商品。 |
COMBUSTIBLE |
易燃商品。 |
ORGANIC |
有機產品。 |
POISON |
有毒商品。 |
RADIOACTIVE |
放射性商品。 |
CORROSIVE |
腐蝕性商品。 |
ASPIRATION_HAZARD |
吸入危險物品。 |
ENVIRONMENTAL_HAZARD |
環境有害物品。 |
OTHER |
其他類型的商品。 |
UnloadingPolicy
車輛卸貨方式的政策。僅適用於提供自取和外送的出貨商品。
其他商品在路線上的任何地點皆可自由運送,與 unloadingPolicy 無關。
| 列舉 | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
未指定卸貨政策;必須在相應的接送後才會進行。 |
LAST_IN_FIRST_OUT |
必須以相反的順序進行配送 |
FIRST_IN_FIRST_OUT |
運送作業必須按照取貨順序進行 |
LoadLimit
定義套用至車輛的負載限制,例如「這輛卡車只能承載 3500 公斤」。詳情請參閱《loadLimits》。
| JSON 表示法 |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| 欄位 | |
|---|---|
softMaxLoad |
負載的軟性限制。詳情請參閱《 |
costPerUnitAboveSoftMax |
如果載重量超過這輛車輛路線的 |
startLoadInterval |
車輛在路線起點的允許載客量間隔。 |
endLoadInterval |
路線終點的車輛可接受的負載間隔。 |
maxLoad |
可接受的最大負載量。 |
時間間隔
可接受的負載量間隔。
| JSON 表示法 |
|---|
{ "min": string, "max": string } |
| 欄位 | |
|---|---|
min |
|
max |
可接受的最大負載。必須大於或等於 0。如果未指定,則此訊息不會限制載入量上限。如果同時指定兩者, |
DurationLimit
定義車輛路線的時間上限。挑戰可以是困難或輕微。
定義軟性上限欄位時,必須一併定義軟性上限門檻及其相關費用。
| JSON 表示法 |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| 欄位 | |
|---|---|
maxDuration |
硬性限制將持續時間限制在 maxDuration 內。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
softMaxDuration |
軟性限制不會強制執行時間長度上限,但違反規定時會導致路線產生費用。這項費用會與模型中定義的其他費用相加,並使用相同的單位。 如果已定義, 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
quadraticSoftMaxDuration |
非強制執行的持續時間上限並未強制執行時間上限,但如果違反,路徑會在這段時間內產生二次費用。這項費用會與模型中定義的其他費用相加,並使用相同的單位。 如果已定義,
時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
costPerHourAfterSoftMax |
違反 費用必須為正數。 |
costPerSquareHourAfterQuadraticSoftMax |
違反 如果時間長度低於門檻,則額外費用為 0,否則費用取決於持續時間,方法如下: 費用必須為正數。 |
DistanceLimit
用於定義可行駛距離上限。挑戰可以是困難或輕微。
如果定義軟性限制,必須定義 softMaxMeters 和 costPerKilometerAboveSoftMax,且不得為負數。
| JSON 表示法 |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
| 欄位 | |
|---|---|
maxMeters |
硬性限制,限制距離不得超過 maxMeters。限制值不得為負數。 |
softMaxMeters |
非強制規定的距離上限並未強制執行,不過一旦違反,成本就會加起來,等於模型中定義的其他費用,且單位相同。 如果定義的 softMaxMeters 必須小於 maxMeters,且不得為負數。 |
costPerKilometerAboveSoftMax |
如果距離超過 費用必須為非負值。 |
BreakRule
產生車輛休息時間 (例如午休時間) 的規則。休息時間是指車輛在目前位置處於閒置狀態,無法執行任何拜訪的連續時間。下列情形可能會發生中斷:
- 在兩次造訪之間的轉換時間 (包括造訪前或造訪後的時間,但不包括造訪期間),在這種情況下,系統會延長造訪之間的對應轉換時間,
- 或是車輛啟動時 (車輛不得在休息中發動),在這種情況下,並不會影響車輛開始時間。
- 或是車輛結束 (坐下與車輛結束時間) 後。
| JSON 表示法 |
|---|
{ "breakRequests": [ { object ( |
| 欄位 | |
|---|---|
breakRequests[] |
廣告插播序列。請參閱 |
frequencyConstraints[] |
但可能有幾個 |
BreakRequest
您必須事先得知每輛車的休息順序 (即數量和順序)。重複的 BreakRequest 會定義該序列的出現順序。客戶的時間範圍 (earliestStartTime / latestStartTime) 可能會重疊,但必須與訂單相容 (已勾選)。
| JSON 表示法 |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| 欄位 | |
|---|---|
earliestStartTime |
必要欄位。廣告插播開始時的下限 (含)。 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如 |
latestStartTime |
必要欄位。廣告插播開始時的限制上限 (含)。 RFC3339 世界標準時間「Zulu」格式的時間戳記,解析度以奈秒為單位,小數點後最多 9 位。範例: |
minDuration |
必要欄位。廣告插播的時間長度下限。必須為正數。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
FrequencyConstraint
您可以進一步限制上述指定的插播廣告頻率和時間長度,例如強制設下最小插播廣告頻率,例如「每 12 小時至少要插播 1 次廣告」。假設這個值可解讀為「在 12 小時的任何滑動時間範圍內,至少要有一個廣告插播時段至少一小時」,則範例會轉譯為下列 FrequencyConstraint:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
| JSON 表示法 |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| 欄位 | |
|---|---|
minBreakDuration |
必要欄位。此限制的插播時間長度下限。非負值。請參閱 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
maxInterBreakDuration |
必要欄位。路徑中不含 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
DurationDistanceMatrix
指定從造訪和車輛起點到造訪和車輛終點的時間和距離矩陣。
| JSON 表示法 |
|---|
{
"rows": [
{
object ( |
| 欄位 | |
|---|---|
rows[] |
指定時間長度和距離矩陣的資料列。必須包含與 |
vehicleStartTag |
定義這個持續時間和距離矩陣適用的車輛的標記。如果留空,則會套用至所有車輛,且只能有單一矩陣。 每個車輛啟動都必須與單一矩陣相符,也就是說,其中的 所有矩陣都必須有不同的 |
列
指定時間長度和距離矩陣的資料列。
| JSON 表示法 |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| 欄位 | |
|---|---|
durations[] |
指定資料列的持續時間值。必須與 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
meters[] |
特定資料列的距離值。如果沒有任何費用或限制是指模型中的距離,則可留空,否則包含的元素數量必須與 |
TransitionAttributes
指定路徑上兩次連續造訪之間的轉換屬性。同一個轉換可能會套用多個 TransitionAttributes:在這種情況下,所有額外費用會相加,並套用最嚴格的限制或上限 (遵循自然的「AND」語義)。
| JSON 表示法 |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| 欄位 | |
|---|---|
srcTag |
定義一組 (src->dst) 轉場效果的標記,會套用至這些屬性。 來源造訪或車輛啟動活動的 |
excludedSrcTag |
請參閱 |
dstTag |
只有在 |
excludedDstTag |
詳情請參閱 |
cost |
指定執行此轉換作業的費用。這與模型中的所有其他費用相同,不得為負數。這筆費用會加上所有現有費用。 |
costPerKilometer |
指定在執行此轉場時,所採計的每公里成本。加總在車輛上指定的 |
distanceLimit |
指定執行這次轉換時的移動距離上限。 自 2021 年 6 月起,我們只支援軟性限制。 |
delay |
指定執行這項轉換時的延遲時間。 這類延遲是指在完成來源造訪「之後」,以及開始目的地造訪「之前」。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
ShipmentTypeIncompatibility
根據出貨類型,指定不同運送方式間的不相容問題。系統會依據不相容模式,限制同一條路線上不相容的運送方式。
| JSON 表示法 |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| 欄位 | |
|---|---|
types[] |
不相容類型的清單。兩件出貨各有不同的 |
incompatibilityMode |
套用至不相容項目的模式。 |
IncompatibilityMode
定義同一條路線上不相容貨運外觀的限制方式。
| 列舉 | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
未指定不相容模式。請一律不要使用這個值。 |
NOT_PERFORMED_BY_SAME_VEHICLE |
在此模式下,如果兩件不相容的運送方式不相容,則無法同一輛車共享。 |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
針對兩種不相容的類型隨附
|
ShipmentTypeRequirement
根據運送類型指定貨物之間的各項規定。規定的具體細節是由要求模式所定義。
| JSON 表示法 |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| 欄位 | |
|---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
凡是 注意:系統不允許 |
requirementMode |
為需求套用的模式。 |
RequirementMode
定義路線上相依運送方式的模式。
| 列舉 | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
未指定需求模式。請一律不要使用這個值。 |
PERFORMED_BY_SAME_VEHICLE |
在此模式下,所有「相依」貨物運送時都必須與至少一項「必要」貨物共乘同一輛車。 |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
在 因此「相依」運送取貨必須符合以下條件:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
與先前相同,除非「相依」運送作業在交貨時需要將車輛按「必要」出貨。 |
PrecedenceRule
兩個事件之間的優先順序規則 (每個事件都是提貨或出貨):第二個事件必須在第一個事件開始後至少 offsetDuration 才會開始。
不過,有些優先順序可代表相同 (或相關) 事件,例如:「B 送貨後取貨」和「從 B 取件後到貨 (C) 發生」。
此外,只有在兩項運送作業都發生時,優先順序才會套用,其他作業則遭到忽略。
| JSON 表示法 |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| 欄位 | |
|---|---|
firstIsDelivery |
表示「第一個」事件是否為傳送事件。 |
secondIsDelivery |
表示「第二個」事件是否為傳送事件。 |
offsetDuration |
「first」和「second」事件之間的偏移量。可以是負值。 時間長度以秒為單位,最多可有 9 個小數位數,並應以「 |
firstIndex |
「first」事件的出貨索引。必須指定這個欄位。 |
secondIndex |
「第二個」事件的運送索引。必須指定這個欄位。 |