- การแสดง JSON
- การจัดส่ง
- VisitRequest
- LatLng
- จุดอ้างอิง
- สถานที่ตั้ง
- TimeWindow
- ยานพาหนะ
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- ช่วงเวลา
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- วัตถุประสงค์
- ประเภท
- DurationDistanceMatrix
- แถว
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
รูปแบบการจัดส่งประกอบด้วยชุดการจัดส่งที่ต้องทำโดยชุดยานพาหนะ โดยลดต้นทุนโดยรวมให้เหลือน้อยที่สุด ซึ่งก็คือผลรวมของรายการต่อไปนี้
- ค่าใช้จ่ายในการกำหนดเส้นทางของยานพาหนะ (ผลรวมของต้นทุนต่อเวลาทั้งหมด ต้นทุนต่อเวลาเดินทาง และต้นทุนคงที่สำหรับยานพาหนะทั้งหมด)
- บทลงโทษสำหรับการไม่ดำเนินการจัดส่ง
- ค่าใช้จ่ายของระยะเวลาการจัดส่งทั่วโลก
| การแสดง JSON | 
|---|
| { "shipments": [ { object ( | 
| ช่อง | |
|---|---|
| shipments[] | 
 ชุดการจัดส่งที่ต้องดำเนินการในโมเดล | 
| vehicles[] | 
 ชุดยานพาหนะที่สามารถใช้เพื่อเข้าชม | 
| objectives[] | 
 ชุดวัตถุประสงค์ของรูปแบบนี้ ซึ่งเราจะเปลี่ยนเป็นค่าใช้จ่าย หากไม่ได้เป็นค่าว่าง โมเดลอินพุตต้องไม่มีค่าใช้จ่าย หากต้องการดูคําขอที่แก้ไขแล้ว โปรดใช้  เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request | 
| globalStartTime | 
 เวลาเริ่มต้นและสิ้นสุดแบบรวมของโมเดล: ระบบจะไม่ถือว่าเวลาที่อยู่นอกช่วงนี้ถูกต้อง ช่วงเวลาของโมเดลต้องน้อยกว่า 1 ปี กล่าวคือ  เมื่อใช้ช่อง  ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| globalEndTime | 
 หากไม่ได้ตั้งค่า ระบบจะใช้ 00:00:00 UTC, 1 มกราคม 1971 (เช่น วินาที: 31536000, นีโอน: 0) เป็นค่าเริ่มต้น ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| globalDurationCostPerHour | 
 "ระยะเวลาโดยรวม" ของแผนโดยรวมคือความแตกต่างระหว่างเวลาเริ่มต้นที่มีประสิทธิภาพเร็วที่สุดและเวลาสิ้นสุดที่มีประสิทธิภาพล่าสุดของยานพาหนะทั้งหมด ผู้ใช้สามารถกำหนดต้นทุนต่อชั่วโมงให้กับจำนวนดังกล่าวเพื่อพยายามเพิ่มประสิทธิภาพให้งานเสร็จเร็วที่สุด เป็นต้น ค่าใช้จ่ายนี้ต้องเป็นหน่วยเดียวกับ  | 
| durationDistanceMatrices[] | 
 ระบุเมทริกซ์ระยะเวลาและระยะทางที่ใช้ในโมเดล หากช่องนี้ว่างเปล่า ระบบจะใช้ Google Maps หรือระยะทางเชิงเรขาคณิตแทน ทั้งนี้ขึ้นอยู่กับค่าของช่อง  ตัวอย่างการใช้งาน 
 
  | 
| durationDistanceMatrixSrcTags[] | 
 แท็กที่กําหนดแหล่งที่มาของเมตริกระยะเวลาและระยะทาง  แท็กสอดคล้องกับ  | 
| durationDistanceMatrixDstTags[] | 
 แท็กที่กําหนดปลายทางของเมตริกระยะเวลาและระยะทาง  แท็กสอดคล้องกับ  | 
| transitionAttributes[] | 
 เพิ่มแอตทริบิวต์ทรานซิชันลงในโมเดล | 
| shipmentTypeIncompatibilities[] | 
 ชุดของ shipment_types ที่ใช้ร่วมกันไม่ได้ (ดู  | 
| shipmentTypeRequirements[] | 
 ชุดข้อกำหนด  | 
| precedenceRules[] | 
 ชุดกฎลําดับความสําคัญที่ต้องบังคับใช้ในโมเดล สำคัญ: การใช้กฎลําดับความสําคัญจะจํากัดขนาดของปัญหาที่เพิ่มประสิทธิภาพได้ คำขอที่ใช้กฎลําดับความสําคัญซึ่งมีการจัดส่งหลายรายการอาจถูกปฏิเสธ | 
| maxActiveVehicles | 
 จำกัดจำนวนยานพาหนะที่ใช้งานอยู่สูงสุด ยานพาหนะจะถือว่าใช้งานอยู่หากเส้นทางของยานพาหนะมีการจัดส่งอย่างน้อย 1 รายการ สามารถใช้เพื่อจำกัดจำนวนเส้นทางในกรณีที่มีคนขับน้อยกว่ายานพาหนะและกลุ่มยานพาหนะมีความหลากหลาย จากนั้นการเพิ่มประสิทธิภาพจะเลือกกลุ่มย่อยของยานพาหนะที่ดีที่สุดที่จะใช้ ต้องเป็นค่าบวก | 
การจัดส่ง
การจัดส่งสินค้ารายการเดียว ตั้งแต่การยกขึ้นรถไปจนถึงการนำส่ง เพื่อให้ระบบถือว่ามีการจัดส่งเกิดขึ้น รถคันเดียวต้องไปที่จุดรับสินค้าแห่งหนึ่ง (และลดกำลังการผลิตที่เหลือตามนั้น) จากนั้นไปที่จุดนำส่งแห่งหนึ่งในภายหลัง (และเพิ่มกำลังการผลิตที่เหลือตามนั้นอีกครั้ง)
| การแสดง JSON | 
|---|
| { "displayName": string, "pickups": [ { object ( | 
| ช่อง | |
|---|---|
| displayName | 
 ชื่อที่แสดงของการจัดส่งที่ผู้ใช้กำหนด โดยชื่อมีความยาวได้สูงสุด 63 อักขระ และใช้อักขระ UTF-8 ได้ | 
| pickups[] | 
 ชุดตัวเลือกการรับพัสดุที่เชื่อมโยงกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปที่สถานที่ที่สอดคล้องกับการนำส่งเท่านั้น | 
| deliveries[] | 
 ชุดตัวเลือกการนำส่งที่เชื่อมโยงกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปที่สถานที่ที่สอดคล้องกับการรับส่งเท่านั้น | 
| loadDemands | 
 ความต้องการในการบรรทุกของการจัดส่ง (เช่น น้ำหนัก ปริมาณ จำนวนพาเลต ฯลฯ) คีย์ในการแมปควรเป็นตัวระบุที่อธิบายประเภทของโหลดที่เกี่ยวข้อง และควรระบุหน่วยด้วย เช่น "weight_kg", "volume_gallons", "pallet_count" เป็นต้น หากคีย์หนึ่งๆ ไม่ปรากฏในการแมป ระบบจะถือว่าการโหลดที่เกี่ยวข้องเป็นค่าว่าง | 
| allowedVehicleIndices[] | 
 ชุดยานพาหนะที่อาจทำการขนส่งนี้ หากเป็นค่าว่าง หมายความว่ารถทุกรุ่นจะดำเนินการได้ ยานพาหนะจะแสดงตามดัชนีในรายการ  | 
| costsPerVehicle[] | 
 ระบุค่าใช้จ่ายที่เกิดขึ้นเมื่อนำส่งการจัดส่งนี้โดยยานพาหนะแต่ละคัน หากระบุไว้ จะต้องมีอย่างใดอย่างหนึ่งต่อไปนี้ 
 ค่าใช้จ่ายเหล่านี้ต้องเป็นหน่วยเดียวกับ  | 
| costsPerVehicleIndices[] | 
 ดัชนีของยานพาหนะที่  | 
| pickupToDeliveryAbsoluteDetourLimit | 
 ระบุเวลาอ้อมสูงสุดสัมบูรณ์เทียบกับเส้นทางที่สั้นที่สุดตั้งแต่การไปรับจนถึงการนำส่ง หากระบุ ต้องไม่เป็นค่าลบ และการจัดส่งต้องมีการรับและการนำส่งอย่างน้อย 1 รายการ ตัวอย่างเช่น สมมติให้ t เป็นเวลาที่สั้นที่สุดจากทางเลือกการรับสินค้าซึ่งเลือกไว้ไปยังทางเลือกการนำส่งซึ่งเลือกไว้โดยตรง จากนั้นการตั้งค่า  หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และแบบสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่จำกัดมากขึ้นสำหรับคู่การรับ/การนำส่งที่เป็นไปได้แต่ละคู่ ในเดือนตุลาคม 2017 ระบบรองรับการอ้อมเส้นทางเฉพาะในกรณีที่ระยะเวลาเดินทางไม่ขึ้นอยู่กับยานพาหนะ ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย " | 
| pickupToDeliveryTimeLimit | 
 ระบุระยะเวลาสูงสุดตั้งแต่เริ่มรับพัสดุไปจนถึงเริ่มนำส่งพัสดุ หากระบุ ต้องเป็นค่าบวก และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย 1 รายการ ซึ่งไม่ได้ขึ้นอยู่กับว่าเลือกตัวเลือกใดสำหรับการรับและการนำส่ง หรือความเร็วของยานพาหนะ คุณสามารถระบุค่านี้ควบคู่ไปกับข้อจำกัดทางอ้อมสูงสุดได้ โดยโซลูชันจะยึดตามข้อกำหนดทั้ง 2 ข้อ ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| shipmentType | 
 สตริงที่ไม่ใช่ค่าว่างซึ่งระบุ "ประเภท" สำหรับการจัดส่งนี้ ฟีเจอร์นี้ใช้เพื่อกำหนดความเข้ากันไม่ได้หรือข้อกำหนดระหว่าง  แตกต่างจาก  | 
| label | 
 ระบุป้ายกำกับสำหรับการจัดส่งนี้ ระบบจะรายงานป้ายกำกับนี้ในการตอบกลับใน  | 
| ignore | 
 หากเป็นจริง ให้ข้ามการจัดส่งนี้ แต่อย่าใช้  การละเว้นการจัดส่งจะทำให้เกิดข้อผิดพลาดในการตรวจสอบเมื่อมี  ระบบอนุญาตให้ละเว้นการจัดส่งที่ดำเนินการใน  | 
| penaltyCost | 
 หากการจัดส่งไม่เสร็จสมบูรณ์ ระบบจะเพิ่มค่าปรับนี้ลงในต้นทุนโดยรวมของเส้นทาง ระบบจะถือว่าการจัดส่งเสร็จสมบูรณ์หากมีการนำส่งหรือรับสินค้าตามทางเลือกใดทางเลือกหนึ่ง ค่าใช้จ่ายอาจแสดงเป็นหน่วยเดียวกับที่ใช้สำหรับช่องอื่นๆ ทั้งหมดที่เกี่ยวข้องกับต้นทุนในโมเดล และต้องมีค่าเป็นบวก สำคัญ: หากไม่ได้ระบุค่าปรับนี้ ระบบจะถือว่าไม่มีขีดจำกัด ซึ่งหมายความว่าต้องจัดส่งให้เสร็จสมบูรณ์ | 
| pickupToDeliveryRelativeDetourLimit | 
 ระบุเวลาอ้อมสูงสุดแบบสัมพัทธ์เทียบกับเส้นทางที่สั้นที่สุดตั้งแต่การไปรับจนถึงการนำส่ง หากระบุ ต้องไม่เป็นค่าลบ และการจัดส่งต้องมีการรับและการนำส่งอย่างน้อย 1 รายการ ตัวอย่างเช่น สมมติให้ t เป็นเวลาที่สั้นที่สุดจากทางเลือกการรับสินค้าที่เลือกไปยังทางเลือกการนำส่งที่เลือกโดยตรง จากนั้นการตั้งค่า  หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และแบบสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่จำกัดมากขึ้นสำหรับคู่การรับ/การนำส่งที่เป็นไปได้แต่ละคู่ ในเดือนตุลาคม 2017 ระบบรองรับการอ้อมเส้นทางเฉพาะในกรณีที่ระยะเวลาเดินทางไม่ขึ้นอยู่กับยานพาหนะ | 
VisitRequest
คำขอเข้าชมที่ยานพาหนะสามารถทำได้: ยานพาหนะมีตำแหน่งทางภูมิศาสตร์ (หรือ 2 ตำแหน่ง โปรดดูด้านล่าง) เวลาเปิดและปิดที่แสดงเป็นกรอบเวลา และระยะเวลาของบริการ (เวลาที่ยานพาหนะใช้ในการรับหรือส่งสินค้าเมื่อมาถึง)
| การแสดง JSON | 
|---|
| { "arrivalLocation": { object ( | 
| ช่อง | |
|---|---|
| arrivalLocation | 
 ตำแหน่งทางภูมิศาสตร์ที่ยานพาหนะมาถึงเมื่อทำ  | 
| arrivalWaypoint | 
 จุดสังเกตที่ยานพาหนะมาถึงเมื่อทำ  | 
| departureLocation | 
 ตำแหน่งทางภูมิศาสตร์ที่ยานพาหนะออกเดินทางหลังจากทำ  | 
| departureWaypoint | 
 จุดสังเกตที่ยานพาหนะออกเดินทางหลังจากทำ  | 
| tags[] | 
 ระบุแท็กที่แนบมากับคําขอเข้าชม ไม่อนุญาตให้ใช้สตริงที่ว่างเปล่าหรือซ้ำกัน | 
| timeWindows[] | 
 กรอบเวลาที่จํากัดเวลามาถึงในการเข้าชม โปรดทราบว่ายานพาหนะอาจออกเดินทางนอกกรอบเวลาการมาถึง เช่น เวลามาถึง + ระยะเวลาไม่จำเป็นต้องอยู่ภายในกรอบเวลา ซึ่งอาจส่งผลให้ต้องรอหากยานพาหนะมาถึงก่อน  หากไม่มี  กรอบเวลาต้องไม่ซ้อนทับกัน เช่น กรอบเวลาต้องไม่ซ้อนทับหรืออยู่ติดกับกรอบเวลาอื่น และต้องเป็นลำดับเวลาจากน้อยไปมาก คุณจะตั้งค่า  | 
| duration | 
 ระยะเวลาในการเข้าชม เช่น เวลาที่ใช้โดยยานพาหนะระหว่างที่มาถึงและออกเดินทาง (จะเพิ่มไปยังเวลารอที่เป็นไปได้ ดู  ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| cost | 
 ค่าบริการตามคำขอเข้าชมนี้ในเส้นทางของยานพาหนะ ซึ่งสามารถใช้ชำระค่าใช้จ่ายที่แตกต่างกันสำหรับการรับหรือการนำส่งพัสดุทางเลือกแต่ละรายการ ค่าใช้จ่ายนี้ต้องเป็นหน่วยเดียวกับ  | 
| loadDemands | 
 โหลดดีมานด์ของคำขอเข้าชมนี้ ช่องนี้เหมือนกับช่อง  | 
| visitTypes[] | 
 ระบุประเภทการเข้าชม ข้อมูลนี้อาจใช้เพื่อจัดสรรเวลาเพิ่มเติมที่จําเป็นสําหรับยานพาหนะในการเข้าชมนี้ให้เสร็จสมบูรณ์ (ดู  ประเภทหนึ่งๆ จะปรากฏได้เพียงครั้งเดียว | 
| label | 
 ระบุป้ายกำกับสำหรับ  | 
| avoidUTurns | 
 ระบุว่าควรหลีกเลี่ยงการยูเทิร์นในเส้นทางขับรถ ณ ตำแหน่งนี้หรือไม่ ระบบจะพยายามเลี่ยงการเลี้ยวกลับอย่างสุดความสามารถ แต่ไม่สามารถรับประกันได้ว่าจะเลี่ยงได้ทั้งหมด นี่เป็นฟีเจอร์ทดลองและลักษณะการทำงานอาจมีการเปลี่ยนแปลง เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request | 
LatLng
ออบเจ็กต์ที่แสดงคู่ละติจูด/ลองจิจูด ซึ่งแสดงเป็นคู่ของตัวเลขทศนิยมเพื่อแสดงองศาละติจูดและองศาลองจิจูด วัตถุนี้ต้องเป็นไปตาม มาตรฐาน WGS84 เว้นแต่จะระบุไว้เป็นอย่างอื่น ค่าต้องอยู่ในช่วงที่ได้รับการทำให้เป็นมาตรฐาน
| การแสดง JSON | 
|---|
| { "latitude": number, "longitude": number } | 
| ช่อง | |
|---|---|
| latitude | 
 ละติจูดเป็นองศา โดยต้องอยู่ในช่วง [-90.0, +90.0] | 
| longitude | 
 ลองจิจูดเป็นองศา โดยต้องอยู่ในช่วง [-180.0, +180.0] | 
จุดบอกทาง
บรรจุข้อมูลจุดอ้างอิง จุดสังเกตจะระบุตำแหน่งมาถึงและออกเดินทางของคำขอเข้าชม รวมถึงตำแหน่งเริ่มต้นและสิ้นสุดของยานพาหนะ
| การแสดง JSON | 
|---|
| { "sideOfRoad": boolean, "vehicleStopover": boolean, // Union field | 
| ช่อง | |
|---|---|
| sideOfRoad | 
 ไม่บังคับ บ่งบอกว่าตําแหน่งของจุดแวะพักนี้มีไว้เพื่อกำหนดค่ากําหนดให้ยานพาหนะหยุดที่ด้านใดด้านหนึ่งของถนน เมื่อคุณตั้งค่านี้ เส้นทางจะผ่านสถานที่ตั้งเพื่อให้ยานพาหนะหยุดที่ด้านข้างถนนซึ่งอยู่ถัดจากจุดศูนย์กลางของถนน ตัวเลือกนี้ใช้ไม่ได้กับโหมดการเดินทาง "เดิน" | 
| vehicleStopover | 
 บ่งบอกว่าจุดกึ่งกลางมีไว้สำหรับให้ยานพาหนะหยุดเพื่อรับหรือส่งผู้โดยสาร ตัวเลือกนี้ใช้ได้กับโหมดการเดินทาง "ขับรถ" เท่านั้น และเมื่อมี "locationType" เป็น "location" ทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจมีการเปลี่ยนแปลงในอนาคต | 
| ฟิลด์สหภาพ location_typeวิธีต่างๆ ในการแสดงสถานที่location_typeต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น | |
| location | 
 จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ รวมถึงส่วนหัวที่ไม่บังคับ | 
| placeId | 
 รหัสสถานที่จุดที่น่าสนใจที่เชื่อมโยงกับจุดสังเกต เมื่อใช้รหัสสถานที่เพื่อระบุสถานที่ถึงหรือออกเดินทางของคำขอเข้าชม ให้ใช้รหัสสถานที่ที่เฉพาะเจาะจงเพียงพอที่จะระบุตำแหน่ง LatLng สำหรับการไปยังสถานที่นั้น เช่น รหัสสถานที่ที่แสดงถึงอาคารเหมาะที่จะใช้ แต่เราไม่แนะนำให้ใช้รหัสสถานที่ที่แสดงถึงถนน | 
ตำแหน่ง
บรรจุสถานที่ตั้ง (จุดทางภูมิศาสตร์และส่วนหัวที่ไม่บังคับ)
| การแสดง JSON | 
|---|
| {
  "latLng": {
    object ( | 
| ช่อง | |
|---|---|
| latLng | 
 พิกัดทางภูมิศาสตร์ของจุดสังเกต | 
| heading | 
 เข็มทิศที่เชื่อมโยงกับทิศทางของการเข้าชม ค่านี้ใช้เพื่อระบุฝั่งถนนที่จะใช้รับและส่งผู้โดยสาร ค่าทิศทางมีตั้งแต่ 0 ถึง 360 โดยที่ 0 ระบุทิศทางเป็นทิศเหนือ 90 ระบุทิศทางเป็นทิศตะวันออก เป็นต้น | 
TimeWindow
กรอบเวลาจะจำกัดเวลาของเหตุการณ์ เช่น เวลามาถึงที่จุดแวะพัก หรือเวลาเริ่มต้นและสิ้นสุดของยานพาหนะ
ขอบเขตกรอบเวลาแบบบังคับ startTime และ endTime จะบังคับใช้เวลาเริ่มต้นเร็วที่สุดและช้าสุดของเหตุการณ์ เช่น startTime <= event_time <=
          endTime ขอบเขตล่างของกรอบเวลาแบบยืดหยุ่น softStartTime แสดงถึงค่ากําหนดให้เหตุการณ์เกิดขึ้นตั้งแต่หรือหลังจาก softStartTime โดยจะมีค่าใช้จ่ายตามสัดส่วนกับระยะเวลาก่อนที่เหตุการณ์จะเกิดขึ้นก่อน softStartTime ขอบบนของกรอบเวลาแบบยืดหยุ่น softEndTime แสดงถึงค่ากําหนดให้เหตุการณ์เกิดขึ้นในหรือก่อนวันที่ softEndTime โดยจะมีต้นทุนตามสัดส่วนกับระยะเวลาหลังจากที่เกิดเหตุการณ์หลังจากวันที่ softEndTime startTime, endTime, softStartTime และ softEndTime ควรอยู่ภายในขีดจำกัดเวลาทั่วโลก (ดู ShipmentModel.global_start_time และ ShipmentModel.global_end_time) และควรเป็นไปตามข้อกำหนดต่อไปนี้
  0 <= `startTime` <= `endTime` and
  0 <= `startTime` <= `softStartTime` and
  0 <= `softEndTime` <= `endTime`.
| การแสดง JSON | 
|---|
| { "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } | 
| ช่อง | |
|---|---|
| startTime | 
 เวลาเริ่มต้นของกรอบเวลาที่เจาะจง หากไม่ระบุ ระบบจะตั้งค่าเป็น  ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| endTime | 
 เวลาสิ้นสุดของกรอบเวลา หากไม่ระบุ ระบบจะตั้งค่าเป็น  ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| softStartTime | 
 เวลาเริ่มต้นแบบค่อยเป็นค่อยไปของกรอบเวลา ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| softEndTime | 
 เวลาสิ้นสุดโดยประมาณของกรอบเวลา ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| 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 | 
 ความจุของยานพาหนะ (น้ำหนัก ปริมาณ จำนวนพาเลต เป็นต้น) คีย์ในแผนที่คือตัวระบุประเภทของการโหลด ซึ่งสอดคล้องกับคีย์ของฟิลด์  | 
| costPerHour | 
 ค่ายานพาหนะ: ค่าใช้จ่ายทั้งหมดจะรวมกันและต้องเป็นหน่วยเดียวกับ  ค่าบริการต่อชั่วโมงของเส้นทางยานพาหนะ ค่าใช้จ่ายนี้จะมีผลกับเวลาทั้งหมดที่ใช้ในเส้นทาง ซึ่งรวมถึงเวลาเดินทาง เวลารอ และเวลาเข้าชม การใช้  | 
| costPerTraveledHour | 
 ค่าบริการต่อชั่วโมงที่เดินทางของเส้นทางยานพาหนะ ต้นทุนนี้มีผลกับเวลาเดินทางตามเส้นทางเท่านั้น (นั่นคือเวลาที่รายงานใน  | 
| costPerKilometer | 
 ค่าบริการต่อกิโลเมตรของเส้นทางยานพาหนะ โดยค่าใช้จ่ายนี้จะมีผลกับระยะทางที่รายงานใน  | 
| fixedCost | 
 ค่าใช้จ่ายคงที่จะมีผลหากใช้ยานพาหนะนี้เพื่อจัดการการจัดส่ง | 
| usedIfRouteIsEmpty | 
 ช่องนี้จะใช้ได้กับยานพาหนะเมื่อเส้นทางของยานพาหนะนั้นไม่มีการจัดส่ง ข้อมูลนี้ระบุว่าควรถือว่ายานพาหนะเป็นยานพาหนะมือสองหรือไม่ในกรณีนี้ หากเป็น "จริง" ยานพาหนะจะเดินทางจากจุดเริ่มต้นไปยังจุดสิ้นสุดแม้ว่าจะไม่มีการจัดส่งใดๆ เกิดขึ้น และระบบจะพิจารณาเวลาและค่าใช้จ่ายตามระยะทางที่เกิดจากการเดินทางจากจุดเริ่มต้นไปยังจุดสิ้นสุด ไม่เช่นนั้น ยานพาหนะจะไม่เดินทางจากจุดเริ่มต้นไปยังจุดสิ้นสุด และไม่มีการกำหนดเวลา  | 
| routeDurationLimit | 
 ขีดจํากัดที่มีผลกับระยะเวลาทั้งหมดของเส้นทางยานพาหนะ ใน  | 
| travelDurationLimit | 
 ขีดจํากัดที่มีผลกับระยะเวลาการเดินทางของเส้นทางยานพาหนะ ใน  | 
| routeDistanceLimit | 
 ขีดจํากัดมีผลกับระยะทางรวมของเส้นทางยานพาหนะ ใน  | 
| extraVisitDurationForVisitType | 
 ระบุการแมปจากสตริง visitTypes ไปยังระยะเวลา ระยะเวลาคือเวลาเพิ่มเติมจาก  หากคำขอเข้าชมมีหลายประเภท ระบบจะเพิ่มระยะเวลาสำหรับแต่ละประเภทในแผนที่ | 
| breakRule | 
 อธิบายกำหนดเวลาพักที่จะบังคับใช้กับยานพาหนะนี้ หากว่างเปล่า ระบบจะไม่กำหนดเวลาพักสำหรับยานพาหนะนี้ | 
| label | 
 ระบุป้ายกำกับสำหรับยานพาหนะนี้ ระบบจะรายงานป้ายกำกับนี้ในการตอบกลับเป็น  | 
| ignore | 
 หากเป็นจริง  หากการจัดส่งดำเนินการโดยยานพาหนะที่ละเว้นใน  หากการจัดส่งดำเนินการโดยยานพาหนะที่ละเว้นใน  | 
| travelDurationMultiple | 
 ระบุตัวคูณที่สามารถใช้เพื่อเพิ่มหรือลดเวลาเดินทางของยานพาหนะนี้ เช่น การตั้งค่านี้เป็น 2.0 หมายความว่ายานพาหนะนี้ช้ากว่าและมีเวลาเดินทางเป็น 2 เท่าของยานพาหนะมาตรฐาน อัตราส่วนนี้ไม่ส่งผลต่อระยะเวลาในการเข้าชม แต่จะมีผลต่อต้นทุนหากมีการระบุ  โปรดทราบว่าระบบจะปัดเศษเวลาเดินทางเป็นวินาทีที่ใกล้ที่สุดหลังจากใช้ตัวคูณนี้ แต่ก่อนที่จะดำเนินการทางตัวเลขใดๆ ดังนั้นตัวคูณขนาดเล็กอาจทำให้ความแม่นยำลดลง ดูข้อมูลเพิ่มเติมได้ที่  | 
TravelMode
โหมดการเดินทางที่ยานพาหนะใช้ได้
ซึ่งควรเป็นชุดย่อยของโหมดการเดินทางของ Google Maps Platform Routes API ดูได้ที่ https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
หมายเหตุ: เส้นทาง WALKING อยู่ในรุ่นเบต้าและบางครั้งอาจไม่มีทางเท้าหรือทางเท้าที่ชัดเจน คุณต้องแสดงคำเตือนนี้ต่อผู้ใช้สำหรับเส้นทางเดินทั้งหมดที่คุณแสดงในแอป
| Enum | |
|---|---|
| TRAVEL_MODE_UNSPECIFIED | โหมดการเดินทางที่ไม่ระบุ ซึ่งเทียบเท่ากับ DRIVING | 
| DRIVING | โหมดการเดินทางที่สอดคล้องกับเส้นทางการขับรถ (รถยนต์ ฯลฯ) | 
| WALKING | โหมดการเดินทางที่สอดคล้องกับเส้นทางเดิน | 
RouteModifiers
บรรจุชุดเงื่อนไขที่ไม่บังคับเพื่อใช้คำนวณเส้นทางของยานพาหนะ ซึ่งคล้ายกับ RouteModifiers ใน Routes Preferred API ของ Google Maps Platform โปรดดูที่ https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers
| การแสดง JSON | 
|---|
| { "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } | 
| ช่อง | |
|---|---|
| avoidTolls | 
 ระบุว่าจะหลีกเลี่ยงถนนที่มีค่าผ่านทางหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีถนนที่ต้องเสียค่าผ่านทาง ใช้ได้กับโหมดการเดินทางที่ใช้เครื่องยนต์เท่านั้น | 
| avoidHighways | 
 ระบุว่าจะเลี่ยงทางหลวงหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีทางหลวง ใช้ได้กับโหมดการเดินทางที่ใช้เครื่องยนต์เท่านั้น | 
| avoidFerries | 
 ระบุว่าจะหลีกเลี่ยงเส้นทางเรือหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีการเดินทางด้วยเรือข้ามฟาก ใช้ได้กับโหมดการเดินทางที่ใช้เครื่องยนต์เท่านั้น | 
| avoidIndoor | 
 ไม่บังคับ ระบุว่าจะหลีกเลี่ยงการนำทางภายในอาคารหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีการนำทางในอาคาร ใช้กับโหมดการเดินทาง  | 
UnloadingPolicy
นโยบายเกี่ยวกับวิธีขนถ่ายยานพาหนะ ใช้กับการจัดส่งที่มีทั้งการรับสินค้าและการนำส่งเท่านั้น
การจัดส่งอื่นๆ จะเกิดขึ้นที่ใดก็ได้ในเส้นทางโดยไม่ขึ้นอยู่กับ unloadingPolicy
| Enum | |
|---|---|
| UNLOADING_POLICY_UNSPECIFIED | นโยบายการขนถ่ายที่ไม่ได้ระบุไว้ การนำส่งต้องเกิดขึ้นหลังจากการไปรับสินค้าที่เกี่ยวข้อง | 
| LAST_IN_FIRST_OUT | การนำส่งต้องเกิดขึ้นในลำดับที่กลับกันจากการรับ | 
| FIRST_IN_FIRST_OUT | การนำส่งต้องเกิดขึ้นตามลำดับเดียวกับการรับสินค้า | 
LoadLimit
กําหนดขีดจํากัดน้ำหนักบรรทุกที่ใช้กับยานพาหนะ เช่น "รถบรรทุกนี้บรรทุกได้สูงสุด 3, 500 กก." ดูloadLimits
| การแสดง JSON | 
|---|
| { "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( | 
| ช่อง | |
|---|---|
| softMaxLoad | 
 ขีดจำกัดแบบไม่เข้มงวดของการโหลด ดู | 
| costPerUnitAboveSoftMax | 
 หากน้ำหนักบรรทุกเกิน  | 
| startLoadInterval | 
 ระยะเวลาการบรรทุกที่ยอมรับได้ของยานพาหนะเมื่อเริ่มเส้นทาง | 
| endLoadInterval | 
 ช่วงเวลาของการบรรทุกที่ยอมรับได้ของยานพาหนะเมื่อสิ้นสุดเส้นทาง | 
| maxLoad | 
 จำนวนการโหลดสูงสุดที่ยอมรับได้ | 
| costPerKilometer | 
 ค่าขนส่งน้ำหนัก 1 หน่วยในระยะทาง 1 กิโลเมตรสำหรับยานพาหนะนี้ ข้อมูลนี้สามารถใช้เป็นพร็อกซีสําหรับปริมาณการใช้เชื้อเพลิงได้ หากน้ำหนักบรรทุกคือน้ำหนัก (เป็นนิวตัน) น้ำหนักบรรทุก*กิโลเมตรจะมีมิติข้อมูลเป็นพลังงาน เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request | 
| costPerTraveledHour | 
 ค่าใช้จ่ายในการเดินทางด้วยน้ำหนักบรรทุก 1 หน่วยเป็นเวลา 1 ชั่วโมงสำหรับยานพาหนะนี้ เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request | 
ช่วงเวลา
ช่วงเวลาของปริมาณการโหลดที่ยอมรับได้
| การแสดง JSON | 
|---|
| { "min": string, "max": string } | 
| ช่อง | |
|---|---|
| min | 
 น้ำหนักบรรทุกขั้นต่ำที่ยอมรับได้ ต้องมากกว่าหรือเท่ากับ 0 หากระบุทั้ง 2 รายการ  | 
| max | 
 น้ำหนักบรรทุกสูงสุดที่ยอมรับได้ ต้องมากกว่าหรือเท่ากับ 0 หากไม่ได้ระบุ ระบบจะไม่จำกัดการโหลดสูงสุดด้วยข้อความนี้ หากระบุทั้ง 2 รายการ  | 
LoadCost
ต้นทุนในการย้ายน้ำหนัก 1 หน่วยในช่วง Transition สำหรับโหลดหนึ่งๆ ค่าใช้จ่ายคือผลรวมของ 2 ส่วน ดังนี้
- min(load, loadThreshold) *costPerUnitBelowThreshold
- max(0, load - loadThreshold) *costPerUnitAboveThreshold
เมื่อใช้ต้นทุนนี้ โซลูชันจะเลือกแสดงโฆษณาตามดีมานด์สูงก่อน หรือจะเลือกแสดงดีมานด์สูงเป็นลำดับสุดท้ายก็ได้ เช่น หากยานพาหนะมี
load_limit {
  key: "weight"
  value {
    costPerKilometer {
      loadThreshold: 15
      costPerUnitBelowThreshold: 2.0
      costPerUnitAboveThreshold: 10.0
    }
  }
}
และเส้นทางคือ start,pickup,pickup,delivery,delivery,end โดยมีการเปลี่ยนผ่านดังนี้
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
ค่าใช้จ่ายที่เกิดขึ้นจาก LoadCost นี้คือ (cost_below * load_below * kilometers + cost_above * load_above * kms)
- การเปลี่ยน 0: 0.0
- การเปลี่ยน 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ช่วง 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- การเปลี่ยน 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- การเปลี่ยน 4: 0.0
ดังนั้น LoadCost ตลอดเส้นทางคือ 120.0
อย่างไรก็ตาม หากเส้นทางคือ start,pickup,delivery,pickup,delivery,end ที่มีการเปลี่ยนผ่าน ให้ทำดังนี้
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
ค่าใช้จ่ายที่เกิดขึ้นจาก LoadCost นี้จึงเท่ากับ
- การเปลี่ยน 0: 0.0
- การเปลี่ยน 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ทรานซิชัน 2: 0.0
- การเปลี่ยน 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- การเปลี่ยน 4: 0.0
LoadCost ตลอดเส้นทางคือ 40.0
LoadCost ทำให้โซลูชันที่มีทรานซิชันที่มีภาระมากมีราคาแพงขึ้น
เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request
| การแสดง JSON | 
|---|
| { "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } | 
| ช่อง | |
|---|---|
| loadThreshold | 
 จำนวนโหลดที่มากกว่าต้นทุนในการย้ายโหลด 1 หน่วยจาก costPerUnitBelowThreshold เป็น costPerUnitAboveThreshold ต้องมากกว่าหรือเท่ากับ 0 | 
| costPerUnitBelowThreshold | 
 ต้นทุนในการย้ายโหลด 1 หน่วยสําหรับแต่ละหน่วยระหว่าง 0 ถึงเกณฑ์ ต้องเป็นค่าที่แน่นอนและมากกว่าหรือเท่ากับ 0 | 
| costPerUnitAboveThreshold | 
 ต้นทุนในการย้ายโหลด 1 หน่วยสําหรับแต่ละหน่วยที่เกินเกณฑ์ ในกรณีที่เกณฑ์กรณีพิเศษ = 0 จะเป็นต้นทุนคงที่ต่อหน่วย ต้องเป็นค่าที่แน่นอนและมากกว่าหรือเท่ากับ 0 | 
DurationLimit
ขีดจํากัดที่กําหนดระยะเวลาสูงสุดของเส้นทางยานพาหนะ โดยอาจเป็นแบบแข็งหรือแบบนุ่มก็ได้
เมื่อกําหนดฟิลด์ขีดจํากัดสูงสุดแบบยืดหยุ่น จะต้องกําหนดทั้งเกณฑ์สูงสุดแบบยืดหยุ่นและต้นทุนที่เกี่ยวข้องร่วมกัน
| การแสดง JSON | 
|---|
| { "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } | 
| ช่อง | |
|---|---|
| maxDuration | 
 ขีดจํากัดสูงสุดที่กําหนดให้ระยะเวลาไม่เกิน maxDuration ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| softMaxDuration | 
 ขีดจํากัดแบบไม่บังคับซึ่งไม่ได้บังคับใช้ระยะเวลาสูงสุด แต่หากมีการละเมิด เส้นทางจะมีค่าใช้จ่าย ต้นทุนนี้จะรวมกับต้นทุนอื่นๆ ที่กําหนดไว้ในโมเดลซึ่งมีหน่วยเดียวกัน หากมีการกําหนด  ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| quadraticSoftMaxDuration | 
 ขีดจํากัดแบบอ่อนจะไม่บังคับใช้ขีดจํากัดระยะเวลาสูงสุด แต่หากมีการละเมิด เส้นทางจะมีค่าใช้จ่ายตามระยะเวลาเป็น 2 เท่า ต้นทุนนี้จะรวมกับต้นทุนอื่นๆ ที่กําหนดไว้ในโมเดลซึ่งมีหน่วยเดียวกัน หากมีการกําหนด  
 ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| costPerHourAfterSoftMax | 
 ค่าใช้จ่ายต่อชั่วโมงที่เกิดขึ้นหากมีการละเมิดเกณฑ์  ค่าใช้จ่ายต้องไม่ติดลบ | 
| costPerSquareHourAfterQuadraticSoftMax | 
 ต้นทุนต่อชั่วโมงสี่เหลี่ยมจัตุรัสที่เกิดขึ้นหากมีการละเมิดเกณฑ์  ค่าใช้จ่ายเพิ่มเติมจะเป็น 0 หากระยะเวลาอยู่ต่ำกว่าเกณฑ์ มิฉะนั้นค่าใช้จ่ายจะขึ้นอยู่กับระยะเวลา ดังนี้ ค่าใช้จ่ายต้องไม่ติดลบ | 
DistanceLimit
ขีดจำกัดที่กำหนดระยะทางสูงสุดที่เดินทางได้ โดยอาจเป็นแบบแข็งหรือแบบนุ่มก็ได้
หากกําหนดขีดจํากัดสูงสุดที่อนุญาตไว้ จะต้องกําหนดทั้ง softMaxMeters และ costPerKilometerAboveSoftMax และต้องไม่เป็นค่าลบ
| การแสดง JSON | 
|---|
| { "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } | 
| ช่อง | |
|---|---|
| maxMeters | 
 ขีดจํากัดสูงสุดที่กําหนดระยะทางไว้ไม่เกิน maxMeters ขีดจํากัดต้องไม่ติดลบ | 
| softMaxMeters | 
 ขีดจํากัดแบบไม่บังคับจะไม่บังคับใช้ขีดจํากัดระยะทางสูงสุด แต่หากมีการละเมิด ค่าใช้จ่ายจะเพิ่มขึ้นตามค่าใช้จ่ายอื่นๆ ที่กําหนดไว้ในรูปแบบเดียวกัน หากมีการกําหนด softMaxMeters ต้องน้อยกว่า maxMeters และต้องไม่เป็นค่าติดลบ | 
| costPerKilometerBelowSoftMax | 
 ค่าใช้จ่ายต่อกิโลเมตรที่เกิดขึ้น ซึ่งเพิ่มขึ้นสูงสุด  
 | 
| costPerKilometerAboveSoftMax | 
 ค่าใช้จ่ายต่อกิโลเมตรที่เกิดขึ้นหากระยะทางเกินขีดจำกัด  ค่าใช้จ่ายต้องไม่ติดลบ | 
BreakRule
กฎในการสร้างช่วงพักสำหรับยานพาหนะ (เช่น ช่วงพักเที่ยง) ช่วงพักคือช่วงเวลาต่อเนื่องที่ยานพาหนะไม่ได้ทำงานอยู่ที่ตําแหน่งปัจจุบันและไม่สามารถเข้าชมได้ ช่วงพักอาจเกิดขึ้นในกรณีต่อไปนี้
- ระหว่างการเดินทางระหว่างการเข้าชม 2 ครั้ง (ซึ่งรวมถึงเวลาก่อนหรือหลังการเข้าชม แต่ไม่ใช่ระหว่างการเข้าชม) ในกรณีนี้ ระบบจะขยายเวลาเดินทางที่เกี่ยวข้องระหว่างการเข้าชม
- หรือก่อนที่รถจะสตาร์ท (รถอาจไม่สตาร์ทในช่วงพัก) ในกรณีนี้จะไม่ส่งผลต่อเวลาสตาร์ทรถ
- หรือหลังจากสิ้นสุดการให้บริการของยานพาหนะ (เช่นเดียวกับเวลาสิ้นสุดการให้บริการของยานพาหนะ)
| การแสดง JSON | 
|---|
| { "breakRequests": [ { object ( | 
| ช่อง | |
|---|---|
| breakRequests[] | 
 ลำดับของช่วงพัก ดูข้อความ  | 
| frequencyConstraints[] | 
 อาจมี  | 
BreakRequest
คุณต้องทราบลำดับของช่วงพัก (เช่น จำนวนและลำดับ) ที่มีผลกับยานพาหนะแต่ละคันล่วงหน้า BreakRequest ที่ซ้ำกันจะกำหนดลำดับนั้นตามลำดับที่ต้องทำ กรอบเวลา (earliestStartTime / latestStartTime) อาจทับซ้อนกัน แต่ต้องเข้ากันได้กับคำสั่งซื้อ (ระบบจะตรวจสอบ)
| การแสดง JSON | 
|---|
| { "earliestStartTime": string, "latestStartTime": string, "minDuration": string } | 
| ช่อง | |
|---|---|
| earliestStartTime | 
 ต้องระบุ ขอบเขตล่าง (รวม) ของช่วงพัก ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| latestStartTime | 
 ต้องระบุ ขอบเขตบน (รวม) ของจุดเริ่มต้นของช่วงพัก ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| minDuration | 
 ต้องระบุ ระยะเวลาขั้นต่ำของช่วงพัก ต้องเป็นค่าบวก ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
FrequencyConstraint
คุณสามารถจำกัดความถี่และระยะเวลาของช่วงพักที่ระบุไว้ข้างต้นเพิ่มเติมได้โดยการบังคับใช้ความถี่ของช่วงพักขั้นต่ำ เช่น "ต้องมีช่วงพักอย่างน้อย 1 ชั่วโมงทุก 12 ชั่วโมง" สมมติว่าสามารถตีความได้ว่า "ภายในกรอบเวลาแบบเลื่อนได้ 12 ชั่วโมง ต้องมีช่วงพักอย่างน้อย 1 ชั่วโมงอย่างน้อย 1 ช่วง" ตัวอย่างดังกล่าวจะแปลเป็น FrequencyConstraint ดังนี้
{
   minBreakDuration { seconds: 3600 }         # 1 hour.
   maxInterBreakDuration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}
ช่วงเวลาและระยะเวลาของช่วงพักในโซลูชันจะเป็นไปตามข้อจำกัดดังกล่าวทั้งหมด นอกเหนือจากกรอบเวลาและระยะเวลาขั้นต่ำที่ระบุไว้ใน BreakRequest แล้ว
ในทางปฏิบัติ FrequencyConstraint อาจใช้กับช่วงพักที่ไม่ต่อเนื่อง ตัวอย่างเช่น กำหนดการต่อไปนี้เป็นไปตามตัวอย่าง "1 ชั่วโมงทุก 12 ชั่วโมง"
  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 หลัก โดยลงท้ายด้วย  | 
วัตถุประสงค์
วัตถุประสงค์จะแทนที่รูปแบบต้นทุนโดยสมบูรณ์ จึงใช้ร่วมกับต้นทุนที่มีอยู่ไม่ได้ วัตถุประสงค์แต่ละรายการจะเชื่อมโยงกับค่าใช้จ่ายที่กำหนดไว้ล่วงหน้าจำนวนหนึ่ง เช่น แอตทริบิวต์ยานพาหนะ การจัดส่ง หรือการเปลี่ยน
เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request
| การแสดง JSON | 
|---|
| {
  "type": enum ( | 
| ช่อง | |
|---|---|
| type | 
 ประเภทของวัตถุประสงค์ | 
| weight | 
 ความสําคัญของวัตถุประสงค์นี้เมื่อเทียบกับวัตถุประสงค์อื่นๆ ซึ่งอาจเป็นจำนวนใดก็ได้ที่ไม่ใช่ค่าลบ โดยน้ำหนักไม่จำเป็นต้องรวมกันได้เท่ากับ 1 น้ำหนักเริ่มต้นคือ 1.0 | 
ประเภท
ประเภทวัตถุประสงค์ที่จะแมปกับชุดค่าใช้จ่าย
| Enum | |
|---|---|
| DEFAULT | ระบบจะใช้ชุดค่าใช้จ่ายเริ่มต้นเพื่อให้ได้โซลูชันที่สมเหตุสมผล หมายเหตุ: วัตถุประสงค์นี้สามารถใช้เพียงอย่างเดียวได้ แต่ระบบจะเพิ่มวัตถุประสงค์นี้ด้วยน้ำหนัก 1.0 เสมอเป็นพื้นฐานให้กับวัตถุประสงค์ที่ผู้ใช้ระบุไว้ หากยังไม่มีวัตถุประสงค์ดังกล่าว | 
| MIN_DISTANCE | วัตถุประสงค์ "MIN" ระยะทางรวมในการเดินทางน้อยที่สุด | 
| MIN_WORKING_TIME | ลดเวลาทํางานทั้งหมดโดยรวมของยานพาหนะทั้งหมด | 
| MIN_TRAVEL_TIME | เหมือนกับด้านบน แต่เน้นที่เวลาเดินทางเท่านั้น | 
| MIN_NUM_VEHICLES | ลดจำนวนยานพาหนะที่ใช้งาน | 
DurationDistanceMatrix
ระบุระยะเวลาและเมตริกระยะทางจากสถานที่เริ่มต้นของยานพาหนะและการเข้าชมไปยังสถานที่สิ้นสุดของยานพาหนะและการเข้าชม
| การแสดง JSON | 
|---|
| {
  "rows": [
    {
      object ( | 
| ช่อง | |
|---|---|
| rows[] | 
 ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง โดยต้องมีองค์ประกอบเท่ากับ  | 
| vehicleStartTag | 
 แท็กที่กําหนดว่าเมตริกระยะเวลาและระยะทางนี้มีผลกับยานพาหนะใด หากเป็นค่าว่าง รายการนี้จะมีผลกับยานพาหนะทุกคัน และจะมีได้เพียงเมทริกซ์เดียวเท่านั้น การเริ่มต้นยานพาหนะแต่ละรายการต้องตรงกับเมทริกซ์เพียงรายการเดียว กล่าวคือ ช่อง  เมทริกซ์ทั้งหมดต้องมี  | 
แถว
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง
| การแสดง JSON | 
|---|
| { "durations": [ string ], "meters": [ number ] } | 
| ช่อง | |
|---|---|
| durations[] | 
 ค่าระยะเวลาของแถวหนึ่งๆ โดยต้องมีองค์ประกอบเท่ากับ  ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| meters[] | 
 ค่าระยะทางของแถวหนึ่งๆ หากไม่มีต้นทุนหรือข้อจำกัดที่อ้างอิงถึงระยะทางในโมเดล คุณก็ปล่อยฟิลด์นี้ว่างไว้ได้ แต่หากมี ฟิลด์นี้ต้องมีองค์ประกอบเท่ากับ  | 
TransitionAttributes
ระบุแอตทริบิวต์ของการเปลี่ยนระหว่างการเข้าชม 2 ครั้งติดต่อกันในเส้นทาง 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 ระบบจะรองรับเฉพาะขีดจำกัดที่ไม่บังคับเท่านั้น | 
| delay | 
 ระบุความล่าช้าที่เกิดขึ้นเมื่อทำการเปลี่ยนนี้ ความล่าช้านี้จะเกิดขึ้นหลังจากการเข้าชมแหล่งที่มาสิ้นสุดลงและก่อนเริ่มการเข้าชมปลายทางเสมอ ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
ShipmentTypeIncompatibility
ระบุความเข้ากันไม่ได้ระหว่างการจัดส่งโดยขึ้นอยู่กับ shipmentType การแสดงการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกันจะถูกจำกัดตามโหมดที่เข้ากันไม่ได้
| การแสดง JSON | 
|---|
| {
  "types": [
    string
  ],
  "incompatibilityMode": enum ( | 
| ช่อง | |
|---|---|
| types[] | 
 รายการประเภทที่ใช้ร่วมกันไม่ได้ การจัดส่ง 2 รายการที่มี  | 
| incompatibilityMode | 
 โหมดที่ใช้กับการทำงานร่วมกันไม่ได้ | 
IncompatibilityMode
โหมดที่กําหนดวิธีจํากัดการแสดงผลของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกัน
| Enum | |
|---|---|
| INCOMPATIBILITY_MODE_UNSPECIFIED | โหมดที่เข้ากันไม่ได้ซึ่งไม่ได้ระบุ ไม่ควรใช้ค่านี้ | 
| NOT_PERFORMED_BY_SAME_VEHICLE | ในโหมดนี้ การจัดส่ง 2 รายการที่มีประเภทไม่เข้ากันได้จะใช้ยานพาหนะคันเดียวกันไม่ได้ | 
| NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | สำหรับการจัดส่ง 2 รายการที่มีประเภทที่ใช้ร่วมกันไม่ได้กับโหมดการทำงานร่วมกันไม่ได้ของ  
 | 
ShipmentTypeRequirement
ระบุข้อกำหนดระหว่างการจัดส่งตาม shipmentType ข้อมูลจำเพาะของข้อกำหนดจะกำหนดโดยโหมดข้อกำหนด
| การแสดง JSON | 
|---|
| {
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum ( | 
| ช่อง | |
|---|---|
| requiredShipmentTypeAlternatives[] | 
 รายการประเภทการจัดส่งทางเลือกที่  | 
| dependentShipmentTypes[] | 
 การจัดส่งทั้งหมดที่มีประเภทในช่อง  หมายเหตุ: ไม่อนุญาตให้ใช้เงื่อนไขแบบเชน เช่น  | 
| requirementMode | 
 โหมดที่ใช้กับข้อกําหนด | 
RequirementMode
โหมดที่กำหนดลักษณะของการจัดส่งแบบมีความสัมพันธ์ในเส้นทาง
| Enum | |
|---|---|
| REQUIREMENT_MODE_UNSPECIFIED | โหมดข้อกำหนดที่ไม่ได้ระบุ ไม่ควรใช้ค่านี้ | 
| PERFORMED_BY_SAME_VEHICLE | ในโหมดนี้ การจัดส่ง "ที่ต้องอาศัย" ทั้งหมดต้องใช้ยานพาหนะเดียวกันกับการจัดส่ง "ที่ต้องใช้" อย่างน้อย 1 รายการ | 
| IN_SAME_VEHICLE_AT_PICKUP_TIME | เมื่อใช้โหมด  ดังนั้นการรับพัสดุ "แบบมีเงื่อนไข" จึงต้องมีอย่างใดอย่างหนึ่งต่อไปนี้ 
 | 
| IN_SAME_VEHICLE_AT_DELIVERY_TIME | เช่นเดียวกับก่อนหน้านี้ ยกเว้นการจัดส่งที่ "ขึ้นอยู่กับ" จะต้องมีการจัดส่งที่ "จำเป็น" ในยานพาหนะ ณ เวลานำส่ง | 
PrecedenceRule
กฎลําดับความสําคัญระหว่าง 2 เหตุการณ์ (แต่ละเหตุการณ์คือการไปรับหรือการนำส่งการจัดส่ง): เหตุการณ์ "ที่ 2" ต้องเริ่มต้นหลังจากเหตุการณ์ "ที่ 1" เริ่มต้นอย่างน้อย offsetDuration
ลําดับความสําคัญหลายรายการอาจอ้างอิงถึงเหตุการณ์เดียวกัน (หรือที่เกี่ยวข้อง) เช่น "การไปรับ B เกิดขึ้นหลังจากการนำส่ง A" และ "การไปรับ C เกิดขึ้นหลังจากการไปรับ B"
นอกจากนี้ ลําดับความสําคัญจะมีผลก็ต่อเมื่อมีการจัดส่งทั้ง 2 รายการเท่านั้น มิเช่นนั้นระบบจะไม่สนใจ
| การแสดง JSON | 
|---|
| { "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } | 
| ช่อง | |
|---|---|
| firstIsDelivery | 
 ระบุว่าเหตุการณ์ "แรก" เป็นการนําส่งหรือไม่ | 
| secondIsDelivery | 
 ระบุว่าเหตุการณ์ "ที่ 2" เป็นการแสดงโฆษณาหรือไม่ | 
| offsetDuration | 
 ส่วนต่างระหว่างเหตุการณ์ "แรก" กับ "ที่ 2" อาจเป็นค่าลบได้ ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย " | 
| firstIndex | 
 ดัชนีการจัดส่งของเหตุการณ์ "แรก" ต้องระบุข้อมูลในช่องนี้ | 
| secondIndex | 
 ดัชนีการจัดส่งของเหตุการณ์ "ที่ 2" ต้องระบุข้อมูลในช่องนี้ |