ดัชนี
RouteOptimization
(อินเทอร์เฟซ)AggregatedMetrics
(ข้อความ)BatchOptimizeToursMetadata
(ข้อความ)BatchOptimizeToursRequest
(ข้อความ)BatchOptimizeToursRequest.AsyncModelConfig
(ข้อความ)BatchOptimizeToursResponse
(ข้อความ)BreakRule
(ข้อความ)BreakRule.BreakRequest
(ข้อความ)BreakRule.FrequencyConstraint
(ข้อความ)DataFormat
(enum)DistanceLimit
(ข้อความ)GcsDestination
(ข้อความ)GcsSource
(ข้อความ)InjectedSolutionConstraint
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(enum)InputConfig
(ข้อความ)Location
(ข้อความ)OptimizeToursRequest
(ข้อความ)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(ข้อความ)OptimizeToursResponse.Metrics
(ข้อความ)OptimizeToursValidationError
(ข้อความ)OptimizeToursValidationError.FieldReference
(ข้อความ)OutputConfig
(ข้อความ)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
(enum)ShipmentTypeRequirement
(ข้อความ)ShipmentTypeRequirement.RequirementMode
(enum)SkippedShipment
(ข้อความ)SkippedShipment.Reason
(ข้อความ)SkippedShipment.Reason.Code
(enum)TimeWindow
(ข้อความ)TransitionAttributes
(ข้อความ)Vehicle
(ข้อความ)Vehicle.DurationLimit
(ข้อความ)Vehicle.LoadLimit
(ข้อความ)Vehicle.LoadLimit.Interval
(ข้อความ)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)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]
- ต้องตั้งค่านาโนหรือตั้งค่าเป็น 0
google.protobuf.Duration
- วินาทีต้องเป็นตัวเลข [0, 253402300799] เช่น ใน [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]
- ต้องตั้งค่านาโนหรือตั้งค่าเป็น 0
google.type.LatLng
- ละติจูดต้องเป็นค่า [-90.0, 90.0]
- ลองจิจูดต้องอยู่ใน [-180.0, 180.0]
- ละติจูดและลองจิจูดอย่างน้อย 1 ค่าต้องไม่ใช่ 0
BatchOptimizeTours |
---|
เพิ่มประสิทธิภาพการทัวร์ชมยานพาหนะสำหรับข้อความ วิธีการนี้เป็นการดำเนินการที่ใช้เวลานาน (LRO) อินพุตสำหรับการเพิ่มประสิทธิภาพ (
|
OptimizeTours |
---|
ส่ง โมเดล โดยมีเป้าหมายเพื่อกำหนด
|
AggregatedMetrics
เมตริกรวมสำหรับ ShipmentRoute
(การแสดงผลสำหรับ OptimizeToursResponse
ในองค์ประกอบ Transition
และ/หรือ Visit
ทั้งหมด (ผลตอบแทนใน ShipmentRoute
ทั้งหมด)
ช่อง | |
---|---|
performed_shipment_count |
จำนวนการจัดส่งที่ดำเนินการ โปรดทราบว่าการจับคู่การรับสินค้าและการจัดส่งจะนับเพียงครั้งเดียว |
travel_duration |
ระยะเวลาการเดินทางทั้งหมดสำหรับเส้นทางหรือวิธีแก้ไข |
wait_duration |
ระยะเวลารอทั้งหมดสำหรับเส้นทางหรือโซลูชัน |
delay_duration |
ระยะเวลาล่าช้าทั้งหมดสำหรับเส้นทางหรือวิธีแก้โจทย์ |
break_duration |
ระยะเวลาพักทั้งหมดสำหรับเส้นทางหรือวิธีแก้ไข |
visit_duration |
ระยะเวลาการเข้าชมทั้งหมดสำหรับเส้นทางหรือวิธีแก้โจทย์ |
total_duration |
ระยะเวลารวมควรเท่ากับผลรวมของระยะเวลาทั้งหมดข้างต้น สำหรับเส้นทาง ค่านี้ยังสอดคล้องกับปัจจัยต่อไปนี้ด้วย
|
travel_distance_meters |
ระยะทางรวมในการเดินทางสำหรับเส้นทางหรือวิธีแก้โจทย์ |
max_loads |
โหลดสูงสุดที่ทำได้ตลอดเส้นทาง (โซลูชัน Resp.) สำหรับแต่ละจำนวนในเส้นทางนี้ (โซลูชันการตอบสนอง) ซึ่งคำนวณเป็นจำนวนสูงสุดเหนือ |
BatchOptimizeToursMetadata
ประเภทนี้ไม่มีช่อง
ข้อมูลเมตาของการดำเนินการสำหรับการเรียกใช้ BatchOptimizeToursRequest
BatchOptimizeToursRequest
ส่งคำขอเพิ่มประสิทธิภาพทัวร์ชมแบบกลุ่มเป็นการดำเนินการแบบไม่พร้อมกัน ไฟล์อินพุตแต่ละไฟล์ควรมี OptimizeToursRequest
1 รายการ และไฟล์เอาต์พุตแต่ละไฟล์จะมี OptimizeToursResponse
1 รายการ คำขอมีข้อมูลสำหรับอ่าน/เขียนและแยกวิเคราะห์ไฟล์ ไฟล์อินพุตและเอาต์พุตทั้งหมดควรอยู่ในโปรเจ็กต์เดียวกัน
ช่อง | |
---|---|
parent |
ต้องระบุ กำหนดกลุ่มเป้าหมายโปรเจ็กต์และสถานที่เพื่อโทรออก รูปแบบ: * หากไม่มีการระบุตำแหน่ง ระบบจะเลือกภูมิภาคโดยอัตโนมัติ |
model_configs[] |
ต้องระบุ ข้อมูลอินพุต/เอาต์พุตรูปแบบการซื้อแต่ละรูปแบบ เช่น เส้นทางไฟล์และรูปแบบข้อมูล |
AsyncModelConfig
ข้อมูลสำหรับการแก้ปัญหาโมเดลการเพิ่มประสิทธิภาพหนึ่งแบบไม่พร้อมกัน
ช่อง | |
---|---|
display_name |
ไม่บังคับ ชื่อโมเดลที่ผู้ใช้กำหนด สามารถใช้เป็นชื่อแทนโดยผู้ใช้เพื่อติดตามโมเดล |
input_config |
ต้องระบุ ข้อมูลเกี่ยวกับโมเดลอินพุต |
output_config |
ต้องระบุ ข้อมูลตำแหน่งของเอาต์พุตที่ต้องการ |
BatchOptimizeToursResponse
ประเภทนี้ไม่มีช่อง
ตอบกลับ BatchOptimizeToursRequest
ซึ่งจะแสดงผลในการดำเนินการที่ใช้เวลานานหลังจากการดำเนินการเสร็จสมบูรณ์
BreakRule
กฎในการสร้างช่วงพักสำหรับยานพาหนะ (เช่น ช่วงพักกลางวัน) ช่วงพักคือระยะเวลาที่ต่อเนื่องกันระหว่างที่พาหนะไม่มีการใช้งานที่ตำแหน่งปัจจุบันและไม่สามารถเยี่ยมชมได้ เวลาพักอาจเกิดเหตุการณ์ต่อไปนี้
- ระหว่างการเดินทางระหว่างการเข้าชม 2 ครั้ง (ซึ่งรวมถึงเวลาที่อยู่ก่อนหรือหลังการเข้าชม แต่ไม่ใช่ระหว่างการเข้าชม) ซึ่งในกรณีนี้จะเป็นการขยายเวลาขนส่งในระหว่างการเข้าชมนั้นๆ
- หรือก่อนที่รถจะสตาร์ท (รถอาจไม่สตาร์ทระหว่างหยุดพัก) ซึ่งในกรณีนี้จะไม่มีผลต่อเวลาเริ่มต้นของรถ
- หรือหลังสิ้นสุดยานพาหนะ (ด้วยเวลาสิ้นสุดของยานพาหนะ)
ช่อง | |
---|---|
break_requests[] |
ลำดับของช่วงพัก ดูข้อความ |
frequency_constraints[] |
อาจมี |
BreakRequest
คุณต้องทราบลำดับของการพัก (เช่น หมายเลขและลำดับ) ที่ใช้กับยานพาหนะแต่ละคันล่วงหน้า BreakRequest
ที่ซ้ำจะกำหนดลำดับดังกล่าว ตามลำดับที่ต้องแสดง กรอบเวลา (earliest_start_time
/ latest_start_time
) อาจซ้อนทับกัน แต่ต้องเข้ากันได้กับคำสั่งซื้อ (เลือกไว้)
ช่อง | |
---|---|
earliest_start_time |
ต้องระบุ ขอบเขตล่าง (รวม) เมื่อเริ่มต้นช่วงพัก |
latest_start_time |
ต้องระบุ ขอบเขตบน (รวม) เมื่อเริ่มต้นช่วงพัก |
min_duration |
ต้องระบุ ระยะเวลาขั้นต่ำของช่วงพัก ต้องเป็นค่าบวก |
FrequencyConstraint
เราอาจจำกัดความถี่และระยะเวลาของช่วงพักที่ระบุไว้ข้างต้นด้วยการบังคับใช้ความถี่ช่วงพักขั้นต่ำ เช่น "ต้องมีช่วงพักอย่างน้อย 1 ชั่วโมงทุก 12 ชั่วโมง" สมมติว่าค่านี้แปลได้ว่า "ภายในกรอบเวลาการเลื่อนที่ 12 ชม. ต้องมีช่วงพักอย่างน้อย 1 ชั่วโมงอย่างน้อย 1 ชั่วโมง" ตัวอย่างนั้นจะแปลค่าเป็น FrequencyConstraint
ต่อไปนี้
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
เวลาและระยะเวลาของช่วงพักในโซลูชันจะเป็นไปตามข้อจำกัดดังกล่าวทั้งหมด นอกเหนือจากกรอบเวลาและระยะเวลาขั้นต่ำที่ระบุไว้ใน BreakRequest
แล้ว
FrequencyConstraint
ในทางปฏิบัติอาจมีผลกับช่วงพักโฆษณาที่ไม่ต่อเนื่อง ตัวอย่างเช่น กำหนดเวลาต่อไปนี้เป็นไปตามตัวอย่าง "1h ทุก 12h"
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
รูปแบบข้อมูลสำหรับไฟล์อินพุตและเอาต์พุต
Enum | |
---|---|
DATA_FORMAT_UNSPECIFIED |
ค่าไม่ถูกต้อง รูปแบบต้องไม่เป็น UNSPECIFIED |
JSON |
JavaScript Object Notation |
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_above_soft_max |
ต้นทุนต่อกิโลเมตรที่เกิดขึ้นหากระยะทางเกินขีดจํากัด
ค่าใช้จ่ายต้องไม่ติดลบ |
GcsDestination
ตำแหน่งของ Google Cloud Storage ที่จะเขียนไฟล์เอาต์พุต
ช่อง | |
---|---|
uri |
ต้องระบุ URI ของ Google Cloud Storage |
GcsSource
ตำแหน่ง Google Cloud Storage ที่จะอ่านไฟล์อินพุต
ช่อง | |
---|---|
uri |
ต้องระบุ URI ของออบเจ็กต์ Google Cloud Storage ที่มีรูปแบบ |
InjectedSolutionConstraint
โซลูชันที่แทรกอยู่ในคำขอ รวมถึงข้อมูลว่าต้องจำกัดการเข้าชมใดบ้างและวิธีการจำกัดการเข้าชม
ช่อง | |
---|---|
routes[] |
เส้นทางของโซลูชันที่จะแทรก บางเส้นทางอาจถูกตัดออกจากโซลูชันเดิม เส้นทางและการจัดส่งที่ข้ามไปต้องเป็นไปตามสมมติฐานเกี่ยวกับความถูกต้องพื้นฐานที่ระบุไว้สำหรับ |
skipped_shipments[] |
ข้ามการจัดส่งโซลูชันที่จะใส่ โซลูชันบางอย่างอาจไม่รวมอยู่ในโซลูชันต้นฉบับ โปรดดูช่อง |
constraint_relaxations[] |
สําหรับกลุ่มยานพาหนะ 0 กลุ่มขึ้นไป ให้ระบุเวลาและระยะเวลาที่จะลดข้อจํากัด หากช่องนี้เว้นว่างไว้ ระบบจะจำกัดเส้นทางยานพาหนะทุกเส้นทางที่ไม่ว่างเปล่าให้หมด |
ConstraintRelaxation
สำหรับกลุ่มยานพาหนะ ให้ระบุว่าข้อจำกัดในการเข้าชมใดที่จะมีการผ่อนปรนและที่ระดับใด ระบบจะจำกัดการจัดส่งที่ระบุในช่อง skipped_shipment
กล่าวคือ ทำให้ไม่สามารถดำเนินการได้
ช่อง | |
---|---|
relaxations[] |
การผ่อนปรนข้อจำกัดการเข้าชมทั้งหมดที่จะมีผลกับการเข้าชมบนเส้นทางที่มียานพาหนะใน |
vehicle_indices[] |
ระบุดัชนียานพาหนะที่ข้อจำกัดการเข้าชม ดัชนีรถยนต์ได้รับการแมปเหมือนกับ |
การพักผ่อน
หาก relaxations
ว่างเปล่า เวลาเริ่มต้นและลำดับการเข้าชมทั้งหมดในวันที่ routes
จะถูกจำกัดอย่างสิ้นเชิง และจะไม่สามารถแทรกหรือเพิ่มการเข้าชมใหม่ลงในเส้นทางเหล่านั้นได้ นอกจากนี้ เวลาเริ่มต้นและสิ้นสุดของยานพาหนะใน routes
จะมีข้อจำกัดโดยสมบูรณ์ ยกเว้นในกรณีที่รถว่างเปล่า (กล่าวคือ ไม่มีการเข้าชมและตั้งค่า used_if_route_is_empty
เป็น "เท็จ" ในรุ่น)
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
เพิ่ม relaxations
2 รายการซึ่งมี level
เดียวกัน: รายการหนึ่งมี threshold_visit_count
ที่ตั้งไว้ และอีกรายการมี threshold_time
เท่านั้น หากการเข้าชมเป็นไปตามเงื่อนไขของ relaxations
หลายรายการ ระบบจะใช้ระดับที่ผ่อนคลายมากที่สุด ผลที่ตามมาคือ ระดับความผ่อนคลายจะไม่ลดลงตั้งแต่ที่ยานพาหนะเริ่มผ่านการเข้าชมเส้นทางไปจนถึงจุดสิ้นสุดของยานพาหนะ กล่าวคือ ระดับการผ่อนคลายจะไม่ลดลงเมื่อเส้นทางคืบหน้าไปเรื่อยๆ
เวลาและลำดับของการเข้าชมเส้นทางที่ไม่ตรงกับเงื่อนไขของเกณฑ์ของ relaxations
จะถูกจำกัดอย่างสมบูรณ์ และไม่สามารถแทรกการเข้าชมลงในลำดับเหล่านี้ได้ นอกจากนี้ หากสตาร์ทหรือท้ายรถไม่เป็นไปตามเงื่อนไขของการผ่อนปรน เวลาจะคงที่เว้นแต่จะว่าง
ช่อง | |
---|---|
level |
ระดับการผ่อนปรนข้อจำกัดที่มีผลเมื่อเป็นไปตามเงื่อนไขที่หรือหลังจาก |
threshold_time |
เวลาที่อาจใช้ |
threshold_visit_count |
จำนวนการเข้าชมที่ หากเป็น |
ระดับ
แสดงระดับการผ่อนปรนข้อจำกัดต่างๆ ซึ่งใช้สำหรับการเข้าชมและระดับที่ตามมาเมื่อเป็นไปตามเงื่อนไขของเกณฑ์
แจกแจงด้านล่างตามลำดับเพื่อความผ่อนคลายมากขึ้น
Enum | |
---|---|
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.redirectoptimizer.v1.Routeเพิ่มประสิทธิภาพService.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[] |
หากเส้นทางนั้นไม่ว่างเปล่า ระบบจะรีเฟรชเส้นทางที่ระบุโดยไม่แก้ไขลำดับการเข้าชมหรือเวลาในการเดินทาง แต่จะอัปเดตเฉพาะรายละเอียดอื่นๆ เท่านั้น ไม่สามารถแก้ไขปัญหาของโมเดลได้ ตั้งแต่วันที่ 11/2020 เป็นต้นไป การดำเนินการนี้จะสร้างเฉพาะโพลีไลน์ของเส้นทางที่ไม่ว่างเปล่า และกําหนดให้ ช่อง ต้องไม่ใช้ฟิลด์นี้ร่วมกับ
|
interpret_injected_solutions_using_labels |
หากจริง:
การตีความนี้ใช้กับช่อง หากเป็น "จริง" ป้ายกำกับในหมวดหมู่ต่อไปนี้จะต้องปรากฏในหมวดหมู่นั้นอย่างน้อย 1 ครั้ง
หาก การนำการเข้าชมเส้นทางหรือทั้งเส้นทางออกจากโซลูชันที่แทรกเข้าไปอาจส่งผลต่อข้อจำกัดโดยนัย ซึ่งอาจทำให้มีการเปลี่ยนแปลงโซลูชัน ข้อผิดพลาดในการตรวจสอบความถูกต้อง หรือความเป็นไปได้ หมายเหตุ: ผู้โทรต้องตรวจสอบว่า |
consider_road_traffic |
พิจารณาการประมาณการเข้าชมในการคำนวณ |
populate_polylines |
หาก "จริง" ระบบจะป้อนข้อมูลของเส้นประกอบในคำตอบ |
populate_transition_polylines |
หาก "จริง" ระบบจะป้อนข้อมูลของเส้นประกอบในคำตอบ |
allow_large_deadline_despite_interruption_risk |
หากตั้งค่านี้ คำขอจะมีกำหนดเวลา (ดู https://grpc.io/blog/deadlines) ได้สูงสุด 60 นาที ไม่เช่นนั้น กำหนดเวลาสูงสุดคือ 30 นาที โปรดทราบว่าคำขอที่มีระยะเวลานานมีความเสี่ยงที่ขนาดใหญ่กว่า (แต่ยังน้อย) ที่จะเกิดการหยุดชะงัก |
use_geodesic_distances |
หากเป็นจริง ระยะทางในการเดินทางจะคำนวณโดยใช้ระยะทางตามภูมิสารสนเทศแทนระยะทางใน Google Maps และเวลาเดินทางจะคำนวณโดยใช้ระยะทางทรงกลมด้วยความเร็วที่กำหนดโดย |
label |
ป้ายกำกับที่อาจใช้เพื่อระบุคำขอนี้ โดยจะรายงานกลับมาใน |
geodesic_meters_per_second |
เมื่อ |
max_validation_errors |
ลดจำนวนข้อผิดพลาดในการตรวจสอบที่ส่งกลับ โดยทั่วไปแล้ว ข้อผิดพลาดเหล่านี้จะแนบอยู่กับเพย์โหลดข้อผิดพลาด INVALID_ARGUMENT เป็นรายละเอียดข้อผิดพลาด BadRequest (https://cloud.google.com/apis/design/errors#error_details) ยกเว้นกรณีที่ solving_mode=VALIDATE_ONLY: โปรดดูช่อง |
SearchMode
โหมดที่จะกำหนดพฤติกรรมการค้นหา การแลกเปลี่ยนเวลาในการตอบสนองกับคุณภาพของโซลูชัน ระบบจะบังคับใช้กำหนดเวลาคำขอส่วนกลางในทุกโหมด
Enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
โหมดการค้นหาที่ไม่ระบุ เทียบเท่ากับ RETURN_FAST |
RETURN_FAST |
หยุดการค้นหาหลังจากพบโซลูชันที่ดีรายการแรก |
CONSUME_ALL_AVAILABLE_TIME |
ใช้เวลาที่มีทั้งหมดเพื่อค้นหาโซลูชันที่ดีกว่า |
SolvingMode
กำหนดวิธีที่เครื่องมือแก้โจทย์ควรจัดการคำขอ ในทุกโหมดยกเว้น VALIDATE_ONLY
หากคำขอไม่ถูกต้อง คุณจะได้รับข้อผิดพลาด INVALID_REQUEST
ดู max_validation_errors
เพื่อจำกัดจำนวนข้อผิดพลาดที่แสดงผล
Enum | |
---|---|
DEFAULT_SOLVE |
แก้โจทย์ในโมเดล |
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"] คือผลรวมของต้นทุนในการรับสินค้าทั้งหมดเมื่อเทียบกับโซลูชัน ค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับแอตทริบิวต์การเปลี่ยน ซึ่งจะรายงานแบบรวม ณ วันที่ 01/2022 เท่านั้น |
total_cost |
ต้นทุนรวมของโซลูชัน ผลรวมของค่าทั้งหมดในแมปต้นทุน |
OptimizeToursValidationError
อธิบายข้อผิดพลาดที่พบเมื่อตรวจสอบความถูกต้องของ OptimizeToursRequest
ช่อง | |
---|---|
code |
ข้อผิดพลาดในการตรวจสอบจะกำหนดโดยคู่อุปกรณ์ ( ช่องอื่นๆ (ด้านล่าง) จะให้บริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาด ข้อผิดพลาดหลายข้อ: เมื่อมีข้อผิดพลาดหลายรายการ กระบวนการตรวจสอบจะพยายามแสดงผลข้อผิดพลาดหลายรายการ นี่เป็นกระบวนการที่ไม่สมบูรณ์แบบ คล้ายกับคอมไพเลอร์ ข้อผิดพลาดในการตรวจสอบความถูกต้องบางอย่างอาจ "ร้ายแรง" ซึ่งหมายความว่าจะเป็นการหยุดกระบวนการตรวจสอบทั้งหมด โดยในกรณีนี้คือข้อผิดพลาด ความเสถียร: การอ้างอิง: รายการคู่ (รหัส, ชื่อ) ทั้งหมด
|
display_name |
ชื่อที่แสดงของข้อผิดพลาด |
fields[] |
บริบทของข้อผิดพลาดอาจเกี่ยวข้องกับช่อง 0, 1 (ส่วนใหญ่) หรือมีช่องมากกว่านั้น เช่น การอ้างอิงยานพาหนะหมายเลข 4 และการมารับสินค้าที่ร้าน #2 อาจมีลักษณะดังนี้
อย่างไรก็ตาม โปรดทราบว่า Cardinality ของ |
error_message |
สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด มีการแมปแบบ 1:1 ระหว่าง ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับ |
offending_values |
อาจมีค่าของฟิลด์ ทั้งนี้อาจไม่มีให้บริการเสมอไป คุณไม่ควรเชื่อถือเป็นอย่างยิ่งและใช้เพื่อแก้ไขข้อบกพร่องของโมเดลด้วยตนเองเท่านั้น |
FieldReference
ระบุบริบทสำหรับข้อผิดพลาดในการตรวจสอบความถูกต้อง FieldReference
จะอ้างอิงช่องที่ระบุในไฟล์นี้เสมอและใช้โครงสร้างลำดับชั้นเดียวกัน ตัวอย่างเช่น เราอาจระบุองค์ประกอบ #2 ของ start_time_windows
ของยานพาหนะ #5 โดยใช้:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
แต่เราไม่ระบุเอนทิตีระดับบนสุด เช่น OptimizeToursRequest
หรือ ShipmentModel
เพื่อไม่ให้ข้อความแสดงมากเกินไป
ช่อง | |
---|---|
name |
ชื่อช่อง เช่น "ยานพาหนะ" |
sub_field |
ช่องย่อยที่ซ้อนกันซ้ำๆ หากจำเป็น |
ฟิลด์สหภาพ
|
|
index |
ดัชนีของช่องหากมีค่าซ้ำ |
key |
คีย์ ถ้าช่องนี้เป็นแผนที่ |
OutputConfig
ระบุปลายทางสำหรับผลลัพธ์จาก [BatchOptimizeTours][google.maps.redirectoptimizer.v1.RouteOptimizationService.BatchOptimizeTours]
ช่อง | |
---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลเอาต์พุต |
ฟิลด์สหภาพ destination ต้องระบุ destination ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
gcs_destination |
ตำแหน่งของ Google Cloud Storage ที่จะเขียนเอาต์พุต |
การจัดส่ง
การจัดส่งสินค้ารายการเดียวจากการรับสินค้าไปยังสินค้าจัดส่งหนึ่งชิ้น หากต้องการให้ถือว่าการจัดส่งดำเนินการสำเร็จ ยานพาหนะที่ไม่ซ้ำกันต้องไปที่จุดรับเองแห่งใดแห่งหนึ่ง (และลดขีดจำกัดสำรองให้สอดคล้องกัน) จากนั้นจึงไปยังสถานที่นำส่งแห่งใดแห่งหนึ่งในภายหลัง (และจะเพิ่มขีดจำกัดสำรองอีกครั้งตามความเหมาะสม)
ช่อง | |
---|---|
display_name |
ชื่อที่แสดงที่ผู้ใช้กำหนดของการจัดส่ง โดยมีความยาวได้สูงสุด 63 อักขระและใช้อักขระ UTF-8 ได้ |
pickups[] |
ชุดตัวเลือกการรับสินค้าที่เชื่อมโยงกับการจัดส่ง หากไม่ระบุ ยานพาหนะจะต้องไปยังสถานที่ตั้งที่เกี่ยวข้องกับการนำส่งเท่านั้น |
deliveries[] |
ชุดทางเลือกในการนำส่งที่เชื่อมโยงกับการจัดส่ง หากไม่ระบุ ยานพาหนะจะต้องไปยังสถานที่ตั้งที่เกี่ยวข้องกับการรับสินค้าเท่านั้น |
load_demands |
น้ำหนักของการขนส่ง (เช่น น้ำหนัก ปริมาณ จำนวนพาเลต ฯลฯ) คีย์ในแผนที่ควรเป็นตัวระบุที่อธิบายประเภทของการโหลดที่เกี่ยวข้อง และควรรวมหน่วยไว้ด้วย ยกตัวอย่างเช่น "weight_kg", "Volume_gallons", "pallet_count" ฯลฯ หากคีย์ที่ระบุไม่ปรากฏในแผนที่ โหลดที่เกี่ยวข้องจะถือเป็นค่าว่าง |
allowed_vehicle_indices[] |
ชุดยานพาหนะที่สามารถดำเนินการจัดส่งนี้ได้ หากปล่อยว่างไว้ ยานพาหนะทุกคันอาจทำงานได้ ระบบระบุยานพาหนะตามดัชนีไว้ในรายชื่อ |
costs_per_vehicle[] |
ระบุค่าใช้จ่ายที่เกิดขึ้นเมื่อยานพาหนะแต่ละคันได้รับการจัดส่งนี้ หากระบุไว้ ไฟล์จะต้องมีอย่างใดอย่างหนึ่งต่อไปนี้
ค่าใช้จ่ายเหล่านี้ต้องอยู่ในหน่วยเดียวกับ |
costs_per_vehicle_indices[] |
ดัชนียานพาหนะที่ |
pickup_to_delivery_absolute_detour_limit |
ระบุเวลาเปลี่ยนเส้นทางสัมบูรณ์สูงสุดเทียบกับเส้นทางที่สั้นที่สุดจากการรับสินค้าจนถึงการนำส่ง หากระบุ ค่านั้นต้องไม่ติดลบและการจัดส่งต้องมีการรับสินค้าและการนำส่งเป็นอย่างน้อย เช่น ระบุระยะเวลาที่สั้นที่สุดในการเดินทางจากตัวเลือกการรับสินค้าที่เลือกไว้ไปยังทางเลือกการจัดส่งที่เลือกโดยตรง จากนั้นการตั้งค่า
หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดของข้อจำกัดที่มากขึ้นสำหรับคู่สินค้าที่จะมารับ/นำส่งแต่ละคู่ ตั้งแต่วันที่ 10/10/2017 เป็นต้นไป ระบบจะรองรับการเปลี่ยนเส้นทางในกรณีที่ระยะเวลาการเดินทางไม่ได้ขึ้นอยู่กับยานพาหนะเท่านั้น |
pickup_to_delivery_time_limit |
ระบุระยะเวลาสูงสุดตั้งแต่เริ่มรับสินค้าไปจนถึงเวลาเริ่มนำส่งพัสดุ หากระบุ ค่านั้นต้องไม่ติดลบและการจัดส่งต้องมีการรับสินค้าและการนำส่งเป็นอย่างน้อย ข้อมูลนี้ไม่ได้ขึ้นอยู่กับทางเลือกต่างๆ ที่เราเลือกใช้สำหรับการมารับที่ร้านและจัดส่ง หรือขึ้นอยู่กับความเร็วของยานพาหนะ สามารถระบุร่วมกับข้อจำกัดทางอ้อมสูงสุด: โซลูชันจะเป็นไปตามข้อกำหนดทั้ง 2 อย่าง |
shipment_type |
สตริงที่ไม่ว่างเปล่าที่ระบุ "ประเภท" สำหรับการจัดส่งนี้ ฟีเจอร์นี้สามารถใช้เพื่อกำหนดความไม่เข้ากันหรือข้อกำหนดระหว่าง แตกต่างจาก |
label |
ระบุป้ายกำกับสำหรับการจัดส่งนี้ ป้ายกำกับนี้มีการรายงานในคำตอบใน |
ignore |
หากเป็นจริง ให้ข้ามการจัดส่งนี้ แต่อย่าใช้ การละเว้นการจัดส่งจะทำให้เกิดข้อผิดพลาดในการตรวจสอบเมื่อมี อนุญาตให้เพิกเฉยต่อการจัดส่งที่ดำเนินการใน |
penalty_cost |
หากการจัดส่งไม่เสร็จสมบูรณ์ ค่าปรับนี้จะรวมอยู่ในค่าใช้จ่ายโดยรวมของเส้นทาง ระบบจะถือว่าการจัดส่งเสร็จสมบูรณ์หากมีการไปรับสินค้าที่ร้านหรือจัดส่งถึงบ้าน ค่าใช้จ่ายอาจแสดงในหน่วยเดียวกันกับที่ใช้สำหรับช่องที่เกี่ยวข้องกับค่าใช้จ่ายอื่นๆ ทั้งหมดในโมเดล และต้องเป็นค่าบวก สําคัญ: หากไม่ได้ระบุบทลงโทษนี้ จะถือว่าไม่มีที่สิ้นสุด กล่าวคือ ต้องดําเนินการจัดส่งให้เสร็จสมบูรณ์ |
pickup_to_delivery_relative_detour_limit |
ระบุเวลาทางอ้อมสูงสุดเมื่อเทียบกับเส้นทางที่สั้นที่สุดจากการรับสินค้าไปจนถึงการจัดส่ง หากระบุ ค่านั้นต้องไม่ติดลบและการจัดส่งต้องมีการรับสินค้าและการนำส่งเป็นอย่างน้อย เช่น ระบุระยะเวลาที่สั้นที่สุดในการเดินทางจากตัวเลือกการรับสินค้าที่เลือกไว้ไปยังทางเลือกการจัดส่งที่เลือกโดยตรง จากนั้นการตั้งค่า
หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดของข้อจำกัดที่มากขึ้นสำหรับคู่สินค้าที่จะมารับ/นำส่งแต่ละคู่ ตั้งแต่วันที่ 10/10/2017 เป็นต้นไป ระบบจะรองรับการเปลี่ยนเส้นทางในกรณีที่ระยะเวลาการเดินทางไม่ได้ขึ้นอยู่กับยานพาหนะเท่านั้น |
โหลด
เมื่อดำเนินการเข้าชม ระบบอาจรวมจำนวนเงินที่กำหนดไว้ล่วงหน้าลงในน้ำหนักบรรทุกของยานพาหนะหากเป็นการรับสินค้า หรือหักลบหากเป็นการนำส่ง ข้อความนี้จะระบุจำนวนเงินดังกล่าว ดูload_demands
ช่อง | |
---|---|
amount |
ปริมาณน้ำหนักบรรทุกของยานพาหนะที่ใช้ในการเยี่ยมชมยานพาหนะที่เกี่ยวข้องจะแตกต่างกันไป เนื่องจากเป็นจำนวนเต็ม จึงควรผู้ใช้เลือกหน่วยที่เหมาะสมเพื่อไม่ให้สูญเสียความแม่นยำ ต้องเท่ากับ ≥ 0 |
VisitRequest
ขอเข้าชมในยานพาหนะได้ด้วย โดยมีการระบุตำแหน่งทางภูมิศาสตร์ (หรือ 2 ตำแหน่ง ดูด้านล่าง) เวลาเปิดและปิดซึ่งแสดงเป็นกรอบเวลา และระยะเวลาการให้บริการ (เวลาที่ยานพาหนะใช้เมื่อมาถึงเพื่อไปรับหรือส่งคืนสินค้า)
ช่อง | |
---|---|
arrival_location |
ตำแหน่งทางภูมิศาสตร์ที่ยานพาหนะมาถึงเมื่อปฏิบัติ |
arrival_waypoint |
จุดอ้างอิงที่ยานพาหนะมาถึงเมื่อออก |
departure_location |
ตำแหน่งทางภูมิศาสตร์ที่พาหนะออกเดินทางหลังจาก |
departure_waypoint |
จุดอ้างอิงที่ยานพาหนะจะออกหลังจากเสร็จสิ้น |
tags[] |
ระบุแท็กที่แนบมากับคำขอการเข้าชม ไม่อนุญาตให้มีสตริงว่างหรือซ้ำกัน |
time_windows[] |
กรอบเวลาที่จํากัดเวลาถึงที่การเข้าชม โปรดทราบว่ายานพาหนะอาจออกเดินทางนอกกรอบเวลาถึง เช่น เวลาถึง + ระยะเวลาไม่จำเป็นต้องอยู่ในกรอบเวลา ซึ่งอาจส่งผลให้ต้องใช้เวลารอหากยานพาหนะมาถึงก่อน ไม่มี กรอบเวลาต้องไม่ต่อเนื่อง กล่าวคือ ไม่มีกรอบเวลาต้องทับซ้อนหรืออยู่ติดกันและต้องเรียงกันมากขึ้น ตั้งค่า |
duration |
ระยะเวลาการเข้าชม เช่น เวลาที่รถใช้ระหว่างขาเข้าและขาออก (หากต้องการรวมกับระยะเวลารอที่เป็นไปได้ โปรดดู |
cost |
ค่าใช้จ่ายในการให้บริการคำขอเยี่ยมชมนี้บนเส้นทางสำหรับยานพาหนะ ซึ่งสามารถใช้เพื่อชำระค่าใช้จ่ายที่แตกต่างกันสำหรับการมารับที่ร้านหรือการจัดส่งแต่ละรายการ ค่าใช้จ่ายนี้ต้องอยู่ในหน่วยเดียวกับ |
load_demands |
ความต้องการโหลดของคำขอการเข้าชมนี้ ซึ่งเหมือนกับช่อง |
visit_types[] |
ระบุประเภทการเข้าชม ซึ่งอาจใช้ในการจัดสรรเวลาเพิ่มเติมที่ต้องใช้ในการเดินทางไปยังยานพาหนะนี้ให้เสร็จสมบูรณ์ (ดู ประเภทหนึ่งๆ จะแสดงได้เพียงครั้งเดียวเท่านั้น |
label |
ระบุป้ายกำกับสำหรับ |
ShipmentModel
รูปแบบการจัดส่งประกอบด้วยชุดการจัดส่งที่ต้องดำเนินการโดยยานพาหนะหลายคัน ในขณะเดียวกันก็ลดค่าใช้จ่ายโดยรวม ซึ่งเป็นผลรวมของสิ่งต่อไปนี้
- ค่าใช้จ่ายในการกำหนดเส้นทางพาหนะ (ผลรวมของค่าใช้จ่ายต่อเวลาทั้งหมด ค่าใช้จ่ายต่อเวลาเดินทาง และค่าใช้จ่ายคงที่สำหรับยานพาหนะทุกคัน)
- บทลงโทษด้านการจัดส่งที่ไม่สมบูรณ์
- ต้นทุนของระยะเวลาการจัดส่งทั่วโลก
ช่อง | |
---|---|
shipments[] |
ชุดการจัดส่งที่ต้องดำเนินการในโมเดล |
vehicles[] |
ชุดยานพาหนะที่สามารถใช้ในการเข้าชม |
global_start_time |
เวลาเริ่มต้นและสิ้นสุดโดยรวมของโมเดล: ไม่มีเวลานอกช่วงนี้ถือว่าถูกต้อง ช่วงเวลาของโมเดลต้องน้อยกว่า 1 ปี กล่าวคือ เมื่อใช้ช่อง |
global_end_time |
หากไม่ได้ตั้งค่า ระบบจะใช้ 00:00:00 UTC วันที่ 1 มกราคม 1971 (เช่น วินาที 31536000, nanos: 0) เป็นค่าเริ่มต้น |
global_duration_cost_per_hour |
"ระยะเวลาทั่วโลก" ของแผนโดยรวมคือความแตกต่างระหว่างเวลาเริ่มต้นที่มีประสิทธิภาพเร็วที่สุดกับเวลาสิ้นสุดที่มีประสิทธิภาพล่าสุดของยานพาหนะทั้งหมด เช่น ผู้ใช้กำหนดค่าใช้จ่ายต่อชั่วโมงให้กับจำนวนนั้นได้เพื่อพยายามเพิ่มประสิทธิภาพให้งานเสร็จเร็วที่สุด เป็นต้น ค่าใช้จ่ายนี้ต้องอยู่ในหน่วยเดียวกับ |
duration_distance_matrices[] |
ระบุระยะเวลาและเมทริกซ์ระยะทางที่ใช้ในโมเดล หากช่องนี้เว้นว่างไว้ ระบบจะใช้ Google Maps หรือระยะทางทางภูมิศาสตร์แทน ทั้งนี้ขึ้นอยู่กับค่าของช่อง ตัวอย่างการใช้
|
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 |
จำกัดจำนวนยานพาหนะที่ใช้งานอยู่สูงสุด ยานพาหนะจอดอยู่หากเส้นทางมีการจัดส่งอย่างน้อย 1 ครั้ง ซึ่งสามารถใช้เพื่อจำกัดจำนวนเส้นทางในกรณีที่มีผู้ขับขี่น้อยกว่ายานพาหนะและยานพาหนะจำนวนมากเป็นยานพาหนะต่างกัน จากนั้นการเพิ่มประสิทธิภาพจะเลือกชุดย่อยของยานพาหนะที่ดีที่สุดที่จะใช้ ต้องเป็นเชิงบวกอย่างเคร่งครัด |
DurationDistanceMatrix
ระบุระยะเวลาและเมทริกซ์ระยะทางจากตำแหน่งการเยี่ยมชมและตำแหน่งเริ่มต้นของรถเพื่อไปยังสถานที่สุดท้ายของรถ
ช่อง | |
---|---|
rows[] |
ระบุแถวของระยะเวลาและเมทริกซ์ระยะทาง ต้องมีองค์ประกอบเท่ากับ |
vehicle_start_tag |
แท็กระบุว่ายานพาหนะใดที่ใช้ระยะเวลานี้และเมตริกระยะทางนี้ หากเว้นว่างไว้ การตั้งค่านี้จะมีผลกับยานพาหนะทั้งหมด และจะมีเมทริกซ์ได้เพียงรายการเดียว การสตาร์ทรถแต่ละครั้งต้องตรงกับเมทริกซ์ 1 ตัวเท่านั้น เช่น ช่อง เมทริกซ์ทั้งหมดต้องมี |
แถว
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง
ช่อง | |
---|---|
durations[] |
ค่าระยะเวลาของแถวหนึ่งๆ ต้องมีองค์ประกอบเท่ากับ |
meters[] |
ค่าระยะทางสำหรับแถวที่กำหนด หากไม่มีค่าใช้จ่ายหรือข้อจํากัดอ้างอิงถึงระยะทางในโมเดล คุณสามารถเว้นว่างไว้ได้ ไม่เช่นนั้นต้องมีองค์ประกอบมากเท่ากับ |
PrecedenceRule
กฎที่มีความสำคัญระหว่าง 2 เหตุการณ์ (แต่ละเหตุการณ์คือการรับสินค้าหรือการนำส่งการจัดส่ง): เหตุการณ์ที่ "ที่ 2" ต้องเริ่มขึ้นอย่างน้อย offset_duration
หลังจากเริ่มต้น "ครั้งแรก"
ลำดับความสำคัญหลายรายการอาจอ้างอิงถึงเหตุการณ์เดียวกัน (หรือที่เกี่ยวข้อง) เช่น "การรับสินค้า ข. จะเกิดขึ้นหลังจากการรับสินค้า ก." และ "การรับสินค้า ข. จะเกิดขึ้นหลังการรับสินค้า ข."
นอกจากนี้ ลำดับความสำคัญจะมีผลเมื่อมีการดำเนินการจัดส่งทั้ง 2 รายการและระบบจะไม่สนใจลำดับความสำคัญเท่านั้น
ช่อง | |
---|---|
first_is_delivery |
ระบุว่าเหตุการณ์ "แรก" เป็นการแสดงโฆษณาหรือไม่ |
second_is_delivery |
ระบุว่าเหตุการณ์ "ที่ 2" เป็นการแสดงโฆษณาหรือไม่ |
offset_duration |
ค่าชดเชยระหว่างเหตุการณ์ "แรก" กับ "วินาที" ซึ่งอาจเป็นค่าลบได้ |
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
สุดท้าย ต่อไปนี้เป็นวิธีจัดการการเดินทาง, BREAKS, DELAY และ WAIT ระหว่างการเปลี่ยน
- และไม่ซ้อนทับกัน
- {5} เป็นข้อมูลที่ไม่ซ้ำกันและต้องเป็นช่วงเวลาต่อเนื่องกันก่อนการเข้าชมครั้งถัดไป (หรือจุดสิ้นสุดยานพาหนะ) ดังนั้น การรู้ระยะเวลาความล่าช้าของเวลาเริ่มต้นและสิ้นสุดก็เพียงพอแล้ว
- BREAKS เป็นช่วงเวลาที่ต่อเนื่องและไม่ซ้อนทับกัน การตอบกลับจะระบุเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วง
- "การเดินทาง" และ "การรอ" เป็นแบบ "จองล่วงหน้าได้" ซึ่งอาจมีการขัดจังหวะหลายครั้งในช่วงการเปลี่ยนผ่านนี้ ลูกค้าจะสันนิษฐานได้ว่าการเดินทางจะเกิดขึ้น "โดยเร็วที่สุด" และ "รอ" จะเติมเวลาที่เหลือ
ตัวอย่าง (ที่ซับซ้อน)
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[] |
ลำดับการเข้าชมที่แสดงเส้นทาง การเข้าชม[i] คือการเข้าชมครั้งที่ i ในเส้นทาง หากช่องนี้เว้นว่างไว้ ระบบจะถือว่ายานพาหนะไม่มีการใช้งาน |
transitions[] |
เรียงลำดับรายการของการเปลี่ยนสำหรับเส้นทาง |
has_traffic_infeasibilities |
เมื่อ
การมาถึงที่ next_visit มีแนวโน้มที่จะเกิดขึ้นช้ากว่ากรอบเวลาปัจจุบัน เนื่องจากเวลาเดินทางโดยประมาณเพิ่มขึ้น |
route_polyline |
การแสดงเส้นประกอบที่เข้ารหัสของเส้นทาง ช่องนี้จะมีการป้อนข้อมูลเมื่อตั้งค่า |
breaks[] |
หยุดพักที่กำหนดเวลาไว้สำหรับยานพาหนะที่วิ่งเส้นทางนี้ ลำดับ |
metrics |
เมตริกระยะเวลา ระยะทาง และโหลดสำหรับเส้นทางนี้ ช่องของ |
route_costs |
ค่าใช้จ่ายของเส้นทาง แยกตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทาง Proto ซึ่งสัมพันธ์กับอินพุต OptimizeToursRequest เช่น "model.shipments.pickups.cost" และค่าเหล่านี้คือค่าใช้จ่ายทั้งหมดที่สร้างขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวบรวมจากทั้งเส้นทาง หรืออีกนัยหนึ่งคือ ต้นทุน ["model.shipments.pickups.cost"] คือผลรวมของต้นทุนในการรับสินค้าทั้งหมดตลอดเส้นทาง ค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับแอตทริบิวต์การเปลี่ยน ซึ่งจะรายงานแบบรวม ณ วันที่ 01/2022 เท่านั้น |
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 |
สตริงแสดงจุดที่เข้ารหัสของเส้นประกอบ |
ทรานซิชัน
การเปลี่ยนระหว่าง 2 เหตุการณ์ในเส้นทาง ดูคำอธิบายของ 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 |
หากจริง การเข้าชมตรงกับการไปรับสินค้าที่ |
visit_request_index |
ดัชนีของ |
start_time |
เวลาที่การเข้าชมเริ่มต้น โปรดทราบว่ายานพาหนะอาจมาถึงก่อนเวลาดังกล่าว ณ สถานที่ที่เข้าชม เวลาสอดคล้องกับ |
load_demands |
ความต้องการโหลดการเข้าชมทั้งหมดที่เป็นผลรวมของการจัดส่งและคำขอการเข้าชม |
detour |
ใช้การเปลี่ยนเส้นทางเพิ่มเติมเนื่องจากการขนส่งสินค้าในเส้นทางก่อนการเข้าชม และระยะเวลารอที่อาจเกิดจากกรอบเวลา หากการเข้าชมเป็นการแสดงโฆษณา การเปลี่ยนเส้นทางจะคำนวณจากการรับสินค้าที่เกี่ยวข้องและเท่ากับค่าต่อไปนี้
มิเช่นนั้น จะคำนวณจากยานพาหนะ
|
shipment_label |
สำเนาของ |
visit_label |
สำเนาของ |
ShipmentTypeIncompatibility
ระบุความไม่เข้ากันระหว่างการจัดส่งตามประเภทการจัดส่ง [shipping_type] ลักษณะที่ปรากฏของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกันถูกจำกัดตามโหมดความไม่เข้ากัน
ช่อง | |
---|---|
types[] |
รายการประเภทที่ใช้ร่วมกันไม่ได้ การจัดส่ง 2 รายการที่มี |
incompatibility_mode |
ใช้โหมดกับความเข้ากันไม่ได้แล้ว |
IncompatibilityMode
โหมดที่กำหนดวิธีจำกัดลักษณะที่ปรากฏของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกัน
Enum | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
โหมดความไม่เข้ากันที่ไม่ได้ระบุ คุณไม่ควรใช้ค่านี้ |
NOT_PERFORMED_BY_SAME_VEHICLE |
ในโหมดนี้ การจัดส่ง 2 รายการที่มีประเภทที่ใช้ร่วมกันไม่ได้จะใช้ยานพาหนะคันเดียวกันไม่ได้ |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
สำหรับการจัดส่ง 2 รายการที่มีประเภทที่เข้ากันไม่ได้กับ
|
ShipmentTypeRequirement
ระบุข้อกำหนดระหว่างการจัดส่งตามประเภทการจัดส่ง [shipping_type] รายละเอียดของข้อกำหนดจะกำหนดโดยโหมดข้อกำหนด
ช่อง | |
---|---|
required_shipment_type_alternatives[] |
รายการประเภทการจัดส่งทางเลือกที่ |
dependent_shipment_types[] |
การจัดส่งทั้งหมดที่มีประเภทในช่อง หมายเหตุ: ไม่อนุญาตให้ใช้ข้อกำหนดชุดที่ |
requirement_mode |
ใช้โหมดกับข้อกำหนดแล้ว |
RequirementMode
รูปแบบที่กำหนดลักษณะของการจัดส่งที่ต้องพึ่งพาบนเส้นทาง
Enum | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
โหมดข้อกำหนดที่ไม่ได้ระบุ คุณไม่ควรใช้ค่านี้ |
PERFORMED_BY_SAME_VEHICLE |
ในโหมดนี้ การจัดส่งที่ "ขึ้นอยู่กับ" ทั้งหมดต้องใช้ยานพาหนะเดียวกันกับการจัดส่งที่ "จำเป็น" อย่างน้อย 1 รายการ |
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) เกินความจุ "Pears" อย่างน้อย 1 คัน (รวมคันที่ 3) และเกินระยะทางที่จำกัดของรถอย่างน้อย 1 คัน (รวมคัน 1)
ช่อง | |
---|---|
code |
ดูความคิดเห็นของ Code |
example_exceeded_capacity_type |
หากรหัสเหตุผลคือ |
example_vehicle_index |
หากเหตุผลเกี่ยวข้องกับความไม่เข้ากันกับยานพาหนะในการจัดส่ง ฟิลด์นี้จะแสดงดัชนีของยานพาหนะที่เกี่ยวข้อง 1 คัน |
รหัส
โค้ดระบุประเภทเหตุผล ลำดับในที่นี้ไม่มีความหมาย โดยเฉพาะอย่างยิ่ง ไม่มีการบ่งชี้ว่าเหตุผลที่ระบุจะปรากฏก่อนเหตุผลอื่นในคำตอบหรือไม่ หากเป็นไปตามทั้ง 2 ข้อ
Enum | |
---|---|
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` <= `soft_start_time` <= `end_time` and
0 <= `start_time` <= `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
ระบุแอตทริบิวต์ของการเปลี่ยนระหว่างการเข้าชม 2 ครั้งติดต่อกันบนเส้นทาง TransitionAttributes
หลายรายการอาจมีผลกับการเปลี่ยนเดียวกัน ในกรณีนั้น ค่าใช้จ่ายเพิ่มเติมทั้งหมดจะรวมกันและมีข้อจํากัดหรือขีดจำกัดที่เข้มงวดที่สุด (ตามความหมาย "และ" ตามธรรมชาติ)
ช่อง | |
---|---|
src_tag |
แท็กที่กำหนดชุดของ (src->dst) การเปลี่ยนแอตทริบิวต์เหล่านี้จะมีผล การเยี่ยมชมต้นทางหรือการสตาร์ทรถตรงกับ |
excluded_src_tag |
ดู |
dst_tag |
การเข้าชมปลายทางหรือจุดสิ้นสุดของพาหนะตรงกับ |
excluded_dst_tag |
ดู |
cost |
ระบุค่าใช้จ่ายในการทำการเปลี่ยนแปลงนี้ นี่คือหน่วยเดียวกับค่าใช้จ่ายอื่นๆ ทั้งหมดในโมเดลและต้องไม่เป็นค่าลบ โดยจะมีผลกับค่าใช้จ่ายอื่นๆ ทั้งหมดที่มีอยู่ |
cost_per_kilometer |
ระบุต้นทุนต่อกิโลเมตรที่ใช้กับระยะทางที่เดินทางในระหว่างดําเนินการเปลี่ยนนี้ โดยจะรวมกันเป็น |
distance_limit |
ระบุการจำกัดระยะทางในการเดินทางขณะดำเนินการเปลี่ยนนี้ ตั้งแต่วันที่ 06/06/2021 เป็นต้นไป ระบบจะรองรับเฉพาะขีดจำกัดคำขอชั่วคราวเท่านั้น |
delay |
ระบุการหน่วงเวลาที่เกิดขึ้นเมื่อดำเนินการเปลี่ยน ความล่าช้านี้จะเกิดขึ้นเสมอหลังจากสิ้นสุดการเข้าชมต้นทางและก่อนเริ่มต้นการเข้าชมปลายทาง |
ยานพาหนะ
สร้างโมเดลยานพาหนะที่มีปัญหาเกี่ยวกับการจัดส่ง การแก้ไขปัญหาเกี่ยวกับการจัดส่งจะสร้างเส้นทางที่เริ่มจาก start_location
และสิ้นสุดที่ end_location
สำหรับยานพาหนะนี้ เส้นทางคือลำดับการเข้าชม (ดู ShipmentRoute
)
ช่อง | |
---|---|
display_name |
ชื่อที่แสดงของยานพาหนะที่ผู้ใช้กำหนด โดยมีความยาวได้สูงสุด 63 อักขระและใช้อักขระ UTF-8 ได้ |
travel_mode |
รูปแบบการเดินทางซึ่งส่งผลต่อถนนที่รถวิ่งอยู่และความเร็ว ดู |
start_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสตาร์ทก่อนไปรับการจัดส่ง หากไม่ระบุ รถจะสตาร์ทตั้งแต่การมารับครั้งแรก หากรูปแบบการจัดส่งมีระยะเวลาและเมทริกซ์ระยะทาง ก็ต้องไม่ระบุ |
start_waypoint |
จุดอ้างอิงที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสตาร์ทก่อนไปรับการจัดส่ง หากไม่ได้ระบุทั้ง |
end_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดหลังจากสิ้นสุด |
end_waypoint |
จุดอ้างอิงที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดหลังจากสิ้นสุด |
start_tags[] |
ระบุแท็กที่ติดอยู่กับจุดเริ่มต้นของเส้นทางของยานพาหนะ ไม่อนุญาตให้มีสตริงว่างหรือซ้ำกัน |
end_tags[] |
ระบุแท็กที่ติดอยู่ท้ายเส้นทางของยานพาหนะ ไม่อนุญาตให้มีสตริงว่างหรือซ้ำกัน |
start_time_windows[] |
กรอบเวลาที่รถอาจออกเดินทางจากตำแหน่งเริ่มต้น โดยต้องอยู่ในขีดจำกัดเวลาทั่วโลก (ดู กรอบเวลาที่อยู่ในช่องที่ซ้ำเดียวกันต้องไม่ต่อเนื่องกัน กล่าวคือ ไม่มีกรอบเวลาดังกล่าวทับซ้อนหรืออยู่ติดกันได้ และต้องไม่อยู่ตามลำดับเวลา ตั้งค่า |
end_time_windows[] |
กรอบเวลาที่ยานพาหนะอาจจะมาถึงปลายทาง โดยต้องอยู่ในขีดจำกัดเวลาทั่วโลก (ดู กรอบเวลาที่อยู่ในช่องที่ซ้ำเดียวกันต้องไม่ต่อเนื่องกัน กล่าวคือ ไม่มีกรอบเวลาดังกล่าวทับซ้อนหรืออยู่ติดกันได้ และต้องไม่อยู่ตามลำดับเวลา ตั้งค่า |
unloading_policy |
บังคับใช้นโยบายการยกเลิกการโหลดบนยานพาหนะแล้ว |
load_limits |
ความจุของยานพาหนะ (เช่น น้ำหนัก ปริมาตร จำนวนพาเลต) คีย์ในแผนที่คือตัวระบุประเภทการโหลด ซึ่งสอดคล้องกับคีย์ของช่อง |
cost_per_hour |
ค่าใช้จ่ายสำหรับยานพาหนะ: ค่าใช้จ่ายทั้งหมดรวมกันและต้องอยู่ในหน่วยเดียวกับ ค่าใช้จ่ายต่อชั่วโมงของเส้นทางพาหนะ ค่าใช้จ่ายนี้จะใช้กับเวลารวมที่ใช้เส้นทางนั้นๆ ซึ่งรวมถึงเวลาในการเดินทาง เวลาที่รอ และเวลาในการเยี่ยมชม การใช้ |
cost_per_traveled_hour |
ต้นทุนต่อชั่วโมงในการเดินทางของเส้นทางยานพาหนะ ค่าใช้จ่ายนี้มีผลเฉพาะกับระยะเวลาเดินทางที่ใช้เส้นทาง (ซึ่งรายงานในเดือน |
cost_per_kilometer |
ค่าใช้จ่ายต่อกิโลเมตรของเส้นทางยานพาหนะ ค่าใช้จ่ายนี้ใช้กับระยะทางที่รายงานใน |
fixed_cost |
จะมีค่าบริการคงที่หากใช้ยานพาหนะนี้ในการจัดส่ง |
used_if_route_is_empty |
ช่องนี้ใช้กับยานพาหนะเมื่อเส้นทางไม่ได้ให้บริการการจัดส่งเท่านั้น ซึ่งจะระบุว่าในกรณีนี้ ระบบควรพิจารณาว่ายานพาหนะเป็นรถมือสองหรือไม่ หากเป็นจริง พาหนะจะเดินทางจากต้นทางถึงปลายทางแม้ว่าจะไม่ได้ให้บริการส่งสินค้าก็ตาม และคำนึงถึงค่าใช้จ่ายด้านเวลาและระยะทางที่เกิดขึ้นเมื่อเริ่มต้น --> การเดินทางเมื่อสิ้นสุดจะนำมาพิจารณาด้วย มิเช่นนั้น จะไม่เดินทางจากต้นทางถึงปลายทาง และไม่มีกำหนดเวลา |
route_duration_limit |
ขีดจำกัดมีผลกับระยะเวลารวมของเส้นทางที่ใช้ยานพาหนะ ใน |
travel_duration_limit |
ขีดจำกัดมีผลกับระยะเวลาเดินทางของเส้นทางรถยนต์ ใน |
route_distance_limit |
ขีดจำกัดมีผลกับระยะทางรวมของเส้นทางรถ ใน |
extra_visit_duration_for_visit_type |
ระบุแผนที่จากสตริง traffic_types จนถึงระยะเวลา ระยะเวลาเป็นเวลานอกเหนือจาก หากคำขอเข้าชมมีหลายประเภท ระบบจะเพิ่มระยะเวลาสำหรับแต่ละประเภทในแผนที่ |
break_rule |
อธิบายกำหนดเวลาพักที่จะบังคับใช้กับยานพาหนะนี้ หากเว้นว่างไว้ จะไม่มีการกำหนดเวลาพักสำหรับยานพาหนะคันนี้ |
label |
ระบุป้ายกำกับสำหรับยานพาหนะนี้ ป้ายกำกับนี้มีการรายงานในคำตอบเป็น |
ignore |
หากเป็น "จริง" หากดำเนินการจัดส่งโดยยานพาหนะที่ละเว้นใน หากดำเนินการจัดส่งโดยยานพาหนะที่เพิกเฉยใน |
travel_duration_multiple |
ระบุตัวคูณที่ใช้ซ้ำเพื่อเพิ่มหรือลดระยะเวลาเดินทางของยานพาหนะนี้ได้ ตัวอย่างเช่น การตั้งค่าเป็น 2.0 หมายความว่ายานพาหนะคันนี้จะช้ากว่าและมีระยะเวลาเดินทางมากกว่ายานพาหนะมาตรฐานถึง 2 เท่า หลายรายการนี้ไม่มีผลต่อระยะเวลาการเข้าชม และจะมีผลต่อค่าใช้จ่ายหากระบุ คำเตือน: เวลาเดินทางจะปัดเศษเป็นวินาทีที่ใกล้เคียงที่สุดหลังจากใช้ตัวคูณนี้ แต่ก่อนที่จะดำเนินการตัวเลข ดังนั้น การปัดเศษหลายครั้งอาจทำให้ความแม่นยําลดลง โปรดดู |
DurationLimit
ขีดจำกัดที่กำหนดระยะเวลาสูงสุดของเส้นทางของยานพาหนะ อาจแข็งหรืออ่อนก็ได้
เมื่อมีการกำหนดช่องขีดจำกัด Soft จะต้องกำหนดทั้งเกณฑ์ Soft Max และค่าใช้จ่ายที่เกี่ยวข้องร่วมกัน
ช่อง | |
---|---|
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
กำหนดขีดจำกัดการบรรทุกที่ใช้กับยานพาหนะ เช่น "รถบรรทุกนี้รับน้ำหนักได้สูงสุด 3, 500 กก. เท่านั้น" ดูload_limits
ช่อง | |
---|---|
soft_max_load |
ขีดจำกัดการโหลดแบบไม่เข้มงวด ดู |
cost_per_unit_above_soft_max |
หากน้ำหนักบรรทุกเกิน |
start_load_interval |
ช่วงการบรรทุกที่ยอมรับได้ของยานพาหนะที่จุดเริ่มต้นของเส้นทาง |
end_load_interval |
ช่วงการบรรทุกที่ยอมรับได้ของยานพาหนะเมื่อถึงจุดสิ้นสุดของเส้นทาง |
max_load |
จำนวนการโหลดสูงสุดที่ยอมรับได้ |
ช่วงเวลา
ระยะเวลาของการโหลดที่ยอมรับได้
ช่อง | |
---|---|
min |
การโหลดขั้นต่ำที่ยอมรับได้ ต้องเท่ากับ ≥ 0 หากระบุไว้ทั้ง 2 แบบ |
max |
น้ำหนักสูงสุดที่ยอมรับได้ ต้องเท่ากับ ≥ 0 หากไม่ระบุ ข้อความนี้จะไม่มีการจำกัดการโหลดสูงสุด หากระบุไว้ทั้ง 2 แบบ |
TravelMode
รูปแบบการเดินทางที่สามารถใช้โดยรถยนต์
โหมดเหล่านี้ควรเป็นส่วนหนึ่งของโหมดการเดินทางของ Google Maps Platform Routes ที่ต้องการ ดูใน https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode
Enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
โหมดการเดินทางที่ไม่ระบุ เทียบเท่ากับ DRIVING |
DRIVING |
รูปแบบการเดินทางที่สอดคล้องกับเส้นทางการขับขี่ (รถยนต์, ...) |
WALKING |
รูปแบบการเดินทางที่สอดคล้องกับเส้นทางเดินเท้า |
UnloadingPolicy
นโยบายเกี่ยวกับวิธียกเลิกการขนย้ายยานพาหนะ มีผลเฉพาะกับการจัดส่งที่มีทั้งการรับสินค้าและการจัดส่ง
การจัดส่งอื่นๆ ไม่มีค่าใช้จ่ายใดๆ เกิดขึ้นได้ทุกที่ในเส้นทางที่ไม่ขึ้นกับ unloading_policy
Enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
นโยบายการยกเลิกการโหลดที่ไม่ได้ระบุ การจัดส่งต้องเกิดขึ้นหลังจากการมารับสินค้าที่เกี่ยวข้องเท่านั้น |
LAST_IN_FIRST_OUT |
ต้องนำส่งสินค้าตามลําดับการรับสินค้า |
FIRST_IN_FIRST_OUT |
การนำส่งต้องดำเนินการในลำดับเดียวกับการรับสินค้า |
จุดบอกทาง
ล้อมรอบจุดอ้างอิง จุดอ้างอิงจะระบุตำแหน่งขาเข้าและขาออกของ ReachRequests รวมถึงตำแหน่งเริ่มต้นและสิ้นสุดของยานพาหนะ
ช่อง | |
---|---|
side_of_road |
ไม่บังคับ ระบุว่าตำแหน่งจุดอ้างอิงนี้ต้องการให้รถจอดที่ฝั่งใดฝั่งหนึ่งของถนน เมื่อคุณกำหนดค่านี้ เส้นทางจะผ่านตำแหน่งเพื่อให้รถสามารถหยุดที่ด้านข้างถนนที่ตำแหน่งดังกล่าวมีความคลาดเคลื่อนจากกึ่งกลางของถนน ตัวเลือกนี้ใช้ไม่ได้กับโหมดการเดินทาง "เดินเท้า" |
ฟิลด์สหภาพ location_type วิธีต่างๆ ในการนำเสนอสถานที่ location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
location |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ รวมถึงส่วนหัวที่ไม่บังคับ |
place_id |
รหัสสถานที่ของจุดที่น่าสนใจที่เชื่อมโยงกับการชี้ทาง |